{"version":3,"sources":["ui-bootstrap-tpls.js","lodash.min.js","moment.min.js","moment-timezone.js","app.js","moviePosterInformation.js","movieratingformatter.js","runtimeformatter.js","showTimeFormatter.js","monthdayformatter.js","audienceratingformatter.js","rottentomatoesformatter.js","genreFormatter.js","genreData.js","rivertownData.js"],"names":["angular","module","directive","$animate","$q","$parse","$injector","$animateCss","has","get","link","scope","element","attrs","expandingExpr","expanding","expandedExpr","expanded","collapsingExpr","collapsing","collapsedExpr","collapsed","horizontal","css","cssTo","getScrollFromElement","width","scrollWidth","height","scrollHeight","expandDone","removeClass","addClass","collapseDone","$eval","uibCollapse","attr","init","$watch","shouldCollapse","hasClass","resolve","then","to","start","noop","collapse","easing","overflow","restrict","elem","$observe","disabled","$set","constant","closeOthers","controller","$scope","$attrs","accordionConfig","this","groups","openGroup","isDefined","forEach","group","isOpen","addGroup","groupScope","that","push","$on","event","removeGroup","index","indexOf","splice","controllerAs","transclude","templateUrl","require","heading","cardClass","isDisabled","setHeading","accordionCtrl","openClass","value","toggleClass","toggleOpen","$event","which","id","$id","Math","floor","random","headingId","cardId","template","replace","accordionGroupCtrl","uibAccordionTransclude","querySelector","html","append","$element","$interpolate","$timeout","closeable","close","dismissOnTimeout","$parent","parseInt","activeClass","toggleEvent","buttonConfig","ctrls","buttonsCtrl","ngModelCtrl","uncheckableExpr","uibUncheckable","find","display","$render","equals","$modelValue","uibBtnRadio","on","isActive","uncheckable","$apply","$setViewValue","undefined","getTrueValue","getCheckboxValue","btnCheckboxTrue","attribute","defaultValue","btnCheckboxFalse","$interval","currentInterval","isPlaying","self","slides","SLIDE_DIRECTION","currentIndex","active","destroyed","setActive","i","length","slide","findSlideIndex","resetTimer","cancel","restartTimer","interval","isNaN","timerFn","next","pause","addSlide","sort","a","b","isNumber","$currentTransition","select","play","getCurrentIndex","newIndex","noWrap","prev","removeSlide","nextSlide","direction","nextIndex","extend","enabled","data","currentIdx","phase","off","goNext","indexOfSlide","isPrevDisabled","isNextDisabled","noPause","noTransition","$watchCollection","actual","carouselCtrl","animation","classPrefix","className","callback","beforeAddClass","done","directionClass","removeClassFn","bind","join","beforeRemoveClass","service","$log","$locale","dateFilter","orderByFilter","filterFilter","localeId","formatCodeToRegex","SPECIAL_CHARACTERS_REGEXP","getFormatCodeToRegex","key","constructLiteralFormatter","format","literalIdx","endIdx","substr","constructFormatterFromIdx","currentPosStr","j","RegExp","test","parser","formatter","charAt","toInt","str","timezoneToOffset","timezone","fallback","requestedTimezoneOffset","Date","parse","addDateMinutes","date","minutes","getTime","setMinutes","getMinutes","convertTimezoneToLocal","reverse","dateTimezoneOffset","getTimezoneOffset","parsers","formatters","regex","apply","year","_date","setFullYear","abs","getFullYear","month","getMonth","DATETIME_FORMATS","MONTH","SHORTMONTH","getDate","DAY","SHORTDAY","hours","milliseconds","seconds","AMPMS","matches","match","sign","ERANAMES","ERAS","version","major","minor","STANDALONEMONTH","getParser","f","overrideParser","isFunction","filter","isDate","createFormatter","reduce","input","baseDate","isString","map","split","quoteIndex","inLiteral","n","matcher","createParser","results","tzOffset","fields","dt","getHours","getSeconds","getMilliseconds","warn","mapper","call","datesetter","prototype","setUTCFullYear","timesetter","setUTCHours","setHours","isValid","toTimezone","fromTimezone","ON_REGEXP","IS_REGEXP","compile","tElement","tAttrs","linkedScopes","instances","expToData","onExpMatches","uibIsClass","onExp","exps","exp","k","clazz","compareWithExp","watchFn","compareWithVal","newActivated","some","instance","thisVal","lastActivated","watcher","addForExp","removeScope","e","removedScope","targetScope","newWatchScope","datepickerMode","formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","maxDate","maxMode","minDate","minMode","monthColumns","ngModelOptions","shortcutPropagation","showWeeks","yearColumns","yearRows","datepickerConfig","$datepickerLiteralWarning","$datepickerSuppressError","dateParser","watchListeners","datepickerOptions","modes","startingDay","FIRSTDAYOFWEEK","getOption","refreshView","uniqueId","ngDisabled","dateObject","compare","activeDate","activeDateId","uid","ngModelCtrl_","$options","createChild","extractOptions","initDate","$isEmpty","$invalid","render","$viewValue","error","selectedDt","_refreshView","activeDt","$setValidity","createDateObject","model","today","time","label","selected","past","current","future","customClass","dateDisabled","mode","arr","size","arrays","setMode","$emit","$broadcast","move","step","years","months","toggleMode","keys","13","32","33","34","35","36","37","38","39","40","focus","keydown","evt","shiftKey","altKey","preventDefault","stopPropagation","ctrlKey","handleKeyDown","shift","DAYS_IN_MONTH","getDaysInMonth","getISO8601WeekNumber","checkDate","setDate","getDay","setMonth","round","ctrl","getDates","startDate","dates","Array","firstDayOfMonth","difference","numDisplayedFromPreviousMonth","firstDate","days","secondary","labels","abbr","full","title","rows","weekNumbers","thursdayIndex","numWeeks","curWeek","date1","date2","_date1","_date2","min","yearHeaderColspan","columns","range","getStartingYear","yearpickerInit","datepickerCtrl","factory","$document","$window","SCROLLBAR_WIDTH","BODY_SCROLLBAR_WIDTH","OVERFLOW_REGEX","normal","hidden","PLACEMENT_REGEX","auto","primary","vertical","BODY_REGEX","getRawNode","nodeName","parseStyle","parseFloat","isFinite","offsetParent","el","documentElement","getComputedStyle","position","scrollbarWidth","isBody","isUndefined","bodyElem","innerWidth","clientWidth","scrollElem","offsetWidth","remove","scrollbarPadding","elemStyle","paddingRight","paddingBottom","scrollParent","tagName","widthOverflow","right","originalRight","heightOverflow","clientHeight","bottom","originalBottom","isScrollable","includeHidden","overflowRegex","overflowY","overflowX","includeSelf","documentEl","excludeStatic","parentElement","spStyle","includeMagins","elemOffset","offset","top","marginTop","left","marginLeft","parent","parentOffset","clientTop","scrollTop","clientLeft","scrollLeft","offsetHeight","includeMargins","elemBCR","getBoundingClientRect","pageYOffset","pageXOffset","styles","window","verticalMargin","marginBottom","horisontalMargin","marginRight","viewportOffset","useDocument","includePadding","offsetBCR","offsetParentBCR","offsetParentStyle","paddingTop","paddingLeft","parsePlacement","placement","autoPlace","positionElements","hostElem","targetElem","appendToBody","targetWidth","prop","targetHeight","hostElemPos","targetElemPos","targetElemStyle","adjustedSize","xOverflow","yOverflow","adjustTop","placementClasses","containerPosition","initialHeight","currentHeight","positionArrow","isTooltip","innerElem","arrowElem","arrowCss","arrowElemOffset","aHW","aHH","borderProp","borderRadiusProp","borderRadius","altInputFormats","clearText","closeOnDateSelection","closeText","currentText","datepickerPopup","datepickerPopupTemplateUrl","datepickerTemplateUrl","html5Types","datetime-local","onOpenFocus","showButtonBar","$compile","$rootScope","$position","datepickerPopupConfig","$datepickerPopupLiteralWarning","dateFormat","popupEl","datepickerEl","scrollParentEl","ngModel","$popup","isHtml5DateInput","parseDateString","viewValue","parseDate","validator","modelValue","ngRequired","documentClickBind","popup","dpContainsTarget","contains","target","popupContainsTarget","inputKeydownBind","positionPopup","dpElement","popupPlacement","_ngModel_","isObject","datepickerAppendToBody","type","uibDatepickerPopup","oldValue","newDateFormat","Error","ng-model","ng-change","template-url","children","$formatters","$$parserName","$validators","$parsers","unshift","$viewChangeListeners","after","$$phase","getText","dateSelection","val","debounceTime","timeoutPromise","args","slice","arguments","createNew","entries","Object","hasKey","put","values","idx","appendToOpenClass","$$multiMap","openScope","openedContainers","isOnlyOpen","dropdownScope","appendTo","openedDropdowns","toClose","dropdown","open","closeDropdown","keybindFilter","dropdownToClose","getAutoClose","toggleElement","getToggleElement","dropdownElement","getDropdownElement","dropdownElementTargeted","toggleElementTargeted","focusToggleElement","isKeynavEnabled","focusDropdownEntry","dropdownConfig","uibDropdownService","$templateRequest","templateScope","getIsOpen","$new","setIsOpen","toggleInvoker","onToggle","keynavEnabled","body","removeDropdownMenu","dropdownMenu","assign","keyboardNav","toggle","autoClose","getElement","keyCode","elems","eq","selectedOption","wasOpen","dropdownAppendTo","appendToEl","dropdownAppendToBody","rightalign","pos","appendOffset","openContainer","dropdownOpenClass","hasOpenClass","dropdownMenuTemplateUrl","tplContent","trim","newEl","replaceWith","$destroy","dropdownCtrl","dropdownNested","tplUrl","toggleDropdown","openDropdown","aria-haspopup","aria-expanded","stack","add","removeTop","pop","provider","resolver","setResolver","$get","invocables","locals","promises","isArray","invoke","all","resolves","resolveObj","resolveIter","$modalStack","backdropClass","linkFn","modalRenderDeferObj","defer","$$postDigest","promise","modalInClass","NOW_CLOSING_EVENT","setIsAsync","modalOptions","windowTopClass","modal","getTop","backdrop","currentTarget","dismiss","$isRendered","animationPromise","when","modalRendered","activeElement","inputWithAutofocus","modalAnimation","uibModalAnimationClass","clone","empty","enter","$$stackedMap","$uibPosition","backdropDomEl","backdropScope","OPENED_MODAL_CLASS","openedWindows","openedClasses","topModalIndex","previousTopOpenedModal","ARIA_HIDDEN_ATTRIBUTE_NAME","SNAKE_CASE_REGEXP","backdropIndex","topBackdropIndex","opened","removeModalWindow","modalInstance","elementToReceiveFocus","modalWindow","appendToElement","modalDomEl","removeAfterAnimate","modalScope","modalBodyClass","openedClass","areAnyOpen","toggleTopWindowClass","closedDeferred","checkRemoveBackdrop","toggleSwitch","domEl","asyncDeferred","asyncPromise","afterAnimating","leave","keydownListener","isDefaultPrevented","keyboard","list","loadFocusElementList","focusChanged","isFocusInFirstItem","isModalFocused","focusLastFocusableElement","isFocusInLastItem","focusFirstFocusableElement","broadcastClosing","resultOrReason","closing","defaultPrevented","unhideBackgroundElements","document","querySelectorAll","hiddenEl","newHiddenCount","getAttribute","setAttribute","removeAttribute","newBackdropIndex","modalOpener","deferred","renderDeferred","content","currBackdropIndex","class","ng-style","uib-modal-animation-class","modal-in-class","component","createElement","name","letter","toLowerCase","modal-instance","angularDomEl","windowTemplateUrl","window-top-class","role","aria-labelledby","ariaLabelledBy","aria-describedby","ariaDescribedBy","animate","tabindex","windowClass","$$topModalIndex","applyAriaHidden","child","getSiblings","sibling","elemIsAlreadyHidden","ariaHiddenCount","result","$$uibDestructionScheduled","reason","reject","dismissAll","topModal","srcElement","modalDomE1","elements","getClientRects","isVisible","$modalProvider","options","$controller","$uibResolve","$modal","promiseChain","getPromiseChain","templateAndResolvePromise","samePromise","modalResultDeferred","modalOpenedDeferred","modalClosedDeferred","modalRenderDeferred","closed","rendered","resolveWithTemplate","tplAndVars","providedScope","$close","$dismiss","ctrlInstance","ctrlInstantiate","ctrlLocals","constructLocals","obj","instanceOnScope","injectable","$resolve","$uibModalInstance","bindToController","$onInit","create","setNumPages","numPages","_watchers","config","itemsPerPage","totalPages","calculateTotalPages","updatePage","newTotal","oldTotal","ceil","totalItems","max","page","selectPage","blur","noPrevious","noNext","uibPaging","uibPagerConfig","align","previousText","nextText","paginationCtrl","uibPaginationConfig","maxSize","rotate","forceEllipses","boundaryLinkNumbers","pageLabel","$page","identity","makePage","number","text","boundaryLinks","directionLinks","originalRender","pages","currentPage","startPage","endPage","isMaxSized","previousPageSet","secondPageLink","firstPageLink","nextPageSet","secondToLastPageLink","lastPageLink","getPages","firstText","lastText","defaultOptions","placementClassPrefix","popupDelay","popupCloseDelay","useContentExp","triggerMap","mouseenter","click","outsideClick","none","globalOptions","setTriggers","triggers","openedTooltips","keypressListener","last","ttType","prefix","defaultTriggerShow","getTriggers","trigger","show","hide","directiveName","startSym","startSymbol","endSym","endSymbol","tElem","tooltipLinker","tooltipCtrl","tooltip","tooltipLinkedScope","transitionTimeout","showTimeout","hideTimeout","positionTimeout","adjustmentTimeout","lastPlacement","hasEnableExp","ttScope","repositionScheduled","isOpenParse","contentParse","observers","positionTooltip","ttPosition","elementPos","adjustment","toggleTooltipBind","hideTooltipBind","showTooltipBind","cancelHide","popupClass","delay","closeDelay","prepareTooltip","cancelShow","prepObservers","createTooltip","$evalAsync","assignIsOpen","removeTooltip","observer","bodyHideTooltipBind","hideOnEscapeKey","origScope","contentExp","showTriggers","hideTriggers","unregisterTriggers","appendToBodyVal","appendKey","$sce","currentScope","previousElement","currentElement","tooltipTemplateTranscludeScope","changeCounter","cleanupLastIncludeContent","parseAsResourceUrl","uibTooltipTemplateTransclude","src","thisChangeId","response","newScope","tooltipAnimationClass","$uibTooltip","originScope","uibTitle","progressConfig","getMaxOrDefault","maxParam","bars","addBar","bar","transition","recalculatePercentage","totalPercentage","total","percent","toFixed","removeBar","striped","progressCtrl","stateOn","stateOff","enableReset","titles","ratingConfig","tmpTitles","ratingStates","buildTemplateObjects","states","getTitle","rate","readonly","newViewValue","onHover","reset","onLeave","onKeydown","ratingCtrl","oldIndex","findTabIndex","tabs","previousIndex","previousSelected","tab","onDeselect","$selectedIndex","onSelect","addTab","t1","t2","newActiveIndex","removeTab","newActiveTabIndex","justified","classes","elm","tabsetCtrl","disable","t","$transcludeFn","uibTabContentTransclude","contents","node","hasAttribute","isTabHeading","headingElement","hourStep","minuteStep","secondStep","showMeridian","showSeconds","meridians","readonlyInput","mousewheel","arrowkeys","showSpinners","timepickerConfig","hoursModelCtrl","minutesModelCtrl","secondsModelCtrl","watchers","padHours","removeAttr","inputs","hoursInputEl","minutesInputEl","secondsInputEl","setupMousewheelEvents","setupArrowkeyEvents","setupInputEvents","noIncrementHours","incrementedSelected","addMinutes","noDecrementHours","decrementedSelected","noIncrementMinutes","noDecrementMinutes","noIncrementSeconds","addSeconds","noDecrementSeconds","noToggleMeridian","getHoursFromTemplate","meridian","getMinutesFromTemplate","pad","noPad","toString","refresh","keyboardChange","makeValid","updateTemplate","invalidHours","invalidMinutes","invalidSeconds","addSecondsToSelected","newDate","modelIsEmpty","$error","isScrollingUp","originalEvent","delta","wheelDelta","deltaY","detail","incrementHours","decrementHours","incrementMinutes","decrementMinutes","incrementSeconds","decrementSeconds","updateHours","updateMinutes","updateSeconds","invalidate","$setDirty","$setTouched","getSecondsFromTemplate","setSeconds","toggleMeridian","uibTimepickerConfig","timepickerCtrl","TYPEAHEAD_REGEXP","itemName","source","viewMapper","modelMapper","originalScope","$$debounce","typeaheadParser","modelCtrl","HOT_KEYS","minLength","typeaheadMinLength","newVal","waitTime","typeaheadWaitMs","isEditable","typeaheadEditable","hasFocus","isLoadingSetter","typeaheadLoading","isSelectEvent","typeaheadShouldSelect","vals","onSelectCallback","typeaheadOnSelect","isSelectOnBlur","typeaheadSelectOnBlur","isNoResultsSetter","typeaheadNoResults","inputFormatter","typeaheadInputFormatter","typeaheadAppendToBody","typeaheadAppendTo","focusFirst","typeaheadFocusFirst","selectOnExact","typeaheadSelectOnExact","isOpenSetter","typeaheadIsOpen","showHint","typeaheadShowHint","parsedModel","invokeModelSetter","parserResult","uibTypeahead","offDestroy","inputsContainer","hintInputElem","popupId","aria-autocomplete","aria-owns","border-color","box-shadow","opacity","background","color","vertical-align","background-color","popUpEl","move-in-progress","query","assign-is-open","debounce","typeaheadTemplateUrl","typeaheadPopupTemplateUrl","resetMatches","activeIdx","getMatchId","getMatchesAsync","inputValue","onCurrentRequest","recalculatePosition","toUpperCase","inputIsExactMatch","debounceUpdate","firstLabel","fireRecalculating","debouncedRecalculate","moveInProgress","$digest","cancelPreviousTimeout","item","newValue","$$$p","$setModelValue","$item","$model","$label","typeaheadFocusOnSelect","shouldSelect","parentNode","offsetTop","editable","dismissClickHandler","_modelCtrl","scheduleSearchWithTimeout","candidateViewValue","popupTemplateUrl","isDropdownOpen","matchIdx","selectActive","selectMatch","tplEl","isSanitizePresent","matchItem","containsHtml","trustAsHtml","run","$templateCache","$$csp","noInlineStyle","$$uibCarouselCss","prepend","$$uibCommonCss","$$uibDatepickerCss","$$uibPositionCss","$$uibDatepickerpopupCss","$$uibTooltipCss","$$uibTimepickerCss","$$uibTypeaheadCss","r","u","o","v","c","l","s","h","p","_","d","g","y","m","F","T","x","A","E","S","O","I","R","z","Ln","W","U","B","L","D","Rn","On","lastIndex","Qn","M","$","NaN","N","P","Z","q","V","K","G","H","J","Y","Q","X","nn","tn","rn","en","un","fn","cn","an","ln","sn","hn","pn","_n","vn","gn","dn","yn","bn","xn","jn","wn","mn","An","En","Sn","In","zn","Wn","Un","Bn","\\","'","\n","\r","
","
","Cn","Dn","Mn","global","Tn","$n","Function","Fn","exports","nodeType","Nn","Pn","Zn","process","qn","types","binding","Vn","isArrayBuffer","Kn","Gn","isMap","Hn","isRegExp","Jn","isSet","Yn","isTypedArray","Xn","À","Ã","Â","Ã","Ä","Ã…","à ","á","â","ã","ä","Ã¥","Ç","ç","Ã","ð","È","É","Ê","Ë","è","é","ê","ë","ÃŒ","Ã","ÃŽ","Ã","ì","Ã","î","ï","Ñ","ñ","Ã’","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ãœ","ù","ú","û","ü","Ã","ý","ÿ","Æ","æ","Þ","þ","ß","Ä€","Ä‚","Ä„","Ä","ă","Ä…","Ć","Ĉ","ÄŠ","ÄŒ","ć","ĉ","Ä‹","Ä","ÄŽ","Ä","Ä","Ä‘","Ä’","Ä”","Ä–","Ę","Äš","Ä“","Ä•","Ä—","Ä™","Ä›","Äœ","Äž","Ä ","Ä¢","Ä","ÄŸ","Ä¡","Ä£","Ĥ","Ħ","Ä¥","ħ","Ĩ","Ī","Ĭ","Ä®","Ä°","Ä©","Ä«","Ä","į","ı","Ä´","ĵ","Ķ","Ä·","ĸ","Ĺ","Ä»","Ľ","Ä¿","Å","ĺ","ļ","ľ","Å€","Å‚","Ń","Å…","Ň","ÅŠ","Å„","ņ","ň","Å‹","ÅŒ","ÅŽ","Å","Å","Å","Å‘","Å”","Å–","Ř","Å•","Å—","Å™","Åš","Åœ","Åž","Å ","Å›","Å","ÅŸ","Å¡","Å¢","Ť","Ŧ","Å£","Å¥","ŧ","Ũ","Ū","Ŭ","Å®","Å°","Ų","Å©","Å«","Å","ů","ű","ų","Å´","ŵ","Ŷ","Å·","Ÿ","Ź","Å»","Ž","ź","ż","ž","IJ","ij","Å’","Å“","ʼn","Å¿","nt","&","<",">","\"","tt","&","<",">",""","'","rt","yu","ff","oi","Fe","kn","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","clear","set","__data__","of","af","_f","ni","Se","ir","it","lu","st","ot","ft","ct","uo","at","Cr","Wu","Ai","configurable","enumerable","writable","ht","Ku","Ru","pt","_t","du","constructor","me","Lr","vo","Ir","Ae","_o","Mr","Uu","lt","po","Dr","Rr","buffer","byteOffset","byteLength","zr","exec","Qu","ke","pf","sf","ve","_e","gt","ti","bo","yt","bt","xt","wu","jt","wt","Ee","mt","oo","At","fo","kt","_u","Et","Sr","Me","St","Ot","mi","ai","It","Rt","zt","Wt","Ci","Bt","hr","Ve","Lt","Mt","se","vi","message","delete","he","$t","Ft","ci","hi","Te","qt","$u","Jt","Ht","Zu","Vt","ze","Bi","Kt","Gt","su","xe","We","Ie","zu","Yt","Be","hu","xu","Ou","Qt","Xt","ye","w","Wr","tr","lr","er","xi","ur","xr","Ii","Ti","or","fr","xo","Ue","pr","_r","vr","gr","dr","yr","ro","br","so","jr","wr","func","thisArg","mr","Ar","kr","Er","jo","Iu","Or","gi","copy","Ur","Li","Br","Tr","$r","Oe","Fr","Nr","Zr","qr","Mu","Du","Vr","eo","Kr","de","ue","Jr","placeholder","Gr","Hr","pe","thru","ge","ho","Re","plant","Yr","Ut","Qr","Xr","ne","Oi","te","re","Au","ee","Su","yo","Le","ie","Yu","ku","oe","C","fe","Pr","co","ce","ei","ae","le","Ze","Gi","iteratee","Fu","be","je","we","gu","di","ji","$e","Ce","Di","De","ii","Ne","Pe","qe","Ke","Ge","$i","He","Je","Ye","Qe","nu","tu","io","ru","eu","uu","fu","Go","leading","maxWait","trailing","lo","flush","cu","cache","Cache","au","pu","vu","bu","li","ju","mu","wi","Lu","Eu","valueOf","Bu","Cu","$f","Tu","Nu","chain","Pu","rr","qu","Vu","defaults","pick","Gu","Hu","Ju","Xu","String","TypeError","ri","ui","hasOwnProperty","fi","IE_PROTO","si","pi","Buffer","_i","Symbol","Uint8Array","allocUnsafe","getPrototypeOf","yi","bi","propertyIsEnumerable","isConcatSpreadable","iterator","toStringTag","ki","clearTimeout","Ei","now","Si","setTimeout","Ri","getOwnPropertySymbols","zi","isBuffer","Wi","Ui","Mi","Fi","Ni","Pi","Zi","qi","Vi","Ki","Hi","Ji","Yi","Qi","Xi","no","templateSettings","escape","evaluate","interpolate","variable","imports","hash","string","ao","ArrayBuffer","go","charCodeAt","wo","mo","Ao","ko","Eo","So","Oo","Io","Ro","zo","Wo","Uo","Bo","Lo","Co","Do","Mo","To","$o","Fo","No","Po","Zo","qo","Vo","Ko","Ho","Jo","Yo","Qo","Xo","nf","tf","rf","ef","uf","cf","lf","hf","vf","gf","df","yf","bf","xf","jf","wf","mf","Of","Af","kf","Ef","Sf","If","Rf","nr","zf","Wf","Uf","Bf","Lf","Cf","Df","Mf","Tf","Ff","Nf","Pf","Zf","qf","Vf","Kf","Gf","Hf","Jf","Yf","Qf","Xf","nc","tc","rc","ec","uc","ary","assignIn","assignInWith","assignWith","before","bindAll","bindKey","castArray","chunk","compact","concat","cond","conforms","vt","countBy","curry","iu","curryRight","ou","defaultsDeep","differenceBy","differenceWith","drop","dropRight","dropRightWhile","dropWhile","fill","flatMap","flatMapDeep","flatMapDepth","flatten","flattenDeep","flattenDepth","flip","flow","flowRight","fromPairs","functions","functionsIn","groupBy","initial","intersection","intersectionBy","intersectionWith","invert","invertBy","invokeMap","keyBy","keysIn","mapKeys","mapValues","matchesProperty","memoize","merge","mergeWith","method","methodOf","mixin","negate","nthArg","omit","omitBy","once","orderBy","over","overArgs","overEvery","overSome","partial","partialRight","partition","pickBy","property","propertyOf","pull","pullAll","pullAllBy","pullAllWith","pullAt","rangeRight","rearg","rest","sampleSize","setWith","shuffle","sortBy","sortedUniq","sortedUniqBy","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toArray","toPairs","toPairsIn","toPath","toPlainObject","transform","unary","union","unionBy","unionWith","uniq","uniqBy","uniqWith","unset","unzip","unzipWith","update","updateWith","valuesIn","without","words","wrap","xor","xorBy","xorWith","zip","zipObject","zipObjectDeep","zipWith","entriesIn","extendWith","attempt","camelCase","capitalize","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","deburr","defaultTo","divide","endsWith","escapeRegExp","every","findIndex","findKey","findLast","findLastIndex","findLastKey","forEachRight","forIn","forInRight","forOwn","forOwnRight","gte","hasIn","head","includes","inRange","isArguments","isArrayLike","isArrayLikeObject","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isError","isInteger","isLength","isMatch","isMatchWith","isNative","isNil","isNull","isObjectLike","isPlainObject","isSafeInteger","isSymbol","isWeakMap","isWeakSet","kebabCase","lastIndexOf","lowerCase","lowerFirst","lte","maxBy","mean","meanBy","minBy","stubArray","stubFalse","stubObject","stubString","stubTrue","multiply","nth","noConflict","padEnd","padStart","reduceRight","repeat","runInContext","sample","snakeCase","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startCase","startsWith","subtract","sum","sumBy","sourceURL","times","toFinite","toInteger","toLength","toLower","toNumber","toSafeInteger","toUpper","trimEnd","trimStart","truncate","separator","omission","search","unescape","upperCase","upperFirst","each","eachRight","first","VERSION","end","commit","toJSON","define","amd","moment","Tt","utc","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","_isValid","_d","invalidWeekday","_strict","bigHour","isFrozen","momentProperties","_isAMomentObject","_l","_tzm","_isUTC","_offset","_locale","updateOffset","suppressDeprecationWarnings","console","deprecationHandler","pow","localeData","ordinal","invalidDate","longDateFormat","_w","parseTwoDigitYear","monthsShort","monthsShortRegex","monthsRegex","monthsParse","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","UTC","getUTCFullYear","getUTCDay","dayOfYear","week","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","day","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","Xe","et","_meridiemParse","_isPm","isPM","_meridiem","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","ss","mm","hh","dd","MM","yy","dow","doy","meridiemParse","_abbr","ut","_config","parentLocale","_a","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","_useUTC","getUTCMonth","getUTCDate","GG","_week","gg","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","Dt","ISO_8601","RFC_2822","meridiemHour","preparse","score","createFromInputFallback","hour","minute","second","millisecond","getOwnPropertyNames","Pt","Ct","quarter","isoWeek","_milliseconds","_days","_months","_data","_bubble","utcOffset","Nt","setTime","local","ms","Zt","isBefore","from","isAfter","invalid","defaultFormat","defaultFormatUtc","locale","weekYear","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","startOf","calendarFormat","diff","endOf","weekday","isoWeekday","isUtc","postformat","humanize","fromNow","toNow","invalidAt","isBetween","isSame","isSameOrAfter","isSameOrBefore","lang","parsingFlags","unit","priority","toObject","toDate","toISOString","inspect","isLocal","unix","creationData","isUTC","strict","isLeapYear","quarters","daysInMonth","weeks","isoWeeks","weeksInYear","isoWeeksInYear","_changeInProgress","parseZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","zone","isDSTShifted","_isDSTShifted","_calendar","_longDateFormat","_invalidDate","_ordinal","_relativeTime","pastFuture","isFormat","standalone","_monthsShort","_monthsParseExact","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","langData","as","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","toIsoString","duration","isMoment","isDuration","defineLocale","updateLocale","locales","normalizeUnits","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","root","cachedGuess","zones","links","names","guesses","logError","momentVersion","charCodeToInt","charCode","unpackBase60","parts","whole","fractional","multiplier","out","arrayToInt","array","mapIndices","indices","unpack","offsets","untils","Infinity","intToUntil","abbrs","population","Zone","packedString","_set","OffsetAt","timeString","toTimeString","ZoneScore","offsetScore","abbrScore","findChange","low","high","mid","sortZoneScores","addToGuesses","guessesForUserOffsets","guessesOffset","offsetsLength","filteredGuesses","rebuildGuess","intlName","Intl","DateTimeFormat","resolvedOptions","timeZone","normalizeName","zoneScore","change","startYear","userOffsets","zoneScores","getZone","scoreOffsetAt","addZone","packed","normalized","caller","addLink","aliases","alias","normal0","normal1","loadData","tz","dataVersion","needsOffset","isUnixTimestamp","unpacked","_index","timestamp","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","mom","offsetAt","_zones","_links","_names","load","zoneExists","didShowError","guess","ignoreCache","old","abbrWrap","_z","resetZoneWrap","defaultZone","keepTime","setDefault","MovieController","$http","mvm","ALLOW_GET_ALL_SJO_DATA","hello","CURRENT_DATE","CURRENT_DATE_URL","showTimeline","buildingTimeline","filteredItemsVariable","dateArray","Datelimit","hasShowTimes","movieFormatCodes","filterByPlayingType","NowPlayingTab","CINEMAS","ORIGINAL_SHOWTIMES","SHOWTIMES","ORIGINAL_MOVIES","MOVIES","CALENDAR_DATA","max_date","min_date","all_dates","SHOWTIMES_WITH_STATUSES","showtimeSelectedDate","isNowPlaying","isComingSoon","isLoading","SELECTED_DATE","buildTimeline","movies","prevDay","sortorder","filterByCinemaLocation","filterByMultipleMovieFormats","filterByMovieFormat","getFilteredItemsVariable","filteredItemsCinemaLocation","items","byFilm","value2","key2","value3","key3","temp","temp2","FormatType","movieFormatFilterArray","arr2","aItem","FilmID","HOFilmCode","filmKey","ScheduledFilmId","Title","CinemaID","FormatCode","ReleaseDateDT","formats","addToWatchlist","filmCode","post","Success","isInWatchlist","alert","catch","removeFromWatchlist","initWatchlist","showWatchlistLink","Data","filteredItemsHomePage","cinemaIdsInList","cinemaFilterArray","cinemaKeyArray","err","runtimeinseconds","Duration","acc","ShowNowPlaying","ComingSoonTab","AOS","refreshHard","ShowComingSoon","routeParams","params","encodeURIComponent","setButtonClass","$index","selectedTab","Moment","getButtonClass","getNowPlayingClass","filteredItemsByFilm","cinema","cinemaKey","VistaID","Formats","handleSuccess","status","FilmId","Cert","Img","Trailer","ReleaseDate","RunTime","Rating","Genres","Synopsis","Teaser","Cast","Director","FriendlyName","foregroundImage","currentShowtimes","TicketsSellingFast","ShowSoldOut","EventName","hasEvent","ShowtimeDetailUrl","OverrideShowtimeIcon","OverrideShowtimeIconDescription","OverrideShowtimeIconKey","OverrideShowtimeIconDescriptionKey","OverrideShowtimeIconKeyOrder","Dates","loadFirstTimeData","pageLoaded","getMoreDataByTitle","sjoID","sjoid","getMoreDataByTitleAPI","finally","getMoreDataAPI","ShowtimeStatuses","showtimesWithStatuses","ID","soldOut","sellingFast","SitefinityToJs","hasShowtimesForSelecedDate","lazyLoadSJOCinemaDetail","getTodaysSelectedTab","lazyLoadSJOHomepage","sjoIDLightweight","sjoIDFull","cachedItem","localStorage","getItem","removeItem","itemStr","JSON","expiry","timetogo","getWithExpiry","baseresponse","ttl","compressedValue","stringify","calendarDates","films","cinemas","setItem","setWithExpiry","tllMinutes","AOSRefresh","jQuery","formattedDate","DateChange","dateindex","StringDate","sharedate","inlineOptions","dayToCheck","events","currentDay","nextMonth","dateOptions","isRealDate","momentDate","dayDuration","toggleMin","open1","popup1","open2","popup2","filterByMultipleMovieFormatsFilmDetail","filterByMovieFormatFunction","setManualDate","tomorrow","testParsed","ex","dataParsed","updatedData","calDates","tos","tempdates","Showtime","StartTime","temparray","datetime","calendarToday","dateString","calendarTomorrow","calendarTomorrow2","tempAry","counter","Text","getQueryString","res","itm","qs","location","substring","pattern","decodeURIComponent","dateparam","cinemaparam","formatparam","tempdate","logs","requires","$inject","defineProperty","__proto__","filterOn","newItems","extractValueToCompare","isDuplicate","moviePosterInformation","movie","filteredShowtimes","ticketsOnSale","movieFormatType","alignText","showImage","cappedWidth","cardType","disabledShowtimesDir","customClasses","alignment","titleText","isDisabledShowtime2","ids","getTemplateUrl","url","MovieRatingFormatter","rating","RunTimeFormatter","runtime","Number","ShowTimeFormatter","showing","MonthDayFormatter","includeText","releasingText","AudienceRatingFormatter","RottenTomatoRatingFormatter","GenreFormatter","genreData","genreId","Name","NameTranslations","Description","DescriptionTranslations","getAllData","getCinemaSouthData","getNorthData","getWoodlandData","getCarouselData","getPlazaData","getMeridianData","getLansingData","getBentonHarborData","getMtPleasantData","getCrossroadsData","newArray","merged","combinedShowTimes","Sessions","combinedSessions","unique","sorted","session","combinedShowTimesV2","Times","Cinemas","Day","timestring","AllMovieData","log"],"mappings":"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,KAAKC,IAAO,KAAKC,IAAO,KAAKC,IAAO,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IACjfC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IACvfC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IACvfC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IA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CA,iDACA,2DACA,iCACA,8BACA,yKACA,uDACA,0CACA,qDACA,+CACA,iCACA,oDACA,6BACA,mDACA,8KACA,6BACA,iDACA,iDACA,mDACA,uKACA,qCACA,iLACA,mLACA,sCACA,oCACA,mCACA,mLACA,mCACA,2JACA,sKACA,uBACA,iCACA,qCACA,uBACA,gCACA,8BACA,uBACA,mCACA,sBACA,gCACA,gCACA,mBACA,uDACA,sKACA,2KACA,mDACA,6CACA,8CACA,gDACA,gEACA,uDACA,kCACA,0JACA,iLACA,2KACA,qDACA,iKACA,gCACA,qCACA,mCACA,kDACA,wDAEJC,MAAS,CACL,8BACA,+BACA,+BACA,+BACA,gCACA,8BACA,iCACA,6BACA,iCACA,mCACA,oCACA,iCACA,sCACA,oCACA,oCACA,yBACA,2BACA,2BACA,0BACA,+BACA,qBACA,uBACA,uBACA,sBACA,2BACA,yBACA,8BACA,qBACA,oCACA,oCACA,qCACA,6BACA,kCACA,6BACA,+BACA,iCACA,6BACA,6BACA,+BACA,6BACA,iCACA,gCACA,iCACA,gCACA,8BACA,8BACA,kCACA,8BACA,oCACA,+BACA,+BACA,sCACA,iCACA,6BACA,gCACA,kCACA,qCACA,+BACA,gCACA,uBACA,4BACA,2BACA,mCACA,iCACA,kCACA,oCACA,8BACA,sCACA,uCACA,4CACA,kCACA,oCACA,oCACA,8CACA,8CACA,iDACA,sCACA,uCACA,mCACA,mCACA,0BACA,iCACA,6BACA,oCACA,qCACA,mCACA,+BACA,uCACA,kCACA,gCACA,iCACA,kCACA,qCACA,iCACA,yBACA,wBACA,6BACA,sCACA,mDACA,gDACA,qDACA,8CACA,4CACA,+CACA,8CACA,mDACA,4CACA,+CACA,+CACA,8CACA,8CACA,kCACA,kCACA,yCACA,sCACA,oCACA,oCACA,kCACA,mCACA,oCACA,uCACA,mCACA,oCACA,qCACA,uCACA,qCACA,8BACA,oCACA,oCACA,kCACA,gCACA,mCACA,kCACA,sBACA,mCACA,gCACA,gCACA,qCACA,6BACA,2BACA,8BACA,gCACA,iCACA,kCACA,kCACA,2BACA,yBACA,qCACA,uCACA,2CACA,sCACA,wCACA,yCACA,qCACA,mCACA,uCACA,8BACA,iCACA,qCACA,iCACA,qCACA,sCACA,oCACA,iCACA,wCACA,sCACA,sCACA,6CACA,qCACA,wCACA,qCACA,mCACA,sCACA,gDACA,2CACA,8CACA,yCACA,6CACA,2CACA,wCACA,mCACA,+CACA,+CACA,sCACA,oCACA,kCACA,mCACA,uCACA,uCACA,mCACA,kCACA,2BACA,mCACA,8BACA,+BACA,yCACA,mCACA,4BACA,kCACA,gCACA,uCACA,iCACA,qBACA,yBACA,kCACA,uCACA,qCACA,sBACA,6BACA,qCACA,yCACA,wCACA,sCACA,yCACA,6CACA,wCACA,yCACA,wCACA,2CACA,2CACA,8CACA,wCACA,2CACA,2CACA,8CACA,4CACA,8CACA,yCACA,yCACA,0CACA,2CACA,wCACA,uCACA,gCACA,uCACA,yCACA,gCACA,yBACA,4BACA,2BACA,0BACA,2BACA,yBACA,4BACA,gCACA,gCACA,iCACA,+BACA,2BACA,8BACA,yBACA,gCACA,+BACA,yBACA,0BACA,wBACA,0BACA,2BACA,yBACA,0BACA,yBACA,uBACA,2BACA,sBACA,0BACA,yBACA,0BACA,0BACA,uBACA,2BACA,yBACA,8BACA,4BACA,wBACA,0BACA,8BACA,+BACA,wBACA,6BACA,4BACA,2BACA,kCACA,mCACA,gCACA,+BACA,gCACA,8BACA,gCACA,+BACA,6BACA,gCACA,iCACA,mCACA,8BACA,8BACA,mCACA,2BACA,4BACA,iBACA,+BACA,+BACA,4BACA,2BACA,2BACA,4BACA,oBACA,oBACA,kCACA,2BACA,4BACA,8BACA,+BACA,4BACA,8BACA,0BACA,+BACA,0BACA,iCACA,gCACA,mBACA,mBACA,mCACA,mCACA,iCACA,6BACA,uCACA,gCACA,2CACA,qCACA,0CACA,wCACA,0CACA,mCACA,oCACA,iCACA,iCACA,sCACA,oCACA,oCACA,uCACA,iCACA,sCACA,sCACA,kBACA,wBACA,mBACA,cACA,cACA,oBACA,eACA,6BACA,oBACA,iCACA,gCACA,4BACA,iCACA,+BACA,4BACA,6BACA,+BACA,gCACA,+BACA,kCACA,kCACA,qBACA,gCACA,yBACA,gCACA,gCACA,+BACA,iCACA,yBACA,oBACA,+BACA,gCACA,mCACA,8BACA,mBACA,wBACA,qBACA,4BACA,mCACA,kCACA,mBACA,gCACA,8BACA,+BACA,6BACA,iCACA,+BACA,+BACA,+BACA,iCACA,gCACA,gCACA,iCACA,6BACA,4BACA,6BACA,2BACA,gCACA,6BACA,2BACA,iCACA,+BACA,6BACA,gCACA,6BACA,4BACA,8BACA,6BACA,6BACA,6BACA,6BACA,sBACA,oCACA,sCACA,yCACA,sBACA,0BACA,oCACA,6BACA,oCACA,8BACA,4BACA,2CACA,iCACA,oCACA,qCACA,qCACA,sCACA,qCACA,8BACA,uBACA,oCACA,6BACA,gCACA,0BACA,mCACA,kCACA,6BACA,6BACA,iDACA,kCACA,qCACA,oCACA,mCACA,4BACA,sCAKD1Q;CCtsCX,WAqBI,SAASyW,EAAgBhjF,EAAQsiB,EAAUnf,EAAU8/E,EAAOtmF,GAKxD,IAAIumF,EAAM/iF,KACV+iF,EAAIC,wBAAyB,EAC7BD,EAAIE,MAAQ,cACZF,EAAIG,aAAe9W,SAASxiE,OAAO,eACnCm5E,EAAII,iBAAmB/W,SAASxiE,OAAO,cACvCm5E,EAAIK,cAAe,EACnBL,EAAIM,kBAAmB,EACvBN,EAAIO,sBAAwB,GAC5BP,EAAI5qE,MAAQ,GACZ4qE,EAAIQ,UAAY,GAChBR,EAAIS,UAAY,EAChBT,EAAIU,cAAe,EACnBV,EAAIW,iBAAmB,KAEvBX,EAAIY,oBAAsB,aAC1BZ,EAAIa,eAAgB,EACpB,IAAIC,EAAU,GACVC,EAAqB,GACrBC,EAAY,GACZC,EAAkB,GAClBC,EAAS,GAMTC,EAAgB,CAChBC,SAAU/X,SACVgY,SAAUhY,SACViY,UAAW,IAEftB,EAAIuB,wBAA0B,GAC9B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","file":"ShowtimeBundle.min.js","sourcesContent":["/*\r\n * ui-bootstrap4\r\n * http://morgul.github.io/ui-bootstrap4/\r\n\r\n * Version: 3.0.6 - 2018-11-17\r\n * License: MIT\r\n */angular.module(\"ui.bootstrap\", [\"ui.bootstrap.tpls\", \"ui.bootstrap.collapse\",\"ui.bootstrap.tabindex\",\"ui.bootstrap.accordion\",\"ui.bootstrap.alert\",\"ui.bootstrap.buttons\",\"ui.bootstrap.carousel\",\"ui.bootstrap.common\",\"ui.bootstrap.dateparser\",\"ui.bootstrap.isClass\",\"ui.bootstrap.datepicker\",\"ui.bootstrap.position\",\"ui.bootstrap.datepickerPopup\",\"ui.bootstrap.debounce\",\"ui.bootstrap.multiMap\",\"ui.bootstrap.dropdown\",\"ui.bootstrap.stackedMap\",\"ui.bootstrap.modal\",\"ui.bootstrap.paging\",\"ui.bootstrap.pager\",\"ui.bootstrap.pagination\",\"ui.bootstrap.tooltip\",\"ui.bootstrap.popover\",\"ui.bootstrap.progressbar\",\"ui.bootstrap.rating\",\"ui.bootstrap.tabs\",\"ui.bootstrap.timepicker\",\"ui.bootstrap.typeahead\"]);\r\nangular.module(\"ui.bootstrap.tpls\", [\"uib/template/accordion/accordion-group.html\",\"uib/template/accordion/accordion.html\",\"uib/template/alert/alert.html\",\"uib/template/carousel/carousel.html\",\"uib/template/carousel/slide.html\",\"uib/template/datepicker/datepicker.html\",\"uib/template/datepicker/day.html\",\"uib/template/datepicker/month.html\",\"uib/template/datepicker/year.html\",\"uib/template/datepickerPopup/popup.html\",\"uib/template/modal/window.html\",\"uib/template/pager/pager.html\",\"uib/template/pagination/pagination.html\",\"uib/template/tooltip/tooltip-html-popup.html\",\"uib/template/tooltip/tooltip-popup.html\",\"uib/template/tooltip/tooltip-template-popup.html\",\"uib/template/popover/popover-html.html\",\"uib/template/popover/popover-template.html\",\"uib/template/popover/popover.html\",\"uib/template/progressbar/bar.html\",\"uib/template/progressbar/progress.html\",\"uib/template/progressbar/progressbar.html\",\"uib/template/rating/rating.html\",\"uib/template/tabs/tab.html\",\"uib/template/tabs/tabset.html\",\"uib/template/timepicker/timepicker.html\",\"uib/template/typeahead/typeahead-match.html\",\"uib/template/typeahead/typeahead-popup.html\"]);\r\nangular.module('ui.bootstrap.collapse', [])\r\n\r\n .directive('uibCollapse', ['$animate', '$q', '$parse', '$injector', function($animate, $q, $parse, $injector) {\r\n var $animateCss = $injector.has('$animateCss') ? $injector.get('$animateCss') : null;\r\n return {\r\n link: function(scope, element, attrs) {\r\n var expandingExpr = $parse(attrs.expanding),\r\n expandedExpr = $parse(attrs.expanded),\r\n collapsingExpr = $parse(attrs.collapsing),\r\n collapsedExpr = $parse(attrs.collapsed),\r\n horizontal = false,\r\n css = {},\r\n cssTo = {};\r\n\r\n init();\r\n\r\n function init() {\r\n horizontal = !!('horizontal' in attrs);\r\n if (horizontal) {\r\n css = {\r\n width: ''\r\n };\r\n cssTo = {width: '0'};\r\n } else {\r\n css = {\r\n height: ''\r\n };\r\n cssTo = {height: '0'};\r\n }\r\n if (!scope.$eval(attrs.uibCollapse)) {\r\n element.addClass('show')\r\n .addClass('collapse')\r\n .attr('aria-expanded', true)\r\n .attr('aria-hidden', false)\r\n .css(css);\r\n }\r\n }\r\n\r\n function getScrollFromElement(element) {\r\n if (horizontal) {\r\n return {width: element.scrollWidth + 'px'};\r\n }\r\n return {height: element.scrollHeight + 'px'};\r\n }\r\n\r\n function expand() {\r\n if (element.hasClass('collapse') && element.hasClass('show')) {\r\n return;\r\n }\r\n\r\n $q.resolve(expandingExpr(scope))\r\n .then(function() {\r\n element.removeClass('collapse')\r\n .addClass('collapsing')\r\n .attr('aria-expanded', true)\r\n .attr('aria-hidden', false);\r\n\r\n if ($animateCss) {\r\n $animateCss(element, {\r\n addClass: 'show',\r\n easing: 'ease',\r\n css: {\r\n overflow: 'hidden'\r\n },\r\n to: getScrollFromElement(element[0])\r\n }).start()['finally'](expandDone);\r\n } else {\r\n $animate.addClass(element, 'show', {\r\n css: {\r\n overflow: 'hidden'\r\n },\r\n to: getScrollFromElement(element[0])\r\n }).then(expandDone);\r\n }\r\n }, angular.noop);\r\n }\r\n\r\n function expandDone() {\r\n element.removeClass('collapsing')\r\n .addClass('collapse')\r\n .css(css);\r\n expandedExpr(scope);\r\n }\r\n\r\n function collapse() {\r\n if (!element.hasClass('collapse') && !element.hasClass('show')) {\r\n return collapseDone();\r\n }\r\n\r\n $q.resolve(collapsingExpr(scope))\r\n .then(function() {\r\n element\r\n // IMPORTANT: The width must be set before adding \"collapsing\" class.\r\n // Otherwise, the browser attempts to animate from width 0 (in\r\n // collapsing class) to the given width here.\r\n .css(getScrollFromElement(element[0]))\r\n // initially all card collapse have the collapse class, this removal\r\n // prevents the animation from jumping to collapsed state\r\n .removeClass('collapse')\r\n .addClass('collapsing')\r\n .attr('aria-expanded', false)\r\n .attr('aria-hidden', true);\r\n\r\n if ($animateCss) {\r\n $animateCss(element, {\r\n removeClass: 'show',\r\n to: cssTo\r\n }).start()['finally'](collapseDone);\r\n } else {\r\n $animate.removeClass(element, 'show', {\r\n to: cssTo\r\n }).then(collapseDone);\r\n }\r\n }, angular.noop);\r\n }\r\n\r\n function collapseDone() {\r\n element.css(cssTo); // Required so that collapse works when animation is disabled\r\n element.removeClass('collapsing')\r\n .addClass('collapse');\r\n collapsedExpr(scope);\r\n }\r\n\r\n scope.$watch(attrs.uibCollapse, function(shouldCollapse) {\r\n if (shouldCollapse) {\r\n collapse();\r\n } else {\r\n expand();\r\n }\r\n });\r\n }\r\n };\r\n }]);\r\n\r\nangular.module('ui.bootstrap.tabindex', [])\r\n\r\n.directive('uibTabindexToggle', function() {\r\n return {\r\n restrict: 'A',\r\n link: function(scope, elem, attrs) {\r\n attrs.$observe('disabled', function(disabled) {\r\n attrs.$set('tabindex', disabled ? -1 : null);\r\n });\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse', 'ui.bootstrap.tabindex'])\r\n\r\n.constant('uibAccordionConfig', {\r\n closeOthers: true\r\n})\r\n\r\n.controller('UibAccordionController', ['$scope', '$attrs', 'uibAccordionConfig', function($scope, $attrs, accordionConfig) {\r\n // This array keeps track of the accordion groups\r\n this.groups = [];\r\n\r\n // Ensure that all the groups in this accordion are closed, unless close-others explicitly says not to\r\n this.closeOthers = function(openGroup) {\r\n var closeOthers = angular.isDefined($attrs.closeOthers) ?\r\n $scope.$eval($attrs.closeOthers) : accordionConfig.closeOthers;\r\n if (closeOthers) {\r\n angular.forEach(this.groups, function(group) {\r\n if (group !== openGroup) {\r\n group.isOpen = false;\r\n }\r\n });\r\n }\r\n };\r\n\r\n // This is called from the accordion-group directive to add itself to the accordion\r\n this.addGroup = function(groupScope) {\r\n var that = this;\r\n this.groups.push(groupScope);\r\n\r\n groupScope.$on('$destroy', function(event) {\r\n that.removeGroup(groupScope);\r\n });\r\n };\r\n\r\n // This is called from the accordion-group directive when to remove itself\r\n this.removeGroup = function(group) {\r\n var index = this.groups.indexOf(group);\r\n if (index !== -1) {\r\n this.groups.splice(index, 1);\r\n }\r\n };\r\n}])\r\n\r\n// The accordion directive simply sets up the directive controller\r\n// and adds an accordion CSS class to itself element.\r\n.directive('uibAccordion', function() {\r\n return {\r\n controller: 'UibAccordionController',\r\n controllerAs: 'accordion',\r\n transclude: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/accordion/accordion.html';\r\n }\r\n };\r\n})\r\n\r\n// The accordion-group directive indicates a block of html that will expand and collapse in an accordion\r\n.directive('uibAccordionGroup', function() {\r\n return {\r\n require: '^uibAccordion', // We need this directive to be inside an accordion\r\n transclude: true, // It transcludes the contents of the directive into the template\r\n restrict: 'A',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/accordion/accordion-group.html';\r\n },\r\n scope: {\r\n heading: '@', // Interpolate the heading attribute onto this scope\r\n cardClass: '@?', // Ditto with cardClass\r\n isOpen: '=?',\r\n isDisabled: '=?'\r\n },\r\n controller: function() {\r\n this.setHeading = function(element) {\r\n this.heading = element;\r\n };\r\n },\r\n link: function(scope, element, attrs, accordionCtrl) {\r\n element.addClass('card');\r\n accordionCtrl.addGroup(scope);\r\n\r\n scope.openClass = attrs.openClass || 'card-open';\r\n scope.cardClass = attrs.cardClass || 'card-default';\r\n scope.$watch('isOpen', function(value) {\r\n element.toggleClass(scope.openClass, !!value);\r\n if (value) {\r\n accordionCtrl.closeOthers(scope);\r\n }\r\n });\r\n\r\n scope.toggleOpen = function($event) {\r\n if (!scope.isDisabled) {\r\n if (!$event || $event.which === 32) {\r\n scope.isOpen = !scope.isOpen;\r\n }\r\n }\r\n };\r\n\r\n var id = 'accordiongroup-' + scope.$id + '-' + Math.floor(Math.random() * 10000);\r\n scope.headingId = id + '-tab';\r\n scope.cardId = id + '-card';\r\n }\r\n };\r\n})\r\n\r\n// Use accordion-heading below an accordion-group to provide a heading containing HTML\r\n.directive('uibAccordionHeading', function() {\r\n return {\r\n transclude: true, // Grab the contents to be used as the heading\r\n template: '', // In effect remove this element!\r\n replace: true,\r\n require: '^uibAccordionGroup',\r\n link: function(scope, element, attrs, accordionGroupCtrl, transclude) {\r\n // Pass the heading to the accordion-group controller\r\n // so that it can be transcluded into the right place in the template\r\n // [The second parameter to transclude causes the elements to be cloned so that they work in ng-repeat]\r\n accordionGroupCtrl.setHeading(transclude(scope, angular.noop));\r\n }\r\n };\r\n})\r\n\r\n// Use in the accordion-group template to indicate where you want the heading to be transcluded\r\n// You must provide the property on the accordion-group controller that will hold the transcluded element\r\n.directive('uibAccordionTransclude', function() {\r\n return {\r\n require: '^uibAccordionGroup',\r\n link: function(scope, element, attrs, controller) {\r\n scope.$watch(function() { return controller[attrs.uibAccordionTransclude]; }, function(heading) {\r\n if (heading) {\r\n var elem = angular.element(element[0].querySelector(getHeaderSelectors()));\r\n elem.html('');\r\n elem.append(heading);\r\n }\r\n });\r\n }\r\n };\r\n\r\n function getHeaderSelectors() {\r\n return 'uib-accordion-header,' +\r\n 'data-uib-accordion-header,' +\r\n 'x-uib-accordion-header,' +\r\n 'uib\\\\:accordion-header,' +\r\n '[uib-accordion-header],' +\r\n '[data-uib-accordion-header],' +\r\n '[x-uib-accordion-header]';\r\n }\r\n});\r\n\r\nangular.module('ui.bootstrap.alert', [])\r\n\r\n.controller('UibAlertController', ['$scope', '$element', '$attrs', '$interpolate', '$timeout', function($scope, $element, $attrs, $interpolate, $timeout) {\r\n $scope.closeable = !!$attrs.close;\r\n $element.addClass('alert');\r\n $attrs.$set('role', 'alert');\r\n if ($scope.closeable) {\r\n $element.addClass('alert-dismissible');\r\n }\r\n\r\n var dismissOnTimeout = angular.isDefined($attrs.dismissOnTimeout) ?\r\n $interpolate($attrs.dismissOnTimeout)($scope.$parent) : null;\r\n\r\n if (dismissOnTimeout) {\r\n $timeout(function() {\r\n $scope.close();\r\n }, parseInt(dismissOnTimeout, 10));\r\n }\r\n}])\r\n\r\n.directive('uibAlert', function() {\r\n return {\r\n controller: 'UibAlertController',\r\n controllerAs: 'alert',\r\n restrict: 'A',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/alert/alert.html';\r\n },\r\n transclude: true,\r\n scope: {\r\n close: '&'\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.buttons', [])\r\n\r\n.constant('uibButtonConfig', {\r\n activeClass: 'active',\r\n toggleEvent: 'click'\r\n})\r\n\r\n.controller('UibButtonsController', ['uibButtonConfig', function(buttonConfig) {\r\n this.activeClass = buttonConfig.activeClass || 'active';\r\n this.toggleEvent = buttonConfig.toggleEvent || 'click';\r\n}])\r\n\r\n.directive('uibBtnRadio', ['$parse', function($parse) {\r\n return {\r\n require: ['uibBtnRadio', 'ngModel'],\r\n controller: 'UibButtonsController',\r\n controllerAs: 'buttons',\r\n link: function(scope, element, attrs, ctrls) {\r\n var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n var uncheckableExpr = $parse(attrs.uibUncheckable);\r\n\r\n element.find('input').css({display: 'none'});\r\n\r\n //model -> UI\r\n ngModelCtrl.$render = function() {\r\n element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.uibBtnRadio)));\r\n };\r\n\r\n //ui->model\r\n element.on(buttonsCtrl.toggleEvent, function() {\r\n if (attrs.disabled) {\r\n return;\r\n }\r\n\r\n var isActive = element.hasClass(buttonsCtrl.activeClass);\r\n\r\n if (!isActive || angular.isDefined(attrs.uncheckable)) {\r\n scope.$apply(function() {\r\n ngModelCtrl.$setViewValue(isActive ? null : scope.$eval(attrs.uibBtnRadio));\r\n ngModelCtrl.$render();\r\n });\r\n }\r\n });\r\n\r\n if (attrs.uibUncheckable) {\r\n scope.$watch(uncheckableExpr, function(uncheckable) {\r\n attrs.$set('uncheckable', uncheckable ? '' : undefined);\r\n });\r\n }\r\n }\r\n };\r\n}])\r\n\r\n.directive('uibBtnCheckbox', function() {\r\n return {\r\n require: ['uibBtnCheckbox', 'ngModel'],\r\n controller: 'UibButtonsController',\r\n controllerAs: 'button',\r\n link: function(scope, element, attrs, ctrls) {\r\n var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n element.find('input').css({display: 'none'});\r\n\r\n function getTrueValue() {\r\n return getCheckboxValue(attrs.btnCheckboxTrue, true);\r\n }\r\n\r\n function getFalseValue() {\r\n return getCheckboxValue(attrs.btnCheckboxFalse, false);\r\n }\r\n\r\n function getCheckboxValue(attribute, defaultValue) {\r\n return angular.isDefined(attribute) ? scope.$eval(attribute) : defaultValue;\r\n }\r\n\r\n //model -> UI\r\n ngModelCtrl.$render = function() {\r\n element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue()));\r\n };\r\n\r\n //ui->model\r\n element.on(buttonsCtrl.toggleEvent, function() {\r\n if (attrs.disabled) {\r\n return;\r\n }\r\n\r\n scope.$apply(function() {\r\n ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue());\r\n ngModelCtrl.$render();\r\n });\r\n });\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.carousel', [])\r\n\r\n.controller('UibCarouselController', ['$scope', '$element', '$interval', '$timeout', '$animate', function($scope, $element, $interval, $timeout, $animate) {\r\n var self = this,\r\n slides = self.slides = $scope.slides = [],\r\n SLIDE_DIRECTION = 'uib-slideDirection',\r\n currentIndex = $scope.active,\r\n currentInterval, isPlaying;\r\n\r\n var destroyed = false;\r\n $element.addClass('carousel');\r\n\r\n self.addSlide = function(slide, element) {\r\n slides.push({\r\n slide: slide,\r\n element: element\r\n });\r\n slides.sort(function(a, b) {\r\n return +a.slide.index - +b.slide.index;\r\n });\r\n //if this is the first slide or the slide is set to active, select it\r\n if (slide.index === $scope.active || slides.length === 1 && !angular.isNumber($scope.active)) {\r\n if ($scope.$currentTransition) {\r\n $scope.$currentTransition = null;\r\n }\r\n\r\n currentIndex = slide.index;\r\n $scope.active = slide.index;\r\n setActive(currentIndex);\r\n self.select(slides[findSlideIndex(slide)]);\r\n if (slides.length === 1) {\r\n $scope.play();\r\n }\r\n }\r\n };\r\n\r\n self.getCurrentIndex = function() {\r\n for (var i = 0; i < slides.length; i++) {\r\n if (slides[i].slide.index === currentIndex) {\r\n return i;\r\n }\r\n }\r\n };\r\n\r\n self.next = $scope.next = function() {\r\n var newIndex = (self.getCurrentIndex() + 1) % slides.length;\r\n\r\n if (newIndex === 0 && $scope.noWrap()) {\r\n $scope.pause();\r\n return;\r\n }\r\n\r\n return self.select(slides[newIndex], 'next');\r\n };\r\n\r\n self.prev = $scope.prev = function() {\r\n var newIndex = self.getCurrentIndex() - 1 < 0 ? slides.length - 1 : self.getCurrentIndex() - 1;\r\n\r\n if ($scope.noWrap() && newIndex === slides.length - 1) {\r\n $scope.pause();\r\n return;\r\n }\r\n\r\n return self.select(slides[newIndex], 'prev');\r\n };\r\n\r\n self.removeSlide = function(slide) {\r\n var index = findSlideIndex(slide);\r\n\r\n //get the index of the slide inside the carousel\r\n slides.splice(index, 1);\r\n if (slides.length > 0 && currentIndex === index) {\r\n if (index >= slides.length) {\r\n currentIndex = slides.length - 1;\r\n $scope.active = currentIndex;\r\n setActive(currentIndex);\r\n self.select(slides[slides.length - 1]);\r\n } else {\r\n currentIndex = index;\r\n $scope.active = currentIndex;\r\n setActive(currentIndex);\r\n self.select(slides[index]);\r\n }\r\n } else if (currentIndex > index) {\r\n currentIndex--;\r\n $scope.active = currentIndex;\r\n }\r\n\r\n //clean the active value when no more slide\r\n if (slides.length === 0) {\r\n currentIndex = null;\r\n $scope.active = null;\r\n }\r\n };\r\n\r\n /* direction: \"prev\" or \"next\" */\r\n self.select = $scope.select = function(nextSlide, direction) {\r\n var nextIndex = findSlideIndex(nextSlide.slide);\r\n //Decide direction if it's not given\r\n if (direction === undefined) {\r\n direction = nextIndex > self.getCurrentIndex() ? 'next' : 'prev';\r\n }\r\n //Prevent this user-triggered transition from occurring if there is already one in progress\r\n if (nextSlide.slide.index !== currentIndex &&\r\n !$scope.$currentTransition) {\r\n goNext(nextSlide.slide, nextIndex, direction);\r\n }\r\n };\r\n\r\n /* Allow outside people to call indexOf on slides array */\r\n $scope.indexOfSlide = function(slide) {\r\n return +slide.slide.index;\r\n };\r\n\r\n $scope.isActive = function(slide) {\r\n return $scope.active === slide.slide.index;\r\n };\r\n\r\n $scope.isPrevDisabled = function() {\r\n return $scope.active === 0 && $scope.noWrap();\r\n };\r\n\r\n $scope.isNextDisabled = function() {\r\n return $scope.active === slides.length - 1 && $scope.noWrap();\r\n };\r\n\r\n $scope.pause = function() {\r\n if (!$scope.noPause) {\r\n isPlaying = false;\r\n resetTimer();\r\n }\r\n };\r\n\r\n $scope.play = function() {\r\n if (!isPlaying) {\r\n isPlaying = true;\r\n restartTimer();\r\n }\r\n };\r\n\r\n $element.on('mouseenter', $scope.pause);\r\n $element.on('mouseleave', $scope.play);\r\n\r\n $scope.$on('$destroy', function() {\r\n destroyed = true;\r\n resetTimer();\r\n });\r\n\r\n $scope.$watch('noTransition', function(noTransition) {\r\n $animate.enabled($element, !noTransition);\r\n });\r\n\r\n $scope.$watch('interval', restartTimer);\r\n\r\n $scope.$watchCollection('slides', resetTransition);\r\n\r\n $scope.$watch('active', function(index) {\r\n if (angular.isNumber(index) && currentIndex !== index) {\r\n for (var i = 0; i < slides.length; i++) {\r\n if (slides[i].slide.index === index) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n var slide = slides[index];\r\n if (slide) {\r\n setActive(index);\r\n self.select(slides[index]);\r\n currentIndex = index;\r\n }\r\n }\r\n });\r\n\r\n function getSlideByIndex(index) {\r\n for (var i = 0, l = slides.length; i < l; ++i) {\r\n if (slides[i].index === index) {\r\n return slides[i];\r\n }\r\n }\r\n }\r\n\r\n function setActive(index) {\r\n for (var i = 0; i < slides.length; i++) {\r\n slides[i].slide.active = i === index;\r\n }\r\n }\r\n\r\n function goNext(slide, index, direction) {\r\n if (destroyed) {\r\n return;\r\n }\r\n\r\n angular.extend(slide, {direction: direction});\r\n angular.extend(slides[currentIndex].slide || {}, {direction: direction});\r\n if ($animate.enabled($element) && !$scope.$currentTransition &&\r\n slides[index].element && self.slides.length > 1) {\r\n slides[index].element.data(SLIDE_DIRECTION, slide.direction);\r\n var currentIdx = self.getCurrentIndex();\r\n\r\n if (angular.isNumber(currentIdx) && slides[currentIdx].element) {\r\n slides[currentIdx].element.data(SLIDE_DIRECTION, slide.direction);\r\n }\r\n\r\n $scope.$currentTransition = true;\r\n $animate.on('addClass', slides[index].element, function(element, phase) {\r\n if (phase === 'close') {\r\n $scope.$currentTransition = null;\r\n $animate.off('addClass', element);\r\n }\r\n });\r\n }\r\n\r\n $scope.active = slide.index;\r\n currentIndex = slide.index;\r\n setActive(index);\r\n\r\n //every time you change slides, reset the timer\r\n restartTimer();\r\n }\r\n\r\n function findSlideIndex(slide) {\r\n for (var i = 0; i < slides.length; i++) {\r\n if (slides[i].slide === slide) {\r\n return i;\r\n }\r\n }\r\n }\r\n\r\n function resetTimer() {\r\n if (currentInterval) {\r\n $interval.cancel(currentInterval);\r\n currentInterval = null;\r\n }\r\n }\r\n\r\n function resetTransition(slides) {\r\n if (!slides.length) {\r\n $scope.$currentTransition = null;\r\n }\r\n }\r\n\r\n function restartTimer() {\r\n resetTimer();\r\n var interval = +$scope.interval;\r\n if (!isNaN(interval) && interval > 0) {\r\n currentInterval = $interval(timerFn, interval);\r\n }\r\n }\r\n\r\n function timerFn() {\r\n var interval = +$scope.interval;\r\n if (isPlaying && !isNaN(interval) && interval > 0 && slides.length) {\r\n $scope.next();\r\n } else {\r\n $scope.pause();\r\n }\r\n }\r\n}])\r\n\r\n.directive('uibCarousel', function() {\r\n return {\r\n transclude: true,\r\n controller: 'UibCarouselController',\r\n controllerAs: 'carousel',\r\n restrict: 'A',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/carousel/carousel.html';\r\n },\r\n scope: {\r\n active: '=?',\r\n interval: '=',\r\n noTransition: '=',\r\n noPause: '=',\r\n noWrap: '&'\r\n }\r\n };\r\n})\r\n\r\n.directive('uibSlide', ['$animate', function($animate) {\r\n return {\r\n require: '^uibCarousel',\r\n restrict: 'A',\r\n transclude: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/carousel/slide.html';\r\n },\r\n scope: {\r\n actual: '=?',\r\n index: '=?'\r\n },\r\n link: function (scope, element, attrs, carouselCtrl) {\r\n element.addClass('carousel-item');\r\n carouselCtrl.addSlide(scope, element);\r\n //when the scope is destroyed then remove the slide from the current slides array\r\n scope.$on('$destroy', function() {\r\n carouselCtrl.removeSlide(scope);\r\n });\r\n\r\n scope.$watch('active', function(active) {\r\n $animate[active ? 'addClass' : 'removeClass'](element, 'active');\r\n });\r\n }\r\n };\r\n}])\r\n\r\n.animation('.carousel-item', ['$animateCss',\r\nfunction($animateCss) {\r\n var SLIDE_DIRECTION = 'uib-slideDirection';\r\n var classPrefix = 'carousel-item-';\r\n\r\n function removeClass(element, className, callback) {\r\n element.removeClass(className);\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n\r\n return {\r\n beforeAddClass: function(element, className, done) {\r\n if (className === 'active') {\r\n var stopped = false;\r\n var direction = element.data(SLIDE_DIRECTION);\r\n var directionClass = direction === 'next' ? classPrefix + 'left' : classPrefix + 'right';\r\n var removeClassFn = removeClass.bind(this, element, [directionClass, classPrefix + direction].join(' '), done);\r\n element.addClass(classPrefix + direction);\r\n\r\n $animateCss(element, {addClass: directionClass})\r\n .start()\r\n .done(removeClassFn);\r\n\r\n return function() {\r\n stopped = true;\r\n };\r\n }\r\n done();\r\n },\r\n beforeRemoveClass: function (element, className, done) {\r\n if (className === 'active') {\r\n var stopped = false;\r\n var direction = element.data(SLIDE_DIRECTION);\r\n var directionClass = direction === 'next' ? classPrefix + 'left' : classPrefix + 'right';\r\n var removeClassFn = removeClass.bind(this, element, directionClass, done);\r\n\r\n $animateCss(element, {addClass: directionClass})\r\n .start()\r\n .done(removeClassFn);\r\n\r\n return function() {\r\n stopped = true;\r\n };\r\n }\r\n done();\r\n }\r\n };\r\n}]);\r\n\r\nangular.module('ui.bootstrap.common', []);\r\n\r\nangular.module('ui.bootstrap.dateparser', [])\r\n\r\n.service('uibDateParser', ['$log', '$locale', 'dateFilter', 'orderByFilter', 'filterFilter', function($log, $locale, dateFilter, orderByFilter, filterFilter) {\r\n // Pulled from https://github.com/mbostock/d3/blob/master/src/format/requote.js\r\n var SPECIAL_CHARACTERS_REGEXP = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\r\n\r\n var localeId;\r\n var formatCodeToRegex;\r\n\r\n this.init = function() {\r\n localeId = $locale.id;\r\n\r\n this.parsers = {};\r\n this.formatters = {};\r\n\r\n formatCodeToRegex = [\r\n {\r\n key: 'yyyy',\r\n regex: '\\\\d{4}',\r\n apply: function(value) { this.year = +value; },\r\n formatter: function(date) {\r\n var _date = new Date();\r\n _date.setFullYear(Math.abs(date.getFullYear()));\r\n return dateFilter(_date, 'yyyy');\r\n }\r\n },\r\n {\r\n key: 'yy',\r\n regex: '\\\\d{2}',\r\n apply: function(value) { value = +value; this.year = value < 69 ? value + 2000 : value + 1900; },\r\n formatter: function(date) {\r\n var _date = new Date();\r\n _date.setFullYear(Math.abs(date.getFullYear()));\r\n return dateFilter(_date, 'yy');\r\n }\r\n },\r\n {\r\n key: 'y',\r\n regex: '\\\\d{1,4}',\r\n apply: function(value) { this.year = +value; },\r\n formatter: function(date) {\r\n var _date = new Date();\r\n _date.setFullYear(Math.abs(date.getFullYear()));\r\n return dateFilter(_date, 'y');\r\n }\r\n },\r\n {\r\n key: 'M!',\r\n regex: '0?[1-9]|1[0-2]',\r\n apply: function(value) { this.month = value - 1; },\r\n formatter: function(date) {\r\n var value = date.getMonth();\r\n if (/^[0-9]$/.test(value)) {\r\n return dateFilter(date, 'MM');\r\n }\r\n\r\n return dateFilter(date, 'M');\r\n }\r\n },\r\n {\r\n key: 'MMMM',\r\n regex: $locale.DATETIME_FORMATS.MONTH.join('|'),\r\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.MONTH.indexOf(value); },\r\n formatter: function(date) { return dateFilter(date, 'MMMM'); }\r\n },\r\n {\r\n key: 'MMM',\r\n regex: $locale.DATETIME_FORMATS.SHORTMONTH.join('|'),\r\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.SHORTMONTH.indexOf(value); },\r\n formatter: function(date) { return dateFilter(date, 'MMM'); }\r\n },\r\n {\r\n key: 'MM',\r\n regex: '0[1-9]|1[0-2]',\r\n apply: function(value) { this.month = value - 1; },\r\n formatter: function(date) { return dateFilter(date, 'MM'); }\r\n },\r\n {\r\n key: 'M',\r\n regex: '[1-9]|1[0-2]',\r\n apply: function(value) { this.month = value - 1; },\r\n formatter: function(date) { return dateFilter(date, 'M'); }\r\n },\r\n {\r\n key: 'd!',\r\n regex: '[0-2]?[0-9]{1}|3[0-1]{1}',\r\n apply: function(value) { this.date = +value; },\r\n formatter: function(date) {\r\n var value = date.getDate();\r\n if (/^[1-9]$/.test(value)) {\r\n return dateFilter(date, 'dd');\r\n }\r\n\r\n return dateFilter(date, 'd');\r\n }\r\n },\r\n {\r\n key: 'dd',\r\n regex: '[0-2][0-9]{1}|3[0-1]{1}',\r\n apply: function(value) { this.date = +value; },\r\n formatter: function(date) { return dateFilter(date, 'dd'); }\r\n },\r\n {\r\n key: 'd',\r\n regex: '[1-2]?[0-9]{1}|3[0-1]{1}',\r\n apply: function(value) { this.date = +value; },\r\n formatter: function(date) { return dateFilter(date, 'd'); }\r\n },\r\n {\r\n key: 'EEEE',\r\n regex: $locale.DATETIME_FORMATS.DAY.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'EEEE'); }\r\n },\r\n {\r\n key: 'EEE',\r\n regex: $locale.DATETIME_FORMATS.SHORTDAY.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'EEE'); }\r\n },\r\n {\r\n key: 'HH',\r\n regex: '(?:0|1)[0-9]|2[0-3]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'HH'); }\r\n },\r\n {\r\n key: 'hh',\r\n regex: '0[0-9]|1[0-2]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'hh'); }\r\n },\r\n {\r\n key: 'H',\r\n regex: '1?[0-9]|2[0-3]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'H'); }\r\n },\r\n {\r\n key: 'h',\r\n regex: '[0-9]|1[0-2]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'h'); }\r\n },\r\n {\r\n key: 'mm',\r\n regex: '[0-5][0-9]',\r\n apply: function(value) { this.minutes = +value; },\r\n formatter: function(date) { return dateFilter(date, 'mm'); }\r\n },\r\n {\r\n key: 'm',\r\n regex: '[0-9]|[1-5][0-9]',\r\n apply: function(value) { this.minutes = +value; },\r\n formatter: function(date) { return dateFilter(date, 'm'); }\r\n },\r\n {\r\n key: 'sss',\r\n regex: '[0-9][0-9][0-9]',\r\n apply: function(value) { this.milliseconds = +value; },\r\n formatter: function(date) { return dateFilter(date, 'sss'); }\r\n },\r\n {\r\n key: 'ss',\r\n regex: '[0-5][0-9]',\r\n apply: function(value) { this.seconds = +value; },\r\n formatter: function(date) { return dateFilter(date, 'ss'); }\r\n },\r\n {\r\n key: 's',\r\n regex: '[0-9]|[1-5][0-9]',\r\n apply: function(value) { this.seconds = +value; },\r\n formatter: function(date) { return dateFilter(date, 's'); }\r\n },\r\n {\r\n key: 'a',\r\n regex: $locale.DATETIME_FORMATS.AMPMS.join('|'),\r\n apply: function(value) {\r\n if (this.hours === 12) {\r\n this.hours = 0;\r\n }\r\n\r\n if (value === 'PM') {\r\n this.hours += 12;\r\n }\r\n },\r\n formatter: function(date) { return dateFilter(date, 'a'); }\r\n },\r\n {\r\n key: 'Z',\r\n regex: '[+-]\\\\d{4}',\r\n apply: function(value) {\r\n var matches = value.match(/([+-])(\\d{2})(\\d{2})/),\r\n sign = matches[1],\r\n hours = matches[2],\r\n minutes = matches[3];\r\n this.hours += toInt(sign + hours);\r\n this.minutes += toInt(sign + minutes);\r\n },\r\n formatter: function(date) {\r\n return dateFilter(date, 'Z');\r\n }\r\n },\r\n {\r\n key: 'ww',\r\n regex: '[0-4][0-9]|5[0-3]',\r\n formatter: function(date) { return dateFilter(date, 'ww'); }\r\n },\r\n {\r\n key: 'w',\r\n regex: '[0-9]|[1-4][0-9]|5[0-3]',\r\n formatter: function(date) { return dateFilter(date, 'w'); }\r\n },\r\n {\r\n key: 'GGGG',\r\n regex: $locale.DATETIME_FORMATS.ERANAMES.join('|').replace(/\\s/g, '\\\\s'),\r\n formatter: function(date) { return dateFilter(date, 'GGGG'); }\r\n },\r\n {\r\n key: 'GGG',\r\n regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'GGG'); }\r\n },\r\n {\r\n key: 'GG',\r\n regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'GG'); }\r\n },\r\n {\r\n key: 'G',\r\n regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'G'); }\r\n }\r\n ];\r\n\r\n if (angular.version.major >= 1 && angular.version.minor > 4) {\r\n formatCodeToRegex.push({\r\n key: 'LLLL',\r\n regex: $locale.DATETIME_FORMATS.STANDALONEMONTH.join('|'),\r\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.STANDALONEMONTH.indexOf(value); },\r\n formatter: function(date) { return dateFilter(date, 'LLLL'); }\r\n });\r\n }\r\n };\r\n\r\n this.init();\r\n\r\n function getFormatCodeToRegex(key) {\r\n return filterFilter(formatCodeToRegex, {key: key}, true)[0];\r\n }\r\n\r\n this.getParser = function (key) {\r\n var f = getFormatCodeToRegex(key);\r\n return f && f.apply || null;\r\n };\r\n\r\n this.overrideParser = function (key, parser) {\r\n var f = getFormatCodeToRegex(key);\r\n if (f && angular.isFunction(parser)) {\r\n this.parsers = {};\r\n f.apply = parser;\r\n }\r\n }.bind(this);\r\n\r\n function createParser(format) {\r\n var map = [], regex = format.split('');\r\n\r\n // check for literal values\r\n var quoteIndex = format.indexOf('\\'');\r\n if (quoteIndex > -1) {\r\n var inLiteral = false;\r\n format = format.split('');\r\n for (var i = quoteIndex; i < format.length; i++) {\r\n if (inLiteral) {\r\n if (format[i] === '\\'') {\r\n if (i + 1 < format.length && format[i+1] === '\\'') { // escaped single quote\r\n format[i+1] = '$';\r\n regex[i+1] = '';\r\n } else { // end of literal\r\n regex[i] = '';\r\n inLiteral = false;\r\n }\r\n }\r\n format[i] = '$';\r\n } else {\r\n if (format[i] === '\\'') { // start of literal\r\n format[i] = '$';\r\n regex[i] = '';\r\n inLiteral = true;\r\n }\r\n }\r\n }\r\n\r\n format = format.join('');\r\n }\r\n\r\n angular.forEach(formatCodeToRegex, function(data) {\r\n var index = format.indexOf(data.key);\r\n\r\n if (index > -1) {\r\n format = format.split('');\r\n\r\n regex[index] = '(' + data.regex + ')';\r\n format[index] = '$'; // Custom symbol to define consumed part of format\r\n for (var i = index + 1, n = index + data.key.length; i < n; i++) {\r\n regex[i] = '';\r\n format[i] = '$';\r\n }\r\n format = format.join('');\r\n\r\n map.push({\r\n index: index,\r\n key: data.key,\r\n apply: data.apply,\r\n matcher: data.regex\r\n });\r\n }\r\n });\r\n\r\n return {\r\n regex: new RegExp('^' + regex.join('') + '$'),\r\n map: orderByFilter(map, 'index')\r\n };\r\n }\r\n\r\n function createFormatter(format) {\r\n var formatters = [];\r\n var i = 0;\r\n var formatter, literalIdx;\r\n while (i < format.length) {\r\n if (angular.isNumber(literalIdx)) {\r\n if (format.charAt(i) === '\\'') {\r\n if (i + 1 >= format.length || format.charAt(i + 1) !== '\\'') {\r\n formatters.push(constructLiteralFormatter(format, literalIdx, i));\r\n literalIdx = null;\r\n }\r\n } else if (i === format.length) {\r\n while (literalIdx < format.length) {\r\n formatter = constructFormatterFromIdx(format, literalIdx);\r\n formatters.push(formatter);\r\n literalIdx = formatter.endIdx;\r\n }\r\n }\r\n\r\n i++;\r\n continue;\r\n }\r\n\r\n if (format.charAt(i) === '\\'') {\r\n literalIdx = i;\r\n i++;\r\n continue;\r\n }\r\n\r\n formatter = constructFormatterFromIdx(format, i);\r\n\r\n formatters.push(formatter.parser);\r\n i = formatter.endIdx;\r\n }\r\n\r\n return formatters;\r\n }\r\n\r\n function constructLiteralFormatter(format, literalIdx, endIdx) {\r\n return function() {\r\n return format.substr(literalIdx + 1, endIdx - literalIdx - 1);\r\n };\r\n }\r\n\r\n function constructFormatterFromIdx(format, i) {\r\n var currentPosStr = format.substr(i);\r\n for (var j = 0; j < formatCodeToRegex.length; j++) {\r\n if (new RegExp('^' + formatCodeToRegex[j].key).test(currentPosStr)) {\r\n var data = formatCodeToRegex[j];\r\n return {\r\n endIdx: i + data.key.length,\r\n parser: data.formatter\r\n };\r\n }\r\n }\r\n\r\n return {\r\n endIdx: i + 1,\r\n parser: function() {\r\n return currentPosStr.charAt(0);\r\n }\r\n };\r\n }\r\n\r\n this.filter = function(date, format) {\r\n if (!angular.isDate(date) || isNaN(date) || !format) {\r\n return '';\r\n }\r\n\r\n format = $locale.DATETIME_FORMATS[format] || format;\r\n\r\n if ($locale.id !== localeId) {\r\n this.init();\r\n }\r\n\r\n if (!this.formatters[format]) {\r\n this.formatters[format] = createFormatter(format);\r\n }\r\n\r\n var formatters = this.formatters[format];\r\n\r\n return formatters.reduce(function(str, formatter) {\r\n return str + formatter(date);\r\n }, '');\r\n };\r\n\r\n this.parse = function(input, format, baseDate) {\r\n if (!angular.isString(input) || !format) {\r\n return input;\r\n }\r\n\r\n format = $locale.DATETIME_FORMATS[format] || format;\r\n format = format.replace(SPECIAL_CHARACTERS_REGEXP, '\\\\$&');\r\n\r\n if ($locale.id !== localeId) {\r\n this.init();\r\n }\r\n\r\n if (!this.parsers[format]) {\r\n this.parsers[format] = createParser(format, 'apply');\r\n }\r\n\r\n var parser = this.parsers[format],\r\n regex = parser.regex,\r\n map = parser.map,\r\n results = input.match(regex),\r\n tzOffset = false;\r\n if (results && results.length) {\r\n var fields, dt;\r\n if (angular.isDate(baseDate) && !isNaN(baseDate.getTime())) {\r\n fields = {\r\n year: baseDate.getFullYear(),\r\n month: baseDate.getMonth(),\r\n date: baseDate.getDate(),\r\n hours: baseDate.getHours(),\r\n minutes: baseDate.getMinutes(),\r\n seconds: baseDate.getSeconds(),\r\n milliseconds: baseDate.getMilliseconds()\r\n };\r\n } else {\r\n if (baseDate) {\r\n $log.warn('dateparser:', 'baseDate is not a valid date');\r\n }\r\n fields = { year: 1900, month: 0, date: 1, hours: 0, minutes: 0, seconds: 0, milliseconds: 0 };\r\n }\r\n\r\n for (var i = 1, n = results.length; i < n; i++) {\r\n var mapper = map[i - 1];\r\n if (mapper.matcher === 'Z') {\r\n tzOffset = true;\r\n }\r\n\r\n if (mapper.apply) {\r\n mapper.apply.call(fields, results[i]);\r\n }\r\n }\r\n\r\n var datesetter = tzOffset ? Date.prototype.setUTCFullYear :\r\n Date.prototype.setFullYear;\r\n var timesetter = tzOffset ? Date.prototype.setUTCHours :\r\n Date.prototype.setHours;\r\n\r\n if (isValid(fields.year, fields.month, fields.date)) {\r\n if (angular.isDate(baseDate) && !isNaN(baseDate.getTime()) && !tzOffset) {\r\n dt = new Date(baseDate);\r\n datesetter.call(dt, fields.year, fields.month, fields.date);\r\n timesetter.call(dt, fields.hours, fields.minutes,\r\n fields.seconds, fields.milliseconds);\r\n } else {\r\n dt = new Date(0);\r\n datesetter.call(dt, fields.year, fields.month, fields.date);\r\n timesetter.call(dt, fields.hours || 0, fields.minutes || 0,\r\n fields.seconds || 0, fields.milliseconds || 0);\r\n }\r\n }\r\n\r\n return dt;\r\n }\r\n };\r\n\r\n // Check if date is valid for specific month (and year for February).\r\n // Month: 0 = Jan, 1 = Feb, etc\r\n function isValid(year, month, date) {\r\n if (date < 1) {\r\n return false;\r\n }\r\n\r\n if (month === 1 && date > 28) {\r\n return date === 29 && (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0);\r\n }\r\n\r\n if (month === 3 || month === 5 || month === 8 || month === 10) {\r\n return date < 31;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function toInt(str) {\r\n return parseInt(str, 10);\r\n }\r\n\r\n this.toTimezone = toTimezone;\r\n this.fromTimezone = fromTimezone;\r\n this.timezoneToOffset = timezoneToOffset;\r\n this.addDateMinutes = addDateMinutes;\r\n this.convertTimezoneToLocal = convertTimezoneToLocal;\r\n\r\n function toTimezone(date, timezone) {\r\n return date && timezone ? convertTimezoneToLocal(date, timezone) : date;\r\n }\r\n\r\n function fromTimezone(date, timezone) {\r\n return date && timezone ? convertTimezoneToLocal(date, timezone, true) : date;\r\n }\r\n\r\n //https://github.com/angular/angular.js/blob/622c42169699ec07fc6daaa19fe6d224e5d2f70e/src/Angular.js#L1207\r\n function timezoneToOffset(timezone, fallback) {\r\n timezone = timezone.replace(/:/g, '');\r\n var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\r\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\r\n }\r\n\r\n function addDateMinutes(date, minutes) {\r\n date = new Date(date.getTime());\r\n date.setMinutes(date.getMinutes() + minutes);\r\n return date;\r\n }\r\n\r\n function convertTimezoneToLocal(date, timezone, reverse) {\r\n reverse = reverse ? -1 : 1;\r\n var dateTimezoneOffset = date.getTimezoneOffset();\r\n var timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\r\n return addDateMinutes(date, reverse * (timezoneOffset - dateTimezoneOffset));\r\n }\r\n}]);\r\n\r\n// Avoiding use of ng-class as it creates a lot of watchers when a class is to be applied to\r\n// at most one element.\r\nangular.module('ui.bootstrap.isClass', [])\r\n.directive('uibIsClass', [\r\n '$animate',\r\nfunction ($animate) {\r\n // 11111111 22222222\r\n var ON_REGEXP = /^\\s*([\\s\\S]+?)\\s+on\\s+([\\s\\S]+?)\\s*$/;\r\n // 11111111 22222222\r\n var IS_REGEXP = /^\\s*([\\s\\S]+?)\\s+for\\s+([\\s\\S]+?)\\s*$/;\r\n\r\n var dataPerTracked = {};\r\n\r\n return {\r\n restrict: 'A',\r\n compile: function(tElement, tAttrs) {\r\n var linkedScopes = [];\r\n var instances = [];\r\n var expToData = {};\r\n var lastActivated = null;\r\n var onExpMatches = tAttrs.uibIsClass.match(ON_REGEXP);\r\n var onExp = onExpMatches[2];\r\n var expsStr = onExpMatches[1];\r\n var exps = expsStr.split(',');\r\n\r\n return linkFn;\r\n\r\n function linkFn(scope, element, attrs) {\r\n linkedScopes.push(scope);\r\n instances.push({\r\n scope: scope,\r\n element: element\r\n });\r\n\r\n exps.forEach(function(exp, k) {\r\n addForExp(exp, scope);\r\n });\r\n\r\n scope.$on('$destroy', removeScope);\r\n }\r\n\r\n function addForExp(exp, scope) {\r\n var matches = exp.match(IS_REGEXP);\r\n var clazz = scope.$eval(matches[1]);\r\n var compareWithExp = matches[2];\r\n var data = expToData[exp];\r\n if (!data) {\r\n var watchFn = function(compareWithVal) {\r\n var newActivated = null;\r\n instances.some(function(instance) {\r\n var thisVal = instance.scope.$eval(onExp);\r\n if (thisVal === compareWithVal) {\r\n newActivated = instance;\r\n return true;\r\n }\r\n });\r\n if (data.lastActivated !== newActivated) {\r\n if (data.lastActivated) {\r\n $animate.removeClass(data.lastActivated.element, clazz);\r\n }\r\n if (newActivated) {\r\n $animate.addClass(newActivated.element, clazz);\r\n }\r\n data.lastActivated = newActivated;\r\n }\r\n };\r\n expToData[exp] = data = {\r\n lastActivated: null,\r\n scope: scope,\r\n watchFn: watchFn,\r\n compareWithExp: compareWithExp,\r\n watcher: scope.$watch(compareWithExp, watchFn)\r\n };\r\n }\r\n data.watchFn(scope.$eval(compareWithExp));\r\n }\r\n\r\n function removeScope(e) {\r\n var removedScope = e.targetScope;\r\n var index = linkedScopes.indexOf(removedScope);\r\n linkedScopes.splice(index, 1);\r\n instances.splice(index, 1);\r\n if (linkedScopes.length) {\r\n var newWatchScope = linkedScopes[0];\r\n angular.forEach(expToData, function(data) {\r\n if (data.scope === removedScope) {\r\n data.watcher = newWatchScope.$watch(data.compareWithExp, data.watchFn);\r\n data.scope = newWatchScope;\r\n }\r\n });\r\n } else {\r\n expToData = {};\r\n }\r\n }\r\n }\r\n };\r\n}]);\r\nangular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootstrap.isClass'])\r\n\r\n.value('$datepickerSuppressError', false)\r\n\r\n.value('$datepickerLiteralWarning', true)\r\n\r\n.constant('uibDatepickerConfig', {\r\n datepickerMode: 'day',\r\n formatDay: 'dd',\r\n formatMonth: 'MMMM',\r\n formatYear: 'yyyy',\r\n formatDayHeader: 'EEE',\r\n formatDayTitle: 'MMMM yyyy',\r\n formatMonthTitle: 'yyyy',\r\n maxDate: null,\r\n maxMode: 'year',\r\n minDate: null,\r\n minMode: 'day',\r\n monthColumns: 3,\r\n ngModelOptions: {},\r\n shortcutPropagation: false,\r\n showWeeks: true,\r\n yearColumns: 5,\r\n yearRows: 4\r\n})\r\n\r\n.controller('UibDatepickerController', ['$scope', '$element', '$attrs', '$parse', '$interpolate', '$locale', '$log', 'dateFilter', 'uibDatepickerConfig', '$datepickerLiteralWarning', '$datepickerSuppressError', 'uibDateParser',\r\n function($scope, $element, $attrs, $parse, $interpolate, $locale, $log, dateFilter, datepickerConfig, $datepickerLiteralWarning, $datepickerSuppressError, dateParser) {\r\n var self = this,\r\n ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl;\r\n ngModelOptions = {},\r\n watchListeners = [];\r\n\r\n $element.addClass('uib-datepicker');\r\n $attrs.$set('role', 'application');\r\n\r\n if (!$scope.datepickerOptions) {\r\n $scope.datepickerOptions = {};\r\n }\r\n\r\n // Modes chain\r\n this.modes = ['day', 'month', 'year'];\r\n\r\n [\r\n 'customClass',\r\n 'dateDisabled',\r\n 'datepickerMode',\r\n 'formatDay',\r\n 'formatDayHeader',\r\n 'formatDayTitle',\r\n 'formatMonth',\r\n 'formatMonthTitle',\r\n 'formatYear',\r\n 'maxDate',\r\n 'maxMode',\r\n 'minDate',\r\n 'minMode',\r\n 'monthColumns',\r\n 'showWeeks',\r\n 'shortcutPropagation',\r\n 'startingDay',\r\n 'yearColumns',\r\n 'yearRows'\r\n ].forEach(function(key) {\r\n switch (key) {\r\n case 'customClass':\r\n case 'dateDisabled':\r\n $scope[key] = $scope.datepickerOptions[key] || angular.noop;\r\n break;\r\n case 'datepickerMode':\r\n $scope.datepickerMode = angular.isDefined($scope.datepickerOptions.datepickerMode) ?\r\n $scope.datepickerOptions.datepickerMode : datepickerConfig.datepickerMode;\r\n break;\r\n case 'formatDay':\r\n case 'formatDayHeader':\r\n case 'formatDayTitle':\r\n case 'formatMonth':\r\n case 'formatMonthTitle':\r\n case 'formatYear':\r\n self[key] = angular.isDefined($scope.datepickerOptions[key]) ?\r\n $interpolate($scope.datepickerOptions[key])($scope.$parent) :\r\n datepickerConfig[key];\r\n break;\r\n case 'monthColumns':\r\n case 'showWeeks':\r\n case 'shortcutPropagation':\r\n case 'yearColumns':\r\n case 'yearRows':\r\n self[key] = angular.isDefined($scope.datepickerOptions[key]) ?\r\n $scope.datepickerOptions[key] : datepickerConfig[key];\r\n break;\r\n case 'startingDay':\r\n if (angular.isDefined($scope.datepickerOptions.startingDay)) {\r\n self.startingDay = $scope.datepickerOptions.startingDay;\r\n } else if (angular.isNumber(datepickerConfig.startingDay)) {\r\n self.startingDay = datepickerConfig.startingDay;\r\n } else {\r\n self.startingDay = ($locale.DATETIME_FORMATS.FIRSTDAYOFWEEK + 8) % 7;\r\n }\r\n\r\n break;\r\n case 'maxDate':\r\n case 'minDate':\r\n $scope.$watch('datepickerOptions.' + key, function(value) {\r\n if (value) {\r\n if (angular.isDate(value)) {\r\n self[key] = dateParser.fromTimezone(new Date(value), ngModelOptions.getOption('timezone'));\r\n } else {\r\n if ($datepickerLiteralWarning) {\r\n $log.warn('Literal date support has been deprecated, please switch to date object usage');\r\n }\r\n\r\n self[key] = new Date(dateFilter(value, 'medium'));\r\n }\r\n } else {\r\n self[key] = datepickerConfig[key] ?\r\n dateParser.fromTimezone(new Date(datepickerConfig[key]), ngModelOptions.getOption('timezone')) :\r\n null;\r\n }\r\n\r\n self.refreshView();\r\n });\r\n\r\n break;\r\n case 'maxMode':\r\n case 'minMode':\r\n if ($scope.datepickerOptions[key]) {\r\n $scope.$watch(function() { return $scope.datepickerOptions[key]; }, function(value) {\r\n self[key] = $scope[key] = angular.isDefined(value) ? value : $scope.datepickerOptions[key];\r\n if (key === 'minMode' && self.modes.indexOf($scope.datepickerOptions.datepickerMode) < self.modes.indexOf(self[key]) ||\r\n key === 'maxMode' && self.modes.indexOf($scope.datepickerOptions.datepickerMode) > self.modes.indexOf(self[key])) {\r\n $scope.datepickerMode = self[key];\r\n $scope.datepickerOptions.datepickerMode = self[key];\r\n }\r\n });\r\n } else {\r\n self[key] = $scope[key] = datepickerConfig[key] || null;\r\n }\r\n\r\n break;\r\n }\r\n });\r\n\r\n $scope.uniqueId = 'datepicker-' + $scope.$id + '-' + Math.floor(Math.random() * 10000);\r\n\r\n $scope.disabled = angular.isDefined($attrs.disabled) || false;\r\n if (angular.isDefined($attrs.ngDisabled)) {\r\n watchListeners.push($scope.$parent.$watch($attrs.ngDisabled, function(disabled) {\r\n $scope.disabled = disabled;\r\n self.refreshView();\r\n }));\r\n }\r\n\r\n $scope.isActive = function(dateObject) {\r\n if (self.compare(dateObject.date, self.activeDate) === 0) {\r\n $scope.activeDateId = dateObject.uid;\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n this.init = function(ngModelCtrl_) {\r\n ngModelCtrl = ngModelCtrl_;\r\n ngModelOptions = extractOptions(ngModelCtrl);\r\n\r\n if ($scope.datepickerOptions.initDate) {\r\n self.activeDate = dateParser.fromTimezone($scope.datepickerOptions.initDate, ngModelOptions.getOption('timezone')) || new Date();\r\n $scope.$watch('datepickerOptions.initDate', function(initDate) {\r\n if (initDate && (ngModelCtrl.$isEmpty(ngModelCtrl.$modelValue) || ngModelCtrl.$invalid)) {\r\n self.activeDate = dateParser.fromTimezone(initDate, ngModelOptions.getOption('timezone'));\r\n self.refreshView();\r\n }\r\n });\r\n } else {\r\n self.activeDate = new Date();\r\n }\r\n\r\n var date = ngModelCtrl.$modelValue ? new Date(ngModelCtrl.$modelValue) : new Date();\r\n this.activeDate = !isNaN(date) ?\r\n dateParser.fromTimezone(date, ngModelOptions.getOption('timezone')) :\r\n dateParser.fromTimezone(new Date(), ngModelOptions.getOption('timezone'));\r\n\r\n ngModelCtrl.$render = function() {\r\n self.render();\r\n };\r\n };\r\n\r\n this.render = function() {\r\n if (ngModelCtrl.$viewValue) {\r\n var date = new Date(ngModelCtrl.$viewValue),\r\n isValid = !isNaN(date);\r\n\r\n if (isValid) {\r\n this.activeDate = dateParser.fromTimezone(date, ngModelOptions.getOption('timezone'));\r\n } else if (!$datepickerSuppressError) {\r\n $log.error('Datepicker directive: \"ng-model\" value must be a Date object');\r\n }\r\n }\r\n this.refreshView();\r\n };\r\n\r\n this.refreshView = function() {\r\n if (this.element) {\r\n $scope.selectedDt = null;\r\n this._refreshView();\r\n if ($scope.activeDt) {\r\n $scope.activeDateId = $scope.activeDt.uid;\r\n }\r\n\r\n var date = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;\r\n date = dateParser.fromTimezone(date, ngModelOptions.getOption('timezone'));\r\n ngModelCtrl.$setValidity('dateDisabled', !date ||\r\n this.element && !this.isDisabled(date));\r\n }\r\n };\r\n\r\n this.createDateObject = function(date, format) {\r\n var model = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;\r\n model = dateParser.fromTimezone(model, ngModelOptions.getOption('timezone'));\r\n var today = new Date();\r\n today = dateParser.fromTimezone(today, ngModelOptions.getOption('timezone'));\r\n var time = this.compare(date, today);\r\n var dt = {\r\n date: date,\r\n label: dateParser.filter(date, format),\r\n selected: model && this.compare(date, model) === 0,\r\n disabled: this.isDisabled(date),\r\n past: time < 0,\r\n current: time === 0,\r\n future: time > 0,\r\n customClass: this.customClass(date) || null\r\n };\r\n\r\n if (model && this.compare(date, model) === 0) {\r\n $scope.selectedDt = dt;\r\n }\r\n\r\n if (self.activeDate && this.compare(dt.date, self.activeDate) === 0) {\r\n $scope.activeDt = dt;\r\n }\r\n\r\n return dt;\r\n };\r\n\r\n this.isDisabled = function(date) {\r\n return $scope.disabled ||\r\n this.minDate && this.compare(date, this.minDate) < 0 ||\r\n this.maxDate && this.compare(date, this.maxDate) > 0 ||\r\n $scope.dateDisabled && $scope.dateDisabled({date: date, mode: $scope.datepickerMode});\r\n };\r\n\r\n this.customClass = function(date) {\r\n return $scope.customClass({date: date, mode: $scope.datepickerMode});\r\n };\r\n\r\n // Split array into smaller arrays\r\n this.split = function(arr, size) {\r\n var arrays = [];\r\n while (arr.length > 0) {\r\n arrays.push(arr.splice(0, size));\r\n }\r\n return arrays;\r\n };\r\n\r\n $scope.select = function(date) {\r\n if ($scope.datepickerMode === self.minMode) {\r\n var dt = ngModelCtrl.$viewValue ? dateParser.fromTimezone(new Date(ngModelCtrl.$viewValue), ngModelOptions.getOption('timezone')) : new Date(0, 0, 0, 0, 0, 0, 0);\r\n dt.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\r\n dt = dateParser.toTimezone(dt, ngModelOptions.getOption('timezone'));\r\n ngModelCtrl.$setViewValue(dt);\r\n ngModelCtrl.$render();\r\n } else {\r\n self.activeDate = date;\r\n setMode(self.modes[self.modes.indexOf($scope.datepickerMode) - 1]);\r\n\r\n $scope.$emit('uib:datepicker.mode');\r\n }\r\n\r\n $scope.$broadcast('uib:datepicker.focus');\r\n };\r\n\r\n $scope.move = function(direction) {\r\n var year = self.activeDate.getFullYear() + direction * (self.step.years || 0),\r\n month = self.activeDate.getMonth() + direction * (self.step.months || 0);\r\n self.activeDate.setFullYear(year, month, 1);\r\n self.refreshView();\r\n };\r\n\r\n $scope.toggleMode = function(direction) {\r\n direction = direction || 1;\r\n\r\n if ($scope.datepickerMode === self.maxMode && direction === 1 ||\r\n $scope.datepickerMode === self.minMode && direction === -1) {\r\n return;\r\n }\r\n\r\n setMode(self.modes[self.modes.indexOf($scope.datepickerMode) + direction]);\r\n\r\n $scope.$emit('uib:datepicker.mode');\r\n };\r\n\r\n // Key event mapper\r\n $scope.keys = { 13: 'enter', 32: 'space', 33: 'pageup', 34: 'pagedown', 35: 'end', 36: 'home', 37: 'left', 38: 'up', 39: 'right', 40: 'down' };\r\n\r\n var focusElement = function() {\r\n self.element[0].focus();\r\n };\r\n\r\n // Listen for focus requests from popup directive\r\n $scope.$on('uib:datepicker.focus', focusElement);\r\n\r\n $scope.keydown = function(evt) {\r\n var key = $scope.keys[evt.which];\r\n\r\n if (!key || evt.shiftKey || evt.altKey || $scope.disabled) {\r\n return;\r\n }\r\n\r\n evt.preventDefault();\r\n if (!self.shortcutPropagation) {\r\n evt.stopPropagation();\r\n }\r\n\r\n if (key === 'enter' || key === 'space') {\r\n if (self.isDisabled(self.activeDate)) {\r\n return; // do nothing\r\n }\r\n $scope.select(self.activeDate);\r\n } else if (evt.ctrlKey && (key === 'up' || key === 'down')) {\r\n $scope.toggleMode(key === 'up' ? 1 : -1);\r\n } else {\r\n self.handleKeyDown(key, evt);\r\n self.refreshView();\r\n }\r\n };\r\n\r\n $element.on('keydown', function(evt) {\r\n $scope.$apply(function() {\r\n $scope.keydown(evt);\r\n });\r\n });\r\n\r\n $scope.$on('$destroy', function() {\r\n //Clear all watch listeners on destroy\r\n while (watchListeners.length) {\r\n watchListeners.shift()();\r\n }\r\n });\r\n\r\n function setMode(mode) {\r\n $scope.datepickerMode = mode;\r\n $scope.datepickerOptions.datepickerMode = mode;\r\n }\r\n\r\n function extractOptions(ngModelCtrl) {\r\n var ngModelOptions;\r\n\r\n if (angular.version.minor < 6) { // in angular < 1.6 $options could be missing\r\n // guarantee a value\r\n ngModelOptions = ngModelCtrl.$options ||\r\n $scope.datepickerOptions.ngModelOptions ||\r\n datepickerConfig.ngModelOptions ||\r\n {};\r\n\r\n // mimic 1.6+ api\r\n ngModelOptions.getOption = function (key) {\r\n return ngModelOptions[key];\r\n };\r\n } else { // in angular >=1.6 $options is always present\r\n // ng-model-options defaults timezone to null; don't let its precedence squash a non-null value\r\n var timezone = ngModelCtrl.$options.getOption('timezone') ||\r\n ($scope.datepickerOptions.ngModelOptions ? $scope.datepickerOptions.ngModelOptions.timezone : null) ||\r\n (datepickerConfig.ngModelOptions ? datepickerConfig.ngModelOptions.timezone : null);\r\n\r\n // values passed to createChild override existing values\r\n ngModelOptions = ngModelCtrl.$options // start with a ModelOptions instance\r\n .createChild(datepickerConfig.ngModelOptions) // lowest precedence\r\n .createChild($scope.datepickerOptions.ngModelOptions)\r\n .createChild(ngModelCtrl.$options) // highest precedence\r\n .createChild({timezone: timezone}); // to keep from squashing a non-null value\r\n }\r\n\r\n return ngModelOptions;\r\n }\r\n}])\r\n\r\n.controller('UibDaypickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\r\n var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n\r\n this.step = { months: 1 };\r\n this.element = $element;\r\n function getDaysInMonth(year, month) {\r\n return month === 1 && year % 4 === 0 &&\r\n (year % 100 !== 0 || year % 400 === 0) ? 29 : DAYS_IN_MONTH[month];\r\n }\r\n\r\n this.init = function(ctrl) {\r\n angular.extend(ctrl, this);\r\n scope.showWeeks = ctrl.showWeeks;\r\n ctrl.refreshView();\r\n };\r\n\r\n this.getDates = function(startDate, n) {\r\n var dates = new Array(n), current = new Date(startDate), i = 0, date;\r\n while (i < n) {\r\n date = new Date(current);\r\n dates[i++] = date;\r\n current.setDate(current.getDate() + 1);\r\n }\r\n return dates;\r\n };\r\n\r\n this._refreshView = function() {\r\n var year = this.activeDate.getFullYear(),\r\n month = this.activeDate.getMonth(),\r\n firstDayOfMonth = new Date(this.activeDate);\r\n\r\n firstDayOfMonth.setFullYear(year, month, 1);\r\n\r\n var difference = this.startingDay - firstDayOfMonth.getDay(),\r\n numDisplayedFromPreviousMonth = difference > 0 ?\r\n 7 - difference : - difference,\r\n firstDate = new Date(firstDayOfMonth);\r\n\r\n if (numDisplayedFromPreviousMonth > 0) {\r\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\r\n }\r\n\r\n // 42 is the number of days on a six-week calendar\r\n var days = this.getDates(firstDate, 42);\r\n for (var i = 0; i < 42; i ++) {\r\n days[i] = angular.extend(this.createDateObject(days[i], this.formatDay), {\r\n secondary: days[i].getMonth() !== month,\r\n uid: scope.uniqueId + '-' + i\r\n });\r\n }\r\n\r\n scope.labels = new Array(7);\r\n for (var j = 0; j < 7; j++) {\r\n scope.labels[j] = {\r\n abbr: dateFilter(days[j].date, this.formatDayHeader),\r\n full: dateFilter(days[j].date, 'EEEE')\r\n };\r\n }\r\n\r\n scope.title = dateFilter(this.activeDate, this.formatDayTitle);\r\n scope.rows = this.split(days, 7);\r\n\r\n if (scope.showWeeks) {\r\n scope.weekNumbers = [];\r\n var thursdayIndex = (4 + 7 - this.startingDay) % 7,\r\n numWeeks = scope.rows.length;\r\n for (var curWeek = 0; curWeek < numWeeks; curWeek++) {\r\n scope.weekNumbers.push(\r\n getISO8601WeekNumber(scope.rows[curWeek][thursdayIndex].date));\r\n }\r\n }\r\n };\r\n\r\n this.compare = function(date1, date2) {\r\n var _date1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\r\n var _date2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\r\n _date1.setFullYear(date1.getFullYear());\r\n _date2.setFullYear(date2.getFullYear());\r\n return _date1 - _date2;\r\n };\r\n\r\n function getISO8601WeekNumber(date) {\r\n var checkDate = new Date(date);\r\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); // Thursday\r\n var time = checkDate.getTime();\r\n checkDate.setMonth(0); // Compare with Jan 1\r\n checkDate.setDate(1);\r\n return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\r\n }\r\n\r\n this.handleKeyDown = function(key, evt) {\r\n var date = this.activeDate.getDate();\r\n\r\n if (key === 'left') {\r\n date = date - 1;\r\n } else if (key === 'up') {\r\n date = date - 7;\r\n } else if (key === 'right') {\r\n date = date + 1;\r\n } else if (key === 'down') {\r\n date = date + 7;\r\n } else if (key === 'pageup' || key === 'pagedown') {\r\n var month = this.activeDate.getMonth() + (key === 'pageup' ? - 1 : 1);\r\n this.activeDate.setMonth(month, 1);\r\n date = Math.min(getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth()), date);\r\n } else if (key === 'home') {\r\n date = 1;\r\n } else if (key === 'end') {\r\n date = getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth());\r\n }\r\n this.activeDate.setDate(date);\r\n };\r\n}])\r\n\r\n.controller('UibMonthpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\r\n this.step = { years: 1 };\r\n this.element = $element;\r\n\r\n this.init = function(ctrl) {\r\n angular.extend(ctrl, this);\r\n ctrl.refreshView();\r\n };\r\n\r\n this._refreshView = function() {\r\n var months = new Array(12),\r\n year = this.activeDate.getFullYear(),\r\n date;\r\n\r\n for (var i = 0; i < 12; i++) {\r\n date = new Date(this.activeDate);\r\n date.setFullYear(year, i, 1);\r\n months[i] = angular.extend(this.createDateObject(date, this.formatMonth), {\r\n uid: scope.uniqueId + '-' + i\r\n });\r\n }\r\n\r\n scope.title = dateFilter(this.activeDate, this.formatMonthTitle);\r\n scope.rows = this.split(months, this.monthColumns);\r\n scope.yearHeaderColspan = this.monthColumns > 3 ? this.monthColumns - 2 : 1;\r\n };\r\n\r\n this.compare = function(date1, date2) {\r\n var _date1 = new Date(date1.getFullYear(), date1.getMonth());\r\n var _date2 = new Date(date2.getFullYear(), date2.getMonth());\r\n _date1.setFullYear(date1.getFullYear());\r\n _date2.setFullYear(date2.getFullYear());\r\n return _date1 - _date2;\r\n };\r\n\r\n this.handleKeyDown = function(key, evt) {\r\n var date = this.activeDate.getMonth();\r\n\r\n if (key === 'left') {\r\n date = date - 1;\r\n } else if (key === 'up') {\r\n date = date - this.monthColumns;\r\n } else if (key === 'right') {\r\n date = date + 1;\r\n } else if (key === 'down') {\r\n date = date + this.monthColumns;\r\n } else if (key === 'pageup' || key === 'pagedown') {\r\n var year = this.activeDate.getFullYear() + (key === 'pageup' ? - 1 : 1);\r\n this.activeDate.setFullYear(year);\r\n } else if (key === 'home') {\r\n date = 0;\r\n } else if (key === 'end') {\r\n date = 11;\r\n }\r\n this.activeDate.setMonth(date);\r\n };\r\n}])\r\n\r\n.controller('UibYearpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\r\n var columns, range;\r\n this.element = $element;\r\n\r\n function getStartingYear(year) {\r\n return parseInt((year - 1) / range, 10) * range + 1;\r\n }\r\n\r\n this.yearpickerInit = function() {\r\n columns = this.yearColumns;\r\n range = this.yearRows * columns;\r\n this.step = { years: range };\r\n };\r\n\r\n this._refreshView = function() {\r\n var years = new Array(range), date;\r\n\r\n for (var i = 0, start = getStartingYear(this.activeDate.getFullYear()); i < range; i++) {\r\n date = new Date(this.activeDate);\r\n date.setFullYear(start + i, 0, 1);\r\n years[i] = angular.extend(this.createDateObject(date, this.formatYear), {\r\n uid: scope.uniqueId + '-' + i\r\n });\r\n }\r\n\r\n scope.title = [years[0].label, years[range - 1].label].join(' - ');\r\n scope.rows = this.split(years, columns);\r\n scope.columns = columns;\r\n };\r\n\r\n this.compare = function(date1, date2) {\r\n return date1.getFullYear() - date2.getFullYear();\r\n };\r\n\r\n this.handleKeyDown = function(key, evt) {\r\n var date = this.activeDate.getFullYear();\r\n\r\n if (key === 'left') {\r\n date = date - 1;\r\n } else if (key === 'up') {\r\n date = date - columns;\r\n } else if (key === 'right') {\r\n date = date + 1;\r\n } else if (key === 'down') {\r\n date = date + columns;\r\n } else if (key === 'pageup' || key === 'pagedown') {\r\n date += (key === 'pageup' ? - 1 : 1) * range;\r\n } else if (key === 'home') {\r\n date = getStartingYear(this.activeDate.getFullYear());\r\n } else if (key === 'end') {\r\n date = getStartingYear(this.activeDate.getFullYear()) + range - 1;\r\n }\r\n this.activeDate.setFullYear(date);\r\n };\r\n}])\r\n\r\n.directive('uibDatepicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/datepicker.html';\r\n },\r\n scope: {\r\n datepickerOptions: '=?'\r\n },\r\n require: ['uibDatepicker', '^ngModel'],\r\n restrict: 'A',\r\n controller: 'UibDatepickerController',\r\n controllerAs: 'datepicker',\r\n link: function(scope, element, attrs, ctrls) {\r\n var datepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n datepickerCtrl.init(ngModelCtrl);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDaypicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/day.html';\r\n },\r\n require: ['^uibDatepicker', 'uibDaypicker'],\r\n restrict: 'A',\r\n controller: 'UibDaypickerController',\r\n link: function(scope, element, attrs, ctrls) {\r\n var datepickerCtrl = ctrls[0],\r\n daypickerCtrl = ctrls[1];\r\n\r\n daypickerCtrl.init(datepickerCtrl);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibMonthpicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/month.html';\r\n },\r\n require: ['^uibDatepicker', 'uibMonthpicker'],\r\n restrict: 'A',\r\n controller: 'UibMonthpickerController',\r\n link: function(scope, element, attrs, ctrls) {\r\n var datepickerCtrl = ctrls[0],\r\n monthpickerCtrl = ctrls[1];\r\n\r\n monthpickerCtrl.init(datepickerCtrl);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibYearpicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/year.html';\r\n },\r\n require: ['^uibDatepicker', 'uibYearpicker'],\r\n restrict: 'A',\r\n controller: 'UibYearpickerController',\r\n link: function(scope, element, attrs, ctrls) {\r\n var ctrl = ctrls[0];\r\n angular.extend(ctrl, ctrls[1]);\r\n ctrl.yearpickerInit();\r\n\r\n ctrl.refreshView();\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.position', [])\r\n\r\n /**\r\n * A set of utility methods for working with the DOM.\r\n * It is meant to be used where we need to absolute-position elements in\r\n * relation to another element (this is the case for tooltips, popovers,\r\n * typeahead suggestions etc.).\r\n */\r\n .factory('$uibPosition', ['$document', '$window', function($document, $window) {\r\n /**\r\n * Used by scrollbarWidth() function to cache scrollbar's width.\r\n * Do not access this variable directly, use scrollbarWidth() instead.\r\n */\r\n var SCROLLBAR_WIDTH;\r\n /**\r\n * scrollbar on body and html element in IE and Edge overlay\r\n * content and should be considered 0 width.\r\n */\r\n var BODY_SCROLLBAR_WIDTH;\r\n var OVERFLOW_REGEX = {\r\n normal: /(auto|scroll)/,\r\n hidden: /(auto|scroll|hidden)/\r\n };\r\n var PLACEMENT_REGEX = {\r\n auto: /\\s?auto?\\s?/i,\r\n primary: /^(top|bottom|left|right)$/,\r\n secondary: /^(top|bottom|left|right|center)$/,\r\n vertical: /^(top|bottom)$/\r\n };\r\n var BODY_REGEX = /(HTML|BODY)/;\r\n\r\n return {\r\n\r\n /**\r\n * Provides a raw DOM element from a jQuery/jQLite element.\r\n *\r\n * @param {element} elem - The element to convert.\r\n *\r\n * @returns {element} A HTML element.\r\n */\r\n getRawNode: function(elem) {\r\n return elem.nodeName ? elem : elem[0] || elem;\r\n },\r\n\r\n /**\r\n * Provides a parsed number for a style property. Strips\r\n * units and casts invalid numbers to 0.\r\n *\r\n * @param {string} value - The style value to parse.\r\n *\r\n * @returns {number} A valid number.\r\n */\r\n parseStyle: function(value) {\r\n value = parseFloat(value);\r\n return isFinite(value) ? value : 0;\r\n },\r\n\r\n /**\r\n * Provides the closest positioned ancestor.\r\n *\r\n * @param {element} element - The element to get the offest parent for.\r\n *\r\n * @returns {element} The closest positioned ancestor.\r\n */\r\n offsetParent: function(elem) {\r\n elem = this.getRawNode(elem);\r\n\r\n var offsetParent = elem.offsetParent || $document[0].documentElement;\r\n\r\n function isStaticPositioned(el) {\r\n return ($window.getComputedStyle(el).position || 'static') === 'static';\r\n }\r\n\r\n while (offsetParent && offsetParent !== $document[0].documentElement && isStaticPositioned(offsetParent)) {\r\n offsetParent = offsetParent.offsetParent;\r\n }\r\n\r\n return offsetParent || $document[0].documentElement;\r\n },\r\n\r\n /**\r\n * Provides the scrollbar width, concept from TWBS measureScrollbar()\r\n * function in https://github.com/twbs/bootstrap/blob/master/js/modal.js\r\n * In IE and Edge, scollbar on body and html element overlay and should\r\n * return a width of 0.\r\n *\r\n * @returns {number} The width of the browser scollbar.\r\n */\r\n scrollbarWidth: function(isBody) {\r\n if (isBody) {\r\n if (angular.isUndefined(BODY_SCROLLBAR_WIDTH)) {\r\n var bodyElem = $document.find('body');\r\n bodyElem.addClass('uib-position-body-scrollbar-measure');\r\n BODY_SCROLLBAR_WIDTH = $window.innerWidth - bodyElem[0].clientWidth;\r\n BODY_SCROLLBAR_WIDTH = isFinite(BODY_SCROLLBAR_WIDTH) ? BODY_SCROLLBAR_WIDTH : 0;\r\n bodyElem.removeClass('uib-position-body-scrollbar-measure');\r\n }\r\n return BODY_SCROLLBAR_WIDTH;\r\n }\r\n\r\n if (angular.isUndefined(SCROLLBAR_WIDTH)) {\r\n var scrollElem = angular.element('<div class=\"uib-position-scrollbar-measure\"></div>');\r\n $document.find('body').append(scrollElem);\r\n SCROLLBAR_WIDTH = scrollElem[0].offsetWidth - scrollElem[0].clientWidth;\r\n SCROLLBAR_WIDTH = isFinite(SCROLLBAR_WIDTH) ? SCROLLBAR_WIDTH : 0;\r\n scrollElem.remove();\r\n }\r\n\r\n return SCROLLBAR_WIDTH;\r\n },\r\n\r\n /**\r\n * Provides the padding required on an element to replace the scrollbar.\r\n *\r\n * @returns {object} An object with the following properties:\r\n * <ul>\r\n * <li>**scrollbarWidth**: the width of the scrollbar</li>\r\n * <li>**widthOverflow**: whether the the width is overflowing</li>\r\n * <li>**right**: the amount of right padding on the element needed to replace the scrollbar</li>\r\n * <li>**rightOriginal**: the amount of right padding currently on the element</li>\r\n * <li>**heightOverflow**: whether the the height is overflowing</li>\r\n * <li>**bottom**: the amount of bottom padding on the element needed to replace the scrollbar</li>\r\n * <li>**bottomOriginal**: the amount of bottom padding currently on the element</li>\r\n * </ul>\r\n */\r\n scrollbarPadding: function(elem) {\r\n elem = this.getRawNode(elem);\r\n\r\n var elemStyle = $window.getComputedStyle(elem);\r\n var paddingRight = this.parseStyle(elemStyle.paddingRight);\r\n var paddingBottom = this.parseStyle(elemStyle.paddingBottom);\r\n var scrollParent = this.scrollParent(elem, false, true);\r\n var scrollbarWidth = this.scrollbarWidth(BODY_REGEX.test(scrollParent.tagName));\r\n\r\n return {\r\n scrollbarWidth: scrollbarWidth,\r\n widthOverflow: scrollParent.scrollWidth > scrollParent.clientWidth,\r\n right: paddingRight + scrollbarWidth,\r\n originalRight: paddingRight,\r\n heightOverflow: scrollParent.scrollHeight > scrollParent.clientHeight,\r\n bottom: paddingBottom + scrollbarWidth,\r\n originalBottom: paddingBottom\r\n };\r\n },\r\n\r\n /**\r\n * Checks to see if the element is scrollable.\r\n *\r\n * @param {element} elem - The element to check.\r\n * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,\r\n * default is false.\r\n *\r\n * @returns {boolean} Whether the element is scrollable.\r\n */\r\n isScrollable: function(elem, includeHidden) {\r\n elem = this.getRawNode(elem);\r\n\r\n var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;\r\n var elemStyle = $window.getComputedStyle(elem);\r\n return overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX);\r\n },\r\n\r\n /**\r\n * Provides the closest scrollable ancestor.\r\n * A port of the jQuery UI scrollParent method:\r\n * https://github.com/jquery/jquery-ui/blob/master/ui/scroll-parent.js\r\n *\r\n * @param {element} elem - The element to find the scroll parent of.\r\n * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,\r\n * default is false.\r\n * @param {boolean=} [includeSelf=false] - Should the element being passed be\r\n * included in the scrollable llokup.\r\n *\r\n * @returns {element} A HTML element.\r\n */\r\n scrollParent: function(elem, includeHidden, includeSelf) {\r\n elem = this.getRawNode(elem);\r\n\r\n var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;\r\n var documentEl = $document[0].documentElement;\r\n var elemStyle = $window.getComputedStyle(elem);\r\n if (includeSelf && overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX)) {\r\n return elem;\r\n }\r\n var excludeStatic = elemStyle.position === 'absolute';\r\n var scrollParent = elem.parentElement || documentEl;\r\n\r\n if (scrollParent === documentEl || elemStyle.position === 'fixed') {\r\n return documentEl;\r\n }\r\n\r\n while (scrollParent.parentElement && scrollParent !== documentEl) {\r\n var spStyle = $window.getComputedStyle(scrollParent);\r\n if (excludeStatic && spStyle.position !== 'static') {\r\n excludeStatic = false;\r\n }\r\n\r\n if (!excludeStatic && overflowRegex.test(spStyle.overflow + spStyle.overflowY + spStyle.overflowX)) {\r\n break;\r\n }\r\n scrollParent = scrollParent.parentElement;\r\n }\r\n\r\n return scrollParent;\r\n },\r\n\r\n /**\r\n * Provides read-only equivalent of jQuery's position function:\r\n * http://api.jquery.com/position/ - distance to closest positioned\r\n * ancestor. Does not account for margins by default like jQuery position.\r\n *\r\n * @param {element} elem - The element to caclulate the position on.\r\n * @param {boolean=} [includeMargins=false] - Should margins be accounted\r\n * for, default is false.\r\n *\r\n * @returns {object} An object with the following properties:\r\n * <ul>\r\n * <li>**width**: the width of the element</li>\r\n * <li>**height**: the height of the element</li>\r\n * <li>**top**: distance to top edge of offset parent</li>\r\n * <li>**left**: distance to left edge of offset parent</li>\r\n * </ul>\r\n */\r\n position: function(elem, includeMagins) {\r\n elem = this.getRawNode(elem);\r\n\r\n var elemOffset = this.offset(elem);\r\n if (includeMagins) {\r\n var elemStyle = $window.getComputedStyle(elem);\r\n elemOffset.top -= this.parseStyle(elemStyle.marginTop);\r\n elemOffset.left -= this.parseStyle(elemStyle.marginLeft);\r\n }\r\n var parent = this.offsetParent(elem);\r\n var parentOffset = {top: 0, left: 0};\r\n\r\n if (parent !== $document[0].documentElement) {\r\n parentOffset = this.offset(parent);\r\n parentOffset.top += parent.clientTop - parent.scrollTop;\r\n parentOffset.left += parent.clientLeft - parent.scrollLeft;\r\n }\r\n\r\n return {\r\n width: Math.round(angular.isNumber(elemOffset.width) ? elemOffset.width : elem.offsetWidth),\r\n height: Math.round(angular.isNumber(elemOffset.height) ? elemOffset.height : elem.offsetHeight),\r\n top: Math.round(elemOffset.top - parentOffset.top),\r\n left: Math.round(elemOffset.left - parentOffset.left)\r\n };\r\n },\r\n\r\n /**\r\n * Provides read-only equivalent of jQuery's offset function:\r\n * http://api.jquery.com/offset/ - distance to viewport. Does\r\n * not account for borders, margins, or padding on the body\r\n * element.\r\n *\r\n * @param {element} elem - The element to calculate the offset on.\r\n *\r\n * @returns {object} An object with the following properties:\r\n * <ul>\r\n * <li>**width**: the width of the element</li>\r\n * <li>**height**: the height of the element</li>\r\n * <li>**top**: distance to top edge of viewport</li>\r\n * <li>**right**: distance to bottom edge of viewport</li>\r\n * </ul>\r\n */\r\n offset: function(elem, includeMargins) {\r\n elem = this.getRawNode(elem);\r\n\r\n var elemBCR = elem.getBoundingClientRect();\r\n var offset = {\r\n width: Math.round(angular.isNumber(elemBCR.width) ? elemBCR.width : elem.offsetWidth),\r\n height: Math.round(angular.isNumber(elemBCR.height) ? elemBCR.height : elem.offsetHeight),\r\n top: Math.round(elemBCR.top + ($window.pageYOffset || $document[0].documentElement.scrollTop)),\r\n left: Math.round(elemBCR.left + ($window.pageXOffset || $document[0].documentElement.scrollLeft))\r\n };\r\n\r\n if (includeMargins) {\r\n var styles = window.getComputedStyle(elem);\r\n var verticalMargin = this.parseStyle(styles.marginTop) + this.parseStyle(styles.marginBottom);\r\n var horisontalMargin = this.parseStyle(styles.marginLeft) + this.parseStyle(styles.marginRight);\r\n\r\n offset.height += verticalMargin;\r\n offset.width += horisontalMargin;\r\n }\r\n\r\n return offset;\r\n },\r\n\r\n /**\r\n * Provides offset distance to the closest scrollable ancestor\r\n * or viewport. Accounts for border and scrollbar width.\r\n *\r\n * Right and bottom dimensions represent the distance to the\r\n * respective edge of the viewport element. If the element\r\n * edge extends beyond the viewport, a negative value will be\r\n * reported.\r\n *\r\n * @param {element} elem - The element to get the viewport offset for.\r\n * @param {boolean=} [useDocument=false] - Should the viewport be the document element instead\r\n * of the first scrollable element, default is false.\r\n * @param {boolean=} [includePadding=true] - Should the padding on the offset parent element\r\n * be accounted for, default is true.\r\n *\r\n * @returns {object} An object with the following properties:\r\n * <ul>\r\n * <li>**top**: distance to the top content edge of viewport element</li>\r\n * <li>**bottom**: distance to the bottom content edge of viewport element</li>\r\n * <li>**left**: distance to the left content edge of viewport element</li>\r\n * <li>**right**: distance to the right content edge of viewport element</li>\r\n * </ul>\r\n */\r\n viewportOffset: function(elem, useDocument, includePadding) {\r\n elem = this.getRawNode(elem);\r\n includePadding = includePadding !== false ? true : false;\r\n\r\n var elemBCR = elem.getBoundingClientRect();\r\n var offsetBCR = {top: 0, left: 0, bottom: 0, right: 0};\r\n\r\n var offsetParent = useDocument ? $document[0].documentElement : this.scrollParent(elem);\r\n var offsetParentBCR = offsetParent.getBoundingClientRect();\r\n\r\n offsetBCR.top = offsetParentBCR.top + offsetParent.clientTop;\r\n offsetBCR.left = offsetParentBCR.left + offsetParent.clientLeft;\r\n if (offsetParent === $document[0].documentElement) {\r\n offsetBCR.top += $window.pageYOffset;\r\n offsetBCR.left += $window.pageXOffset;\r\n }\r\n offsetBCR.bottom = offsetBCR.top + offsetParent.clientHeight;\r\n offsetBCR.right = offsetBCR.left + offsetParent.clientWidth;\r\n\r\n if (includePadding) {\r\n var offsetParentStyle = $window.getComputedStyle(offsetParent);\r\n offsetBCR.top += this.parseStyle(offsetParentStyle.paddingTop);\r\n offsetBCR.bottom -= this.parseStyle(offsetParentStyle.paddingBottom);\r\n offsetBCR.left += this.parseStyle(offsetParentStyle.paddingLeft);\r\n offsetBCR.right -= this.parseStyle(offsetParentStyle.paddingRight);\r\n }\r\n\r\n return {\r\n top: Math.round(elemBCR.top - offsetBCR.top),\r\n bottom: Math.round(offsetBCR.bottom - elemBCR.bottom),\r\n left: Math.round(elemBCR.left - offsetBCR.left),\r\n right: Math.round(offsetBCR.right - elemBCR.right)\r\n };\r\n },\r\n\r\n /**\r\n * Provides an array of placement values parsed from a placement string.\r\n * Along with the 'auto' indicator, supported placement strings are:\r\n * <ul>\r\n * <li>top: element on top, horizontally centered on host element.</li>\r\n * <li>top-left: element on top, left edge aligned with host element left edge.</li>\r\n * <li>top-right: element on top, lerightft edge aligned with host element right edge.</li>\r\n * <li>bottom: element on bottom, horizontally centered on host element.</li>\r\n * <li>bottom-left: element on bottom, left edge aligned with host element left edge.</li>\r\n * <li>bottom-right: element on bottom, right edge aligned with host element right edge.</li>\r\n * <li>left: element on left, vertically centered on host element.</li>\r\n * <li>left-top: element on left, top edge aligned with host element top edge.</li>\r\n * <li>left-bottom: element on left, bottom edge aligned with host element bottom edge.</li>\r\n * <li>right: element on right, vertically centered on host element.</li>\r\n * <li>right-top: element on right, top edge aligned with host element top edge.</li>\r\n * <li>right-bottom: element on right, bottom edge aligned with host element bottom edge.</li>\r\n * </ul>\r\n * A placement string with an 'auto' indicator is expected to be\r\n * space separated from the placement, i.e: 'auto bottom-left' If\r\n * the primary and secondary placement values do not match 'top,\r\n * bottom, left, right' then 'top' will be the primary placement and\r\n * 'center' will be the secondary placement. If 'auto' is passed, true\r\n * will be returned as the 3rd value of the array.\r\n *\r\n * @param {string} placement - The placement string to parse.\r\n *\r\n * @returns {array} An array with the following values\r\n * <ul>\r\n * <li>**[0]**: The primary placement.</li>\r\n * <li>**[1]**: The secondary placement.</li>\r\n * <li>**[2]**: If auto is passed: true, else undefined.</li>\r\n * </ul>\r\n */\r\n parsePlacement: function(placement) {\r\n var autoPlace = PLACEMENT_REGEX.auto.test(placement);\r\n if (autoPlace) {\r\n placement = placement.replace(PLACEMENT_REGEX.auto, '');\r\n }\r\n\r\n placement = placement.split('-');\r\n\r\n placement[0] = placement[0] || 'top';\r\n if (!PLACEMENT_REGEX.primary.test(placement[0])) {\r\n placement[0] = 'top';\r\n }\r\n\r\n placement[1] = placement[1] || 'center';\r\n if (!PLACEMENT_REGEX.secondary.test(placement[1])) {\r\n placement[1] = 'center';\r\n }\r\n\r\n if (autoPlace) {\r\n placement[2] = true;\r\n } else {\r\n placement[2] = false;\r\n }\r\n\r\n return placement;\r\n },\r\n\r\n /**\r\n * Provides coordinates for an element to be positioned relative to\r\n * another element. Passing 'auto' as part of the placement parameter\r\n * will enable smart placement - where the element fits. i.e:\r\n * 'auto left-top' will check to see if there is enough space to the left\r\n * of the hostElem to fit the targetElem, if not place right (same for secondary\r\n * top placement). Available space is calculated using the viewportOffset\r\n * function.\r\n *\r\n * @param {element} hostElem - The element to position against.\r\n * @param {element} targetElem - The element to position.\r\n * @param {string=} [placement=top] - The placement for the targetElem,\r\n * default is 'top'. 'center' is assumed as secondary placement for\r\n * 'top', 'left', 'right', and 'bottom' placements. Available placements are:\r\n * <ul>\r\n * <li>top</li>\r\n * <li>top-right</li>\r\n * <li>top-left</li>\r\n * <li>bottom</li>\r\n * <li>bottom-left</li>\r\n * <li>bottom-right</li>\r\n * <li>left</li>\r\n * <li>left-top</li>\r\n * <li>left-bottom</li>\r\n * <li>right</li>\r\n * <li>right-top</li>\r\n * <li>right-bottom</li>\r\n * </ul>\r\n * @param {boolean=} [appendToBody=false] - Should the top and left values returned\r\n * be calculated from the body element, default is false.\r\n * @param {boolean=} [includeMargins=false] - Should margins count into targetElem width\r\n * in position claculation\r\n *\r\n * @returns {object} An object with the following properties:\r\n * <ul>\r\n * <li>**top**: Value for targetElem top.</li>\r\n * <li>**left**: Value for targetElem left.</li>\r\n * <li>**placement**: The resolved placement.</li>\r\n * </ul>\r\n */\r\n positionElements: function(hostElem, targetElem, placement, appendToBody, includeMargins) {\r\n hostElem = this.getRawNode(hostElem);\r\n targetElem = this.getRawNode(targetElem);\r\n\r\n // need to read from prop to support tests.\r\n var targetWidth = angular.isDefined(targetElem.offsetWidth) ? targetElem.offsetWidth : targetElem.prop('offsetWidth');\r\n var targetHeight = angular.isDefined(targetElem.offsetHeight) ? targetElem.offsetHeight : targetElem.prop('offsetHeight');\r\n\r\n if (includeMargins) {\r\n var styles = window.getComputedStyle(targetElem);\r\n var verticalMargin = this.parseStyle(styles.marginTop) + this.parseStyle(styles.marginBottom);\r\n var horisontalMargin = this.parseStyle(styles.marginLeft) + this.parseStyle(styles.marginRight);\r\n\r\n targetHeight += verticalMargin;\r\n targetWidth += horisontalMargin;\r\n }\r\n\r\n placement = this.parsePlacement(placement);\r\n\r\n var hostElemPos = appendToBody ? this.offset(hostElem) : this.position(hostElem);\r\n var targetElemPos = {top: 0, left: 0, placement: ''};\r\n\r\n if (placement[2]) {\r\n var viewportOffset = this.viewportOffset(hostElem, appendToBody);\r\n\r\n var targetElemStyle = $window.getComputedStyle(targetElem);\r\n var adjustedSize = {\r\n width: targetWidth + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginLeft) + this.parseStyle(targetElemStyle.marginRight))),\r\n height: targetHeight + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginTop) + this.parseStyle(targetElemStyle.marginBottom)))\r\n };\r\n\r\n placement[0] = placement[0] === 'top' && adjustedSize.height > viewportOffset.top && adjustedSize.height <= viewportOffset.bottom ? 'bottom' :\r\n placement[0] === 'bottom' && adjustedSize.height > viewportOffset.bottom && adjustedSize.height <= viewportOffset.top ? 'top' :\r\n placement[0] === 'left' && adjustedSize.width > viewportOffset.left && adjustedSize.width <= viewportOffset.right ? 'right' :\r\n placement[0] === 'right' && adjustedSize.width > viewportOffset.right && adjustedSize.width <= viewportOffset.left ? 'left' :\r\n placement[0];\r\n\r\n placement[1] = placement[1] === 'top' && adjustedSize.height - hostElemPos.height > viewportOffset.bottom && adjustedSize.height - hostElemPos.height <= viewportOffset.top ? 'bottom' :\r\n placement[1] === 'bottom' && adjustedSize.height - hostElemPos.height > viewportOffset.top && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom ? 'top' :\r\n placement[1] === 'left' && adjustedSize.width - hostElemPos.width > viewportOffset.right && adjustedSize.width - hostElemPos.width <= viewportOffset.left ? 'right' :\r\n placement[1] === 'right' && adjustedSize.width - hostElemPos.width > viewportOffset.left && adjustedSize.width - hostElemPos.width <= viewportOffset.right ? 'left' :\r\n placement[1];\r\n\r\n if (placement[1] === 'center') {\r\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\r\n var xOverflow = hostElemPos.width / 2 - targetWidth / 2;\r\n if (viewportOffset.left + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.right) {\r\n placement[1] = 'left';\r\n } else if (viewportOffset.right + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.left) {\r\n placement[1] = 'right';\r\n }\r\n } else {\r\n var yOverflow = hostElemPos.height / 2 - adjustedSize.height / 2;\r\n if (viewportOffset.top + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom) {\r\n placement[1] = 'top';\r\n } else if (viewportOffset.bottom + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.top) {\r\n placement[1] = 'bottom';\r\n }\r\n }\r\n }\r\n }\r\n\r\n switch (placement[0]) {\r\n case 'top':\r\n targetElemPos.top = hostElemPos.top - targetHeight;\r\n break;\r\n case 'bottom':\r\n targetElemPos.top = hostElemPos.top + hostElemPos.height;\r\n break;\r\n case 'left':\r\n targetElemPos.left = hostElemPos.left - targetWidth;\r\n break;\r\n case 'right':\r\n targetElemPos.left = hostElemPos.left + hostElemPos.width;\r\n break;\r\n }\r\n\r\n switch (placement[1]) {\r\n case 'top':\r\n targetElemPos.top = hostElemPos.top;\r\n break;\r\n case 'bottom':\r\n targetElemPos.top = hostElemPos.top + hostElemPos.height - targetHeight;\r\n break;\r\n case 'left':\r\n targetElemPos.left = hostElemPos.left;\r\n break;\r\n case 'right':\r\n targetElemPos.left = hostElemPos.left + hostElemPos.width - targetWidth;\r\n break;\r\n case 'center':\r\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\r\n targetElemPos.left = hostElemPos.left + hostElemPos.width / 2 - targetWidth / 2;\r\n } else {\r\n targetElemPos.top = hostElemPos.top + hostElemPos.height / 2 - targetHeight / 2;\r\n }\r\n break;\r\n }\r\n\r\n targetElemPos.top = Math.round(targetElemPos.top);\r\n targetElemPos.left = Math.round(targetElemPos.left);\r\n targetElemPos.placement = placement[1] === 'center' ? placement[0] : placement[0] + '-' + placement[1];\r\n\r\n return targetElemPos;\r\n },\r\n\r\n /**\r\n * Provides a way to adjust the top positioning after first\r\n * render to correctly align element to top after content\r\n * rendering causes resized element height\r\n *\r\n * @param {array} placementClasses - The array of strings of classes\r\n * element should have.\r\n * @param {object} containerPosition - The object with container\r\n * position information\r\n * @param {number} initialHeight - The initial height for the elem.\r\n * @param {number} currentHeight - The current height for the elem.\r\n */\r\n adjustTop: function(placementClasses, containerPosition, initialHeight, currentHeight) {\r\n if (placementClasses.indexOf('top') !== -1 && initialHeight !== currentHeight) {\r\n return {\r\n top: containerPosition.top - currentHeight + 'px'\r\n };\r\n }\r\n },\r\n\r\n /**\r\n * Provides a way for positioning tooltip & dropdown\r\n * arrows when using placement options beyond the standard\r\n * left, right, top, or bottom.\r\n *\r\n * @param {element} elem - The tooltip/dropdown element.\r\n * @param {string} placement - The placement for the elem.\r\n */\r\n positionArrow: function(elem, placement) {\r\n elem = this.getRawNode(elem);\r\n var isTooltip = true;\r\n\r\n var innerElem = elem.querySelector('.tooltip-inner');\r\n if (!innerElem) {\r\n if (angular.element(elem).hasClass('popover')) {\r\n isTooltip = false;\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n var arrowElem = elem.querySelector('.arrow');\r\n if (!arrowElem) {\r\n return;\r\n }\r\n\r\n var arrowCss = {\r\n top: '',\r\n bottom: '',\r\n left: '',\r\n right: ''\r\n };\r\n\r\n placement = this.parsePlacement(placement);\r\n if (placement[1] === 'center') {\r\n var arrowElemOffset = this.offset(arrowElem, true);\r\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\r\n var aHW = arrowElemOffset.width / 2;\r\n var eHW = this.offset(elem).width / 2;\r\n var left = eHW - aHW;\r\n arrowCss.left = '' + left + 'px';\r\n } else {\r\n var aHH = arrowElemOffset.height / 2;\r\n var eHH = this.offset(elem).height / 2;\r\n var top = eHH - aHH;\r\n arrowCss.top = '' + top + 'px';\r\n }\r\n }\r\n\r\n var borderProp = 'border-' + placement[0] + '-width';\r\n var borderWidth = $window.getComputedStyle(arrowElem)[borderProp];\r\n\r\n var borderRadiusProp = 'border-';\r\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\r\n borderRadiusProp += placement[0] + '-' + placement[1];\r\n } else {\r\n borderRadiusProp += placement[1] + '-' + placement[0];\r\n }\r\n borderRadiusProp += '-radius';\r\n var borderRadius = $window.getComputedStyle(isTooltip ? innerElem : elem)[borderRadiusProp];\r\n\r\n if (isTooltip) {\r\n switch (placement[0]) {\r\n case 'top':\r\n arrowCss.bottom = '0';\r\n break;\r\n case 'bottom':\r\n arrowCss.top = '0';\r\n break;\r\n case 'left':\r\n arrowCss.right = '0';\r\n break;\r\n case 'right':\r\n arrowCss.left = '0';\r\n break;\r\n }\r\n }\r\n\r\n arrowCss[placement[1]] = borderRadius;\r\n\r\n angular.element(arrowElem).css(arrowCss);\r\n }\r\n };\r\n }]);\r\n\r\nangular.module('ui.bootstrap.datepickerPopup', ['ui.bootstrap.datepicker', 'ui.bootstrap.position'])\r\n\r\n.value('$datepickerPopupLiteralWarning', true)\r\n\r\n.constant('uibDatepickerPopupConfig', {\r\n altInputFormats: [],\r\n appendToBody: false,\r\n clearText: 'Clear',\r\n closeOnDateSelection: true,\r\n closeText: 'Done',\r\n currentText: 'Today',\r\n datepickerPopup: 'yyyy-MM-dd',\r\n datepickerPopupTemplateUrl: 'uib/template/datepickerPopup/popup.html',\r\n datepickerTemplateUrl: 'uib/template/datepicker/datepicker.html',\r\n html5Types: {\r\n date: 'yyyy-MM-dd',\r\n 'datetime-local': 'yyyy-MM-ddTHH:mm:ss.sss',\r\n 'month': 'yyyy-MM'\r\n },\r\n onOpenFocus: true,\r\n showButtonBar: true,\r\n placement: 'auto bottom-left'\r\n})\r\n\r\n.controller('UibDatepickerPopupController', ['$scope', '$element', '$attrs', '$compile', '$log', '$parse', '$window', '$document', '$rootScope', '$uibPosition', 'dateFilter', 'uibDateParser', 'uibDatepickerPopupConfig', '$timeout', 'uibDatepickerConfig', '$datepickerPopupLiteralWarning',\r\nfunction($scope, $element, $attrs, $compile, $log, $parse, $window, $document, $rootScope, $position, dateFilter, dateParser, datepickerPopupConfig, $timeout, datepickerConfig, $datepickerPopupLiteralWarning) {\r\n var cache = {},\r\n isHtml5DateInput = false;\r\n var dateFormat, closeOnDateSelection, appendToBody, onOpenFocus,\r\n datepickerPopupTemplateUrl, datepickerTemplateUrl, popupEl, datepickerEl, scrollParentEl,\r\n ngModel, ngModelOptions, $popup, altInputFormats, watchListeners = [];\r\n\r\n this.init = function(_ngModel_) {\r\n ngModel = _ngModel_;\r\n ngModelOptions = extractOptions(ngModel);\r\n closeOnDateSelection = angular.isDefined($attrs.closeOnDateSelection) ?\r\n $scope.$parent.$eval($attrs.closeOnDateSelection) :\r\n datepickerPopupConfig.closeOnDateSelection;\r\n appendToBody = angular.isDefined($attrs.datepickerAppendToBody) ?\r\n $scope.$parent.$eval($attrs.datepickerAppendToBody) :\r\n datepickerPopupConfig.appendToBody;\r\n onOpenFocus = angular.isDefined($attrs.onOpenFocus) ?\r\n $scope.$parent.$eval($attrs.onOpenFocus) : datepickerPopupConfig.onOpenFocus;\r\n datepickerPopupTemplateUrl = angular.isDefined($attrs.datepickerPopupTemplateUrl) ?\r\n $attrs.datepickerPopupTemplateUrl :\r\n datepickerPopupConfig.datepickerPopupTemplateUrl;\r\n datepickerTemplateUrl = angular.isDefined($attrs.datepickerTemplateUrl) ?\r\n $attrs.datepickerTemplateUrl : datepickerPopupConfig.datepickerTemplateUrl;\r\n altInputFormats = angular.isDefined($attrs.altInputFormats) ?\r\n $scope.$parent.$eval($attrs.altInputFormats) :\r\n datepickerPopupConfig.altInputFormats;\r\n\r\n $scope.showButtonBar = angular.isDefined($attrs.showButtonBar) ?\r\n $scope.$parent.$eval($attrs.showButtonBar) :\r\n datepickerPopupConfig.showButtonBar;\r\n\r\n if (datepickerPopupConfig.html5Types[$attrs.type]) {\r\n dateFormat = datepickerPopupConfig.html5Types[$attrs.type];\r\n isHtml5DateInput = true;\r\n } else {\r\n dateFormat = $attrs.uibDatepickerPopup || datepickerPopupConfig.datepickerPopup;\r\n $attrs.$observe('uibDatepickerPopup', function(value, oldValue) {\r\n var newDateFormat = value || datepickerPopupConfig.datepickerPopup;\r\n // Invalidate the $modelValue to ensure that formatters re-run\r\n // FIXME: Refactor when PR is merged: https://github.com/angular/angular.js/pull/10764\r\n if (newDateFormat !== dateFormat) {\r\n dateFormat = newDateFormat;\r\n ngModel.$modelValue = null;\r\n\r\n if (!dateFormat) {\r\n throw new Error('uibDatepickerPopup must have a date format specified.');\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (!dateFormat) {\r\n throw new Error('uibDatepickerPopup must have a date format specified.');\r\n }\r\n\r\n if (isHtml5DateInput && $attrs.uibDatepickerPopup) {\r\n throw new Error('HTML5 date input types do not support custom formats.');\r\n }\r\n\r\n // popup element used to display calendar\r\n popupEl = angular.element(\r\n \"<div uib-datepicker-popup-wrap data-ng-class=\\\"{'show': isOpen}\\\"><div uib-datepicker></div></div>\"\r\n );\r\n\r\n popupEl.attr({\r\n 'ng-model': 'date',\r\n 'ng-change': 'dateSelection(date)',\r\n 'template-url': datepickerPopupTemplateUrl\r\n });\r\n\r\n // datepicker element\r\n datepickerEl = angular.element(popupEl.children()[0]);\r\n datepickerEl.attr('template-url', datepickerTemplateUrl);\r\n\r\n if (!$scope.datepickerOptions) {\r\n $scope.datepickerOptions = {};\r\n }\r\n\r\n if (isHtml5DateInput) {\r\n if ($attrs.type === 'month') {\r\n $scope.datepickerOptions.datepickerMode = 'month';\r\n $scope.datepickerOptions.minMode = 'month';\r\n }\r\n }\r\n\r\n datepickerEl.attr('datepicker-options', 'datepickerOptions');\r\n\r\n if (!isHtml5DateInput) {\r\n // Internal API to maintain the correct ng-invalid-[key] class\r\n ngModel.$$parserName = 'date';\r\n ngModel.$validators.date = validator;\r\n ngModel.$parsers.unshift(parseDate);\r\n ngModel.$formatters.push(function(value) {\r\n if (ngModel.$isEmpty(value)) {\r\n $scope.date = value;\r\n return value;\r\n }\r\n\r\n if (angular.isNumber(value)) {\r\n value = new Date(value);\r\n }\r\n\r\n $scope.date = dateParser.fromTimezone(value, ngModelOptions.getOption('timezone'));\r\n\r\n return dateParser.filter($scope.date, dateFormat);\r\n });\r\n } else {\r\n ngModel.$formatters.push(function(value) {\r\n $scope.date = dateParser.fromTimezone(value, ngModelOptions.getOption('timezone'));\r\n return value;\r\n });\r\n }\r\n\r\n // Detect changes in the view from the text box\r\n ngModel.$viewChangeListeners.push(function() {\r\n $scope.date = parseDateString(ngModel.$viewValue);\r\n });\r\n\r\n $element.on('keydown', inputKeydownBind);\r\n\r\n $popup = $compile(popupEl)($scope);\r\n // Prevent jQuery cache memory leak (template is now redundant after linking)\r\n popupEl.remove();\r\n\r\n if (appendToBody) {\r\n $document.find('body').append($popup);\r\n } else {\r\n $element.after($popup);\r\n }\r\n\r\n $scope.$on('$destroy', function() {\r\n if ($scope.isOpen === true) {\r\n if (!$rootScope.$$phase) {\r\n $scope.$apply(function() {\r\n $scope.isOpen = false;\r\n });\r\n }\r\n }\r\n\r\n $popup.remove();\r\n $element.off('keydown', inputKeydownBind);\r\n $document.off('click', documentClickBind);\r\n if (scrollParentEl) {\r\n scrollParentEl.off('scroll', positionPopup);\r\n }\r\n angular.element($window).off('resize', positionPopup);\r\n\r\n //Clear all watch listeners on destroy\r\n while (watchListeners.length) {\r\n watchListeners.shift()();\r\n }\r\n });\r\n };\r\n\r\n $scope.getText = function(key) {\r\n return $scope[key + 'Text'] || datepickerPopupConfig[key + 'Text'];\r\n };\r\n\r\n $scope.isDisabled = function(date) {\r\n if (date === 'today') {\r\n date = dateParser.fromTimezone(new Date(), ngModelOptions.getOption('timezone'));\r\n }\r\n\r\n var dates = {};\r\n angular.forEach(['minDate', 'maxDate'], function(key) {\r\n if (!$scope.datepickerOptions[key]) {\r\n dates[key] = null;\r\n } else if (angular.isDate($scope.datepickerOptions[key])) {\r\n dates[key] = new Date($scope.datepickerOptions[key]);\r\n } else {\r\n if ($datepickerPopupLiteralWarning) {\r\n $log.warn('Literal date support has been deprecated, please switch to date object usage');\r\n }\r\n\r\n dates[key] = new Date(dateFilter($scope.datepickerOptions[key], 'medium'));\r\n }\r\n });\r\n\r\n return $scope.datepickerOptions &&\r\n dates.minDate && $scope.compare(date, dates.minDate) < 0 ||\r\n dates.maxDate && $scope.compare(date, dates.maxDate) > 0;\r\n };\r\n\r\n $scope.compare = function(date1, date2) {\r\n return new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()) - new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\r\n };\r\n\r\n // Inner change\r\n $scope.dateSelection = function(dt) {\r\n $scope.date = dt;\r\n var date = $scope.date ? dateParser.filter($scope.date, dateFormat) : null; // Setting to NULL is necessary for form validators to function\r\n $element.val(date);\r\n ngModel.$setViewValue(date);\r\n\r\n if (closeOnDateSelection) {\r\n $scope.isOpen = false;\r\n $element[0].focus();\r\n }\r\n };\r\n\r\n $scope.keydown = function(evt) {\r\n if (evt.which === 27) {\r\n evt.stopPropagation();\r\n $scope.isOpen = false;\r\n $element[0].focus();\r\n }\r\n };\r\n\r\n $scope.select = function(date, evt) {\r\n evt.stopPropagation();\r\n\r\n if (date === 'today') {\r\n var today = new Date();\r\n if (angular.isDate($scope.date)) {\r\n date = new Date($scope.date);\r\n date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n } else {\r\n date = dateParser.fromTimezone(today, ngModelOptions.getOption('timezone'));\r\n date.setHours(0, 0, 0, 0);\r\n }\r\n }\r\n $scope.dateSelection(date);\r\n };\r\n\r\n $scope.close = function(evt) {\r\n evt.stopPropagation();\r\n\r\n $scope.isOpen = false;\r\n $element[0].focus();\r\n };\r\n\r\n $scope.disabled = angular.isDefined($attrs.disabled) || false;\r\n if ($attrs.ngDisabled) {\r\n watchListeners.push($scope.$parent.$watch($parse($attrs.ngDisabled), function(disabled) {\r\n $scope.disabled = disabled;\r\n }));\r\n }\r\n\r\n $scope.$watch('isOpen', function(value) {\r\n if (value) {\r\n if (!$scope.disabled) {\r\n $timeout(function() {\r\n positionPopup();\r\n\r\n if (onOpenFocus) {\r\n $scope.$broadcast('uib:datepicker.focus');\r\n }\r\n\r\n $document.on('click', documentClickBind);\r\n\r\n var placement = $attrs.popupPlacement ? $attrs.popupPlacement : datepickerPopupConfig.placement;\r\n if (appendToBody || $position.parsePlacement(placement)[2]) {\r\n scrollParentEl = scrollParentEl || angular.element($position.scrollParent($element));\r\n if (scrollParentEl) {\r\n scrollParentEl.on('scroll', positionPopup);\r\n }\r\n } else {\r\n scrollParentEl = null;\r\n }\r\n\r\n angular.element($window).on('resize', positionPopup);\r\n }, 0, false);\r\n } else {\r\n $scope.isOpen = false;\r\n }\r\n } else {\r\n $document.off('click', documentClickBind);\r\n if (scrollParentEl) {\r\n scrollParentEl.off('scroll', positionPopup);\r\n }\r\n angular.element($window).off('resize', positionPopup);\r\n }\r\n });\r\n\r\n function cameltoDash(string) {\r\n return string.replace(/([A-Z])/g, function($1) { return '-' + $1.toLowerCase(); });\r\n }\r\n\r\n function parseDateString(viewValue) {\r\n var date = dateParser.parse(viewValue, dateFormat, $scope.date);\r\n if (isNaN(date)) {\r\n for (var i = 0; i < altInputFormats.length; i++) {\r\n date = dateParser.parse(viewValue, altInputFormats[i], $scope.date);\r\n if (!isNaN(date)) {\r\n return date;\r\n }\r\n }\r\n }\r\n return date;\r\n }\r\n\r\n function parseDate(viewValue) {\r\n if (angular.isNumber(viewValue)) {\r\n // presumably timestamp to date object\r\n viewValue = new Date(viewValue);\r\n }\r\n\r\n if (!viewValue) {\r\n return null;\r\n }\r\n\r\n if (angular.isDate(viewValue) && !isNaN(viewValue)) {\r\n return viewValue;\r\n }\r\n\r\n if (angular.isString(viewValue)) {\r\n var date = parseDateString(viewValue);\r\n if (!isNaN(date)) {\r\n return dateParser.toTimezone(date, ngModelOptions.getOption('timezone'));\r\n }\r\n }\r\n\r\n return ngModelOptions.getOption('allowInvalid') ? viewValue : undefined;\r\n }\r\n\r\n function validator(modelValue, viewValue) {\r\n var value = modelValue || viewValue;\r\n\r\n if (!$attrs.ngRequired && !value) {\r\n return true;\r\n }\r\n\r\n if (angular.isNumber(value)) {\r\n value = new Date(value);\r\n }\r\n\r\n if (!value) {\r\n return true;\r\n }\r\n\r\n if (angular.isDate(value) && !isNaN(value)) {\r\n return true;\r\n }\r\n\r\n if (angular.isString(value)) {\r\n return !isNaN(parseDateString(value));\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function documentClickBind(event) {\r\n if (!$scope.isOpen && $scope.disabled) {\r\n return;\r\n }\r\n\r\n var popup = $popup[0];\r\n var dpContainsTarget = $element[0].contains(event.target);\r\n // The popup node may not be an element node\r\n // In some browsers (IE) only element nodes have the 'contains' function\r\n var popupContainsTarget = popup.contains !== undefined && popup.contains(event.target);\r\n if ($scope.isOpen && !(dpContainsTarget || popupContainsTarget)) {\r\n $scope.$apply(function() {\r\n $scope.isOpen = false;\r\n });\r\n }\r\n }\r\n\r\n function inputKeydownBind(evt) {\r\n if (evt.which === 27 && $scope.isOpen) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $scope.$apply(function() {\r\n $scope.isOpen = false;\r\n });\r\n $element[0].focus();\r\n } else if (evt.which === 40 && !$scope.isOpen) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $scope.$apply(function() {\r\n $scope.isOpen = true;\r\n });\r\n }\r\n }\r\n\r\n function positionPopup() {\r\n if ($scope.isOpen) {\r\n var dpElement = angular.element($popup[0].querySelector('.uib-datepicker-popup'));\r\n var placement = $attrs.popupPlacement ? $attrs.popupPlacement : datepickerPopupConfig.placement;\r\n var position = $position.positionElements($element, dpElement, placement, appendToBody);\r\n dpElement.css({top: position.top + 'px', left: position.left + 'px'});\r\n if (dpElement.hasClass('uib-position-measure')) {\r\n dpElement.removeClass('uib-position-measure');\r\n }\r\n }\r\n }\r\n\r\n function extractOptions(ngModelCtrl) {\r\n var ngModelOptions;\r\n\r\n if (angular.version.minor < 6) { // in angular < 1.6 $options could be missing\r\n // guarantee a value\r\n ngModelOptions = angular.isObject(ngModelCtrl.$options) ?\r\n ngModelCtrl.$options :\r\n {\r\n timezone: null\r\n };\r\n\r\n // mimic 1.6+ api\r\n ngModelOptions.getOption = function (key) {\r\n return ngModelOptions[key];\r\n };\r\n } else { // in angular >=1.6 $options is always present\r\n ngModelOptions = ngModelCtrl.$options;\r\n }\r\n\r\n return ngModelOptions;\r\n }\r\n\r\n $scope.$on('uib:datepicker.mode', function() {\r\n $timeout(positionPopup, 0, false);\r\n });\r\n}])\r\n\r\n.directive('uibDatepickerPopup', function() {\r\n return {\r\n require: ['ngModel', 'uibDatepickerPopup'],\r\n controller: 'UibDatepickerPopupController',\r\n scope: {\r\n datepickerOptions: '=?',\r\n isOpen: '=?',\r\n currentText: '@',\r\n clearText: '@',\r\n closeText: '@'\r\n },\r\n link: function(scope, element, attrs, ctrls) {\r\n var ngModel = ctrls[0],\r\n ctrl = ctrls[1];\r\n\r\n ctrl.init(ngModel);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDatepickerPopupWrap', function() {\r\n return {\r\n restrict: 'A',\r\n transclude: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepickerPopup/popup.html';\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.debounce', [])\r\n/**\r\n * A helper, internal service that debounces a function\r\n */\r\n .factory('$$debounce', ['$timeout', function($timeout) {\r\n return function(callback, debounceTime) {\r\n var timeoutPromise;\r\n\r\n return function() {\r\n var self = this;\r\n var args = Array.prototype.slice.call(arguments);\r\n if (timeoutPromise) {\r\n $timeout.cancel(timeoutPromise);\r\n }\r\n\r\n timeoutPromise = $timeout(function() {\r\n callback.apply(self, args);\r\n }, debounceTime);\r\n };\r\n };\r\n }]);\r\n\r\nangular.module('ui.bootstrap.multiMap', [])\r\n/**\r\n * A helper, internal data structure that stores all references attached to key\r\n */\r\n .factory('$$multiMap', function() {\r\n return {\r\n createNew: function() {\r\n var map = {};\r\n\r\n return {\r\n entries: function() {\r\n return Object.keys(map).map(function(key) {\r\n return {\r\n key: key,\r\n value: map[key]\r\n };\r\n });\r\n },\r\n get: function(key) {\r\n return map[key];\r\n },\r\n hasKey: function(key) {\r\n return !!map[key];\r\n },\r\n keys: function() {\r\n return Object.keys(map);\r\n },\r\n put: function(key, value) {\r\n if (!map[key]) {\r\n map[key] = [];\r\n }\r\n\r\n map[key].push(value);\r\n },\r\n remove: function(key, value) {\r\n var values = map[key];\r\n\r\n if (!values) {\r\n return;\r\n }\r\n\r\n var idx = values.indexOf(value);\r\n\r\n if (idx !== -1) {\r\n values.splice(idx, 1);\r\n }\r\n\r\n if (!values.length) {\r\n delete map[key];\r\n }\r\n }\r\n };\r\n }\r\n };\r\n });\r\n\r\nangular.module('ui.bootstrap.dropdown', ['ui.bootstrap.multiMap', 'ui.bootstrap.position'])\r\n\r\n.constant('uibDropdownConfig', {\r\n appendToOpenClass: 'uib-dropdown-open',\r\n openClass: 'show'\r\n})\r\n\r\n.service('uibDropdownService', ['$document', '$rootScope', '$$multiMap', function($document, $rootScope, $$multiMap) {\r\n var openScope = null;\r\n var openedContainers = $$multiMap.createNew();\r\n\r\n this.isOnlyOpen = function(dropdownScope, appendTo) {\r\n var openedDropdowns = openedContainers.get(appendTo);\r\n if (openedDropdowns) {\r\n var openDropdown = openedDropdowns.reduce(function(toClose, dropdown) {\r\n if (dropdown.scope === dropdownScope) {\r\n return dropdown;\r\n }\r\n\r\n return toClose;\r\n }, {});\r\n if (openDropdown) {\r\n return openedDropdowns.length === 1;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n this.open = function(dropdownScope, element, appendTo) {\r\n if (!openScope) {\r\n $document.on('click', closeDropdown);\r\n }\r\n\r\n if (openScope && openScope !== dropdownScope) {\r\n openScope.isOpen = false;\r\n }\r\n\r\n openScope = dropdownScope;\r\n\r\n if (!appendTo) {\r\n return;\r\n }\r\n\r\n var openedDropdowns = openedContainers.get(appendTo);\r\n if (openedDropdowns) {\r\n var openedScopes = openedDropdowns.map(function(dropdown) {\r\n return dropdown.scope;\r\n });\r\n if (openedScopes.indexOf(dropdownScope) === -1) {\r\n openedContainers.put(appendTo, {\r\n scope: dropdownScope\r\n });\r\n }\r\n } else {\r\n openedContainers.put(appendTo, {\r\n scope: dropdownScope\r\n });\r\n }\r\n };\r\n\r\n this.close = function(dropdownScope, element, appendTo) {\r\n if (openScope === dropdownScope) {\r\n $document.off('click', closeDropdown);\r\n $document.off('keydown', this.keybindFilter);\r\n openScope = null;\r\n }\r\n\r\n if (!appendTo) {\r\n return;\r\n }\r\n\r\n var openedDropdowns = openedContainers.get(appendTo);\r\n if (openedDropdowns) {\r\n var dropdownToClose = openedDropdowns.reduce(function(toClose, dropdown) {\r\n if (dropdown.scope === dropdownScope) {\r\n return dropdown;\r\n }\r\n\r\n return toClose;\r\n }, {});\r\n if (dropdownToClose) {\r\n openedContainers.remove(appendTo, dropdownToClose);\r\n }\r\n }\r\n };\r\n\r\n var closeDropdown = function(evt) {\r\n // This method may still be called during the same mouse event that\r\n // unbound this event handler. So check openScope before proceeding.\r\n if (!openScope || !openScope.isOpen) { return; }\r\n\r\n if (evt && openScope.getAutoClose() === 'disabled') { return; }\r\n\r\n if (evt && evt.which === 3) { return; }\r\n\r\n var toggleElement = openScope.getToggleElement();\r\n if (evt && toggleElement && toggleElement[0].contains(evt.target)) {\r\n return;\r\n }\r\n\r\n var dropdownElement = openScope.getDropdownElement();\r\n if (evt && openScope.getAutoClose() === 'outsideClick' &&\r\n dropdownElement && dropdownElement[0].contains(evt.target)) {\r\n return;\r\n }\r\n\r\n openScope.isOpen = false;\r\n\r\n if (!$rootScope.$$phase) {\r\n openScope.$apply();\r\n }\r\n };\r\n\r\n this.keybindFilter = function(evt) {\r\n if (!openScope) {\r\n // see this.close as ESC could have been pressed which kills the scope so we can not proceed\r\n return;\r\n }\r\n\r\n var dropdownElement = openScope.getDropdownElement();\r\n var toggleElement = openScope.getToggleElement();\r\n var dropdownElementTargeted = dropdownElement && dropdownElement[0].contains(evt.target);\r\n var toggleElementTargeted = toggleElement && toggleElement[0].contains(evt.target);\r\n if (evt.which === 27) {\r\n evt.stopPropagation();\r\n openScope.focusToggleElement();\r\n closeDropdown();\r\n } else if (openScope.isKeynavEnabled() && [38, 40].indexOf(evt.which) !== -1 && openScope.isOpen && (dropdownElementTargeted || toggleElementTargeted)) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n openScope.focusDropdownEntry(evt.which);\r\n }\r\n };\r\n}])\r\n\r\n.controller('UibDropdownController', ['$scope', '$element', '$attrs', '$parse', 'uibDropdownConfig', 'uibDropdownService', '$animate', '$uibPosition', '$document', '$compile', '$templateRequest', function($scope, $element, $attrs, $parse, dropdownConfig, uibDropdownService, $animate, $position, $document, $compile, $templateRequest) {\r\n var self = this,\r\n scope = $scope.$new(), // create a child scope so we are not polluting original one\r\n templateScope,\r\n appendToOpenClass = dropdownConfig.appendToOpenClass,\r\n openClass = dropdownConfig.openClass,\r\n getIsOpen,\r\n setIsOpen = angular.noop,\r\n toggleInvoker = $attrs.onToggle ? $parse($attrs.onToggle) : angular.noop,\r\n keynavEnabled = false,\r\n selectedOption = null,\r\n body = $document.find('body');\r\n\r\n $element.addClass('dropdown');\r\n\r\n this.init = function() {\r\n if ($attrs.isOpen) {\r\n getIsOpen = $parse($attrs.isOpen);\r\n setIsOpen = getIsOpen.assign;\r\n\r\n $scope.$watch(getIsOpen, function(value) {\r\n scope.isOpen = !!value;\r\n });\r\n }\r\n\r\n keynavEnabled = angular.isDefined($attrs.keyboardNav);\r\n };\r\n\r\n this.toggle = function(open) {\r\n scope.isOpen = arguments.length ? !!open : !scope.isOpen;\r\n if (angular.isFunction(setIsOpen)) {\r\n setIsOpen(scope, scope.isOpen);\r\n }\r\n\r\n return scope.isOpen;\r\n };\r\n\r\n // Allow other directives to watch status\r\n this.isOpen = function() {\r\n return scope.isOpen;\r\n };\r\n\r\n scope.getToggleElement = function() {\r\n return self.toggleElement;\r\n };\r\n\r\n scope.getAutoClose = function() {\r\n return $attrs.autoClose || 'always'; //or 'outsideClick' or 'disabled'\r\n };\r\n\r\n scope.getElement = function() {\r\n return $element;\r\n };\r\n\r\n scope.isKeynavEnabled = function() {\r\n return keynavEnabled;\r\n };\r\n\r\n scope.focusDropdownEntry = function(keyCode) {\r\n var elems = self.dropdownMenu ? //If append to body is used.\r\n angular.element(self.dropdownMenu).find('.dropdown-item') :\r\n $element.find('div').eq(0).find('a.');\r\n\r\n switch (keyCode) {\r\n case 40: {\r\n if (!angular.isNumber(self.selectedOption)) {\r\n self.selectedOption = 0;\r\n } else {\r\n self.selectedOption = self.selectedOption === elems.length - 1 ?\r\n self.selectedOption :\r\n self.selectedOption + 1;\r\n }\r\n break;\r\n }\r\n case 38: {\r\n if (!angular.isNumber(self.selectedOption)) {\r\n self.selectedOption = elems.length - 1;\r\n } else {\r\n self.selectedOption = self.selectedOption === 0 ?\r\n 0 : self.selectedOption - 1;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n elems[self.selectedOption].focus();\r\n };\r\n\r\n scope.getDropdownElement = function() {\r\n return self.dropdownMenu;\r\n };\r\n\r\n scope.focusToggleElement = function() {\r\n if (self.toggleElement) {\r\n self.toggleElement[0].focus();\r\n }\r\n };\r\n\r\n function removeDropdownMenu() {\r\n $element.append(self.dropdownMenu);\r\n }\r\n\r\n scope.$watch('isOpen', function(isOpen, wasOpen) {\r\n var appendTo = null,\r\n appendToBody = false;\r\n\r\n if (angular.isDefined($attrs.dropdownAppendTo)) {\r\n var appendToEl = $parse($attrs.dropdownAppendTo)(scope);\r\n if (appendToEl) {\r\n appendTo = angular.element(appendToEl);\r\n }\r\n }\r\n\r\n if (angular.isDefined($attrs.dropdownAppendToBody)) {\r\n var appendToBodyValue = $parse($attrs.dropdownAppendToBody)(scope);\r\n if (appendToBodyValue !== false) {\r\n appendToBody = true;\r\n }\r\n }\r\n\r\n if (appendToBody && !appendTo) {\r\n appendTo = body;\r\n }\r\n\r\n if (appendTo && self.dropdownMenu) {\r\n if (isOpen) {\r\n appendTo.append(self.dropdownMenu);\r\n $element.on('$destroy', removeDropdownMenu);\r\n } else {\r\n $element.off('$destroy', removeDropdownMenu);\r\n removeDropdownMenu();\r\n }\r\n }\r\n\r\n if (appendTo && self.dropdownMenu) {\r\n var pos = $position.positionElements($element, self.dropdownMenu, 'bottom-left', true),\r\n css,\r\n rightalign,\r\n scrollbarPadding,\r\n scrollbarWidth = 0;\r\n\r\n css = {\r\n top: pos.top + 'px',\r\n display: isOpen ? 'block' : 'none'\r\n };\r\n\r\n rightalign = self.dropdownMenu.hasClass('dropdown-menu-right');\r\n if (!rightalign) {\r\n css.left = pos.left + 'px';\r\n css.right = 'auto';\r\n } else {\r\n css.left = 'auto';\r\n scrollbarPadding = $position.scrollbarPadding(appendTo);\r\n\r\n if (scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\r\n scrollbarWidth = scrollbarPadding.scrollbarWidth;\r\n }\r\n\r\n css.right = window.innerWidth - scrollbarWidth -\r\n (pos.left + $element.prop('offsetWidth')) + 'px';\r\n }\r\n\r\n // Need to adjust our positioning to be relative to the appendTo container\r\n // if it's not the body element\r\n if (!appendToBody) {\r\n var appendOffset = $position.offset(appendTo);\r\n\r\n css.top = pos.top - appendOffset.top + 'px';\r\n\r\n if (!rightalign) {\r\n css.left = pos.left - appendOffset.left + 'px';\r\n } else {\r\n css.right = window.innerWidth -\r\n (pos.left - appendOffset.left + $element.prop('offsetWidth')) + 'px';\r\n }\r\n }\r\n\r\n self.dropdownMenu.css(css);\r\n }\r\n\r\n // find openContainer by uib-dropdown-menu directive\r\n var openContainer = appendTo ? appendTo : angular.element($element[0].querySelector(\"[uib-dropdown-menu]\"));\r\n var dropdownOpenClass = appendTo ? appendToOpenClass : openClass;\r\n var hasOpenClass = openContainer.hasClass(dropdownOpenClass);\r\n var isOnlyOpen = uibDropdownService.isOnlyOpen($scope, appendTo);\r\n\r\n if (hasOpenClass === !isOpen) {\r\n var toggleClass;\r\n if (appendTo) {\r\n toggleClass = !isOnlyOpen ? 'addClass' : 'removeClass';\r\n } else {\r\n toggleClass = isOpen ? 'addClass' : 'removeClass';\r\n }\r\n\r\n // original Bootstrap 4 dropdown sets openClass on both dropdownMenu and element\r\n $animate[toggleClass]($element, dropdownOpenClass);\r\n\r\n $animate[toggleClass](openContainer, dropdownOpenClass).then(function() {\r\n if (angular.isDefined(isOpen) && isOpen !== wasOpen) {\r\n toggleInvoker($scope, { open: !!isOpen });\r\n }\r\n });\r\n }\r\n\r\n if (isOpen) {\r\n if (self.dropdownMenuTemplateUrl) {\r\n $templateRequest(self.dropdownMenuTemplateUrl).then(function(tplContent) {\r\n templateScope = scope.$new();\r\n $compile(tplContent.trim())(templateScope, function(dropdownElement) {\r\n var newEl = dropdownElement;\r\n self.dropdownMenu.replaceWith(newEl);\r\n self.dropdownMenu = newEl;\r\n $animate.addClass(self.dropdownMenu, dropdownOpenClass);\r\n $document.on('keydown', uibDropdownService.keybindFilter);\r\n });\r\n });\r\n } else {\r\n $document.on('keydown', uibDropdownService.keybindFilter);\r\n }\r\n\r\n scope.focusToggleElement();\r\n uibDropdownService.open(scope, $element, appendTo);\r\n } else {\r\n uibDropdownService.close(scope, $element, appendTo);\r\n if (self.dropdownMenuTemplateUrl) {\r\n if (templateScope) {\r\n templateScope.$destroy();\r\n }\r\n var newEl = angular.element('<div class=\"dropdown-menu\"></div>');\r\n self.dropdownMenu.replaceWith(newEl);\r\n self.dropdownMenu = newEl;\r\n }\r\n\r\n self.selectedOption = null;\r\n }\r\n\r\n if (angular.isFunction(setIsOpen)) {\r\n setIsOpen($scope, isOpen);\r\n }\r\n });\r\n}])\r\n\r\n.directive('uibDropdown', function() {\r\n return {\r\n controller: 'UibDropdownController',\r\n link: function(scope, element, attrs, dropdownCtrl) {\r\n dropdownCtrl.init();\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDropdownMenu', function() {\r\n return {\r\n restrict: 'A',\r\n require: '?^uibDropdown',\r\n link: function(scope, element, attrs, dropdownCtrl) {\r\n if (!dropdownCtrl || angular.isDefined(attrs.dropdownNested)) {\r\n return;\r\n }\r\n\r\n element.addClass('dropdown-menu');\r\n\r\n var tplUrl = attrs.templateUrl;\r\n if (tplUrl) {\r\n dropdownCtrl.dropdownMenuTemplateUrl = tplUrl;\r\n }\r\n\r\n if (!dropdownCtrl.dropdownMenu) {\r\n dropdownCtrl.dropdownMenu = element;\r\n }\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDropdownToggle', function() {\r\n return {\r\n require: '?^uibDropdown',\r\n link: function(scope, element, attrs, dropdownCtrl) {\r\n if (!dropdownCtrl) {\r\n return;\r\n }\r\n\r\n element.addClass('dropdown-toggle');\r\n\r\n dropdownCtrl.toggleElement = element;\r\n\r\n var toggleDropdown = function(event) {\r\n event.preventDefault();\r\n\r\n if (!element.hasClass('disabled') && !attrs.disabled) {\r\n scope.$apply(function() {\r\n dropdownCtrl.toggle();\r\n });\r\n }\r\n };\r\n\r\n element.on('click', toggleDropdown);\r\n\r\n var openDropdown = function(event) {\r\n if (event.which === 40 && !dropdownCtrl.isOpen()) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (!element.hasClass('disabled') && !attrs.disabled) {\r\n scope.$apply(function() {\r\n dropdownCtrl.toggle();\r\n });\r\n }\r\n }\r\n };\r\n\r\n element.on('keydown', openDropdown);\r\n\r\n // WAI-ARIA\r\n element.attr({ 'aria-haspopup': true, 'aria-expanded': false });\r\n scope.$watch(dropdownCtrl.isOpen, function(isOpen) {\r\n element.attr('aria-expanded', !!isOpen);\r\n });\r\n\r\n scope.$on('$destroy', function() {\r\n element.off('click', toggleDropdown);\r\n element.off('keydown', openDropdown);\r\n });\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.stackedMap', [])\r\n/**\r\n * A helper, internal data structure that acts as a map but also allows getting / removing\r\n * elements in the LIFO order\r\n */\r\n .factory('$$stackedMap', function() {\r\n return {\r\n createNew: function() {\r\n var stack = [];\r\n\r\n return {\r\n add: function(key, value) {\r\n stack.push({\r\n key: key,\r\n value: value\r\n });\r\n },\r\n get: function(key) {\r\n for (var i = 0; i < stack.length; i++) {\r\n if (key === stack[i].key) {\r\n return stack[i];\r\n }\r\n }\r\n },\r\n keys: function() {\r\n var keys = [];\r\n for (var i = 0; i < stack.length; i++) {\r\n keys.push(stack[i].key);\r\n }\r\n return keys;\r\n },\r\n top: function() {\r\n return stack[stack.length - 1];\r\n },\r\n remove: function(key) {\r\n var idx = -1;\r\n for (var i = 0; i < stack.length; i++) {\r\n if (key === stack[i].key) {\r\n idx = i;\r\n break;\r\n }\r\n }\r\n return stack.splice(idx, 1)[0];\r\n },\r\n removeTop: function() {\r\n return stack.pop();\r\n },\r\n length: function() {\r\n return stack.length;\r\n }\r\n };\r\n }\r\n };\r\n });\r\nangular.module('ui.bootstrap.modal', ['ui.bootstrap.multiMap', 'ui.bootstrap.stackedMap', 'ui.bootstrap.position'])\r\n/**\r\n * Pluggable resolve mechanism for the modal resolve resolution\r\n * Supports UI Router's $resolve service\r\n */\r\n .provider('$uibResolve', function() {\r\n var resolve = this;\r\n this.resolver = null;\r\n\r\n this.setResolver = function(resolver) {\r\n this.resolver = resolver;\r\n };\r\n\r\n this.$get = ['$injector', '$q', function($injector, $q) {\r\n var resolver = resolve.resolver ? $injector.get(resolve.resolver) : null;\r\n return {\r\n resolve: function(invocables, locals, parent, self) {\r\n if (resolver) {\r\n return resolver.resolve(invocables, locals, parent, self);\r\n }\r\n\r\n var promises = [];\r\n\r\n angular.forEach(invocables, function(value) {\r\n if (angular.isFunction(value) || angular.isArray(value)) {\r\n promises.push($q.resolve($injector.invoke(value)));\r\n } else if (angular.isString(value)) {\r\n promises.push($q.resolve($injector.get(value)));\r\n } else {\r\n promises.push($q.resolve(value));\r\n }\r\n });\r\n\r\n return $q.all(promises).then(function(resolves) {\r\n var resolveObj = {};\r\n var resolveIter = 0;\r\n angular.forEach(invocables, function(value, key) {\r\n resolveObj[key] = resolves[resolveIter++];\r\n });\r\n\r\n return resolveObj;\r\n });\r\n }\r\n };\r\n }];\r\n })\r\n\r\n/**\r\n * A helper directive for the $modal service. It creates a backdrop element.\r\n */\r\n .directive('uibModalBackdrop', ['$uibModalStack', '$q', '$animate',\r\n function($modalStack, $q, $animate) {\r\n return {\r\n restrict: 'A',\r\n compile: function(tElement, tAttrs) {\r\n tElement.addClass(tAttrs.backdropClass);\r\n return linkFn;\r\n }\r\n };\r\n\r\n function linkFn(scope, element, attrs) {\r\n\r\n // Deferred object that will be resolved when this modal is rendered.\r\n var modalRenderDeferObj = $q.defer();\r\n // Resolve render promise post-digest\r\n scope.$$postDigest(function() {\r\n modalRenderDeferObj.resolve();\r\n });\r\n\r\n modalRenderDeferObj.promise.then(function() {\r\n if (attrs.modalInClass) {\r\n $animate.addClass(element, attrs.modalInClass);\r\n }\r\n });\r\n\r\n if (attrs.modalInClass) {\r\n scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {\r\n var done = setIsAsync();\r\n if (scope.modalOptions.animation) {\r\n $animate.removeClass(element, attrs.modalInClass).then(done);\r\n } else {\r\n done();\r\n }\r\n });\r\n }\r\n\r\n\r\n }\r\n }])\r\n\r\n .directive('uibModalWindow', ['$uibModalStack', '$q', '$animateCss', '$document',\r\n function($modalStack, $q, $animateCss, $document) {\r\n return {\r\n scope: {\r\n index: '@'\r\n },\r\n restrict: 'A',\r\n transclude: true,\r\n templateUrl: function(tElement, tAttrs) {\r\n return tAttrs.templateUrl || 'uib/template/modal/window.html';\r\n },\r\n link: function(scope, element, attrs) {\r\n element.addClass(attrs.windowTopClass || '');\r\n scope.size = attrs.size;\r\n\r\n scope.close = function(evt) {\r\n var modal = $modalStack.getTop();\r\n if (modal && modal.value.backdrop &&\r\n modal.value.backdrop !== 'static' &&\r\n evt.target === evt.currentTarget) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $modalStack.dismiss(modal.key, 'backdrop click');\r\n }\r\n };\r\n\r\n // moved from template to fix issue #2280\r\n element.on('click', scope.close);\r\n\r\n // This property is only added to the scope for the purpose of detecting when this directive is rendered.\r\n // We can detect that by using this property in the template associated with this directive and then use\r\n // {@link Attribute#$observe} on it. For more details please see {@link TableColumnResize}.\r\n scope.$isRendered = true;\r\n\r\n // Deferred object that will be resolved when this modal is rendered.\r\n var modalRenderDeferObj = $q.defer();\r\n // Resolve render promise post-digest\r\n scope.$$postDigest(function() {\r\n modalRenderDeferObj.resolve();\r\n });\r\n\r\n modalRenderDeferObj.promise.then(function() {\r\n var animationPromise = null;\r\n\r\n if (attrs.modalInClass) {\r\n animationPromise = $animateCss(element, {\r\n addClass: attrs.modalInClass\r\n }).start();\r\n\r\n scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {\r\n var done = setIsAsync();\r\n $animateCss(element, {\r\n removeClass: attrs.modalInClass\r\n }).start().then(done);\r\n });\r\n }\r\n\r\n\r\n $q.when(animationPromise).then(function() {\r\n // Notify {@link $modalStack} that modal is rendered.\r\n var modal = $modalStack.getTop();\r\n if (modal) {\r\n $modalStack.modalRendered(modal.key);\r\n }\r\n\r\n /**\r\n * If something within the freshly-opened modal already has focus (perhaps via a\r\n * directive that causes focus) then there's no need to try to focus anything.\r\n */\r\n if (!($document[0].activeElement && element[0].contains($document[0].activeElement))) {\r\n var inputWithAutofocus = element[0].querySelector('[autofocus]');\r\n /**\r\n * Auto-focusing of a freshly-opened modal element causes any child elements\r\n * with the autofocus attribute to lose focus. This is an issue on touch\r\n * based devices which will show and then hide the onscreen keyboard.\r\n * Attempts to refocus the autofocus element via JavaScript will not reopen\r\n * the onscreen keyboard. Fixed by updated the focusing logic to only autofocus\r\n * the modal element if the modal does not contain an autofocus element.\r\n */\r\n if (inputWithAutofocus) {\r\n inputWithAutofocus.focus();\r\n } else {\r\n element[0].focus();\r\n }\r\n }\r\n });\r\n });\r\n }\r\n };\r\n }])\r\n\r\n .directive('uibModalAnimationClass', function() {\r\n return {\r\n compile: function(tElement, tAttrs) {\r\n if (tAttrs.modalAnimation) {\r\n tElement.addClass(tAttrs.uibModalAnimationClass);\r\n }\r\n }\r\n };\r\n })\r\n\r\n .directive('uibModalTransclude', ['$animate', function($animate) {\r\n return {\r\n link: function(scope, element, attrs, controller, transclude) {\r\n transclude(scope.$parent, function(clone) {\r\n element.empty();\r\n $animate.enter(clone, element);\r\n });\r\n }\r\n };\r\n }])\r\n\r\n .factory('$uibModalStack', ['$animate', '$animateCss', '$document',\r\n '$compile', '$rootScope', '$q', '$$multiMap', '$$stackedMap', '$uibPosition',\r\n function($animate, $animateCss, $document, $compile, $rootScope, $q, $$multiMap, $$stackedMap, $uibPosition) {\r\n var OPENED_MODAL_CLASS = 'modal-open';\r\n\r\n var backdropDomEl, backdropScope;\r\n var openedWindows = $$stackedMap.createNew();\r\n var openedClasses = $$multiMap.createNew();\r\n var $modalStack = {\r\n NOW_CLOSING_EVENT: 'modal.stack.now-closing'\r\n };\r\n var topModalIndex = 0;\r\n var previousTopOpenedModal = null;\r\n var ARIA_HIDDEN_ATTRIBUTE_NAME = 'data-bootstrap-modal-aria-hidden-count';\r\n\r\n //Modal focus behavior\r\n var tabbableSelector = 'a[href], area[href], input:not([disabled]):not([tabindex=\\'-1\\']), ' +\r\n 'button:not([disabled]):not([tabindex=\\'-1\\']),select:not([disabled]):not([tabindex=\\'-1\\']), textarea:not([disabled]):not([tabindex=\\'-1\\']), ' +\r\n 'iframe, object, embed, *[tabindex]:not([tabindex=\\'-1\\']), *[contenteditable=true]';\r\n var scrollbarPadding;\r\n var SNAKE_CASE_REGEXP = /[A-Z]/g;\r\n\r\n // TODO: extract into common dependency with tooltip\r\n function snake_case(name) {\r\n var separator = '-';\r\n return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {\r\n return (pos ? separator : '') + letter.toLowerCase();\r\n });\r\n }\r\n\r\n function isVisible(element) {\r\n return !!(element.offsetWidth ||\r\n element.offsetHeight ||\r\n element.getClientRects().length);\r\n }\r\n\r\n function backdropIndex() {\r\n var topBackdropIndex = -1;\r\n var opened = openedWindows.keys();\r\n for (var i = 0; i < opened.length; i++) {\r\n if (openedWindows.get(opened[i]).value.backdrop) {\r\n topBackdropIndex = i;\r\n }\r\n }\r\n\r\n // If any backdrop exist, ensure that it's index is always\r\n // right below the top modal\r\n if (topBackdropIndex > -1 && topBackdropIndex < topModalIndex) {\r\n topBackdropIndex = topModalIndex;\r\n }\r\n return topBackdropIndex;\r\n }\r\n\r\n $rootScope.$watch(backdropIndex, function(newBackdropIndex) {\r\n if (backdropScope) {\r\n backdropScope.index = newBackdropIndex;\r\n }\r\n });\r\n\r\n function removeModalWindow(modalInstance, elementToReceiveFocus) {\r\n var modalWindow = openedWindows.get(modalInstance).value;\r\n var appendToElement = modalWindow.appendTo;\r\n\r\n //clean up the stack\r\n openedWindows.remove(modalInstance);\r\n previousTopOpenedModal = openedWindows.top();\r\n if (previousTopOpenedModal) {\r\n topModalIndex = parseInt(previousTopOpenedModal.value.modalDomEl.attr('index'), 10);\r\n }\r\n\r\n removeAfterAnimate(modalWindow.modalDomEl, modalWindow.modalScope, function() {\r\n var modalBodyClass = modalWindow.openedClass || OPENED_MODAL_CLASS;\r\n openedClasses.remove(modalBodyClass, modalInstance);\r\n var areAnyOpen = openedClasses.hasKey(modalBodyClass);\r\n appendToElement.toggleClass(modalBodyClass, areAnyOpen);\r\n if (!areAnyOpen && scrollbarPadding && scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\r\n if (scrollbarPadding.originalRight) {\r\n appendToElement.css({paddingRight: scrollbarPadding.originalRight + 'px'});\r\n } else {\r\n appendToElement.css({paddingRight: ''});\r\n }\r\n scrollbarPadding = null;\r\n }\r\n toggleTopWindowClass(true);\r\n }, modalWindow.closedDeferred);\r\n checkRemoveBackdrop();\r\n\r\n //move focus to specified element if available, or else to body\r\n if (elementToReceiveFocus && elementToReceiveFocus.focus) {\r\n elementToReceiveFocus.focus();\r\n } else if (appendToElement.focus) {\r\n appendToElement.focus();\r\n }\r\n }\r\n\r\n // Add or remove \"windowTopClass\" from the top window in the stack\r\n function toggleTopWindowClass(toggleSwitch) {\r\n var modalWindow;\r\n\r\n if (openedWindows.length() > 0) {\r\n modalWindow = openedWindows.top().value;\r\n modalWindow.modalDomEl.toggleClass(modalWindow.windowTopClass || '', toggleSwitch);\r\n }\r\n }\r\n\r\n function checkRemoveBackdrop() {\r\n //remove backdrop if no longer needed\r\n if (backdropDomEl && backdropIndex() === -1) {\r\n var backdropScopeRef = backdropScope;\r\n removeAfterAnimate(backdropDomEl, backdropScope, function() {\r\n backdropScopeRef = null;\r\n });\r\n backdropDomEl = undefined;\r\n backdropScope = undefined;\r\n }\r\n }\r\n\r\n function removeAfterAnimate(domEl, scope, done, closedDeferred) {\r\n var asyncDeferred;\r\n var asyncPromise = null;\r\n var setIsAsync = function() {\r\n if (!asyncDeferred) {\r\n asyncDeferred = $q.defer();\r\n asyncPromise = asyncDeferred.promise;\r\n }\r\n\r\n return function asyncDone() {\r\n asyncDeferred.resolve();\r\n };\r\n };\r\n scope.$broadcast($modalStack.NOW_CLOSING_EVENT, setIsAsync);\r\n\r\n // Note that it's intentional that asyncPromise might be null.\r\n // That's when setIsAsync has not been called during the\r\n // NOW_CLOSING_EVENT broadcast.\r\n return $q.when(asyncPromise).then(afterAnimating);\r\n\r\n function afterAnimating() {\r\n if (afterAnimating.done) {\r\n return;\r\n }\r\n afterAnimating.done = true;\r\n\r\n $animate.leave(domEl).then(function() {\r\n if (done) {\r\n done();\r\n }\r\n\r\n domEl.remove();\r\n if (closedDeferred) {\r\n closedDeferred.resolve();\r\n }\r\n });\r\n\r\n scope.$destroy();\r\n }\r\n }\r\n\r\n $document.on('keydown', keydownListener);\r\n\r\n $rootScope.$on('$destroy', function() {\r\n $document.off('keydown', keydownListener);\r\n });\r\n\r\n function keydownListener(evt) {\r\n if (evt.isDefaultPrevented()) {\r\n return evt;\r\n }\r\n\r\n var modal = openedWindows.top();\r\n if (modal) {\r\n switch (evt.which) {\r\n case 27: {\r\n if (modal.value.keyboard) {\r\n evt.preventDefault();\r\n $rootScope.$apply(function() {\r\n $modalStack.dismiss(modal.key, 'escape key press');\r\n });\r\n }\r\n break;\r\n }\r\n case 9: {\r\n var list = $modalStack.loadFocusElementList(modal);\r\n var focusChanged = false;\r\n if (evt.shiftKey) {\r\n if ($modalStack.isFocusInFirstItem(evt, list) || $modalStack.isModalFocused(evt, modal)) {\r\n focusChanged = $modalStack.focusLastFocusableElement(list);\r\n }\r\n } else {\r\n if ($modalStack.isFocusInLastItem(evt, list)) {\r\n focusChanged = $modalStack.focusFirstFocusableElement(list);\r\n }\r\n }\r\n\r\n if (focusChanged) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n $modalStack.open = function(modalInstance, modal) {\r\n var modalOpener = $document[0].activeElement,\r\n modalBodyClass = modal.openedClass || OPENED_MODAL_CLASS;\r\n\r\n toggleTopWindowClass(false);\r\n\r\n // Store the current top first, to determine what index we ought to use\r\n // for the current top modal\r\n previousTopOpenedModal = openedWindows.top();\r\n\r\n openedWindows.add(modalInstance, {\r\n deferred: modal.deferred,\r\n renderDeferred: modal.renderDeferred,\r\n closedDeferred: modal.closedDeferred,\r\n modalScope: modal.scope,\r\n backdrop: modal.backdrop,\r\n keyboard: modal.keyboard,\r\n openedClass: modal.openedClass,\r\n windowTopClass: modal.windowTopClass,\r\n animation: modal.animation,\r\n appendTo: modal.appendTo\r\n });\r\n\r\n openedClasses.put(modalBodyClass, modalInstance);\r\n\r\n var appendToElement = modal.appendTo,\r\n currBackdropIndex = backdropIndex();\r\n\r\n if (currBackdropIndex >= 0 && !backdropDomEl) {\r\n backdropScope = $rootScope.$new(true);\r\n backdropScope.modalOptions = modal;\r\n backdropScope.index = currBackdropIndex;\r\n backdropDomEl = angular.element('<div uib-modal-backdrop=\"modal-backdrop\"></div>');\r\n backdropDomEl.attr({\r\n 'class': 'modal-backdrop',\r\n 'ng-style': '{\\'z-index\\': 1040 + (index && 1 || 0) + index*10}',\r\n 'uib-modal-animation-class': 'fade',\r\n 'modal-in-class': 'show'\r\n });\r\n if (modal.backdropClass) {\r\n backdropDomEl.addClass(modal.backdropClass);\r\n }\r\n\r\n if (modal.animation) {\r\n backdropDomEl.attr('modal-animation', 'true');\r\n }\r\n\r\n $animate.enter($compile(backdropDomEl)(backdropScope), appendToElement);\r\n scrollbarPadding = $uibPosition.scrollbarPadding(appendToElement);\r\n if (scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\r\n appendToElement.css({paddingRight: scrollbarPadding.right + 'px'});\r\n }\r\n }\r\n\r\n var content;\r\n if (modal.component) {\r\n content = document.createElement(snake_case(modal.component.name));\r\n content = angular.element(content);\r\n content.attr({\r\n resolve: '$resolve',\r\n 'modal-instance': '$uibModalInstance',\r\n close: '$close($value)',\r\n dismiss: '$dismiss($value)'\r\n });\r\n } else {\r\n content = modal.content;\r\n }\r\n\r\n // Set the top modal index based on the index of the previous top modal\r\n topModalIndex = previousTopOpenedModal ? parseInt(previousTopOpenedModal.value.modalDomEl.attr('index'), 10) + 1 : 0;\r\n var angularDomEl = angular.element('<div uib-modal-window=\"modal-window\"></div>');\r\n angularDomEl.attr({\r\n 'class': 'modal',\r\n 'template-url': modal.windowTemplateUrl,\r\n 'window-top-class': modal.windowTopClass,\r\n 'role': 'dialog',\r\n 'aria-labelledby': modal.ariaLabelledBy,\r\n 'aria-describedby': modal.ariaDescribedBy,\r\n 'size': modal.size,\r\n 'index': topModalIndex,\r\n 'animate': 'animate',\r\n 'ng-style': '{\\'z-index\\': 1050 + $$topModalIndex*10, display: \\'block\\'}',\r\n 'tabindex': -1,\r\n 'uib-modal-animation-class': 'fade',\r\n 'modal-in-class': 'show'\r\n }).append(content);\r\n if (modal.windowClass) {\r\n angularDomEl.addClass(modal.windowClass);\r\n }\r\n\r\n if (modal.animation) {\r\n angularDomEl.attr('modal-animation', 'true');\r\n }\r\n\r\n appendToElement.addClass(modalBodyClass);\r\n if (modal.scope) {\r\n // we need to explicitly add the modal index to the modal scope\r\n // because it is needed by ngStyle to compute the zIndex property.\r\n modal.scope.$$topModalIndex = topModalIndex;\r\n }\r\n $animate.enter($compile(angularDomEl)(modal.scope), appendToElement);\r\n\r\n openedWindows.top().value.modalDomEl = angularDomEl;\r\n openedWindows.top().value.modalOpener = modalOpener;\r\n\r\n applyAriaHidden(angularDomEl);\r\n\r\n function applyAriaHidden(el) {\r\n if (!el || el[0].tagName === 'BODY') {\r\n return;\r\n }\r\n\r\n getSiblings(el).forEach(function(sibling) {\r\n var elemIsAlreadyHidden = sibling.getAttribute('aria-hidden') === 'true',\r\n ariaHiddenCount = parseInt(sibling.getAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME), 10);\r\n\r\n if (!ariaHiddenCount) {\r\n ariaHiddenCount = elemIsAlreadyHidden ? 1 : 0;\r\n }\r\n\r\n sibling.setAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME, ariaHiddenCount + 1);\r\n sibling.setAttribute('aria-hidden', 'true');\r\n });\r\n\r\n return applyAriaHidden(el.parent());\r\n\r\n function getSiblings(el) {\r\n var children = el.parent() ? el.parent().children() : [];\r\n\r\n return Array.prototype.filter.call(children, function(child) {\r\n return child !== el[0];\r\n });\r\n }\r\n }\r\n };\r\n\r\n function broadcastClosing(modalWindow, resultOrReason, closing) {\r\n return !modalWindow.value.modalScope.$broadcast('modal.closing', resultOrReason, closing).defaultPrevented;\r\n }\r\n\r\n function unhideBackgroundElements() {\r\n Array.prototype.forEach.call(\r\n document.querySelectorAll('[' + ARIA_HIDDEN_ATTRIBUTE_NAME + ']'),\r\n function(hiddenEl) {\r\n var ariaHiddenCount = parseInt(hiddenEl.getAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME), 10),\r\n newHiddenCount = ariaHiddenCount - 1;\r\n hiddenEl.setAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME, newHiddenCount);\r\n\r\n if (!newHiddenCount) {\r\n hiddenEl.removeAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME);\r\n hiddenEl.removeAttribute('aria-hidden');\r\n }\r\n }\r\n );\r\n }\r\n\r\n $modalStack.close = function(modalInstance, result) {\r\n var modalWindow = openedWindows.get(modalInstance);\r\n unhideBackgroundElements();\r\n if (modalWindow && broadcastClosing(modalWindow, result, true)) {\r\n modalWindow.value.modalScope.$$uibDestructionScheduled = true;\r\n modalWindow.value.deferred.resolve(result);\r\n removeModalWindow(modalInstance, modalWindow.value.modalOpener);\r\n return true;\r\n }\r\n\r\n return !modalWindow;\r\n };\r\n\r\n $modalStack.dismiss = function(modalInstance, reason) {\r\n var modalWindow = openedWindows.get(modalInstance);\r\n unhideBackgroundElements();\r\n if (modalWindow && broadcastClosing(modalWindow, reason, false)) {\r\n modalWindow.value.modalScope.$$uibDestructionScheduled = true;\r\n modalWindow.value.deferred.reject(reason);\r\n removeModalWindow(modalInstance, modalWindow.value.modalOpener);\r\n return true;\r\n }\r\n return !modalWindow;\r\n };\r\n\r\n $modalStack.dismissAll = function(reason) {\r\n var topModal = this.getTop();\r\n while (topModal && this.dismiss(topModal.key, reason)) {\r\n topModal = this.getTop();\r\n }\r\n };\r\n\r\n $modalStack.getTop = function() {\r\n return openedWindows.top();\r\n };\r\n\r\n $modalStack.modalRendered = function(modalInstance) {\r\n var modalWindow = openedWindows.get(modalInstance);\r\n if (modalWindow) {\r\n modalWindow.value.renderDeferred.resolve();\r\n }\r\n };\r\n\r\n $modalStack.focusFirstFocusableElement = function(list) {\r\n if (list.length > 0) {\r\n list[0].focus();\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.focusLastFocusableElement = function(list) {\r\n if (list.length > 0) {\r\n list[list.length - 1].focus();\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.isModalFocused = function(evt, modalWindow) {\r\n if (evt && modalWindow) {\r\n var modalDomEl = modalWindow.value.modalDomEl;\r\n if (modalDomEl && modalDomEl.length) {\r\n return (evt.target || evt.srcElement) === modalDomEl[0];\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.isFocusInFirstItem = function(evt, list) {\r\n if (list.length > 0) {\r\n return (evt.target || evt.srcElement) === list[0];\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.isFocusInLastItem = function(evt, list) {\r\n if (list.length > 0) {\r\n return (evt.target || evt.srcElement) === list[list.length - 1];\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.loadFocusElementList = function(modalWindow) {\r\n if (modalWindow) {\r\n var modalDomE1 = modalWindow.value.modalDomEl;\r\n if (modalDomE1 && modalDomE1.length) {\r\n var elements = modalDomE1[0].querySelectorAll(tabbableSelector);\r\n return elements ?\r\n Array.prototype.filter.call(elements, function(element) {\r\n return isVisible(element);\r\n }) : elements;\r\n }\r\n }\r\n };\r\n\r\n return $modalStack;\r\n }])\r\n\r\n .provider('$uibModal', function() {\r\n var $modalProvider = {\r\n options: {\r\n animation: true,\r\n backdrop: true, //can also be false or 'static'\r\n keyboard: true\r\n },\r\n $get: ['$rootScope', '$q', '$document', '$templateRequest', '$controller', '$uibResolve', '$uibModalStack',\r\n function ($rootScope, $q, $document, $templateRequest, $controller, $uibResolve, $modalStack) {\r\n var $modal = {};\r\n\r\n function getTemplatePromise(options) {\r\n return options.template ? $q.when(options.template) :\r\n $templateRequest(angular.isFunction(options.templateUrl) ?\r\n options.templateUrl() : options.templateUrl);\r\n }\r\n\r\n var promiseChain = null;\r\n $modal.getPromiseChain = function() {\r\n return promiseChain;\r\n };\r\n\r\n $modal.open = function(modalOptions) {\r\n var modalResultDeferred = $q.defer();\r\n var modalOpenedDeferred = $q.defer();\r\n var modalClosedDeferred = $q.defer();\r\n var modalRenderDeferred = $q.defer();\r\n\r\n //prepare an instance of a modal to be injected into controllers and returned to a caller\r\n var modalInstance = {\r\n result: modalResultDeferred.promise,\r\n opened: modalOpenedDeferred.promise,\r\n closed: modalClosedDeferred.promise,\r\n rendered: modalRenderDeferred.promise,\r\n close: function (result) {\r\n return $modalStack.close(modalInstance, result);\r\n },\r\n dismiss: function (reason) {\r\n return $modalStack.dismiss(modalInstance, reason);\r\n }\r\n };\r\n\r\n //merge and clean up options\r\n modalOptions = angular.extend({}, $modalProvider.options, modalOptions);\r\n modalOptions.resolve = modalOptions.resolve || {};\r\n modalOptions.appendTo = modalOptions.appendTo || $document.find('body').eq(0);\r\n\r\n if (!modalOptions.appendTo.length) {\r\n throw new Error('appendTo element not found. Make sure that the element passed is in DOM.');\r\n }\r\n\r\n //verify options\r\n if (!modalOptions.component && !modalOptions.template && !modalOptions.templateUrl) {\r\n throw new Error('One of component or template or templateUrl options is required.');\r\n }\r\n\r\n var templateAndResolvePromise;\r\n if (modalOptions.component) {\r\n templateAndResolvePromise = $q.when($uibResolve.resolve(modalOptions.resolve, {}, null, null));\r\n } else {\r\n templateAndResolvePromise =\r\n $q.all([getTemplatePromise(modalOptions), $uibResolve.resolve(modalOptions.resolve, {}, null, null)]);\r\n }\r\n\r\n function resolveWithTemplate() {\r\n return templateAndResolvePromise;\r\n }\r\n\r\n // Wait for the resolution of the existing promise chain.\r\n // Then switch to our own combined promise dependency (regardless of how the previous modal fared).\r\n // Then add to $modalStack and resolve opened.\r\n // Finally clean up the chain variable if no subsequent modal has overwritten it.\r\n var samePromise;\r\n samePromise = promiseChain = $q.all([promiseChain])\r\n .then(resolveWithTemplate, resolveWithTemplate)\r\n .then(function resolveSuccess(tplAndVars) {\r\n var providedScope = modalOptions.scope || $rootScope;\r\n\r\n var modalScope = providedScope.$new();\r\n modalScope.$close = modalInstance.close;\r\n modalScope.$dismiss = modalInstance.dismiss;\r\n\r\n modalScope.$on('$destroy', function() {\r\n if (!modalScope.$$uibDestructionScheduled) {\r\n modalScope.$dismiss('$uibUnscheduledDestruction');\r\n }\r\n });\r\n\r\n var modal = {\r\n scope: modalScope,\r\n deferred: modalResultDeferred,\r\n renderDeferred: modalRenderDeferred,\r\n closedDeferred: modalClosedDeferred,\r\n animation: modalOptions.animation,\r\n backdrop: modalOptions.backdrop,\r\n keyboard: modalOptions.keyboard,\r\n backdropClass: modalOptions.backdropClass,\r\n windowTopClass: modalOptions.windowTopClass,\r\n windowClass: modalOptions.windowClass,\r\n windowTemplateUrl: modalOptions.windowTemplateUrl,\r\n ariaLabelledBy: modalOptions.ariaLabelledBy,\r\n ariaDescribedBy: modalOptions.ariaDescribedBy,\r\n size: modalOptions.size,\r\n openedClass: modalOptions.openedClass,\r\n appendTo: modalOptions.appendTo\r\n };\r\n\r\n var component = {};\r\n var ctrlInstance, ctrlInstantiate, ctrlLocals = {};\r\n\r\n if (modalOptions.component) {\r\n constructLocals(component, false, true, false);\r\n component.name = modalOptions.component;\r\n modal.component = component;\r\n } else if (modalOptions.controller) {\r\n constructLocals(ctrlLocals, true, false, true);\r\n\r\n // the third param will make the controller instantiate later,private api\r\n // @see https://github.com/angular/angular.js/blob/master/src/ng/controller.js#L126\r\n ctrlInstantiate = $controller(modalOptions.controller, ctrlLocals, true, modalOptions.controllerAs);\r\n if (modalOptions.controllerAs && modalOptions.bindToController) {\r\n ctrlInstance = ctrlInstantiate.instance;\r\n ctrlInstance.$close = modalScope.$close;\r\n ctrlInstance.$dismiss = modalScope.$dismiss;\r\n angular.extend(ctrlInstance, {\r\n $resolve: ctrlLocals.$scope.$resolve\r\n }, providedScope);\r\n }\r\n\r\n ctrlInstance = ctrlInstantiate();\r\n\r\n if (angular.isFunction(ctrlInstance.$onInit)) {\r\n ctrlInstance.$onInit();\r\n }\r\n }\r\n\r\n if (!modalOptions.component) {\r\n modal.content = tplAndVars[0];\r\n }\r\n\r\n $modalStack.open(modalInstance, modal);\r\n modalOpenedDeferred.resolve(true);\r\n\r\n function constructLocals(obj, template, instanceOnScope, injectable) {\r\n obj.$scope = modalScope;\r\n obj.$scope.$resolve = {};\r\n if (instanceOnScope) {\r\n obj.$scope.$uibModalInstance = modalInstance;\r\n } else {\r\n obj.$uibModalInstance = modalInstance;\r\n }\r\n\r\n var resolves = template ? tplAndVars[1] : tplAndVars;\r\n angular.forEach(resolves, function(value, key) {\r\n if (injectable) {\r\n obj[key] = value;\r\n }\r\n\r\n obj.$scope.$resolve[key] = value;\r\n });\r\n }\r\n }, function resolveError(reason) {\r\n modalOpenedDeferred.reject(reason);\r\n modalResultDeferred.reject(reason);\r\n })['finally'](function() {\r\n if (promiseChain === samePromise) {\r\n promiseChain = null;\r\n }\r\n });\r\n\r\n return modalInstance;\r\n };\r\n\r\n return $modal;\r\n }\r\n ]\r\n };\r\n\r\n return $modalProvider;\r\n });\r\n\r\nangular.module('ui.bootstrap.paging', [])\r\n/**\r\n * Helper internal service for generating common controller code between the\r\n * pager and pagination components\r\n */\r\n.factory('uibPaging', ['$parse', function($parse) {\r\n return {\r\n create: function(ctrl, $scope, $attrs) {\r\n ctrl.setNumPages = $attrs.numPages ? $parse($attrs.numPages).assign : angular.noop;\r\n ctrl.ngModelCtrl = { $setViewValue: angular.noop }; // nullModelCtrl\r\n ctrl._watchers = [];\r\n\r\n ctrl.init = function(ngModelCtrl, config) {\r\n ctrl.ngModelCtrl = ngModelCtrl;\r\n ctrl.config = config;\r\n\r\n ngModelCtrl.$render = function() {\r\n ctrl.render();\r\n };\r\n\r\n if ($attrs.itemsPerPage) {\r\n ctrl._watchers.push($scope.$parent.$watch($attrs.itemsPerPage, function(value) {\r\n ctrl.itemsPerPage = parseInt(value, 10);\r\n $scope.totalPages = ctrl.calculateTotalPages();\r\n ctrl.updatePage();\r\n }));\r\n } else {\r\n ctrl.itemsPerPage = config.itemsPerPage;\r\n }\r\n\r\n $scope.$watch('totalItems', function(newTotal, oldTotal) {\r\n if (angular.isDefined(newTotal) || newTotal !== oldTotal) {\r\n $scope.totalPages = ctrl.calculateTotalPages();\r\n ctrl.updatePage();\r\n }\r\n });\r\n };\r\n\r\n ctrl.calculateTotalPages = function() {\r\n var totalPages = ctrl.itemsPerPage < 1 ? 1 : Math.ceil($scope.totalItems / ctrl.itemsPerPage);\r\n return Math.max(totalPages || 0, 1);\r\n };\r\n\r\n ctrl.render = function() {\r\n $scope.page = parseInt(ctrl.ngModelCtrl.$viewValue, 10) || 1;\r\n };\r\n\r\n $scope.selectPage = function(page, evt) {\r\n if (evt) {\r\n evt.preventDefault();\r\n }\r\n\r\n var clickAllowed = !$scope.ngDisabled || !evt;\r\n if (clickAllowed && $scope.page !== page && page > 0 && page <= $scope.totalPages) {\r\n if (evt && evt.target) {\r\n evt.target.blur();\r\n }\r\n ctrl.ngModelCtrl.$setViewValue(page);\r\n ctrl.ngModelCtrl.$render();\r\n }\r\n };\r\n\r\n $scope.getText = function(key) {\r\n return $scope[key + 'Text'] || ctrl.config[key + 'Text'];\r\n };\r\n\r\n $scope.noPrevious = function() {\r\n return $scope.page === 1;\r\n };\r\n\r\n $scope.noNext = function() {\r\n return $scope.page === $scope.totalPages;\r\n };\r\n\r\n ctrl.updatePage = function() {\r\n ctrl.setNumPages($scope.$parent, $scope.totalPages); // Readonly variable\r\n\r\n if ($scope.page > $scope.totalPages) {\r\n $scope.selectPage($scope.totalPages);\r\n } else {\r\n ctrl.ngModelCtrl.$render();\r\n }\r\n };\r\n\r\n $scope.$on('$destroy', function() {\r\n while (ctrl._watchers.length) {\r\n ctrl._watchers.shift()();\r\n }\r\n });\r\n }\r\n };\r\n}]);\r\n\r\nangular.module('ui.bootstrap.pager', ['ui.bootstrap.paging', 'ui.bootstrap.tabindex'])\r\n\r\n.controller('UibPagerController', ['$scope', '$attrs', 'uibPaging', 'uibPagerConfig', function($scope, $attrs, uibPaging, uibPagerConfig) {\r\n $scope.align = angular.isDefined($attrs.align) ? $scope.$parent.$eval($attrs.align) : uibPagerConfig.align;\r\n\r\n uibPaging.create(this, $scope, $attrs);\r\n}])\r\n\r\n.constant('uibPagerConfig', {\r\n itemsPerPage: 10,\r\n previousText: '« Previous',\r\n nextText: 'Next »',\r\n align: true\r\n})\r\n\r\n.directive('uibPager', ['uibPagerConfig', function(uibPagerConfig) {\r\n return {\r\n scope: {\r\n totalItems: '=',\r\n previousText: '@',\r\n nextText: '@',\r\n ngDisabled: '='\r\n },\r\n require: ['uibPager', '?ngModel'],\r\n restrict: 'A',\r\n controller: 'UibPagerController',\r\n controllerAs: 'pager',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/pager/pager.html';\r\n },\r\n link: function(scope, element, attrs, ctrls) {\r\n element.addClass('pager');\r\n var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n if (!ngModelCtrl) {\r\n return; // do nothing if no ng-model\r\n }\r\n\r\n paginationCtrl.init(ngModelCtrl, uibPagerConfig);\r\n }\r\n };\r\n}]);\r\n\r\nangular.module('ui.bootstrap.pagination', ['ui.bootstrap.paging', 'ui.bootstrap.tabindex'])\r\n.controller('UibPaginationController', ['$scope', '$attrs', '$parse', 'uibPaging', 'uibPaginationConfig', function($scope, $attrs, $parse, uibPaging, uibPaginationConfig) {\r\n var ctrl = this;\r\n // Setup configuration parameters\r\n var maxSize = angular.isDefined($attrs.maxSize) ? $scope.$parent.$eval($attrs.maxSize) : uibPaginationConfig.maxSize,\r\n rotate = angular.isDefined($attrs.rotate) ? $scope.$parent.$eval($attrs.rotate) : uibPaginationConfig.rotate,\r\n forceEllipses = angular.isDefined($attrs.forceEllipses) ? $scope.$parent.$eval($attrs.forceEllipses) : uibPaginationConfig.forceEllipses,\r\n boundaryLinkNumbers = angular.isDefined($attrs.boundaryLinkNumbers) ? $scope.$parent.$eval($attrs.boundaryLinkNumbers) : uibPaginationConfig.boundaryLinkNumbers,\r\n pageLabel = angular.isDefined($attrs.pageLabel) ? function(idx) { return $scope.$parent.$eval($attrs.pageLabel, {$page: idx}); } : angular.identity;\r\n $scope.boundaryLinks = angular.isDefined($attrs.boundaryLinks) ? $scope.$parent.$eval($attrs.boundaryLinks) : uibPaginationConfig.boundaryLinks;\r\n $scope.directionLinks = angular.isDefined($attrs.directionLinks) ? $scope.$parent.$eval($attrs.directionLinks) : uibPaginationConfig.directionLinks;\r\n $attrs.$set('role', 'menu');\r\n\r\n uibPaging.create(this, $scope, $attrs);\r\n\r\n if ($attrs.maxSize) {\r\n ctrl._watchers.push($scope.$parent.$watch($parse($attrs.maxSize), function(value) {\r\n maxSize = parseInt(value, 10);\r\n ctrl.render();\r\n }));\r\n }\r\n\r\n // Create page object used in template\r\n function makePage(number, text, isActive) {\r\n return {\r\n number: number,\r\n text: text,\r\n active: isActive\r\n };\r\n }\r\n\r\n function getPages(currentPage, totalPages) {\r\n var pages = [];\r\n\r\n // Default page limits\r\n var startPage = 1, endPage = totalPages;\r\n var isMaxSized = angular.isDefined(maxSize) && maxSize < totalPages;\r\n\r\n // recompute if maxSize\r\n if (isMaxSized) {\r\n if (rotate) {\r\n // Current page is displayed in the middle of the visible ones\r\n startPage = Math.max(currentPage - Math.floor(maxSize / 2), 1);\r\n endPage = startPage + maxSize - 1;\r\n\r\n // Adjust if limit is exceeded\r\n if (endPage > totalPages) {\r\n endPage = totalPages;\r\n startPage = endPage - maxSize + 1;\r\n }\r\n } else {\r\n // Visible pages are paginated with maxSize\r\n startPage = (Math.ceil(currentPage / maxSize) - 1) * maxSize + 1;\r\n\r\n // Adjust last page if limit is exceeded\r\n endPage = Math.min(startPage + maxSize - 1, totalPages);\r\n }\r\n }\r\n\r\n // Add page number links\r\n for (var number = startPage; number <= endPage; number++) {\r\n var page = makePage(number, pageLabel(number), number === currentPage);\r\n pages.push(page);\r\n }\r\n\r\n // Add links to move between page sets\r\n if (isMaxSized && maxSize > 0 && (!rotate || forceEllipses || boundaryLinkNumbers)) {\r\n if (startPage > 1) {\r\n if (!boundaryLinkNumbers || startPage > 3) { //need ellipsis for all options unless range is too close to beginning\r\n var previousPageSet = makePage(startPage - 1, '...', false);\r\n pages.unshift(previousPageSet);\r\n }\r\n if (boundaryLinkNumbers) {\r\n if (startPage === 3) { //need to replace ellipsis when the buttons would be sequential\r\n var secondPageLink = makePage(2, '2', false);\r\n pages.unshift(secondPageLink);\r\n }\r\n //add the first page\r\n var firstPageLink = makePage(1, '1', false);\r\n pages.unshift(firstPageLink);\r\n }\r\n }\r\n\r\n if (endPage < totalPages) {\r\n if (!boundaryLinkNumbers || endPage < totalPages - 2) { //need ellipsis for all options unless range is too close to end\r\n var nextPageSet = makePage(endPage + 1, '...', false);\r\n pages.push(nextPageSet);\r\n }\r\n if (boundaryLinkNumbers) {\r\n if (endPage === totalPages - 2) { //need to replace ellipsis when the buttons would be sequential\r\n var secondToLastPageLink = makePage(totalPages - 1, totalPages - 1, false);\r\n pages.push(secondToLastPageLink);\r\n }\r\n //add the last page\r\n var lastPageLink = makePage(totalPages, totalPages, false);\r\n pages.push(lastPageLink);\r\n }\r\n }\r\n }\r\n return pages;\r\n }\r\n\r\n var originalRender = this.render;\r\n this.render = function() {\r\n originalRender();\r\n if ($scope.page > 0 && $scope.page <= $scope.totalPages) {\r\n $scope.pages = getPages($scope.page, $scope.totalPages);\r\n }\r\n };\r\n}])\r\n\r\n.constant('uibPaginationConfig', {\r\n itemsPerPage: 10,\r\n boundaryLinks: false,\r\n boundaryLinkNumbers: false,\r\n directionLinks: true,\r\n firstText: 'First',\r\n previousText: 'Previous',\r\n nextText: 'Next',\r\n lastText: 'Last',\r\n rotate: true,\r\n forceEllipses: false\r\n})\r\n\r\n.directive('uibPagination', ['$parse', 'uibPaginationConfig', function($parse, uibPaginationConfig) {\r\n return {\r\n scope: {\r\n totalItems: '=',\r\n firstText: '@',\r\n previousText: '@',\r\n nextText: '@',\r\n lastText: '@',\r\n ngDisabled:'='\r\n },\r\n require: ['uibPagination', '?ngModel'],\r\n restrict: 'A',\r\n controller: 'UibPaginationController',\r\n controllerAs: 'pagination',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/pagination/pagination.html';\r\n },\r\n link: function(scope, element, attrs, ctrls) {\r\n element.addClass('pagination');\r\n var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n if (!ngModelCtrl) {\r\n return; // do nothing if no ng-model\r\n }\r\n\r\n paginationCtrl.init(ngModelCtrl, uibPaginationConfig);\r\n }\r\n };\r\n}]);\r\n\r\n/**\r\n * The following features are still outstanding: animation as a\r\n * function, placement as a function, inside, support for more triggers than\r\n * just mouse enter/leave, html tooltips, and selector delegation.\r\n */\r\nangular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.stackedMap'])\r\n\r\n/**\r\n * The $tooltip service creates tooltip- and popover-like directives as well as\r\n * houses global options for them.\r\n */\r\n.provider('$uibTooltip', function() {\r\n // The default options tooltip and popover.\r\n var defaultOptions = {\r\n placement: 'top',\r\n placementClassPrefix: 'bs-tooltip-',\r\n animation: true,\r\n popupDelay: 0,\r\n popupCloseDelay: 0,\r\n useContentExp: false\r\n };\r\n\r\n // Default hide triggers for each show trigger\r\n var triggerMap = {\r\n 'mouseenter': 'mouseleave',\r\n 'click': 'click',\r\n 'outsideClick': 'outsideClick',\r\n 'focus': 'blur',\r\n 'none': ''\r\n };\r\n\r\n // The options specified to the provider globally.\r\n var globalOptions = {};\r\n\r\n /**\r\n * `options({})` allows global configuration of all tooltips in the\r\n * application.\r\n *\r\n * var app = angular.module( 'App', ['ui.bootstrap.tooltip'], function( $tooltipProvider ) {\r\n * // place tooltips left instead of top by default\r\n * $tooltipProvider.options( { placement: 'left' } );\r\n * });\r\n */\r\n\tthis.options = function(value) {\r\n\t\tangular.extend(globalOptions, value);\r\n\t};\r\n\r\n /**\r\n * This allows you to extend the set of trigger mappings available. E.g.:\r\n *\r\n * $tooltipProvider.setTriggers( { 'openTrigger': 'closeTrigger' } );\r\n */\r\n this.setTriggers = function setTriggers(triggers) {\r\n angular.extend(triggerMap, triggers);\r\n };\r\n\r\n /**\r\n * This is a helper function for translating camel-case to snake_case.\r\n */\r\n function snake_case(name) {\r\n var regexp = /[A-Z]/g;\r\n var separator = '-';\r\n return name.replace(regexp, function(letter, pos) {\r\n return (pos ? separator : '') + letter.toLowerCase();\r\n });\r\n }\r\n\r\n /**\r\n * Returns the actual instance of the $tooltip service.\r\n * TODO support multiple triggers\r\n */\r\n this.$get = ['$window', '$compile', '$timeout', '$document', '$uibPosition', '$interpolate', '$rootScope', '$parse', '$$stackedMap', function($window, $compile, $timeout, $document, $position, $interpolate, $rootScope, $parse, $$stackedMap) {\r\n var openedTooltips = $$stackedMap.createNew();\r\n $document.on('keyup', keypressListener);\r\n\r\n $rootScope.$on('$destroy', function() {\r\n $document.off('keyup', keypressListener);\r\n });\r\n\r\n function keypressListener(e) {\r\n if (e.which === 27) {\r\n var last = openedTooltips.top();\r\n if (last) {\r\n last.value.close();\r\n last = null;\r\n }\r\n }\r\n }\r\n\r\n return function $tooltip(ttType, prefix, defaultTriggerShow, options) {\r\n options = angular.extend({}, defaultOptions, globalOptions, options);\r\n\r\n /**\r\n * Returns an object of show and hide triggers.\r\n *\r\n * If a trigger is supplied,\r\n * it is used to show the tooltip; otherwise, it will use the `trigger`\r\n * option passed to the `$tooltipProvider.options` method; else it will\r\n * default to the trigger supplied to this directive factory.\r\n *\r\n * The hide trigger is based on the show trigger. If the `trigger` option\r\n * was passed to the `$tooltipProvider.options` method, it will use the\r\n * mapped trigger from `triggerMap` or the passed trigger if the map is\r\n * undefined; otherwise, it uses the `triggerMap` value of the show\r\n * trigger; else it will just use the show trigger.\r\n */\r\n function getTriggers(trigger) {\r\n var show = (trigger || options.trigger || defaultTriggerShow).split(' ');\r\n var hide = show.map(function(trigger) {\r\n return triggerMap[trigger] || trigger;\r\n });\r\n return {\r\n show: show,\r\n hide: hide\r\n };\r\n }\r\n\r\n var directiveName = snake_case(ttType);\r\n\r\n var startSym = $interpolate.startSymbol();\r\n var endSym = $interpolate.endSymbol();\r\n var template =\r\n '<div '+ directiveName + '-popup ' +\r\n 'uib-title=\"' + startSym + 'title' + endSym + '\" ' +\r\n (options.useContentExp ?\r\n 'content-exp=\"contentExp()\" ' :\r\n 'content=\"' + startSym + 'content' + endSym + '\" ') +\r\n 'origin-scope=\"origScope\" ' +\r\n 'class=\"uib-position-measure ' + prefix + '\" ' +\r\n 'tooltip-animation-class=\"fade\"' +\r\n 'uib-tooltip-classes ' +\r\n 'ng-class=\"{ show: isOpen }\" ' +\r\n '>' +\r\n '</div>';\r\n\r\n return {\r\n compile: function(tElem, tAttrs) {\r\n var tooltipLinker = $compile(template);\r\n\r\n return function link(scope, element, attrs, tooltipCtrl) {\r\n var tooltip;\r\n var tooltipLinkedScope;\r\n var transitionTimeout;\r\n var showTimeout;\r\n var hideTimeout;\r\n var positionTimeout;\r\n var adjustmentTimeout;\r\n var appendToBody = angular.isDefined(options.appendToBody) ? options.appendToBody : false;\r\n var triggers = getTriggers(undefined);\r\n var hasEnableExp = angular.isDefined(attrs[prefix + 'Enable']);\r\n var ttScope = scope.$new(true);\r\n var repositionScheduled = false;\r\n var isOpenParse = angular.isDefined(attrs[prefix + 'IsOpen']) ? $parse(attrs[prefix + 'IsOpen']) : false;\r\n var contentParse = options.useContentExp ? $parse(attrs[ttType]) : false;\r\n var observers = [];\r\n var lastPlacement;\r\n\r\n var positionTooltip = function() {\r\n // check if tooltip exists and is not empty\r\n if (!tooltip || !tooltip.html()) { return; }\r\n\r\n if (!positionTimeout) {\r\n positionTimeout = $timeout(function() {\r\n var placementClasses = $position.parsePlacement(ttScope.placement);\r\n var placement = placementClasses[1] === 'center' ? placementClasses[0] : placementClasses[0] + '-' + placementClasses[1];\r\n\t\t\t\t \r\n // need to add classes prior to placement to allow correct tooltip width calculations\r\n if (!tooltip.hasClass(placementClasses[0])) {\r\n tooltip.removeClass(lastPlacement.split('-')[0]);\r\n tooltip.addClass(placementClasses[0]);\r\n }\r\n\r\n if (!tooltip.hasClass(options.placementClassPrefix + placement)) {\r\n tooltip.removeClass(options.placementClassPrefix + lastPlacement);\r\n tooltip.addClass(options.placementClassPrefix + placement);\r\n }\r\n \r\n // Take into account tooltup margins, since boostrap css draws tooltip arrow inside margins\r\n var ttPosition = $position.positionElements(element, tooltip, ttScope.placement, appendToBody, true);\r\n var initialHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');\r\n var elementPos = appendToBody ? $position.offset(element) : $position.position(element);\r\n tooltip.css({ top: ttPosition.top + 'px', left: ttPosition.left + 'px' });\r\n\r\n adjustmentTimeout = $timeout(function() {\r\n var currentHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');\r\n var adjustment = $position.adjustTop(placementClasses, elementPos, initialHeight, currentHeight);\r\n if (adjustment) {\r\n tooltip.css(adjustment);\r\n }\r\n adjustmentTimeout = null;\r\n }, 0, false);\r\n\r\n // first time through tt element will have the\r\n // uib-position-measure class or if the placement\r\n // has changed we need to position the arrow.\r\n if (tooltip.hasClass('uib-position-measure')) {\r\n $position.positionArrow(tooltip, ttPosition.placement);\r\n tooltip.removeClass('uib-position-measure');\r\n } else if (lastPlacement !== ttPosition.placement) {\r\n $position.positionArrow(tooltip, ttPosition.placement);\r\n }\r\n lastPlacement = ttPosition.placement;\r\n\r\n positionTimeout = null;\r\n }, 0, false);\r\n }\r\n };\r\n\r\n // Set up the correct scope to allow transclusion later\r\n ttScope.origScope = scope;\r\n\r\n // By default, the tooltip is not open.\r\n // TODO add ability to start tooltip opened\r\n ttScope.isOpen = false;\r\n\r\n function toggleTooltipBind() {\r\n if (!ttScope.isOpen) {\r\n showTooltipBind();\r\n } else {\r\n hideTooltipBind();\r\n }\r\n }\r\n\r\n // Show the tooltip with delay if specified, otherwise show it immediately\r\n function showTooltipBind() {\r\n if (hasEnableExp && !scope.$eval(attrs[prefix + 'Enable'])) {\r\n return;\r\n }\r\n\r\n cancelHide();\r\n prepareTooltip();\r\n\r\n if (ttScope.popupDelay) {\r\n // Do nothing if the tooltip was already scheduled to pop-up.\r\n // This happens if show is triggered multiple times before any hide is triggered.\r\n if (!showTimeout) {\r\n showTimeout = $timeout(show, ttScope.popupDelay, false);\r\n }\r\n } else {\r\n show();\r\n }\r\n }\r\n\r\n function hideTooltipBind() {\r\n cancelShow();\r\n\r\n if (ttScope.popupCloseDelay) {\r\n if (!hideTimeout) {\r\n hideTimeout = $timeout(hide, ttScope.popupCloseDelay, false);\r\n }\r\n } else {\r\n hide();\r\n }\r\n }\r\n\r\n // Show the tooltip popup element.\r\n function show() {\r\n cancelShow();\r\n cancelHide();\r\n\r\n // Don't show empty tooltips.\r\n if (!ttScope.content) {\r\n return angular.noop;\r\n }\r\n\r\n createTooltip();\r\n\r\n // And show the tooltip.\r\n ttScope.$evalAsync(function() {\r\n ttScope.isOpen = true;\r\n assignIsOpen(true);\r\n positionTooltip();\r\n });\r\n }\r\n\r\n function cancelShow() {\r\n if (showTimeout) {\r\n $timeout.cancel(showTimeout);\r\n showTimeout = null;\r\n }\r\n\r\n if (positionTimeout) {\r\n $timeout.cancel(positionTimeout);\r\n positionTimeout = null;\r\n }\r\n }\r\n\r\n // Hide the tooltip popup element.\r\n function hide() {\r\n if (!ttScope) {\r\n return;\r\n }\r\n\r\n // First things first: we don't show it anymore.\r\n ttScope.$evalAsync(function() {\r\n if (ttScope) {\r\n ttScope.isOpen = false;\r\n assignIsOpen(false);\r\n // And now we remove it from the DOM. However, if we have animation, we\r\n // need to wait for it to expire beforehand.\r\n // FIXME: this is a placeholder for a port of the transitions library.\r\n // The fade transition in TWBS is 150ms.\r\n if (ttScope.animation) {\r\n if (!transitionTimeout) {\r\n transitionTimeout = $timeout(removeTooltip, 150, false);\r\n }\r\n } else {\r\n removeTooltip();\r\n }\r\n }\r\n });\r\n }\r\n\r\n function cancelHide() {\r\n if (hideTimeout) {\r\n $timeout.cancel(hideTimeout);\r\n hideTimeout = null;\r\n }\r\n\r\n if (transitionTimeout) {\r\n $timeout.cancel(transitionTimeout);\r\n transitionTimeout = null;\r\n }\r\n }\r\n\r\n function createTooltip() {\r\n // There can only be one tooltip element per directive shown at once.\r\n if (tooltip) {\r\n return;\r\n }\r\n\r\n tooltipLinkedScope = ttScope.$new();\r\n tooltip = tooltipLinker(tooltipLinkedScope, function(tooltip) {\r\n if (appendToBody) {\r\n $document.find('body').append(tooltip);\r\n } else {\r\n element.after(tooltip);\r\n }\r\n });\r\n\r\n openedTooltips.add(ttScope, {\r\n close: hide\r\n });\r\n\r\n prepObservers();\r\n }\r\n\r\n function removeTooltip() {\r\n cancelShow();\r\n cancelHide();\r\n unregisterObservers();\r\n\r\n if (tooltip) {\r\n tooltip.remove();\r\n\r\n tooltip = null;\r\n if (adjustmentTimeout) {\r\n $timeout.cancel(adjustmentTimeout);\r\n }\r\n }\r\n\r\n openedTooltips.remove(ttScope);\r\n\r\n if (tooltipLinkedScope) {\r\n tooltipLinkedScope.$destroy();\r\n tooltipLinkedScope = null;\r\n }\r\n }\r\n\r\n /**\r\n * Set the initial scope values. Once\r\n * the tooltip is created, the observers\r\n * will be added to keep things in sync.\r\n */\r\n function prepareTooltip() {\r\n ttScope.title = attrs[prefix + 'Title'];\r\n if (contentParse) {\r\n ttScope.content = contentParse(scope);\r\n } else {\r\n ttScope.content = attrs[ttType];\r\n }\r\n\r\n ttScope.popupClass = attrs[prefix + 'Class'];\r\n ttScope.placement = angular.isDefined(attrs[prefix + 'Placement']) ? attrs[prefix + 'Placement'] : options.placement;\r\n var placement = $position.parsePlacement(ttScope.placement);\r\n lastPlacement = placement[1] ? placement[0] + '-' + placement[1] : placement[0];\r\n\r\n var delay = parseInt(attrs[prefix + 'PopupDelay'], 10);\r\n var closeDelay = parseInt(attrs[prefix + 'PopupCloseDelay'], 10);\r\n ttScope.popupDelay = !isNaN(delay) ? delay : options.popupDelay;\r\n ttScope.popupCloseDelay = !isNaN(closeDelay) ? closeDelay : options.popupCloseDelay;\r\n }\r\n\r\n function assignIsOpen(isOpen) {\r\n if (isOpenParse && angular.isFunction(isOpenParse.assign)) {\r\n isOpenParse.assign(scope, isOpen);\r\n }\r\n }\r\n\r\n ttScope.contentExp = function() {\r\n return ttScope.content;\r\n };\r\n\r\n /**\r\n * Observe the relevant attributes.\r\n */\r\n attrs.$observe('disabled', function(val) {\r\n if (val) {\r\n cancelShow();\r\n }\r\n\r\n if (val && ttScope.isOpen) {\r\n hide();\r\n }\r\n });\r\n\r\n if (isOpenParse) {\r\n scope.$watch(isOpenParse, function(val) {\r\n if (ttScope && !val === ttScope.isOpen) {\r\n toggleTooltipBind();\r\n }\r\n });\r\n }\r\n\r\n function prepObservers() {\r\n observers.length = 0;\r\n\r\n if (contentParse) {\r\n observers.push(\r\n scope.$watch(contentParse, function(val) {\r\n ttScope.content = val;\r\n if (!val && ttScope.isOpen) {\r\n hide();\r\n }\r\n })\r\n );\r\n\r\n observers.push(\r\n tooltipLinkedScope.$watch(function() {\r\n if (!repositionScheduled) {\r\n repositionScheduled = true;\r\n tooltipLinkedScope.$$postDigest(function() {\r\n repositionScheduled = false;\r\n if (ttScope && ttScope.isOpen) {\r\n positionTooltip();\r\n }\r\n });\r\n }\r\n })\r\n );\r\n } else {\r\n observers.push(\r\n attrs.$observe(ttType, function(val) {\r\n ttScope.content = val;\r\n if (!val && ttScope.isOpen) {\r\n hide();\r\n } else {\r\n positionTooltip();\r\n }\r\n })\r\n );\r\n }\r\n\r\n observers.push(\r\n attrs.$observe(prefix + 'Title', function(val) {\r\n ttScope.title = val;\r\n if (ttScope.isOpen) {\r\n positionTooltip();\r\n }\r\n })\r\n );\r\n\r\n observers.push(\r\n attrs.$observe(prefix + 'Placement', function(val) {\r\n ttScope.placement = val ? val : options.placement;\r\n if (ttScope.isOpen) {\r\n positionTooltip();\r\n }\r\n })\r\n );\r\n }\r\n\r\n function unregisterObservers() {\r\n if (observers.length) {\r\n angular.forEach(observers, function(observer) {\r\n observer();\r\n });\r\n observers.length = 0;\r\n }\r\n }\r\n\r\n // hide tooltips/popovers for outsideClick trigger\r\n function bodyHideTooltipBind(e) {\r\n if (!ttScope || !ttScope.isOpen || !tooltip) {\r\n return;\r\n }\r\n // make sure the tooltip/popover link or tool tooltip/popover itself were not clicked\r\n if (!element[0].contains(e.target) && !tooltip[0].contains(e.target)) {\r\n hideTooltipBind();\r\n }\r\n }\r\n\r\n // KeyboardEvent handler to hide the tooltip on Escape key press\r\n function hideOnEscapeKey(e) {\r\n if (e.which === 27) {\r\n hideTooltipBind();\r\n }\r\n }\r\n\r\n var unregisterTriggers = function() {\r\n triggers.show.forEach(function(trigger) {\r\n if (trigger === 'outsideClick') {\r\n element.off('click', toggleTooltipBind);\r\n } else {\r\n element.off(trigger, showTooltipBind);\r\n element.off(trigger, toggleTooltipBind);\r\n }\r\n element.off('keypress', hideOnEscapeKey);\r\n });\r\n triggers.hide.forEach(function(trigger) {\r\n if (trigger === 'outsideClick') {\r\n $document.off('click', bodyHideTooltipBind);\r\n } else {\r\n element.off(trigger, hideTooltipBind);\r\n }\r\n });\r\n };\r\n\r\n function prepTriggers() {\r\n var showTriggers = [], hideTriggers = [];\r\n var val = scope.$eval(attrs[prefix + 'Trigger']);\r\n unregisterTriggers();\r\n\r\n if (angular.isObject(val)) {\r\n Object.keys(val).forEach(function(key) {\r\n showTriggers.push(key);\r\n hideTriggers.push(val[key]);\r\n });\r\n triggers = {\r\n show: showTriggers,\r\n hide: hideTriggers\r\n };\r\n } else {\r\n triggers = getTriggers(val);\r\n }\r\n\r\n if (triggers.show !== 'none') {\r\n triggers.show.forEach(function(trigger, idx) {\r\n if (trigger === 'outsideClick') {\r\n element.on('click', toggleTooltipBind);\r\n $document.on('click', bodyHideTooltipBind);\r\n } else if (trigger === triggers.hide[idx]) {\r\n element.on(trigger, toggleTooltipBind);\r\n } else if (trigger) {\r\n element.on(trigger, showTooltipBind);\r\n element.on(triggers.hide[idx], hideTooltipBind);\r\n }\r\n element.on('keypress', hideOnEscapeKey);\r\n });\r\n }\r\n }\r\n\r\n prepTriggers();\r\n\r\n var animation = scope.$eval(attrs[prefix + 'Animation']);\r\n ttScope.animation = angular.isDefined(animation) ? !!animation : options.animation;\r\n\r\n var appendToBodyVal;\r\n var appendKey = prefix + 'AppendToBody';\r\n if (appendKey in attrs && attrs[appendKey] === undefined) {\r\n appendToBodyVal = true;\r\n } else {\r\n appendToBodyVal = scope.$eval(attrs[appendKey]);\r\n }\r\n\r\n appendToBody = angular.isDefined(appendToBodyVal) ? appendToBodyVal : appendToBody;\r\n\r\n // Make sure tooltip is destroyed and removed.\r\n scope.$on('$destroy', function onDestroyTooltip() {\r\n unregisterTriggers();\r\n removeTooltip();\r\n ttScope = null;\r\n });\r\n };\r\n }\r\n };\r\n };\r\n }];\r\n})\r\n\r\n// This is mostly ngInclude code but with a custom scope\r\n.directive('uibTooltipTemplateTransclude', [\r\n '$animate', '$sce', '$compile', '$templateRequest',\r\nfunction ($animate, $sce, $compile, $templateRequest) {\r\n return {\r\n link: function(scope, elem, attrs) {\r\n var origScope = scope.$eval(attrs.tooltipTemplateTranscludeScope);\r\n\r\n var changeCounter = 0,\r\n currentScope,\r\n previousElement,\r\n currentElement;\r\n\r\n var cleanupLastIncludeContent = function() {\r\n if (previousElement) {\r\n previousElement.remove();\r\n previousElement = null;\r\n }\r\n\r\n if (currentScope) {\r\n currentScope.$destroy();\r\n currentScope = null;\r\n }\r\n\r\n if (currentElement) {\r\n $animate.leave(currentElement).then(function() {\r\n previousElement = null;\r\n });\r\n previousElement = currentElement;\r\n currentElement = null;\r\n }\r\n };\r\n\r\n scope.$watch($sce.parseAsResourceUrl(attrs.uibTooltipTemplateTransclude), function(src) {\r\n var thisChangeId = ++changeCounter;\r\n\r\n if (src) {\r\n //set the 2nd param to true to ignore the template request error so that the inner\r\n //contents and scope can be cleaned up.\r\n $templateRequest(src, true).then(function(response) {\r\n if (thisChangeId !== changeCounter) { return; }\r\n var newScope = origScope.$new();\r\n var template = response;\r\n\r\n var clone = $compile(template)(newScope, function(clone) {\r\n cleanupLastIncludeContent();\r\n $animate.enter(clone, elem);\r\n });\r\n\r\n currentScope = newScope;\r\n currentElement = clone;\r\n\r\n currentScope.$emit('$includeContentLoaded', src);\r\n }, function() {\r\n if (thisChangeId === changeCounter) {\r\n cleanupLastIncludeContent();\r\n scope.$emit('$includeContentError', src);\r\n }\r\n });\r\n scope.$emit('$includeContentRequested', src);\r\n } else {\r\n cleanupLastIncludeContent();\r\n }\r\n });\r\n\r\n scope.$on('$destroy', cleanupLastIncludeContent);\r\n }\r\n };\r\n}])\r\n\r\n/**\r\n * Note that it's intentional that these classes are *not* applied through $animate.\r\n * They must not be animated as they're expected to be present on the tooltip on\r\n * initialization.\r\n */\r\n.directive('uibTooltipClasses', ['$uibPosition', function($uibPosition) {\r\n return {\r\n restrict: 'A',\r\n link: function(scope, element, attrs) {\r\n // need to set the primary position so the\r\n // arrow has space during position measure.\r\n // tooltip.positionTooltip()\r\n if (scope.placement) {\r\n // // There are no top-left etc... classes\r\n // // in TWBS, so we need the primary position.\r\n var position = $uibPosition.parsePlacement(scope.placement);\r\n element.addClass(position[0]);\r\n }\r\n\r\n if (scope.popupClass) {\r\n element.addClass(scope.popupClass);\r\n }\r\n\r\n if (scope.animation) {\r\n element.addClass(attrs.tooltipAnimationClass);\r\n }\r\n }\r\n };\r\n}])\r\n\r\n.directive('uibTooltipPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { content: '@' },\r\n templateUrl: 'uib/template/tooltip/tooltip-popup.html'\r\n };\r\n})\r\n\r\n.directive('uibTooltip', [ '$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibTooltip', 'tooltip', 'mouseenter');\r\n}])\r\n\r\n.directive('uibTooltipTemplatePopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { contentExp: '&', originScope: '&' },\r\n templateUrl: 'uib/template/tooltip/tooltip-template-popup.html'\r\n };\r\n})\r\n\r\n.directive('uibTooltipTemplate', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibTooltipTemplate', 'tooltip', 'mouseenter', {\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n.directive('uibTooltipHtmlPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { contentExp: '&' },\r\n templateUrl: 'uib/template/tooltip/tooltip-html-popup.html'\r\n };\r\n})\r\n\r\n.directive('uibTooltipHtml', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibTooltipHtml', 'tooltip', 'mouseenter', {\r\n useContentExp: true\r\n });\r\n}]);\r\n\r\n/**\r\n * The following features are still outstanding: popup delay, animation as a\r\n * function, placement as a function, inside, support for more triggers than\r\n * just mouse enter/leave, and selector delegatation.\r\n */\r\nangular.module('ui.bootstrap.popover', ['ui.bootstrap.tooltip'])\r\n\r\n.directive('uibPopoverTemplatePopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { uibTitle: '@', contentExp: '&', originScope: '&' },\r\n templateUrl: 'uib/template/popover/popover-template.html'\r\n };\r\n})\r\n\r\n.directive('uibPopoverTemplate', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibPopoverTemplate', 'popover', 'click', {\r\n placementClassPrefix: 'bs-popover-',\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n.directive('uibPopoverHtmlPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { contentExp: '&', uibTitle: '@' },\r\n templateUrl: 'uib/template/popover/popover-html.html'\r\n };\r\n})\r\n\r\n.directive('uibPopoverHtml', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibPopoverHtml', 'popover', 'click', {\r\n placementClassPrefix: 'bs-popover-',\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n.directive('uibPopoverPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { uibTitle: '@', content: '@' },\r\n templateUrl: 'uib/template/popover/popover.html'\r\n };\r\n})\r\n\r\n.directive('uibPopover', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibPopover', 'popover', 'click', {\r\n placementClassPrefix: 'bs-popover-'\r\n });\r\n}]);\r\n\r\nangular.module('ui.bootstrap.progressbar', [])\r\n\r\n.constant('uibProgressConfig', {\r\n animate: true,\r\n max: 100\r\n})\r\n\r\n.controller('UibProgressController', ['$scope', '$attrs', 'uibProgressConfig', function($scope, $attrs, progressConfig) {\r\n var self = this,\r\n animate = angular.isDefined($attrs.animate) ? $scope.$parent.$eval($attrs.animate) : progressConfig.animate;\r\n\r\n this.bars = [];\r\n $scope.max = getMaxOrDefault();\r\n\r\n this.addBar = function(bar, element, attrs) {\r\n if (!animate) {\r\n element.css({'transition': 'none'});\r\n }\r\n\r\n this.bars.push(bar);\r\n\r\n bar.max = getMaxOrDefault();\r\n bar.title = attrs && angular.isDefined(attrs.title) ? attrs.title : 'progressbar';\r\n\r\n bar.$watch('value', function(value) {\r\n bar.recalculatePercentage();\r\n });\r\n\r\n bar.recalculatePercentage = function() {\r\n var totalPercentage = self.bars.reduce(function(total, bar) {\r\n bar.percent = +(100 * bar.value / bar.max).toFixed(2);\r\n return total + bar.percent;\r\n }, 0);\r\n\r\n if (totalPercentage > 100) {\r\n bar.percent -= totalPercentage - 100;\r\n }\r\n };\r\n\r\n bar.$on('$destroy', function() {\r\n element = null;\r\n self.removeBar(bar);\r\n });\r\n };\r\n\r\n this.removeBar = function(bar) {\r\n this.bars.splice(this.bars.indexOf(bar), 1);\r\n this.bars.forEach(function (bar) {\r\n bar.recalculatePercentage();\r\n });\r\n };\r\n\r\n //$attrs.$observe('maxParam', function(maxParam) {\r\n $scope.$watch('maxParam', function(maxParam) {\r\n self.bars.forEach(function(bar) {\r\n bar.max = getMaxOrDefault();\r\n bar.recalculatePercentage();\r\n });\r\n });\r\n\r\n function getMaxOrDefault () {\r\n return angular.isDefined($scope.maxParam) ? $scope.maxParam : progressConfig.max;\r\n }\r\n}])\r\n\r\n.directive('uibProgress', function() {\r\n return {\r\n replace: true,\r\n transclude: true,\r\n controller: 'UibProgressController',\r\n require: 'uibProgress',\r\n scope: {\r\n maxParam: '=?max'\r\n },\r\n templateUrl: 'uib/template/progressbar/progress.html'\r\n };\r\n})\r\n\r\n.directive('uibBar', function() {\r\n return {\r\n replace: true,\r\n transclude: true,\r\n require: '^uibProgress',\r\n scope: {\r\n value: '=',\r\n type: '@',\r\n striped: '=?'\r\n },\r\n templateUrl: 'uib/template/progressbar/bar.html',\r\n link: function(scope, element, attrs, progressCtrl) {\r\n progressCtrl.addBar(scope, element, attrs);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibProgressbar', function() {\r\n return {\r\n replace: true,\r\n transclude: true,\r\n controller: 'UibProgressController',\r\n scope: {\r\n value: '=',\r\n maxParam: '=?max',\r\n type: '@',\r\n striped: '=?'\r\n },\r\n templateUrl: 'uib/template/progressbar/progressbar.html',\r\n link: function(scope, element, attrs, progressCtrl) {\r\n progressCtrl.addBar(scope, angular.element(element.children()[0]), {title: attrs.title});\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.rating', [])\r\n\r\n.constant('uibRatingConfig', {\r\n max: 5,\r\n stateOn: null,\r\n stateOff: null,\r\n enableReset: true,\r\n titles: ['one', 'two', 'three', 'four', 'five']\r\n})\r\n\r\n.controller('UibRatingController', ['$scope', '$attrs', 'uibRatingConfig', function($scope, $attrs, ratingConfig) {\r\n var ngModelCtrl = { $setViewValue: angular.noop },\r\n self = this;\r\n\r\n this.init = function(ngModelCtrl_) {\r\n ngModelCtrl = ngModelCtrl_;\r\n ngModelCtrl.$render = this.render;\r\n\r\n ngModelCtrl.$formatters.push(function(value) {\r\n if (angular.isNumber(value) && value << 0 !== value) {\r\n value = Math.round(value);\r\n }\r\n\r\n return value;\r\n });\r\n\r\n this.stateOn = angular.isDefined($attrs.stateOn) ? $scope.$parent.$eval($attrs.stateOn) : ratingConfig.stateOn;\r\n this.stateOff = angular.isDefined($attrs.stateOff) ? $scope.$parent.$eval($attrs.stateOff) : ratingConfig.stateOff;\r\n this.enableReset = angular.isDefined($attrs.enableReset) ?\r\n $scope.$parent.$eval($attrs.enableReset) : ratingConfig.enableReset;\r\n var tmpTitles = angular.isDefined($attrs.titles) ? $scope.$parent.$eval($attrs.titles) : ratingConfig.titles;\r\n this.titles = angular.isArray(tmpTitles) && tmpTitles.length > 0 ?\r\n tmpTitles : ratingConfig.titles;\r\n\r\n var ratingStates = angular.isDefined($attrs.ratingStates) ?\r\n $scope.$parent.$eval($attrs.ratingStates) :\r\n new Array(angular.isDefined($attrs.max) ? $scope.$parent.$eval($attrs.max) : ratingConfig.max);\r\n $scope.range = this.buildTemplateObjects(ratingStates);\r\n };\r\n\r\n this.buildTemplateObjects = function(states) {\r\n for (var i = 0, n = states.length; i < n; i++) {\r\n states[i] = angular.extend({ index: i }, { stateOn: this.stateOn, stateOff: this.stateOff, title: this.getTitle(i) }, states[i]);\r\n }\r\n return states;\r\n };\r\n\r\n this.getTitle = function(index) {\r\n if (index >= this.titles.length) {\r\n return index + 1;\r\n }\r\n\r\n return this.titles[index];\r\n };\r\n\r\n $scope.rate = function(value) {\r\n if (!$scope.readonly && value >= 0 && value <= $scope.range.length) {\r\n var newViewValue = self.enableReset && ngModelCtrl.$viewValue === value ? 0 : value;\r\n ngModelCtrl.$setViewValue(newViewValue);\r\n ngModelCtrl.$render();\r\n }\r\n };\r\n\r\n $scope.enter = function(value) {\r\n if (!$scope.readonly) {\r\n $scope.value = value;\r\n }\r\n $scope.onHover({value: value});\r\n };\r\n\r\n $scope.reset = function() {\r\n $scope.value = ngModelCtrl.$viewValue;\r\n $scope.onLeave();\r\n };\r\n\r\n $scope.onKeydown = function(evt) {\r\n if (/(37|38|39|40)/.test(evt.which)) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $scope.rate($scope.value + (evt.which === 38 || evt.which === 39 ? 1 : -1));\r\n }\r\n };\r\n\r\n this.render = function() {\r\n $scope.value = ngModelCtrl.$viewValue;\r\n $scope.title = self.getTitle($scope.value - 1);\r\n };\r\n}])\r\n\r\n.directive('uibRating', function() {\r\n return {\r\n require: ['uibRating', 'ngModel'],\r\n restrict: 'A',\r\n scope: {\r\n readonly: '=?readOnly',\r\n onHover: '&',\r\n onLeave: '&'\r\n },\r\n controller: 'UibRatingController',\r\n templateUrl: 'uib/template/rating/rating.html',\r\n link: function(scope, element, attrs, ctrls) {\r\n var ratingCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n ratingCtrl.init(ngModelCtrl);\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.tabs', [])\r\n\r\n.controller('UibTabsetController', ['$scope', function ($scope) {\r\n var ctrl = this,\r\n oldIndex;\r\n ctrl.tabs = [];\r\n\r\n ctrl.select = function(index, evt) {\r\n if (!destroyed) {\r\n var previousIndex = findTabIndex(oldIndex);\r\n var previousSelected = ctrl.tabs[previousIndex];\r\n if (previousSelected) {\r\n previousSelected.tab.onDeselect({\r\n $event: evt,\r\n $selectedIndex: index\r\n });\r\n if (evt && evt.isDefaultPrevented()) {\r\n return;\r\n }\r\n previousSelected.tab.active = false;\r\n }\r\n\r\n var selected = ctrl.tabs[index];\r\n if (selected) {\r\n selected.tab.onSelect({\r\n $event: evt\r\n });\r\n selected.tab.active = true;\r\n ctrl.active = selected.index;\r\n oldIndex = selected.index;\r\n } else if (!selected && angular.isDefined(oldIndex)) {\r\n ctrl.active = null;\r\n oldIndex = null;\r\n }\r\n }\r\n };\r\n\r\n ctrl.addTab = function addTab(tab) {\r\n ctrl.tabs.push({\r\n tab: tab,\r\n index: tab.index\r\n });\r\n ctrl.tabs.sort(function(t1, t2) {\r\n if (t1.index > t2.index) {\r\n return 1;\r\n }\r\n\r\n if (t1.index < t2.index) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n if (tab.index === ctrl.active || !angular.isDefined(ctrl.active) && ctrl.tabs.length === 1) {\r\n var newActiveIndex = findTabIndex(tab.index);\r\n ctrl.select(newActiveIndex);\r\n }\r\n };\r\n\r\n ctrl.removeTab = function removeTab(tab) {\r\n var index;\r\n for (var i = 0; i < ctrl.tabs.length; i++) {\r\n if (ctrl.tabs[i].tab === tab) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n if (ctrl.tabs[index].index === ctrl.active) {\r\n var newActiveTabIndex = index === ctrl.tabs.length - 1 ?\r\n index - 1 : index + 1 % ctrl.tabs.length;\r\n ctrl.select(newActiveTabIndex);\r\n }\r\n\r\n ctrl.tabs.splice(index, 1);\r\n };\r\n\r\n $scope.$watch('tabset.active', function(val) {\r\n if (angular.isDefined(val) && val !== oldIndex) {\r\n ctrl.select(findTabIndex(val));\r\n }\r\n });\r\n\r\n var destroyed;\r\n $scope.$on('$destroy', function() {\r\n destroyed = true;\r\n });\r\n\r\n function findTabIndex(index) {\r\n for (var i = 0; i < ctrl.tabs.length; i++) {\r\n if (ctrl.tabs[i].index === index) {\r\n return i;\r\n }\r\n }\r\n }\r\n}])\r\n\r\n.directive('uibTabset', function() {\r\n return {\r\n transclude: true,\r\n replace: true,\r\n scope: {},\r\n bindToController: {\r\n active: '=?',\r\n type: '@'\r\n },\r\n controller: 'UibTabsetController',\r\n controllerAs: 'tabset',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/tabs/tabset.html';\r\n },\r\n link: function(scope, element, attrs) {\r\n scope.vertical = angular.isDefined(attrs.vertical) ?\r\n scope.$parent.$eval(attrs.vertical) : false;\r\n scope.justified = angular.isDefined(attrs.justified) ?\r\n scope.$parent.$eval(attrs.justified) : false;\r\n }\r\n };\r\n})\r\n\r\n.directive('uibTab', ['$parse', function($parse) {\r\n return {\r\n require: '^uibTabset',\r\n replace: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/tabs/tab.html';\r\n },\r\n transclude: true,\r\n scope: {\r\n heading: '@',\r\n index: '=?',\r\n classes: '@?',\r\n onSelect: '&select', //This callback is called in contentHeadingTransclude\r\n //once it inserts the tab's content into the dom\r\n onDeselect: '&deselect'\r\n },\r\n controller: function() {\r\n //Empty controller so other directives can require being 'under' a tab\r\n },\r\n controllerAs: 'tab',\r\n link: function(scope, elm, attrs, tabsetCtrl, transclude) {\r\n scope.disabled = false;\r\n if (attrs.disable) {\r\n scope.$parent.$watch($parse(attrs.disable), function(value) {\r\n scope.disabled = !! value;\r\n });\r\n }\r\n\r\n if (angular.isUndefined(attrs.index)) {\r\n if (tabsetCtrl.tabs && tabsetCtrl.tabs.length) {\r\n scope.index = Math.max.apply(null, tabsetCtrl.tabs.map(function(t) { return t.index; })) + 1;\r\n } else {\r\n scope.index = 0;\r\n }\r\n }\r\n\r\n if (angular.isUndefined(attrs.classes)) {\r\n scope.classes = '';\r\n }\r\n\r\n scope.select = function(evt) {\r\n if (!scope.disabled) {\r\n var index;\r\n for (var i = 0; i < tabsetCtrl.tabs.length; i++) {\r\n if (tabsetCtrl.tabs[i].tab === scope) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n tabsetCtrl.select(index, evt);\r\n }\r\n };\r\n\r\n tabsetCtrl.addTab(scope);\r\n scope.$on('$destroy', function() {\r\n tabsetCtrl.removeTab(scope);\r\n });\r\n\r\n //We need to transclude later, once the content container is ready.\r\n //when this link happens, we're inside a tab heading.\r\n scope.$transcludeFn = transclude;\r\n }\r\n };\r\n}])\r\n\r\n.directive('uibTabHeadingTransclude', function() {\r\n return {\r\n restrict: 'A',\r\n require: '^uibTab',\r\n link: function(scope, elm) {\r\n scope.$watch('headingElement', function updateHeadingElement(heading) {\r\n if (heading) {\r\n elm.html('');\r\n elm.append(heading);\r\n }\r\n });\r\n }\r\n };\r\n})\r\n\r\n.directive('uibTabContentTransclude', function() {\r\n return {\r\n restrict: 'A',\r\n require: '^uibTabset',\r\n link: function(scope, elm, attrs) {\r\n var tab = scope.$eval(attrs.uibTabContentTransclude).tab;\r\n\r\n //Now our tab is ready to be transcluded: both the tab heading area\r\n //and the tab content area are loaded. Transclude 'em both.\r\n tab.$transcludeFn(tab.$parent, function(contents) {\r\n angular.forEach(contents, function(node) {\r\n if (isTabHeading(node)) {\r\n //Let tabHeadingTransclude know.\r\n tab.headingElement = node;\r\n } else {\r\n elm.append(node);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n function isTabHeading(node) {\r\n return node.tagName && (\r\n node.hasAttribute('uib-tab-heading') ||\r\n node.hasAttribute('data-uib-tab-heading') ||\r\n node.hasAttribute('x-uib-tab-heading') ||\r\n node.tagName.toLowerCase() === 'uib-tab-heading' ||\r\n node.tagName.toLowerCase() === 'data-uib-tab-heading' ||\r\n node.tagName.toLowerCase() === 'x-uib-tab-heading' ||\r\n node.tagName.toLowerCase() === 'uib:tab-heading'\r\n );\r\n }\r\n});\r\n\r\nangular.module('ui.bootstrap.timepicker', [])\r\n\r\n.constant('uibTimepickerConfig', {\r\n hourStep: 1,\r\n minuteStep: 1,\r\n secondStep: 1,\r\n showMeridian: true,\r\n showSeconds: false,\r\n meridians: null,\r\n readonlyInput: false,\r\n mousewheel: true,\r\n arrowkeys: true,\r\n showSpinners: true,\r\n templateUrl: 'uib/template/timepicker/timepicker.html'\r\n})\r\n\r\n.controller('UibTimepickerController', ['$scope', '$element', '$attrs', '$parse', '$log', '$locale', 'uibTimepickerConfig', function($scope, $element, $attrs, $parse, $log, $locale, timepickerConfig) {\r\n var hoursModelCtrl, minutesModelCtrl, secondsModelCtrl;\r\n var selected = new Date(),\r\n watchers = [],\r\n ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl\r\n meridians = angular.isDefined($attrs.meridians) ? $scope.$parent.$eval($attrs.meridians) : timepickerConfig.meridians || $locale.DATETIME_FORMATS.AMPMS,\r\n padHours = angular.isDefined($attrs.padHours) ? $scope.$parent.$eval($attrs.padHours) : true;\r\n\r\n $scope.tabindex = angular.isDefined($attrs.tabindex) ? $attrs.tabindex : 0;\r\n $element.removeAttr('tabindex');\r\n\r\n this.init = function(ngModelCtrl_, inputs) {\r\n ngModelCtrl = ngModelCtrl_;\r\n ngModelCtrl.$render = this.render;\r\n\r\n ngModelCtrl.$formatters.unshift(function(modelValue) {\r\n return modelValue ? new Date(modelValue) : null;\r\n });\r\n\r\n var hoursInputEl = inputs.eq(0),\r\n minutesInputEl = inputs.eq(1),\r\n secondsInputEl = inputs.eq(2);\r\n\r\n hoursModelCtrl = hoursInputEl.controller('ngModel');\r\n minutesModelCtrl = minutesInputEl.controller('ngModel');\r\n secondsModelCtrl = secondsInputEl.controller('ngModel');\r\n\r\n var mousewheel = angular.isDefined($attrs.mousewheel) ? $scope.$parent.$eval($attrs.mousewheel) : timepickerConfig.mousewheel;\r\n\r\n if (mousewheel) {\r\n this.setupMousewheelEvents(hoursInputEl, minutesInputEl, secondsInputEl);\r\n }\r\n\r\n var arrowkeys = angular.isDefined($attrs.arrowkeys) ? $scope.$parent.$eval($attrs.arrowkeys) : timepickerConfig.arrowkeys;\r\n if (arrowkeys) {\r\n this.setupArrowkeyEvents(hoursInputEl, minutesInputEl, secondsInputEl);\r\n }\r\n\r\n $scope.readonlyInput = angular.isDefined($attrs.readonlyInput) ? $scope.$parent.$eval($attrs.readonlyInput) : timepickerConfig.readonlyInput;\r\n this.setupInputEvents(hoursInputEl, minutesInputEl, secondsInputEl);\r\n };\r\n\r\n var hourStep = timepickerConfig.hourStep;\r\n if ($attrs.hourStep) {\r\n watchers.push($scope.$parent.$watch($parse($attrs.hourStep), function(value) {\r\n hourStep = +value;\r\n }));\r\n }\r\n\r\n var minuteStep = timepickerConfig.minuteStep;\r\n if ($attrs.minuteStep) {\r\n watchers.push($scope.$parent.$watch($parse($attrs.minuteStep), function(value) {\r\n minuteStep = +value;\r\n }));\r\n }\r\n\r\n var min;\r\n watchers.push($scope.$parent.$watch($parse($attrs.min), function(value) {\r\n var dt = new Date(value);\r\n min = isNaN(dt) ? undefined : dt;\r\n }));\r\n\r\n var max;\r\n watchers.push($scope.$parent.$watch($parse($attrs.max), function(value) {\r\n var dt = new Date(value);\r\n max = isNaN(dt) ? undefined : dt;\r\n }));\r\n\r\n var disabled = false;\r\n if ($attrs.ngDisabled) {\r\n watchers.push($scope.$parent.$watch($parse($attrs.ngDisabled), function(value) {\r\n disabled = value;\r\n }));\r\n }\r\n\r\n $scope.noIncrementHours = function() {\r\n var incrementedSelected = addMinutes(selected, hourStep * 60);\r\n return disabled || incrementedSelected > max ||\r\n incrementedSelected < selected && incrementedSelected < min;\r\n };\r\n\r\n $scope.noDecrementHours = function() {\r\n var decrementedSelected = addMinutes(selected, -hourStep * 60);\r\n return disabled || decrementedSelected < min ||\r\n decrementedSelected > selected && decrementedSelected > max;\r\n };\r\n\r\n $scope.noIncrementMinutes = function() {\r\n var incrementedSelected = addMinutes(selected, minuteStep);\r\n return disabled || incrementedSelected > max ||\r\n incrementedSelected < selected && incrementedSelected < min;\r\n };\r\n\r\n $scope.noDecrementMinutes = function() {\r\n var decrementedSelected = addMinutes(selected, -minuteStep);\r\n return disabled || decrementedSelected < min ||\r\n decrementedSelected > selected && decrementedSelected > max;\r\n };\r\n\r\n $scope.noIncrementSeconds = function() {\r\n var incrementedSelected = addSeconds(selected, secondStep);\r\n return disabled || incrementedSelected > max ||\r\n incrementedSelected < selected && incrementedSelected < min;\r\n };\r\n\r\n $scope.noDecrementSeconds = function() {\r\n var decrementedSelected = addSeconds(selected, -secondStep);\r\n return disabled || decrementedSelected < min ||\r\n decrementedSelected > selected && decrementedSelected > max;\r\n };\r\n\r\n $scope.noToggleMeridian = function() {\r\n if (selected.getHours() < 12) {\r\n return disabled || addMinutes(selected, 12 * 60) > max;\r\n }\r\n\r\n return disabled || addMinutes(selected, -12 * 60) < min;\r\n };\r\n\r\n var secondStep = timepickerConfig.secondStep;\r\n if ($attrs.secondStep) {\r\n watchers.push($scope.$parent.$watch($parse($attrs.secondStep), function(value) {\r\n secondStep = +value;\r\n }));\r\n }\r\n\r\n $scope.showSeconds = timepickerConfig.showSeconds;\r\n if ($attrs.showSeconds) {\r\n watchers.push($scope.$parent.$watch($parse($attrs.showSeconds), function(value) {\r\n $scope.showSeconds = !!value;\r\n }));\r\n }\r\n\r\n // 12H / 24H mode\r\n $scope.showMeridian = timepickerConfig.showMeridian;\r\n if ($attrs.showMeridian) {\r\n watchers.push($scope.$parent.$watch($parse($attrs.showMeridian), function(value) {\r\n $scope.showMeridian = !!value;\r\n\r\n if (ngModelCtrl.$error.time) {\r\n // Evaluate from template\r\n var hours = getHoursFromTemplate(), minutes = getMinutesFromTemplate();\r\n if (angular.isDefined(hours) && angular.isDefined(minutes)) {\r\n selected.setHours(hours);\r\n refresh();\r\n }\r\n } else {\r\n updateTemplate();\r\n }\r\n }));\r\n }\r\n\r\n // Get $scope.hours in 24H mode if valid\r\n function getHoursFromTemplate() {\r\n var hours = +$scope.hours;\r\n var valid = $scope.showMeridian ? hours > 0 && hours < 13 :\r\n hours >= 0 && hours < 24;\r\n if (!valid || $scope.hours === '') {\r\n return undefined;\r\n }\r\n\r\n if ($scope.showMeridian) {\r\n if (hours === 12) {\r\n hours = 0;\r\n }\r\n if ($scope.meridian === meridians[1]) {\r\n hours = hours + 12;\r\n }\r\n }\r\n return hours;\r\n }\r\n\r\n function getMinutesFromTemplate() {\r\n var minutes = +$scope.minutes;\r\n var valid = minutes >= 0 && minutes < 60;\r\n if (!valid || $scope.minutes === '') {\r\n return undefined;\r\n }\r\n return minutes;\r\n }\r\n\r\n function getSecondsFromTemplate() {\r\n var seconds = +$scope.seconds;\r\n return seconds >= 0 && seconds < 60 ? seconds : undefined;\r\n }\r\n\r\n function pad(value, noPad) {\r\n if (value === null) {\r\n return '';\r\n }\r\n\r\n return angular.isDefined(value) && value.toString().length < 2 && !noPad ?\r\n '0' + value : value.toString();\r\n }\r\n\r\n // Respond on mousewheel spin\r\n this.setupMousewheelEvents = function(hoursInputEl, minutesInputEl, secondsInputEl) {\r\n var isScrollingUp = function(e) {\r\n if (e.originalEvent) {\r\n e = e.originalEvent;\r\n }\r\n //pick correct delta variable depending on event\r\n var delta = e.wheelDelta ? e.wheelDelta : -e.deltaY;\r\n return e.detail || delta > 0;\r\n };\r\n\r\n hoursInputEl.on('mousewheel wheel', function(e) {\r\n if (!disabled) {\r\n $scope.$apply(isScrollingUp(e) ? $scope.incrementHours() : $scope.decrementHours());\r\n }\r\n e.preventDefault();\r\n });\r\n\r\n minutesInputEl.on('mousewheel wheel', function(e) {\r\n if (!disabled) {\r\n $scope.$apply(isScrollingUp(e) ? $scope.incrementMinutes() : $scope.decrementMinutes());\r\n }\r\n e.preventDefault();\r\n });\r\n\r\n secondsInputEl.on('mousewheel wheel', function(e) {\r\n if (!disabled) {\r\n $scope.$apply(isScrollingUp(e) ? $scope.incrementSeconds() : $scope.decrementSeconds());\r\n }\r\n e.preventDefault();\r\n });\r\n };\r\n\r\n // Respond on up/down arrowkeys\r\n this.setupArrowkeyEvents = function(hoursInputEl, minutesInputEl, secondsInputEl) {\r\n hoursInputEl.on('keydown', function(e) {\r\n if (!disabled) {\r\n if (e.which === 38) { // up\r\n e.preventDefault();\r\n $scope.incrementHours();\r\n $scope.$apply();\r\n } else if (e.which === 40) { // down\r\n e.preventDefault();\r\n $scope.decrementHours();\r\n $scope.$apply();\r\n }\r\n }\r\n });\r\n\r\n minutesInputEl.on('keydown', function(e) {\r\n if (!disabled) {\r\n if (e.which === 38) { // up\r\n e.preventDefault();\r\n $scope.incrementMinutes();\r\n $scope.$apply();\r\n } else if (e.which === 40) { // down\r\n e.preventDefault();\r\n $scope.decrementMinutes();\r\n $scope.$apply();\r\n }\r\n }\r\n });\r\n\r\n secondsInputEl.on('keydown', function(e) {\r\n if (!disabled) {\r\n if (e.which === 38) { // up\r\n e.preventDefault();\r\n $scope.incrementSeconds();\r\n $scope.$apply();\r\n } else if (e.which === 40) { // down\r\n e.preventDefault();\r\n $scope.decrementSeconds();\r\n $scope.$apply();\r\n }\r\n }\r\n });\r\n };\r\n\r\n this.setupInputEvents = function(hoursInputEl, minutesInputEl, secondsInputEl) {\r\n if ($scope.readonlyInput) {\r\n $scope.updateHours = angular.noop;\r\n $scope.updateMinutes = angular.noop;\r\n $scope.updateSeconds = angular.noop;\r\n return;\r\n }\r\n\r\n var invalidate = function(invalidHours, invalidMinutes, invalidSeconds) {\r\n ngModelCtrl.$setViewValue(null);\r\n ngModelCtrl.$setValidity('time', false);\r\n if (angular.isDefined(invalidHours)) {\r\n $scope.invalidHours = invalidHours;\r\n if (hoursModelCtrl) {\r\n hoursModelCtrl.$setValidity('hours', false);\r\n }\r\n }\r\n\r\n if (angular.isDefined(invalidMinutes)) {\r\n $scope.invalidMinutes = invalidMinutes;\r\n if (minutesModelCtrl) {\r\n minutesModelCtrl.$setValidity('minutes', false);\r\n }\r\n }\r\n\r\n if (angular.isDefined(invalidSeconds)) {\r\n $scope.invalidSeconds = invalidSeconds;\r\n if (secondsModelCtrl) {\r\n secondsModelCtrl.$setValidity('seconds', false);\r\n }\r\n }\r\n };\r\n\r\n $scope.updateHours = function() {\r\n var hours = getHoursFromTemplate(),\r\n minutes = getMinutesFromTemplate();\r\n\r\n ngModelCtrl.$setDirty();\r\n\r\n if (angular.isDefined(hours) && angular.isDefined(minutes)) {\r\n selected.setHours(hours);\r\n selected.setMinutes(minutes);\r\n if (selected < min || selected > max) {\r\n invalidate(true);\r\n } else {\r\n refresh('h');\r\n }\r\n } else {\r\n invalidate(true);\r\n }\r\n };\r\n\r\n hoursInputEl.on('blur', function(e) {\r\n ngModelCtrl.$setTouched();\r\n if (modelIsEmpty()) {\r\n makeValid();\r\n } else if ($scope.hours === null || $scope.hours === '') {\r\n invalidate(true);\r\n } else if (!$scope.invalidHours && $scope.hours < 10) {\r\n $scope.$apply(function() {\r\n $scope.hours = pad($scope.hours, !padHours);\r\n });\r\n }\r\n });\r\n\r\n $scope.updateMinutes = function() {\r\n var minutes = getMinutesFromTemplate(),\r\n hours = getHoursFromTemplate();\r\n\r\n ngModelCtrl.$setDirty();\r\n\r\n if (angular.isDefined(minutes) && angular.isDefined(hours)) {\r\n selected.setHours(hours);\r\n selected.setMinutes(minutes);\r\n if (selected < min || selected > max) {\r\n invalidate(undefined, true);\r\n } else {\r\n refresh('m');\r\n }\r\n } else {\r\n invalidate(undefined, true);\r\n }\r\n };\r\n\r\n minutesInputEl.on('blur', function(e) {\r\n ngModelCtrl.$setTouched();\r\n if (modelIsEmpty()) {\r\n makeValid();\r\n } else if ($scope.minutes === null) {\r\n invalidate(undefined, true);\r\n } else if (!$scope.invalidMinutes && $scope.minutes < 10) {\r\n $scope.$apply(function() {\r\n $scope.minutes = pad($scope.minutes);\r\n });\r\n }\r\n });\r\n\r\n $scope.updateSeconds = function() {\r\n var seconds = getSecondsFromTemplate();\r\n\r\n ngModelCtrl.$setDirty();\r\n\r\n if (angular.isDefined(seconds)) {\r\n selected.setSeconds(seconds);\r\n refresh('s');\r\n } else {\r\n invalidate(undefined, undefined, true);\r\n }\r\n };\r\n\r\n secondsInputEl.on('blur', function(e) {\r\n if (modelIsEmpty()) {\r\n makeValid();\r\n } else if (!$scope.invalidSeconds && $scope.seconds < 10) {\r\n $scope.$apply( function() {\r\n $scope.seconds = pad($scope.seconds);\r\n });\r\n }\r\n });\r\n\r\n };\r\n\r\n this.render = function() {\r\n var date = ngModelCtrl.$viewValue;\r\n\r\n if (isNaN(date)) {\r\n ngModelCtrl.$setValidity('time', false);\r\n $log.error('Timepicker directive: \"ng-model\" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.');\r\n } else {\r\n if (date) {\r\n selected = date;\r\n }\r\n\r\n if (selected < min || selected > max) {\r\n ngModelCtrl.$setValidity('time', false);\r\n $scope.invalidHours = true;\r\n $scope.invalidMinutes = true;\r\n } else {\r\n makeValid();\r\n }\r\n updateTemplate();\r\n }\r\n };\r\n\r\n // Call internally when we know that model is valid.\r\n function refresh(keyboardChange) {\r\n makeValid();\r\n ngModelCtrl.$setViewValue(new Date(selected));\r\n updateTemplate(keyboardChange);\r\n }\r\n\r\n function makeValid() {\r\n if (hoursModelCtrl) {\r\n hoursModelCtrl.$setValidity('hours', true);\r\n }\r\n\r\n if (minutesModelCtrl) {\r\n minutesModelCtrl.$setValidity('minutes', true);\r\n }\r\n\r\n if (secondsModelCtrl) {\r\n secondsModelCtrl.$setValidity('seconds', true);\r\n }\r\n\r\n ngModelCtrl.$setValidity('time', true);\r\n $scope.invalidHours = false;\r\n $scope.invalidMinutes = false;\r\n $scope.invalidSeconds = false;\r\n }\r\n\r\n function updateTemplate(keyboardChange) {\r\n if (!ngModelCtrl.$modelValue) {\r\n $scope.hours = null;\r\n $scope.minutes = null;\r\n $scope.seconds = null;\r\n $scope.meridian = meridians[0];\r\n } else {\r\n var hours = selected.getHours(),\r\n minutes = selected.getMinutes(),\r\n seconds = selected.getSeconds();\r\n\r\n if ($scope.showMeridian) {\r\n hours = hours === 0 || hours === 12 ? 12 : hours % 12; // Convert 24 to 12 hour system\r\n }\r\n\r\n $scope.hours = keyboardChange === 'h' ? hours : pad(hours, !padHours);\r\n if (keyboardChange !== 'm') {\r\n $scope.minutes = pad(minutes);\r\n }\r\n $scope.meridian = selected.getHours() < 12 ? meridians[0] : meridians[1];\r\n\r\n if (keyboardChange !== 's') {\r\n $scope.seconds = pad(seconds);\r\n }\r\n $scope.meridian = selected.getHours() < 12 ? meridians[0] : meridians[1];\r\n }\r\n }\r\n\r\n function addSecondsToSelected(seconds) {\r\n selected = addSeconds(selected, seconds);\r\n refresh();\r\n }\r\n\r\n function addMinutes(selected, minutes) {\r\n return addSeconds(selected, minutes*60);\r\n }\r\n\r\n function addSeconds(date, seconds) {\r\n var dt = new Date(date.getTime() + seconds * 1000);\r\n var newDate = new Date(date);\r\n newDate.setHours(dt.getHours(), dt.getMinutes(), dt.getSeconds());\r\n return newDate;\r\n }\r\n\r\n function modelIsEmpty() {\r\n return ($scope.hours === null || $scope.hours === '') &&\r\n ($scope.minutes === null || $scope.minutes === '') &&\r\n (!$scope.showSeconds || $scope.showSeconds && ($scope.seconds === null || $scope.seconds === ''));\r\n }\r\n\r\n $scope.showSpinners = angular.isDefined($attrs.showSpinners) ?\r\n $scope.$parent.$eval($attrs.showSpinners) : timepickerConfig.showSpinners;\r\n\r\n $scope.incrementHours = function() {\r\n if (!$scope.noIncrementHours()) {\r\n addSecondsToSelected(hourStep * 60 * 60);\r\n }\r\n };\r\n\r\n $scope.decrementHours = function() {\r\n if (!$scope.noDecrementHours()) {\r\n addSecondsToSelected(-hourStep * 60 * 60);\r\n }\r\n };\r\n\r\n $scope.incrementMinutes = function() {\r\n if (!$scope.noIncrementMinutes()) {\r\n addSecondsToSelected(minuteStep * 60);\r\n }\r\n };\r\n\r\n $scope.decrementMinutes = function() {\r\n if (!$scope.noDecrementMinutes()) {\r\n addSecondsToSelected(-minuteStep * 60);\r\n }\r\n };\r\n\r\n $scope.incrementSeconds = function() {\r\n if (!$scope.noIncrementSeconds()) {\r\n addSecondsToSelected(secondStep);\r\n }\r\n };\r\n\r\n $scope.decrementSeconds = function() {\r\n if (!$scope.noDecrementSeconds()) {\r\n addSecondsToSelected(-secondStep);\r\n }\r\n };\r\n\r\n $scope.toggleMeridian = function() {\r\n var minutes = getMinutesFromTemplate(),\r\n hours = getHoursFromTemplate();\r\n\r\n if (!$scope.noToggleMeridian()) {\r\n if (angular.isDefined(minutes) && angular.isDefined(hours)) {\r\n addSecondsToSelected(12 * 60 * (selected.getHours() < 12 ? 60 : -60));\r\n } else {\r\n $scope.meridian = $scope.meridian === meridians[0] ? meridians[1] : meridians[0];\r\n }\r\n }\r\n };\r\n\r\n $scope.blur = function() {\r\n ngModelCtrl.$setTouched();\r\n };\r\n\r\n $scope.$on('$destroy', function() {\r\n while (watchers.length) {\r\n watchers.shift()();\r\n }\r\n });\r\n}])\r\n\r\n.directive('uibTimepicker', ['uibTimepickerConfig', function(uibTimepickerConfig) {\r\n return {\r\n require: ['uibTimepicker', '?^ngModel'],\r\n restrict: 'A',\r\n controller: 'UibTimepickerController',\r\n controllerAs: 'timepicker',\r\n scope: {},\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || uibTimepickerConfig.templateUrl;\r\n },\r\n link: function(scope, element, attrs, ctrls) {\r\n var timepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n if (ngModelCtrl) {\r\n timepickerCtrl.init(ngModelCtrl, element.find('input'));\r\n }\r\n }\r\n };\r\n}]);\r\n\r\nangular.module('ui.bootstrap.typeahead', ['ui.bootstrap.debounce', 'ui.bootstrap.position'])\r\n\r\n/**\r\n * A helper service that can parse typeahead's syntax (string provided by users)\r\n * Extracted to a separate service for ease of unit testing\r\n */\r\n .factory('uibTypeaheadParser', ['$parse', function($parse) {\r\n // 000001111111100000000000002222222200000000000000003333333333333330000000000044444444000\r\n var TYPEAHEAD_REGEXP = /^\\s*([\\s\\S]+?)(?:\\s+as\\s+([\\s\\S]+?))?\\s+for\\s+(?:([\\$\\w][\\$\\w\\d]*))\\s+in\\s+([\\s\\S]+?)$/;\r\n return {\r\n parse: function(input) {\r\n var match = input.match(TYPEAHEAD_REGEXP);\r\n if (!match) {\r\n throw new Error(\r\n 'Expected typeahead specification in form of \"_modelValue_ (as _label_)? for _item_ in _collection_\"' +\r\n ' but got \"' + input + '\".');\r\n }\r\n\r\n return {\r\n itemName: match[3],\r\n source: $parse(match[4]),\r\n viewMapper: $parse(match[2] || match[1]),\r\n modelMapper: $parse(match[1])\r\n };\r\n }\r\n };\r\n }])\r\n\r\n .controller('UibTypeaheadController', ['$scope', '$element', '$attrs', '$compile', '$parse', '$q', '$timeout', '$document', '$window', '$rootScope', '$$debounce', '$uibPosition', 'uibTypeaheadParser',\r\n function(originalScope, element, attrs, $compile, $parse, $q, $timeout, $document, $window, $rootScope, $$debounce, $position, typeaheadParser) {\r\n var HOT_KEYS = [9, 13, 27, 38, 40];\r\n var eventDebounceTime = 200;\r\n var modelCtrl, ngModelOptions;\r\n //SUPPORTED ATTRIBUTES (OPTIONS)\r\n\r\n //minimal no of characters that needs to be entered before typeahead kicks-in\r\n var minLength = originalScope.$eval(attrs.typeaheadMinLength);\r\n if (!minLength && minLength !== 0) {\r\n minLength = 1;\r\n }\r\n\r\n originalScope.$watch(attrs.typeaheadMinLength, function (newVal) {\r\n minLength = !newVal && newVal !== 0 ? 1 : newVal;\r\n });\r\n\r\n //minimal wait time after last character typed before typeahead kicks-in\r\n var waitTime = originalScope.$eval(attrs.typeaheadWaitMs) || 0;\r\n\r\n //should it restrict model values to the ones selected from the popup only?\r\n var isEditable = originalScope.$eval(attrs.typeaheadEditable) !== false;\r\n originalScope.$watch(attrs.typeaheadEditable, function (newVal) {\r\n isEditable = newVal !== false;\r\n });\r\n\r\n //binding to a variable that indicates if matches are being retrieved asynchronously\r\n var isLoadingSetter = $parse(attrs.typeaheadLoading).assign || angular.noop;\r\n\r\n //a function to determine if an event should cause selection\r\n var isSelectEvent = attrs.typeaheadShouldSelect ? $parse(attrs.typeaheadShouldSelect) : function(scope, vals) {\r\n var evt = vals.$event;\r\n return evt.which === 13 || evt.which === 9;\r\n };\r\n\r\n //a callback executed when a match is selected\r\n var onSelectCallback = $parse(attrs.typeaheadOnSelect);\r\n\r\n //should it select highlighted popup value when losing focus?\r\n var isSelectOnBlur = angular.isDefined(attrs.typeaheadSelectOnBlur) ? originalScope.$eval(attrs.typeaheadSelectOnBlur) : false;\r\n\r\n //binding to a variable that indicates if there were no results after the query is completed\r\n var isNoResultsSetter = $parse(attrs.typeaheadNoResults).assign || angular.noop;\r\n\r\n var inputFormatter = attrs.typeaheadInputFormatter ? $parse(attrs.typeaheadInputFormatter) : undefined;\r\n\r\n var appendToBody = attrs.typeaheadAppendToBody ? originalScope.$eval(attrs.typeaheadAppendToBody) : false;\r\n\r\n var appendTo = attrs.typeaheadAppendTo ?\r\n originalScope.$eval(attrs.typeaheadAppendTo) : null;\r\n\r\n var focusFirst = originalScope.$eval(attrs.typeaheadFocusFirst) !== false;\r\n\r\n //If input matches an item of the list exactly, select it automatically\r\n var selectOnExact = attrs.typeaheadSelectOnExact ? originalScope.$eval(attrs.typeaheadSelectOnExact) : false;\r\n\r\n //binding to a variable that indicates if dropdown is open\r\n var isOpenSetter = $parse(attrs.typeaheadIsOpen).assign || angular.noop;\r\n\r\n var showHint = originalScope.$eval(attrs.typeaheadShowHint) || false;\r\n\r\n //INTERNAL VARIABLES\r\n\r\n //model setter executed upon match selection\r\n var parsedModel = $parse(attrs.ngModel);\r\n var invokeModelSetter = $parse(attrs.ngModel + '($$$p)');\r\n var $setModelValue = function(scope, newValue) {\r\n if (angular.isFunction(parsedModel(originalScope)) &&\r\n ngModelOptions.getOption('getterSetter')) {\r\n return invokeModelSetter(scope, {$$$p: newValue});\r\n }\r\n\r\n return parsedModel.assign(scope, newValue);\r\n };\r\n\r\n //expressions used by typeahead\r\n var parserResult = typeaheadParser.parse(attrs.uibTypeahead);\r\n\r\n var hasFocus;\r\n\r\n //Used to avoid bug in iOS webview where iOS keyboard does not fire\r\n //mousedown & mouseup events\r\n //Issue #3699\r\n var selected;\r\n\r\n //create a child scope for the typeahead directive so we are not polluting original scope\r\n //with typeahead-specific data (matches, query etc.)\r\n var scope = originalScope.$new();\r\n var offDestroy = originalScope.$on('$destroy', function() {\r\n scope.$destroy();\r\n });\r\n scope.$on('$destroy', offDestroy);\r\n\r\n // WAI-ARIA\r\n var popupId = 'typeahead-' + scope.$id + '-' + Math.floor(Math.random() * 10000);\r\n element.attr({\r\n 'aria-autocomplete': 'list',\r\n 'aria-expanded': false,\r\n 'aria-owns': popupId\r\n });\r\n\r\n var inputsContainer, hintInputElem;\r\n //add read-only input to show hint\r\n if (showHint) {\r\n inputsContainer = angular.element('<div></div>');\r\n inputsContainer.css('position', 'relative');\r\n element.after(inputsContainer);\r\n hintInputElem = element.clone();\r\n hintInputElem.attr('placeholder', '');\r\n hintInputElem.attr('tabindex', '-1');\r\n hintInputElem.val('');\r\n hintInputElem.css({\r\n 'position': 'absolute',\r\n 'top': '0px',\r\n 'left': '0px',\r\n 'border-color': 'transparent',\r\n 'box-shadow': 'none',\r\n 'opacity': 1,\r\n 'background': 'none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)',\r\n 'color': '#999'\r\n });\r\n element.css({\r\n 'position': 'relative',\r\n 'vertical-align': 'top',\r\n 'background-color': 'transparent'\r\n });\r\n\r\n if (hintInputElem.attr('id')) {\r\n hintInputElem.removeAttr('id'); // remove duplicate id if present.\r\n }\r\n inputsContainer.append(hintInputElem);\r\n hintInputElem.after(element);\r\n }\r\n\r\n //pop-up element used to display matches\r\n var popUpEl = angular.element('<div uib-typeahead-popup></div>');\r\n popUpEl.attr({\r\n id: popupId,\r\n matches: 'matches',\r\n active: 'activeIdx',\r\n select: 'select(activeIdx, evt)',\r\n 'move-in-progress': 'moveInProgress',\r\n query: 'query',\r\n position: 'position',\r\n 'assign-is-open': 'assignIsOpen(isOpen)',\r\n debounce: 'debounceUpdate'\r\n });\r\n //custom item template\r\n if (angular.isDefined(attrs.typeaheadTemplateUrl)) {\r\n popUpEl.attr('template-url', attrs.typeaheadTemplateUrl);\r\n }\r\n\r\n if (angular.isDefined(attrs.typeaheadPopupTemplateUrl)) {\r\n popUpEl.attr('popup-template-url', attrs.typeaheadPopupTemplateUrl);\r\n }\r\n\r\n var resetHint = function() {\r\n if (showHint) {\r\n hintInputElem.val('');\r\n }\r\n };\r\n\r\n var resetMatches = function() {\r\n scope.matches = [];\r\n scope.activeIdx = -1;\r\n element.attr('aria-expanded', false);\r\n resetHint();\r\n };\r\n\r\n var getMatchId = function(index) {\r\n return popupId + '-option-' + index;\r\n };\r\n\r\n // Indicate that the specified match is the active (pre-selected) item in the list owned by this typeahead.\r\n // This attribute is added or removed automatically when the `activeIdx` changes.\r\n scope.$watch('activeIdx', function(index) {\r\n if (index < 0) {\r\n element.removeAttr('aria-activedescendant');\r\n } else {\r\n element.attr('aria-activedescendant', getMatchId(index));\r\n }\r\n });\r\n\r\n var inputIsExactMatch = function(inputValue, index) {\r\n if (scope.matches.length > index && inputValue) {\r\n return inputValue.toUpperCase() === scope.matches[index].label.toUpperCase();\r\n }\r\n\r\n return false;\r\n };\r\n\r\n var getMatchesAsync = function(inputValue, evt) {\r\n var locals = {$viewValue: inputValue};\r\n isLoadingSetter(originalScope, true);\r\n isNoResultsSetter(originalScope, false);\r\n $q.when(parserResult.source(originalScope, locals)).then(function(matches) {\r\n //it might happen that several async queries were in progress if a user were typing fast\r\n //but we are interested only in responses that correspond to the current view value\r\n var onCurrentRequest = inputValue === modelCtrl.$viewValue;\r\n if (onCurrentRequest && hasFocus) {\r\n if (matches && matches.length > 0) {\r\n scope.activeIdx = focusFirst ? 0 : -1;\r\n isNoResultsSetter(originalScope, false);\r\n scope.matches.length = 0;\r\n\r\n //transform labels\r\n for (var i = 0; i < matches.length; i++) {\r\n locals[parserResult.itemName] = matches[i];\r\n scope.matches.push({\r\n id: getMatchId(i),\r\n label: parserResult.viewMapper(scope, locals),\r\n model: matches[i]\r\n });\r\n }\r\n\r\n scope.query = inputValue;\r\n //position pop-up with matches - we need to re-calculate its position each time we are opening a window\r\n //with matches as a pop-up might be absolute-positioned and position of an input might have changed on a page\r\n //due to other elements being rendered\r\n recalculatePosition();\r\n\r\n element.attr('aria-expanded', true);\r\n\r\n //Select the single remaining option if user input matches\r\n if (selectOnExact && scope.matches.length === 1 && inputIsExactMatch(inputValue, 0)) {\r\n if (angular.isNumber(scope.debounceUpdate) || angular.isObject(scope.debounceUpdate)) {\r\n $$debounce(function() {\r\n scope.select(0, evt);\r\n }, angular.isNumber(scope.debounceUpdate) ? scope.debounceUpdate : scope.debounceUpdate['default']);\r\n } else {\r\n scope.select(0, evt);\r\n }\r\n }\r\n\r\n if (showHint) {\r\n var firstLabel = scope.matches[0].label;\r\n if (angular.isString(inputValue) &&\r\n inputValue.length > 0 &&\r\n firstLabel.slice(0, inputValue.length).toUpperCase() === inputValue.toUpperCase()) {\r\n hintInputElem.val(inputValue + firstLabel.slice(inputValue.length));\r\n } else {\r\n hintInputElem.val('');\r\n }\r\n }\r\n } else {\r\n resetMatches();\r\n isNoResultsSetter(originalScope, true);\r\n }\r\n }\r\n if (onCurrentRequest) {\r\n isLoadingSetter(originalScope, false);\r\n }\r\n }, function() {\r\n resetMatches();\r\n isLoadingSetter(originalScope, false);\r\n isNoResultsSetter(originalScope, true);\r\n });\r\n };\r\n\r\n // bind events only if appendToBody params exist - performance feature\r\n if (appendToBody) {\r\n angular.element($window).on('resize', fireRecalculating);\r\n $document.find('body').on('scroll', fireRecalculating);\r\n }\r\n\r\n // Declare the debounced function outside recalculating for\r\n // proper debouncing\r\n var debouncedRecalculate = $$debounce(function() {\r\n // if popup is visible\r\n if (scope.matches.length) {\r\n recalculatePosition();\r\n }\r\n\r\n scope.moveInProgress = false;\r\n }, eventDebounceTime);\r\n\r\n // Default progress type\r\n scope.moveInProgress = false;\r\n\r\n function fireRecalculating() {\r\n if (!scope.moveInProgress) {\r\n scope.moveInProgress = true;\r\n scope.$digest();\r\n }\r\n\r\n debouncedRecalculate();\r\n }\r\n\r\n // recalculate actual position and set new values to scope\r\n // after digest loop is popup in right position\r\n function recalculatePosition() {\r\n scope.position = appendToBody ? $position.offset(element) : $position.position(element);\r\n scope.position.top += element.prop('offsetHeight');\r\n }\r\n\r\n //we need to propagate user's query so we can higlight matches\r\n scope.query = undefined;\r\n\r\n //Declare the timeout promise var outside the function scope so that stacked calls can be cancelled later\r\n var timeoutPromise;\r\n\r\n var scheduleSearchWithTimeout = function(inputValue) {\r\n timeoutPromise = $timeout(function() {\r\n getMatchesAsync(inputValue);\r\n }, waitTime);\r\n };\r\n\r\n var cancelPreviousTimeout = function() {\r\n if (timeoutPromise) {\r\n $timeout.cancel(timeoutPromise);\r\n }\r\n };\r\n\r\n resetMatches();\r\n\r\n scope.assignIsOpen = function (isOpen) {\r\n isOpenSetter(originalScope, isOpen);\r\n };\r\n\r\n scope.select = function(activeIdx, evt) {\r\n //called from within the $digest() cycle\r\n var locals = {};\r\n var model, item;\r\n\r\n selected = true;\r\n locals[parserResult.itemName] = item = scope.matches[activeIdx].model;\r\n model = parserResult.modelMapper(originalScope, locals);\r\n $setModelValue(originalScope, model);\r\n modelCtrl.$setValidity('editable', true);\r\n modelCtrl.$setValidity('parse', true);\r\n\r\n onSelectCallback(originalScope, {\r\n $item: item,\r\n $model: model,\r\n $label: parserResult.viewMapper(originalScope, locals),\r\n $event: evt\r\n });\r\n\r\n resetMatches();\r\n\r\n //return focus to the input element if a match was selected via a mouse click event\r\n // use timeout to avoid $rootScope:inprog error\r\n if (scope.$eval(attrs.typeaheadFocusOnSelect) !== false) {\r\n $timeout(function() { element[0].focus(); }, 0, false);\r\n }\r\n };\r\n\r\n //bind keyboard events: arrows up(38) / down(40), enter(13) and tab(9), esc(27)\r\n element.on('keydown', function(evt) {\r\n //typeahead is open and an \"interesting\" key was pressed\r\n if (scope.matches.length === 0 || HOT_KEYS.indexOf(evt.which) === -1) {\r\n return;\r\n }\r\n\r\n var shouldSelect = isSelectEvent(originalScope, {$event: evt});\r\n\r\n /**\r\n * if there's nothing selected (i.e. focusFirst) and enter or tab is hit\r\n * or\r\n * shift + tab is pressed to bring focus to the previous element\r\n * then clear the results\r\n */\r\n if (scope.activeIdx === -1 && shouldSelect || evt.which === 9 && !!evt.shiftKey) {\r\n resetMatches();\r\n scope.$digest();\r\n return;\r\n }\r\n\r\n evt.preventDefault();\r\n var target;\r\n switch (evt.which) {\r\n case 27: // escape\r\n evt.stopPropagation();\r\n\r\n resetMatches();\r\n originalScope.$digest();\r\n break;\r\n case 38: // up arrow\r\n scope.activeIdx = (scope.activeIdx > 0 ? scope.activeIdx : scope.matches.length) - 1;\r\n scope.$digest();\r\n target = popUpEl[0].querySelectorAll('.uib-typeahead-match')[scope.activeIdx];\r\n target.parentNode.scrollTop = target.offsetTop;\r\n break;\r\n case 40: // down arrow\r\n scope.activeIdx = (scope.activeIdx + 1) % scope.matches.length;\r\n scope.$digest();\r\n target = popUpEl[0].querySelectorAll('.uib-typeahead-match')[scope.activeIdx];\r\n target.parentNode.scrollTop = target.offsetTop;\r\n break;\r\n default:\r\n if (shouldSelect) {\r\n scope.$apply(function() {\r\n if (angular.isNumber(scope.debounceUpdate) || angular.isObject(scope.debounceUpdate)) {\r\n $$debounce(function() {\r\n scope.select(scope.activeIdx, evt);\r\n }, angular.isNumber(scope.debounceUpdate) ? scope.debounceUpdate : scope.debounceUpdate['default']);\r\n } else {\r\n scope.select(scope.activeIdx, evt);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n\r\n element.on('focus', function (evt) {\r\n hasFocus = true;\r\n if (minLength === 0 && !modelCtrl.$viewValue) {\r\n $timeout(function() {\r\n getMatchesAsync(modelCtrl.$viewValue, evt);\r\n }, 0);\r\n }\r\n });\r\n\r\n element.on('blur', function(evt) {\r\n if (isSelectOnBlur && scope.matches.length && scope.activeIdx !== -1 && !selected) {\r\n selected = true;\r\n scope.$apply(function() {\r\n if (angular.isObject(scope.debounceUpdate) && angular.isNumber(scope.debounceUpdate.blur)) {\r\n $$debounce(function() {\r\n scope.select(scope.activeIdx, evt);\r\n }, scope.debounceUpdate.blur);\r\n } else {\r\n scope.select(scope.activeIdx, evt);\r\n }\r\n });\r\n }\r\n if (!isEditable && modelCtrl.$error.editable) {\r\n modelCtrl.$setViewValue();\r\n scope.$apply(function() {\r\n // Reset validity as we are clearing\r\n modelCtrl.$setValidity('editable', true);\r\n modelCtrl.$setValidity('parse', true);\r\n });\r\n element.val('');\r\n }\r\n hasFocus = false;\r\n selected = false;\r\n });\r\n\r\n // Keep reference to click handler to unbind it.\r\n var dismissClickHandler = function(evt) {\r\n // Issue #3973\r\n // Firefox treats right click as a click on document\r\n if (element[0] !== evt.target && evt.which !== 3 && scope.matches.length !== 0) {\r\n resetMatches();\r\n if (!$rootScope.$$phase) {\r\n originalScope.$digest();\r\n }\r\n }\r\n };\r\n\r\n $document.on('click', dismissClickHandler);\r\n\r\n originalScope.$on('$destroy', function() {\r\n $document.off('click', dismissClickHandler);\r\n if (appendToBody || appendTo) {\r\n $popup.remove();\r\n }\r\n\r\n if (appendToBody) {\r\n angular.element($window).off('resize', fireRecalculating);\r\n $document.find('body').off('scroll', fireRecalculating);\r\n }\r\n // Prevent jQuery cache memory leak\r\n popUpEl.remove();\r\n\r\n if (showHint) {\r\n inputsContainer.remove();\r\n }\r\n });\r\n\r\n var $popup = $compile(popUpEl)(scope);\r\n\r\n if (appendToBody) {\r\n $document.find('body').append($popup);\r\n } else if (appendTo) {\r\n angular.element(appendTo).eq(0).append($popup);\r\n } else {\r\n element.after($popup);\r\n }\r\n\r\n this.init = function(_modelCtrl) {\r\n modelCtrl = _modelCtrl;\r\n ngModelOptions = extractOptions(modelCtrl);\r\n\r\n scope.debounceUpdate = $parse(ngModelOptions.getOption('debounce'))(originalScope);\r\n\r\n //plug into $parsers pipeline to open a typeahead on view changes initiated from DOM\r\n //$parsers kick-in on all the changes coming from the view as well as manually triggered by $setViewValue\r\n modelCtrl.$parsers.unshift(function(inputValue) {\r\n hasFocus = true;\r\n\r\n if (minLength === 0 || inputValue && inputValue.length >= minLength) {\r\n if (waitTime > 0) {\r\n cancelPreviousTimeout();\r\n scheduleSearchWithTimeout(inputValue);\r\n } else {\r\n getMatchesAsync(inputValue);\r\n }\r\n } else {\r\n isLoadingSetter(originalScope, false);\r\n cancelPreviousTimeout();\r\n resetMatches();\r\n }\r\n\r\n if (isEditable) {\r\n return inputValue;\r\n }\r\n\r\n if (!inputValue) {\r\n // Reset in case user had typed something previously.\r\n modelCtrl.$setValidity('editable', true);\r\n return null;\r\n }\r\n\r\n modelCtrl.$setValidity('editable', false);\r\n return undefined;\r\n });\r\n\r\n modelCtrl.$formatters.push(function(modelValue) {\r\n var candidateViewValue, emptyViewValue;\r\n var locals = {};\r\n\r\n // The validity may be set to false via $parsers (see above) if\r\n // the model is restricted to selected values. If the model\r\n // is set manually it is considered to be valid.\r\n if (!isEditable) {\r\n modelCtrl.$setValidity('editable', true);\r\n }\r\n\r\n if (inputFormatter) {\r\n locals.$model = modelValue;\r\n return inputFormatter(originalScope, locals);\r\n }\r\n\r\n //it might happen that we don't have enough info to properly render input value\r\n //we need to check for this situation and simply return model value if we can't apply custom formatting\r\n locals[parserResult.itemName] = modelValue;\r\n candidateViewValue = parserResult.viewMapper(originalScope, locals);\r\n locals[parserResult.itemName] = undefined;\r\n emptyViewValue = parserResult.viewMapper(originalScope, locals);\r\n\r\n return candidateViewValue !== emptyViewValue ? candidateViewValue : modelValue;\r\n });\r\n };\r\n\r\n function extractOptions(ngModelCtrl) {\r\n var ngModelOptions;\r\n\r\n if (angular.version.minor < 6) { // in angular < 1.6 $options could be missing\r\n // guarantee a value\r\n ngModelOptions = ngModelCtrl.$options || {};\r\n\r\n // mimic 1.6+ api\r\n ngModelOptions.getOption = function (key) {\r\n return ngModelOptions[key];\r\n };\r\n } else { // in angular >=1.6 $options is always present\r\n ngModelOptions = ngModelCtrl.$options;\r\n }\r\n\r\n return ngModelOptions;\r\n }\r\n }])\r\n\r\n .directive('uibTypeahead', function() {\r\n return {\r\n controller: 'UibTypeaheadController',\r\n require: ['ngModel', 'uibTypeahead'],\r\n link: function(originalScope, element, attrs, ctrls) {\r\n ctrls[1].init(ctrls[0]);\r\n }\r\n };\r\n })\r\n\r\n .directive('uibTypeaheadPopup', ['$$debounce', function($$debounce) {\r\n return {\r\n scope: {\r\n matches: '=',\r\n query: '=',\r\n active: '=',\r\n position: '&',\r\n moveInProgress: '=',\r\n select: '&',\r\n assignIsOpen: '&',\r\n debounce: '&'\r\n },\r\n replace: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.popupTemplateUrl || 'uib/template/typeahead/typeahead-popup.html';\r\n },\r\n link: function(scope, element, attrs) {\r\n scope.templateUrl = attrs.templateUrl;\r\n\r\n scope.isOpen = function() {\r\n var isDropdownOpen = scope.matches.length > 0;\r\n scope.assignIsOpen({ isOpen: isDropdownOpen });\r\n return isDropdownOpen;\r\n };\r\n\r\n scope.isActive = function(matchIdx) {\r\n return scope.active === matchIdx;\r\n };\r\n\r\n scope.selectActive = function(matchIdx) {\r\n scope.active = matchIdx;\r\n };\r\n\r\n scope.selectMatch = function(activeIdx, evt) {\r\n var debounce = scope.debounce();\r\n if (angular.isNumber(debounce) || angular.isObject(debounce)) {\r\n $$debounce(function() {\r\n scope.select({activeIdx: activeIdx, evt: evt});\r\n }, angular.isNumber(debounce) ? debounce : debounce['default']);\r\n } else {\r\n scope.select({activeIdx: activeIdx, evt: evt});\r\n }\r\n };\r\n }\r\n };\r\n }])\r\n\r\n .directive('uibTypeaheadMatch', ['$templateRequest', '$compile', '$parse', function($templateRequest, $compile, $parse) {\r\n return {\r\n scope: {\r\n index: '=',\r\n match: '=',\r\n query: '='\r\n },\r\n link: function(scope, element, attrs) {\r\n var tplUrl = $parse(attrs.templateUrl)(scope.$parent) || 'uib/template/typeahead/typeahead-match.html';\r\n $templateRequest(tplUrl).then(function(tplContent) {\r\n var tplEl = angular.element(tplContent.trim());\r\n element.replaceWith(tplEl);\r\n $compile(tplEl)(scope);\r\n });\r\n }\r\n };\r\n }])\r\n\r\n .filter('uibTypeaheadHighlight', ['$sce', '$injector', '$log', function($sce, $injector, $log) {\r\n var isSanitizePresent;\r\n isSanitizePresent = $injector.has('$sanitize');\r\n\r\n function escapeRegexp(queryToEscape) {\r\n // Regex: capture the whole query string and replace it with the string that will be used to match\r\n // the results, for example if the capture is \"a\" the result will be \\a\r\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\r\n }\r\n\r\n function containsHtml(matchItem) {\r\n return /<.*>/g.test(matchItem);\r\n }\r\n\r\n return function(matchItem, query) {\r\n if (!isSanitizePresent && containsHtml(matchItem)) {\r\n $log.warn('Unsafe use of typeahead please use ngSanitize'); // Warn the user about the danger\r\n }\r\n matchItem = query ? ('' + matchItem).replace(new RegExp(escapeRegexp(query), 'gi'), '<strong>$&</strong>') : matchItem; // Replaces the capture string with a the same string inside of a \"strong\" tag\r\n if (!isSanitizePresent) {\r\n matchItem = $sce.trustAsHtml(matchItem); // If $sanitize is not present we pack the string in a $sce object for the ng-bind-html directive\r\n }\r\n return matchItem;\r\n };\r\n }]);\r\n\r\nangular.module(\"uib/template/accordion/accordion-group.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/accordion/accordion-group.html\",\r\n \"<div role=\\\"tab\\\" id=\\\"{{::headingId}}\\\" aria-selected=\\\"{{isOpen}}\\\" class=\\\"card-header\\\" ng-keypress=\\\"toggleOpen($event)\\\">\\n\" +\r\n \" <h5 class=\\\"mb-0\\\">\\n\" +\r\n \" <a role=\\\"button\\\" data-toggle=\\\"collapse\\\" href aria-expanded=\\\"{{isOpen}}\\\" aria-controls=\\\"{{::cardId}}\\\" tabindex=\\\"0\\\" class=\\\"accordion-toggle\\\" ng-click=\\\"toggleOpen()\\\" uib-accordion-transclude=\\\"heading\\\" ng-disabled=\\\"isDisabled\\\" uib-tabindex-toggle><span uib-accordion-header ng-class=\\\"{'text-muted': isDisabled}\\\">{{heading}}</span></a>\\n\" +\r\n \" </h5>\\n\" +\r\n \"</div>\\n\" +\r\n \"<div id=\\\"{{::cardId}}\\\" aria-labelledby=\\\"{{::headingId}}\\\" aria-hidden=\\\"{{!isOpen}}\\\" role=\\\"tabcard\\\" class=\\\"card-collapse collapse\\\" uib-collapse=\\\"!isOpen\\\">\\n\" +\r\n \" <div class=\\\"card-body\\\" ng-transclude></div>\\n\" +\r\n \"</div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/accordion/accordion.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/accordion/accordion.html\",\r\n \"<div role=\\\"tablist\\\" ng-transclude></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/alert/alert.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/alert/alert.html\",\r\n \"<button ng-show=\\\"closeable\\\" type=\\\"button\\\" class=\\\"close\\\" ng-click=\\\"close({$event: $event})\\\">\\n\" +\r\n \" <span aria-hidden=\\\"true\\\">×</span>\\n\" +\r\n \" <span class=\\\"sr-only\\\">Close</span>\\n\" +\r\n \"</button>\\n\" +\r\n \"<div ng-transclude></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/carousel/carousel.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/carousel/carousel.html\",\r\n \"<div class=\\\"carousel-inner\\\" ng-transclude></div>\\n\" +\r\n \"<a role=\\\"button\\\" href class=\\\"carousel-control-prev\\\" ng-click=\\\"prev()\\\" ng-class=\\\"{ disabled: isPrevDisabled() }\\\" ng-show=\\\"slides.length > 1\\\">\\n\" +\r\n \" <span class=\\\"carousel-control-prev-icon\\\" aria-hidden=\\\"true\\\"></span>\\n\" +\r\n \" <span class=\\\"sr-only\\\">Previous</span>\\n\" +\r\n \"</a>\\n\" +\r\n \"<a role=\\\"button\\\" href class=\\\"carousel-control-next\\\" ng-click=\\\"next()\\\" ng-class=\\\"{ disabled: isNextDisabled() }\\\" ng-show=\\\"slides.length > 1\\\">\\n\" +\r\n \" <span class=\\\"carousel-control-next-icon\\\" aria-hidden=\\\"true\\\"></span>\\n\" +\r\n \" <span class=\\\"sr-only\\\">Next</span>\\n\" +\r\n \"</a>\\n\" +\r\n \"<ol class=\\\"carousel-indicators\\\" ng-show=\\\"slides.length > 1\\\">\\n\" +\r\n \" <li ng-repeat=\\\"slide in slides | orderBy:indexOfSlide track by $index\\\" ng-class=\\\"{ active: isActive(slide) }\\\" ng-click=\\\"select(slide)\\\">\\n\" +\r\n \" <span class=\\\"sr-only\\\">slide {{ $index + 1 }} of {{ slides.length }}<span ng-if=\\\"isActive(slide)\\\">, currently active</span></span>\\n\" +\r\n \" </li>\\n\" +\r\n \"</ol>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/carousel/slide.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/carousel/slide.html\",\r\n \"<div class=\\\"text-center\\\" ng-transclude></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepicker/datepicker.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/datepicker.html\",\r\n \"<div ng-switch=\\\"datepickerMode\\\">\\n\" +\r\n \" <div uib-daypicker ng-switch-when=\\\"day\\\" tabindex=\\\"0\\\" class=\\\"uib-daypicker\\\"></div>\\n\" +\r\n \" <div uib-monthpicker ng-switch-when=\\\"month\\\" tabindex=\\\"0\\\" class=\\\"uib-monthpicker\\\"></div>\\n\" +\r\n \" <div uib-yearpicker ng-switch-when=\\\"year\\\" tabindex=\\\"0\\\" class=\\\"uib-yearpicker\\\"></div>\\n\" +\r\n \"</div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepicker/day.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/day.html\",\r\n \"<table role=\\\"grid\\\" aria-labelledby=\\\"{{::uniqueId}}-title\\\" aria-activedescendant=\\\"{{activeDateId}}\\\">\\n\" +\r\n \" <thead>\\n\" +\r\n \" <tr>\\n\" +\r\n \" <th>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-left uib-left\\\" ng-click=\\\"move(-1)\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1427 301l-531 531 531 531q19 19 19 45t-19 45l-166 166q-19 19-45 19t-45-19l-742-742q-19-19-19-45t19-45l742-742q19-19 45-19t45 19l166 166q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\r\n \" </i>\\n\" +\r\n \" <span class=\\\"sr-only\\\">previous</span>\\n\" +\r\n \" </button>\\n\" +\r\n \" </th>\\n\" +\r\n \" <th colspan=\\\"{{::5 + showWeeks}}\\\"><button id=\\\"{{::uniqueId}}-title\\\" role=\\\"heading\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\" type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm uib-title\\\" ng-click=\\\"toggleMode()\\\" ng-disabled=\\\"datepickerMode === maxMode\\\" tabindex=\\\"-1\\\"><strong>{{title}}</strong></button></th>\\n\" +\r\n \" <th>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-right uib-right\\\" ng-click=\\\"move(1)\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1363 877l-742 742q-19 19-45 19t-45-19l-166-166q-19-19-19-45t19-45l531-531-531-531q-19-19-19-45t19-45l166-166q19-19 45-19t45 19l742 742q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\r\n \" </i>\\n\" +\r\n \" <span class=\\\"sr-only\\\">next</span>\\n\" +\r\n \" </button>\\n\" +\r\n \" </th>\\n\" +\r\n \" </tr>\\n\" +\r\n \" <tr>\\n\" +\r\n \" <th ng-if=\\\"showWeeks\\\" class=\\\"text-center\\\"></th>\\n\" +\r\n \" <th ng-repeat=\\\"label in ::labels track by $index\\\" class=\\\"text-center\\\"><small aria-label=\\\"{{::label.full}}\\\">{{::label.abbr}}</small></th>\\n\" +\r\n \" </tr>\\n\" +\r\n \" </thead>\\n\" +\r\n \" <tbody>\\n\" +\r\n \" <tr class=\\\"uib-weeks\\\" ng-repeat=\\\"row in rows track by $index\\\" role=\\\"row\\\">\\n\" +\r\n \" <td ng-if=\\\"showWeeks\\\" class=\\\"text-center h6\\\"><em>{{ weekNumbers[$index] }}</em></td>\\n\" +\r\n \" <td ng-repeat=\\\"dt in row\\\" class=\\\"uib-day text-center\\\" role=\\\"gridcell\\\"\\n\" +\r\n \" id=\\\"{{::dt.uid}}\\\"\\n\" +\r\n \" ng-class=\\\"::dt.customClass\\\">\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm\\\"\\n\" +\r\n \" uib-is-class=\\\"\\n\" +\r\n \" 'btn-info' for selectedDt,\\n\" +\r\n \" 'active' for activeDt\\n\" +\r\n \" on dt\\\"\\n\" +\r\n \" ng-click=\\\"select(dt.date)\\\"\\n\" +\r\n \" ng-disabled=\\\"::dt.disabled\\\"\\n\" +\r\n \" tabindex=\\\"-1\\\"><span ng-class=\\\"::{'text-muted': dt.secondary, 'text-info': dt.current}\\\">{{::dt.label}}</span></button>\\n\" +\r\n \" </td>\\n\" +\r\n \" </tr>\\n\" +\r\n \" </tbody>\\n\" +\r\n \"</table>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepicker/month.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/month.html\",\r\n \"<table role=\\\"grid\\\" aria-labelledby=\\\"{{::uniqueId}}-title\\\" aria-activedescendant=\\\"{{activeDateId}}\\\">\\n\" +\r\n \" <thead>\\n\" +\r\n \" <tr>\\n\" +\r\n \" <th>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-left uib-left\\\" ng-click=\\\"move(-1)\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1427 301l-531 531 531 531q19 19 19 45t-19 45l-166 166q-19 19-45 19t-45-19l-742-742q-19-19-19-45t19-45l742-742q19-19 45-19t45 19l166 166q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\r\n \" </i>\\n\" +\r\n \" <span class=\\\"sr-only\\\">previous</span>\\n\" +\r\n \" </button>\\n\" +\r\n \" </th>\\n\" +\r\n \" <th colspan=\\\"{{::yearHeaderColspan}}\\\"><button id=\\\"{{::uniqueId}}-title\\\" role=\\\"heading\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\" type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm uib-title\\\" ng-click=\\\"toggleMode()\\\" ng-disabled=\\\"datepickerMode === maxMode\\\" tabindex=\\\"-1\\\"><strong>{{title}}</strong></button></th>\\n\" +\r\n \" <th>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-right uib-right\\\" ng-click=\\\"move(1)\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1363 877l-742 742q-19 19-45 19t-45-19l-166-166q-19-19-19-45t19-45l531-531-531-531q-19-19-19-45t19-45l166-166q19-19 45-19t45 19l742 742q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\r\n \" </i>\\n\" +\r\n \" <span class=\\\"sr-only\\\">next</span>\\n\" +\r\n \" </button>\\n\" +\r\n \" </th>\\n\" +\r\n \" </tr>\\n\" +\r\n \" </thead>\\n\" +\r\n \" <tbody>\\n\" +\r\n \" <tr class=\\\"uib-months\\\" ng-repeat=\\\"row in rows track by $index\\\" role=\\\"row\\\">\\n\" +\r\n \" <td ng-repeat=\\\"dt in row\\\" class=\\\"uib-month text-center\\\" role=\\\"gridcell\\\"\\n\" +\r\n \" id=\\\"{{::dt.uid}}\\\"\\n\" +\r\n \" ng-class=\\\"::dt.customClass\\\">\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\"\\n\" +\r\n \" uib-is-class=\\\"\\n\" +\r\n \" 'btn-info' for selectedDt,\\n\" +\r\n \" 'active' for activeDt\\n\" +\r\n \" on dt\\\"\\n\" +\r\n \" ng-click=\\\"select(dt.date)\\\"\\n\" +\r\n \" ng-disabled=\\\"::dt.disabled\\\"\\n\" +\r\n \" tabindex=\\\"-1\\\"><span ng-class=\\\"::{'text-info': dt.current}\\\">{{::dt.label}}</span></button>\\n\" +\r\n \" </td>\\n\" +\r\n \" </tr>\\n\" +\r\n \" </tbody>\\n\" +\r\n \"</table>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepicker/year.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/year.html\",\r\n \"<table role=\\\"grid\\\" aria-labelledby=\\\"{{::uniqueId}}-title\\\" aria-activedescendant=\\\"{{activeDateId}}\\\">\\n\" +\r\n \" <thead>\\n\" +\r\n \" <tr>\\n\" +\r\n \" <th>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-left uib-left\\\" ng-click=\\\"move(-1)\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1427 301l-531 531 531 531q19 19 19 45t-19 45l-166 166q-19 19-45 19t-45-19l-742-742q-19-19-19-45t19-45l742-742q19-19 45-19t45 19l166 166q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\r\n \" </i>\\n\" +\r\n \" <span class=\\\"sr-only\\\">previous</span>\\n\" +\r\n \" </button>\\n\" +\r\n \" </th>\\n\" +\r\n \" <th colspan=\\\"{{::columns - 2}}\\\">\\n\" +\r\n \" <button id=\\\"{{::uniqueId}}-title\\\" role=\\\"heading\\\" aria-live=\\\"assertive\\\" aria-atomic=\\\"true\\\" type=\\\"button\\\"\\n\" +\r\n \" class=\\\"btn btn-secondary btn-sm uib-title\\\" ng-click=\\\"toggleMode()\\\"\\n\" +\r\n \" ng-disabled=\\\"datepickerMode === maxMode\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <strong>{{title}}</strong>\\n\" +\r\n \" </button>\\n\" +\r\n \" </th>\\n\" +\r\n \" <th>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary btn-sm float-right uib-right\\\" ng-click=\\\"move(1)\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <i aria-hidden=\\\"true\\\" class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1363 877l-742 742q-19 19-45 19t-45-19l-166-166q-19-19-19-45t19-45l531-531-531-531q-19-19-19-45t19-45l166-166q19-19 45-19t45 19l742 742q19 19 19 45t-19 45z\\\"/></svg>\\n\" +\r\n \" </i>\\n\" +\r\n \" <span class=\\\"sr-only\\\">next</span>\\n\" +\r\n \" </button>\\n\" +\r\n \" </th>\\n\" +\r\n \" </tr>\\n\" +\r\n \" </thead>\\n\" +\r\n \" <tbody>\\n\" +\r\n \" <tr class=\\\"uib-years\\\" ng-repeat=\\\"row in rows track by $index\\\" role=\\\"row\\\">\\n\" +\r\n \" <td ng-repeat=\\\"dt in row\\\" class=\\\"uib-year text-center\\\" role=\\\"gridcell\\\"\\n\" +\r\n \" id=\\\"{{::dt.uid}}\\\"\\n\" +\r\n \" ng-class=\\\"::dt.customClass\\\">\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\"\\n\" +\r\n \" uib-is-class=\\\"\\n\" +\r\n \" 'btn-info' for selectedDt,\\n\" +\r\n \" 'active' for activeDt\\n\" +\r\n \" on dt\\\"\\n\" +\r\n \" ng-click=\\\"select(dt.date)\\\"\\n\" +\r\n \" ng-disabled=\\\"::dt.disabled\\\"\\n\" +\r\n \" tabindex=\\\"-1\\\"><span ng-class=\\\"::{'text-info': dt.current}\\\">{{::dt.label}}</span></button>\\n\" +\r\n \" </td>\\n\" +\r\n \" </tr>\\n\" +\r\n \" </tbody>\\n\" +\r\n \"</table>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepickerPopup/popup.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/datepickerPopup/popup.html\",\r\n \"<ul role=\\\"presentation\\\" class=\\\"uib-datepicker-popup dropdown-menu uib-position-measure\\\" dropdown-nested ng-if=\\\"isOpen\\\" ng-keydown=\\\"keydown($event)\\\" ng-click=\\\"$event.stopPropagation()\\\">\\n\" +\r\n \" <li ng-transclude></li>\\n\" +\r\n \" <li ng-if=\\\"showButtonBar\\\" class=\\\"uib-button-bar\\\">\\n\" +\r\n \" <span class=\\\"btn-group float-left\\\">\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-sm btn-info uib-datepicker-current\\\" ng-click=\\\"select('today', $event)\\\" ng-disabled=\\\"isDisabled('today')\\\">{{ getText('current') }}</button>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-sm btn-danger uib-clear\\\" ng-click=\\\"select(null, $event)\\\">{{ getText('clear') }}</button>\\n\" +\r\n \" </span>\\n\" +\r\n \" <button type=\\\"button\\\" class=\\\"btn btn-sm btn-success float-right uib-close\\\" ng-click=\\\"close($event)\\\">{{ getText('close') }}</button>\\n\" +\r\n \" </li>\\n\" +\r\n \"</ul>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/modal/window.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/modal/window.html\",\r\n \"<div class=\\\"modal-dialog {{size ? 'modal-' + size : ''}}\\\"><div class=\\\"modal-content\\\" uib-modal-transclude></div></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/pager/pager.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/pager/pager.html\",\r\n \"<li ng-class=\\\"{disabled: noPrevious()||ngDisabled, previous: align}\\\"><a href ng-click=\\\"selectPage(page - 1, $event)\\\" ng-disabled=\\\"noPrevious()||ngDisabled\\\" uib-tabindex-toggle>{{::getText('previous')}}</a></li>\\n\" +\r\n \"<li ng-class=\\\"{disabled: noNext()||ngDisabled, next: align}\\\"><a href ng-click=\\\"selectPage(page + 1, $event)\\\" ng-disabled=\\\"noNext()||ngDisabled\\\" uib-tabindex-toggle>{{::getText('next')}}</a></li>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/pagination/pagination.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/pagination/pagination.html\",\r\n \"<li role=\\\"menuitem\\\" ng-if=\\\"::boundaryLinks\\\" ng-class=\\\"{disabled: noPrevious()||ngDisabled}\\\" class=\\\"page-item\\\"><a href ng-click=\\\"selectPage(1, $event)\\\" ng-disabled=\\\"noPrevious()||ngDisabled\\\" uib-tabindex-toggle class=\\\"page-link\\\">{{::getText('first')}}</a></li>\\n\" +\r\n \"<li role=\\\"menuitem\\\" ng-if=\\\"::directionLinks\\\" ng-class=\\\"{disabled: noPrevious()||ngDisabled}\\\" class=\\\"page-item\\\"><a href ng-click=\\\"selectPage(page - 1, $event)\\\" ng-disabled=\\\"noPrevious()||ngDisabled\\\" uib-tabindex-toggle class=\\\"page-link\\\">{{::getText('previous')}}</a></li>\\n\" +\r\n \"<li role=\\\"menuitem\\\" ng-repeat=\\\"page in pages track by $index\\\" ng-class=\\\"{active: page.active,disabled: ngDisabled&&!page.active}\\\" class=\\\"page-item\\\"><a href ng-click=\\\"selectPage(page.number, $event)\\\" ng-disabled=\\\"ngDisabled&&!page.active\\\" uib-tabindex-toggle class=\\\"page-link\\\">{{page.text}}</a></li>\\n\" +\r\n \"<li role=\\\"menuitem\\\" ng-if=\\\"::directionLinks\\\" ng-class=\\\"{disabled: noNext()||ngDisabled}\\\" class=\\\"page-item\\\"><a href ng-click=\\\"selectPage(page + 1, $event)\\\" ng-disabled=\\\"noNext()||ngDisabled\\\" uib-tabindex-toggle class=\\\"page-link\\\">{{::getText('next')}}</a></li>\\n\" +\r\n \"<li role=\\\"menuitem\\\" ng-if=\\\"::boundaryLinks\\\" ng-class=\\\"{disabled: noNext()||ngDisabled}\\\" class=\\\"page-item\\\"><a href ng-click=\\\"selectPage(totalPages, $event)\\\" ng-disabled=\\\"noNext()||ngDisabled\\\" uib-tabindex-toggle class=\\\"page-link\\\">{{::getText('last')}}</a></li>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tooltip/tooltip-html-popup.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/tooltip/tooltip-html-popup.html\",\r\n \"<div class=\\\"arrow\\\"></div>\\n\" +\r\n \"<div class=\\\"tooltip-inner\\\" ng-bind-html=\\\"contentExp()\\\"></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tooltip/tooltip-popup.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/tooltip/tooltip-popup.html\",\r\n \"<div class=\\\"arrow\\\"></div>\\n\" +\r\n \"<div class=\\\"tooltip-inner\\\" ng-bind=\\\"content\\\"></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tooltip/tooltip-template-popup.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/tooltip/tooltip-template-popup.html\",\r\n \"<div class=\\\"arrow\\\"></div>\\n\" +\r\n \"<div class=\\\"tooltip-inner\\\"\\n\" +\r\n \" uib-tooltip-template-transclude=\\\"contentExp()\\\"\\n\" +\r\n \" tooltip-template-transclude-scope=\\\"originScope()\\\"></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/popover/popover-html.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/popover/popover-html.html\",\r\n \"<div class=\\\"arrow\\\"></div>\\n\" +\r\n \"<h3 class=\\\"popover-header\\\" ng-bind=\\\"uibTitle\\\" ng-if=\\\"uibTitle\\\"></h3>\\n\" +\r\n \"<div class=\\\"popover-body\\\" ng-bind-html=\\\"contentExp()\\\"></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/popover/popover-template.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/popover/popover-template.html\",\r\n \"<div class=\\\"arrow\\\"></div>\\n\" +\r\n \"\\n\" +\r\n \"<h3 class=\\\"popover-header\\\" ng-bind=\\\"uibTitle\\\" ng-if=\\\"uibTitle\\\"></h3>\\n\" +\r\n \"<div class=\\\"popover-body\\\"\\n\" +\r\n \" uib-tooltip-template-transclude=\\\"contentExp()\\\"\\n\" +\r\n \" tooltip-template-transclude-scope=\\\"originScope()\\\"></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/popover/popover.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/popover/popover.html\",\r\n \"<div class=\\\"arrow\\\"></div>\\n\" +\r\n \"<h3 class=\\\"popover-header\\\" ng-bind=\\\"uibTitle\\\" ng-if=\\\"uibTitle\\\"></h3>\\n\" +\r\n \"<div class=\\\"popover-body\\\" ng-bind=\\\"content\\\"></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/progressbar/bar.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/progressbar/bar.html\",\r\n \"<div class=\\\"progress-bar\\\" ng-class=\\\"[type ? 'bg-' + type : '', striped ? 'progress-bar-striped' : '']\\\" role=\\\"progressbar\\\" aria-valuenow=\\\"{{value}}\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"{{max}}\\\" ng-style=\\\"{width: (percent < 100 ? percent : 100) + '%'}\\\" aria-valuetext=\\\"{{percent | number:0}}%\\\" aria-labelledby=\\\"{{::title}}\\\" ng-transclude></div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/progressbar/progress.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/progressbar/progress.html\",\r\n \"<div class=\\\"progress\\\" ng-transclude aria-labelledby=\\\"{{::title}}\\\"></div>\");\r\n}]);\r\n\r\nangular.module(\"uib/template/progressbar/progressbar.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/progressbar/progressbar.html\",\r\n \"<div class=\\\"progress\\\">\\n\" +\r\n \" <div class=\\\"progress-bar\\\" ng-class=\\\"[type ? 'bg-' + type : '', striped ? 'progress-bar-striped' : '']\\\" role=\\\"progressbar\\\" aria-valuenow=\\\"{{value}}\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"{{max}}\\\" ng-style=\\\"{width: (percent < 100 ? percent : 100) + '%'}\\\" aria-valuetext=\\\"{{percent | number:0}}%\\\" aria-labelledby=\\\"{{::title}}\\\" ng-transclude></div>\\n\" +\r\n \"</div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/rating/rating.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/rating/rating.html\",\r\n \"<span ng-mouseleave=\\\"reset()\\\" ng-keydown=\\\"onKeydown($event)\\\" tabindex=\\\"0\\\" role=\\\"slider\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"{{range.length}}\\\" aria-valuenow=\\\"{{value}}\\\" aria-valuetext=\\\"{{title}}\\\">\\n\" +\r\n \" <span ng-repeat-start=\\\"r in range track by $index\\\" class=\\\"sr-only\\\">({{ $index < value ? '*' : ' ' }})</span>\\n\" +\r\n \" <i ng-repeat-end ng-mouseenter=\\\"enter($index + 1)\\\" ng-click=\\\"rate($index + 1)\\\" class=\\\"fa-svg-icon\\\" ng-class=\\\"$index < value && (r.stateOn || 'star') || (r.stateOff || 'star-empty')\\\" ng-attr-title=\\\"{{r.title}}\\\">\\n\" +\r\n \" <svg data-ng-if=\\\"$index < value\\\" width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1728 647q0 22-26 48l-363 354 86 500q1 7 1 20 0 21-10.5 35.5t-30.5 14.5q-19 0-40-12l-449-236-449 236q-22 12-40 12-21 0-31.5-14.5t-10.5-35.5q0-6 2-20l86-500-364-354q-25-27-25-48 0-37 56-46l502-73 225-455q19-41 49-41t49 41l225 455 502 73q56 9 56 46z\\\"/></svg>\\n\" +\r\n \" <svg data-ng-if=\\\"$index >= value\\\" width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1201 1004l306-297-422-62-189-382-189 382-422 62 306 297-73 421 378-199 377 199zm527-357q0 22-26 48l-363 354 86 500q1 7 1 20 0 50-41 50-19 0-40-12l-449-236-449 236q-22 12-40 12-21 0-31.5-14.5t-10.5-35.5q0-6 2-20l86-500-364-354q-25-27-25-48 0-37 56-46l502-73 225-455q19-41 49-41t49 41l225 455 502 73q56 9 56 46z\\\"/></svg>\\n\" +\r\n \" </i>\\n\" +\r\n \"</span>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tabs/tab.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/tabs/tab.html\",\r\n \"<li class=\\\"uib-tab nav-item\\\">\\n\" +\r\n \" <a href ng-click=\\\"select($event)\\\" ng-class=\\\"[{active: active, disabled: disabled}, classes]\\\" class=\\\"nav-link\\\" uib-tab-heading-transclude>{{heading}}</a>\\n\" +\r\n \"</li>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tabs/tabset.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/tabs/tabset.html\",\r\n \"<div>\\n\" +\r\n \" <ul class=\\\"nav nav-{{tabset.type || 'tabs'}}\\\" ng-class=\\\"{'nav-stacked': vertical, 'nav-justified': justified}\\\" ng-transclude></ul>\\n\" +\r\n \" <div class=\\\"tab-content\\\">\\n\" +\r\n \" <div class=\\\"tab-pane\\\"\\n\" +\r\n \" ng-repeat=\\\"tab in tabset.tabs\\\"\\n\" +\r\n \" ng-class=\\\"{active: tabset.active === tab.index}\\\"\\n\" +\r\n \" uib-tab-content-transclude=\\\"tab\\\">\\n\" +\r\n \" </div>\\n\" +\r\n \" </div>\\n\" +\r\n \"</div>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/timepicker/timepicker.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/timepicker/timepicker.html\",\r\n \"<table class=\\\"uib-timepicker\\\">\\n\" +\r\n \" <tbody>\\n\" +\r\n \" <tr class=\\\"text-center\\\" ng-show=\\\"::showSpinners\\\">\\n\" +\r\n \" <td class=\\\"uib-increment hours\\\">\\n\" +\r\n \" <a ng-click=\\\"incrementHours()\\\" ng-class=\\\"{disabled: noIncrementHours()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noIncrementHours()\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <span class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 1331l-166 165q-19 19-45 19t-45-19l-531-531-531 531q-19 19-45 19t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19 45-19t45 19l742 741q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\r\n \" </span>\\n\" +\r\n \" </a>\\n\" +\r\n \" </td>\\n\" +\r\n \" <td> </td>\\n\" +\r\n \" <td class=\\\"uib-increment minutes\\\">\\n\" +\r\n \" <a ng-click=\\\"incrementMinutes()\\\" ng-class=\\\"{disabled: noIncrementMinutes()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noIncrementMinutes()\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <span class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 1331l-166 165q-19 19-45 19t-45-19l-531-531-531 531q-19 19-45 19t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19 45-19t45 19l742 741q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\r\n \" </span>\\n\" +\r\n \" </a>\\n\" +\r\n \" </td>\\n\" +\r\n \" <td ng-show=\\\"showSeconds\\\"> </td>\\n\" +\r\n \" <td ng-show=\\\"showSeconds\\\" class=\\\"uib-increment seconds\\\">\\n\" +\r\n \" <a ng-click=\\\"incrementSeconds()\\\" ng-class=\\\"{disabled: noIncrementSeconds()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noIncrementSeconds()\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <span class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 1331l-166 165q-19 19-45 19t-45-19l-531-531-531 531q-19 19-45 19t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19 45-19t45 19l742 741q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\r\n \" </span>\\n\" +\r\n \" </a>\\n\" +\r\n \" </td>\\n\" +\r\n \" <td ng-show=\\\"showMeridian\\\"></td>\\n\" +\r\n \" </tr>\\n\" +\r\n \" <tr>\\n\" +\r\n \" <td class=\\\"form-group uib-time hours\\\" ng-class=\\\"{'has-error': invalidHours}\\\">\\n\" +\r\n \" <input type=\\\"text\\\" placeholder=\\\"HH\\\" ng-model=\\\"hours\\\" ng-change=\\\"updateHours()\\\" class=\\\"form-control text-center\\\" ng-readonly=\\\"::readonlyInput\\\" maxlength=\\\"2\\\" tabindex=\\\"{{::tabindex}}\\\" ng-disabled=\\\"noIncrementHours()\\\" ng-blur=\\\"blur()\\\">\\n\" +\r\n \" </td>\\n\" +\r\n \" <td class=\\\"uib-separator\\\">:</td>\\n\" +\r\n \" <td class=\\\"form-group uib-time minutes\\\" ng-class=\\\"{'has-error': invalidMinutes}\\\">\\n\" +\r\n \" <input type=\\\"text\\\" placeholder=\\\"MM\\\" ng-model=\\\"minutes\\\" ng-change=\\\"updateMinutes()\\\" class=\\\"form-control text-center\\\" ng-readonly=\\\"::readonlyInput\\\" maxlength=\\\"2\\\" tabindex=\\\"{{::tabindex}}\\\" ng-disabled=\\\"noIncrementMinutes()\\\" ng-blur=\\\"blur()\\\">\\n\" +\r\n \" </td>\\n\" +\r\n \" <td ng-show=\\\"showSeconds\\\" class=\\\"uib-separator\\\">:</td>\\n\" +\r\n \" <td class=\\\"form-group uib-time seconds\\\" ng-class=\\\"{'has-error': invalidSeconds}\\\" ng-show=\\\"showSeconds\\\">\\n\" +\r\n \" <input type=\\\"text\\\" placeholder=\\\"SS\\\" ng-model=\\\"seconds\\\" ng-change=\\\"updateSeconds()\\\" class=\\\"form-control text-center\\\" ng-readonly=\\\"readonlyInput\\\" maxlength=\\\"2\\\" tabindex=\\\"{{::tabindex}}\\\" ng-disabled=\\\"noIncrementSeconds()\\\" ng-blur=\\\"blur()\\\">\\n\" +\r\n \" </td>\\n\" +\r\n \" <td ng-show=\\\"showMeridian\\\" class=\\\"uib-time am-pm\\\"><button type=\\\"button\\\" ng-class=\\\"{disabled: noToggleMeridian()}\\\" class=\\\"btn btn-secondary text-center\\\" ng-click=\\\"toggleMeridian()\\\" ng-disabled=\\\"noToggleMeridian()\\\" tabindex=\\\"{{::tabindex}}\\\">{{meridian}}</button></td>\\n\" +\r\n \" </tr>\\n\" +\r\n \" <tr class=\\\"text-center\\\" ng-show=\\\"::showSpinners\\\">\\n\" +\r\n \" <td class=\\\"uib-decrement hours\\\">\\n\" +\r\n \" <a ng-click=\\\"decrementHours()\\\" ng-class=\\\"{disabled: noDecrementHours()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noDecrementHours()\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <span class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 808l-742 741q-19 19-45 19t-45-19l-742-741q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\r\n \" </span>\\n\" +\r\n \" </a>\\n\" +\r\n \" </td>\\n\" +\r\n \" <td> </td>\\n\" +\r\n \" <td class=\\\"uib-decrement minutes\\\">\\n\" +\r\n \" <a ng-click=\\\"decrementMinutes()\\\" ng-class=\\\"{disabled: noDecrementMinutes()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noDecrementMinutes()\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <span class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 808l-742 741q-19 19-45 19t-45-19l-742-741q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\r\n \" </span>\\n\" +\r\n \" </a>\\n\" +\r\n \" </td>\\n\" +\r\n \" <td ng-show=\\\"showSeconds\\\"> </td>\\n\" +\r\n \" <td ng-show=\\\"showSeconds\\\" class=\\\"uib-decrement seconds\\\">\\n\" +\r\n \" <a ng-click=\\\"decrementSeconds()\\\" ng-class=\\\"{disabled: noDecrementSeconds()}\\\" class=\\\"btn btn-link\\\" ng-disabled=\\\"noDecrementSeconds()\\\" tabindex=\\\"-1\\\">\\n\" +\r\n \" <span class=\\\"fa-svg-icon\\\">\\n\" +\r\n \" <svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1683 808l-742 741q-19 19-45 19t-45-19l-742-741q-19-19-19-45.5t19-45.5l166-165q19-19 45-19t45 19l531 531 531-531q19-19 45-19t45 19l166 165q19 19 19 45.5t-19 45.5z\\\"/></svg>\\n\" +\r\n \" </span>\\n\" +\r\n \" </a>\\n\" +\r\n \" </td>\\n\" +\r\n \" <td ng-show=\\\"showMeridian\\\"></td>\\n\" +\r\n \" </tr>\\n\" +\r\n \" </tbody>\\n\" +\r\n \"</table>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/typeahead/typeahead-match.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/typeahead/typeahead-match.html\",\r\n \"<a href\\n\" +\r\n \" tabindex=\\\"-1\\\"\\n\" +\r\n \" class=\\\"dropdown-item\\\"\\n\" +\r\n \" ng-bind-html=\\\"match.label | uibTypeaheadHighlight:query\\\"\\n\" +\r\n \" ng-attr-title=\\\"{{match.label}}\\\"></a>\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/typeahead/typeahead-popup.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/typeahead/typeahead-popup.html\",\r\n \"<ul class=\\\"dropdown-menu\\\" ng-show=\\\"isOpen() && !moveInProgress\\\" ng-style=\\\"{top: position().top+'px', left: position().left+'px'}\\\" role=\\\"listbox\\\" aria-hidden=\\\"{{!isOpen()}}\\\">\\n\" +\r\n \" <li class=\\\"uib-typeahead-match\\\" ng-repeat=\\\"match in matches track by $index\\\" ng-class=\\\"{active: isActive($index) }\\\" ng-mouseenter=\\\"selectActive($index)\\\" ng-click=\\\"selectMatch($index, $event)\\\" role=\\\"option\\\" id=\\\"{{::match.id}}\\\">\\n\" +\r\n \" <div uib-typeahead-match index=\\\"$index\\\" match=\\\"match\\\" query=\\\"query\\\" template-url=\\\"templateUrl\\\"></div>\\n\" +\r\n \" </li>\\n\" +\r\n \"</ul>\\n\" +\r\n \"\");\r\n}]);\r\nangular.module('ui.bootstrap.carousel').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibCarouselCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.ng-animate.item:not(.left):not(.right){-webkit-transition:0s ease-in-out left;transition:0s ease-in-out left}</style>'); angular.$$uibCarouselCss = true; });\r\nangular.module('ui.bootstrap.common').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibCommonCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.fa-svg-icon{display:inline-block;vertical-align:middle;min-width:1em;min-height:1em;height:100%;position:relative;top:-1px;}.fa-svg-icon svg{position:absolute;top:0;left:0;width:100%;height:100%;}.fa-svg-icon svg g,.fa-svg-icon svg path{fill:currentColor;}</style>'); angular.$$uibCommonCss = true; });\r\nangular.module('ui.bootstrap.datepicker').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibDatepickerCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.uib-datepicker .uib-title{width:100%;}.uib-day button,.uib-month button,.uib-year button{min-width:100%;}.uib-left,.uib-right{width:100%}</style>'); angular.$$uibDatepickerCss = true; });\r\nangular.module('ui.bootstrap.position').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibPositionCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.uib-position-measure{display:block !important;visibility:hidden !important;position:absolute !important;top:-9999px !important;left:-9999px !important;}.uib-position-scrollbar-measure{position:absolute !important;top:-9999px !important;width:50px !important;height:50px !important;overflow:scroll !important;}.uib-position-body-scrollbar-measure{overflow:scroll !important;}</style>'); angular.$$uibPositionCss = true; });\r\nangular.module('ui.bootstrap.datepickerPopup').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibDatepickerpopupCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.uib-datepicker-popup.dropdown-menu{display:block;float:none;margin:0;}.uib-button-bar{padding:10px;}</style>'); angular.$$uibDatepickerpopupCss = true; });\r\nangular.module('ui.bootstrap.tooltip').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibTooltipCss && angular.element(document).find('head').prepend('<style type=\"text/css\">[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,[uib-popover-popup].popover.top-left > .arrow,[uib-popover-popup].popover.top-right > .arrow,[uib-popover-popup].popover.bottom-left > .arrow,[uib-popover-popup].popover.bottom-right > .arrow,[uib-popover-popup].popover.left-top > .arrow,[uib-popover-popup].popover.left-bottom > .arrow,[uib-popover-popup].popover.right-top > .arrow,[uib-popover-popup].popover.right-bottom > .arrow,[uib-popover-html-popup].popover.top-left > .arrow,[uib-popover-html-popup].popover.top-right > .arrow,[uib-popover-html-popup].popover.bottom-left > .arrow,[uib-popover-html-popup].popover.bottom-right > .arrow,[uib-popover-html-popup].popover.left-top > .arrow,[uib-popover-html-popup].popover.left-bottom > .arrow,[uib-popover-html-popup].popover.right-top > .arrow,[uib-popover-html-popup].popover.right-bottom > .arrow,[uib-popover-template-popup].popover.top-left > .arrow,[uib-popover-template-popup].popover.top-right > .arrow,[uib-popover-template-popup].popover.bottom-left > .arrow,[uib-popover-template-popup].popover.bottom-right > .arrow,[uib-popover-template-popup].popover.left-top > .arrow,[uib-popover-template-popup].popover.left-bottom > .arrow,[uib-popover-template-popup].popover.right-top > .arrow,[uib-popover-template-popup].popover.right-bottom > .arrow{top:auto;bottom:auto;left:auto;right:auto;margin:0;}[uib-popover-popup].popover,[uib-popover-html-popup].popover,[uib-popover-template-popup].popover{display:block !important;}</style>'); angular.$$uibTooltipCss = true; });\r\nangular.module('ui.bootstrap.timepicker').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibTimepickerCss && angular.element(document).find('head').prepend('<style type=\"text/css\">.uib-time input{width:50px !important;}</style>'); angular.$$uibTimepickerCss = true; });\r\nangular.module('ui.bootstrap.typeahead').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uibTypeaheadCss && angular.element(document).find('head').prepend('<style type=\"text/css\">[uib-typeahead-popup].dropdown-menu{display:block;}</style>'); angular.$$uibTypeaheadCss = true; });","/**\r\n * @license\r\n * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE\r\n */\r\n;(function(){function n(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function t(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u<i;){var o=n[u];t(e,o,r(o),n)}return e}function r(n,t){for(var r=-1,e=null==n?0:n.length;++r<e&&false!==t(n[r],r,n););return n}function e(n,t){for(var r=null==n?0:n.length;r--&&false!==t(n[r],r,n););return n}function u(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(!t(n[r],r,n))return false;\r\nreturn true}function i(n,t){for(var r=-1,e=null==n?0:n.length,u=0,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[u++]=o)}return i}function o(n,t){return!(null==n||!n.length)&&-1<v(n,t,0)}function f(n,t,r){for(var e=-1,u=null==n?0:n.length;++e<u;)if(r(t,n[e]))return true;return false}function c(n,t){for(var r=-1,e=null==n?0:n.length,u=Array(e);++r<e;)u[r]=t(n[r],r,n);return u}function a(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function l(n,t,r,e){var u=-1,i=null==n?0:n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n);\r\nreturn r}function s(n,t,r,e){var u=null==n?0:n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function h(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(t(n[r],r,n))return true;return false}function p(n,t,r){var e;return r(n,function(n,r,u){if(t(n,r,u))return e=r,false}),e}function _(n,t,r,e){var u=n.length;for(r+=e?1:-1;e?r--:++r<u;)if(t(n[r],r,n))return r;return-1}function v(n,t,r){if(t===t)n:{--r;for(var e=n.length;++r<e;)if(n[r]===t){n=r;break n}n=-1}else n=_(n,d,r);return n}function g(n,t,r,e){\r\n--r;for(var u=n.length;++r<u;)if(e(n[r],t))return r;return-1}function d(n){return n!==n}function y(n,t){var r=null==n?0:n.length;return r?m(n,t)/r:F}function b(n){return function(t){return null==t?T:t[n]}}function x(n){return function(t){return null==n?T:n[t]}}function j(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=false,n):t(r,n,u,i)}),r}function w(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function m(n,t){for(var r,e=-1,u=n.length;++e<u;){var i=t(n[e]);i!==T&&(r=r===T?i:r+i)}return r;\r\n}function A(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function k(n,t){return c(t,function(t){return[t,n[t]]})}function E(n){return function(t){return n(t)}}function S(n,t){return c(t,function(t){return n[t]})}function O(n,t){return n.has(t)}function I(n,t){for(var r=-1,e=n.length;++r<e&&-1<v(t,n[r],0););return r}function R(n,t){for(var r=n.length;r--&&-1<v(t,n[r],0););return r}function z(n){return\"\\\\\"+Ln[n]}function W(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n];\r\n}),r}function U(n,t){return function(r){return n(t(r))}}function B(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r];o!==t&&\"__lodash_placeholder__\"!==o||(n[r]=\"__lodash_placeholder__\",i[u++]=r)}return i}function L(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=n}),r}function C(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=[n,n]}),r}function D(n){if(Rn.test(n)){for(var t=On.lastIndex=0;On.test(n);)++t;n=t}else n=Qn(n);return n}function M(n){return Rn.test(n)?n.match(On)||[]:n.split(\"\");\r\n}var T,$=1/0,F=NaN,N=[[\"ary\",128],[\"bind\",1],[\"bindKey\",2],[\"curry\",8],[\"curryRight\",16],[\"flip\",512],[\"partial\",32],[\"partialRight\",64],[\"rearg\",256]],P=/\\b__p\\+='';/g,Z=/\\b(__p\\+=)''\\+/g,q=/(__e\\(.*?\\)|\\b__t\\))\\+'';/g,V=/&(?:amp|lt|gt|quot|#39);/g,K=/[&<>\"']/g,G=RegExp(V.source),H=RegExp(K.source),J=/<%-([\\s\\S]+?)%>/g,Y=/<%([\\s\\S]+?)%>/g,Q=/<%=([\\s\\S]+?)%>/g,X=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,nn=/^\\w*$/,tn=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,rn=/[\\\\^$.*+?()[\\]{}|]/g,en=RegExp(rn.source),un=/^\\s+|\\s+$/g,on=/^\\s+/,fn=/\\s+$/,cn=/\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,an=/\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,ln=/,? & /,sn=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g,hn=/\\\\(\\\\)?/g,pn=/\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g,_n=/\\w*$/,vn=/^[-+]0x[0-9a-f]+$/i,gn=/^0b[01]+$/i,dn=/^\\[object .+?Constructor\\]$/,yn=/^0o[0-7]+$/i,bn=/^(?:0|[1-9]\\d*)$/,xn=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,jn=/($^)/,wn=/['\\n\\r\\u2028\\u2029\\\\]/g,mn=\"[\\\\ufe0e\\\\ufe0f]?(?:[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|\\\\ud83c[\\\\udffb-\\\\udfff])?(?:\\\\u200d(?:[^\\\\ud800-\\\\udfff]|(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}|[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff])[\\\\ufe0e\\\\ufe0f]?(?:[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|\\\\ud83c[\\\\udffb-\\\\udfff])?)*\",An=\"(?:[\\\\u2700-\\\\u27bf]|(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}|[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff])\"+mn,kn=\"(?:[^\\\\ud800-\\\\udfff][\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]?|[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}|[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]|[\\\\ud800-\\\\udfff])\",En=RegExp(\"['\\u2019]\",\"g\"),Sn=RegExp(\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",\"g\"),On=RegExp(\"\\\\ud83c[\\\\udffb-\\\\udfff](?=\\\\ud83c[\\\\udffb-\\\\udfff])|\"+kn+mn,\"g\"),In=RegExp([\"[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]?[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]+(?:['\\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000]|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]|$)|(?:[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]|[^\\\\ud800-\\\\udfff\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\\\\d+\\\\u2700-\\\\u27bfa-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xffA-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde])+(?:['\\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000]|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde](?:[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]|[^\\\\ud800-\\\\udfff\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\\\\d+\\\\u2700-\\\\u27bfa-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xffA-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde])|$)|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]?(?:[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]|[^\\\\ud800-\\\\udfff\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\\\\d+\\\\u2700-\\\\u27bfa-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xffA-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde])+(?:['\\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]+(?:['\\u2019](?:D|LL|M|RE|S|T|VE))?|\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])|\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])|\\\\d+\",An].join(\"|\"),\"g\"),Rn=RegExp(\"[\\\\u200d\\\\ud800-\\\\udfff\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff\\\\ufe0e\\\\ufe0f]\"),zn=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Wn=\"Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout\".split(\" \"),Un={};\r\nUn[\"[object Float32Array]\"]=Un[\"[object Float64Array]\"]=Un[\"[object Int8Array]\"]=Un[\"[object Int16Array]\"]=Un[\"[object Int32Array]\"]=Un[\"[object Uint8Array]\"]=Un[\"[object Uint8ClampedArray]\"]=Un[\"[object Uint16Array]\"]=Un[\"[object Uint32Array]\"]=true,Un[\"[object Arguments]\"]=Un[\"[object Array]\"]=Un[\"[object ArrayBuffer]\"]=Un[\"[object Boolean]\"]=Un[\"[object DataView]\"]=Un[\"[object Date]\"]=Un[\"[object Error]\"]=Un[\"[object Function]\"]=Un[\"[object Map]\"]=Un[\"[object Number]\"]=Un[\"[object Object]\"]=Un[\"[object RegExp]\"]=Un[\"[object Set]\"]=Un[\"[object String]\"]=Un[\"[object WeakMap]\"]=false;\r\nvar Bn={};Bn[\"[object Arguments]\"]=Bn[\"[object Array]\"]=Bn[\"[object ArrayBuffer]\"]=Bn[\"[object DataView]\"]=Bn[\"[object Boolean]\"]=Bn[\"[object Date]\"]=Bn[\"[object Float32Array]\"]=Bn[\"[object Float64Array]\"]=Bn[\"[object Int8Array]\"]=Bn[\"[object Int16Array]\"]=Bn[\"[object Int32Array]\"]=Bn[\"[object Map]\"]=Bn[\"[object Number]\"]=Bn[\"[object Object]\"]=Bn[\"[object RegExp]\"]=Bn[\"[object Set]\"]=Bn[\"[object String]\"]=Bn[\"[object Symbol]\"]=Bn[\"[object Uint8Array]\"]=Bn[\"[object Uint8ClampedArray]\"]=Bn[\"[object Uint16Array]\"]=Bn[\"[object Uint32Array]\"]=true,\r\nBn[\"[object Error]\"]=Bn[\"[object Function]\"]=Bn[\"[object WeakMap]\"]=false;var Ln={\"\\\\\":\"\\\\\",\"'\":\"'\",\"\\n\":\"n\",\"\\r\":\"r\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},Cn=parseFloat,Dn=parseInt,Mn=typeof global==\"object\"&&global&&global.Object===Object&&global,Tn=typeof self==\"object\"&&self&&self.Object===Object&&self,$n=Mn||Tn||Function(\"return this\")(),Fn=typeof exports==\"object\"&&exports&&!exports.nodeType&&exports,Nn=Fn&&typeof module==\"object\"&&module&&!module.nodeType&&module,Pn=Nn&&Nn.exports===Fn,Zn=Pn&&Mn.process,qn=function(){\r\ntry{var n=Nn&&Nn.require&&Nn.require(\"util\").types;return n?n:Zn&&Zn.binding&&Zn.binding(\"util\")}catch(n){}}(),Vn=qn&&qn.isArrayBuffer,Kn=qn&&qn.isDate,Gn=qn&&qn.isMap,Hn=qn&&qn.isRegExp,Jn=qn&&qn.isSet,Yn=qn&&qn.isTypedArray,Qn=b(\"length\"),Xn=x({\"\\xc0\":\"A\",\"\\xc1\":\"A\",\"\\xc2\":\"A\",\"\\xc3\":\"A\",\"\\xc4\":\"A\",\"\\xc5\":\"A\",\"\\xe0\":\"a\",\"\\xe1\":\"a\",\"\\xe2\":\"a\",\"\\xe3\":\"a\",\"\\xe4\":\"a\",\"\\xe5\":\"a\",\"\\xc7\":\"C\",\"\\xe7\":\"c\",\"\\xd0\":\"D\",\"\\xf0\":\"d\",\"\\xc8\":\"E\",\"\\xc9\":\"E\",\"\\xca\":\"E\",\"\\xcb\":\"E\",\"\\xe8\":\"e\",\"\\xe9\":\"e\",\"\\xea\":\"e\",\"\\xeb\":\"e\",\r\n\"\\xcc\":\"I\",\"\\xcd\":\"I\",\"\\xce\":\"I\",\"\\xcf\":\"I\",\"\\xec\":\"i\",\"\\xed\":\"i\",\"\\xee\":\"i\",\"\\xef\":\"i\",\"\\xd1\":\"N\",\"\\xf1\":\"n\",\"\\xd2\":\"O\",\"\\xd3\":\"O\",\"\\xd4\":\"O\",\"\\xd5\":\"O\",\"\\xd6\":\"O\",\"\\xd8\":\"O\",\"\\xf2\":\"o\",\"\\xf3\":\"o\",\"\\xf4\":\"o\",\"\\xf5\":\"o\",\"\\xf6\":\"o\",\"\\xf8\":\"o\",\"\\xd9\":\"U\",\"\\xda\":\"U\",\"\\xdb\":\"U\",\"\\xdc\":\"U\",\"\\xf9\":\"u\",\"\\xfa\":\"u\",\"\\xfb\":\"u\",\"\\xfc\":\"u\",\"\\xdd\":\"Y\",\"\\xfd\":\"y\",\"\\xff\":\"y\",\"\\xc6\":\"Ae\",\"\\xe6\":\"ae\",\"\\xde\":\"Th\",\"\\xfe\":\"th\",\"\\xdf\":\"ss\",\"\\u0100\":\"A\",\"\\u0102\":\"A\",\"\\u0104\":\"A\",\"\\u0101\":\"a\",\"\\u0103\":\"a\",\"\\u0105\":\"a\",\r\n\"\\u0106\":\"C\",\"\\u0108\":\"C\",\"\\u010a\":\"C\",\"\\u010c\":\"C\",\"\\u0107\":\"c\",\"\\u0109\":\"c\",\"\\u010b\":\"c\",\"\\u010d\":\"c\",\"\\u010e\":\"D\",\"\\u0110\":\"D\",\"\\u010f\":\"d\",\"\\u0111\":\"d\",\"\\u0112\":\"E\",\"\\u0114\":\"E\",\"\\u0116\":\"E\",\"\\u0118\":\"E\",\"\\u011a\":\"E\",\"\\u0113\":\"e\",\"\\u0115\":\"e\",\"\\u0117\":\"e\",\"\\u0119\":\"e\",\"\\u011b\":\"e\",\"\\u011c\":\"G\",\"\\u011e\":\"G\",\"\\u0120\":\"G\",\"\\u0122\":\"G\",\"\\u011d\":\"g\",\"\\u011f\":\"g\",\"\\u0121\":\"g\",\"\\u0123\":\"g\",\"\\u0124\":\"H\",\"\\u0126\":\"H\",\"\\u0125\":\"h\",\"\\u0127\":\"h\",\"\\u0128\":\"I\",\"\\u012a\":\"I\",\"\\u012c\":\"I\",\"\\u012e\":\"I\",\"\\u0130\":\"I\",\r\n\"\\u0129\":\"i\",\"\\u012b\":\"i\",\"\\u012d\":\"i\",\"\\u012f\":\"i\",\"\\u0131\":\"i\",\"\\u0134\":\"J\",\"\\u0135\":\"j\",\"\\u0136\":\"K\",\"\\u0137\":\"k\",\"\\u0138\":\"k\",\"\\u0139\":\"L\",\"\\u013b\":\"L\",\"\\u013d\":\"L\",\"\\u013f\":\"L\",\"\\u0141\":\"L\",\"\\u013a\":\"l\",\"\\u013c\":\"l\",\"\\u013e\":\"l\",\"\\u0140\":\"l\",\"\\u0142\":\"l\",\"\\u0143\":\"N\",\"\\u0145\":\"N\",\"\\u0147\":\"N\",\"\\u014a\":\"N\",\"\\u0144\":\"n\",\"\\u0146\":\"n\",\"\\u0148\":\"n\",\"\\u014b\":\"n\",\"\\u014c\":\"O\",\"\\u014e\":\"O\",\"\\u0150\":\"O\",\"\\u014d\":\"o\",\"\\u014f\":\"o\",\"\\u0151\":\"o\",\"\\u0154\":\"R\",\"\\u0156\":\"R\",\"\\u0158\":\"R\",\"\\u0155\":\"r\",\"\\u0157\":\"r\",\r\n\"\\u0159\":\"r\",\"\\u015a\":\"S\",\"\\u015c\":\"S\",\"\\u015e\":\"S\",\"\\u0160\":\"S\",\"\\u015b\":\"s\",\"\\u015d\":\"s\",\"\\u015f\":\"s\",\"\\u0161\":\"s\",\"\\u0162\":\"T\",\"\\u0164\":\"T\",\"\\u0166\":\"T\",\"\\u0163\":\"t\",\"\\u0165\":\"t\",\"\\u0167\":\"t\",\"\\u0168\":\"U\",\"\\u016a\":\"U\",\"\\u016c\":\"U\",\"\\u016e\":\"U\",\"\\u0170\":\"U\",\"\\u0172\":\"U\",\"\\u0169\":\"u\",\"\\u016b\":\"u\",\"\\u016d\":\"u\",\"\\u016f\":\"u\",\"\\u0171\":\"u\",\"\\u0173\":\"u\",\"\\u0174\":\"W\",\"\\u0175\":\"w\",\"\\u0176\":\"Y\",\"\\u0177\":\"y\",\"\\u0178\":\"Y\",\"\\u0179\":\"Z\",\"\\u017b\":\"Z\",\"\\u017d\":\"Z\",\"\\u017a\":\"z\",\"\\u017c\":\"z\",\"\\u017e\":\"z\",\"\\u0132\":\"IJ\",\r\n\"\\u0133\":\"ij\",\"\\u0152\":\"Oe\",\"\\u0153\":\"oe\",\"\\u0149\":\"'n\",\"\\u017f\":\"s\"}),nt=x({\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\"}),tt=x({\"&\":\"&\",\"<\":\"<\",\">\":\">\",\""\":'\"',\"'\":\"'\"}),rt=function x(mn){function An(n){if(yu(n)&&!ff(n)&&!(n instanceof Ln)){if(n instanceof On)return n;if(oi.call(n,\"__wrapped__\"))return Fe(n)}return new On(n)}function kn(){}function On(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=T}function Ln(n){\r\nthis.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Mn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Tn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Fn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Nn(n){var t=-1,r=null==n?0:n.length;for(this.__data__=new Fn;++t<r;)this.add(n[t]);\r\n}function Zn(n){this.size=(this.__data__=new Tn(n)).size}function qn(n,t){var r,e=ff(n),u=!e&&of(n),i=!e&&!u&&af(n),o=!e&&!u&&!i&&_f(n),u=(e=e||u||i||o)?A(n.length,ni):[],f=u.length;for(r in n)!t&&!oi.call(n,r)||e&&(\"length\"==r||i&&(\"offset\"==r||\"parent\"==r)||o&&(\"buffer\"==r||\"byteLength\"==r||\"byteOffset\"==r)||Se(r,f))||u.push(r);return u}function Qn(n){var t=n.length;return t?n[ir(0,t-1)]:T}function et(n,t){return De(Lr(n),pt(t,0,n.length))}function ut(n){return De(Lr(n))}function it(n,t,r){(r===T||lu(n[t],r))&&(r!==T||t in n)||st(n,t,r);\r\n}function ot(n,t,r){var e=n[t];oi.call(n,t)&&lu(e,r)&&(r!==T||t in n)||st(n,t,r)}function ft(n,t){for(var r=n.length;r--;)if(lu(n[r][0],t))return r;return-1}function ct(n,t,r,e){return uo(n,function(n,u,i){t(e,n,r(n),i)}),e}function at(n,t){return n&&Cr(t,Wu(t),n)}function lt(n,t){return n&&Cr(t,Uu(t),n)}function st(n,t,r){\"__proto__\"==t&&Ai?Ai(n,t,{configurable:true,enumerable:true,value:r,writable:true}):n[t]=r}function ht(n,t){for(var r=-1,e=t.length,u=Ku(e),i=null==n;++r<e;)u[r]=i?T:Ru(n,t[r]);return u;\r\n}function pt(n,t,r){return n===n&&(r!==T&&(n=n<=r?n:r),t!==T&&(n=n>=t?n:t)),n}function _t(n,t,e,u,i,o){var f,c=1&t,a=2&t,l=4&t;if(e&&(f=i?e(n,u,i,o):e(n)),f!==T)return f;if(!du(n))return n;if(u=ff(n)){if(f=me(n),!c)return Lr(n,f)}else{var s=vo(n),h=\"[object Function]\"==s||\"[object GeneratorFunction]\"==s;if(af(n))return Ir(n,c);if(\"[object Object]\"==s||\"[object Arguments]\"==s||h&&!i){if(f=a||h?{}:Ae(n),!c)return a?Mr(n,lt(f,n)):Dr(n,at(f,n))}else{if(!Bn[s])return i?n:{};f=ke(n,s,c)}}if(o||(o=new Zn),\r\ni=o.get(n))return i;if(o.set(n,f),pf(n))return n.forEach(function(r){f.add(_t(r,t,e,r,n,o))}),f;if(sf(n))return n.forEach(function(r,u){f.set(u,_t(r,t,e,u,n,o))}),f;var a=l?a?ve:_e:a?Uu:Wu,p=u?T:a(n);return r(p||n,function(r,u){p&&(u=r,r=n[u]),ot(f,u,_t(r,t,e,u,n,o))}),f}function vt(n){var t=Wu(n);return function(r){return gt(r,n,t)}}function gt(n,t,r){var e=r.length;if(null==n)return!e;for(n=Qu(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===T&&!(u in n)||!i(o))return false}return true}function dt(n,t,r){if(typeof n!=\"function\")throw new ti(\"Expected a function\");\r\nreturn bo(function(){n.apply(T,r)},t)}function yt(n,t,r,e){var u=-1,i=o,a=true,l=n.length,s=[],h=t.length;if(!l)return s;r&&(t=c(t,E(r))),e?(i=f,a=false):200<=t.length&&(i=O,a=false,t=new Nn(t));n:for(;++u<l;){var p=n[u],_=null==r?p:r(p),p=e||0!==p?p:0;if(a&&_===_){for(var v=h;v--;)if(t[v]===_)continue n;s.push(p)}else i(t,_,e)||s.push(p)}return s}function bt(n,t){var r=true;return uo(n,function(n,e,u){return r=!!t(n,e,u)}),r}function xt(n,t,r){for(var e=-1,u=n.length;++e<u;){var i=n[e],o=t(i);if(null!=o&&(f===T?o===o&&!wu(o):r(o,f)))var f=o,c=i;\r\n}return c}function jt(n,t){var r=[];return uo(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function wt(n,t,r,e,u){var i=-1,o=n.length;for(r||(r=Ee),u||(u=[]);++i<o;){var f=n[i];0<t&&r(f)?1<t?wt(f,t-1,r,e,u):a(u,f):e||(u[u.length]=f)}return u}function mt(n,t){return n&&oo(n,t,Wu)}function At(n,t){return n&&fo(n,t,Wu)}function kt(n,t){return i(t,function(t){return _u(n[t])})}function Et(n,t){t=Sr(t,n);for(var r=0,e=t.length;null!=n&&r<e;)n=n[Me(t[r++])];return r&&r==e?n:T}function St(n,t,r){return t=t(n),\r\nff(n)?t:a(t,r(n))}function Ot(n){if(null==n)return n===T?\"[object Undefined]\":\"[object Null]\";if(mi&&mi in Qu(n)){var t=oi.call(n,mi),r=n[mi];try{n[mi]=T;var e=true}catch(n){}var u=ai.call(n);e&&(t?n[mi]=r:delete n[mi]),n=u}else n=ai.call(n);return n}function It(n,t){return n>t}function Rt(n,t){return null!=n&&oi.call(n,t)}function zt(n,t){return null!=n&&t in Qu(n)}function Wt(n,t,r){for(var e=r?f:o,u=n[0].length,i=n.length,a=i,l=Ku(i),s=1/0,h=[];a--;){var p=n[a];a&&t&&(p=c(p,E(t))),s=Ci(p.length,s),\r\nl[a]=!r&&(t||120<=u&&120<=p.length)?new Nn(a&&p):T}var p=n[0],_=-1,v=l[0];n:for(;++_<u&&h.length<s;){var g=p[_],d=t?t(g):g,g=r||0!==g?g:0;if(v?!O(v,d):!e(h,d,r)){for(a=i;--a;){var y=l[a];if(y?!O(y,d):!e(n[a],d,r))continue n}v&&v.push(d),h.push(g)}}return h}function Ut(n,t,r,e){return mt(n,function(n,u,i){t(e,r(n),u,i)}),e}function Bt(t,r,e){return r=Sr(r,t),t=2>r.length?t:Et(t,hr(r,0,-1)),r=null==t?t:t[Me(Ve(r))],null==r?T:n(r,t,e)}function Lt(n){return yu(n)&&\"[object Arguments]\"==Ot(n)}function Ct(n){\r\nreturn yu(n)&&\"[object ArrayBuffer]\"==Ot(n)}function Dt(n){return yu(n)&&\"[object Date]\"==Ot(n)}function Mt(n,t,r,e,u){if(n===t)return true;if(null==n||null==t||!yu(n)&&!yu(t))return n!==n&&t!==t;n:{var i=ff(n),o=ff(t),f=i?\"[object Array]\":vo(n),c=o?\"[object Array]\":vo(t),f=\"[object Arguments]\"==f?\"[object Object]\":f,c=\"[object Arguments]\"==c?\"[object Object]\":c,a=\"[object Object]\"==f,o=\"[object Object]\"==c;if((c=f==c)&&af(n)){if(!af(t)){t=false;break n}i=true,a=false}if(c&&!a)u||(u=new Zn),t=i||_f(n)?se(n,t,r,e,Mt,u):he(n,t,f,r,e,Mt,u);else{\r\nif(!(1&r)&&(i=a&&oi.call(n,\"__wrapped__\"),f=o&&oi.call(t,\"__wrapped__\"),i||f)){n=i?n.value():n,t=f?t.value():t,u||(u=new Zn),t=Mt(n,t,r,e,u);break n}if(c)t:if(u||(u=new Zn),i=1&r,f=_e(n),o=f.length,c=_e(t).length,o==c||i){for(a=o;a--;){var l=f[a];if(!(i?l in t:oi.call(t,l))){t=false;break t}}if((c=u.get(n))&&u.get(t))t=c==t;else{c=true,u.set(n,t),u.set(t,n);for(var s=i;++a<o;){var l=f[a],h=n[l],p=t[l];if(e)var _=i?e(p,h,l,t,n,u):e(h,p,l,n,t,u);if(_===T?h!==p&&!Mt(h,p,r,e,u):!_){c=false;break}s||(s=\"constructor\"==l);\r\n}c&&!s&&(r=n.constructor,e=t.constructor,r!=e&&\"constructor\"in n&&\"constructor\"in t&&!(typeof r==\"function\"&&r instanceof r&&typeof e==\"function\"&&e instanceof e)&&(c=false)),u.delete(n),u.delete(t),t=c}}else t=false;else t=false}}return t}function Tt(n){return yu(n)&&\"[object Map]\"==vo(n)}function $t(n,t,r,e){var u=r.length,i=u,o=!e;if(null==n)return!i;for(n=Qu(n);u--;){var f=r[u];if(o&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return false}for(;++u<i;){var f=r[u],c=f[0],a=n[c],l=f[1];if(o&&f[2]){if(a===T&&!(c in n))return false;\r\n}else{if(f=new Zn,e)var s=e(a,l,c,n,t,f);if(s===T?!Mt(l,a,3,e,f):!s)return false}}return true}function Ft(n){return!(!du(n)||ci&&ci in n)&&(_u(n)?hi:dn).test(Te(n))}function Nt(n){return yu(n)&&\"[object RegExp]\"==Ot(n)}function Pt(n){return yu(n)&&\"[object Set]\"==vo(n)}function Zt(n){return yu(n)&&gu(n.length)&&!!Un[Ot(n)]}function qt(n){return typeof n==\"function\"?n:null==n?$u:typeof n==\"object\"?ff(n)?Jt(n[0],n[1]):Ht(n):Zu(n)}function Vt(n){if(!ze(n))return Bi(n);var t,r=[];for(t in Qu(n))oi.call(n,t)&&\"constructor\"!=t&&r.push(t);\r\nreturn r}function Kt(n,t){return n<t}function Gt(n,t){var r=-1,e=su(n)?Ku(n.length):[];return uo(n,function(n,u,i){e[++r]=t(n,u,i)}),e}function Ht(n){var t=xe(n);return 1==t.length&&t[0][2]?We(t[0][0],t[0][1]):function(r){return r===n||$t(r,n,t)}}function Jt(n,t){return Ie(n)&&t===t&&!du(t)?We(Me(n),t):function(r){var e=Ru(r,n);return e===T&&e===t?zu(r,n):Mt(t,e,3)}}function Yt(n,t,r,e,u){n!==t&&oo(t,function(i,o){if(du(i)){u||(u=new Zn);var f=u,c=Be(n,o),a=Be(t,o),l=f.get(a);if(!l){var l=e?e(c,a,o+\"\",n,t,f):T,s=l===T;\r\nif(s){var h=ff(a),p=!h&&af(a),_=!h&&!p&&_f(a),l=a;h||p||_?ff(c)?l=c:hu(c)?l=Lr(c):p?(s=false,l=Ir(a,true)):_?(s=false,l=zr(a,true)):l=[]:xu(a)||of(a)?(l=c,of(c)?l=Ou(c):du(c)&&!_u(c)||(l=Ae(a))):s=false}s&&(f.set(a,l),Yt(l,a,r,e,f),f.delete(a))}it(n,o,l)}else f=e?e(Be(n,o),i,o+\"\",n,t,u):T,f===T&&(f=i),it(n,o,f)},Uu)}function Qt(n,t){var r=n.length;if(r)return t+=0>t?r:0,Se(t,r)?n[t]:T}function Xt(n,t,r){var e=-1;return t=c(t.length?t:[$u],E(ye())),n=Gt(n,function(n,r,u){return{a:c(t,function(t){return t(n)}),\r\nb:++e,c:n}}),w(n,function(n,t){var e;n:{e=-1;for(var u=n.a,i=t.a,o=u.length,f=r.length;++e<o;){var c=Wr(u[e],i[e]);if(c){if(e>=f){e=c;break n}e=c*(\"desc\"==r[e]?-1:1);break n}}e=n.b-t.b}return e})}function nr(n,t){return tr(n,t,function(t,r){return zu(n,r)})}function tr(n,t,r){for(var e=-1,u=t.length,i={};++e<u;){var o=t[e],f=Et(n,o);r(f,o)&&lr(i,Sr(o,n),f)}return i}function rr(n){return function(t){return Et(t,n)}}function er(n,t,r,e){var u=e?g:v,i=-1,o=t.length,f=n;for(n===t&&(t=Lr(t)),r&&(f=c(n,E(r)));++i<o;)for(var a=0,l=t[i],l=r?r(l):l;-1<(a=u(f,l,a,e));)f!==n&&xi.call(f,a,1),\r\nxi.call(n,a,1);return n}function ur(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(r==e||u!==i){var i=u;Se(u)?xi.call(n,u,1):xr(n,u)}}return n}function ir(n,t){return n+Ii(Ti()*(t-n+1))}function or(n,t){var r=\"\";if(!n||1>t||9007199254740991<t)return r;do t%2&&(r+=n),(t=Ii(t/2))&&(n+=n);while(t);return r}function fr(n,t){return xo(Ue(n,t,$u),n+\"\")}function cr(n){return Qn(Lu(n))}function ar(n,t){var r=Lu(n);return De(r,pt(t,0,r.length))}function lr(n,t,r,e){if(!du(n))return n;t=Sr(t,n);for(var u=-1,i=t.length,o=i-1,f=n;null!=f&&++u<i;){\r\nvar c=Me(t[u]),a=r;if(u!=o){var l=f[c],a=e?e(l,c,f):T;a===T&&(a=du(l)?l:Se(t[u+1])?[]:{})}ot(f,c,a),f=f[c]}return n}function sr(n){return De(Lu(n))}function hr(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Ku(u);++e<u;)r[e]=n[e+t];return r}function pr(n,t){var r;return uo(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function _r(n,t,r){var e=0,u=null==n?e:n.length;if(typeof t==\"number\"&&t===t&&2147483647>=u){for(;e<u;){var i=e+u>>>1,o=n[i];null!==o&&!wu(o)&&(r?o<=t:o<t)?e=i+1:u=i;\r\n}return u}return vr(n,t,$u,r)}function vr(n,t,r,e){t=r(t);for(var u=0,i=null==n?0:n.length,o=t!==t,f=null===t,c=wu(t),a=t===T;u<i;){var l=Ii((u+i)/2),s=r(n[l]),h=s!==T,p=null===s,_=s===s,v=wu(s);(o?e||_:a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):p||v?0:e?s<=t:s<t)?u=l+1:i=l}return Ci(i,4294967294)}function gr(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r],f=t?t(o):o;if(!r||!lu(f,c)){var c=f;i[u++]=0===o?0:o}}return i}function dr(n){return typeof n==\"number\"?n:wu(n)?F:+n}function yr(n){\r\nif(typeof n==\"string\")return n;if(ff(n))return c(n,yr)+\"\";if(wu(n))return ro?ro.call(n):\"\";var t=n+\"\";return\"0\"==t&&1/n==-$?\"-0\":t}function br(n,t,r){var e=-1,u=o,i=n.length,c=true,a=[],l=a;if(r)c=false,u=f;else if(200<=i){if(u=t?null:so(n))return L(u);c=false,u=O,l=new Nn}else l=t?[]:a;n:for(;++e<i;){var s=n[e],h=t?t(s):s,s=r||0!==s?s:0;if(c&&h===h){for(var p=l.length;p--;)if(l[p]===h)continue n;t&&l.push(h),a.push(s)}else u(l,h,r)||(l!==a&&l.push(h),a.push(s))}return a}function xr(n,t){return t=Sr(t,n),\r\nn=2>t.length?n:Et(n,hr(t,0,-1)),null==n||delete n[Me(Ve(t))]}function jr(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?hr(n,e?0:i,e?i+1:u):hr(n,e?i+1:0,e?u:i)}function wr(n,t){var r=n;return r instanceof Ln&&(r=r.value()),l(t,function(n,t){return t.func.apply(t.thisArg,a([n],t.args))},r)}function mr(n,t,r){var e=n.length;if(2>e)return e?br(n[0]):[];for(var u=-1,i=Ku(e);++u<e;)for(var o=n[u],f=-1;++f<e;)f!=u&&(i[u]=yt(i[u]||o,n[f],t,r));return br(wt(i,1),t,r)}function Ar(n,t,r){\r\nfor(var e=-1,u=n.length,i=t.length,o={};++e<u;)r(o,n[e],e<i?t[e]:T);return o}function kr(n){return hu(n)?n:[]}function Er(n){return typeof n==\"function\"?n:$u}function Sr(n,t){return ff(n)?n:Ie(n,t)?[n]:jo(Iu(n))}function Or(n,t,r){var e=n.length;return r=r===T?e:r,!t&&r>=e?n:hr(n,t,r)}function Ir(n,t){if(t)return n.slice();var r=n.length,r=gi?gi(r):new n.constructor(r);return n.copy(r),r}function Rr(n){var t=new n.constructor(n.byteLength);return new vi(t).set(new vi(n)),t}function zr(n,t){return new n.constructor(t?Rr(n.buffer):n.buffer,n.byteOffset,n.length);\r\n}function Wr(n,t){if(n!==t){var r=n!==T,e=null===n,u=n===n,i=wu(n),o=t!==T,f=null===t,c=t===t,a=wu(t);if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&n<t||a&&r&&u&&!e&&!i||f&&r&&u||!o&&u||!c)return-1}return 0}function Ur(n,t,r,e){var u=-1,i=n.length,o=r.length,f=-1,c=t.length,a=Li(i-o,0),l=Ku(c+a);for(e=!e;++f<c;)l[f]=t[f];for(;++u<o;)(e||u<i)&&(l[r[u]]=n[u]);for(;a--;)l[f++]=n[u++];return l}function Br(n,t,r,e){var u=-1,i=n.length,o=-1,f=r.length,c=-1,a=t.length,l=Li(i-f,0),s=Ku(l+a);\r\nfor(e=!e;++u<l;)s[u]=n[u];for(l=u;++c<a;)s[l+c]=t[c];for(;++o<f;)(e||u<i)&&(s[l+r[o]]=n[u++]);return s}function Lr(n,t){var r=-1,e=n.length;for(t||(t=Ku(e));++r<e;)t[r]=n[r];return t}function Cr(n,t,r,e){var u=!r;r||(r={});for(var i=-1,o=t.length;++i<o;){var f=t[i],c=e?e(r[f],n[f],f,r,n):T;c===T&&(c=n[f]),u?st(r,f,c):ot(r,f,c)}return r}function Dr(n,t){return Cr(n,po(n),t)}function Mr(n,t){return Cr(n,_o(n),t)}function Tr(n,r){return function(e,u){var i=ff(e)?t:ct,o=r?r():{};return i(e,n,ye(u,2),o);\r\n}}function $r(n){return fr(function(t,r){var e=-1,u=r.length,i=1<u?r[u-1]:T,o=2<u?r[2]:T,i=3<n.length&&typeof i==\"function\"?(u--,i):T;for(o&&Oe(r[0],r[1],o)&&(i=3>u?T:i,u=1),t=Qu(t);++e<u;)(o=r[e])&&n(t,o,e,i);return t})}function Fr(n,t){return function(r,e){if(null==r)return r;if(!su(r))return n(r,e);for(var u=r.length,i=t?u:-1,o=Qu(r);(t?i--:++i<u)&&false!==e(o[i],i,o););return r}}function Nr(n){return function(t,r,e){var u=-1,i=Qu(t);e=e(t);for(var o=e.length;o--;){var f=e[n?o:++u];if(false===r(i[f],f,i))break;\r\n}return t}}function Pr(n,t,r){function e(){return(this&&this!==$n&&this instanceof e?i:n).apply(u?r:this,arguments)}var u=1&t,i=Vr(n);return e}function Zr(n){return function(t){t=Iu(t);var r=Rn.test(t)?M(t):T,e=r?r[0]:t.charAt(0);return t=r?Or(r,1).join(\"\"):t.slice(1),e[n]()+t}}function qr(n){return function(t){return l(Mu(Du(t).replace(En,\"\")),n,\"\")}}function Vr(n){return function(){var t=arguments;switch(t.length){case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:\r\nreturn new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=eo(n.prototype),t=n.apply(r,t);return du(t)?t:r}}function Kr(t,r,e){function u(){for(var o=arguments.length,f=Ku(o),c=o,a=de(u);c--;)f[c]=arguments[c];return c=3>o&&f[0]!==a&&f[o-1]!==a?[]:B(f,a),o-=c.length,o<e?ue(t,r,Jr,u.placeholder,T,f,c,T,T,e-o):n(this&&this!==$n&&this instanceof u?i:t,this,f);\r\n}var i=Vr(t);return u}function Gr(n){return function(t,r,e){var u=Qu(t);if(!su(t)){var i=ye(r,3);t=Wu(t),r=function(n){return i(u[n],n,u)}}return r=n(t,r,e),-1<r?u[i?t[r]:r]:T}}function Hr(n){return pe(function(t){var r=t.length,e=r,u=On.prototype.thru;for(n&&t.reverse();e--;){var i=t[e];if(typeof i!=\"function\")throw new ti(\"Expected a function\");if(u&&!o&&\"wrapper\"==ge(i))var o=new On([],true)}for(e=o?e:r;++e<r;)var i=t[e],u=ge(i),f=\"wrapper\"==u?ho(i):T,o=f&&Re(f[0])&&424==f[1]&&!f[4].length&&1==f[9]?o[ge(f[0])].apply(o,f[3]):1==i.length&&Re(i)?o[u]():o.thru(i);\r\nreturn function(){var n=arguments,e=n[0];if(o&&1==n.length&&ff(e))return o.plant(e).value();for(var u=0,n=r?t[u].apply(this,n):e;++u<r;)n=t[u].call(this,n);return n}})}function Jr(n,t,r,e,u,i,o,f,c,a){function l(){for(var d=arguments.length,y=Ku(d),b=d;b--;)y[b]=arguments[b];if(_){var x,j=de(l),b=y.length;for(x=0;b--;)y[b]===j&&++x}if(e&&(y=Ur(y,e,u,_)),i&&(y=Br(y,i,o,_)),d-=x,_&&d<a)return j=B(y,j),ue(n,t,Jr,l.placeholder,r,y,j,f,c,a-d);if(j=h?r:this,b=p?j[n]:n,d=y.length,f){x=y.length;for(var w=Ci(f.length,x),m=Lr(y);w--;){\r\nvar A=f[w];y[w]=Se(A,x)?m[A]:T}}else v&&1<d&&y.reverse();return s&&c<d&&(y.length=c),this&&this!==$n&&this instanceof l&&(b=g||Vr(b)),b.apply(j,y)}var s=128&t,h=1&t,p=2&t,_=24&t,v=512&t,g=p?T:Vr(n);return l}function Yr(n,t){return function(r,e){return Ut(r,n,t(e),{})}}function Qr(n,t){return function(r,e){var u;if(r===T&&e===T)return t;if(r!==T&&(u=r),e!==T){if(u===T)return e;typeof r==\"string\"||typeof e==\"string\"?(r=yr(r),e=yr(e)):(r=dr(r),e=dr(e)),u=n(r,e)}return u}}function Xr(t){return pe(function(r){\r\nreturn r=c(r,E(ye())),fr(function(e){var u=this;return t(r,function(t){return n(t,u,e)})})})}function ne(n,t){t=t===T?\" \":yr(t);var r=t.length;return 2>r?r?or(t,n):t:(r=or(t,Oi(n/D(t))),Rn.test(t)?Or(M(r),0,n).join(\"\"):r.slice(0,n))}function te(t,r,e,u){function i(){for(var r=-1,c=arguments.length,a=-1,l=u.length,s=Ku(l+c),h=this&&this!==$n&&this instanceof i?f:t;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++r];return n(h,o?e:this,s)}var o=1&r,f=Vr(t);return i}function re(n){return function(t,r,e){\r\ne&&typeof e!=\"number\"&&Oe(t,r,e)&&(r=e=T),t=Au(t),r===T?(r=t,t=0):r=Au(r),e=e===T?t<r?1:-1:Au(e);var u=-1;r=Li(Oi((r-t)/(e||1)),0);for(var i=Ku(r);r--;)i[n?r:++u]=t,t+=e;return i}}function ee(n){return function(t,r){return typeof t==\"string\"&&typeof r==\"string\"||(t=Su(t),r=Su(r)),n(t,r)}}function ue(n,t,r,e,u,i,o,f,c,a){var l=8&t,s=l?o:T;o=l?T:o;var h=l?i:T;return i=l?T:i,t=(t|(l?32:64))&~(l?64:32),4&t||(t&=-4),u=[n,t,u,h,s,i,o,f,c,a],r=r.apply(T,u),Re(n)&&yo(r,u),r.placeholder=e,Le(r,n,t)}function ie(n){\r\nvar t=Yu[n];return function(n,r){if(n=Su(n),r=null==r?0:Ci(ku(r),292)){var e=(Iu(n)+\"e\").split(\"e\"),e=t(e[0]+\"e\"+(+e[1]+r)),e=(Iu(e)+\"e\").split(\"e\");return+(e[0]+\"e\"+(+e[1]-r))}return t(n)}}function oe(n){return function(t){var r=vo(t);return\"[object Map]\"==r?W(t):\"[object Set]\"==r?C(t):k(t,n(t))}}function fe(n,t,r,e,u,i,o,f){var c=2&t;if(!c&&typeof n!=\"function\")throw new ti(\"Expected a function\");var a=e?e.length:0;if(a||(t&=-97,e=u=T),o=o===T?o:Li(ku(o),0),f=f===T?f:ku(f),a-=u?u.length:0,64&t){\r\nvar l=e,s=u;e=u=T}var h=c?T:ho(n);return i=[n,t,r,e,u,l,s,i,o,f],h&&(r=i[1],n=h[1],t=r|n,e=128==n&&8==r||128==n&&256==r&&i[7].length<=h[8]||384==n&&h[7].length<=h[8]&&8==r,131>t||e)&&(1&n&&(i[2]=h[2],t|=1&r?0:4),(r=h[3])&&(e=i[3],i[3]=e?Ur(e,r,h[4]):r,i[4]=e?B(i[3],\"__lodash_placeholder__\"):h[4]),(r=h[5])&&(e=i[5],i[5]=e?Br(e,r,h[6]):r,i[6]=e?B(i[5],\"__lodash_placeholder__\"):h[6]),(r=h[7])&&(i[7]=r),128&n&&(i[8]=null==i[8]?h[8]:Ci(i[8],h[8])),null==i[9]&&(i[9]=h[9]),i[0]=h[0],i[1]=t),n=i[0],t=i[1],\r\nr=i[2],e=i[3],u=i[4],f=i[9]=i[9]===T?c?0:n.length:Li(i[9]-a,0),!f&&24&t&&(t&=-25),c=t&&1!=t?8==t||16==t?Kr(n,t,f):32!=t&&33!=t||u.length?Jr.apply(T,i):te(n,t,r,e):Pr(n,t,r),Le((h?co:yo)(c,i),n,t)}function ce(n,t,r,e){return n===T||lu(n,ei[r])&&!oi.call(e,r)?t:n}function ae(n,t,r,e,u,i){return du(n)&&du(t)&&(i.set(t,n),Yt(n,t,T,ae,i),i.delete(t)),n}function le(n){return xu(n)?T:n}function se(n,t,r,e,u,i){var o=1&r,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return false;if((c=i.get(n))&&i.get(t))return c==t;\r\nvar c=-1,a=true,l=2&r?new Nn:T;for(i.set(n,t),i.set(t,n);++c<f;){var s=n[c],p=t[c];if(e)var _=o?e(p,s,c,t,n,i):e(s,p,c,n,t,i);if(_!==T){if(_)continue;a=false;break}if(l){if(!h(t,function(n,t){if(!O(l,t)&&(s===n||u(s,n,r,e,i)))return l.push(t)})){a=false;break}}else if(s!==p&&!u(s,p,r,e,i)){a=false;break}}return i.delete(n),i.delete(t),a}function he(n,t,r,e,u,i,o){switch(r){case\"[object DataView]\":if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)break;n=n.buffer,t=t.buffer;case\"[object ArrayBuffer]\":\r\nif(n.byteLength!=t.byteLength||!i(new vi(n),new vi(t)))break;return true;case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return lu(+n,+t);case\"[object Error]\":return n.name==t.name&&n.message==t.message;case\"[object RegExp]\":case\"[object String]\":return n==t+\"\";case\"[object Map]\":var f=W;case\"[object Set]\":if(f||(f=L),n.size!=t.size&&!(1&e))break;return(r=o.get(n))?r==t:(e|=2,o.set(n,t),t=se(f(n),f(t),e,u,i,o),o.delete(n),t);case\"[object Symbol]\":if(to)return to.call(n)==to.call(t)}\r\nreturn false}function pe(n){return xo(Ue(n,T,Ze),n+\"\")}function _e(n){return St(n,Wu,po)}function ve(n){return St(n,Uu,_o)}function ge(n){for(var t=n.name+\"\",r=Gi[t],e=oi.call(Gi,t)?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function de(n){return(oi.call(An,\"placeholder\")?An:n).placeholder}function ye(){var n=An.iteratee||Fu,n=n===Fu?qt:n;return arguments.length?n(arguments[0],arguments[1]):n}function be(n,t){var r=n.__data__,e=typeof t;return(\"string\"==e||\"number\"==e||\"symbol\"==e||\"boolean\"==e?\"__proto__\"!==t:null===t)?r[typeof t==\"string\"?\"string\":\"hash\"]:r.map;\r\n}function xe(n){for(var t=Wu(n),r=t.length;r--;){var e=t[r],u=n[e];t[r]=[e,u,u===u&&!du(u)]}return t}function je(n,t){var r=null==n?T:n[t];return Ft(r)?r:T}function we(n,t,r){t=Sr(t,n);for(var e=-1,u=t.length,i=false;++e<u;){var o=Me(t[e]);if(!(i=null!=n&&r(n,o)))break;n=n[o]}return i||++e!=u?i:(u=null==n?0:n.length,!!u&&gu(u)&&Se(o,u)&&(ff(n)||of(n)))}function me(n){var t=n.length,r=new n.constructor(t);return t&&\"string\"==typeof n[0]&&oi.call(n,\"index\")&&(r.index=n.index,r.input=n.input),r}function Ae(n){\r\nreturn typeof n.constructor!=\"function\"||ze(n)?{}:eo(di(n))}function ke(n,t,r){var e=n.constructor;switch(t){case\"[object ArrayBuffer]\":return Rr(n);case\"[object Boolean]\":case\"[object Date]\":return new e(+n);case\"[object DataView]\":return t=r?Rr(n.buffer):n.buffer,new n.constructor(t,n.byteOffset,n.byteLength);case\"[object Float32Array]\":case\"[object Float64Array]\":case\"[object Int8Array]\":case\"[object Int16Array]\":case\"[object Int32Array]\":case\"[object Uint8Array]\":case\"[object Uint8ClampedArray]\":\r\ncase\"[object Uint16Array]\":case\"[object Uint32Array]\":return zr(n,r);case\"[object Map]\":return new e;case\"[object Number]\":case\"[object String]\":return new e(n);case\"[object RegExp]\":return t=new n.constructor(n.source,_n.exec(n)),t.lastIndex=n.lastIndex,t;case\"[object Set]\":return new e;case\"[object Symbol]\":return to?Qu(to.call(n)):{}}}function Ee(n){return ff(n)||of(n)||!!(ji&&n&&n[ji])}function Se(n,t){var r=typeof n;return t=null==t?9007199254740991:t,!!t&&(\"number\"==r||\"symbol\"!=r&&bn.test(n))&&-1<n&&0==n%1&&n<t;\r\n}function Oe(n,t,r){if(!du(r))return false;var e=typeof t;return!!(\"number\"==e?su(r)&&Se(t,r.length):\"string\"==e&&t in r)&&lu(r[t],n)}function Ie(n,t){if(ff(n))return false;var r=typeof n;return!(\"number\"!=r&&\"symbol\"!=r&&\"boolean\"!=r&&null!=n&&!wu(n))||(nn.test(n)||!X.test(n)||null!=t&&n in Qu(t))}function Re(n){var t=ge(n),r=An[t];return typeof r==\"function\"&&t in Ln.prototype&&(n===r||(t=ho(r),!!t&&n===t[0]))}function ze(n){var t=n&&n.constructor;return n===(typeof t==\"function\"&&t.prototype||ei)}function We(n,t){\r\nreturn function(r){return null!=r&&(r[n]===t&&(t!==T||n in Qu(r)))}}function Ue(t,r,e){return r=Li(r===T?t.length-1:r,0),function(){for(var u=arguments,i=-1,o=Li(u.length-r,0),f=Ku(o);++i<o;)f[i]=u[r+i];for(i=-1,o=Ku(r+1);++i<r;)o[i]=u[i];return o[r]=e(f),n(t,this,o)}}function Be(n,t){if(\"__proto__\"!=t)return n[t]}function Le(n,t,r){var e=t+\"\";t=xo;var u,i=$e;return u=(u=e.match(an))?u[1].split(ln):[],r=i(u,r),(i=r.length)&&(u=i-1,r[u]=(1<i?\"& \":\"\")+r[u],r=r.join(2<i?\", \":\" \"),e=e.replace(cn,\"{\\n/* [wrapped with \"+r+\"] */\\n\")),\r\nt(n,e)}function Ce(n){var t=0,r=0;return function(){var e=Di(),u=16-(e-r);if(r=e,0<u){if(800<=++t)return arguments[0]}else t=0;return n.apply(T,arguments)}}function De(n,t){var r=-1,e=n.length,u=e-1;for(t=t===T?e:t;++r<t;){var e=ir(r,u),i=n[e];n[e]=n[r],n[r]=i}return n.length=t,n}function Me(n){if(typeof n==\"string\"||wu(n))return n;var t=n+\"\";return\"0\"==t&&1/n==-$?\"-0\":t}function Te(n){if(null!=n){try{return ii.call(n)}catch(n){}return n+\"\"}return\"\"}function $e(n,t){return r(N,function(r){var e=\"_.\"+r[0];\r\nt&r[1]&&!o(n,e)&&n.push(e)}),n.sort()}function Fe(n){if(n instanceof Ln)return n.clone();var t=new On(n.__wrapped__,n.__chain__);return t.__actions__=Lr(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function Ne(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:ku(r),0>r&&(r=Li(e+r,0)),_(n,ye(t,3),r)):-1}function Pe(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==T&&(u=ku(r),u=0>r?Li(e+u,0):Ci(u,e-1)),_(n,ye(t,3),u,true)}function Ze(n){return(null==n?0:n.length)?wt(n,1):[];\r\n}function qe(n){return n&&n.length?n[0]:T}function Ve(n){var t=null==n?0:n.length;return t?n[t-1]:T}function Ke(n,t){return n&&n.length&&t&&t.length?er(n,t):n}function Ge(n){return null==n?n:$i.call(n)}function He(n){if(!n||!n.length)return[];var t=0;return n=i(n,function(n){if(hu(n))return t=Li(n.length,t),true}),A(t,function(t){return c(n,b(t))})}function Je(t,r){if(!t||!t.length)return[];var e=He(t);return null==r?e:c(e,function(t){return n(r,T,t)})}function Ye(n){return n=An(n),n.__chain__=true,n;\r\n}function Qe(n,t){return t(n)}function Xe(){return this}function nu(n,t){return(ff(n)?r:uo)(n,ye(t,3))}function tu(n,t){return(ff(n)?e:io)(n,ye(t,3))}function ru(n,t){return(ff(n)?c:Gt)(n,ye(t,3))}function eu(n,t,r){return t=r?T:t,t=n&&null==t?n.length:t,fe(n,128,T,T,T,T,t)}function uu(n,t){var r;if(typeof t!=\"function\")throw new ti(\"Expected a function\");return n=ku(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=T),r}}function iu(n,t,r){return t=r?T:t,n=fe(n,8,T,T,T,T,T,t),n.placeholder=iu.placeholder,\r\nn}function ou(n,t,r){return t=r?T:t,n=fe(n,16,T,T,T,T,T,t),n.placeholder=ou.placeholder,n}function fu(n,t,r){function e(t){var r=c,e=a;return c=a=T,_=t,s=n.apply(e,r)}function u(n){var r=n-p;return n-=_,p===T||r>=t||0>r||g&&n>=l}function i(){var n=Go();if(u(n))return o(n);var r,e=bo;r=n-_,n=t-(n-p),r=g?Ci(n,l-r):n,h=e(i,r)}function o(n){return h=T,d&&c?e(n):(c=a=T,s)}function f(){var n=Go(),r=u(n);if(c=arguments,a=this,p=n,r){if(h===T)return _=n=p,h=bo(i,t),v?e(n):s;if(g)return h=bo(i,t),e(p)}return h===T&&(h=bo(i,t)),\r\ns}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof n!=\"function\")throw new ti(\"Expected a function\");return t=Su(t)||0,du(r)&&(v=!!r.leading,l=(g=\"maxWait\"in r)?Li(Su(r.maxWait)||0,t):l,d=\"trailing\"in r?!!r.trailing:d),f.cancel=function(){h!==T&&lo(h),_=0,c=p=a=h=T},f.flush=function(){return h===T?s:o(Go())},f}function cu(n,t){if(typeof n!=\"function\"||null!=t&&typeof t!=\"function\")throw new ti(\"Expected a function\");var r=function(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;return i.has(u)?i.get(u):(e=n.apply(this,e),\r\nr.cache=i.set(u,e)||i,e)};return r.cache=new(cu.Cache||Fn),r}function au(n){if(typeof n!=\"function\")throw new ti(\"Expected a function\");return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function lu(n,t){return n===t||n!==n&&t!==t}function su(n){return null!=n&&gu(n.length)&&!_u(n)}function hu(n){return yu(n)&&su(n)}function pu(n){if(!yu(n))return false;\r\nvar t=Ot(n);return\"[object Error]\"==t||\"[object DOMException]\"==t||typeof n.message==\"string\"&&typeof n.name==\"string\"&&!xu(n)}function _u(n){return!!du(n)&&(n=Ot(n),\"[object Function]\"==n||\"[object GeneratorFunction]\"==n||\"[object AsyncFunction]\"==n||\"[object Proxy]\"==n)}function vu(n){return typeof n==\"number\"&&n==ku(n)}function gu(n){return typeof n==\"number\"&&-1<n&&0==n%1&&9007199254740991>=n}function du(n){var t=typeof n;return null!=n&&(\"object\"==t||\"function\"==t)}function yu(n){return null!=n&&typeof n==\"object\";\r\n}function bu(n){return typeof n==\"number\"||yu(n)&&\"[object Number]\"==Ot(n)}function xu(n){return!(!yu(n)||\"[object Object]\"!=Ot(n))&&(n=di(n),null===n||(n=oi.call(n,\"constructor\")&&n.constructor,typeof n==\"function\"&&n instanceof n&&ii.call(n)==li))}function ju(n){return typeof n==\"string\"||!ff(n)&&yu(n)&&\"[object String]\"==Ot(n)}function wu(n){return typeof n==\"symbol\"||yu(n)&&\"[object Symbol]\"==Ot(n)}function mu(n){if(!n)return[];if(su(n))return ju(n)?M(n):Lr(n);if(wi&&n[wi]){n=n[wi]();for(var t,r=[];!(t=n.next()).done;)r.push(t.value);\r\nreturn r}return t=vo(n),(\"[object Map]\"==t?W:\"[object Set]\"==t?L:Lu)(n)}function Au(n){return n?(n=Su(n),n===$||n===-$?1.7976931348623157e308*(0>n?-1:1):n===n?n:0):0===n?n:0}function ku(n){n=Au(n);var t=n%1;return n===n?t?n-t:n:0}function Eu(n){return n?pt(ku(n),0,4294967295):0}function Su(n){if(typeof n==\"number\")return n;if(wu(n))return F;if(du(n)&&(n=typeof n.valueOf==\"function\"?n.valueOf():n,n=du(n)?n+\"\":n),typeof n!=\"string\")return 0===n?n:+n;n=n.replace(un,\"\");var t=gn.test(n);return t||yn.test(n)?Dn(n.slice(2),t?2:8):vn.test(n)?F:+n;\r\n}function Ou(n){return Cr(n,Uu(n))}function Iu(n){return null==n?\"\":yr(n)}function Ru(n,t,r){return n=null==n?T:Et(n,t),n===T?r:n}function zu(n,t){return null!=n&&we(n,t,zt)}function Wu(n){return su(n)?qn(n):Vt(n)}function Uu(n){if(su(n))n=qn(n,true);else if(du(n)){var t,r=ze(n),e=[];for(t in n)(\"constructor\"!=t||!r&&oi.call(n,t))&&e.push(t);n=e}else{if(t=[],null!=n)for(r in Qu(n))t.push(r);n=t}return n}function Bu(n,t){if(null==n)return{};var r=c(ve(n),function(n){return[n]});return t=ye(t),tr(n,r,function(n,r){\r\nreturn t(n,r[0])})}function Lu(n){return null==n?[]:S(n,Wu(n))}function Cu(n){return $f(Iu(n).toLowerCase())}function Du(n){return(n=Iu(n))&&n.replace(xn,Xn).replace(Sn,\"\")}function Mu(n,t,r){return n=Iu(n),t=r?T:t,t===T?zn.test(n)?n.match(In)||[]:n.match(sn)||[]:n.match(t)||[]}function Tu(n){return function(){return n}}function $u(n){return n}function Fu(n){return qt(typeof n==\"function\"?n:_t(n,1))}function Nu(n,t,e){var u=Wu(t),i=kt(t,u);null!=e||du(t)&&(i.length||!u.length)||(e=t,t=n,n=this,i=kt(t,Wu(t)));\r\nvar o=!(du(e)&&\"chain\"in e&&!e.chain),f=_u(n);return r(i,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(o||t){var r=n(this.__wrapped__);return(r.__actions__=Lr(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,a([this.value()],arguments))})}),n}function Pu(){}function Zu(n){return Ie(n)?b(Me(n)):rr(n)}function qu(){return[]}function Vu(){return false}mn=null==mn?$n:rt.defaults($n.Object(),mn,rt.pick($n,Wn));var Ku=mn.Array,Gu=mn.Date,Hu=mn.Error,Ju=mn.Function,Yu=mn.Math,Qu=mn.Object,Xu=mn.RegExp,ni=mn.String,ti=mn.TypeError,ri=Ku.prototype,ei=Qu.prototype,ui=mn[\"__core-js_shared__\"],ii=Ju.prototype.toString,oi=ei.hasOwnProperty,fi=0,ci=function(){\r\nvar n=/[^.]+$/.exec(ui&&ui.keys&&ui.keys.IE_PROTO||\"\");return n?\"Symbol(src)_1.\"+n:\"\"}(),ai=ei.toString,li=ii.call(Qu),si=$n._,hi=Xu(\"^\"+ii.call(oi).replace(rn,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),pi=Pn?mn.Buffer:T,_i=mn.Symbol,vi=mn.Uint8Array,gi=pi?pi.allocUnsafe:T,di=U(Qu.getPrototypeOf,Qu),yi=Qu.create,bi=ei.propertyIsEnumerable,xi=ri.splice,ji=_i?_i.isConcatSpreadable:T,wi=_i?_i.iterator:T,mi=_i?_i.toStringTag:T,Ai=function(){try{var n=je(Qu,\"defineProperty\");\r\nreturn n({},\"\",{}),n}catch(n){}}(),ki=mn.clearTimeout!==$n.clearTimeout&&mn.clearTimeout,Ei=Gu&&Gu.now!==$n.Date.now&&Gu.now,Si=mn.setTimeout!==$n.setTimeout&&mn.setTimeout,Oi=Yu.ceil,Ii=Yu.floor,Ri=Qu.getOwnPropertySymbols,zi=pi?pi.isBuffer:T,Wi=mn.isFinite,Ui=ri.join,Bi=U(Qu.keys,Qu),Li=Yu.max,Ci=Yu.min,Di=Gu.now,Mi=mn.parseInt,Ti=Yu.random,$i=ri.reverse,Fi=je(mn,\"DataView\"),Ni=je(mn,\"Map\"),Pi=je(mn,\"Promise\"),Zi=je(mn,\"Set\"),qi=je(mn,\"WeakMap\"),Vi=je(Qu,\"create\"),Ki=qi&&new qi,Gi={},Hi=Te(Fi),Ji=Te(Ni),Yi=Te(Pi),Qi=Te(Zi),Xi=Te(qi),no=_i?_i.prototype:T,to=no?no.valueOf:T,ro=no?no.toString:T,eo=function(){\r\nfunction n(){}return function(t){return du(t)?yi?yi(t):(n.prototype=t,t=new n,n.prototype=T,t):{}}}();An.templateSettings={escape:J,evaluate:Y,interpolate:Q,variable:\"\",imports:{_:An}},An.prototype=kn.prototype,An.prototype.constructor=An,On.prototype=eo(kn.prototype),On.prototype.constructor=On,Ln.prototype=eo(kn.prototype),Ln.prototype.constructor=Ln,Mn.prototype.clear=function(){this.__data__=Vi?Vi(null):{},this.size=0},Mn.prototype.delete=function(n){return n=this.has(n)&&delete this.__data__[n],\r\nthis.size-=n?1:0,n},Mn.prototype.get=function(n){var t=this.__data__;return Vi?(n=t[n],\"__lodash_hash_undefined__\"===n?T:n):oi.call(t,n)?t[n]:T},Mn.prototype.has=function(n){var t=this.__data__;return Vi?t[n]!==T:oi.call(t,n)},Mn.prototype.set=function(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=Vi&&t===T?\"__lodash_hash_undefined__\":t,this},Tn.prototype.clear=function(){this.__data__=[],this.size=0},Tn.prototype.delete=function(n){var t=this.__data__;return n=ft(t,n),!(0>n)&&(n==t.length-1?t.pop():xi.call(t,n,1),\r\n--this.size,true)},Tn.prototype.get=function(n){var t=this.__data__;return n=ft(t,n),0>n?T:t[n][1]},Tn.prototype.has=function(n){return-1<ft(this.__data__,n)},Tn.prototype.set=function(n,t){var r=this.__data__,e=ft(r,n);return 0>e?(++this.size,r.push([n,t])):r[e][1]=t,this},Fn.prototype.clear=function(){this.size=0,this.__data__={hash:new Mn,map:new(Ni||Tn),string:new Mn}},Fn.prototype.delete=function(n){return n=be(this,n).delete(n),this.size-=n?1:0,n},Fn.prototype.get=function(n){return be(this,n).get(n);\r\n},Fn.prototype.has=function(n){return be(this,n).has(n)},Fn.prototype.set=function(n,t){var r=be(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},Nn.prototype.add=Nn.prototype.push=function(n){return this.__data__.set(n,\"__lodash_hash_undefined__\"),this},Nn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.clear=function(){this.__data__=new Tn,this.size=0},Zn.prototype.delete=function(n){var t=this.__data__;return n=t.delete(n),this.size=t.size,n},Zn.prototype.get=function(n){\r\nreturn this.__data__.get(n)},Zn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Tn){var e=r.__data__;if(!Ni||199>e.length)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new Fn(e)}return r.set(n,t),this.size=r.size,this};var uo=Fr(mt),io=Fr(At,true),oo=Nr(),fo=Nr(true),co=Ki?function(n,t){return Ki.set(n,t),n}:$u,ao=Ai?function(n,t){return Ai(n,\"toString\",{configurable:true,enumerable:false,value:Tu(t),writable:true})}:$u,lo=ki||function(n){\r\nreturn $n.clearTimeout(n)},so=Zi&&1/L(new Zi([,-0]))[1]==$?function(n){return new Zi(n)}:Pu,ho=Ki?function(n){return Ki.get(n)}:Pu,po=Ri?function(n){return null==n?[]:(n=Qu(n),i(Ri(n),function(t){return bi.call(n,t)}))}:qu,_o=Ri?function(n){for(var t=[];n;)a(t,po(n)),n=di(n);return t}:qu,vo=Ot;(Fi&&\"[object DataView]\"!=vo(new Fi(new ArrayBuffer(1)))||Ni&&\"[object Map]\"!=vo(new Ni)||Pi&&\"[object Promise]\"!=vo(Pi.resolve())||Zi&&\"[object Set]\"!=vo(new Zi)||qi&&\"[object WeakMap]\"!=vo(new qi))&&(vo=function(n){\r\nvar t=Ot(n);if(n=(n=\"[object Object]\"==t?n.constructor:T)?Te(n):\"\")switch(n){case Hi:return\"[object DataView]\";case Ji:return\"[object Map]\";case Yi:return\"[object Promise]\";case Qi:return\"[object Set]\";case Xi:return\"[object WeakMap]\"}return t});var go=ui?_u:Vu,yo=Ce(co),bo=Si||function(n,t){return $n.setTimeout(n,t)},xo=Ce(ao),jo=function(n){n=cu(n,function(n){return 500===t.size&&t.clear(),n});var t=n.cache;return n}(function(n){var t=[];return 46===n.charCodeAt(0)&&t.push(\"\"),n.replace(tn,function(n,r,e,u){\r\nt.push(e?u.replace(hn,\"$1\"):r||n)}),t}),wo=fr(function(n,t){return hu(n)?yt(n,wt(t,1,hu,true)):[]}),mo=fr(function(n,t){var r=Ve(t);return hu(r)&&(r=T),hu(n)?yt(n,wt(t,1,hu,true),ye(r,2)):[]}),Ao=fr(function(n,t){var r=Ve(t);return hu(r)&&(r=T),hu(n)?yt(n,wt(t,1,hu,true),T,r):[]}),ko=fr(function(n){var t=c(n,kr);return t.length&&t[0]===n[0]?Wt(t):[]}),Eo=fr(function(n){var t=Ve(n),r=c(n,kr);return t===Ve(r)?t=T:r.pop(),r.length&&r[0]===n[0]?Wt(r,ye(t,2)):[]}),So=fr(function(n){var t=Ve(n),r=c(n,kr);return(t=typeof t==\"function\"?t:T)&&r.pop(),\r\nr.length&&r[0]===n[0]?Wt(r,T,t):[]}),Oo=fr(Ke),Io=pe(function(n,t){var r=null==n?0:n.length,e=ht(n,t);return ur(n,c(t,function(n){return Se(n,r)?+n:n}).sort(Wr)),e}),Ro=fr(function(n){return br(wt(n,1,hu,true))}),zo=fr(function(n){var t=Ve(n);return hu(t)&&(t=T),br(wt(n,1,hu,true),ye(t,2))}),Wo=fr(function(n){var t=Ve(n),t=typeof t==\"function\"?t:T;return br(wt(n,1,hu,true),T,t)}),Uo=fr(function(n,t){return hu(n)?yt(n,t):[]}),Bo=fr(function(n){return mr(i(n,hu))}),Lo=fr(function(n){var t=Ve(n);return hu(t)&&(t=T),\r\nmr(i(n,hu),ye(t,2))}),Co=fr(function(n){var t=Ve(n),t=typeof t==\"function\"?t:T;return mr(i(n,hu),T,t)}),Do=fr(He),Mo=fr(function(n){var t=n.length,t=1<t?n[t-1]:T,t=typeof t==\"function\"?(n.pop(),t):T;return Je(n,t)}),To=pe(function(n){var t=n.length,r=t?n[0]:0,e=this.__wrapped__,u=function(t){return ht(t,n)};return!(1<t||this.__actions__.length)&&e instanceof Ln&&Se(r)?(e=e.slice(r,+r+(t?1:0)),e.__actions__.push({func:Qe,args:[u],thisArg:T}),new On(e,this.__chain__).thru(function(n){return t&&!n.length&&n.push(T),\r\nn})):this.thru(u)}),$o=Tr(function(n,t,r){oi.call(n,r)?++n[r]:st(n,r,1)}),Fo=Gr(Ne),No=Gr(Pe),Po=Tr(function(n,t,r){oi.call(n,r)?n[r].push(t):st(n,r,[t])}),Zo=fr(function(t,r,e){var u=-1,i=typeof r==\"function\",o=su(t)?Ku(t.length):[];return uo(t,function(t){o[++u]=i?n(r,t,e):Bt(t,r,e)}),o}),qo=Tr(function(n,t,r){st(n,r,t)}),Vo=Tr(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),Ko=fr(function(n,t){if(null==n)return[];var r=t.length;return 1<r&&Oe(n,t[0],t[1])?t=[]:2<r&&Oe(t[0],t[1],t[2])&&(t=[t[0]]),\r\nXt(n,wt(t,1),[])}),Go=Ei||function(){return $n.Date.now()},Ho=fr(function(n,t,r){var e=1;if(r.length)var u=B(r,de(Ho)),e=32|e;return fe(n,e,t,r,u)}),Jo=fr(function(n,t,r){var e=3;if(r.length)var u=B(r,de(Jo)),e=32|e;return fe(t,e,n,r,u)}),Yo=fr(function(n,t){return dt(n,1,t)}),Qo=fr(function(n,t,r){return dt(n,Su(t)||0,r)});cu.Cache=Fn;var Xo=fr(function(t,r){r=1==r.length&&ff(r[0])?c(r[0],E(ye())):c(wt(r,1),E(ye()));var e=r.length;return fr(function(u){for(var i=-1,o=Ci(u.length,e);++i<o;)u[i]=r[i].call(this,u[i]);\r\nreturn n(t,this,u)})}),nf=fr(function(n,t){return fe(n,32,T,t,B(t,de(nf)))}),tf=fr(function(n,t){return fe(n,64,T,t,B(t,de(tf)))}),rf=pe(function(n,t){return fe(n,256,T,T,T,t)}),ef=ee(It),uf=ee(function(n,t){return n>=t}),of=Lt(function(){return arguments}())?Lt:function(n){return yu(n)&&oi.call(n,\"callee\")&&!bi.call(n,\"callee\")},ff=Ku.isArray,cf=Vn?E(Vn):Ct,af=zi||Vu,lf=Kn?E(Kn):Dt,sf=Gn?E(Gn):Tt,hf=Hn?E(Hn):Nt,pf=Jn?E(Jn):Pt,_f=Yn?E(Yn):Zt,vf=ee(Kt),gf=ee(function(n,t){return n<=t}),df=$r(function(n,t){\r\nif(ze(t)||su(t))Cr(t,Wu(t),n);else for(var r in t)oi.call(t,r)&&ot(n,r,t[r])}),yf=$r(function(n,t){Cr(t,Uu(t),n)}),bf=$r(function(n,t,r,e){Cr(t,Uu(t),n,e)}),xf=$r(function(n,t,r,e){Cr(t,Wu(t),n,e)}),jf=pe(ht),wf=fr(function(n,t){n=Qu(n);var r=-1,e=t.length,u=2<e?t[2]:T;for(u&&Oe(t[0],t[1],u)&&(e=1);++r<e;)for(var u=t[r],i=Uu(u),o=-1,f=i.length;++o<f;){var c=i[o],a=n[c];(a===T||lu(a,ei[c])&&!oi.call(n,c))&&(n[c]=u[c])}return n}),mf=fr(function(t){return t.push(T,ae),n(Of,T,t)}),Af=Yr(function(n,t,r){\r\nnull!=t&&typeof t.toString!=\"function\"&&(t=ai.call(t)),n[t]=r},Tu($u)),kf=Yr(function(n,t,r){null!=t&&typeof t.toString!=\"function\"&&(t=ai.call(t)),oi.call(n,t)?n[t].push(r):n[t]=[r]},ye),Ef=fr(Bt),Sf=$r(function(n,t,r){Yt(n,t,r)}),Of=$r(function(n,t,r,e){Yt(n,t,r,e)}),If=pe(function(n,t){var r={};if(null==n)return r;var e=false;t=c(t,function(t){return t=Sr(t,n),e||(e=1<t.length),t}),Cr(n,ve(n),r),e&&(r=_t(r,7,le));for(var u=t.length;u--;)xr(r,t[u]);return r}),Rf=pe(function(n,t){return null==n?{}:nr(n,t);\r\n}),zf=oe(Wu),Wf=oe(Uu),Uf=qr(function(n,t,r){return t=t.toLowerCase(),n+(r?Cu(t):t)}),Bf=qr(function(n,t,r){return n+(r?\"-\":\"\")+t.toLowerCase()}),Lf=qr(function(n,t,r){return n+(r?\" \":\"\")+t.toLowerCase()}),Cf=Zr(\"toLowerCase\"),Df=qr(function(n,t,r){return n+(r?\"_\":\"\")+t.toLowerCase()}),Mf=qr(function(n,t,r){return n+(r?\" \":\"\")+$f(t)}),Tf=qr(function(n,t,r){return n+(r?\" \":\"\")+t.toUpperCase()}),$f=Zr(\"toUpperCase\"),Ff=fr(function(t,r){try{return n(t,T,r)}catch(n){return pu(n)?n:new Hu(n)}}),Nf=pe(function(n,t){\r\nreturn r(t,function(t){t=Me(t),st(n,t,Ho(n[t],n))}),n}),Pf=Hr(),Zf=Hr(true),qf=fr(function(n,t){return function(r){return Bt(r,n,t)}}),Vf=fr(function(n,t){return function(r){return Bt(n,r,t)}}),Kf=Xr(c),Gf=Xr(u),Hf=Xr(h),Jf=re(),Yf=re(true),Qf=Qr(function(n,t){return n+t},0),Xf=ie(\"ceil\"),nc=Qr(function(n,t){return n/t},1),tc=ie(\"floor\"),rc=Qr(function(n,t){return n*t},1),ec=ie(\"round\"),uc=Qr(function(n,t){return n-t},0);return An.after=function(n,t){if(typeof t!=\"function\")throw new ti(\"Expected a function\");\r\nreturn n=ku(n),function(){if(1>--n)return t.apply(this,arguments)}},An.ary=eu,An.assign=df,An.assignIn=yf,An.assignInWith=bf,An.assignWith=xf,An.at=jf,An.before=uu,An.bind=Ho,An.bindAll=Nf,An.bindKey=Jo,An.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return ff(n)?n:[n]},An.chain=Ye,An.chunk=function(n,t,r){if(t=(r?Oe(n,t,r):t===T)?1:Li(ku(t),0),r=null==n?0:n.length,!r||1>t)return[];for(var e=0,u=0,i=Ku(Oi(r/t));e<r;)i[u++]=hr(n,e,e+=t);return i},An.compact=function(n){for(var t=-1,r=null==n?0:n.length,e=0,u=[];++t<r;){\r\nvar i=n[t];i&&(u[e++]=i)}return u},An.concat=function(){var n=arguments.length;if(!n)return[];for(var t=Ku(n-1),r=arguments[0];n--;)t[n-1]=arguments[n];return a(ff(r)?Lr(r):[r],wt(t,1))},An.cond=function(t){var r=null==t?0:t.length,e=ye();return t=r?c(t,function(n){if(\"function\"!=typeof n[1])throw new ti(\"Expected a function\");return[e(n[0]),n[1]]}):[],fr(function(e){for(var u=-1;++u<r;){var i=t[u];if(n(i[0],this,e))return n(i[1],this,e)}})},An.conforms=function(n){return vt(_t(n,1))},An.constant=Tu,\r\nAn.countBy=$o,An.create=function(n,t){var r=eo(n);return null==t?r:at(r,t)},An.curry=iu,An.curryRight=ou,An.debounce=fu,An.defaults=wf,An.defaultsDeep=mf,An.defer=Yo,An.delay=Qo,An.difference=wo,An.differenceBy=mo,An.differenceWith=Ao,An.drop=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:ku(t),hr(n,0>t?0:t,e)):[]},An.dropRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:ku(t),t=e-t,hr(n,0,0>t?0:t)):[]},An.dropRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true,true):[];\r\n},An.dropWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true):[]},An.fill=function(n,t,r,e){var u=null==n?0:n.length;if(!u)return[];for(r&&typeof r!=\"number\"&&Oe(n,t,r)&&(r=0,e=u),u=n.length,r=ku(r),0>r&&(r=-r>u?0:u+r),e=e===T||e>u?u:ku(e),0>e&&(e+=u),e=r>e?0:Eu(e);r<e;)n[r++]=t;return n},An.filter=function(n,t){return(ff(n)?i:jt)(n,ye(t,3))},An.flatMap=function(n,t){return wt(ru(n,t),1)},An.flatMapDeep=function(n,t){return wt(ru(n,t),$)},An.flatMapDepth=function(n,t,r){return r=r===T?1:ku(r),\r\nwt(ru(n,t),r)},An.flatten=Ze,An.flattenDeep=function(n){return(null==n?0:n.length)?wt(n,$):[]},An.flattenDepth=function(n,t){return null!=n&&n.length?(t=t===T?1:ku(t),wt(n,t)):[]},An.flip=function(n){return fe(n,512)},An.flow=Pf,An.flowRight=Zf,An.fromPairs=function(n){for(var t=-1,r=null==n?0:n.length,e={};++t<r;){var u=n[t];e[u[0]]=u[1]}return e},An.functions=function(n){return null==n?[]:kt(n,Wu(n))},An.functionsIn=function(n){return null==n?[]:kt(n,Uu(n))},An.groupBy=Po,An.initial=function(n){\r\nreturn(null==n?0:n.length)?hr(n,0,-1):[]},An.intersection=ko,An.intersectionBy=Eo,An.intersectionWith=So,An.invert=Af,An.invertBy=kf,An.invokeMap=Zo,An.iteratee=Fu,An.keyBy=qo,An.keys=Wu,An.keysIn=Uu,An.map=ru,An.mapKeys=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,t(n,e,u),n)}),r},An.mapValues=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,e,t(n,e,u))}),r},An.matches=function(n){return Ht(_t(n,1))},An.matchesProperty=function(n,t){return Jt(n,_t(t,1))},An.memoize=cu,\r\nAn.merge=Sf,An.mergeWith=Of,An.method=qf,An.methodOf=Vf,An.mixin=Nu,An.negate=au,An.nthArg=function(n){return n=ku(n),fr(function(t){return Qt(t,n)})},An.omit=If,An.omitBy=function(n,t){return Bu(n,au(ye(t)))},An.once=function(n){return uu(2,n)},An.orderBy=function(n,t,r,e){return null==n?[]:(ff(t)||(t=null==t?[]:[t]),r=e?T:r,ff(r)||(r=null==r?[]:[r]),Xt(n,t,r))},An.over=Kf,An.overArgs=Xo,An.overEvery=Gf,An.overSome=Hf,An.partial=nf,An.partialRight=tf,An.partition=Vo,An.pick=Rf,An.pickBy=Bu,An.property=Zu,\r\nAn.propertyOf=function(n){return function(t){return null==n?T:Et(n,t)}},An.pull=Oo,An.pullAll=Ke,An.pullAllBy=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,ye(r,2)):n},An.pullAllWith=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,T,r):n},An.pullAt=Io,An.range=Jf,An.rangeRight=Yf,An.rearg=rf,An.reject=function(n,t){return(ff(n)?i:jt)(n,au(ye(t,3)))},An.remove=function(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],i=n.length;for(t=ye(t,3);++e<i;){var o=n[e];t(o,e,n)&&(r.push(o),\r\nu.push(e))}return ur(n,u),r},An.rest=function(n,t){if(typeof n!=\"function\")throw new ti(\"Expected a function\");return t=t===T?t:ku(t),fr(n,t)},An.reverse=Ge,An.sampleSize=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:ku(t),(ff(n)?et:ar)(n,t)},An.set=function(n,t,r){return null==n?n:lr(n,t,r)},An.setWith=function(n,t,r,e){return e=typeof e==\"function\"?e:T,null==n?n:lr(n,t,r,e)},An.shuffle=function(n){return(ff(n)?ut:sr)(n)},An.slice=function(n,t,r){var e=null==n?0:n.length;return e?(r&&typeof r!=\"number\"&&Oe(n,t,r)?(t=0,\r\nr=e):(t=null==t?0:ku(t),r=r===T?e:ku(r)),hr(n,t,r)):[]},An.sortBy=Ko,An.sortedUniq=function(n){return n&&n.length?gr(n):[]},An.sortedUniqBy=function(n,t){return n&&n.length?gr(n,ye(t,2)):[]},An.split=function(n,t,r){return r&&typeof r!=\"number\"&&Oe(n,t,r)&&(t=r=T),r=r===T?4294967295:r>>>0,r?(n=Iu(n))&&(typeof t==\"string\"||null!=t&&!hf(t))&&(t=yr(t),!t&&Rn.test(n))?Or(M(n),0,r):n.split(t,r):[]},An.spread=function(t,r){if(typeof t!=\"function\")throw new ti(\"Expected a function\");return r=null==r?0:Li(ku(r),0),\r\nfr(function(e){var u=e[r];return e=Or(e,0,r),u&&a(e,u),n(t,this,e)})},An.tail=function(n){var t=null==n?0:n.length;return t?hr(n,1,t):[]},An.take=function(n,t,r){return n&&n.length?(t=r||t===T?1:ku(t),hr(n,0,0>t?0:t)):[]},An.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:ku(t),t=e-t,hr(n,0>t?0:t,e)):[]},An.takeRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),false,true):[]},An.takeWhile=function(n,t){return n&&n.length?jr(n,ye(t,3)):[]},An.tap=function(n,t){return t(n),\r\nn},An.throttle=function(n,t,r){var e=true,u=true;if(typeof n!=\"function\")throw new ti(\"Expected a function\");return du(r)&&(e=\"leading\"in r?!!r.leading:e,u=\"trailing\"in r?!!r.trailing:u),fu(n,t,{leading:e,maxWait:t,trailing:u})},An.thru=Qe,An.toArray=mu,An.toPairs=zf,An.toPairsIn=Wf,An.toPath=function(n){return ff(n)?c(n,Me):wu(n)?[n]:Lr(jo(Iu(n)))},An.toPlainObject=Ou,An.transform=function(n,t,e){var u=ff(n),i=u||af(n)||_f(n);if(t=ye(t,4),null==e){var o=n&&n.constructor;e=i?u?new o:[]:du(n)&&_u(o)?eo(di(n)):{};\r\n}return(i?r:mt)(n,function(n,r,u){return t(e,n,r,u)}),e},An.unary=function(n){return eu(n,1)},An.union=Ro,An.unionBy=zo,An.unionWith=Wo,An.uniq=function(n){return n&&n.length?br(n):[]},An.uniqBy=function(n,t){return n&&n.length?br(n,ye(t,2)):[]},An.uniqWith=function(n,t){return t=typeof t==\"function\"?t:T,n&&n.length?br(n,T,t):[]},An.unset=function(n,t){return null==n||xr(n,t)},An.unzip=He,An.unzipWith=Je,An.update=function(n,t,r){return null!=n&&(r=Er(r),n=lr(n,t,r(Et(n,t)),void 0)),n},An.updateWith=function(n,t,r,e){\r\nreturn e=typeof e==\"function\"?e:T,null!=n&&(r=Er(r),n=lr(n,t,r(Et(n,t)),e)),n},An.values=Lu,An.valuesIn=function(n){return null==n?[]:S(n,Uu(n))},An.without=Uo,An.words=Mu,An.wrap=function(n,t){return nf(Er(t),n)},An.xor=Bo,An.xorBy=Lo,An.xorWith=Co,An.zip=Do,An.zipObject=function(n,t){return Ar(n||[],t||[],ot)},An.zipObjectDeep=function(n,t){return Ar(n||[],t||[],lr)},An.zipWith=Mo,An.entries=zf,An.entriesIn=Wf,An.extend=yf,An.extendWith=bf,Nu(An,An),An.add=Qf,An.attempt=Ff,An.camelCase=Uf,An.capitalize=Cu,\r\nAn.ceil=Xf,An.clamp=function(n,t,r){return r===T&&(r=t,t=T),r!==T&&(r=Su(r),r=r===r?r:0),t!==T&&(t=Su(t),t=t===t?t:0),pt(Su(n),t,r)},An.clone=function(n){return _t(n,4)},An.cloneDeep=function(n){return _t(n,5)},An.cloneDeepWith=function(n,t){return t=typeof t==\"function\"?t:T,_t(n,5,t)},An.cloneWith=function(n,t){return t=typeof t==\"function\"?t:T,_t(n,4,t)},An.conformsTo=function(n,t){return null==t||gt(n,t,Wu(t))},An.deburr=Du,An.defaultTo=function(n,t){return null==n||n!==n?t:n},An.divide=nc,An.endsWith=function(n,t,r){\r\nn=Iu(n),t=yr(t);var e=n.length,e=r=r===T?e:pt(ku(r),0,e);return r-=t.length,0<=r&&n.slice(r,e)==t},An.eq=lu,An.escape=function(n){return(n=Iu(n))&&H.test(n)?n.replace(K,nt):n},An.escapeRegExp=function(n){return(n=Iu(n))&&en.test(n)?n.replace(rn,\"\\\\$&\"):n},An.every=function(n,t,r){var e=ff(n)?u:bt;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.find=Fo,An.findIndex=Ne,An.findKey=function(n,t){return p(n,ye(t,3),mt)},An.findLast=No,An.findLastIndex=Pe,An.findLastKey=function(n,t){return p(n,ye(t,3),At);\r\n},An.floor=tc,An.forEach=nu,An.forEachRight=tu,An.forIn=function(n,t){return null==n?n:oo(n,ye(t,3),Uu)},An.forInRight=function(n,t){return null==n?n:fo(n,ye(t,3),Uu)},An.forOwn=function(n,t){return n&&mt(n,ye(t,3))},An.forOwnRight=function(n,t){return n&&At(n,ye(t,3))},An.get=Ru,An.gt=ef,An.gte=uf,An.has=function(n,t){return null!=n&&we(n,t,Rt)},An.hasIn=zu,An.head=qe,An.identity=$u,An.includes=function(n,t,r,e){return n=su(n)?n:Lu(n),r=r&&!e?ku(r):0,e=n.length,0>r&&(r=Li(e+r,0)),ju(n)?r<=e&&-1<n.indexOf(t,r):!!e&&-1<v(n,t,r);\r\n},An.indexOf=function(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:ku(r),0>r&&(r=Li(e+r,0)),v(n,t,r)):-1},An.inRange=function(n,t,r){return t=Au(t),r===T?(r=t,t=0):r=Au(r),n=Su(n),n>=Ci(t,r)&&n<Li(t,r)},An.invoke=Ef,An.isArguments=of,An.isArray=ff,An.isArrayBuffer=cf,An.isArrayLike=su,An.isArrayLikeObject=hu,An.isBoolean=function(n){return true===n||false===n||yu(n)&&\"[object Boolean]\"==Ot(n)},An.isBuffer=af,An.isDate=lf,An.isElement=function(n){return yu(n)&&1===n.nodeType&&!xu(n)},An.isEmpty=function(n){\r\nif(null==n)return true;if(su(n)&&(ff(n)||typeof n==\"string\"||typeof n.splice==\"function\"||af(n)||_f(n)||of(n)))return!n.length;var t=vo(n);if(\"[object Map]\"==t||\"[object Set]\"==t)return!n.size;if(ze(n))return!Vt(n).length;for(var r in n)if(oi.call(n,r))return false;return true},An.isEqual=function(n,t){return Mt(n,t)},An.isEqualWith=function(n,t,r){var e=(r=typeof r==\"function\"?r:T)?r(n,t):T;return e===T?Mt(n,t,T,r):!!e},An.isError=pu,An.isFinite=function(n){return typeof n==\"number\"&&Wi(n)},An.isFunction=_u,\r\nAn.isInteger=vu,An.isLength=gu,An.isMap=sf,An.isMatch=function(n,t){return n===t||$t(n,t,xe(t))},An.isMatchWith=function(n,t,r){return r=typeof r==\"function\"?r:T,$t(n,t,xe(t),r)},An.isNaN=function(n){return bu(n)&&n!=+n},An.isNative=function(n){if(go(n))throw new Hu(\"Unsupported core-js use. Try https://npms.io/search?q=ponyfill.\");return Ft(n)},An.isNil=function(n){return null==n},An.isNull=function(n){return null===n},An.isNumber=bu,An.isObject=du,An.isObjectLike=yu,An.isPlainObject=xu,An.isRegExp=hf,\r\nAn.isSafeInteger=function(n){return vu(n)&&-9007199254740991<=n&&9007199254740991>=n},An.isSet=pf,An.isString=ju,An.isSymbol=wu,An.isTypedArray=_f,An.isUndefined=function(n){return n===T},An.isWeakMap=function(n){return yu(n)&&\"[object WeakMap]\"==vo(n)},An.isWeakSet=function(n){return yu(n)&&\"[object WeakSet]\"==Ot(n)},An.join=function(n,t){return null==n?\"\":Ui.call(n,t)},An.kebabCase=Bf,An.last=Ve,An.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;if(r!==T&&(u=ku(r),u=0>u?Li(e+u,0):Ci(u,e-1)),\r\nt===t)n:{for(r=u+1;r--;)if(n[r]===t){n=r;break n}n=r}else n=_(n,d,u,true);return n},An.lowerCase=Lf,An.lowerFirst=Cf,An.lt=vf,An.lte=gf,An.max=function(n){return n&&n.length?xt(n,$u,It):T},An.maxBy=function(n,t){return n&&n.length?xt(n,ye(t,2),It):T},An.mean=function(n){return y(n,$u)},An.meanBy=function(n,t){return y(n,ye(t,2))},An.min=function(n){return n&&n.length?xt(n,$u,Kt):T},An.minBy=function(n,t){return n&&n.length?xt(n,ye(t,2),Kt):T},An.stubArray=qu,An.stubFalse=Vu,An.stubObject=function(){\r\nreturn{}},An.stubString=function(){return\"\"},An.stubTrue=function(){return true},An.multiply=rc,An.nth=function(n,t){return n&&n.length?Qt(n,ku(t)):T},An.noConflict=function(){return $n._===this&&($n._=si),this},An.noop=Pu,An.now=Go,An.pad=function(n,t,r){n=Iu(n);var e=(t=ku(t))?D(n):0;return!t||e>=t?n:(t=(t-e)/2,ne(Ii(t),r)+n+ne(Oi(t),r))},An.padEnd=function(n,t,r){n=Iu(n);var e=(t=ku(t))?D(n):0;return t&&e<t?n+ne(t-e,r):n},An.padStart=function(n,t,r){n=Iu(n);var e=(t=ku(t))?D(n):0;return t&&e<t?ne(t-e,r)+n:n;\r\n},An.parseInt=function(n,t,r){return r||null==t?t=0:t&&(t=+t),Mi(Iu(n).replace(on,\"\"),t||0)},An.random=function(n,t,r){if(r&&typeof r!=\"boolean\"&&Oe(n,t,r)&&(t=r=T),r===T&&(typeof t==\"boolean\"?(r=t,t=T):typeof n==\"boolean\"&&(r=n,n=T)),n===T&&t===T?(n=0,t=1):(n=Au(n),t===T?(t=n,n=0):t=Au(t)),n>t){var e=n;n=t,t=e}return r||n%1||t%1?(r=Ti(),Ci(n+r*(t-n+Cn(\"1e-\"+((r+\"\").length-1))),t)):ir(n,t)},An.reduce=function(n,t,r){var e=ff(n)?l:j,u=3>arguments.length;return e(n,ye(t,4),r,u,uo)},An.reduceRight=function(n,t,r){\r\nvar e=ff(n)?s:j,u=3>arguments.length;return e(n,ye(t,4),r,u,io)},An.repeat=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:ku(t),or(Iu(n),t)},An.replace=function(){var n=arguments,t=Iu(n[0]);return 3>n.length?t:t.replace(n[1],n[2])},An.result=function(n,t,r){t=Sr(t,n);var e=-1,u=t.length;for(u||(u=1,n=T);++e<u;){var i=null==n?T:n[Me(t[e])];i===T&&(e=u,i=r),n=_u(i)?i.call(n):i}return n},An.round=ec,An.runInContext=x,An.sample=function(n){return(ff(n)?Qn:cr)(n)},An.size=function(n){if(null==n)return 0;\r\nif(su(n))return ju(n)?D(n):n.length;var t=vo(n);return\"[object Map]\"==t||\"[object Set]\"==t?n.size:Vt(n).length},An.snakeCase=Df,An.some=function(n,t,r){var e=ff(n)?h:pr;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.sortedIndex=function(n,t){return _r(n,t)},An.sortedIndexBy=function(n,t,r){return vr(n,t,ye(r,2))},An.sortedIndexOf=function(n,t){var r=null==n?0:n.length;if(r){var e=_r(n,t);if(e<r&&lu(n[e],t))return e}return-1},An.sortedLastIndex=function(n,t){return _r(n,t,true)},An.sortedLastIndexBy=function(n,t,r){\r\nreturn vr(n,t,ye(r,2),true)},An.sortedLastIndexOf=function(n,t){if(null==n?0:n.length){var r=_r(n,t,true)-1;if(lu(n[r],t))return r}return-1},An.startCase=Mf,An.startsWith=function(n,t,r){return n=Iu(n),r=null==r?0:pt(ku(r),0,n.length),t=yr(t),n.slice(r,r+t.length)==t},An.subtract=uc,An.sum=function(n){return n&&n.length?m(n,$u):0},An.sumBy=function(n,t){return n&&n.length?m(n,ye(t,2)):0},An.template=function(n,t,r){var e=An.templateSettings;r&&Oe(n,t,r)&&(t=T),n=Iu(n),t=bf({},t,e,ce),r=bf({},t.imports,e.imports,ce);\r\nvar u,i,o=Wu(r),f=S(r,o),c=0;r=t.interpolate||jn;var a=\"__p+='\";r=Xu((t.escape||jn).source+\"|\"+r.source+\"|\"+(r===Q?pn:jn).source+\"|\"+(t.evaluate||jn).source+\"|$\",\"g\");var l=\"sourceURL\"in t?\"//# sourceURL=\"+t.sourceURL+\"\\n\":\"\";if(n.replace(r,function(t,r,e,o,f,l){return e||(e=o),a+=n.slice(c,l).replace(wn,z),r&&(u=true,a+=\"'+__e(\"+r+\")+'\"),f&&(i=true,a+=\"';\"+f+\";\\n__p+='\"),e&&(a+=\"'+((__t=(\"+e+\"))==null?'':__t)+'\"),c=l+t.length,t}),a+=\"';\",(t=t.variable)||(a=\"with(obj){\"+a+\"}\"),a=(i?a.replace(P,\"\"):a).replace(Z,\"$1\").replace(q,\"$1;\"),\r\na=\"function(\"+(t||\"obj\")+\"){\"+(t?\"\":\"obj||(obj={});\")+\"var __t,__p=''\"+(u?\",__e=_.escape\":\"\")+(i?\",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}\":\";\")+a+\"return __p}\",t=Ff(function(){return Ju(o,l+\"return \"+a).apply(T,f)}),t.source=a,pu(t))throw t;return t},An.times=function(n,t){if(n=ku(n),1>n||9007199254740991<n)return[];var r=4294967295,e=Ci(n,4294967295);for(t=ye(t),n-=4294967295,e=A(e,t);++r<n;)t(r);return e},An.toFinite=Au,An.toInteger=ku,An.toLength=Eu,An.toLower=function(n){\r\nreturn Iu(n).toLowerCase()},An.toNumber=Su,An.toSafeInteger=function(n){return n?pt(ku(n),-9007199254740991,9007199254740991):0===n?n:0},An.toString=Iu,An.toUpper=function(n){return Iu(n).toUpperCase()},An.trim=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(un,\"\"):n&&(t=yr(t))?(n=M(n),r=M(t),t=I(n,r),r=R(n,r)+1,Or(n,t,r).join(\"\")):n},An.trimEnd=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(fn,\"\"):n&&(t=yr(t))?(n=M(n),t=R(n,M(t))+1,Or(n,0,t).join(\"\")):n},An.trimStart=function(n,t,r){\r\nreturn(n=Iu(n))&&(r||t===T)?n.replace(on,\"\"):n&&(t=yr(t))?(n=M(n),t=I(n,M(t)),Or(n,t).join(\"\")):n},An.truncate=function(n,t){var r=30,e=\"...\";if(du(t))var u=\"separator\"in t?t.separator:u,r=\"length\"in t?ku(t.length):r,e=\"omission\"in t?yr(t.omission):e;n=Iu(n);var i=n.length;if(Rn.test(n))var o=M(n),i=o.length;if(r>=i)return n;if(i=r-D(e),1>i)return e;if(r=o?Or(o,0,i).join(\"\"):n.slice(0,i),u===T)return r+e;if(o&&(i+=r.length-i),hf(u)){if(n.slice(i).search(u)){var f=r;for(u.global||(u=Xu(u.source,Iu(_n.exec(u))+\"g\")),\r\nu.lastIndex=0;o=u.exec(f);)var c=o.index;r=r.slice(0,c===T?i:c)}}else n.indexOf(yr(u),i)!=i&&(u=r.lastIndexOf(u),-1<u&&(r=r.slice(0,u)));return r+e},An.unescape=function(n){return(n=Iu(n))&&G.test(n)?n.replace(V,tt):n},An.uniqueId=function(n){var t=++fi;return Iu(n)+t},An.upperCase=Tf,An.upperFirst=$f,An.each=nu,An.eachRight=tu,An.first=qe,Nu(An,function(){var n={};return mt(An,function(t,r){oi.call(An.prototype,r)||(n[r]=t)}),n}(),{chain:false}),An.VERSION=\"4.17.11\",r(\"bind bindKey curry curryRight partial partialRight\".split(\" \"),function(n){\r\nAn[n].placeholder=An}),r([\"drop\",\"take\"],function(n,t){Ln.prototype[n]=function(r){r=r===T?1:Li(ku(r),0);var e=this.__filtered__&&!t?new Ln(this):this.clone();return e.__filtered__?e.__takeCount__=Ci(r,e.__takeCount__):e.__views__.push({size:Ci(r,4294967295),type:n+(0>e.__dir__?\"Right\":\"\")}),e},Ln.prototype[n+\"Right\"]=function(t){return this.reverse()[n](t).reverse()}}),r([\"filter\",\"map\",\"takeWhile\"],function(n,t){var r=t+1,e=1==r||3==r;Ln.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({\r\niteratee:ye(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),r([\"head\",\"last\"],function(n,t){var r=\"take\"+(t?\"Right\":\"\");Ln.prototype[n]=function(){return this[r](1).value()[0]}}),r([\"initial\",\"tail\"],function(n,t){var r=\"drop\"+(t?\"\":\"Right\");Ln.prototype[n]=function(){return this.__filtered__?new Ln(this):this[r](1)}}),Ln.prototype.compact=function(){return this.filter($u)},Ln.prototype.find=function(n){return this.filter(n).head()},Ln.prototype.findLast=function(n){return this.reverse().find(n);\r\n},Ln.prototype.invokeMap=fr(function(n,t){return typeof n==\"function\"?new Ln(this):this.map(function(r){return Bt(r,n,t)})}),Ln.prototype.reject=function(n){return this.filter(au(ye(n)))},Ln.prototype.slice=function(n,t){n=ku(n);var r=this;return r.__filtered__&&(0<n||0>t)?new Ln(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==T&&(t=ku(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},Ln.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Ln.prototype.toArray=function(){return this.take(4294967295);\r\n},mt(Ln.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=An[e?\"take\"+(\"last\"==t?\"Right\":\"\"):t],i=e||/^find/.test(t);u&&(An.prototype[t]=function(){var t=this.__wrapped__,o=e?[1]:arguments,f=t instanceof Ln,c=o[0],l=f||ff(t),s=function(n){return n=u.apply(An,a([n],o)),e&&h?n[0]:n};l&&r&&typeof c==\"function\"&&1!=c.length&&(f=l=false);var h=this.__chain__,p=!!this.__actions__.length,c=i&&!h,f=f&&!p;return!i&&l?(t=f?t:new Ln(this),t=n.apply(t,o),t.__actions__.push({\r\nfunc:Qe,args:[s],thisArg:T}),new On(t,h)):c&&f?n.apply(this,o):(t=this.thru(s),c?e?t.value()[0]:t.value():t)})}),r(\"pop push shift sort splice unshift\".split(\" \"),function(n){var t=ri[n],r=/^(?:push|sort|unshift)$/.test(n)?\"tap\":\"thru\",e=/^(?:pop|shift)$/.test(n);An.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(ff(u)?u:[],n)}return this[r](function(r){return t.apply(ff(r)?r:[],n)})}}),mt(Ln.prototype,function(n,t){var r=An[t];if(r){var e=r.name+\"\";\r\n(Gi[e]||(Gi[e]=[])).push({name:t,func:r})}}),Gi[Jr(T,2).name]=[{name:\"wrapper\",func:T}],Ln.prototype.clone=function(){var n=new Ln(this.__wrapped__);return n.__actions__=Lr(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Lr(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Lr(this.__views__),n},Ln.prototype.reverse=function(){if(this.__filtered__){var n=new Ln(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n;\r\n},Ln.prototype.value=function(){var n,t=this.__wrapped__.value(),r=this.__dir__,e=ff(t),u=0>r,i=e?t.length:0;n=0;for(var o=i,f=this.__views__,c=-1,a=f.length;++c<a;){var l=f[c],s=l.size;switch(l.type){case\"drop\":n+=s;break;case\"dropRight\":o-=s;break;case\"take\":o=Ci(o,n+s);break;case\"takeRight\":n=Li(n,o-s)}}if(n={start:n,end:o},o=n.start,f=n.end,n=f-o,o=u?f:o-1,f=this.__iteratees__,c=f.length,a=0,l=Ci(n,this.__takeCount__),!e||!u&&i==n&&l==n)return wr(t,this.__actions__);e=[];n:for(;n--&&a<l;){for(o+=r,\r\nu=-1,i=t[o];++u<c;){var h=f[u],s=h.type,h=(0,h.iteratee)(i);if(2==s)i=h;else if(!h){if(1==s)continue n;break n}}e[a++]=i}return e},An.prototype.at=To,An.prototype.chain=function(){return Ye(this)},An.prototype.commit=function(){return new On(this.value(),this.__chain__)},An.prototype.next=function(){this.__values__===T&&(this.__values__=mu(this.value()));var n=this.__index__>=this.__values__.length;return{done:n,value:n?T:this.__values__[this.__index__++]}},An.prototype.plant=function(n){for(var t,r=this;r instanceof kn;){\r\nvar e=Fe(r);e.__index__=0,e.__values__=T,t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},An.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Ln?(this.__actions__.length&&(n=new Ln(this)),n=n.reverse(),n.__actions__.push({func:Qe,args:[Ge],thisArg:T}),new On(n,this.__chain__)):this.thru(Ge)},An.prototype.toJSON=An.prototype.valueOf=An.prototype.value=function(){return wr(this.__wrapped__,this.__actions__)},An.prototype.first=An.prototype.head,wi&&(An.prototype[wi]=Xe),\r\nAn}();typeof define==\"function\"&&typeof define.amd==\"object\"&&define.amd?($n._=rt, define(function(){return rt})):Nn?((Nn.exports=rt)._=rt,Fn._=rt):$n._=rt}).call(this);","!function (e, t) { \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = t() : \"function\" == typeof define && define.amd ? define(t) : e.moment = t() }(this, function () { \"use strict\"; var e, i; function c() { return e.apply(null, arguments) } function o(e) { return e instanceof Array || \"[object Array]\" === Object.prototype.toString.call(e) } function u(e) { return null != e && \"[object Object]\" === Object.prototype.toString.call(e) } function l(e) { return void 0 === e } function h(e) { return \"number\" == typeof e || \"[object Number]\" === Object.prototype.toString.call(e) } function d(e) { return e instanceof Date || \"[object Date]\" === Object.prototype.toString.call(e) } function f(e, t) { var n, s = []; for (n = 0; n < e.length; ++n)s.push(t(e[n], n)); return s } function m(e, t) { return Object.prototype.hasOwnProperty.call(e, t) } function _(e, t) { for (var n in t) m(t, n) && (e[n] = t[n]); return m(t, \"toString\") && (e.toString = t.toString), m(t, \"valueOf\") && (e.valueOf = t.valueOf), e } function y(e, t, n, s) { return Tt(e, t, n, s, !0).utc() } function g(e) { return null == e._pf && (e._pf = { empty: !1, unusedTokens: [], unusedInput: [], overflow: -2, charsLeftOver: 0, nullInput: !1, invalidMonth: null, invalidFormat: !1, userInvalidated: !1, iso: !1, parsedDateParts: [], meridiem: null, rfc2822: !1, weekdayMismatch: !1 }), e._pf } function v(e) { if (null == e._isValid) { var t = g(e), n = i.call(t.parsedDateParts, function (e) { return null != e }), s = !isNaN(e._d.getTime()) && t.overflow < 0 && !t.empty && !t.invalidMonth && !t.invalidWeekday && !t.weekdayMismatch && !t.nullInput && !t.invalidFormat && !t.userInvalidated && (!t.meridiem || t.meridiem && n); if (e._strict && (s = s && 0 === t.charsLeftOver && 0 === t.unusedTokens.length && void 0 === t.bigHour), null != Object.isFrozen && Object.isFrozen(e)) return s; e._isValid = s } return e._isValid } function p(e) { var t = y(NaN); return null != e ? _(g(t), e) : g(t).userInvalidated = !0, t } i = Array.prototype.some ? Array.prototype.some : function (e) { for (var t = Object(this), n = t.length >>> 0, s = 0; s < n; s++)if (s in t && e.call(this, t[s], s, t)) return !0; return !1 }; var r = c.momentProperties = []; function w(e, t) { var n, s, i; if (l(t._isAMomentObject) || (e._isAMomentObject = t._isAMomentObject), l(t._i) || (e._i = t._i), l(t._f) || (e._f = t._f), l(t._l) || (e._l = t._l), l(t._strict) || (e._strict = t._strict), l(t._tzm) || (e._tzm = t._tzm), l(t._isUTC) || (e._isUTC = t._isUTC), l(t._offset) || (e._offset = t._offset), l(t._pf) || (e._pf = g(t)), l(t._locale) || (e._locale = t._locale), 0 < r.length) for (n = 0; n < r.length; n++)l(i = t[s = r[n]]) || (e[s] = i); return e } var t = !1; function M(e) { w(this, e), this._d = new Date(null != e._d ? e._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), !1 === t && (t = !0, c.updateOffset(this), t = !1) } function k(e) { return e instanceof M || null != e && null != e._isAMomentObject } function S(e) { return e < 0 ? Math.ceil(e) || 0 : Math.floor(e) } function D(e) { var t = +e, n = 0; return 0 !== t && isFinite(t) && (n = S(t)), n } function a(e, t, n) { var s, i = Math.min(e.length, t.length), r = Math.abs(e.length - t.length), a = 0; for (s = 0; s < i; s++)(n && e[s] !== t[s] || !n && D(e[s]) !== D(t[s])) && a++; return a + r } function Y(e) { !1 === c.suppressDeprecationWarnings && \"undefined\" != typeof console && console.warn && console.warn(\"Deprecation warning: \" + e) } function n(i, r) { var a = !0; return _(function () { if (null != c.deprecationHandler && c.deprecationHandler(null, i), a) { for (var e, t = [], n = 0; n < arguments.length; n++) { if (e = \"\", \"object\" == typeof arguments[n]) { for (var s in e += \"\\n[\" + n + \"] \", arguments[0]) e += s + \": \" + arguments[0][s] + \", \"; e = e.slice(0, -2) } else e = arguments[n]; t.push(e) } Y(i + \"\\nArguments: \" + Array.prototype.slice.call(t).join(\"\") + \"\\n\" + (new Error).stack), a = !1 } return r.apply(this, arguments) }, r) } var s, O = {}; function T(e, t) { null != c.deprecationHandler && c.deprecationHandler(e, t), O[e] || (Y(t), O[e] = !0) } function b(e) { return e instanceof Function || \"[object Function]\" === Object.prototype.toString.call(e) } function x(e, t) { var n, s = _({}, e); for (n in t) m(t, n) && (u(e[n]) && u(t[n]) ? (s[n] = {}, _(s[n], e[n]), _(s[n], t[n])) : null != t[n] ? s[n] = t[n] : delete s[n]); for (n in e) m(e, n) && !m(t, n) && u(e[n]) && (s[n] = _({}, s[n])); return s } function P(e) { null != e && this.set(e) } c.suppressDeprecationWarnings = !1, c.deprecationHandler = null, s = Object.keys ? Object.keys : function (e) { var t, n = []; for (t in e) m(e, t) && n.push(t); return n }; var W = {}; function C(e, t) { var n = e.toLowerCase(); W[n] = W[n + \"s\"] = W[t] = e } function H(e) { return \"string\" == typeof e ? W[e] || W[e.toLowerCase()] : void 0 } function R(e) { var t, n, s = {}; for (n in e) m(e, n) && (t = H(n)) && (s[t] = e[n]); return s } var U = {}; function F(e, t) { U[e] = t } function L(e, t, n) { var s = \"\" + Math.abs(e), i = t - s.length; return (0 <= e ? n ? \"+\" : \"\" : \"-\") + Math.pow(10, Math.max(0, i)).toString().substr(1) + s } var N = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, G = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g, V = {}, E = {}; function I(e, t, n, s) { var i = s; \"string\" == typeof s && (i = function () { return this[s]() }), e && (E[e] = i), t && (E[t[0]] = function () { return L(i.apply(this, arguments), t[1], t[2]) }), n && (E[n] = function () { return this.localeData().ordinal(i.apply(this, arguments), e) }) } function A(e, t) { return e.isValid() ? (t = j(t, e.localeData()), V[t] = V[t] || function (s) { var e, i, t, r = s.match(N); for (e = 0, i = r.length; e < i; e++)E[r[e]] ? r[e] = E[r[e]] : r[e] = (t = r[e]).match(/\\[[\\s\\S]/) ? t.replace(/^\\[|\\]$/g, \"\") : t.replace(/\\\\/g, \"\"); return function (e) { var t, n = \"\"; for (t = 0; t < i; t++)n += b(r[t]) ? r[t].call(e, s) : r[t]; return n } }(t), V[t](e)) : e.localeData().invalidDate() } function j(e, t) { var n = 5; function s(e) { return t.longDateFormat(e) || e } for (G.lastIndex = 0; 0 <= n && G.test(e);)e = e.replace(G, s), G.lastIndex = 0, n -= 1; return e } var Z = /\\d/, z = /\\d\\d/, $ = /\\d{3}/, q = /\\d{4}/, J = /[+-]?\\d{6}/, B = /\\d\\d?/, Q = /\\d\\d\\d\\d?/, X = /\\d\\d\\d\\d\\d\\d?/, K = /\\d{1,3}/, ee = /\\d{1,4}/, te = /[+-]?\\d{1,6}/, ne = /\\d+/, se = /[+-]?\\d+/, ie = /Z|[+-]\\d\\d:?\\d\\d/gi, re = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, ae = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i, oe = {}; function ue(e, n, s) { oe[e] = b(n) ? n : function (e, t) { return e && s ? s : n } } function le(e, t) { return m(oe, e) ? oe[e](t._strict, t._locale) : new RegExp(he(e.replace(\"\\\\\", \"\").replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (e, t, n, s, i) { return t || n || s || i }))) } function he(e) { return e.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\") } var de = {}; function ce(e, n) { var t, s = n; for (\"string\" == typeof e && (e = [e]), h(n) && (s = function (e, t) { t[n] = D(e) }), t = 0; t < e.length; t++)de[e[t]] = s } function fe(e, i) { ce(e, function (e, t, n, s) { n._w = n._w || {}, i(e, n._w, n, s) }) } var me = 0, _e = 1, ye = 2, ge = 3, ve = 4, pe = 5, we = 6, Me = 7, ke = 8; function Se(e) { return De(e) ? 366 : 365 } function De(e) { return e % 4 == 0 && e % 100 != 0 || e % 400 == 0 } I(\"Y\", 0, 0, function () { var e = this.year(); return e <= 9999 ? \"\" + e : \"+\" + e }), I(0, [\"YY\", 2], 0, function () { return this.year() % 100 }), I(0, [\"YYYY\", 4], 0, \"year\"), I(0, [\"YYYYY\", 5], 0, \"year\"), I(0, [\"YYYYYY\", 6, !0], 0, \"year\"), C(\"year\", \"y\"), F(\"year\", 1), ue(\"Y\", se), ue(\"YY\", B, z), ue(\"YYYY\", ee, q), ue(\"YYYYY\", te, J), ue(\"YYYYYY\", te, J), ce([\"YYYYY\", \"YYYYYY\"], me), ce(\"YYYY\", function (e, t) { t[me] = 2 === e.length ? c.parseTwoDigitYear(e) : D(e) }), ce(\"YY\", function (e, t) { t[me] = c.parseTwoDigitYear(e) }), ce(\"Y\", function (e, t) { t[me] = parseInt(e, 10) }), c.parseTwoDigitYear = function (e) { return D(e) + (68 < D(e) ? 1900 : 2e3) }; var Ye, Oe = Te(\"FullYear\", !0); function Te(t, n) { return function (e) { return null != e ? (xe(this, t, e), c.updateOffset(this, n), this) : be(this, t) } } function be(e, t) { return e.isValid() ? e._d[\"get\" + (e._isUTC ? \"UTC\" : \"\") + t]() : NaN } function xe(e, t, n) { e.isValid() && !isNaN(n) && (\"FullYear\" === t && De(e.year()) && 1 === e.month() && 29 === e.date() ? e._d[\"set\" + (e._isUTC ? \"UTC\" : \"\") + t](n, e.month(), Pe(n, e.month())) : e._d[\"set\" + (e._isUTC ? \"UTC\" : \"\") + t](n)) } function Pe(e, t) { if (isNaN(e) || isNaN(t)) return NaN; var n, s = (t % (n = 12) + n) % n; return e += (t - s) / 12, 1 === s ? De(e) ? 29 : 28 : 31 - s % 7 % 2 } Ye = Array.prototype.indexOf ? Array.prototype.indexOf : function (e) { var t; for (t = 0; t < this.length; ++t)if (this[t] === e) return t; return -1 }, I(\"M\", [\"MM\", 2], \"Mo\", function () { return this.month() + 1 }), I(\"MMM\", 0, 0, function (e) { return this.localeData().monthsShort(this, e) }), I(\"MMMM\", 0, 0, function (e) { return this.localeData().months(this, e) }), C(\"month\", \"M\"), F(\"month\", 8), ue(\"M\", B), ue(\"MM\", B, z), ue(\"MMM\", function (e, t) { return t.monthsShortRegex(e) }), ue(\"MMMM\", function (e, t) { return t.monthsRegex(e) }), ce([\"M\", \"MM\"], function (e, t) { t[_e] = D(e) - 1 }), ce([\"MMM\", \"MMMM\"], function (e, t, n, s) { var i = n._locale.monthsParse(e, s, n._strict); null != i ? t[_e] = i : g(n).invalidMonth = e }); var We = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/, Ce = \"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"); var He = \"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"); function Re(e, t) { var n; if (!e.isValid()) return e; if (\"string\" == typeof t) if (/^\\d+$/.test(t)) t = D(t); else if (!h(t = e.localeData().monthsParse(t))) return e; return n = Math.min(e.date(), Pe(e.year(), t)), e._d[\"set\" + (e._isUTC ? \"UTC\" : \"\") + \"Month\"](t, n), e } function Ue(e) { return null != e ? (Re(this, e), c.updateOffset(this, !0), this) : be(this, \"Month\") } var Fe = ae; var Le = ae; function Ne() { function e(e, t) { return t.length - e.length } var t, n, s = [], i = [], r = []; for (t = 0; t < 12; t++)n = y([2e3, t]), s.push(this.monthsShort(n, \"\")), i.push(this.months(n, \"\")), r.push(this.months(n, \"\")), r.push(this.monthsShort(n, \"\")); for (s.sort(e), i.sort(e), r.sort(e), t = 0; t < 12; t++)s[t] = he(s[t]), i[t] = he(i[t]); for (t = 0; t < 24; t++)r[t] = he(r[t]); this._monthsRegex = new RegExp(\"^(\" + r.join(\"|\") + \")\", \"i\"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp(\"^(\" + i.join(\"|\") + \")\", \"i\"), this._monthsShortStrictRegex = new RegExp(\"^(\" + s.join(\"|\") + \")\", \"i\") } function Ge(e) { var t; if (e < 100 && 0 <= e) { var n = Array.prototype.slice.call(arguments); n[0] = e + 400, t = new Date(Date.UTC.apply(null, n)), isFinite(t.getUTCFullYear()) && t.setUTCFullYear(e) } else t = new Date(Date.UTC.apply(null, arguments)); return t } function Ve(e, t, n) { var s = 7 + t - n; return -((7 + Ge(e, 0, s).getUTCDay() - t) % 7) + s - 1 } function Ee(e, t, n, s, i) { var r, a, o = 1 + 7 * (t - 1) + (7 + n - s) % 7 + Ve(e, s, i); return a = o <= 0 ? Se(r = e - 1) + o : o > Se(e) ? (r = e + 1, o - Se(e)) : (r = e, o), { year: r, dayOfYear: a } } function Ie(e, t, n) { var s, i, r = Ve(e.year(), t, n), a = Math.floor((e.dayOfYear() - r - 1) / 7) + 1; return a < 1 ? s = a + Ae(i = e.year() - 1, t, n) : a > Ae(e.year(), t, n) ? (s = a - Ae(e.year(), t, n), i = e.year() + 1) : (i = e.year(), s = a), { week: s, year: i } } function Ae(e, t, n) { var s = Ve(e, t, n), i = Ve(e + 1, t, n); return (Se(e) - s + i) / 7 } I(\"w\", [\"ww\", 2], \"wo\", \"week\"), I(\"W\", [\"WW\", 2], \"Wo\", \"isoWeek\"), C(\"week\", \"w\"), C(\"isoWeek\", \"W\"), F(\"week\", 5), F(\"isoWeek\", 5), ue(\"w\", B), ue(\"ww\", B, z), ue(\"W\", B), ue(\"WW\", B, z), fe([\"w\", \"ww\", \"W\", \"WW\"], function (e, t, n, s) { t[s.substr(0, 1)] = D(e) }); function je(e, t) { return e.slice(t, 7).concat(e.slice(0, t)) } I(\"d\", 0, \"do\", \"day\"), I(\"dd\", 0, 0, function (e) { return this.localeData().weekdaysMin(this, e) }), I(\"ddd\", 0, 0, function (e) { return this.localeData().weekdaysShort(this, e) }), I(\"dddd\", 0, 0, function (e) { return this.localeData().weekdays(this, e) }), I(\"e\", 0, 0, \"weekday\"), I(\"E\", 0, 0, \"isoWeekday\"), C(\"day\", \"d\"), C(\"weekday\", \"e\"), C(\"isoWeekday\", \"E\"), F(\"day\", 11), F(\"weekday\", 11), F(\"isoWeekday\", 11), ue(\"d\", B), ue(\"e\", B), ue(\"E\", B), ue(\"dd\", function (e, t) { return t.weekdaysMinRegex(e) }), ue(\"ddd\", function (e, t) { return t.weekdaysShortRegex(e) }), ue(\"dddd\", function (e, t) { return t.weekdaysRegex(e) }), fe([\"dd\", \"ddd\", \"dddd\"], function (e, t, n, s) { var i = n._locale.weekdaysParse(e, s, n._strict); null != i ? t.d = i : g(n).invalidWeekday = e }), fe([\"d\", \"e\", \"E\"], function (e, t, n, s) { t[s] = D(e) }); var Ze = \"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"); var ze = \"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"); var $e = \"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"); var qe = ae; var Je = ae; var Be = ae; function Qe() { function e(e, t) { return t.length - e.length } var t, n, s, i, r, a = [], o = [], u = [], l = []; for (t = 0; t < 7; t++)n = y([2e3, 1]).day(t), s = this.weekdaysMin(n, \"\"), i = this.weekdaysShort(n, \"\"), r = this.weekdays(n, \"\"), a.push(s), o.push(i), u.push(r), l.push(s), l.push(i), l.push(r); for (a.sort(e), o.sort(e), u.sort(e), l.sort(e), t = 0; t < 7; t++)o[t] = he(o[t]), u[t] = he(u[t]), l[t] = he(l[t]); this._weekdaysRegex = new RegExp(\"^(\" + l.join(\"|\") + \")\", \"i\"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp(\"^(\" + u.join(\"|\") + \")\", \"i\"), this._weekdaysShortStrictRegex = new RegExp(\"^(\" + o.join(\"|\") + \")\", \"i\"), this._weekdaysMinStrictRegex = new RegExp(\"^(\" + a.join(\"|\") + \")\", \"i\") } function Xe() { return this.hours() % 12 || 12 } function Ke(e, t) { I(e, 0, 0, function () { return this.localeData().meridiem(this.hours(), this.minutes(), t) }) } function et(e, t) { return t._meridiemParse } I(\"H\", [\"HH\", 2], 0, \"hour\"), I(\"h\", [\"hh\", 2], 0, Xe), I(\"k\", [\"kk\", 2], 0, function () { return this.hours() || 24 }), I(\"hmm\", 0, 0, function () { return \"\" + Xe.apply(this) + L(this.minutes(), 2) }), I(\"hmmss\", 0, 0, function () { return \"\" + Xe.apply(this) + L(this.minutes(), 2) + L(this.seconds(), 2) }), I(\"Hmm\", 0, 0, function () { return \"\" + this.hours() + L(this.minutes(), 2) }), I(\"Hmmss\", 0, 0, function () { return \"\" + this.hours() + L(this.minutes(), 2) + L(this.seconds(), 2) }), Ke(\"a\", !0), Ke(\"A\", !1), C(\"hour\", \"h\"), F(\"hour\", 13), ue(\"a\", et), ue(\"A\", et), ue(\"H\", B), ue(\"h\", B), ue(\"k\", B), ue(\"HH\", B, z), ue(\"hh\", B, z), ue(\"kk\", B, z), ue(\"hmm\", Q), ue(\"hmmss\", X), ue(\"Hmm\", Q), ue(\"Hmmss\", X), ce([\"H\", \"HH\"], ge), ce([\"k\", \"kk\"], function (e, t, n) { var s = D(e); t[ge] = 24 === s ? 0 : s }), ce([\"a\", \"A\"], function (e, t, n) { n._isPm = n._locale.isPM(e), n._meridiem = e }), ce([\"h\", \"hh\"], function (e, t, n) { t[ge] = D(e), g(n).bigHour = !0 }), ce(\"hmm\", function (e, t, n) { var s = e.length - 2; t[ge] = D(e.substr(0, s)), t[ve] = D(e.substr(s)), g(n).bigHour = !0 }), ce(\"hmmss\", function (e, t, n) { var s = e.length - 4, i = e.length - 2; t[ge] = D(e.substr(0, s)), t[ve] = D(e.substr(s, 2)), t[pe] = D(e.substr(i)), g(n).bigHour = !0 }), ce(\"Hmm\", function (e, t, n) { var s = e.length - 2; t[ge] = D(e.substr(0, s)), t[ve] = D(e.substr(s)) }), ce(\"Hmmss\", function (e, t, n) { var s = e.length - 4, i = e.length - 2; t[ge] = D(e.substr(0, s)), t[ve] = D(e.substr(s, 2)), t[pe] = D(e.substr(i)) }); var tt, nt = Te(\"Hours\", !0), st = { calendar: { sameDay: \"[Today at] LT\", nextDay: \"[Tomorrow at] LT\", nextWeek: \"dddd [at] LT\", lastDay: \"[Yesterday at] LT\", lastWeek: \"[Last] dddd [at] LT\", sameElse: \"L\" }, longDateFormat: { LTS: \"h:mm:ss A\", LT: \"h:mm A\", L: \"MM/DD/YYYY\", LL: \"MMMM D, YYYY\", LLL: \"MMMM D, YYYY h:mm A\", LLLL: \"dddd, MMMM D, YYYY h:mm A\" }, invalidDate: \"Invalid date\", ordinal: \"%d\", dayOfMonthOrdinalParse: /\\d{1,2}/, relativeTime: { future: \"in %s\", past: \"%s ago\", s: \"a few seconds\", ss: \"%d seconds\", m: \"a minute\", mm: \"%d minutes\", h: \"an hour\", hh: \"%d hours\", d: \"a day\", dd: \"%d days\", M: \"a month\", MM: \"%d months\", y: \"a year\", yy: \"%d years\" }, months: Ce, monthsShort: He, week: { dow: 0, doy: 6 }, weekdays: Ze, weekdaysMin: $e, weekdaysShort: ze, meridiemParse: /[ap]\\.?m?\\.?/i }, it = {}, rt = {}; function at(e) { return e ? e.toLowerCase().replace(\"_\", \"-\") : e } function ot(e) { var t = null; if (!it[e] && \"undefined\" != typeof module && module && module.exports) try { t = tt._abbr, require(\"./locale/\" + e), ut(t) } catch (e) { } return it[e] } function ut(e, t) { var n; return e && ((n = l(t) ? ht(e) : lt(e, t)) ? tt = n : \"undefined\" != typeof console && console.warn && console.warn(\"Locale \" + e + \" not found. Did you forget to load it?\")), tt._abbr } function lt(e, t) { if (null === t) return delete it[e], null; var n, s = st; if (t.abbr = e, null != it[e]) T(\"defineLocaleOverride\", \"use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info.\"), s = it[e]._config; else if (null != t.parentLocale) if (null != it[t.parentLocale]) s = it[t.parentLocale]._config; else { if (null == (n = ot(t.parentLocale))) return rt[t.parentLocale] || (rt[t.parentLocale] = []), rt[t.parentLocale].push({ name: e, config: t }), null; s = n._config } return it[e] = new P(x(s, t)), rt[e] && rt[e].forEach(function (e) { lt(e.name, e.config) }), ut(e), it[e] } function ht(e) { var t; if (e && e._locale && e._locale._abbr && (e = e._locale._abbr), !e) return tt; if (!o(e)) { if (t = ot(e)) return t; e = [e] } return function (e) { for (var t, n, s, i, r = 0; r < e.length;) { for (t = (i = at(e[r]).split(\"-\")).length, n = (n = at(e[r + 1])) ? n.split(\"-\") : null; 0 < t;) { if (s = ot(i.slice(0, t).join(\"-\"))) return s; if (n && n.length >= t && a(i, n, !0) >= t - 1) break; t-- } r++ } return tt }(e) } function dt(e) { var t, n = e._a; return n && -2 === g(e).overflow && (t = n[_e] < 0 || 11 < n[_e] ? _e : n[ye] < 1 || n[ye] > Pe(n[me], n[_e]) ? ye : n[ge] < 0 || 24 < n[ge] || 24 === n[ge] && (0 !== n[ve] || 0 !== n[pe] || 0 !== n[we]) ? ge : n[ve] < 0 || 59 < n[ve] ? ve : n[pe] < 0 || 59 < n[pe] ? pe : n[we] < 0 || 999 < n[we] ? we : -1, g(e)._overflowDayOfYear && (t < me || ye < t) && (t = ye), g(e)._overflowWeeks && -1 === t && (t = Me), g(e)._overflowWeekday && -1 === t && (t = ke), g(e).overflow = t), e } function ct(e, t, n) { return null != e ? e : null != t ? t : n } function ft(e) { var t, n, s, i, r, a = []; if (!e._d) { var o, u; for (o = e, u = new Date(c.now()), s = o._useUTC ? [u.getUTCFullYear(), u.getUTCMonth(), u.getUTCDate()] : [u.getFullYear(), u.getMonth(), u.getDate()], e._w && null == e._a[ye] && null == e._a[_e] && function (e) { var t, n, s, i, r, a, o, u; if (null != (t = e._w).GG || null != t.W || null != t.E) r = 1, a = 4, n = ct(t.GG, e._a[me], Ie(bt(), 1, 4).year), s = ct(t.W, 1), ((i = ct(t.E, 1)) < 1 || 7 < i) && (u = !0); else { r = e._locale._week.dow, a = e._locale._week.doy; var l = Ie(bt(), r, a); n = ct(t.gg, e._a[me], l.year), s = ct(t.w, l.week), null != t.d ? ((i = t.d) < 0 || 6 < i) && (u = !0) : null != t.e ? (i = t.e + r, (t.e < 0 || 6 < t.e) && (u = !0)) : i = r } s < 1 || s > Ae(n, r, a) ? g(e)._overflowWeeks = !0 : null != u ? g(e)._overflowWeekday = !0 : (o = Ee(n, s, i, r, a), e._a[me] = o.year, e._dayOfYear = o.dayOfYear) }(e), null != e._dayOfYear && (r = ct(e._a[me], s[me]), (e._dayOfYear > Se(r) || 0 === e._dayOfYear) && (g(e)._overflowDayOfYear = !0), n = Ge(r, 0, e._dayOfYear), e._a[_e] = n.getUTCMonth(), e._a[ye] = n.getUTCDate()), t = 0; t < 3 && null == e._a[t]; ++t)e._a[t] = a[t] = s[t]; for (; t < 7; t++)e._a[t] = a[t] = null == e._a[t] ? 2 === t ? 1 : 0 : e._a[t]; 24 === e._a[ge] && 0 === e._a[ve] && 0 === e._a[pe] && 0 === e._a[we] && (e._nextDay = !0, e._a[ge] = 0), e._d = (e._useUTC ? Ge : function (e, t, n, s, i, r, a) { var o; return e < 100 && 0 <= e ? (o = new Date(e + 400, t, n, s, i, r, a), isFinite(o.getFullYear()) && o.setFullYear(e)) : o = new Date(e, t, n, s, i, r, a), o }).apply(null, a), i = e._useUTC ? e._d.getUTCDay() : e._d.getDay(), null != e._tzm && e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), e._nextDay && (e._a[ge] = 24), e._w && void 0 !== e._w.d && e._w.d !== i && (g(e).weekdayMismatch = !0) } } var mt = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/, _t = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/, yt = /Z|[+-]\\d\\d(?::?\\d\\d)?/, gt = [[\"YYYYYY-MM-DD\", /[+-]\\d{6}-\\d\\d-\\d\\d/], [\"YYYY-MM-DD\", /\\d{4}-\\d\\d-\\d\\d/], [\"GGGG-[W]WW-E\", /\\d{4}-W\\d\\d-\\d/], [\"GGGG-[W]WW\", /\\d{4}-W\\d\\d/, !1], [\"YYYY-DDD\", /\\d{4}-\\d{3}/], [\"YYYY-MM\", /\\d{4}-\\d\\d/, !1], [\"YYYYYYMMDD\", /[+-]\\d{10}/], [\"YYYYMMDD\", /\\d{8}/], [\"GGGG[W]WWE\", /\\d{4}W\\d{3}/], [\"GGGG[W]WW\", /\\d{4}W\\d{2}/, !1], [\"YYYYDDD\", /\\d{7}/]], vt = [[\"HH:mm:ss.SSSS\", /\\d\\d:\\d\\d:\\d\\d\\.\\d+/], [\"HH:mm:ss,SSSS\", /\\d\\d:\\d\\d:\\d\\d,\\d+/], [\"HH:mm:ss\", /\\d\\d:\\d\\d:\\d\\d/], [\"HH:mm\", /\\d\\d:\\d\\d/], [\"HHmmss.SSSS\", /\\d\\d\\d\\d\\d\\d\\.\\d+/], [\"HHmmss,SSSS\", /\\d\\d\\d\\d\\d\\d,\\d+/], [\"HHmmss\", /\\d\\d\\d\\d\\d\\d/], [\"HHmm\", /\\d\\d\\d\\d/], [\"HH\", /\\d\\d/]], pt = /^\\/?Date\\((\\-?\\d+)/i; function wt(e) { var t, n, s, i, r, a, o = e._i, u = mt.exec(o) || _t.exec(o); if (u) { for (g(e).iso = !0, t = 0, n = gt.length; t < n; t++)if (gt[t][1].exec(u[1])) { i = gt[t][0], s = !1 !== gt[t][2]; break } if (null == i) return void (e._isValid = !1); if (u[3]) { for (t = 0, n = vt.length; t < n; t++)if (vt[t][1].exec(u[3])) { r = (u[2] || \" \") + vt[t][0]; break } if (null == r) return void (e._isValid = !1) } if (!s && null != r) return void (e._isValid = !1); if (u[4]) { if (!yt.exec(u[4])) return void (e._isValid = !1); a = \"Z\" } e._f = i + (r || \"\") + (a || \"\"), Yt(e) } else e._isValid = !1 } var Mt = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/; function kt(e, t, n, s, i, r) { var a = [function (e) { var t = parseInt(e, 10); { if (t <= 49) return 2e3 + t; if (t <= 999) return 1900 + t } return t }(e), He.indexOf(t), parseInt(n, 10), parseInt(s, 10), parseInt(i, 10)]; return r && a.push(parseInt(r, 10)), a } var St = { UT: 0, GMT: 0, EDT: -240, EST: -300, CDT: -300, CST: -360, MDT: -360, MST: -420, PDT: -420, PST: -480 }; function Dt(e) { var t, n, s, i = Mt.exec(e._i.replace(/\\([^)]*\\)|[\\n\\t]/g, \" \").replace(/(\\s\\s+)/g, \" \").replace(/^\\s\\s*/, \"\").replace(/\\s\\s*$/, \"\")); if (i) { var r = kt(i[4], i[3], i[2], i[5], i[6], i[7]); if (t = i[1], n = r, s = e, t && ze.indexOf(t) !== new Date(n[0], n[1], n[2]).getDay() && (g(s).weekdayMismatch = !0, !(s._isValid = !1))) return; e._a = r, e._tzm = function (e, t, n) { if (e) return St[e]; if (t) return 0; var s = parseInt(n, 10), i = s % 100; return (s - i) / 100 * 60 + i }(i[8], i[9], i[10]), e._d = Ge.apply(null, e._a), e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), g(e).rfc2822 = !0 } else e._isValid = !1 } function Yt(e) { if (e._f !== c.ISO_8601) if (e._f !== c.RFC_2822) { e._a = [], g(e).empty = !0; var t, n, s, i, r, a, o, u, l = \"\" + e._i, h = l.length, d = 0; for (s = j(e._f, e._locale).match(N) || [], t = 0; t < s.length; t++)i = s[t], (n = (l.match(le(i, e)) || [])[0]) && (0 < (r = l.substr(0, l.indexOf(n))).length && g(e).unusedInput.push(r), l = l.slice(l.indexOf(n) + n.length), d += n.length), E[i] ? (n ? g(e).empty = !1 : g(e).unusedTokens.push(i), a = i, u = e, null != (o = n) && m(de, a) && de[a](o, u._a, u, a)) : e._strict && !n && g(e).unusedTokens.push(i); g(e).charsLeftOver = h - d, 0 < l.length && g(e).unusedInput.push(l), e._a[ge] <= 12 && !0 === g(e).bigHour && 0 < e._a[ge] && (g(e).bigHour = void 0), g(e).parsedDateParts = e._a.slice(0), g(e).meridiem = e._meridiem, e._a[ge] = function (e, t, n) { var s; if (null == n) return t; return null != e.meridiemHour ? e.meridiemHour(t, n) : (null != e.isPM && ((s = e.isPM(n)) && t < 12 && (t += 12), s || 12 !== t || (t = 0)), t) }(e._locale, e._a[ge], e._meridiem), ft(e), dt(e) } else Dt(e); else wt(e) } function Ot(e) { var t, n, s, i, r = e._i, a = e._f; return e._locale = e._locale || ht(e._l), null === r || void 0 === a && \"\" === r ? p({ nullInput: !0 }) : (\"string\" == typeof r && (e._i = r = e._locale.preparse(r)), k(r) ? new M(dt(r)) : (d(r) ? e._d = r : o(a) ? function (e) { var t, n, s, i, r; if (0 === e._f.length) return g(e).invalidFormat = !0, e._d = new Date(NaN); for (i = 0; i < e._f.length; i++)r = 0, t = w({}, e), null != e._useUTC && (t._useUTC = e._useUTC), t._f = e._f[i], Yt(t), v(t) && (r += g(t).charsLeftOver, r += 10 * g(t).unusedTokens.length, g(t).score = r, (null == s || r < s) && (s = r, n = t)); _(e, n || t) }(e) : a ? Yt(e) : l(n = (t = e)._i) ? t._d = new Date(c.now()) : d(n) ? t._d = new Date(n.valueOf()) : \"string\" == typeof n ? (s = t, null === (i = pt.exec(s._i)) ? (wt(s), !1 === s._isValid && (delete s._isValid, Dt(s), !1 === s._isValid && (delete s._isValid, c.createFromInputFallback(s)))) : s._d = new Date(+i[1])) : o(n) ? (t._a = f(n.slice(0), function (e) { return parseInt(e, 10) }), ft(t)) : u(n) ? function (e) { if (!e._d) { var t = R(e._i); e._a = f([t.year, t.month, t.day || t.date, t.hour, t.minute, t.second, t.millisecond], function (e) { return e && parseInt(e, 10) }), ft(e) } }(t) : h(n) ? t._d = new Date(n) : c.createFromInputFallback(t), v(e) || (e._d = null), e)) } function Tt(e, t, n, s, i) { var r, a = {}; return !0 !== n && !1 !== n || (s = n, n = void 0), (u(e) && function (e) { if (Object.getOwnPropertyNames) return 0 === Object.getOwnPropertyNames(e).length; var t; for (t in e) if (e.hasOwnProperty(t)) return !1; return !0 }(e) || o(e) && 0 === e.length) && (e = void 0), a._isAMomentObject = !0, a._useUTC = a._isUTC = i, a._l = n, a._i = e, a._f = t, a._strict = s, (r = new M(dt(Ot(a))))._nextDay && (r.add(1, \"d\"), r._nextDay = void 0), r } function bt(e, t, n, s) { return Tt(e, t, n, s, !1) } c.createFromInputFallback = n(\"value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.\", function (e) { e._d = new Date(e._i + (e._useUTC ? \" UTC\" : \"\")) }), c.ISO_8601 = function () { }, c.RFC_2822 = function () { }; var xt = n(\"moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/\", function () { var e = bt.apply(null, arguments); return this.isValid() && e.isValid() ? e < this ? this : e : p() }), Pt = n(\"moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/\", function () { var e = bt.apply(null, arguments); return this.isValid() && e.isValid() ? this < e ? this : e : p() }); function Wt(e, t) { var n, s; if (1 === t.length && o(t[0]) && (t = t[0]), !t.length) return bt(); for (n = t[0], s = 1; s < t.length; ++s)t[s].isValid() && !t[s][e](n) || (n = t[s]); return n } var Ct = [\"year\", \"quarter\", \"month\", \"week\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"]; function Ht(e) { var t = R(e), n = t.year || 0, s = t.quarter || 0, i = t.month || 0, r = t.week || t.isoWeek || 0, a = t.day || 0, o = t.hour || 0, u = t.minute || 0, l = t.second || 0, h = t.millisecond || 0; this._isValid = function (e) { for (var t in e) if (-1 === Ye.call(Ct, t) || null != e[t] && isNaN(e[t])) return !1; for (var n = !1, s = 0; s < Ct.length; ++s)if (e[Ct[s]]) { if (n) return !1; parseFloat(e[Ct[s]]) !== D(e[Ct[s]]) && (n = !0) } return !0 }(t), this._milliseconds = +h + 1e3 * l + 6e4 * u + 1e3 * o * 60 * 60, this._days = +a + 7 * r, this._months = +i + 3 * s + 12 * n, this._data = {}, this._locale = ht(), this._bubble() } function Rt(e) { return e instanceof Ht } function Ut(e) { return e < 0 ? -1 * Math.round(-1 * e) : Math.round(e) } function Ft(e, n) { I(e, 0, 0, function () { var e = this.utcOffset(), t = \"+\"; return e < 0 && (e = -e, t = \"-\"), t + L(~~(e / 60), 2) + n + L(~~e % 60, 2) }) } Ft(\"Z\", \":\"), Ft(\"ZZ\", \"\"), ue(\"Z\", re), ue(\"ZZ\", re), ce([\"Z\", \"ZZ\"], function (e, t, n) { n._useUTC = !0, n._tzm = Nt(re, e) }); var Lt = /([\\+\\-]|\\d\\d)/gi; function Nt(e, t) { var n = (t || \"\").match(e); if (null === n) return null; var s = ((n[n.length - 1] || []) + \"\").match(Lt) || [\"-\", 0, 0], i = 60 * s[1] + D(s[2]); return 0 === i ? 0 : \"+\" === s[0] ? i : -i } function Gt(e, t) { var n, s; return t._isUTC ? (n = t.clone(), s = (k(e) || d(e) ? e.valueOf() : bt(e).valueOf()) - n.valueOf(), n._d.setTime(n._d.valueOf() + s), c.updateOffset(n, !1), n) : bt(e).local() } function Vt(e) { return 15 * -Math.round(e._d.getTimezoneOffset() / 15) } function Et() { return !!this.isValid() && (this._isUTC && 0 === this._offset) } c.updateOffset = function () { }; var It = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/, At = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; function jt(e, t) { var n, s, i, r = e, a = null; return Rt(e) ? r = { ms: e._milliseconds, d: e._days, M: e._months } : h(e) ? (r = {}, t ? r[t] = e : r.milliseconds = e) : (a = It.exec(e)) ? (n = \"-\" === a[1] ? -1 : 1, r = { y: 0, d: D(a[ye]) * n, h: D(a[ge]) * n, m: D(a[ve]) * n, s: D(a[pe]) * n, ms: D(Ut(1e3 * a[we])) * n }) : (a = At.exec(e)) ? (n = \"-\" === a[1] ? -1 : 1, r = { y: Zt(a[2], n), M: Zt(a[3], n), w: Zt(a[4], n), d: Zt(a[5], n), h: Zt(a[6], n), m: Zt(a[7], n), s: Zt(a[8], n) }) : null == r ? r = {} : \"object\" == typeof r && (\"from\" in r || \"to\" in r) && (i = function (e, t) { var n; if (!e.isValid() || !t.isValid()) return { milliseconds: 0, months: 0 }; t = Gt(t, e), e.isBefore(t) ? n = zt(e, t) : ((n = zt(t, e)).milliseconds = -n.milliseconds, n.months = -n.months); return n }(bt(r.from), bt(r.to)), (r = {}).ms = i.milliseconds, r.M = i.months), s = new Ht(r), Rt(e) && m(e, \"_locale\") && (s._locale = e._locale), s } function Zt(e, t) { var n = e && parseFloat(e.replace(\",\", \".\")); return (isNaN(n) ? 0 : n) * t } function zt(e, t) { var n = {}; return n.months = t.month() - e.month() + 12 * (t.year() - e.year()), e.clone().add(n.months, \"M\").isAfter(t) && --n.months, n.milliseconds = +t - +e.clone().add(n.months, \"M\"), n } function $t(s, i) { return function (e, t) { var n; return null === t || isNaN(+t) || (T(i, \"moment().\" + i + \"(period, number) is deprecated. Please use moment().\" + i + \"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.\"), n = e, e = t, t = n), qt(this, jt(e = \"string\" == typeof e ? +e : e, t), s), this } } function qt(e, t, n, s) { var i = t._milliseconds, r = Ut(t._days), a = Ut(t._months); e.isValid() && (s = null == s || s, a && Re(e, be(e, \"Month\") + a * n), r && xe(e, \"Date\", be(e, \"Date\") + r * n), i && e._d.setTime(e._d.valueOf() + i * n), s && c.updateOffset(e, r || a)) } jt.fn = Ht.prototype, jt.invalid = function () { return jt(NaN) }; var Jt = $t(1, \"add\"), Bt = $t(-1, \"subtract\"); function Qt(e, t) { var n = 12 * (t.year() - e.year()) + (t.month() - e.month()), s = e.clone().add(n, \"months\"); return -(n + (t - s < 0 ? (t - s) / (s - e.clone().add(n - 1, \"months\")) : (t - s) / (e.clone().add(n + 1, \"months\") - s))) || 0 } function Xt(e) { var t; return void 0 === e ? this._locale._abbr : (null != (t = ht(e)) && (this._locale = t), this) } c.defaultFormat = \"YYYY-MM-DDTHH:mm:ssZ\", c.defaultFormatUtc = \"YYYY-MM-DDTHH:mm:ss[Z]\"; var Kt = n(\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\", function (e) { return void 0 === e ? this.localeData() : this.locale(e) }); function en() { return this._locale } var tn = 126227808e5; function nn(e, t) { return (e % t + t) % t } function sn(e, t, n) { return e < 100 && 0 <= e ? new Date(e + 400, t, n) - tn : new Date(e, t, n).valueOf() } function rn(e, t, n) { return e < 100 && 0 <= e ? Date.UTC(e + 400, t, n) - tn : Date.UTC(e, t, n) } function an(e, t) { I(0, [e, e.length], 0, t) } function on(e, t, n, s, i) { var r; return null == e ? Ie(this, s, i).year : ((r = Ae(e, s, i)) < t && (t = r), function (e, t, n, s, i) { var r = Ee(e, t, n, s, i), a = Ge(r.year, 0, r.dayOfYear); return this.year(a.getUTCFullYear()), this.month(a.getUTCMonth()), this.date(a.getUTCDate()), this }.call(this, e, t, n, s, i)) } I(0, [\"gg\", 2], 0, function () { return this.weekYear() % 100 }), I(0, [\"GG\", 2], 0, function () { return this.isoWeekYear() % 100 }), an(\"gggg\", \"weekYear\"), an(\"ggggg\", \"weekYear\"), an(\"GGGG\", \"isoWeekYear\"), an(\"GGGGG\", \"isoWeekYear\"), C(\"weekYear\", \"gg\"), C(\"isoWeekYear\", \"GG\"), F(\"weekYear\", 1), F(\"isoWeekYear\", 1), ue(\"G\", se), ue(\"g\", se), ue(\"GG\", B, z), ue(\"gg\", B, z), ue(\"GGGG\", ee, q), ue(\"gggg\", ee, q), ue(\"GGGGG\", te, J), ue(\"ggggg\", te, J), fe([\"gggg\", \"ggggg\", \"GGGG\", \"GGGGG\"], function (e, t, n, s) { t[s.substr(0, 2)] = D(e) }), fe([\"gg\", \"GG\"], function (e, t, n, s) { t[s] = c.parseTwoDigitYear(e) }), I(\"Q\", 0, \"Qo\", \"quarter\"), C(\"quarter\", \"Q\"), F(\"quarter\", 7), ue(\"Q\", Z), ce(\"Q\", function (e, t) { t[_e] = 3 * (D(e) - 1) }), I(\"D\", [\"DD\", 2], \"Do\", \"date\"), C(\"date\", \"D\"), F(\"date\", 9), ue(\"D\", B), ue(\"DD\", B, z), ue(\"Do\", function (e, t) { return e ? t._dayOfMonthOrdinalParse || t._ordinalParse : t._dayOfMonthOrdinalParseLenient }), ce([\"D\", \"DD\"], ye), ce(\"Do\", function (e, t) { t[ye] = D(e.match(B)[0]) }); var un = Te(\"Date\", !0); I(\"DDD\", [\"DDDD\", 3], \"DDDo\", \"dayOfYear\"), C(\"dayOfYear\", \"DDD\"), F(\"dayOfYear\", 4), ue(\"DDD\", K), ue(\"DDDD\", $), ce([\"DDD\", \"DDDD\"], function (e, t, n) { n._dayOfYear = D(e) }), I(\"m\", [\"mm\", 2], 0, \"minute\"), C(\"minute\", \"m\"), F(\"minute\", 14), ue(\"m\", B), ue(\"mm\", B, z), ce([\"m\", \"mm\"], ve); var ln = Te(\"Minutes\", !1); I(\"s\", [\"ss\", 2], 0, \"second\"), C(\"second\", \"s\"), F(\"second\", 15), ue(\"s\", B), ue(\"ss\", B, z), ce([\"s\", \"ss\"], pe); var hn, dn = Te(\"Seconds\", !1); for (I(\"S\", 0, 0, function () { return ~~(this.millisecond() / 100) }), I(0, [\"SS\", 2], 0, function () { return ~~(this.millisecond() / 10) }), I(0, [\"SSS\", 3], 0, \"millisecond\"), I(0, [\"SSSS\", 4], 0, function () { return 10 * this.millisecond() }), I(0, [\"SSSSS\", 5], 0, function () { return 100 * this.millisecond() }), I(0, [\"SSSSSS\", 6], 0, function () { return 1e3 * this.millisecond() }), I(0, [\"SSSSSSS\", 7], 0, function () { return 1e4 * this.millisecond() }), I(0, [\"SSSSSSSS\", 8], 0, function () { return 1e5 * this.millisecond() }), I(0, [\"SSSSSSSSS\", 9], 0, function () { return 1e6 * this.millisecond() }), C(\"millisecond\", \"ms\"), F(\"millisecond\", 16), ue(\"S\", K, Z), ue(\"SS\", K, z), ue(\"SSS\", K, $), hn = \"SSSS\"; hn.length <= 9; hn += \"S\")ue(hn, ne); function cn(e, t) { t[we] = D(1e3 * (\"0.\" + e)) } for (hn = \"S\"; hn.length <= 9; hn += \"S\")ce(hn, cn); var fn = Te(\"Milliseconds\", !1); I(\"z\", 0, 0, \"zoneAbbr\"), I(\"zz\", 0, 0, \"zoneName\"); var mn = M.prototype; function _n(e) { return e } mn.add = Jt, mn.calendar = function (e, t) { var n = e || bt(), s = Gt(n, this).startOf(\"day\"), i = c.calendarFormat(this, s) || \"sameElse\", r = t && (b(t[i]) ? t[i].call(this, n) : t[i]); return this.format(r || this.localeData().calendar(i, this, bt(n))) }, mn.clone = function () { return new M(this) }, mn.diff = function (e, t, n) { var s, i, r; if (!this.isValid()) return NaN; if (!(s = Gt(e, this)).isValid()) return NaN; switch (i = 6e4 * (s.utcOffset() - this.utcOffset()), t = H(t)) { case \"year\": r = Qt(this, s) / 12; break; case \"month\": r = Qt(this, s); break; case \"quarter\": r = Qt(this, s) / 3; break; case \"second\": r = (this - s) / 1e3; break; case \"minute\": r = (this - s) / 6e4; break; case \"hour\": r = (this - s) / 36e5; break; case \"day\": r = (this - s - i) / 864e5; break; case \"week\": r = (this - s - i) / 6048e5; break; default: r = this - s }return n ? r : S(r) }, mn.endOf = function (e) { var t; if (void 0 === (e = H(e)) || \"millisecond\" === e || !this.isValid()) return this; var n = this._isUTC ? rn : sn; switch (e) { case \"year\": t = n(this.year() + 1, 0, 1) - 1; break; case \"quarter\": t = n(this.year(), this.month() - this.month() % 3 + 3, 1) - 1; break; case \"month\": t = n(this.year(), this.month() + 1, 1) - 1; break; case \"week\": t = n(this.year(), this.month(), this.date() - this.weekday() + 7) - 1; break; case \"isoWeek\": t = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1; break; case \"day\": case \"date\": t = n(this.year(), this.month(), this.date() + 1) - 1; break; case \"hour\": t = this._d.valueOf(), t += 36e5 - nn(t + (this._isUTC ? 0 : 6e4 * this.utcOffset()), 36e5) - 1; break; case \"minute\": t = this._d.valueOf(), t += 6e4 - nn(t, 6e4) - 1; break; case \"second\": t = this._d.valueOf(), t += 1e3 - nn(t, 1e3) - 1; break }return this._d.setTime(t), c.updateOffset(this, !0), this }, mn.format = function (e) { e || (e = this.isUtc() ? c.defaultFormatUtc : c.defaultFormat); var t = A(this, e); return this.localeData().postformat(t) }, mn.from = function (e, t) { return this.isValid() && (k(e) && e.isValid() || bt(e).isValid()) ? jt({ to: this, from: e }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate() }, mn.fromNow = function (e) { return this.from(bt(), e) }, mn.to = function (e, t) { return this.isValid() && (k(e) && e.isValid() || bt(e).isValid()) ? jt({ from: this, to: e }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate() }, mn.toNow = function (e) { return this.to(bt(), e) }, mn.get = function (e) { return b(this[e = H(e)]) ? this[e]() : this }, mn.invalidAt = function () { return g(this).overflow }, mn.isAfter = function (e, t) { var n = k(e) ? e : bt(e); return !(!this.isValid() || !n.isValid()) && (\"millisecond\" === (t = H(t) || \"millisecond\") ? this.valueOf() > n.valueOf() : n.valueOf() < this.clone().startOf(t).valueOf()) }, mn.isBefore = function (e, t) { var n = k(e) ? e : bt(e); return !(!this.isValid() || !n.isValid()) && (\"millisecond\" === (t = H(t) || \"millisecond\") ? this.valueOf() < n.valueOf() : this.clone().endOf(t).valueOf() < n.valueOf()) }, mn.isBetween = function (e, t, n, s) { var i = k(e) ? e : bt(e), r = k(t) ? t : bt(t); return !!(this.isValid() && i.isValid() && r.isValid()) && (\"(\" === (s = s || \"()\")[0] ? this.isAfter(i, n) : !this.isBefore(i, n)) && (\")\" === s[1] ? this.isBefore(r, n) : !this.isAfter(r, n)) }, mn.isSame = function (e, t) { var n, s = k(e) ? e : bt(e); return !(!this.isValid() || !s.isValid()) && (\"millisecond\" === (t = H(t) || \"millisecond\") ? this.valueOf() === s.valueOf() : (n = s.valueOf(), this.clone().startOf(t).valueOf() <= n && n <= this.clone().endOf(t).valueOf())) }, mn.isSameOrAfter = function (e, t) { return this.isSame(e, t) || this.isAfter(e, t) }, mn.isSameOrBefore = function (e, t) { return this.isSame(e, t) || this.isBefore(e, t) }, mn.isValid = function () { return v(this) }, mn.lang = Kt, mn.locale = Xt, mn.localeData = en, mn.max = Pt, mn.min = xt, mn.parsingFlags = function () { return _({}, g(this)) }, mn.set = function (e, t) { if (\"object\" == typeof e) for (var n = function (e) { var t = []; for (var n in e) t.push({ unit: n, priority: U[n] }); return t.sort(function (e, t) { return e.priority - t.priority }), t }(e = R(e)), s = 0; s < n.length; s++)this[n[s].unit](e[n[s].unit]); else if (b(this[e = H(e)])) return this[e](t); return this }, mn.startOf = function (e) { var t; if (void 0 === (e = H(e)) || \"millisecond\" === e || !this.isValid()) return this; var n = this._isUTC ? rn : sn; switch (e) { case \"year\": t = n(this.year(), 0, 1); break; case \"quarter\": t = n(this.year(), this.month() - this.month() % 3, 1); break; case \"month\": t = n(this.year(), this.month(), 1); break; case \"week\": t = n(this.year(), this.month(), this.date() - this.weekday()); break; case \"isoWeek\": t = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1)); break; case \"day\": case \"date\": t = n(this.year(), this.month(), this.date()); break; case \"hour\": t = this._d.valueOf(), t -= nn(t + (this._isUTC ? 0 : 6e4 * this.utcOffset()), 36e5); break; case \"minute\": t = this._d.valueOf(), t -= nn(t, 6e4); break; case \"second\": t = this._d.valueOf(), t -= nn(t, 1e3); break }return this._d.setTime(t), c.updateOffset(this, !0), this }, mn.subtract = Bt, mn.toArray = function () { var e = this; return [e.year(), e.month(), e.date(), e.hour(), e.minute(), e.second(), e.millisecond()] }, mn.toObject = function () { var e = this; return { years: e.year(), months: e.month(), date: e.date(), hours: e.hours(), minutes: e.minutes(), seconds: e.seconds(), milliseconds: e.milliseconds() } }, mn.toDate = function () { return new Date(this.valueOf()) }, mn.toISOString = function (e) { if (!this.isValid()) return null; var t = !0 !== e, n = t ? this.clone().utc() : this; return n.year() < 0 || 9999 < n.year() ? A(n, t ? \"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]\" : \"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ\") : b(Date.prototype.toISOString) ? t ? this.toDate().toISOString() : new Date(this.valueOf() + 60 * this.utcOffset() * 1e3).toISOString().replace(\"Z\", A(n, \"Z\")) : A(n, t ? \"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]\" : \"YYYY-MM-DD[T]HH:mm:ss.SSSZ\") }, mn.inspect = function () { if (!this.isValid()) return \"moment.invalid(/* \" + this._i + \" */)\"; var e = \"moment\", t = \"\"; this.isLocal() || (e = 0 === this.utcOffset() ? \"moment.utc\" : \"moment.parseZone\", t = \"Z\"); var n = \"[\" + e + '(\"]', s = 0 <= this.year() && this.year() <= 9999 ? \"YYYY\" : \"YYYYYY\", i = t + '[\")]'; return this.format(n + s + \"-MM-DD[T]HH:mm:ss.SSS\" + i) }, mn.toJSON = function () { return this.isValid() ? this.toISOString() : null }, mn.toString = function () { return this.clone().locale(\"en\").format(\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\") }, mn.unix = function () { return Math.floor(this.valueOf() / 1e3) }, mn.valueOf = function () { return this._d.valueOf() - 6e4 * (this._offset || 0) }, mn.creationData = function () { return { input: this._i, format: this._f, locale: this._locale, isUTC: this._isUTC, strict: this._strict } }, mn.year = Oe, mn.isLeapYear = function () { return De(this.year()) }, mn.weekYear = function (e) { return on.call(this, e, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy) }, mn.isoWeekYear = function (e) { return on.call(this, e, this.isoWeek(), this.isoWeekday(), 1, 4) }, mn.quarter = mn.quarters = function (e) { return null == e ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (e - 1) + this.month() % 3) }, mn.month = Ue, mn.daysInMonth = function () { return Pe(this.year(), this.month()) }, mn.week = mn.weeks = function (e) { var t = this.localeData().week(this); return null == e ? t : this.add(7 * (e - t), \"d\") }, mn.isoWeek = mn.isoWeeks = function (e) { var t = Ie(this, 1, 4).week; return null == e ? t : this.add(7 * (e - t), \"d\") }, mn.weeksInYear = function () { var e = this.localeData()._week; return Ae(this.year(), e.dow, e.doy) }, mn.isoWeeksInYear = function () { return Ae(this.year(), 1, 4) }, mn.date = un, mn.day = mn.days = function (e) { if (!this.isValid()) return null != e ? this : NaN; var t, n, s = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); return null != e ? (t = e, n = this.localeData(), e = \"string\" != typeof t ? t : isNaN(t) ? \"number\" == typeof (t = n.weekdaysParse(t)) ? t : null : parseInt(t, 10), this.add(e - s, \"d\")) : s }, mn.weekday = function (e) { if (!this.isValid()) return null != e ? this : NaN; var t = (this.day() + 7 - this.localeData()._week.dow) % 7; return null == e ? t : this.add(e - t, \"d\") }, mn.isoWeekday = function (e) { if (!this.isValid()) return null != e ? this : NaN; if (null == e) return this.day() || 7; var t, n, s = (t = e, n = this.localeData(), \"string\" == typeof t ? n.weekdaysParse(t) % 7 || 7 : isNaN(t) ? null : t); return this.day(this.day() % 7 ? s : s - 7) }, mn.dayOfYear = function (e) { var t = Math.round((this.clone().startOf(\"day\") - this.clone().startOf(\"year\")) / 864e5) + 1; return null == e ? t : this.add(e - t, \"d\") }, mn.hour = mn.hours = nt, mn.minute = mn.minutes = ln, mn.second = mn.seconds = dn, mn.millisecond = mn.milliseconds = fn, mn.utcOffset = function (e, t, n) { var s, i = this._offset || 0; if (!this.isValid()) return null != e ? this : NaN; if (null == e) return this._isUTC ? i : Vt(this); if (\"string\" == typeof e) { if (null === (e = Nt(re, e))) return this } else Math.abs(e) < 16 && !n && (e *= 60); return !this._isUTC && t && (s = Vt(this)), this._offset = e, this._isUTC = !0, null != s && this.add(s, \"m\"), i !== e && (!t || this._changeInProgress ? qt(this, jt(e - i, \"m\"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, c.updateOffset(this, !0), this._changeInProgress = null)), this }, mn.utc = function (e) { return this.utcOffset(0, e) }, mn.local = function (e) { return this._isUTC && (this.utcOffset(0, e), this._isUTC = !1, e && this.subtract(Vt(this), \"m\")), this }, mn.parseZone = function () { if (null != this._tzm) this.utcOffset(this._tzm, !1, !0); else if (\"string\" == typeof this._i) { var e = Nt(ie, this._i); null != e ? this.utcOffset(e) : this.utcOffset(0, !0) } return this }, mn.hasAlignedHourOffset = function (e) { return !!this.isValid() && (e = e ? bt(e).utcOffset() : 0, (this.utcOffset() - e) % 60 == 0) }, mn.isDST = function () { return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() }, mn.isLocal = function () { return !!this.isValid() && !this._isUTC }, mn.isUtcOffset = function () { return !!this.isValid() && this._isUTC }, mn.isUtc = Et, mn.isUTC = Et, mn.zoneAbbr = function () { return this._isUTC ? \"UTC\" : \"\" }, mn.zoneName = function () { return this._isUTC ? \"Coordinated Universal Time\" : \"\" }, mn.dates = n(\"dates accessor is deprecated. Use date instead.\", un), mn.months = n(\"months accessor is deprecated. Use month instead\", Ue), mn.years = n(\"years accessor is deprecated. Use year instead\", Oe), mn.zone = n(\"moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/\", function (e, t) { return null != e ? (\"string\" != typeof e && (e = -e), this.utcOffset(e, t), this) : -this.utcOffset() }), mn.isDSTShifted = n(\"isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information\", function () { if (!l(this._isDSTShifted)) return this._isDSTShifted; var e = {}; if (w(e, this), (e = Ot(e))._a) { var t = e._isUTC ? y(e._a) : bt(e._a); this._isDSTShifted = this.isValid() && 0 < a(e._a, t.toArray()) } else this._isDSTShifted = !1; return this._isDSTShifted }); var yn = P.prototype; function gn(e, t, n, s) { var i = ht(), r = y().set(s, t); return i[n](r, e) } function vn(e, t, n) { if (h(e) && (t = e, e = void 0), e = e || \"\", null != t) return gn(e, t, n, \"month\"); var s, i = []; for (s = 0; s < 12; s++)i[s] = gn(e, s, n, \"month\"); return i } function pn(e, t, n, s) { t = (\"boolean\" == typeof e ? h(t) && (n = t, t = void 0) : (t = e, e = !1, h(n = t) && (n = t, t = void 0)), t || \"\"); var i, r = ht(), a = e ? r._week.dow : 0; if (null != n) return gn(t, (n + a) % 7, s, \"day\"); var o = []; for (i = 0; i < 7; i++)o[i] = gn(t, (i + a) % 7, s, \"day\"); return o } yn.calendar = function (e, t, n) { var s = this._calendar[e] || this._calendar.sameElse; return b(s) ? s.call(t, n) : s }, yn.longDateFormat = function (e) { var t = this._longDateFormat[e], n = this._longDateFormat[e.toUpperCase()]; return t || !n ? t : (this._longDateFormat[e] = n.replace(/MMMM|MM|DD|dddd/g, function (e) { return e.slice(1) }), this._longDateFormat[e]) }, yn.invalidDate = function () { return this._invalidDate }, yn.ordinal = function (e) { return this._ordinal.replace(\"%d\", e) }, yn.preparse = _n, yn.postformat = _n, yn.relativeTime = function (e, t, n, s) { var i = this._relativeTime[n]; return b(i) ? i(e, t, n, s) : i.replace(/%d/i, e) }, yn.pastFuture = function (e, t) { var n = this._relativeTime[0 < e ? \"future\" : \"past\"]; return b(n) ? n(t) : n.replace(/%s/i, t) }, yn.set = function (e) { var t, n; for (n in e) b(t = e[n]) ? this[n] = t : this[\"_\" + n] = t; this._config = e, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + \"|\" + /\\d{1,2}/.source) }, yn.months = function (e, t) { return e ? o(this._months) ? this._months[e.month()] : this._months[(this._months.isFormat || We).test(t) ? \"format\" : \"standalone\"][e.month()] : o(this._months) ? this._months : this._months.standalone }, yn.monthsShort = function (e, t) { return e ? o(this._monthsShort) ? this._monthsShort[e.month()] : this._monthsShort[We.test(t) ? \"format\" : \"standalone\"][e.month()] : o(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone }, yn.monthsParse = function (e, t, n) { var s, i, r; if (this._monthsParseExact) return function (e, t, n) { var s, i, r, a = e.toLocaleLowerCase(); if (!this._monthsParse) for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], s = 0; s < 12; ++s)r = y([2e3, s]), this._shortMonthsParse[s] = this.monthsShort(r, \"\").toLocaleLowerCase(), this._longMonthsParse[s] = this.months(r, \"\").toLocaleLowerCase(); return n ? \"MMM\" === t ? -1 !== (i = Ye.call(this._shortMonthsParse, a)) ? i : null : -1 !== (i = Ye.call(this._longMonthsParse, a)) ? i : null : \"MMM\" === t ? -1 !== (i = Ye.call(this._shortMonthsParse, a)) ? i : -1 !== (i = Ye.call(this._longMonthsParse, a)) ? i : null : -1 !== (i = Ye.call(this._longMonthsParse, a)) ? i : -1 !== (i = Ye.call(this._shortMonthsParse, a)) ? i : null }.call(this, e, t, n); for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), s = 0; s < 12; s++) { if (i = y([2e3, s]), n && !this._longMonthsParse[s] && (this._longMonthsParse[s] = new RegExp(\"^\" + this.months(i, \"\").replace(\".\", \"\") + \"$\", \"i\"), this._shortMonthsParse[s] = new RegExp(\"^\" + this.monthsShort(i, \"\").replace(\".\", \"\") + \"$\", \"i\")), n || this._monthsParse[s] || (r = \"^\" + this.months(i, \"\") + \"|^\" + this.monthsShort(i, \"\"), this._monthsParse[s] = new RegExp(r.replace(\".\", \"\"), \"i\")), n && \"MMMM\" === t && this._longMonthsParse[s].test(e)) return s; if (n && \"MMM\" === t && this._shortMonthsParse[s].test(e)) return s; if (!n && this._monthsParse[s].test(e)) return s } }, yn.monthsRegex = function (e) { return this._monthsParseExact ? (m(this, \"_monthsRegex\") || Ne.call(this), e ? this._monthsStrictRegex : this._monthsRegex) : (m(this, \"_monthsRegex\") || (this._monthsRegex = Le), this._monthsStrictRegex && e ? this._monthsStrictRegex : this._monthsRegex) }, yn.monthsShortRegex = function (e) { return this._monthsParseExact ? (m(this, \"_monthsRegex\") || Ne.call(this), e ? this._monthsShortStrictRegex : this._monthsShortRegex) : (m(this, \"_monthsShortRegex\") || (this._monthsShortRegex = Fe), this._monthsShortStrictRegex && e ? this._monthsShortStrictRegex : this._monthsShortRegex) }, yn.week = function (e) { return Ie(e, this._week.dow, this._week.doy).week }, yn.firstDayOfYear = function () { return this._week.doy }, yn.firstDayOfWeek = function () { return this._week.dow }, yn.weekdays = function (e, t) { var n = o(this._weekdays) ? this._weekdays : this._weekdays[e && !0 !== e && this._weekdays.isFormat.test(t) ? \"format\" : \"standalone\"]; return !0 === e ? je(n, this._week.dow) : e ? n[e.day()] : n }, yn.weekdaysMin = function (e) { return !0 === e ? je(this._weekdaysMin, this._week.dow) : e ? this._weekdaysMin[e.day()] : this._weekdaysMin }, yn.weekdaysShort = function (e) { return !0 === e ? je(this._weekdaysShort, this._week.dow) : e ? this._weekdaysShort[e.day()] : this._weekdaysShort }, yn.weekdaysParse = function (e, t, n) { var s, i, r; if (this._weekdaysParseExact) return function (e, t, n) { var s, i, r, a = e.toLocaleLowerCase(); if (!this._weekdaysParse) for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], s = 0; s < 7; ++s)r = y([2e3, 1]).day(s), this._minWeekdaysParse[s] = this.weekdaysMin(r, \"\").toLocaleLowerCase(), this._shortWeekdaysParse[s] = this.weekdaysShort(r, \"\").toLocaleLowerCase(), this._weekdaysParse[s] = this.weekdays(r, \"\").toLocaleLowerCase(); return n ? \"dddd\" === t ? -1 !== (i = Ye.call(this._weekdaysParse, a)) ? i : null : \"ddd\" === t ? -1 !== (i = Ye.call(this._shortWeekdaysParse, a)) ? i : null : -1 !== (i = Ye.call(this._minWeekdaysParse, a)) ? i : null : \"dddd\" === t ? -1 !== (i = Ye.call(this._weekdaysParse, a)) ? i : -1 !== (i = Ye.call(this._shortWeekdaysParse, a)) ? i : -1 !== (i = Ye.call(this._minWeekdaysParse, a)) ? i : null : \"ddd\" === t ? -1 !== (i = Ye.call(this._shortWeekdaysParse, a)) ? i : -1 !== (i = Ye.call(this._weekdaysParse, a)) ? i : -1 !== (i = Ye.call(this._minWeekdaysParse, a)) ? i : null : -1 !== (i = Ye.call(this._minWeekdaysParse, a)) ? i : -1 !== (i = Ye.call(this._weekdaysParse, a)) ? i : -1 !== (i = Ye.call(this._shortWeekdaysParse, a)) ? i : null }.call(this, e, t, n); for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), s = 0; s < 7; s++) { if (i = y([2e3, 1]).day(s), n && !this._fullWeekdaysParse[s] && (this._fullWeekdaysParse[s] = new RegExp(\"^\" + this.weekdays(i, \"\").replace(\".\", \"\\\\.?\") + \"$\", \"i\"), this._shortWeekdaysParse[s] = new RegExp(\"^\" + this.weekdaysShort(i, \"\").replace(\".\", \"\\\\.?\") + \"$\", \"i\"), this._minWeekdaysParse[s] = new RegExp(\"^\" + this.weekdaysMin(i, \"\").replace(\".\", \"\\\\.?\") + \"$\", \"i\")), this._weekdaysParse[s] || (r = \"^\" + this.weekdays(i, \"\") + \"|^\" + this.weekdaysShort(i, \"\") + \"|^\" + this.weekdaysMin(i, \"\"), this._weekdaysParse[s] = new RegExp(r.replace(\".\", \"\"), \"i\")), n && \"dddd\" === t && this._fullWeekdaysParse[s].test(e)) return s; if (n && \"ddd\" === t && this._shortWeekdaysParse[s].test(e)) return s; if (n && \"dd\" === t && this._minWeekdaysParse[s].test(e)) return s; if (!n && this._weekdaysParse[s].test(e)) return s } }, yn.weekdaysRegex = function (e) { return this._weekdaysParseExact ? (m(this, \"_weekdaysRegex\") || Qe.call(this), e ? this._weekdaysStrictRegex : this._weekdaysRegex) : (m(this, \"_weekdaysRegex\") || (this._weekdaysRegex = qe), this._weekdaysStrictRegex && e ? this._weekdaysStrictRegex : this._weekdaysRegex) }, yn.weekdaysShortRegex = function (e) { return this._weekdaysParseExact ? (m(this, \"_weekdaysRegex\") || Qe.call(this), e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (m(this, \"_weekdaysShortRegex\") || (this._weekdaysShortRegex = Je), this._weekdaysShortStrictRegex && e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) }, yn.weekdaysMinRegex = function (e) { return this._weekdaysParseExact ? (m(this, \"_weekdaysRegex\") || Qe.call(this), e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (m(this, \"_weekdaysMinRegex\") || (this._weekdaysMinRegex = Be), this._weekdaysMinStrictRegex && e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) }, yn.isPM = function (e) { return \"p\" === (e + \"\").toLowerCase().charAt(0) }, yn.meridiem = function (e, t, n) { return 11 < e ? n ? \"pm\" : \"PM\" : n ? \"am\" : \"AM\" }, ut(\"en\", { dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/, ordinal: function (e) { var t = e % 10; return e + (1 === D(e % 100 / 10) ? \"th\" : 1 === t ? \"st\" : 2 === t ? \"nd\" : 3 === t ? \"rd\" : \"th\") } }), c.lang = n(\"moment.lang is deprecated. Use moment.locale instead.\", ut), c.langData = n(\"moment.langData is deprecated. Use moment.localeData instead.\", ht); var wn = Math.abs; function Mn(e, t, n, s) { var i = jt(t, n); return e._milliseconds += s * i._milliseconds, e._days += s * i._days, e._months += s * i._months, e._bubble() } function kn(e) { return e < 0 ? Math.floor(e) : Math.ceil(e) } function Sn(e) { return 4800 * e / 146097 } function Dn(e) { return 146097 * e / 4800 } function Yn(e) { return function () { return this.as(e) } } var On = Yn(\"ms\"), Tn = Yn(\"s\"), bn = Yn(\"m\"), xn = Yn(\"h\"), Pn = Yn(\"d\"), Wn = Yn(\"w\"), Cn = Yn(\"M\"), Hn = Yn(\"Q\"), Rn = Yn(\"y\"); function Un(e) { return function () { return this.isValid() ? this._data[e] : NaN } } var Fn = Un(\"milliseconds\"), Ln = Un(\"seconds\"), Nn = Un(\"minutes\"), Gn = Un(\"hours\"), Vn = Un(\"days\"), En = Un(\"months\"), In = Un(\"years\"); var An = Math.round, jn = { ss: 44, s: 45, m: 45, h: 22, d: 26, M: 11 }; var Zn = Math.abs; function zn(e) { return (0 < e) - (e < 0) || +e } function $n() { if (!this.isValid()) return this.localeData().invalidDate(); var e, t, n = Zn(this._milliseconds) / 1e3, s = Zn(this._days), i = Zn(this._months); t = S((e = S(n / 60)) / 60), n %= 60, e %= 60; var r = S(i / 12), a = i %= 12, o = s, u = t, l = e, h = n ? n.toFixed(3).replace(/\\.?0+$/, \"\") : \"\", d = this.asSeconds(); if (!d) return \"P0D\"; var c = d < 0 ? \"-\" : \"\", f = zn(this._months) !== zn(d) ? \"-\" : \"\", m = zn(this._days) !== zn(d) ? \"-\" : \"\", _ = zn(this._milliseconds) !== zn(d) ? \"-\" : \"\"; return c + \"P\" + (r ? f + r + \"Y\" : \"\") + (a ? f + a + \"M\" : \"\") + (o ? m + o + \"D\" : \"\") + (u || l || h ? \"T\" : \"\") + (u ? _ + u + \"H\" : \"\") + (l ? _ + l + \"M\" : \"\") + (h ? _ + h + \"S\" : \"\") } var qn = Ht.prototype; return qn.isValid = function () { return this._isValid }, qn.abs = function () { var e = this._data; return this._milliseconds = wn(this._milliseconds), this._days = wn(this._days), this._months = wn(this._months), e.milliseconds = wn(e.milliseconds), e.seconds = wn(e.seconds), e.minutes = wn(e.minutes), e.hours = wn(e.hours), e.months = wn(e.months), e.years = wn(e.years), this }, qn.add = function (e, t) { return Mn(this, e, t, 1) }, qn.subtract = function (e, t) { return Mn(this, e, t, -1) }, qn.as = function (e) { if (!this.isValid()) return NaN; var t, n, s = this._milliseconds; if (\"month\" === (e = H(e)) || \"quarter\" === e || \"year\" === e) switch (t = this._days + s / 864e5, n = this._months + Sn(t), e) { case \"month\": return n; case \"quarter\": return n / 3; case \"year\": return n / 12 } else switch (t = this._days + Math.round(Dn(this._months)), e) { case \"week\": return t / 7 + s / 6048e5; case \"day\": return t + s / 864e5; case \"hour\": return 24 * t + s / 36e5; case \"minute\": return 1440 * t + s / 6e4; case \"second\": return 86400 * t + s / 1e3; case \"millisecond\": return Math.floor(864e5 * t) + s; default: throw new Error(\"Unknown unit \" + e) } }, qn.asMilliseconds = On, qn.asSeconds = Tn, qn.asMinutes = bn, qn.asHours = xn, qn.asDays = Pn, qn.asWeeks = Wn, qn.asMonths = Cn, qn.asQuarters = Hn, qn.asYears = Rn, qn.valueOf = function () { return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * D(this._months / 12) : NaN }, qn._bubble = function () { var e, t, n, s, i, r = this._milliseconds, a = this._days, o = this._months, u = this._data; return 0 <= r && 0 <= a && 0 <= o || r <= 0 && a <= 0 && o <= 0 || (r += 864e5 * kn(Dn(o) + a), o = a = 0), u.milliseconds = r % 1e3, e = S(r / 1e3), u.seconds = e % 60, t = S(e / 60), u.minutes = t % 60, n = S(t / 60), u.hours = n % 24, o += i = S(Sn(a += S(n / 24))), a -= kn(Dn(i)), s = S(o / 12), o %= 12, u.days = a, u.months = o, u.years = s, this }, qn.clone = function () { return jt(this) }, qn.get = function (e) { return e = H(e), this.isValid() ? this[e + \"s\"]() : NaN }, qn.milliseconds = Fn, qn.seconds = Ln, qn.minutes = Nn, qn.hours = Gn, qn.days = Vn, qn.weeks = function () { return S(this.days() / 7) }, qn.months = En, qn.years = In, qn.humanize = function (e) { if (!this.isValid()) return this.localeData().invalidDate(); var t, n, s, i, r, a, o, u, l, h, d, c = this.localeData(), f = (n = !e, s = c, i = jt(t = this).abs(), r = An(i.as(\"s\")), a = An(i.as(\"m\")), o = An(i.as(\"h\")), u = An(i.as(\"d\")), l = An(i.as(\"M\")), h = An(i.as(\"y\")), (d = r <= jn.ss && [\"s\", r] || r < jn.s && [\"ss\", r] || a <= 1 && [\"m\"] || a < jn.m && [\"mm\", a] || o <= 1 && [\"h\"] || o < jn.h && [\"hh\", o] || u <= 1 && [\"d\"] || u < jn.d && [\"dd\", u] || l <= 1 && [\"M\"] || l < jn.M && [\"MM\", l] || h <= 1 && [\"y\"] || [\"yy\", h])[2] = n, d[3] = 0 < +t, d[4] = s, function (e, t, n, s, i) { return i.relativeTime(t || 1, !!n, e, s) }.apply(null, d)); return e && (f = c.pastFuture(+this, f)), c.postformat(f) }, qn.toISOString = $n, qn.toString = $n, qn.toJSON = $n, qn.locale = Xt, qn.localeData = en, qn.toIsoString = n(\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\", $n), qn.lang = Kt, I(\"X\", 0, 0, \"unix\"), I(\"x\", 0, 0, \"valueOf\"), ue(\"x\", se), ue(\"X\", /[+-]?\\d+(\\.\\d{1,3})?/), ce(\"X\", function (e, t, n) { n._d = new Date(1e3 * parseFloat(e, 10)) }), ce(\"x\", function (e, t, n) { n._d = new Date(D(e)) }), c.version = \"2.24.0\", e = bt, c.fn = mn, c.min = function () { return Wt(\"isBefore\", [].slice.call(arguments, 0)) }, c.max = function () { return Wt(\"isAfter\", [].slice.call(arguments, 0)) }, c.now = function () { return Date.now ? Date.now() : +new Date }, c.utc = y, c.unix = function (e) { return bt(1e3 * e) }, c.months = function (e, t) { return vn(e, t, \"months\") }, c.isDate = d, c.locale = ut, c.invalid = p, c.duration = jt, c.isMoment = k, c.weekdays = function (e, t, n) { return pn(e, t, n, \"weekdays\") }, c.parseZone = function () { return bt.apply(null, arguments).parseZone() }, c.localeData = ht, c.isDuration = Rt, c.monthsShort = function (e, t) { return vn(e, t, \"monthsShort\") }, c.weekdaysMin = function (e, t, n) { return pn(e, t, n, \"weekdaysMin\") }, c.defineLocale = lt, c.updateLocale = function (e, t) { if (null != t) { var n, s, i = st; null != (s = ot(e)) && (i = s._config), (n = new P(t = x(i, t))).parentLocale = it[e], it[e] = n, ut(e) } else null != it[e] && (null != it[e].parentLocale ? it[e] = it[e].parentLocale : null != it[e] && delete it[e]); return it[e] }, c.locales = function () { return s(it) }, c.weekdaysShort = function (e, t, n) { return pn(e, t, n, \"weekdaysShort\") }, c.normalizeUnits = H, c.relativeTimeRounding = function (e) { return void 0 === e ? An : \"function\" == typeof e && (An = e, !0) }, c.relativeTimeThreshold = function (e, t) { return void 0 !== jn[e] && (void 0 === t ? jn[e] : (jn[e] = t, \"s\" === e && (jn.ss = t - 1), !0)) }, c.calendarFormat = function (e, t) { var n = e.diff(t, \"days\", !0); return n < -6 ? \"sameElse\" : n < -1 ? \"lastWeek\" : n < 0 ? \"lastDay\" : n < 1 ? \"sameDay\" : n < 2 ? \"nextDay\" : n < 7 ? \"nextWeek\" : \"sameElse\" }, c.prototype = mn, c.HTML5_FMT = { DATETIME_LOCAL: \"YYYY-MM-DDTHH:mm\", DATETIME_LOCAL_SECONDS: \"YYYY-MM-DDTHH:mm:ss\", DATETIME_LOCAL_MS: \"YYYY-MM-DDTHH:mm:ss.SSS\", DATE: \"YYYY-MM-DD\", TIME: \"HH:mm\", TIME_SECONDS: \"HH:mm:ss\", TIME_MS: \"HH:mm:ss.SSS\", WEEK: \"GGGG-[W]WW\", MONTH: \"YYYY-MM\" }, c });","//! moment-timezone.js\r\n//! version : 0.5.25\r\n//! Copyright (c) JS Foundation and other contributors\r\n//! license : MIT\r\n//! github.com/moment/moment-timezone\r\n\r\n(function (root, factory) {\r\n \"use strict\";\r\n\r\n /*global define*/\r\n if (typeof module === 'object' && module.exports) {\r\n module.exports = factory(require('moment')); // Node\r\n } else if (typeof define === 'function' && define.amd) {\r\n define(['moment'], factory); // AMD\r\n } else {\r\n factory(root.moment); // Browser\r\n }\r\n}(this, function (moment) {\r\n \"use strict\";\r\n\r\n // Do not load moment-timezone a second time.\r\n // if (moment.tz !== undefined) {\r\n // \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\r\n // \treturn moment;\r\n // }\r\n\r\n var VERSION = \"0.5.25\",\r\n zones = {},\r\n links = {},\r\n names = {},\r\n guesses = {},\r\n cachedGuess;\r\n\r\n if (!moment || typeof moment.version !== 'string') {\r\n logError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\r\n }\r\n\r\n var momentVersion = moment.version.split('.'),\r\n major = +momentVersion[0],\r\n minor = +momentVersion[1];\r\n\r\n // Moment.js version check\r\n if (major < 2 || (major === 2 && minor < 6)) {\r\n logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\r\n }\r\n\r\n\t/************************************\r\n\t\tUnpacking\r\n\t************************************/\r\n\r\n function charCodeToInt(charCode) {\r\n if (charCode > 96) {\r\n return charCode - 87;\r\n } else if (charCode > 64) {\r\n return charCode - 29;\r\n }\r\n return charCode - 48;\r\n }\r\n\r\n function unpackBase60(string) {\r\n var i = 0,\r\n parts = string.split('.'),\r\n whole = parts[0],\r\n fractional = parts[1] || '',\r\n multiplier = 1,\r\n num,\r\n out = 0,\r\n sign = 1;\r\n\r\n // handle negative numbers\r\n if (string.charCodeAt(0) === 45) {\r\n i = 1;\r\n sign = -1;\r\n }\r\n\r\n // handle digits before the decimal\r\n for (i; i < whole.length; i++) {\r\n num = charCodeToInt(whole.charCodeAt(i));\r\n out = 60 * out + num;\r\n }\r\n\r\n // handle digits after the decimal\r\n for (i = 0; i < fractional.length; i++) {\r\n multiplier = multiplier / 60;\r\n num = charCodeToInt(fractional.charCodeAt(i));\r\n out += num * multiplier;\r\n }\r\n\r\n return out * sign;\r\n }\r\n\r\n function arrayToInt(array) {\r\n for (var i = 0; i < array.length; i++) {\r\n array[i] = unpackBase60(array[i]);\r\n }\r\n }\r\n\r\n function intToUntil(array, length) {\r\n for (var i = 0; i < length; i++) {\r\n array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\r\n }\r\n\r\n array[length - 1] = Infinity;\r\n }\r\n\r\n function mapIndices(source, indices) {\r\n var out = [], i;\r\n\r\n for (i = 0; i < indices.length; i++) {\r\n out[i] = source[indices[i]];\r\n }\r\n\r\n return out;\r\n }\r\n\r\n function unpack(string) {\r\n var data = string.split('|'),\r\n offsets = data[2].split(' '),\r\n indices = data[3].split(''),\r\n untils = data[4].split(' ');\r\n\r\n arrayToInt(offsets);\r\n arrayToInt(indices);\r\n arrayToInt(untils);\r\n\r\n intToUntil(untils, indices.length);\r\n\r\n return {\r\n name: data[0],\r\n abbrs: mapIndices(data[1].split(' '), indices),\r\n offsets: mapIndices(offsets, indices),\r\n untils: untils,\r\n population: data[5] | 0\r\n };\r\n }\r\n\r\n\t/************************************\r\n\t\tZone object\r\n\t************************************/\r\n\r\n function Zone(packedString) {\r\n if (packedString) {\r\n this._set(unpack(packedString));\r\n }\r\n }\r\n\r\n Zone.prototype = {\r\n _set: function (unpacked) {\r\n this.name = unpacked.name;\r\n this.abbrs = unpacked.abbrs;\r\n this.untils = unpacked.untils;\r\n this.offsets = unpacked.offsets;\r\n this.population = unpacked.population;\r\n },\r\n\r\n _index: function (timestamp) {\r\n var target = +timestamp,\r\n untils = this.untils,\r\n i;\r\n\r\n for (i = 0; i < untils.length; i++) {\r\n if (target < untils[i]) {\r\n return i;\r\n }\r\n }\r\n },\r\n\r\n parse: function (timestamp) {\r\n var target = +timestamp,\r\n offsets = this.offsets,\r\n untils = this.untils,\r\n max = untils.length - 1,\r\n offset, offsetNext, offsetPrev, i;\r\n\r\n for (i = 0; i < max; i++) {\r\n offset = offsets[i];\r\n offsetNext = offsets[i + 1];\r\n offsetPrev = offsets[i ? i - 1 : i];\r\n\r\n if (offset < offsetNext && tz.moveAmbiguousForward) {\r\n offset = offsetNext;\r\n } else if (offset > offsetPrev && tz.moveInvalidForward) {\r\n offset = offsetPrev;\r\n }\r\n\r\n if (target < untils[i] - (offset * 60000)) {\r\n return offsets[i];\r\n }\r\n }\r\n\r\n return offsets[max];\r\n },\r\n\r\n abbr: function (mom) {\r\n return this.abbrs[this._index(mom)];\r\n },\r\n\r\n offset: function (mom) {\r\n logError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\r\n return this.offsets[this._index(mom)];\r\n },\r\n\r\n utcOffset: function (mom) {\r\n return this.offsets[this._index(mom)];\r\n }\r\n };\r\n\r\n\t/************************************\r\n\t\tCurrent Timezone\r\n\t************************************/\r\n\r\n function OffsetAt(at) {\r\n var timeString = at.toTimeString();\r\n var abbr = timeString.match(/\\([a-z ]+\\)/i);\r\n if (abbr && abbr[0]) {\r\n // 17:56:31 GMT-0600 (CST)\r\n // 17:56:31 GMT-0600 (Central Standard Time)\r\n abbr = abbr[0].match(/[A-Z]/g);\r\n abbr = abbr ? abbr.join('') : undefined;\r\n } else {\r\n // 17:56:31 CST\r\n // 17:56:31 GMT+0800 (å°åŒ—標準時間)\r\n abbr = timeString.match(/[A-Z]{3,5}/g);\r\n abbr = abbr ? abbr[0] : undefined;\r\n }\r\n\r\n if (abbr === 'GMT') {\r\n abbr = undefined;\r\n }\r\n\r\n this.at = +at;\r\n this.abbr = abbr;\r\n this.offset = at.getTimezoneOffset();\r\n }\r\n\r\n function ZoneScore(zone) {\r\n this.zone = zone;\r\n this.offsetScore = 0;\r\n this.abbrScore = 0;\r\n }\r\n\r\n ZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\r\n this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\r\n if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\r\n this.abbrScore++;\r\n }\r\n };\r\n\r\n function findChange(low, high) {\r\n var mid, diff;\r\n\r\n while ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\r\n mid = new OffsetAt(new Date(low.at + diff));\r\n if (mid.offset === low.offset) {\r\n low = mid;\r\n } else {\r\n high = mid;\r\n }\r\n }\r\n\r\n return low;\r\n }\r\n\r\n function userOffsets() {\r\n var startYear = new Date().getFullYear() - 2,\r\n last = new OffsetAt(new Date(startYear, 0, 1)),\r\n offsets = [last],\r\n change, next, i;\r\n\r\n for (i = 1; i < 48; i++) {\r\n next = new OffsetAt(new Date(startYear, i, 1));\r\n if (next.offset !== last.offset) {\r\n change = findChange(last, next);\r\n offsets.push(change);\r\n offsets.push(new OffsetAt(new Date(change.at + 6e4)));\r\n }\r\n last = next;\r\n }\r\n\r\n for (i = 0; i < 4; i++) {\r\n offsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\r\n offsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\r\n }\r\n\r\n return offsets;\r\n }\r\n\r\n function sortZoneScores(a, b) {\r\n if (a.offsetScore !== b.offsetScore) {\r\n return a.offsetScore - b.offsetScore;\r\n }\r\n if (a.abbrScore !== b.abbrScore) {\r\n return a.abbrScore - b.abbrScore;\r\n }\r\n return b.zone.population - a.zone.population;\r\n }\r\n\r\n function addToGuesses(name, offsets) {\r\n var i, offset;\r\n arrayToInt(offsets);\r\n for (i = 0; i < offsets.length; i++) {\r\n offset = offsets[i];\r\n guesses[offset] = guesses[offset] || {};\r\n guesses[offset][name] = true;\r\n }\r\n }\r\n\r\n function guessesForUserOffsets(offsets) {\r\n var offsetsLength = offsets.length,\r\n filteredGuesses = {},\r\n out = [],\r\n i, j, guessesOffset;\r\n\r\n for (i = 0; i < offsetsLength; i++) {\r\n guessesOffset = guesses[offsets[i].offset] || {};\r\n for (j in guessesOffset) {\r\n if (guessesOffset.hasOwnProperty(j)) {\r\n filteredGuesses[j] = true;\r\n }\r\n }\r\n }\r\n\r\n for (i in filteredGuesses) {\r\n if (filteredGuesses.hasOwnProperty(i)) {\r\n out.push(names[i]);\r\n }\r\n }\r\n\r\n return out;\r\n }\r\n\r\n function rebuildGuess() {\r\n\r\n // use Intl API when available and returning valid time zone\r\n try {\r\n var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n if (intlName && intlName.length > 3) {\r\n var name = names[normalizeName(intlName)];\r\n if (name) {\r\n return name;\r\n }\r\n logError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\r\n }\r\n } catch (e) {\r\n // Intl unavailable, fall back to manual guessing.\r\n }\r\n\r\n var offsets = userOffsets(),\r\n offsetsLength = offsets.length,\r\n guesses = guessesForUserOffsets(offsets),\r\n zoneScores = [],\r\n zoneScore, i, j;\r\n\r\n for (i = 0; i < guesses.length; i++) {\r\n zoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\r\n for (j = 0; j < offsetsLength; j++) {\r\n zoneScore.scoreOffsetAt(offsets[j]);\r\n }\r\n zoneScores.push(zoneScore);\r\n }\r\n\r\n zoneScores.sort(sortZoneScores);\r\n\r\n return zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\r\n }\r\n\r\n function guess(ignoreCache) {\r\n if (!cachedGuess || ignoreCache) {\r\n cachedGuess = rebuildGuess();\r\n }\r\n return cachedGuess;\r\n }\r\n\r\n\t/************************************\r\n\t\tGlobal Methods\r\n\t************************************/\r\n\r\n function normalizeName(name) {\r\n return (name || '').toLowerCase().replace(/\\//g, '_');\r\n }\r\n\r\n function addZone(packed) {\r\n var i, name, split, normalized;\r\n\r\n if (typeof packed === \"string\") {\r\n packed = [packed];\r\n }\r\n\r\n for (i = 0; i < packed.length; i++) {\r\n split = packed[i].split('|');\r\n name = split[0];\r\n normalized = normalizeName(name);\r\n zones[normalized] = packed[i];\r\n names[normalized] = name;\r\n addToGuesses(normalized, split[2].split(' '));\r\n }\r\n }\r\n\r\n function getZone(name, caller) {\r\n\r\n name = normalizeName(name);\r\n\r\n var zone = zones[name];\r\n var link;\r\n\r\n if (zone instanceof Zone) {\r\n return zone;\r\n }\r\n\r\n if (typeof zone === 'string') {\r\n zone = new Zone(zone);\r\n zones[name] = zone;\r\n return zone;\r\n }\r\n\r\n // Pass getZone to prevent recursion more than 1 level deep\r\n if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\r\n zone = zones[name] = new Zone();\r\n zone._set(link);\r\n zone.name = names[name];\r\n return zone;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function getNames() {\r\n var i, out = [];\r\n\r\n for (i in names) {\r\n if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\r\n out.push(names[i]);\r\n }\r\n }\r\n\r\n return out.sort();\r\n }\r\n\r\n function addLink(aliases) {\r\n var i, alias, normal0, normal1;\r\n\r\n if (typeof aliases === \"string\") {\r\n aliases = [aliases];\r\n }\r\n\r\n for (i = 0; i < aliases.length; i++) {\r\n alias = aliases[i].split('|');\r\n\r\n normal0 = normalizeName(alias[0]);\r\n normal1 = normalizeName(alias[1]);\r\n\r\n links[normal0] = normal1;\r\n names[normal0] = alias[0];\r\n\r\n links[normal1] = normal0;\r\n names[normal1] = alias[1];\r\n }\r\n }\r\n\r\n function loadData(data) {\r\n addZone(data.zones);\r\n addLink(data.links);\r\n tz.dataVersion = data.version;\r\n }\r\n\r\n function zoneExists(name) {\r\n if (!zoneExists.didShowError) {\r\n zoneExists.didShowError = true;\r\n logError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\r\n }\r\n return !!getZone(name);\r\n }\r\n\r\n function needsOffset(m) {\r\n var isUnixTimestamp = (m._f === 'X' || m._f === 'x');\r\n return !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\r\n }\r\n\r\n function logError(message) {\r\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\r\n console.error(message);\r\n }\r\n }\r\n\r\n\t/************************************\r\n\t\tmoment.tz namespace\r\n\t************************************/\r\n\r\n function tz(input) {\r\n var args = Array.prototype.slice.call(arguments, 0, -1),\r\n name = arguments[arguments.length - 1],\r\n zone = getZone(name),\r\n out = moment.utc.apply(null, args);\r\n\r\n if (zone && !moment.isMoment(input) && needsOffset(out)) {\r\n out.add(zone.parse(out), 'minutes');\r\n }\r\n\r\n out.tz(name);\r\n\r\n return out;\r\n }\r\n\r\n tz.version = VERSION;\r\n tz.dataVersion = '';\r\n tz._zones = zones;\r\n tz._links = links;\r\n tz._names = names;\r\n tz.add = addZone;\r\n tz.link = addLink;\r\n tz.load = loadData;\r\n tz.zone = getZone;\r\n tz.zoneExists = zoneExists; // deprecated in 0.1.0\r\n tz.guess = guess;\r\n tz.names = getNames;\r\n tz.Zone = Zone;\r\n tz.unpack = unpack;\r\n tz.unpackBase60 = unpackBase60;\r\n tz.needsOffset = needsOffset;\r\n tz.moveInvalidForward = true;\r\n tz.moveAmbiguousForward = false;\r\n\r\n\t/************************************\r\n\t\tInterface with Moment.js\r\n\t************************************/\r\n\r\n var fn = moment.fn;\r\n\r\n moment.tz = tz;\r\n\r\n moment.defaultZone = null;\r\n\r\n moment.updateOffset = function (mom, keepTime) {\r\n var zone = moment.defaultZone,\r\n offset;\r\n\r\n if (mom._z === undefined) {\r\n if (zone && needsOffset(mom) && !mom._isUTC) {\r\n mom._d = moment.utc(mom._a)._d;\r\n mom.utc().add(zone.parse(mom), 'minutes');\r\n }\r\n mom._z = zone;\r\n }\r\n if (mom._z) {\r\n offset = mom._z.utcOffset(mom);\r\n if (Math.abs(offset) < 16) {\r\n offset = offset / 60;\r\n }\r\n if (mom.utcOffset !== undefined) {\r\n var z = mom._z;\r\n mom.utcOffset(-offset, keepTime);\r\n mom._z = z;\r\n } else {\r\n mom.zone(offset, keepTime);\r\n }\r\n }\r\n };\r\n\r\n fn.tz = function (name, keepTime) {\r\n if (name) {\r\n if (typeof name !== 'string') {\r\n throw new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\r\n }\r\n this._z = getZone(name);\r\n if (this._z) {\r\n moment.updateOffset(this, keepTime);\r\n } else {\r\n logError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\r\n }\r\n return this;\r\n }\r\n if (this._z) { return this._z.name; }\r\n };\r\n\r\n function abbrWrap(old) {\r\n return function () {\r\n if (this._z) { return this._z.abbr(this); }\r\n return old.call(this);\r\n };\r\n }\r\n\r\n function resetZoneWrap(old) {\r\n return function () {\r\n this._z = null;\r\n return old.apply(this, arguments);\r\n };\r\n }\r\n\r\n function resetZoneWrap2(old) {\r\n return function () {\r\n if (arguments.length > 0) this._z = null;\r\n return old.apply(this, arguments);\r\n };\r\n }\r\n\r\n fn.zoneName = abbrWrap(fn.zoneName);\r\n fn.zoneAbbr = abbrWrap(fn.zoneAbbr);\r\n fn.utc = resetZoneWrap(fn.utc);\r\n fn.local = resetZoneWrap(fn.local);\r\n fn.utcOffset = resetZoneWrap2(fn.utcOffset);\r\n\r\n moment.tz.setDefault = function (name) {\r\n if (major < 2 || (major === 2 && minor < 9)) {\r\n logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\r\n }\r\n moment.defaultZone = name ? getZone(name) : null;\r\n return moment;\r\n };\r\n\r\n // Cloning a moment should include the _z property.\r\n var momentProperties = moment.momentProperties;\r\n if (Object.prototype.toString.call(momentProperties) === '[object Array]') {\r\n // moment 2.8.1+\r\n momentProperties.push('_z');\r\n momentProperties.push('_a');\r\n } else if (momentProperties) {\r\n // moment 2.7.0\r\n momentProperties._z = null;\r\n }\r\n\r\n loadData({\r\n \"version\": \"2019a\",\r\n \"zones\": [\r\n \"Africa/Abidjan|GMT|0|0||48e5\",\r\n \"Africa/Nairobi|EAT|-30|0||47e5\",\r\n \"Africa/Algiers|CET|-10|0||26e5\",\r\n \"Africa/Lagos|WAT|-10|0||17e6\",\r\n \"Africa/Maputo|CAT|-20|0||26e5\",\r\n \"Africa/Cairo|EET EEST|-20 -30|01010|1M2m0 gL0 e10 mn0|15e6\",\r\n \"Africa/Casablanca|+00 +01|0 -10|01010101010101010101010101010101|1LHC0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00|32e5\",\r\n \"Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1LHB0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|11e6\",\r\n \"Africa/Johannesburg|SAST|-20|0||84e5\",\r\n \"Africa/Khartoum|EAT CAT|-30 -20|01|1Usl0|51e5\",\r\n \"Africa/Sao_Tome|GMT WAT|0 -10|010|1UQN0 2q00\",\r\n \"Africa/Tripoli|EET|-20|0||11e5\",\r\n \"Africa/Windhoek|CAT WAT|-20 -10|010101010|1LKo0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4\",\r\n \"America/Adak|HST HDT|a0 90|01010101010101010101010|1Lzo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326\",\r\n \"America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1Lzn0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4\",\r\n \"America/Santo_Domingo|AST|40|0||29e5\",\r\n \"America/Fortaleza|-03|30|0||34e5\",\r\n \"America/Asuncion|-03 -04|30 40|01010101010101010101010|1LEP0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0|28e5\",\r\n \"America/Panama|EST|50|0||15e5\",\r\n \"America/Mexico_City|CST CDT|60 50|01010101010101010101010|1LKw0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0|20e6\",\r\n \"America/Managua|CST|60|0||22e5\",\r\n \"America/La_Paz|-04|40|0||19e5\",\r\n \"America/Lima|-05|50|0||11e6\",\r\n \"America/Denver|MST MDT|70 60|01010101010101010101010|1Lzl0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5\",\r\n \"America/Campo_Grande|-03 -04|30 40|01010101010101010101010|1LqP0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0|77e4\",\r\n \"America/Cancun|CST CDT EST|60 50 50|0102|1LKw0 1lb0 Dd0|63e4\",\r\n \"America/Caracas|-0430 -04|4u 40|01|1QMT0|29e5\",\r\n \"America/Chicago|CST CDT|60 50|01010101010101010101010|1Lzk0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5\",\r\n \"America/Chihuahua|MST MDT|70 60|01010101010101010101010|1LKx0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0|81e4\",\r\n \"America/Phoenix|MST|70|0||42e5\",\r\n \"America/Los_Angeles|PST PDT|80 70|01010101010101010101010|1Lzm0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6\",\r\n \"America/New_York|EST EDT|50 40|01010101010101010101010|1Lzj0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6\",\r\n \"America/Fort_Nelson|PST PDT MST|80 70 70|0102|1Lzm0 1zb0 Op0|39e2\",\r\n \"America/Halifax|AST ADT|40 30|01010101010101010101010|1Lzi0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4\",\r\n \"America/Godthab|-03 -02|30 20|01010101010101010101010|1LHB0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|17e3\",\r\n \"America/Grand_Turk|EST EDT AST|50 40 40|0101210101010101010|1Lzj0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2\",\r\n \"America/Havana|CST CDT|50 40|01010101010101010101010|1Lzh0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5\",\r\n \"America/Metlakatla|PST AKST AKDT|80 90 80|012121201212121212121|1PAa0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\r\n \"America/Miquelon|-03 -02|30 20|01010101010101010101010|1Lzh0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2\",\r\n \"America/Montevideo|-02 -03|20 30|0101|1Lzg0 1o10 11z0|17e5\",\r\n \"America/Noronha|-02|20|0||30e2\",\r\n \"America/Port-au-Prince|EST EDT|50 40|010101010101010101010|1Lzj0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\r\n \"Antarctica/Palmer|-03 -04|30 40|01010|1LSP0 Rd0 46n0 Ap0|40\",\r\n \"America/Santiago|-03 -04|30 40|010101010101010101010|1LSP0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0|62e5\",\r\n \"America/Sao_Paulo|-02 -03|20 30|01010101010101010101010|1LqO0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0|20e6\",\r\n \"Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1LHB0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|25e4\",\r\n \"America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1Lzhu 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\r\n \"Antarctica/Casey|+08 +11|-80 -b0|010|1RWg0 3m10|10\",\r\n \"Asia/Bangkok|+07|-70|0||15e6\",\r\n \"Pacific/Port_Moresby|+10|-a0|0||25e4\",\r\n \"Pacific/Guadalcanal|+11|-b0|0||11e4\",\r\n \"Asia/Tashkent|+05|-50|0||23e5\",\r\n \"Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1LKe0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00|14e5\",\r\n \"Asia/Baghdad|+03|-30|0||66e5\",\r\n \"Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1LHB0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|40\",\r\n \"Asia/Dhaka|+06|-60|0||16e6\",\r\n \"Asia/Amman|EET EEST|-20 -30|01010101010101010101010|1LGK0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|25e5\",\r\n \"Asia/Kamchatka|+12|-c0|0||18e4\",\r\n \"Asia/Baku|+04 +05|-40 -50|01010|1LHA0 1o00 11A0 1o00|27e5\",\r\n \"Asia/Barnaul|+07 +06|-70 -60|010|1N7v0 3rd0\",\r\n \"Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1LHy0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0|22e5\",\r\n \"Asia/Kuala_Lumpur|+08|-80|0||71e5\",\r\n \"Asia/Kolkata|IST|-5u|0||15e6\",\r\n \"Asia/Chita|+10 +08 +09|-a0 -80 -90|012|1N7s0 3re0|33e4\",\r\n \"Asia/Ulaanbaatar|+08 +09|-80 -90|01010|1O8G0 1cJ0 1cP0 1cJ0|12e5\",\r\n \"Asia/Shanghai|CST|-80|0||23e6\",\r\n \"Asia/Colombo|+0530|-5u|0||22e5\",\r\n \"Asia/Damascus|EET EEST|-20 -30|01010101010101010101010|1LGK0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|26e5\",\r\n \"Asia/Dili|+09|-90|0||19e4\",\r\n \"Asia/Dubai|+04|-40|0||39e5\",\r\n \"Asia/Famagusta|EET EEST +03|-20 -30 -30|0101012010101010101010|1LHB0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00\",\r\n \"Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1LGK0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0|18e5\",\r\n \"Asia/Hong_Kong|HKT|-80|0||73e5\",\r\n \"Asia/Hovd|+07 +08|-70 -80|01010|1O8H0 1cJ0 1cP0 1cJ0|81e3\",\r\n \"Asia/Irkutsk|+09 +08|-90 -80|01|1N7t0|60e4\",\r\n \"Europe/Istanbul|EET EEST +03|-20 -30 -30|0101012|1LI10 1nA0 11A0 1tA0 U00 15w0|13e6\",\r\n \"Asia/Jakarta|WIB|-70|0||31e6\",\r\n \"Asia/Jayapura|WIT|-90|0||26e4\",\r\n \"Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1LGM0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0|81e4\",\r\n \"Asia/Kabul|+0430|-4u|0||46e5\",\r\n \"Asia/Karachi|PKT|-50|0||24e6\",\r\n \"Asia/Kathmandu|+0545|-5J|0||12e5\",\r\n \"Asia/Yakutsk|+10 +09|-a0 -90|01|1N7s0|28e4\",\r\n \"Asia/Krasnoyarsk|+08 +07|-80 -70|01|1N7u0|10e5\",\r\n \"Asia/Magadan|+12 +10 +11|-c0 -a0 -b0|012|1N7q0 3Cq0|95e3\",\r\n \"Asia/Makassar|WITA|-80|0||15e5\",\r\n \"Asia/Manila|PST|-80|0||24e6\",\r\n \"Europe/Athens|EET EEST|-20 -30|01010101010101010101010|1LHB0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|35e5\",\r\n \"Asia/Novosibirsk|+07 +06|-70 -60|010|1N7v0 4eN0|15e5\",\r\n \"Asia/Omsk|+07 +06|-70 -60|01|1N7v0|12e5\",\r\n \"Asia/Pyongyang|KST KST|-90 -8u|010|1P4D0 6BA0|29e5\",\r\n \"Asia/Qyzylorda|+06 +05|-60 -50|01|1Xei0|73e4\",\r\n \"Asia/Rangoon|+0630|-6u|0||48e5\",\r\n \"Asia/Sakhalin|+11 +10|-b0 -a0|010|1N7r0 3rd0|58e4\",\r\n \"Asia/Seoul|KST|-90|0||23e6\",\r\n \"Asia/Srednekolymsk|+12 +11|-c0 -b0|01|1N7q0|35e2\",\r\n \"Asia/Tehran|+0330 +0430|-3u -4u|01010101010101010101010|1LEku 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6\",\r\n \"Asia/Tokyo|JST|-90|0||38e6\",\r\n \"Asia/Tomsk|+07 +06|-70 -60|010|1N7v0 3Qp0|10e5\",\r\n \"Asia/Vladivostok|+11 +10|-b0 -a0|01|1N7r0|60e4\",\r\n \"Asia/Yekaterinburg|+06 +05|-60 -50|01|1N7w0|14e5\",\r\n \"Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1LHB0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|27e5\",\r\n \"Atlantic/Cape_Verde|-01|10|0||50e4\",\r\n \"Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1LKg0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0|40e5\",\r\n \"Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1LKgu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0|11e5\",\r\n \"Australia/Brisbane|AEST|-a0|0||20e5\",\r\n \"Australia/Darwin|ACST|-9u|0||12e4\",\r\n \"Australia/Eucla|+0845|-8J|0||368\",\r\n \"Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|1LKf0 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu|347\",\r\n \"Australia/Perth|AWST|-80|0||18e5\",\r\n \"Pacific/Easter|-05 -06|50 60|010101010101010101010|1LSP0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0|30e2\",\r\n \"Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1LHB0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5\",\r\n \"Etc/GMT-1|+01|-10|0|\",\r\n \"Pacific/Fakaofo|+13|-d0|0||483\",\r\n \"Pacific/Kiritimati|+14|-e0|0||51e2\",\r\n \"Etc/GMT-2|+02|-20|0|\",\r\n \"Pacific/Tahiti|-10|a0|0||18e4\",\r\n \"Pacific/Niue|-11|b0|0||12e2\",\r\n \"Etc/GMT+12|-12|c0|0|\",\r\n \"Pacific/Galapagos|-06|60|0||25e3\",\r\n \"Etc/GMT+7|-07|70|0|\",\r\n \"Pacific/Pitcairn|-08|80|0||56\",\r\n \"Pacific/Gambier|-09|90|0||125\",\r\n \"Etc/UTC|UTC|0|0|\",\r\n \"Europe/Ulyanovsk|+04 +03|-40 -30|010|1N7y0 3rd0|13e5\",\r\n \"Europe/London|GMT BST|0 -10|01010101010101010101010|1LHB0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|10e6\",\r\n \"Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1LHA0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|67e4\",\r\n \"Europe/Kaliningrad|+03 EET|-30 -20|01|1N7z0|44e4\",\r\n \"Europe/Kirov|+04 +03|-40 -30|01|1N7y0|48e4\",\r\n \"Europe/Moscow|MSK MSK|-40 -30|01|1N7y0|16e6\",\r\n \"Europe/Saratov|+04 +03|-40 -30|010|1N7y0 5810\",\r\n \"Europe/Simferopol|EET MSK MSK|-20 -40 -30|012|1LHA0 1nW0|33e4\",\r\n \"Europe/Volgograd|+04 +03|-40 -30|010|1N7y0 9Jd0|10e5\",\r\n \"Pacific/Honolulu|HST|a0|0||37e4\",\r\n \"MET|MET MEST|-10 -20|01010101010101010101010|1LHB0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00\",\r\n \"Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|1LKe0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00|600\",\r\n \"Pacific/Apia|+14 +13|-e0 -d0|01010101010101010101010|1LKe0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00|37e3\",\r\n \"Pacific/Bougainville|+10 +11|-a0 -b0|01|1NwE0|18e4\",\r\n \"Pacific/Fiji|+13 +12|-d0 -c0|01010101010101010101010|1Lfp0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0|88e4\",\r\n \"Pacific/Guam|ChST|-a0|0||17e4\",\r\n \"Pacific/Marquesas|-0930|9u|0||86e2\",\r\n \"Pacific/Pago_Pago|SST|b0|0||37e2\",\r\n \"Pacific/Norfolk|+1130 +11|-bu -b0|01|1PoCu|25e4\",\r\n \"Pacific/Tongatapu|+13 +14|-d0 -e0|010|1S4d0 s00|75e3\"\r\n ],\r\n \"links\": [\r\n \"Africa/Abidjan|Africa/Accra\",\r\n \"Africa/Abidjan|Africa/Bamako\",\r\n \"Africa/Abidjan|Africa/Banjul\",\r\n \"Africa/Abidjan|Africa/Bissau\",\r\n \"Africa/Abidjan|Africa/Conakry\",\r\n \"Africa/Abidjan|Africa/Dakar\",\r\n \"Africa/Abidjan|Africa/Freetown\",\r\n \"Africa/Abidjan|Africa/Lome\",\r\n \"Africa/Abidjan|Africa/Monrovia\",\r\n \"Africa/Abidjan|Africa/Nouakchott\",\r\n \"Africa/Abidjan|Africa/Ouagadougou\",\r\n \"Africa/Abidjan|Africa/Timbuktu\",\r\n \"Africa/Abidjan|America/Danmarkshavn\",\r\n \"Africa/Abidjan|Atlantic/Reykjavik\",\r\n \"Africa/Abidjan|Atlantic/St_Helena\",\r\n \"Africa/Abidjan|Etc/GMT\",\r\n \"Africa/Abidjan|Etc/GMT+0\",\r\n \"Africa/Abidjan|Etc/GMT-0\",\r\n \"Africa/Abidjan|Etc/GMT0\",\r\n \"Africa/Abidjan|Etc/Greenwich\",\r\n \"Africa/Abidjan|GMT\",\r\n \"Africa/Abidjan|GMT+0\",\r\n \"Africa/Abidjan|GMT-0\",\r\n \"Africa/Abidjan|GMT0\",\r\n \"Africa/Abidjan|Greenwich\",\r\n \"Africa/Abidjan|Iceland\",\r\n \"Africa/Algiers|Africa/Tunis\",\r\n \"Africa/Cairo|Egypt\",\r\n \"Africa/Casablanca|Africa/El_Aaiun\",\r\n \"Africa/Johannesburg|Africa/Maseru\",\r\n \"Africa/Johannesburg|Africa/Mbabane\",\r\n \"Africa/Lagos|Africa/Bangui\",\r\n \"Africa/Lagos|Africa/Brazzaville\",\r\n \"Africa/Lagos|Africa/Douala\",\r\n \"Africa/Lagos|Africa/Kinshasa\",\r\n \"Africa/Lagos|Africa/Libreville\",\r\n \"Africa/Lagos|Africa/Luanda\",\r\n \"Africa/Lagos|Africa/Malabo\",\r\n \"Africa/Lagos|Africa/Ndjamena\",\r\n \"Africa/Lagos|Africa/Niamey\",\r\n \"Africa/Lagos|Africa/Porto-Novo\",\r\n \"Africa/Maputo|Africa/Blantyre\",\r\n \"Africa/Maputo|Africa/Bujumbura\",\r\n \"Africa/Maputo|Africa/Gaborone\",\r\n \"Africa/Maputo|Africa/Harare\",\r\n \"Africa/Maputo|Africa/Kigali\",\r\n \"Africa/Maputo|Africa/Lubumbashi\",\r\n \"Africa/Maputo|Africa/Lusaka\",\r\n \"Africa/Nairobi|Africa/Addis_Ababa\",\r\n \"Africa/Nairobi|Africa/Asmara\",\r\n \"Africa/Nairobi|Africa/Asmera\",\r\n \"Africa/Nairobi|Africa/Dar_es_Salaam\",\r\n \"Africa/Nairobi|Africa/Djibouti\",\r\n \"Africa/Nairobi|Africa/Juba\",\r\n \"Africa/Nairobi|Africa/Kampala\",\r\n \"Africa/Nairobi|Africa/Mogadishu\",\r\n \"Africa/Nairobi|Indian/Antananarivo\",\r\n \"Africa/Nairobi|Indian/Comoro\",\r\n \"Africa/Nairobi|Indian/Mayotte\",\r\n \"Africa/Tripoli|Libya\",\r\n \"America/Adak|America/Atka\",\r\n \"America/Adak|US/Aleutian\",\r\n \"America/Anchorage|America/Juneau\",\r\n \"America/Anchorage|America/Nome\",\r\n \"America/Anchorage|America/Sitka\",\r\n \"America/Anchorage|America/Yakutat\",\r\n \"America/Anchorage|US/Alaska\",\r\n \"America/Campo_Grande|America/Cuiaba\",\r\n \"America/Chicago|America/Indiana/Knox\",\r\n \"America/Chicago|America/Indiana/Tell_City\",\r\n \"America/Chicago|America/Knox_IN\",\r\n \"America/Chicago|America/Matamoros\",\r\n \"America/Chicago|America/Menominee\",\r\n \"America/Chicago|America/North_Dakota/Beulah\",\r\n \"America/Chicago|America/North_Dakota/Center\",\r\n \"America/Chicago|America/North_Dakota/New_Salem\",\r\n \"America/Chicago|America/Rainy_River\",\r\n \"America/Chicago|America/Rankin_Inlet\",\r\n \"America/Chicago|America/Resolute\",\r\n \"America/Chicago|America/Winnipeg\",\r\n \"America/Chicago|CST6CDT\",\r\n \"America/Chicago|Canada/Central\",\r\n \"America/Chicago|US/Central\",\r\n \"America/Chicago|US/Indiana-Starke\",\r\n \"America/Chihuahua|America/Mazatlan\",\r\n \"America/Chihuahua|Mexico/BajaSur\",\r\n \"America/Denver|America/Boise\",\r\n \"America/Denver|America/Cambridge_Bay\",\r\n \"America/Denver|America/Edmonton\",\r\n \"America/Denver|America/Inuvik\",\r\n \"America/Denver|America/Ojinaga\",\r\n \"America/Denver|America/Shiprock\",\r\n \"America/Denver|America/Yellowknife\",\r\n \"America/Denver|Canada/Mountain\",\r\n \"America/Denver|MST7MDT\",\r\n \"America/Denver|Navajo\",\r\n \"America/Denver|US/Mountain\",\r\n \"America/Fortaleza|America/Araguaina\",\r\n \"America/Fortaleza|America/Argentina/Buenos_Aires\",\r\n \"America/Fortaleza|America/Argentina/Catamarca\",\r\n \"America/Fortaleza|America/Argentina/ComodRivadavia\",\r\n \"America/Fortaleza|America/Argentina/Cordoba\",\r\n \"America/Fortaleza|America/Argentina/Jujuy\",\r\n \"America/Fortaleza|America/Argentina/La_Rioja\",\r\n \"America/Fortaleza|America/Argentina/Mendoza\",\r\n \"America/Fortaleza|America/Argentina/Rio_Gallegos\",\r\n \"America/Fortaleza|America/Argentina/Salta\",\r\n \"America/Fortaleza|America/Argentina/San_Juan\",\r\n \"America/Fortaleza|America/Argentina/San_Luis\",\r\n \"America/Fortaleza|America/Argentina/Tucuman\",\r\n \"America/Fortaleza|America/Argentina/Ushuaia\",\r\n \"America/Fortaleza|America/Bahia\",\r\n \"America/Fortaleza|America/Belem\",\r\n \"America/Fortaleza|America/Buenos_Aires\",\r\n \"America/Fortaleza|America/Catamarca\",\r\n \"America/Fortaleza|America/Cayenne\",\r\n \"America/Fortaleza|America/Cordoba\",\r\n \"America/Fortaleza|America/Jujuy\",\r\n \"America/Fortaleza|America/Maceio\",\r\n \"America/Fortaleza|America/Mendoza\",\r\n \"America/Fortaleza|America/Paramaribo\",\r\n \"America/Fortaleza|America/Recife\",\r\n \"America/Fortaleza|America/Rosario\",\r\n \"America/Fortaleza|America/Santarem\",\r\n \"America/Fortaleza|Antarctica/Rothera\",\r\n \"America/Fortaleza|Atlantic/Stanley\",\r\n \"America/Fortaleza|Etc/GMT+3\",\r\n \"America/Halifax|America/Glace_Bay\",\r\n \"America/Halifax|America/Goose_Bay\",\r\n \"America/Halifax|America/Moncton\",\r\n \"America/Halifax|America/Thule\",\r\n \"America/Halifax|Atlantic/Bermuda\",\r\n \"America/Halifax|Canada/Atlantic\",\r\n \"America/Havana|Cuba\",\r\n \"America/La_Paz|America/Boa_Vista\",\r\n \"America/La_Paz|America/Guyana\",\r\n \"America/La_Paz|America/Manaus\",\r\n \"America/La_Paz|America/Porto_Velho\",\r\n \"America/La_Paz|Brazil/West\",\r\n \"America/La_Paz|Etc/GMT+4\",\r\n \"America/Lima|America/Bogota\",\r\n \"America/Lima|America/Eirunepe\",\r\n \"America/Lima|America/Guayaquil\",\r\n \"America/Lima|America/Porto_Acre\",\r\n \"America/Lima|America/Rio_Branco\",\r\n \"America/Lima|Brazil/Acre\",\r\n \"America/Lima|Etc/GMT+5\",\r\n \"America/Los_Angeles|America/Dawson\",\r\n \"America/Los_Angeles|America/Ensenada\",\r\n \"America/Los_Angeles|America/Santa_Isabel\",\r\n \"America/Los_Angeles|America/Tijuana\",\r\n \"America/Los_Angeles|America/Vancouver\",\r\n \"America/Los_Angeles|America/Whitehorse\",\r\n \"America/Los_Angeles|Canada/Pacific\",\r\n \"America/Los_Angeles|Canada/Yukon\",\r\n \"America/Los_Angeles|Mexico/BajaNorte\",\r\n \"America/Los_Angeles|PST8PDT\",\r\n \"America/Los_Angeles|US/Pacific\",\r\n \"America/Los_Angeles|US/Pacific-New\",\r\n \"America/Managua|America/Belize\",\r\n \"America/Managua|America/Costa_Rica\",\r\n \"America/Managua|America/El_Salvador\",\r\n \"America/Managua|America/Guatemala\",\r\n \"America/Managua|America/Regina\",\r\n \"America/Managua|America/Swift_Current\",\r\n \"America/Managua|America/Tegucigalpa\",\r\n \"America/Managua|Canada/Saskatchewan\",\r\n \"America/Mexico_City|America/Bahia_Banderas\",\r\n \"America/Mexico_City|America/Merida\",\r\n \"America/Mexico_City|America/Monterrey\",\r\n \"America/Mexico_City|Mexico/General\",\r\n \"America/New_York|America/Detroit\",\r\n \"America/New_York|America/Fort_Wayne\",\r\n \"America/New_York|America/Indiana/Indianapolis\",\r\n \"America/New_York|America/Indiana/Marengo\",\r\n \"America/New_York|America/Indiana/Petersburg\",\r\n \"America/New_York|America/Indiana/Vevay\",\r\n \"America/New_York|America/Indiana/Vincennes\",\r\n \"America/New_York|America/Indiana/Winamac\",\r\n \"America/New_York|America/Indianapolis\",\r\n \"America/New_York|America/Iqaluit\",\r\n \"America/New_York|America/Kentucky/Louisville\",\r\n \"America/New_York|America/Kentucky/Monticello\",\r\n \"America/New_York|America/Louisville\",\r\n \"America/New_York|America/Montreal\",\r\n \"America/New_York|America/Nassau\",\r\n \"America/New_York|America/Nipigon\",\r\n \"America/New_York|America/Pangnirtung\",\r\n \"America/New_York|America/Thunder_Bay\",\r\n \"America/New_York|America/Toronto\",\r\n \"America/New_York|Canada/Eastern\",\r\n \"America/New_York|EST5EDT\",\r\n \"America/New_York|US/East-Indiana\",\r\n \"America/New_York|US/Eastern\",\r\n \"America/New_York|US/Michigan\",\r\n \"America/Noronha|Atlantic/South_Georgia\",\r\n \"America/Noronha|Brazil/DeNoronha\",\r\n \"America/Noronha|Etc/GMT+2\",\r\n \"America/Panama|America/Atikokan\",\r\n \"America/Panama|America/Cayman\",\r\n \"America/Panama|America/Coral_Harbour\",\r\n \"America/Panama|America/Jamaica\",\r\n \"America/Panama|EST\",\r\n \"America/Panama|Jamaica\",\r\n \"America/Phoenix|America/Creston\",\r\n \"America/Phoenix|America/Dawson_Creek\",\r\n \"America/Phoenix|America/Hermosillo\",\r\n \"America/Phoenix|MST\",\r\n \"America/Phoenix|US/Arizona\",\r\n \"America/Santiago|Chile/Continental\",\r\n \"America/Santo_Domingo|America/Anguilla\",\r\n \"America/Santo_Domingo|America/Antigua\",\r\n \"America/Santo_Domingo|America/Aruba\",\r\n \"America/Santo_Domingo|America/Barbados\",\r\n \"America/Santo_Domingo|America/Blanc-Sablon\",\r\n \"America/Santo_Domingo|America/Curacao\",\r\n \"America/Santo_Domingo|America/Dominica\",\r\n \"America/Santo_Domingo|America/Grenada\",\r\n \"America/Santo_Domingo|America/Guadeloupe\",\r\n \"America/Santo_Domingo|America/Kralendijk\",\r\n \"America/Santo_Domingo|America/Lower_Princes\",\r\n \"America/Santo_Domingo|America/Marigot\",\r\n \"America/Santo_Domingo|America/Martinique\",\r\n \"America/Santo_Domingo|America/Montserrat\",\r\n \"America/Santo_Domingo|America/Port_of_Spain\",\r\n \"America/Santo_Domingo|America/Puerto_Rico\",\r\n \"America/Santo_Domingo|America/St_Barthelemy\",\r\n \"America/Santo_Domingo|America/St_Kitts\",\r\n \"America/Santo_Domingo|America/St_Lucia\",\r\n \"America/Santo_Domingo|America/St_Thomas\",\r\n \"America/Santo_Domingo|America/St_Vincent\",\r\n \"America/Santo_Domingo|America/Tortola\",\r\n \"America/Santo_Domingo|America/Virgin\",\r\n \"America/Sao_Paulo|Brazil/East\",\r\n \"America/St_Johns|Canada/Newfoundland\",\r\n \"Antarctica/Palmer|America/Punta_Arenas\",\r\n \"Asia/Baghdad|Antarctica/Syowa\",\r\n \"Asia/Baghdad|Asia/Aden\",\r\n \"Asia/Baghdad|Asia/Bahrain\",\r\n \"Asia/Baghdad|Asia/Kuwait\",\r\n \"Asia/Baghdad|Asia/Qatar\",\r\n \"Asia/Baghdad|Asia/Riyadh\",\r\n \"Asia/Baghdad|Etc/GMT-3\",\r\n \"Asia/Baghdad|Europe/Minsk\",\r\n \"Asia/Bangkok|Antarctica/Davis\",\r\n \"Asia/Bangkok|Asia/Ho_Chi_Minh\",\r\n \"Asia/Bangkok|Asia/Novokuznetsk\",\r\n \"Asia/Bangkok|Asia/Phnom_Penh\",\r\n \"Asia/Bangkok|Asia/Saigon\",\r\n \"Asia/Bangkok|Asia/Vientiane\",\r\n \"Asia/Bangkok|Etc/GMT-7\",\r\n \"Asia/Bangkok|Indian/Christmas\",\r\n \"Asia/Dhaka|Antarctica/Vostok\",\r\n \"Asia/Dhaka|Asia/Almaty\",\r\n \"Asia/Dhaka|Asia/Bishkek\",\r\n \"Asia/Dhaka|Asia/Dacca\",\r\n \"Asia/Dhaka|Asia/Kashgar\",\r\n \"Asia/Dhaka|Asia/Qostanay\",\r\n \"Asia/Dhaka|Asia/Thimbu\",\r\n \"Asia/Dhaka|Asia/Thimphu\",\r\n \"Asia/Dhaka|Asia/Urumqi\",\r\n \"Asia/Dhaka|Etc/GMT-6\",\r\n \"Asia/Dhaka|Indian/Chagos\",\r\n \"Asia/Dili|Etc/GMT-9\",\r\n \"Asia/Dili|Pacific/Palau\",\r\n \"Asia/Dubai|Asia/Muscat\",\r\n \"Asia/Dubai|Asia/Tbilisi\",\r\n \"Asia/Dubai|Asia/Yerevan\",\r\n \"Asia/Dubai|Etc/GMT-4\",\r\n \"Asia/Dubai|Europe/Samara\",\r\n \"Asia/Dubai|Indian/Mahe\",\r\n \"Asia/Dubai|Indian/Mauritius\",\r\n \"Asia/Dubai|Indian/Reunion\",\r\n \"Asia/Gaza|Asia/Hebron\",\r\n \"Asia/Hong_Kong|Hongkong\",\r\n \"Asia/Jakarta|Asia/Pontianak\",\r\n \"Asia/Jerusalem|Asia/Tel_Aviv\",\r\n \"Asia/Jerusalem|Israel\",\r\n \"Asia/Kamchatka|Asia/Anadyr\",\r\n \"Asia/Kamchatka|Etc/GMT-12\",\r\n \"Asia/Kamchatka|Kwajalein\",\r\n \"Asia/Kamchatka|Pacific/Funafuti\",\r\n \"Asia/Kamchatka|Pacific/Kwajalein\",\r\n \"Asia/Kamchatka|Pacific/Majuro\",\r\n \"Asia/Kamchatka|Pacific/Nauru\",\r\n \"Asia/Kamchatka|Pacific/Tarawa\",\r\n \"Asia/Kamchatka|Pacific/Wake\",\r\n \"Asia/Kamchatka|Pacific/Wallis\",\r\n \"Asia/Kathmandu|Asia/Katmandu\",\r\n \"Asia/Kolkata|Asia/Calcutta\",\r\n \"Asia/Kuala_Lumpur|Asia/Brunei\",\r\n \"Asia/Kuala_Lumpur|Asia/Kuching\",\r\n \"Asia/Kuala_Lumpur|Asia/Singapore\",\r\n \"Asia/Kuala_Lumpur|Etc/GMT-8\",\r\n \"Asia/Kuala_Lumpur|Singapore\",\r\n \"Asia/Makassar|Asia/Ujung_Pandang\",\r\n \"Asia/Rangoon|Asia/Yangon\",\r\n \"Asia/Rangoon|Indian/Cocos\",\r\n \"Asia/Seoul|ROK\",\r\n \"Asia/Shanghai|Asia/Chongqing\",\r\n \"Asia/Shanghai|Asia/Chungking\",\r\n \"Asia/Shanghai|Asia/Harbin\",\r\n \"Asia/Shanghai|Asia/Macao\",\r\n \"Asia/Shanghai|Asia/Macau\",\r\n \"Asia/Shanghai|Asia/Taipei\",\r\n \"Asia/Shanghai|PRC\",\r\n \"Asia/Shanghai|ROC\",\r\n \"Asia/Tashkent|Antarctica/Mawson\",\r\n \"Asia/Tashkent|Asia/Aqtau\",\r\n \"Asia/Tashkent|Asia/Aqtobe\",\r\n \"Asia/Tashkent|Asia/Ashgabat\",\r\n \"Asia/Tashkent|Asia/Ashkhabad\",\r\n \"Asia/Tashkent|Asia/Atyrau\",\r\n \"Asia/Tashkent|Asia/Dushanbe\",\r\n \"Asia/Tashkent|Asia/Oral\",\r\n \"Asia/Tashkent|Asia/Samarkand\",\r\n \"Asia/Tashkent|Etc/GMT-5\",\r\n \"Asia/Tashkent|Indian/Kerguelen\",\r\n \"Asia/Tashkent|Indian/Maldives\",\r\n \"Asia/Tehran|Iran\",\r\n \"Asia/Tokyo|Japan\",\r\n \"Asia/Ulaanbaatar|Asia/Choibalsan\",\r\n \"Asia/Ulaanbaatar|Asia/Ulan_Bator\",\r\n \"Asia/Vladivostok|Asia/Ust-Nera\",\r\n \"Asia/Yakutsk|Asia/Khandyga\",\r\n \"Atlantic/Azores|America/Scoresbysund\",\r\n \"Atlantic/Cape_Verde|Etc/GMT+1\",\r\n \"Australia/Adelaide|Australia/Broken_Hill\",\r\n \"Australia/Adelaide|Australia/South\",\r\n \"Australia/Adelaide|Australia/Yancowinna\",\r\n \"Australia/Brisbane|Australia/Lindeman\",\r\n \"Australia/Brisbane|Australia/Queensland\",\r\n \"Australia/Darwin|Australia/North\",\r\n \"Australia/Lord_Howe|Australia/LHI\",\r\n \"Australia/Perth|Australia/West\",\r\n \"Australia/Sydney|Australia/ACT\",\r\n \"Australia/Sydney|Australia/Canberra\",\r\n \"Australia/Sydney|Australia/Currie\",\r\n \"Australia/Sydney|Australia/Hobart\",\r\n \"Australia/Sydney|Australia/Melbourne\",\r\n \"Australia/Sydney|Australia/NSW\",\r\n \"Australia/Sydney|Australia/Tasmania\",\r\n \"Australia/Sydney|Australia/Victoria\",\r\n \"Etc/UTC|Etc/UCT\",\r\n \"Etc/UTC|Etc/Universal\",\r\n \"Etc/UTC|Etc/Zulu\",\r\n \"Etc/UTC|UCT\",\r\n \"Etc/UTC|UTC\",\r\n \"Etc/UTC|Universal\",\r\n \"Etc/UTC|Zulu\",\r\n \"Europe/Athens|Asia/Nicosia\",\r\n \"Europe/Athens|EET\",\r\n \"Europe/Athens|Europe/Bucharest\",\r\n \"Europe/Athens|Europe/Helsinki\",\r\n \"Europe/Athens|Europe/Kiev\",\r\n \"Europe/Athens|Europe/Mariehamn\",\r\n \"Europe/Athens|Europe/Nicosia\",\r\n \"Europe/Athens|Europe/Riga\",\r\n \"Europe/Athens|Europe/Sofia\",\r\n \"Europe/Athens|Europe/Tallinn\",\r\n \"Europe/Athens|Europe/Uzhgorod\",\r\n \"Europe/Athens|Europe/Vilnius\",\r\n \"Europe/Athens|Europe/Zaporozhye\",\r\n \"Europe/Chisinau|Europe/Tiraspol\",\r\n \"Europe/Dublin|Eire\",\r\n \"Europe/Istanbul|Asia/Istanbul\",\r\n \"Europe/Istanbul|Turkey\",\r\n \"Europe/Lisbon|Atlantic/Canary\",\r\n \"Europe/Lisbon|Atlantic/Faeroe\",\r\n \"Europe/Lisbon|Atlantic/Faroe\",\r\n \"Europe/Lisbon|Atlantic/Madeira\",\r\n \"Europe/Lisbon|Portugal\",\r\n \"Europe/Lisbon|WET\",\r\n \"Europe/London|Europe/Belfast\",\r\n \"Europe/London|Europe/Guernsey\",\r\n \"Europe/London|Europe/Isle_of_Man\",\r\n \"Europe/London|Europe/Jersey\",\r\n \"Europe/London|GB\",\r\n \"Europe/London|GB-Eire\",\r\n \"Europe/Moscow|W-SU\",\r\n \"Europe/Paris|Africa/Ceuta\",\r\n \"Europe/Paris|Arctic/Longyearbyen\",\r\n \"Europe/Paris|Atlantic/Jan_Mayen\",\r\n \"Europe/Paris|CET\",\r\n \"Europe/Paris|Europe/Amsterdam\",\r\n \"Europe/Paris|Europe/Andorra\",\r\n \"Europe/Paris|Europe/Belgrade\",\r\n \"Europe/Paris|Europe/Berlin\",\r\n \"Europe/Paris|Europe/Bratislava\",\r\n \"Europe/Paris|Europe/Brussels\",\r\n \"Europe/Paris|Europe/Budapest\",\r\n \"Europe/Paris|Europe/Busingen\",\r\n \"Europe/Paris|Europe/Copenhagen\",\r\n \"Europe/Paris|Europe/Gibraltar\",\r\n \"Europe/Paris|Europe/Ljubljana\",\r\n \"Europe/Paris|Europe/Luxembourg\",\r\n \"Europe/Paris|Europe/Madrid\",\r\n \"Europe/Paris|Europe/Malta\",\r\n \"Europe/Paris|Europe/Monaco\",\r\n \"Europe/Paris|Europe/Oslo\",\r\n \"Europe/Paris|Europe/Podgorica\",\r\n \"Europe/Paris|Europe/Prague\",\r\n \"Europe/Paris|Europe/Rome\",\r\n \"Europe/Paris|Europe/San_Marino\",\r\n \"Europe/Paris|Europe/Sarajevo\",\r\n \"Europe/Paris|Europe/Skopje\",\r\n \"Europe/Paris|Europe/Stockholm\",\r\n \"Europe/Paris|Europe/Tirane\",\r\n \"Europe/Paris|Europe/Vaduz\",\r\n \"Europe/Paris|Europe/Vatican\",\r\n \"Europe/Paris|Europe/Vienna\",\r\n \"Europe/Paris|Europe/Warsaw\",\r\n \"Europe/Paris|Europe/Zagreb\",\r\n \"Europe/Paris|Europe/Zurich\",\r\n \"Europe/Paris|Poland\",\r\n \"Europe/Ulyanovsk|Europe/Astrakhan\",\r\n \"Pacific/Auckland|Antarctica/McMurdo\",\r\n \"Pacific/Auckland|Antarctica/South_Pole\",\r\n \"Pacific/Auckland|NZ\",\r\n \"Pacific/Chatham|NZ-CHAT\",\r\n \"Pacific/Easter|Chile/EasterIsland\",\r\n \"Pacific/Fakaofo|Etc/GMT-13\",\r\n \"Pacific/Fakaofo|Pacific/Enderbury\",\r\n \"Pacific/Galapagos|Etc/GMT+6\",\r\n \"Pacific/Gambier|Etc/GMT+9\",\r\n \"Pacific/Guadalcanal|Antarctica/Macquarie\",\r\n \"Pacific/Guadalcanal|Etc/GMT-11\",\r\n \"Pacific/Guadalcanal|Pacific/Efate\",\r\n \"Pacific/Guadalcanal|Pacific/Kosrae\",\r\n \"Pacific/Guadalcanal|Pacific/Noumea\",\r\n \"Pacific/Guadalcanal|Pacific/Pohnpei\",\r\n \"Pacific/Guadalcanal|Pacific/Ponape\",\r\n \"Pacific/Guam|Pacific/Saipan\",\r\n \"Pacific/Honolulu|HST\",\r\n \"Pacific/Honolulu|Pacific/Johnston\",\r\n \"Pacific/Honolulu|US/Hawaii\",\r\n \"Pacific/Kiritimati|Etc/GMT-14\",\r\n \"Pacific/Niue|Etc/GMT+11\",\r\n \"Pacific/Pago_Pago|Pacific/Midway\",\r\n \"Pacific/Pago_Pago|Pacific/Samoa\",\r\n \"Pacific/Pago_Pago|US/Samoa\",\r\n \"Pacific/Pitcairn|Etc/GMT+8\",\r\n \"Pacific/Port_Moresby|Antarctica/DumontDUrville\",\r\n \"Pacific/Port_Moresby|Etc/GMT-10\",\r\n \"Pacific/Port_Moresby|Pacific/Chuuk\",\r\n \"Pacific/Port_Moresby|Pacific/Truk\",\r\n \"Pacific/Port_Moresby|Pacific/Yap\",\r\n \"Pacific/Tahiti|Etc/GMT+10\",\r\n \"Pacific/Tahiti|Pacific/Rarotonga\"\r\n ]\r\n });\r\n\r\n\r\n return moment;\r\n}));","(function() {\r\n //angular.module('st').requires.push('ngVis');\r\n angular.module('st').requires.push('cstudioApp.services');\r\n angular.module('st').requires.push('cstudioApp.filters');\r\n angular.module('st').requires.push('cstudioApp.directives');\r\n angular.module('st').requires.push('cstudioApp.controllers');\r\n angular.module('st').requires.push('ui.bootstrap');\r\n\r\n //angular.module(\"cstudioApp.controllers\", ['ngVis', 'ngAnimate']);\r\n angular.module(\"cstudioApp.controllers\", ['ngAnimate']);\r\n angular.module(\"cstudioApp.services\", []);\r\n angular.module(\"cstudioApp.filters\", []);\r\n angular.module(\"cstudioApp.directives\", []);\r\n\r\n //timelines next\r\n //http://visjs.org/docs/timeline/#Example\r\n\r\n\r\n //console.info(\"instantiated\");\r\n\r\n //function MovieController($scope, $compile, $timeout, $http, VisDataSet) {\r\n function MovieController($scope, $compile, $timeout, $http, $q) {\r\n //console.info(\"controller loaded\");\r\n let GET_ALL_SJO_DATA = false;\r\n let SJO_DATA_AND_CACHE_ENABLED = false;\r\n\r\n var mvm = this;\r\n mvm.ALLOW_GET_ALL_SJO_DATA = false;\r\n mvm.hello = \"hello world\";\r\n mvm.CURRENT_DATE = moment().format('MMM Do YYYY');\r\n mvm.CURRENT_DATE_URL = moment().format('YYYY-MM-DD');\r\n mvm.showTimeline = false;\r\n mvm.buildingTimeline = true;\r\n mvm.filteredItemsVariable = [];\r\n mvm.dates = [];\r\n mvm.dateArray = [];\r\n mvm.Datelimit = 0;\r\n mvm.hasShowTimes = false;\r\n mvm.movieFormatCodes = null;\r\n //var movieObj = movieData.slice(0, 20);\r\n mvm.filterByPlayingType = 'nowplaying';\r\n mvm.NowPlayingTab = true;\r\n var CINEMAS = [];\r\n var ORIGINAL_SHOWTIMES = [];\r\n var SHOWTIMES = [];\r\n var ORIGINAL_MOVIES = [];\r\n var MOVIES = [];\r\n //var TIMELINE = new vis.DataSet();\r\n //var ITEMS = new vis.DataSet();\r\n var TIMELINE = [];\r\n var ITEMS = [];\r\n\r\n var CALENDAR_DATA = {\r\n max_date: moment(),\r\n min_date: moment(),\r\n all_dates: []\r\n };\r\n mvm.SHOWTIMES_WITH_STATUSES = {};\r\n mvm.showtimeSelectedDate = moment().format('YYYY-MM-DD');\r\n //console.log('selected dated', mvm.showtimeSelectedDate);\r\n mvm.isNowPlaying = true;\r\n mvm.isComingSoon = false;\r\n mvm.isLoading = true;\r\n //mvm.isLoading = true;\r\n\r\n var counter = 0;\r\n var counter2 = 0;\r\n var SELECTED_DATE = moment();\r\n mvm.nextDay = nextDay;\r\n mvm.prevDay = prevDay;\r\n\r\n mvm.sortorder = \"+FilmTitle\";\r\n\r\n $scope.$watch('mvm.filterByCinemaLocation', function(newValue, oldValue) {\r\n if (newValue) {\r\n mvm.filterByCinemaLocation = newValue;\r\n //console.log('cinema', newValue);\r\n $(\"#share-film-cinema\").val(newValue);\r\n } else {\r\n mvm.filterByCinemaLocation = undefined;\r\n $(\"#share-film-cinema\").val('');\r\n }\r\n });\r\n\r\n\r\n mvm.filterByMultipleMovieFormats = function(item) {\r\n //console.log(item, mvm.filterByMovieFormat);\r\n };\r\n\r\n $scope.$watch('mvm.filterByMovieFormat', function(newValue, oldValue) {\r\n if (newValue) {\r\n mvm.filterByMovieFormat = newValue;\r\n //console.log('format', newValue);\r\n $(\"#share-film-format\").val(newValue);\r\n } else {\r\n mvm.filterByMovieFormat = undefined;\r\n $(\"#share-film-format\").val('');\r\n }\r\n });\r\n\r\n\r\n mvm.next = function() {\r\n if ((mvm.Datelimit + 4 === mvm.dateArray.length) || (mvm.Datelimit + 4 >= mvm.dateArray.length)) {\r\n return;\r\n } else {\r\n mvm.Datelimit += 1;\r\n }\r\n\r\n };\r\n\r\n mvm.prev = function() {\r\n if (mvm.Datelimit === 0) {\r\n mvm.Datelimit = 0;\r\n } else {\r\n mvm.Datelimit -= 1;\r\n }\r\n };\r\n\r\n mvm.getFilteredItemsVariable = function() {\r\n return mvm.filteredItemsVariable;\r\n };\r\n\r\n function nextDay() {\r\n SELECTED_DATE = moment(SELECTED_DATE).add(1, 'days');\r\n //console.log(SELECTED_DATE);\r\n buildTimeline();\r\n }\r\n\r\n function prevDay() {\r\n SELECTED_DATE = moment(SELECTED_DATE).add(-1, 'days');\r\n //console.log(SELECTED_DATE);\r\n buildTimeline();\r\n }\r\n\r\n function getCount() {\r\n return ++counter;\r\n }\r\n\r\n function getCount2() {\r\n return ++counter2;\r\n }\r\n\r\n function getMomentFromTimeString(str) {\r\n var t = moment(str, 'HH:mm A');\r\n // Now t is a moment.js object of today's date at the time given in str\r\n\r\n if (t.get('hour') < 22) // If it's before 9 pm\r\n t.add('d', 1); // Add 1 day, so that t is tomorrow's date at the same time\r\n\r\n return t;\r\n }\r\n\r\n function checkCalendarInformation(start, end) {\r\n //check min and max date\r\n CALENDAR_DATA.min_date = start.isBefore(CALENDAR_DATA.min_date) ? start : CALENDAR_DATA.min_date;\r\n CALENDAR_DATA.max_date = end.isAfter(CALENDAR_DATA.max_date) ? end : CALENDAR_DATA.max_date;\r\n\r\n var startOfDay = moment(start).clone().format('YYYY-MM-DD');\r\n if (CALENDAR_DATA.all_dates.indexOf(startOfDay) === -1) {\r\n CALENDAR_DATA.all_dates.push(startOfDay);\r\n }\r\n }\r\n\r\n function addTheatersFromFilm(movie, movieGroupId) {\r\n var showTimes = _.find(SHOWTIMES, { 'FilmId': movie.FilmId });\r\n var cinemaIds = [];\r\n\r\n _.forOwn(showTimes.Cinemas, function(cinema, cinemaName) {\r\n var cinemaVistaId = getCount();\r\n\r\n var itemsAdded = false;\r\n\r\n\r\n _.each(cinema, function(showing) {\r\n //var itemObj = {};\r\n //console.log('showing', showing, movie);\r\n var startOfDay = moment(showing.DateTime).clone().startOf('day');\r\n var start = moment(showing.DateTime).clone();\r\n var end = start.clone().add(movie.RunTime, 'minutes');\r\n checkCalendarInformation(start, end);\r\n if (SELECTED_DATE.startOf('day').isSame(startOfDay)) {\r\n var showingVistaId = getCount2();\r\n\r\n var itemContent = \"\";\r\n itemContent = \"<div class='showtime-template'><div class='square-grid'><div class='checkered-bg'></div></div><div class='time'>\" + moment(start).format(\"LT\") + \"</div><div class='type'>IMAX</div><div class='event'>$</div></div>\";\r\n\r\n //add ID so that we know this theatre has a showing for the selected date\r\n ITEMS.add({\r\n id: showingVistaId,\r\n group: cinemaVistaId,\r\n content: itemContent,\r\n start: start,\r\n end: end,\r\n type: 'range'\r\n });\r\n itemsAdded = true;\r\n } else {\r\n // They are not on the same day\r\n }\r\n });\r\n\r\n //only cinema row if a movie is playing for them\r\n if (itemsAdded) {\r\n TIMELINE.add({\r\n id: cinemaVistaId,\r\n content: getCinemaDetails(cinema, cinemaName),\r\n });\r\n\r\n cinemaIds.push(cinemaVistaId);\r\n }\r\n });\r\n return cinemaIds;\r\n }\r\n\r\n function buildTimeline() {\r\n\r\n //console.log('3 A');\r\n mvm.buildingTimeline = true;\r\n //RESET DATA\r\n //TIMELINE = new vis.DataSet();\r\n //ITEMS = new vis.DataSet();\r\n TIMELINE = [];\r\n ITEMS = [];\r\n CALENDAR_DATA.min_date = moment();\r\n CALENDAR_DATA.max_date = moment();\r\n CALENDAR_DATA.all_dates.length = 0;\r\n MOVIES = _.clone(ORIGINAL_MOVIES, true);\r\n //console.log('loaded 3', MOVIES);\r\n SHOWTIMES = _.clone(ORIGINAL_SHOWTIMES, true);\r\n counter = 0;\r\n counter2 = 0;\r\n\r\n mvm.movies = MOVIES;\r\n\r\n CALENDAR_DATA.all_dates.sort();\r\n\r\n }\r\n\r\n function getCinemaDetails(cinema, cinemaName) {\r\n var htmlStart = \"<div class='timeline-cinema-parent-container'><div class='row'>\";\r\n var detailsEnd = htmlStart + \"<div class='title'>\" + cinemaName + \"</div>\";\r\n var htmlEnd = detailsEnd + \"</div></div>\";\r\n return htmlEnd;\r\n }\r\n\r\n mvm.filteredItemsCinemaLocation = function(items) {\r\n //mvm.filterByCinemaLocation = undefined;\r\n //mvm.filterByMovieFormat = undefined;\r\n //console.log('filtered pre', items);\r\n var result = {};\r\n mvm.filteredItemsVariable = [];\r\n angular.forEach(items, function(value, key) {\r\n var byFilm = _.get(value, 'currentShowtimes.byFilm');\r\n //console.log(key, value, byFilm);\r\n\r\n angular.forEach(byFilm, function(value2, key2) {\r\n delete value2['Formats'];\r\n delete value2['undefined'];\r\n\r\n angular.forEach(value2, function(value3, key3) {\r\n //console.log(key3,value3)\r\n if (value3.Date === mvm.showtimeSelectedDate) {\r\n result[key2] = result[key2] || [];\r\n result[key2].push(value3);\r\n }\r\n });\r\n //console.log('result', result);\r\n //if (result[key2]) {\r\n // result[key2]['Formats'] = _.groupBy(result[key2], 'FormatCode');\r\n //}\r\n if (result[key2]) {\r\n result[key2]['Formats'] = _.groupBy(result[key2], 'FormatCode');\r\n\r\n var temp = [];\r\n _.forOwn(result[key2]['Formats'], function(f, v) {\r\n var temp2 = _.map(f, function(o) { return _.extend({ 'FormatType': v.trim() }, o) });\r\n temp.push(temp2);\r\n });\r\n\r\n result[key2]['Formats'] = temp;\r\n }\r\n });\r\n });\r\n\r\n //console.log('filtered post', result);\r\n var a = Object.keys(result).map(function(key) {\r\n var temp = {};\r\n temp['Title'] = key;\r\n temp['Formats'] = _.clone(result[key]['Formats']);\r\n temp['HOFilmCode'] = _.get(result[key], '[0][FilmID]');\r\n return temp;\r\n });\r\n\r\n $scope.$evalAsync(function() {\r\n //convert to array for filtering/sorting\r\n var arr = _.clone(a);\r\n\r\n var t = [];\r\n _.each(result, function(o) { _.forOwn(o['Formats'], function(f) { t = t.concat(f); }); });\r\n\r\n mvm.movieFormatFilterArray = _(t).map('FormatCode').uniq().value().map(Function.prototype.call, String.prototype.trim);\r\n\r\n var arr2 = [];\r\n _.each(arr, function(e) {\r\n var g;\r\n var aItem = _.find(t, function(a) { return a.FilmID === e.HOFilmCode; });\r\n g = _.merge({}, e, aItem);\r\n g['FilmTitle'] = mvm.filmKey[g.ScheduledFilmId].Title;\r\n g['Title'] = mvm.filmKey[g.ScheduledFilmId].Title;\r\n g['KeyCombo'] = g.FilmID + g.CinemaID + g.FormatCode;\r\n g['ReleaseDateDT'] = mvm.filmKey[g.FilmID].ReleaseDateDT;\r\n g['HOFilmCode'] = g.FilmID;\r\n aItem = null;\r\n formats = null;\r\n arr2.push(g);\r\n });\r\n\r\n mvm.filteredItemsVariable = arr2;\r\n //console.log('filtered', mvm.filteredItemsVariable);\r\n mvm.hasShowTimes = _.isEmpty(mvm.filteredItemsVariable, true) ? false : true;\r\n });\r\n };\r\n mvm.addToWatchlist = function(filmCode, event) {\r\n event.preventDefault();\r\n\r\n $http.post(\"/rpc/membership/account/watchlist/add/\" + filmCode)\r\n .then(function(data) {\r\n if (data.data.Success == true) {\r\n $scope.isInWatchlist = true;\r\n // success\r\n } else {\r\n // vista error\r\n alert('Error occurred while adding film to the watchlist.')\r\n }\r\n }).catch(function(error) {\r\n // our server error\r\n alert('Error occurred while adding film to the watchlist.')\r\n })\r\n }\r\n\r\n mvm.removeFromWatchlist = function(filmCode, event) {\r\n event.preventDefault();\r\n\r\n $http.post(\"/rpc/membership/account/watchlist/remove/\" + filmCode)\r\n .then(function(data) {\r\n if (data.data.Success == true) {\r\n $scope.isInWatchlist = false;\r\n // success\r\n } else {\r\n // vista error\r\n alert('Error occurred while adding film to the watchlist.')\r\n }\r\n }).catch(function(error) {\r\n // our server error\r\n alert('Error occurred while adding film to the watchlist.')\r\n })\r\n }\r\n\r\n mvm.initWatchlist = function(filmCode) {\r\n $scope.isInWatchlist = false;\r\n $scope.showWatchlistLink = false;\r\n\r\n $http.get(\"/rpc/membership/account/watchlist\")\r\n .then(function(data) {\r\n if (data.data.Success == true) {\r\n // success\r\n $scope.showWatchlistLink = true;\r\n\r\n for (var i = 0; i < data.data.Data.length; i++) {\r\n var film = data.data.Data[i];\r\n if (film.HOFilmCode == filmCode) {\r\n $scope.isInWatchlist = true;\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n mvm.filteredItemsHomePage = function(items) {\r\n //mvm.filterByCinemaLocation = undefined;\r\n //mvm.filterByMovieFormat = undefined;\r\n //console.log('filtered pre', items);\r\n var result = {};\r\n mvm.filteredItemsVariable = [];\r\n angular.forEach(items, function(value, key) {\r\n var byFilm = _.get(value, 'currentShowtimes.byCinema');\r\n //console.log(key, value, byFilm);\r\n\r\n angular.forEach(byFilm, function(value2, key2) {\r\n delete value2['Formats'];\r\n delete value2['undefined'];\r\n\r\n angular.forEach(value2, function(value3, key3) {\r\n //console.log(key3,value3)\r\n if (value3.Date === mvm.showtimeSelectedDate) {\r\n result[key2] = result[key2] || [];\r\n result[key2].push(value3);\r\n }\r\n });\r\n //console.log('result', result);\r\n if (result[key2]) {\r\n result[key2]['Formats'] = _.groupBy(result[key2], 'FormatCode');\r\n }\r\n });\r\n });\r\n\r\n //console.log('filtered post', result);\r\n\r\n $scope.$evalAsync(function() {\r\n var t = [];\r\n _.each(result, function(o) { _.forOwn(o['Formats'], function(f) { t = t.concat(f); }); });\r\n\r\n mvm.movieFormatFilterArray = _(t).map('FormatCode').uniq().value().map(Function.prototype.call, String.prototype.trim);\r\n var cinemaIdsInList = _(t).map('CinemaID').uniq().value().map(Function.prototype.call, String.prototype.trim);\r\n\r\n mvm.cinemaFilterArray = _(mvm.cinemaKeyArray)\r\n .keyBy('VistaID')\r\n .at(cinemaIdsInList)\r\n .value();\r\n\r\n var now = moment();\r\n\r\n _.each(t, function(e) {\r\n e['FilmTitle'] = mvm.filmKey[e.ScheduledFilmId].Title;\r\n e['KeyCombo'] = e.FilmID + e.CinemaID + e.FormatCode;\r\n //TODO nowplayinglogic\r\n //e['PlayingType'] = moment(mvm.filmKey[e.ScheduledFilmId].ReleaseDateDT).isSameOrAfter(now) ? 'comingsoon' : 'nowplaying';\r\n e['PlayingType'] = 'nowplaying';\r\n e['ReleaseDateDT'] = mvm.filmKey[e.ScheduledFilmId].ReleaseDateDT;\r\n\r\n try {\r\n e['ReleaseDateDT'] = moment(mvm.filmKey[e.ScheduledFilmId].ReleaseDateDT).unix();\r\n } catch (err) {}\r\n\r\n e['RunTime'] = 0;\r\n try {\r\n let runtimeinseconds = mvm.filmKey[e.ScheduledFilmId].Duration;\r\n if (runtimeinseconds) {\r\n //convert something like 1h 22m into 1:22\r\n var b = runtimeinseconds.replace('h', ':');\r\n var c = b.replace('m', '');\r\n var d = c.replace(' ', '');\r\n //convert something like 1:22 into 82 seconds\r\n e['RunTime'] = +(d.split(':').reduce((acc, time) => (60 * acc) + +time));\r\n console(runtimeinseconds, e['RunTime']);\r\n }\r\n } catch (err) {}\r\n });\r\n\r\n //mvm.filteredItemsVariable = _.uniqBy(t, 'ScheduledFilmId');\r\n\r\n mvm.filteredItemsVariable = t;\r\n //console.log('filtered', mvm.filteredItemsVariable);\r\n mvm.hasShowTimes = _.isEmpty(mvm.filteredItemsVariable, true) ? false : true;\r\n });\r\n\r\n };\r\n\r\n mvm.ShowNowPlaying = function() {\r\n mvm.ComingSoonTab = false;\r\n mvm.NowPlayingTab = true;\r\n mvm.filterByPlayingType = 'nowplaying';\r\n //AOS.init(); \r\n\r\n $timeout(function() {\r\n AOS.refreshHard();\r\n }, 0);\r\n };\r\n mvm.ShowComingSoon = function() {\r\n mvm.NowPlayingTab = false;\r\n mvm.ComingSoonTab = true;\r\n mvm.filterByPlayingType = 'comingsoon';\r\n\r\n $timeout(function() {\r\n //jQuery('.coming-soon-container').addClass(\"aos-animate\"); \r\n AOS.refreshHard();\r\n }, 0);\r\n };\r\n\r\n function getTimelineDetails(movie, vistaID) {\r\n var newScope = $scope.$new(true);\r\n newScope.movie = movie;\r\n newScope.showImage = 'false';\r\n var dirCode = \"<movie-poster-information movie='movie' align-text=\" + 'left' + \"></movie-poster-information>\";\r\n\r\n var htmlStart = \"<div class='timeline-content-parent-container'><div class='row'>\";\r\n var img = htmlStart + \"<div class='timeline-image'><img class='timeline-movie-poster' ng-src='{{movie.Img}}' /></div>\";\r\n var detailsStart = img + \"<div class='timeline-details'>\";\r\n var movieDirective = detailsStart + dirCode;\r\n var detailsEnd = movieDirective + \"</div>\";\r\n var htmlEnd = detailsEnd + \"</div></div>\";\r\n var compiled = $compile(htmlEnd)(newScope);\r\n\r\n $timeout(function() {\r\n //wait for digest cycle to finish, function has already finished though\r\n //so we have to remove/add in the new/compiled content HTML object\r\n //console.info(\"clone\", ggroups, vistaID);\r\n var copy = _.clone(ggroups._data[vistaID], true);\r\n if (typeof copy !== \"undefined\") {\r\n copy.content = compiled[0].outerHTML;\r\n mvm.data.groups.remove(vistaID);\r\n mvm.data.groups.add(copy);\r\n }\r\n }, 0);\r\n\r\n return htmlEnd;\r\n }\r\n\r\n\r\n //disable for now\r\n mvm.routeParams = function() {\r\n var params = \"?date=\";\r\n params += mvm.CURRENT_DATE_URL;\r\n if (mvm.filterByCinemaLocation) {\r\n params += \"&cinema=\" + encodeURIComponent(mvm.filterByCinemaLocation);\r\n }\r\n if (mvm.filterByMovieFormat) {\r\n params += \"&format=\" + encodeURIComponent(mvm.filterByMovieFormat);\r\n }\r\n\r\n return params;\r\n };\r\n\r\n\r\n mvm.setButtonClass = function($index) {\r\n var obj = mvm.dateArray[$index + mvm.Datelimit];\r\n $scope.selectedTab = moment(obj.Moment).format(\"YYYY-MM-DD\");\r\n };\r\n\r\n mvm.getButtonClass = function($index) {\r\n var obj = mvm.dateArray[$index + mvm.Datelimit];\r\n return (moment(obj.Moment).format(\"YYYY-MM-DD\") === $scope.selectedTab) ? 'active' : \"\";\r\n };\r\n\r\n mvm.getNowPlayingClass = function(name) {\r\n return (name === mvm.filterByPlayingType) ? 'active' : \"\";\r\n };\r\n\r\n mvm.filteredItemsByFilm = function(items) {\r\n var result = {};\r\n mvm.filteredItemsVariable = [];\r\n\r\n angular.forEach(items, function(value, key) {\r\n delete value['Formats'];\r\n delete value['undefined'];\r\n\r\n angular.forEach(value, function(value2, key2) {\r\n //console.log(key2, value2);\r\n if (value2.Date === mvm.showtimeSelectedDate) {\r\n result[key] = result[key] || [];\r\n result[key].push(value2);\r\n }\r\n });\r\n //console.log('result', result);\r\n if (result[key]) {\r\n result[key]['Formats'] = _.groupBy(result[key], 'FormatCode');\r\n\r\n var temp = [];\r\n _.forOwn(result[key]['Formats'], function(f, v) {\r\n var temp2 = _.map(f, function(o) { return _.extend({ 'FormatType': v.trim() }, o) });\r\n temp.push(temp2);\r\n });\r\n\r\n result[key]['Formats'] = temp;\r\n }\r\n });\r\n\r\n $scope.$evalAsync(function() {\r\n var t = [];\r\n\r\n var arr = _.values(result);\r\n\r\n _.each(result, function(o) { _.forOwn(o['Formats'], function(f) { t = t.concat(f); }); });\r\n\r\n mvm.movieFormatFilterArray = _(t).map('FormatCode').uniq().value().map(Function.prototype.call, String.prototype.trim);\r\n\r\n var cinemaIdsInList = _(t).map('CinemaID').uniq().value().map(Function.prototype.call, String.prototype.trim);\r\n\r\n mvm.cinemaFilterArray = _(mvm.cinemaKeyArray)\r\n .keyBy('VistaID')\r\n .at(cinemaIdsInList)\r\n .value();\r\n\r\n var arr2 = [];\r\n _.each(arr, function(e) {\r\n var g;\r\n var cinema = mvm.cinemaKey[e[0].CinemaID];\r\n g = _.merge({}, e, cinema);\r\n g['FilmID'] = g[0]['FilmID'];\r\n g['KeyCombo'] = g.FilmID + g.VistaID;\r\n g['CinemaID'] = g['VistaID'];\r\n g['MovieFormats'] = Object.keys(e.Formats).map(Function.prototype.call, String.prototype.trim);\r\n arr2.push(g);\r\n });\r\n\r\n mvm.filteredItemsVariable = arr2;\r\n //console.log('filtered', mvm.filteredItemsVariable);\r\n mvm.hasShowTimes = _.isEmpty(mvm.filteredItemsVariable, true) ? false : true;\r\n });\r\n\r\n };\r\n\r\n function loadFirstTimeData(data) {\r\n //console.log('2 A');\r\n if (!data) {\r\n return;\r\n }\r\n //console.log('acc data', data);\r\n //console.log('load first', data);\r\n ORIGINAL_MOVIES = data.reduce(function(acc, item) {\r\n acc.push({\r\n \"FilmId\": item.FilmId,\r\n \"Title\": item.Title,\r\n \"Cert\": item.Cert,\r\n \"Img\": item.Img,\r\n \"Trailer\": item.Trailer,\r\n \"ReleaseDate\": item.ReleaseDate,\r\n \"RunTime\": item.RunTime,\r\n \"Rating\": item.Rating,\r\n \"Genres\": item.Genres,\r\n \"Synopsis\": item.Synopsis,\r\n \"Teaser\": item.Teaser,\r\n \"Cast\": item.Cast,\r\n \"Director\": item.Director,\r\n \"FriendlyName\": item.FriendlyName,\r\n \"foregroundImage\": item.Img,\r\n \"currentShowtimes\": item.currentShowtimes\r\n\r\n });\r\n return acc;\r\n }, []);\r\n //console.log('load second', ORIGINAL_MOVIES);\r\n //console.log('1 show', data);\r\n ORIGINAL_SHOWTIMES = data.reduce(function(acc, item) {\r\n acc.push({\r\n \"Title\": item.Title,\r\n \"FilmId\": item.FilmId,\r\n \"currentShowtimes\": item.currentShowtimes,\r\n \"TicketsSellingFast\": item.TicketsSellingFast,\r\n \"ShowSoldOut\": item.ShowSoldOut,\r\n \"EventName\": item.EventName,\r\n \"hasEvent\": item.hasEvent,\r\n \"ShowtimeDetailUrl\": item.ShowtimeDetailUrl,\r\n \"OverrideShowtimeIcon\": item.OverrideShowtimeIcon,\r\n \"OverrideShowtimeIconDescription\": item.OverrideShowtimeIconDescription,\r\n \"OverrideShowtimeIconKey\": item.OverrideShowtimeIconKey,\r\n \"OverrideShowtimeIconDescriptionKey\": item.OverrideShowtimeIconDescriptionKey,\r\n \"OverrideShowtimeIconKeyOrder\": item.OverrideShowtimeIconKeyOrder\r\n });\r\n return acc;\r\n }, []);\r\n\r\n //Compile list of theatres based on data\r\n _.each(SHOWTIMES, function(time) {\r\n _.each(time.Dates, function(date) {\r\n var ary = Object.keys(date);\r\n CINEMAS.push(ary);\r\n });\r\n });\r\n\r\n CINEMAS = _(CINEMAS).flattenDeep().uniq().value();\r\n //console.log('2 B');\r\n }\r\n\r\n\r\n function randomScore() {\r\n return Math.floor(Math.random() * 100);\r\n }\r\n\r\n function randomHours() {\r\n return Math.floor(Math.random() * 10);\r\n }\r\n\r\n var handleSuccess = function(data, status) {\r\n //console.log('1');\r\n loadFirstTimeData(data);\r\n buildTimeline(data);\r\n $timeout(function() { mvm.buildingTimeline = false; }, 0);\r\n $scope.$evalAsync(mvm.pageLoaded = true);\r\n //buildCalendarPicker()\r\n };\r\n\r\n function setWithExpiry(key, value, ttl) {\r\n const now = new Date()\r\n\r\n // `item` is an object which contains the original value\r\n // as well as the time when it's supposed to expire\r\n\r\n //compress value \r\n var compressedValue = value;\r\n compressedValue.data = JSON.stringify(compressedValue.data);\r\n compressedValue.calendarDates = JSON.stringify(compressedValue.calendarDates);\r\n compressedValue.films = JSON.stringify(compressedValue.films);\r\n compressedValue.dates = JSON.stringify(compressedValue.dates);\r\n compressedValue.cinemas = JSON.stringify(compressedValue.cinemas);\r\n //var compressedValue = JSON.stringify(value);\r\n\r\n //console.log('size of sjos: ' + roughSizeOfObject(compressedValue));\r\n\r\n const item = {\r\n value: compressedValue,\r\n expiry: now.getTime() + ttl,\r\n }\r\n //console.log(item);\r\n localStorage.setItem(key, JSON.stringify(item))\r\n }\r\n\r\n function getWithExpiry(key) {\r\n //remove old way if it still exists \r\n let oldKey = \"allsjos\";\r\n const itemStrOld = localStorage.getItem(oldKey)\r\n if (itemStrOld) {\r\n localStorage.removeItem(oldKey)\r\n }\r\n\r\n const itemStr = localStorage.getItem(key)\r\n // if the item doesn't exist, return null\r\n if (!itemStr) {\r\n return null\r\n }\r\n const item = JSON.parse(itemStr)\r\n const now = new Date()\r\n // compare the expiry time of the item with the current time\r\n if (now.getTime() > item.expiry) {\r\n // If the item is expired, delete the item from storage\r\n // and return null\r\n localStorage.removeItem(key)\r\n return null\r\n }\r\n var timetogo = item.expiry - now.getTime();\r\n try {\r\n timetogo = timetogo / 1000;\r\n timetogo = timetogo.toString().split(\".\")[0];\r\n timetogo = timetogo + \" seconds.\";\r\n } catch (err) {\r\n timetogo = timetogo + \" milliseconds.\"\r\n }\r\n //console.log('found cache for ' + key + '. Expires in ' + timetogo);\r\n return item.value\r\n }\r\n\r\n //caching size calculator\r\n function roughSizeOfObject(object) {\r\n\r\n var objectList = [];\r\n var stack = [object];\r\n var bytes = 0;\r\n\r\n while (stack.length) {\r\n var value = stack.pop();\r\n\r\n if (typeof value === 'boolean') {\r\n bytes += 4;\r\n } else if (typeof value === 'string') {\r\n bytes += value.length * 2;\r\n } else if (typeof value === 'number') {\r\n bytes += 8;\r\n } else if (\r\n typeof value === 'object' &&\r\n objectList.indexOf(value) === -1\r\n ) {\r\n objectList.push(value);\r\n\r\n for (var i in value) {\r\n stack.push(value[i]);\r\n }\r\n }\r\n }\r\n return bytes;\r\n }\r\n\r\n function getBaseSJO(sjoID) {\r\n var deferred = $q.defer();\r\n getMoreDataAPI(sjoID)\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var r = response.data.Data;\r\n deferred.resolve(r);\r\n }\r\n })\r\n .catch(function(response) {\r\n deferred.resolve();\r\n })\r\n .finally(function(response) {\r\n\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getMoreData(sjoID) {\r\n var deferred = $q.defer();\r\n getMoreDataAPI(sjoID)\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var r = response.data.Data;\r\n deferred.resolve(r);\r\n }\r\n })\r\n .catch(function(response) {\r\n deferred.resolve();\r\n })\r\n .finally(function(response) {\r\n\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getMoreDataByTitle(sjoID) {\r\n var deferred = $q.defer();\r\n getMoreDataByTitleAPI(sjoID)\r\n .then(function(response) {\r\n if (response && response.data) {\r\n var r = response.data.Data;\r\n deferred.resolve(r);\r\n }\r\n })\r\n .catch(function(response) {\r\n deferred.resolve();\r\n })\r\n .finally(function(response) {\r\n\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function getMoreDataAPIAll() {\r\n var config = {\r\n cache: true\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/data/sjo/getAll\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n\r\n function getMoreDataAPI(sjoid) {\r\n var config = {\r\n cache: true,\r\n params: {\r\n id: sjoid\r\n }\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/data/sjo/getSJO\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getMoreDataByTitleAPI(sjoid) {\r\n var config = {\r\n cache: true,\r\n params: {\r\n id: sjoid\r\n }\r\n };\r\n var deferred = $q.defer();\r\n\r\n $http.get(\"/rpc/data/sjo/getSJOByTitle\", config).then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n //rivertownData.getAllData(handleSuccess);\r\n\r\n $scope.init = function(data, ShowtimeStatuses) {\r\n $scope.today();\r\n mvm.SHOWTIMES_WITH_STATUSES = {};\r\n\r\n if (ShowtimeStatuses) {\r\n var showtimesWithStatuses = ShowtimeStatuses;\r\n _.each(showtimesWithStatuses, function(s) {\r\n mvm.SHOWTIMES_WITH_STATUSES[s.ID] = {\r\n soldOut: s.ShowSoldOut,\r\n sellingFast: s.TicketsSellingFast\r\n };\r\n });\r\n }\r\n var newData = SitefinityToJs(data);\r\n\r\n mvm.hasShowtimesForSelecedDate();\r\n mvm.isLoading = false;\r\n };\r\n\r\n $scope.lazyLoadSJOCinemaDetail = function(sjoID, ShowtimeStatuses) {\r\n //console.log('lazy load params:', sjoID, ShowtimeStatuses);\r\n\r\n $scope.today();\r\n\r\n sjoID = sjoID.toString();\r\n if (sjoID.length === 1) {\r\n sjoID = \"00\" + sjoID;\r\n }\r\n\r\n if (sjoID.length === 2) {\r\n sjoID = \"00\" + sjoID;\r\n }\r\n\r\n mvm.SHOWTIMES_WITH_STATUSES = {};\r\n\r\n if (ShowtimeStatuses) {\r\n var showtimesWithStatuses = ShowtimeStatuses;\r\n _.each(showtimesWithStatuses, function(s) {\r\n mvm.SHOWTIMES_WITH_STATUSES[s.ID] = {\r\n soldOut: s.ShowSoldOut,\r\n sellingFast: s.TicketsSellingFast\r\n };\r\n });\r\n }\r\n\r\n //disable temporarily until json cleaned up\r\n let cachedItem = null;\r\n\r\n //if false then this view isnt caching its data\r\n let allSJOCacheKey = \"sjo-allsjos\";\r\n //cachedItem = getWithExpiry(allSJOCacheKey);\r\n\r\n\r\n if (cachedItem) {\r\n SitefinityToJs(cachedItem);\r\n mvm.hasShowtimesForSelecedDate();\r\n $scope.selectedTab = mvm.getTodaysSelectedTab();\r\n mvm.isLoading = false;\r\n } else {\r\n getMoreDataByTitle(sjoID)\r\n .then(function(response) {\r\n SitefinityToJs(response);\r\n mvm.hasShowtimesForSelecedDate();\r\n $scope.selectedTab = mvm.getTodaysSelectedTab();\r\n mvm.isLoading = false;\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n $scope.lazyLoadSJOHomepage = function(sjoIDLightweight, sjoIDFull, ShowtimeStatuses) {\r\n //console.log('lazy load params:', sjoIDFull, sjoIDLightweight, ShowtimeStatuses);\r\n\r\n $scope.today();\r\n\r\n mvm.SHOWTIMES_WITH_STATUSES = {};\r\n\r\n if (ShowtimeStatuses) {\r\n var showtimesWithStatuses = ShowtimeStatuses;\r\n _.each(showtimesWithStatuses, function(s) {\r\n mvm.SHOWTIMES_WITH_STATUSES[s.ID] = {\r\n soldOut: s.ShowSoldOut,\r\n sellingFast: s.TicketsSellingFast\r\n };\r\n });\r\n }\r\n\r\n //disable temporarily until json cleaned up \r\n let cacheKey = \"sjo-allsjos\";\r\n let cachedItem = null;\r\n\r\n //if false then this view isnt caching its data\r\n cachedItem = getWithExpiry(cacheKey);\r\n\r\n if (cachedItem) {\r\n SitefinityToJs(cachedItem);\r\n mvm.hasShowtimesForSelecedDate();\r\n $scope.selectedTab = mvm.getTodaysSelectedTab();\r\n mvm.isLoading = false;\r\n } else {\r\n getBaseSJO(sjoIDLightweight)\r\n .then(function(baseresponse) {\r\n SitefinityToJs(baseresponse);\r\n mvm.hasShowtimesForSelecedDate();\r\n $scope.selectedTab = mvm.getTodaysSelectedTab();\r\n mvm.isLoading = false;\r\n getMoreData(sjoIDFull)\r\n .then(function(response) {\r\n try {\r\n if (cacheKey && response) {\r\n var tllMinutes = 30;\r\n var cacheTimeMilliseconds = tllMinutes * 1000 * 60;\r\n //console.log('caching: ' + cacheKey + \" for \" + cacheTimeMilliseconds + \"ms\");\r\n setWithExpiry(cacheKey, response, cacheTimeMilliseconds);\r\n //console.log('cached!');\r\n }\r\n } catch (err) {\r\n //console.log('failed to cache', err);\r\n }\r\n SitefinityToJs(response);\r\n //mvm.hasShowtimesForSelecedDate();\r\n //$scope.selectedTab = mvm.getTodaysSelectedTab();\r\n });\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n mvm.AOSRefresh = function() {\r\n jQuery(\".now-playing-container\").removeClass(\"aos-animate\")\r\n $timeout(function() {\r\n AOS.refreshHard();\r\n }, 500);\r\n }\r\n\r\n mvm.hasShowtimesForSelecedDate = function() {\r\n return mvm.hasShowTimes;\r\n };\r\n\r\n mvm.formattedDate = function() {\r\n return moment($scope.dt).format('MMM Do YYYY');\r\n };\r\n\r\n\r\n $scope.today = function() {\r\n $scope.dt = new Date();\r\n mvm.showtimeSelectedDate = moment($scope.dt).format('YYYY-MM-DD');\r\n };\r\n\r\n\r\n $scope.clear = function() {\r\n $scope.dt = null;\r\n };\r\n\r\n mvm.DateChange = function(date) {\r\n var temp = moment(date).format('YYYY-MM-DD');\r\n mvm.CURRENT_DATE_URL = temp;\r\n mvm.CURRENT_DATE = moment(temp).format('MMM Do YYYY');\r\n $scope.$evalAsync(function() {\r\n $scope.selectedTab = temp.toString();\r\n\r\n var dateindex = _.findIndex(mvm.dateArray, { StringDate: moment(temp).format('YYYY-MM-DD') });\r\n //var modifier = dateindex <= 4 ? 0 : dateindex-3;\r\n //mvm.Datelimit = modifier;\r\n var sharedate = moment(temp).format('YYYY-MM-DD');\r\n $(\"#share-film-date\").val(sharedate);\r\n mvm.Datelimit = dateindex;\r\n });\r\n mvm.showtimeSelectedDate = temp;\r\n\r\n jQuery(\".now-playing-container\").removeClass(\"aos-animate\")\r\n $timeout(function() {\r\n AOS.refreshHard();\r\n }, 500);\r\n //console.log('date changed to: ', temp);\r\n };\r\n\r\n $scope.inlineOptions = {\r\n customClass: getDayClass,\r\n minDate: new Date(),\r\n showWeeks: true\r\n };\r\n var nextMonth = new Date();\r\n nextMonth.setMonth(nextMonth.getMonth() + 3);\r\n $scope.dateOptions = {\r\n dateDisabled: disabledTest,\r\n formatYear: 'yy',\r\n maxDate: nextMonth,\r\n minDate: new Date(),\r\n startingDay: 1,\r\n showWeeks: false\r\n\r\n };\r\n\r\n // Disable weekend selection\r\n function disabled(data) {\r\n var date = data.date,\r\n mode = data.mode;\r\n return mode === 'day' && (date.getDay() === 0 || date.getDay() === 6);\r\n }\r\n var dayDuration = 60 * 60 * 24 * 1000;\r\n\r\n function areDatesEqual(date1, date2) {\r\n return (parseInt(date1 / dayDuration)) === (parseInt(date2 / dayDuration));\r\n }\r\n //Disable all days but showtime days\r\n function disabledTest(data) {\r\n var date = data.date,\r\n mode = data.mode;\r\n\r\n var isRealDate = false;\r\n\r\n for (var i = 0; i < mvm.dates.length; i++) {\r\n //console.log('dates',mvm.dates);\r\n var momentDate = moment(mvm.dates[i]).toDate();\r\n if (areDatesEqual(momentDate, date)) {\r\n isRealDate = true;\r\n }\r\n }\r\n\r\n return mode === 'day' && !isRealDate; // && (date >= $scope.endDate);\r\n }\r\n\r\n $scope.toggleMin = function() {\r\n $scope.inlineOptions.minDate = $scope.inlineOptions.minDate ? null : new Date();\r\n $scope.dateOptions.minDate = $scope.inlineOptions.minDate;\r\n };\r\n\r\n $scope.toggleMin();\r\n\r\n $scope.open1 = function() {\r\n $scope.popup1.opened = true;\r\n };\r\n\r\n $scope.open2 = function() {\r\n $scope.popup2.opened = true;\r\n };\r\n\r\n mvm.filterByMultipleMovieFormatsFilmDetail = function(value) {\r\n var f = [];\r\n _.forOwn(value.Formats, function(v) { f.push(v[0].FormatCode.trim()); });\r\n\r\n if (!mvm.filterByMovieFormat) {\r\n return true;\r\n } else {\r\n if (f.indexOf(mvm.filterByMovieFormat) > -1) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n };\r\n\r\n mvm.filterByMovieFormatFunction = function(value) {\r\n var f = [];\r\n _.forOwn(value.Formats, function(v) { f.push(v[0].FormatCode.trim()); });\r\n\r\n if (!mvm.filterByMovieFormat) {\r\n return true;\r\n } else {\r\n if (f.indexOf(mvm.filterByMovieFormat) > -1) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n };\r\n\r\n mvm.getTodaysSelectedTab = function() {\r\n return moment().format('YYYY-MM-DD');\r\n };\r\n mvm.setManualDate = function($index) {\r\n var obj = mvm.dateArray[$index + mvm.Datelimit];\r\n $scope.setDate(obj.Moment.year(), obj.Moment.month(), obj.Moment.date());\r\n };\r\n $scope.setDate = function(year, month, day) {\r\n //console.log('1', year, month, day);\r\n $scope.dt = new Date(year, month, day);\r\n mvm.showtimeSelectedDate = moment().year(year).month(month).date(day).format('YYYY-MM-DD');\r\n\r\n var date= moment().year(year).month(month).date(day).format('YYYY-MM-DD');\r\n $(\"#share-film-date\").val(date);\r\n\r\n $scope.$evalAsync(function() {\r\n $scope.selectedTab = mvm.showtimeSelectedDate.toString();\r\n mvm.CURRENT_DATE_URL = mvm.showtimeSelectedDate;\r\n mvm.CURRENT_DATE = moment(mvm.showtimeSelectedDate).format('MMM Do YYYY');\r\n });\r\n //console.log(mvm.showtimeSelectedDate);\r\n //console.log('new date');\r\n jQuery(\".now-playing-container\").removeClass(\"aos-animate\")\r\n $timeout(function() {\r\n AOS.refreshHard();\r\n }, 500);\r\n };\r\n\r\n $scope.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];\r\n $scope.format = $scope.formats[0];\r\n $scope.altInputFormats = ['M!/d!/yyyy'];\r\n\r\n $scope.popup1 = {\r\n opened: false\r\n };\r\n\r\n $scope.popup2 = {\r\n opened: false\r\n };\r\n\r\n var tomorrow = new Date();\r\n tomorrow.setDate(tomorrow.getDate() + 1);\r\n var afterTomorrow = new Date();\r\n afterTomorrow.setDate(tomorrow.getDate() + 1);\r\n\r\n\r\n\r\n function getDayClass(data) {\r\n var date = data.date,\r\n mode = data.mode;\r\n if (mode === 'day') {\r\n var dayToCheck = new Date(date).setHours(0, 0, 0, 0);\r\n\r\n for (var i = 0; i < $scope.events.length; i++) {\r\n var currentDay = new Date($scope.events[i].date).setHours(0, 0, 0, 0);\r\n\r\n if (dayToCheck === currentDay) {\r\n return $scope.events[i].status;\r\n }\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n\r\n mvm.logs = {};\r\n\r\n function start() {\r\n startTime = new Date();\r\n }\r\n\r\n function end() {\r\n endTime = new Date();\r\n var timeDiff = endTime - startTime; //in ms\r\n // strip the ms\r\n timeDiff /= 1000;\r\n\r\n // get seconds \r\n seconds = Math.round(timeDiff);\r\n }\r\n\r\n function SitefinityToJs(data) {\r\n var now = moment();\r\n\r\n //homepage is structured with cleaner json than other view, so re-string this since its re-used till other pages use showtimeVMHomepage class in sync\r\n try {\r\n var testParsed = JSON.parse(data);\r\n testParsed.data = _.isString(testParsed.data) ? testParsed.data : JSON.stringify(testParsed.data);\r\n testParsed.calendarDates = _.isString(testParsed.calendarDates) ? testParsed.calendarDates : JSON.stringify(testParsed.calendarDates);\r\n testParsed.films = _.isString(testParsed.films) ? testParsed.films : JSON.stringify(testParsed.films);\r\n testParsed.dates = _.isString(testParsed.dates) ? testParsed.dates : JSON.stringify(testParsed.dates);\r\n testParsed.cinemas = _.isString(testParsed.cinemas) ? testParsed.cinemas : JSON.stringify(testParsed.cinemas);\r\n data = testParsed;\r\n } catch (ex) {\r\n // execution continues here when an error was thrown. You can also inspect the `ex`ception object\r\n }\r\n\r\n var dataParsed = data;\r\n\r\n var updatedData = JSON.parse(dataParsed.data);\r\n\r\n _.each(updatedData, function(u) {\r\n delete u['TicketsOnSale'];\r\n _.forOwn(u['currentShowtimes'], function(g) {\r\n delete g['TicketsOnSale'];\r\n });\r\n _.forOwn(u['Showtime'], function(g) {\r\n delete g['TicketsOnSale'];\r\n\r\n if (mvm.SHOWTIMES_WITH_STATUSES[g.Title]) {\r\n g.ShowSoldOut = mvm.SHOWTIMES_WITH_STATUSES[g.Title].soldOut;\r\n g.TicketsSellingFast = mvm.SHOWTIMES_WITH_STATUSES[g.Title].sellingFast;\r\n }\r\n });\r\n });\r\n\r\n var calDates = JSON.parse(dataParsed.calendarDates);\r\n mvm.filmKey = JSON.parse(dataParsed.films);\r\n\r\n _.each(mvm.filmKey, function(u) {\r\n var tos = _.get(u, 'TicketsOnSale');\r\n if (tos) {\r\n u['TicketsOnSale'] = moment(u['TicketsOnSale']).isBefore(now) ? true : false;\r\n } else {\r\n u['TicketsOnSale'] = true;\r\n }\r\n });\r\n\r\n mvm.cinemaKey = JSON.parse(dataParsed.cinemas);\r\n mvm.cinemaKeyArray = _.values(mvm.cinemaKey);\r\n var tempdates = JSON.parse(dataParsed.dates);\r\n\r\n\r\n\r\n _.each(updatedData, function(e) {\r\n e.Showtime = _.filter(e.Showtime, function(j) {\r\n var tempTime = moment(j.StartTime);\r\n var diff = tempTime.diff(now, 'minutes');\r\n //-11 is ~10 minutes past, so a showing at 12:00pm will still buy seeable/buyable at 12:10pm per Studio c\r\n var TimePastShowtimeToKeepShowingShowtime = -11;\r\n if (diff >= TimePastShowtimeToKeepShowingShowtime) {\r\n return j;\r\n } else {\r\n j;\r\n }\r\n });\r\n\r\n });\r\n\r\n\r\n //momentJS conversions\r\n calDates.forEach(function(el) {\r\n el['Moment'] = moment(el.Moment);\r\n el['StringDate'] = moment(el.Moment).format('YYYY-MM-DD');\r\n });\r\n\r\n var temparray = [];\r\n tempdates.forEach(function(d) {\r\n //var temp = d.split(\"-\");\r\n //var datetime = moment().year(temp[0]).month(temp[1]).date(temp[2]);\r\n //datetime = datetime.subtract(1, 'month');\r\n var datetime = moment(d);\r\n if (moment(datetime).isBefore(moment(), 'day')) {\r\n //dont include date\r\n } else {\r\n var iscurrentDate = datetime.isSameOrAfter(moment(), \"day\");\r\n if (iscurrentDate) {\r\n temparray.push(d);\r\n }\r\n }\r\n });\r\n\r\n mvm.dates = temparray;\r\n mvm.dateArray = calDates;\r\n\r\n mvm.calendarToday = {\r\n date: moment(),\r\n text: 'Today',\r\n dateString: moment().year() + \", \" + moment().month() + \", \" + moment().day()\r\n };\r\n mvm.calendarTomorrow = {\r\n date: moment(mvm.calendarToday.date).add(1, 'days'),\r\n text: moment(mvm.calendarToday.date).add(1, 'days').format('dddd'),\r\n dateString: moment(mvm.calendarToday.date).add(1, 'days').year() + \", \" + moment(mvm.calendarToday.date).add(1, 'days').month() + \", \" + moment(mvm.calendarToday.date).add(1, 'days').day()\r\n };\r\n mvm.calendarTomorrow2 = {\r\n date: moment(mvm.calendarToday.date).add(2, 'days'),\r\n text: moment(mvm.calendarToday.date).add(2, 'days').format('dddd'),\r\n dateString: moment(mvm.calendarToday.date).add(2, 'days').year() + \", \" + moment(mvm.calendarToday.date).add(2, 'days').month() + \", \" + moment(mvm.calendarToday.date).add(2, 'days').day()\r\n };\r\n\r\n _.each(updatedData, function(m) {\r\n m['currentShowtimes']['byFormat'] = {};\r\n m['currentShowtimes']['byCinema'] = {};\r\n m['currentShowtimes']['byFilm'] = {};\r\n\r\n m['currentShowtimes']['byFormat'] = _.groupBy(m.Showtime, 'FormatCode');\r\n m['currentShowtimes']['byCinema'] = _.groupBy(m.Showtime, function(x) { return mvm.cinemaKey[x.CinemaID].Title });\r\n m['currentShowtimes']['byFilm'] = _.groupBy(m.Showtime, function(x) { return mvm.filmKey[x.FilmID].Title; });\r\n\r\n //console.log('cinemas', m['currentShowtimes']['byCinema']);\r\n\r\n _.forOwn(m['currentShowtimes']['byCinema'], function(value, key) {\r\n m['currentShowtimes']['byCinema'][key]['Formats'] = _.groupBy(value, 'FormatCode');\r\n });\r\n\r\n _.forOwn(m['currentShowtimes']['byFilm'], function(value, key) {\r\n m['currentShowtimes']['byFilm'][key]['Formats'] = _.groupBy(value, 'FormatCode');\r\n });\r\n\r\n //overrite index values with only key/values\r\n var temp = {};\r\n temp['byFormat'] = m['currentShowtimes']['byFormat'];\r\n temp['byCinema'] = m['currentShowtimes']['byCinema'];\r\n temp['byFilm'] = m['currentShowtimes']['byFilm'];\r\n m['currentShowtimes'] = temp;\r\n\r\n var tempAry = [];\r\n var momentToday = moment();\r\n var counter = 0;\r\n _.each(mvm.dates, function(d) {\r\n\r\n var datetime = moment(d);\r\n var obj = {\r\n Text: moment(datetime).format(\"ddd M/D\"),\r\n Moment: datetime,\r\n ID: counter,\r\n StringDate: moment(datetime).format('YYYY-MM-DD')\r\n };\r\n\r\n var iscurrentDate = datetime.isSame(moment(), \"day\");\r\n if (iscurrentDate) {\r\n obj.Text = \"Today\";\r\n }\r\n var isTomorrowDate = datetime.isSame(moment().add(1, 'day'), \"day\");\r\n if (isTomorrowDate) {\r\n obj.Text = \"Tomorrow\";\r\n }\r\n\r\n if (moment(datetime).isBefore(moment(), 'day')) {\r\n //its an old date, don't show it\r\n } else {\r\n tempAry.push(obj);\r\n }\r\n counter++;\r\n //console.log(d, datetime);\r\n });\r\n\r\n //$scope.$evalAsync(function () {\r\n mvm.dateArray = tempAry;\r\n //});\r\n getQueryString = function() {\r\n var key = false,\r\n res = {},\r\n itm = null;\r\n // get the query string without the ?\r\n var qs = location.search.substring(1);\r\n // check for the key as an argument\r\n if (arguments.length > 0 && arguments[0].length > 1)\r\n key = arguments[0];\r\n // make a regex pattern to grab key/value\r\n var pattern = /([^&=]+)=([^&]*)/g;\r\n // loop the items in the query string, either\r\n // find a match to the argument, or build an object\r\n // with key/value pairs\r\n while (itm = pattern.exec(qs)) {\r\n if (key !== false && decodeURIComponent(itm[1]) === key)\r\n return decodeURIComponent(itm[2]);\r\n else if (key === false)\r\n res[decodeURIComponent(itm[1])] = decodeURIComponent(itm[2]);\r\n }\r\n\r\n return key === false ? res : null;\r\n }\r\n\r\n var dateparam = getQueryString(\"date\");\r\n var cinemaparam = getQueryString(\"cinema\");\r\n var formatparam = getQueryString(\"format\");\r\n\r\n if (dateparam) {\r\n var tempdate = moment(dateparam);\r\n if (tempdate && tempdate.isValid()) {\r\n //set calendar to this url param date\r\n $scope.setDate(tempdate.year(), tempdate.month(), tempdate.date());\r\n\r\n var dateindex = _.findIndex(mvm.dateArray, { StringDate: moment(tempdate).format('YYYY-MM-DD') });\r\n //var modifier = dateindex <= 4 ? 0 : dateindex - 3;\r\n //mvm.Datelimit = modifier;\r\n mvm.Datelimit = dateindex;\r\n //console.log('date param', moment(tempdate).format('YYYY-MM-DD'));\r\n }\r\n } else {\r\n if (mvm.dateArray && mvm.dateArray.length) {\r\n tempdate = _.get(mvm.dateArray, '[0].Moment');\r\n if (tempdate && tempdate.isValid()) {\r\n $scope.setDate(tempdate.year(), tempdate.month(), tempdate.date());\r\n \r\n //console.log('temp date', tempdate);\r\n dateindex = _.findIndex(mvm.dateArray, { StringDate: moment(tempdate).format('YYYY-MM-DD') });\r\n //var modifier = dateindex <= 4 ? 0 : dateindex - 3;\r\n //mvm.Datelimit = modifier;\r\n mvm.Datelimit = dateindex;\r\n }\r\n }\r\n }\r\n\r\n if (cinemaparam) {\r\n var cinema = decodeURIComponent(cinemaparam);\r\n mvm.filterByCinemaLocation = cinema;\r\n $(\"#share-film-cinema\").val(cinemaparam);\r\n //console.log('cinema param', cinemaparam);\r\n }\r\n\r\n if (formatparam) {\r\n var format = decodeURIComponent(formatparam);\r\n mvm.filterByMovieFormat = format;\r\n $(\"#share-film-format\").val(formatparam);\r\n //console.log('format param', formatparam);\r\n }\r\n //console.log('ary', mvm.dateArray);\r\n //console.log('current showtimes', m['currentShowtimes']);\r\n });\r\n\r\n handleSuccess(updatedData);\r\n }\r\n\r\n function publishTimeline() {\r\n\r\n //console.log('4');\r\n\r\n window.ggroups = TIMELINE;\r\n window.gitems = ITEMS;\r\n\r\n mvm.data = { groups: TIMELINE, items: ITEMS };\r\n\r\n var gstart = new Date(SELECTED_DATE);\r\n // gstart.setHours(6, 0, 0, 0);\r\n gstart.setHours(9, 0, 0, 0);\r\n gstart = moment(gstart);\r\n\r\n var gend = new Date(SELECTED_DATE);\r\n gend.setHours(23, 59, 59, 999);\r\n gend = moment(gend);\r\n\r\n mvm.options = {\r\n format: {\r\n minorLabels: function(date, scale, step) {\r\n return \"<strong>\" + moment(date).format('h a') + \"</strong>\";\r\n },\r\n majorLabels: function(date, scale, step) {\r\n return \"<strong>\" + moment(date).format('h a') + \"</strong>\";\r\n }\r\n },\r\n min: gstart,\r\n max: gend,\r\n orientation: {\r\n axis: \"both\"\r\n },\r\n timeAxis: {\r\n scale: 'hour'\r\n },\r\n zoomable: false,\r\n horizontalScroll: true,\r\n moveable: true,\r\n stack: true,\r\n showCurrentTime: false,\r\n showMajorLabels: false,\r\n showMinorLabels: true,\r\n autoResize: true,\r\n zoomMax: 28800000 // 8 hours in milliseconds\r\n };\r\n\r\n\r\n mvm.onSelect = function(items) {\r\n //console.log(arguments);\r\n // debugger;\r\n //console.log('select');\r\n };\r\n\r\n mvm.onClick = function(props) {\r\n props.event.stopPropagation();\r\n props.event.preventDefault();\r\n\r\n var ignoreClick = props['what'] === 'group-label' ? true : false;\r\n if (ignoreClick) {\r\n props.event.stopPropagation();\r\n props.event.preventDefault();\r\n }\r\n };\r\n\r\n mvm.onDoubleClick = function(props) {\r\n // debugger;\r\n //console.log('DoubleClick');\r\n };\r\n\r\n mvm.rightClick = function(props) {\r\n //console.log('Right click!');\r\n props.event.preventDefault();\r\n };\r\n\r\n mvm.onRangeChange = function(props) {\r\n //console.log('on range change');\r\n };\r\n\r\n mvm.onRangeChanged = function(props) {\r\n //console.log('on range changed');\r\n };\r\n mvm.events = {\r\n rangechange: mvm.onRangeChange,\r\n rangechanged: mvm.onRangeChanged,\r\n onload: mvm.onLoaded,\r\n select: mvm.onSelect,\r\n click: mvm.onClick,\r\n doubleClick: mvm.onDoubleClick,\r\n contextmenu: mvm.rightClick\r\n };\r\n\r\n mvm.selectedDate = SELECTED_DATE.format(\"MM/DD\");\r\n mvm.buildingTimeline = false;\r\n\r\n\r\n\r\n mvm.playingNow = function() {\r\n mvm.isComingSoon = false;\r\n mvm.isNowPlaying = true;\r\n //console.log('playing now');\r\n };\r\n\r\n mvm.comingSoon = function() {\r\n mvm.isNowPlaying = false;\r\n mvm.isComingSoon = true;\r\n //console.log('coming soon');\r\n };\r\n }\r\n //console.log('vis', vis);\r\n //console.log('mvm', mvm); \r\n\r\n\r\n }\r\n MovieController.$inject = [\"$scope\", \"$compile\", \"$timeout\", \"$http\", \"$q\"];\r\n angular\r\n .module(\"cstudioApp.controllers\")\r\n .controller(\"MovieController\", MovieController);\r\n})();\r\n\r\nangular\r\n .module(\"cstudioApp.controllers\")\r\n .filter('toArray', function() {\r\n return function(obj) {\r\n if (!(obj instanceof Object)) return obj;\r\n return _.map(obj, function(val, key) {\r\n return Object.defineProperty(val, '$key', { __proto__: null, value: key });\r\n });\r\n };\r\n });\r\n\r\nangular\r\n .module(\"cstudioApp.controllers\")\r\n .filter('unique', function() {\r\n return function(items, filterOn) {\r\n\r\n if (filterOn === false) {\r\n return items;\r\n }\r\n\r\n if ((filterOn || angular.isUndefined(filterOn)) && angular.isArray(items)) {\r\n var hashCheck = {},\r\n newItems = [];\r\n\r\n var extractValueToCompare = function(item) {\r\n if (angular.isObject(item) && angular.isString(filterOn)) {\r\n return item[filterOn];\r\n } else {\r\n return item;\r\n }\r\n };\r\n\r\n angular.forEach(items, function(item) {\r\n var valueToCheck, isDuplicate = false;\r\n\r\n for (var i = 0; i < newItems.length; i++) {\r\n if (angular.equals(extractValueToCompare(newItems[i]), extractValueToCompare(item))) {\r\n isDuplicate = true;\r\n break;\r\n }\r\n }\r\n if (!isDuplicate) {\r\n newItems.push(item);\r\n }\r\n\r\n });\r\n items = newItems;\r\n }\r\n return items;\r\n };\r\n });","(function() {\r\n function moviePosterInformation() {\r\n return {\r\n restrict: 'E',\r\n template: '<div ng-include=\"getTemplateUrl()\"></div>',\r\n //templateUrl: function (element, attrs) {\r\n // console.log(attrs['templateType']);\r\n // var url = \"\";\r\n\r\n // switch (attrs['templateType']) {\r\n // case 'movie-detail':\r\n // url = '/Assets/Templates/tmpl.moviePosterInformationMovieDetail.html';\r\n // break;\r\n // case 'location-detail':\r\n // url = '/Assets/Templates/tmpl.moviePosterInformationLocationDetail.html';\r\n // break;\r\n // default:\r\n // url = '/Assets/Templates/tmpl.moviePosterInformation.html';\r\n // break;\r\n // }\r\n // console.log('template: ' + url);\r\n // return url;\r\n //},\r\n //templateUrl: '/Assets/Templates/tmpl.moviePosterInformation.html',\r\n scope: {\r\n movie: \"=\",\r\n filteredShowtimes: '=totalShowings',\r\n ticketsOnSale: \"=\",\r\n movieFormatType: \"=\",\r\n alignText: \"@\",\r\n showImage: \"@\",\r\n cappedWidth: \"@\",\r\n cardType:\"@\",\r\n disabledShowtimesDir: \"=disabledshowtimes\"\r\n },\r\n link: function (scope, element, attrs) {\r\n //console.log('s',scope);\r\n scope.customClasses = \"\";\r\n //scope.filteredShowtimesLength = _.get(scope.$parent.filteredShowtimes,'length');\r\n if ('cardType' in attrs) {\r\n scope.cardType = attrs['alignText'];\r\n }\r\n\r\n if (scope.cappedWidth) {\r\n scope.customClasses+= \"capped-width\";\r\n }\r\n\r\n if ('alignText' in attrs) {\r\n scope.alignment = 'movie-text-align-'+attrs['alignText'];\r\n scope.customClasses+= \" \" + scope.alignment;\r\n }\r\n\r\n scope.titleText = function (show) {\r\n if (!scope.ticketsOnSale) {\r\n return 'Tickets coming soon';\r\n }\r\n if (show.ShowSoldOut) {\r\n return 'Tickets are sold out';\r\n }\r\n }\r\n\r\n\r\n scope.isDisabledShowtime2 = function(id, ids) { \r\n return (ids.indexOf(id) > -1);\r\n }\r\n\r\n //if (scope.filteredShowtimes) {\r\n // scope.showingCount = scope.filteredShowtimes.length;\r\n //}\r\n\r\n //if ($parent.filteredShowtimes) {\r\n // scope.showingCount = $parent.filteredShowtimes.length;\r\n //}\r\n //scope.$watch('$parent.filteredShowtimes', function (newItems, oldItems) {\r\n // console.log('l', _.get(newItems, 'length'));\r\n //});\r\n //scope.$watch('scope.filteredShowtimes', function (newItems, oldItems) {\r\n // console.log('2', _.get(newItems, 'length'));\r\n //});\r\n //scope.$watch('scope.$parent.filteredShowtimes', function (newItems, oldItems) {\r\n // console.log('3', _.get(newItems,'length'));\r\n //});\r\n //scope.$watch('$parent.filteredShowtimes', function (newItems, oldItems) {\r\n // console.log('2', newItems);\r\n //});\r\n\r\n\r\n scope.getTemplateUrl = function () {\r\n var url = \"\";\r\n\r\n switch (scope.cardType) {\r\n case 'movie-detail':\r\n url = '/Assets/Templates/tmpl.moviePosterInformationMovieDetail.html';\r\n break;\r\n case 'location-detail':\r\n url = '/Assets/Templates/tmpl.moviePosterInformationLocationDetail.html';\r\n break;\r\n case 'home-page':\r\n url = '/Assets/Templates/tmpl.moviePosterInformation.html';\r\n break;\r\n default:\r\n url = '/Assets/Templates/tmpl.moviePosterInformation.html';\r\n break;\r\n }\r\n //console.log('template: ' + url);\r\n return url;\r\n };\r\n }\r\n };\r\n }\r\n moviePosterInformation.$inject = [];\r\n angular\r\n .module(\"cstudioApp.directives\")\r\n .directive(\"moviePosterInformation\", moviePosterInformation);\r\n})();","function MovieRatingFormatter() {\r\n return function (rating) {\r\n return rating ? rating : \"NR\";\r\n };\r\n}\r\nMovieRatingFormatter.$inject = [];\r\nangular\r\n .module(\"cstudioApp.filters\")\r\n .filter(\"MovieRatingFormatter\", MovieRatingFormatter);\r\n","(function() {\r\n function RunTimeFormatter() {\r\n return function(runtime) {\r\n runtime = Number(runtime); \r\n var hours = Math.floor(runtime / 60);\r\n var minutes = runtime % 60;\r\n return hours + \"h \" + minutes + \"m\";\r\n };\r\n }\r\n RunTimeFormatter.$inject = [];\r\n angular\r\n .module(\"cstudioApp.filters\")\r\n .filter(\"RunTimeFormatter\", RunTimeFormatter);\r\n})();","(function () {\r\n function ShowTimeFormatter() {\r\n return function (showing) {\r\n var start = showing.StartTime;\r\n //var v = moment(start).tz('America/New_York').format('h:mm A');\r\n var v = moment(start, \"YYYY-MM-DDTHH:mm:ss\").format('h:mm A');\r\n /**\r\n console.log('-----testing times------');\r\n console.log('1', moment(start, \"YYYY-MM-DDTHH:mm:ss\").tz('America/New_York').format('MMMM Do @ h:mm a'));\r\n console.log('2', moment(start, \"YYYY-MM-DDTHH:mm:ssZ\").tz('America/New_York').format('MMMM Do @ h:mm a'));\r\n console.log('3', moment.utc(start, \"YYYY-MM-DDTHH:mm:ssZ\").tz('America/New_York').format('MMMM Do @ h:mm a'));\r\n console.log('4', moment.utc(start, \"YYYY-MM-DDTHH:mm:ssZ\").tz('America/New_York').format('MMMM Do @ h:mm a'));\r\n console.log('5', moment(start, \"YYYY-MM-DDTHH:mm:ss\").format('MMMM Do @ h:mm a'));\r\n console.log('6', moment(start, \"YYYY-MM-DDTHH:mm:ssZ\").format('MMMM Do @ h:mm a'));\r\n console.log('7', moment.utc(start, \"YYYY-MM-DDTHH:mm:ssZ\").format('MMMM Do @ h:mm a'));\r\n console.log('8', moment.utc(start, \"YYYY-MM-DDTHH:mm:ssZ\").format('MMMM Do @ h:mm a'));\r\n console.log('-----------');\r\n console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)\r\n **/\r\n //console.log(showing, start, v);\r\n return v;\r\n };\r\n }\r\n ShowTimeFormatter.$inject = [];\r\n angular\r\n .module(\"cstudioApp.filters\")\r\n .filter(\"ShowTimeFormatter\", ShowTimeFormatter);\r\n})();","\r\n(function() {\r\n //As an optional paramter to show Released or Releasing text in front of the date.\r\n //Example no text {{movie.OpeningDate | MonthDayFormatter}}\r\n //Example no text {{movie.OpeningDate | MonthDayFormatter: [false]}}\r\n //Example with text, {{movie.OpeningDate | MonthDayFormatter: [true]}}\r\n function MonthDayFormatter() {\r\n return function(datetime, includeText) {\r\n if (_.isNull(datetime) || _.isUndefined(datetime)) {\r\n return includeText ? \"Releasing: TBA\" : \"TBA\";\r\n } else {\r\n var releasingText = \"\";\r\n datetime = moment(datetime);\r\n if (includeText) {\r\n var today = moment();\r\n var dateDifference = datetime.diff(today);\r\n releasingText =\r\n dateDifference <= 0 ? \"Released: \" : \"Releasing: \";\r\n }\r\n return (releasingText) + moment(datetime).format(\"MMM. Do\");\r\n }\r\n };\r\n }\r\n MonthDayFormatter.$inject = [];\r\n angular\r\n .module(\"cstudioApp.filters\")\r\n .filter(\"MonthDayFormatter\", MonthDayFormatter);\r\n})();","(function() {\r\n function AudienceRatingFormatter() {\r\n var score = \"\";\r\n return function(rating) {\r\n if (_.isNull(rating) || _.isUndefined(rating)) {\r\n return score;\r\n } else {\r\n switch (true) {\r\n case (rating < 50):\r\n score = \"audiencebad.png\";\r\n break;\r\n case (rating >= 50):\r\n score = \"audiencegood.png\";\r\n break;\r\n }\r\n\r\n return score;\r\n }\r\n };\r\n }\r\n AudienceRatingFormatter.$inject = [];\r\n angular\r\n .module(\"cstudioApp.filters\")\r\n .filter(\"AudienceRatingFormatter\", AudienceRatingFormatter);\r\n})();","(function() {\r\n function RottenTomatoRatingFormatter() {\r\n var score = \"\";\r\n return function(rating) {\r\n if (_.isNull(rating) || _.isUndefined(rating)) {\r\n return score;\r\n } else {\r\n switch (true) {\r\n case (rating < 50):\r\n score = \"tomatobad.png\";\r\n break;\r\n case (rating >= 50 && rating < 90):\r\n score = \"tomatookay.png\";\r\n break;\r\n case (rating >= 90):\r\n score = \"tomatofresh.png\";\r\n break;\r\n }\r\n\r\n return score;\r\n }\r\n };\r\n }\r\n RottenTomatoRatingFormatter.$inject = [];\r\n angular\r\n .module(\"cstudioApp.filters\")\r\n .filter(\"RottenTomatoRatingFormatter\", RottenTomatoRatingFormatter);\r\n})();","(function() {\r\n function GenreFormatter(genreData) {\r\n return function(genreId) {\r\n var foundGenre = _.result(\r\n _.find(genreData, function(o) {\r\n return o.ID === genreId;\r\n }),\r\n \"Name\"\r\n );\r\n //console.log(foundGenre);\r\n return foundGenre;\r\n };\r\n }\r\n GenreFormatter.$inject = [\"genreData\"];\r\n angular\r\n .module(\"cstudioApp.filters\")\r\n .filter(\"GenreFormatter\", GenreFormatter);\r\n})();","(function() {\r\n angular.module(\"cstudioApp.services\").factory('genreData', function(){\r\n return [{\r\n ID: \"0000000001\",\r\n Name: \"Crime\",\r\n NameTranslations: [],\r\n Description: \"Crime\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"0000000002\",\r\n Name: \"Fantasy\",\r\n NameTranslations: [],\r\n Description: \"Fantasy\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"0000000003\",\r\n Name: \"History\",\r\n NameTranslations: [],\r\n Description: \"History\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000001\",\r\n Name: \"Comedy\",\r\n NameTranslations: [],\r\n Description: \"Comedy\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000002\",\r\n Name: \"Drama\",\r\n NameTranslations: [],\r\n Description: \"Drama\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000003\",\r\n Name: \"Horror\",\r\n NameTranslations: [],\r\n Description: \"Horror\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000004\",\r\n Name: \"Thriller\",\r\n NameTranslations: [],\r\n Description: \"Thriller\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000005\",\r\n Name: \"Documentary\",\r\n NameTranslations: [],\r\n Description: \"Documentary\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000006\",\r\n Name: \"Family\",\r\n NameTranslations: [],\r\n Description: \"Family/Children\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000007\",\r\n Name: \"Science Fiction\",\r\n NameTranslations: [],\r\n Description: \"Sci Fi/Fantasy\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000008\",\r\n Name: \"Childrens\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000009\",\r\n Name: \"Western\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000010\",\r\n Name: \"Action\",\r\n NameTranslations: [],\r\n Description: \"Action/Adventure\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000011\",\r\n Name: \"Adventure\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000012\",\r\n Name: \"Romance\",\r\n NameTranslations: [],\r\n Description: \"Romance\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000013\",\r\n Name: \"Musical\",\r\n NameTranslations: [],\r\n Description: \"Musical\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000014\",\r\n Name: \"War\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000015\",\r\n Name: \"Test\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000016\",\r\n Name: \"Outtakes Festival\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000017\",\r\n Name: \"Animated\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000018\",\r\n Name: \"Teen\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000019\",\r\n Name: \"Fantasy\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000020\",\r\n Name: \"Live Sport Broadcast\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000021\",\r\n Name: \"Indian\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000022\",\r\n Name: \"Festival\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000023\",\r\n Name: \"Foreign\",\r\n NameTranslations: [],\r\n Description: \"Foreign\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000024\",\r\n Name: \"Martial Arts\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000025\",\r\n Name: \"Concert\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000026\",\r\n Name: \"Biography\",\r\n NameTranslations: [],\r\n Description: \"Biography\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000027\",\r\n Name: \"Period Drama\",\r\n NameTranslations: [],\r\n Description: \"Period Drama\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000028\",\r\n Name: \"Cinema Asia\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000029\",\r\n Name: \"3D\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n },\r\n {\r\n ID: \"HO00000030\",\r\n Name: \"IMAX\",\r\n NameTranslations: [],\r\n Description: \"\",\r\n DescriptionTranslations: []\r\n }\r\n ];\r\n \r\n });\r\n})();\r\n\r\n\r\n// (function() {\r\n// angular.module(\"cstudioApp.services\").factory(\"genreData\", function() {\r\n// return [{\r\n// ID: \"0000000001\",\r\n// Name: \"Crime\",\r\n// NameTranslations: [],\r\n// Description: \"Crime\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"0000000002\",\r\n// Name: \"Fantasy\",\r\n// NameTranslations: [],\r\n// Description: \"Fantasy\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"0000000003\",\r\n// Name: \"History\",\r\n// NameTranslations: [],\r\n// Description: \"History\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000001\",\r\n// Name: \"Comedy\",\r\n// NameTranslations: [],\r\n// Description: \"Comedy\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000002\",\r\n// Name: \"Drama\",\r\n// NameTranslations: [],\r\n// Description: \"Drama\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000003\",\r\n// Name: \"Horror\",\r\n// NameTranslations: [],\r\n// Description: \"Horror\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000004\",\r\n// Name: \"Thriller\",\r\n// NameTranslations: [],\r\n// Description: \"Thriller\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000005\",\r\n// Name: \"Documentary\",\r\n// NameTranslations: [],\r\n// Description: \"Documentary\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000006\",\r\n// Name: \"Family\",\r\n// NameTranslations: [],\r\n// Description: \"Family/Children\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000007\",\r\n// Name: \"Science Fiction\",\r\n// NameTranslations: [],\r\n// Description: \"Sci Fi/Fantasy\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000008\",\r\n// Name: \"Childrens\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000009\",\r\n// Name: \"Western\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000010\",\r\n// Name: \"Action\",\r\n// NameTranslations: [],\r\n// Description: \"Action/Adventure\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000011\",\r\n// Name: \"Adventure\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000012\",\r\n// Name: \"Romance\",\r\n// NameTranslations: [],\r\n// Description: \"Romance\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000013\",\r\n// Name: \"Musical\",\r\n// NameTranslations: [],\r\n// Description: \"Musical\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000014\",\r\n// Name: \"War\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000015\",\r\n// Name: \"Test\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000016\",\r\n// Name: \"Outtakes Festival\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000017\",\r\n// Name: \"Animated\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000018\",\r\n// Name: \"Teen\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000019\",\r\n// Name: \"Fantasy\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000020\",\r\n// Name: \"Live Sport Broadcast\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000021\",\r\n// Name: \"Indian\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000022\",\r\n// Name: \"Festival\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000023\",\r\n// Name: \"Foreign\",\r\n// NameTranslations: [],\r\n// Description: \"Foreign\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000024\",\r\n// Name: \"Martial Arts\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000025\",\r\n// Name: \"Concert\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000026\",\r\n// Name: \"Biography\",\r\n// NameTranslations: [],\r\n// Description: \"Biography\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000027\",\r\n// Name: \"Period Drama\",\r\n// NameTranslations: [],\r\n// Description: \"Period Drama\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000028\",\r\n// Name: \"Cinema Asia\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000029\",\r\n// Name: \"3D\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// },\r\n// {\r\n// ID: \"HO00000030\",\r\n// Name: \"IMAX\",\r\n// NameTranslations: [],\r\n// Description: \"\",\r\n// DescriptionTranslations: []\r\n// }\r\n// ];\r\n// });\r\n// })();\r\n","(function() {\r\n angular.module(\"cstudioApp.services\").factory('rivertownData', function($http, $q) {\r\n\r\n function getAllData(callback) {\r\n var defer = $q.defer();\r\n var promises = [];\r\n\r\n promises.push(getRivertownData());\r\n promises.push(getCinemaSouthData());\r\n promises.push(getNorthData());\r\n promises.push(getWoodlandData());\r\n promises.push(getCarouselData());\r\n promises.push(getPlazaData());\r\n promises.push(getMeridianData());\r\n promises.push(getLansingData());\r\n promises.push(getBentonHarborData());\r\n promises.push(getMtPleasantData());\r\n promises.push(getCrossroadsData());\r\n\r\n $q.all(promises)\r\n .then(function (response) {\r\n\r\n var newArray = [];\r\n //console.log(response);\r\n _.each(response, function (r) {\r\n newArray.push(_.get(r, 'data'));\r\n });\r\n\r\n //console.log(newArray);\r\n //combine all cinema movie data\r\n var merged = [].concat.apply([], newArray);\r\n\r\n// console.log('merged',merged);\r\n\r\n //combine all Sessions by FilmId\r\n var combinedShowTimes = _(merged).flattenDeep().groupBy(\"FilmId\").mapValues(function (x) { _.flatMapDeep(x, function (y) { return y.Sessions }) }).map(function (v, k) { ({ FilmId: Number(k), Sessions: v }) }).value();\r\n //var movie1 = _.clone(combinedShowTimes[0], true); \r\n\r\n //remap movies to have all showtimes\r\n _.each(merged, function(movie) {\r\n var combinedSessions = _.find(combinedShowTimes, { 'FilmId': movie.FilmId });\r\n if (combinedSessions) {\r\n movie.Sessions = combinedSessions.Sessions;\r\n }\r\n });\r\n\r\n //remove duplicate movies\r\n var unique = _.uniqBy(merged, 'FilmId');\r\n //sort movies by name\r\n var sorted = _.sortBy(unique, 'Title');\r\n\r\n //Build out Session structure by Date\r\n _.each(sorted, function(movie) {\r\n movie.Sessions = _.groupBy(movie.Sessions, 'NewDate');\r\n _.each(movie.Sessions, function(session, key) {\r\n var combinedShowTimesV2 = _(session).flattenDeep().groupBy(\"NewDate\").mapValues(function (x) { _.flatMapDeep(x, function (y) { return y.Times; }) }).map(function (v, k) { ({ NewDate: k, Times: v }) }).value();\r\n movie.Sessions[key] = _.groupBy(combinedShowTimesV2[0].Times, 'CinemaName');\r\n });\r\n });\r\n\r\n //Build out Session structure by Cinema \r\n _.each(sorted, function(movie) { \r\n _.forOwn(movie.Sessions, function(value, key) { \r\n movie['Cinemas'] = movie['Cinemas'] || [];\r\n _.forOwn(value, function(value2, key2) { \r\n movie.Cinemas[key2] = movie.Cinemas[key2] || [];\r\n value2 = _.map(value2, function (v) {\r\n v.Day = key;\r\n var timestring = key + \" \" + v.StartTime;\r\n v['DateTime'] = moment(timestring, 'YYYY-MM-DD hh:mm A');\r\n //v['DateTime'] = moment(timestring).format();\r\n //v.DateTime = moment(timestring).format('YYYY-MM-DD hh:mm A')\r\n //console.log(\"DT\", key + \" \" + v.StartTime);\r\n return v;\r\n });\r\n movie.Cinemas[key2]= _.union(movie.Cinemas[key2], value2);\r\n });\r\n });\r\n });\r\n\r\n //console.log('m', movie1);\r\n //console.log('s', _.find(sorted, {'FilmId':movie1.FilmId})['Sessions']);\r\n //console.log('c', _.find(sorted, {'FilmId':movie1.FilmId})['Cinemas']);\r\n\r\n //console.log(sorted);\r\n \r\n window.AllMovieData = sorted;\r\n console.log(sorted);\r\n //sorted = _.get(sorted, '[0].data');\r\n\r\n callback(sorted);\r\n //only take first 20\r\n //callback(sorted.slice(0,20));\r\n });\r\n }\r\n\r\n function getBentonHarborData() {\r\n var deferred = $q.defer();\r\n //console.log('getting benton harbor data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7815', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getCrossroadsData() {\r\n var deferred = $q.defer();\r\n //console.log('getting crossroads data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7816', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getNorthData() {\r\n var deferred = $q.defer();\r\n //console.log('getting north data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7817', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getCinemaSouthData() {\r\n var deferred = $q.defer();\r\n //console.log('getting south data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7818', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getLansingData() {\r\n var deferred = $q.defer();\r\n //console.log('getting lansing data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7819', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getMtPleasantData() {\r\n var deferred = $q.defer();\r\n //console.log('getting mt pleasant data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7820', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getRivertownData() {\r\n var deferred = $q.defer();\r\n //console.log('getting rivertown data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7821', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getWoodlandData() {\r\n var deferred = $q.defer();\r\n //console.log('getting woodland data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7822', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getCarouselData() {\r\n var deferred = $q.defer();\r\n //console.log('getting carousel data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7823', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getPlazaData() {\r\n var deferred = $q.defer();\r\n //console.log('getting plaza data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7824', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n function getMeridianData() {\r\n var deferred = $q.defer();\r\n //console.log('getting meridian data');\r\n $http.get('https://moviecelebrationapi.peachdigital.com/movies/paginated/51/7825', { cache: true})\r\n .then(deferred.resolve);\r\n return deferred.promise;\r\n }\r\n\r\n return {\r\n getAllData: getAllData\r\n };\r\n });\r\n})();"]}