{"version":3,"sources":["_layouts/core/modules/moduleloader.js","_layouts/core/modules/moduleloader2.js","_layouts/core/modules/moduleloader3.js","_layouts/core/modules/module.js","_layouts/core/modules/activity.js","_layouts/core/modules/announcements.js","_layouts/core/modules/askmarketing.js","_layouts/core/modules/categorycontent.js","_layouts/core/modules/categorylinks.js","_layouts/core/modules/catlinks.js","_layouts/core/modules/chart.js","_layouts/core/modules/collaborationtopics.js","_layouts/core/modules/communications.js","_layouts/core/modules/contacts.js","_layouts/core/modules/created.js","_layouts/core/modules/duplicates.js","_layouts/core/modules/email.js","_layouts/core/modules/fastlanetilelist.js","_layouts/core/modules/favorites.js","_layouts/core/modules/favoriteslinks.js","_layouts/core/modules/featuredcontent.js","_layouts/core/modules/graph.js","_layouts/core/modules/html.js","_layouts/core/modules/iframe.js","_layouts/core/modules/image.js","_layouts/core/modules/imagelink.js","_layouts/core/modules/json.js","_layouts/core/modules/link.js","_layouts/core/modules/links.js","_layouts/core/modules/mybookmarks.js","_layouts/core/modules/mycreations.js","_layouts/core/modules/myfavorites.js","_layouts/core/modules/myuploads.js","_layouts/core/modules/nav.js","_layouts/core/modules/newcontent.js","_layouts/core/modules/opencat.js","_layouts/core/modules/openfile.js","_layouts/core/modules/opportunities.js","_layouts/core/modules/popular.js","_layouts/core/modules/popularcontentlinks.js","_layouts/core/modules/processed.js","_layouts/core/modules/recent.js","_layouts/core/modules/recentactivity.js","_layouts/core/modules/recentevents.js","_layouts/core/modules/recentfileslinks.js","_layouts/core/modules/recentgroupslinks.js","_layouts/core/modules/recentlyadded.js","_layouts/core/modules/reports.js","_layouts/core/modules/rss.js","_layouts/core/modules/search.js","_layouts/core/modules/tabs.js","_layouts/core/modules/tagcloud.js","_layouts/core/modules/tasks.js","_layouts/core/modules/thumbnail.js","_layouts/core/modules/uploads.js","_layouts/core/modules/userfilelist.js","_layouts/core/modules/welcome.js","_layouts/core/modules/wizards.js","_layouts/core/modules/workflow.js","_layouts/core/modules/youtube.js"],"names":["Librarian","ModuleLoader","Class","Implements","Options","Events","Binds","options","container","defaultHeight","containerEl","modules","initialize","this","setOptions","$","destroy","key","hasOwnProperty","empty","removeClass","loadModules","moduleList","idSuffix","length","addClass","i","mainEl","percentage","height","endsWith","parseInt","getHeight","moduleEl","rowHeight","minHeight","colCount","rowCount","extraClass","className","rowEl","Element","class","id","injectInside","j","getModuleEl","createModule","module","contEl","colSpan","fraction","reduceFraction","numerator","denominator","pureClass","colEl","gcd","a","b","getModuleHeight","margin","modHeight","rowSpan","typeOf","isHorizontal","bottomMargin","subModuleEl","self","subModules","marginBottom","k","colModEl","setTimeout","subModule","el","getStyle","toInt","pass","loadModule","moduleInfo","destroyWrapper","Object","merge","title","type","Modules","load","getModule","callModuleFunction","func","moduleName","ModuleLoaders","ModuleLoader2","width","maxWidth","moduleSpacing","modulePadding","moduleWidth","moduleHeight","eventHandler","layout","render","createTable","totalColumns","rows","forEach","row","renderRow","Math","max","createHeader","createSpacingRow","fireEvent","tableEl","setStyles","getSizeValue","setStyle","headerRow","injectTop","header","colspan","styles","padding","text","spacingRow","td","tr","createTr","renderCell","style","parseStyles","createTd","renderModule","rowspan","moduleWrapper","value","toString","contains","styleString","split","pair","parts","name","trim","ModuleLoader3","createDashboard","sections","section","renderSection","dashboardEl","inject","sectionEl","createSection","columns","column","renderColumn","columnEl","createColumn","renderItem","item","createItem","Module","subTitle","titleOnClick","classPrefix","onPreRender","onPreDestroy","wrapperEl","headerEl","titleEl","request","onLoaded","apply","cancel","elements","titleTemplate","getClassName","template","Handlebars","compile","html","Lang","getString","data-translation","addOnClick","contHeight","isNaN","suffix","Activity","Extends","count","updateInterval","slideDuration","slideDelay","slideInDifferential","eventId","logTypes","activityLogType","preview","download","search","openEmail","clickLink","shareEvent","listEl","filterEl","viewTypeEl","typeFilterEl","dateFilterEl","activityEls","eventDate","loadTimer","filterValue","currentView","delayCount","hasLoaded","filterText","parent","clearTimeout","viewTypes","push","createDropdown","showActivityView","updateList","bind","date","days","Date","setDate","getDate","hide","spellcheck","Utils","getElementValue","setElementValue","addEvent","set","e","Event","loadData","iconClass","baseId","items","langPrefix","onClick","textPrefix","viewsEl","viewEl","triggerEl","targetEl","menuId","mclosetime","mopen","mcancelclosetime","itemText","itemEl","triggerId","onClickFn","onDropDownItemClicked","get","viewType","otherText","remove","getEventActivities","encodeURIComponent","toISOString","onActivitiesLoaded","getEventActivityData","onPortalsLoaded","json","List","extractDateFromString","CurrentTime","isDifferential","activity","listItemEl","LogDate","prettyDate","toPrettyFormat","addUserElement","getActionText","LogType","addItemElement","Array","pushTop","slideItemIn","delay","dateEls","$$","removeCount","Fx","Slide","mode","duration","toggle","logType","sessionActivity","open","getPluralArgString","Total","userEl","DisplayName","client","Contacts","getContactFromJSON","toLowerKeys","win","ContactDetailWindow","getTime","index","contactDetailWindows","onCloseComplete","data","ContentName","ext","getExtension","toLowerCase","extensions","isVideo","isAudio","isImage","isWordFile","isExcelFile","ContentText","subLength","nameEl","substring","contenttype","ContentType","contentsubtype","ContentSubType","contentType","myFavorite","presid","ContentId","globalFavorite","groupid","fileid","filename","virtPresType","slideshow","sharedSlideshow","openSlideShow","PreviewWindow","openPreviewWindow","Subject","getArgString","SendDate","format","eventid","EventId","managerWindow","EventManagerWindow","show","EventDetailsWindow","grid","Count","Announcements","fileName","url","path","getMethodUrl","Request","JSON","onSuccess","Text","line","onFailure","send","AskMarketing","email","label","message","subject","inputHeight","inputWindow","InputWindow","buttonLabel","onSubmit","replaceAll","eventInfo","messagebody","exectime","emails","recipientInfo","Contact","addRecipient","sendEvent","notification","error","close","CategoryContent","catType","file","catPath","categories","flatten","action","useGetSendData","overlayClass","suppressFailure","displayFilename","detailed","showGetLink","showShareLink","stripExtension","onPostRender","useTitleMetadata","spinner","orderBy","reload","destroyWrapperVal","loadingImage","rootCat","method","view","specialCategories","GlobalFavorites","CatId","viewNameByType","Search","outputTypes","GROUPS","MYFAVORITE","CATEGORIES","FILES","elasticSearch","enableContent","includeView","onDataLoaded","customSendData","stringify","Base64","encode","Library","getSendData","cattype","getElements","catId","groups","files","SubCategories","Groups","Files","presentations","Presentations","concat","OpenCat","openCategory","Init","toggleSideColumn","sideColumn","Name","Title","moddate","getDateValue","LastModDate","formattedName","TreeView","getFormattedName","getNameWithoutExtension","ExtraFields","fCatId","CatID","GroupId","FileId","PresId","bookmarkEl","threeDotEl","menuEl","shareEl","nameWrapperEl","src","getContentTypeIcon","Bookmarks","getBookmarkId","bookmarkId","downloadEl","cartEl","getLink","menuRect","getBoundingClientRect","contRect","openAbove","bottom","toggleClass","openLeft","top","downloadData","onComplete","userCart","prepCartItem","success","notifyType","showCartNotification","updateAllCheckboxes","Cart","onChange","cartNotificationTypes","removed","isInCart","removeFromCart","addToCart","added","eventType","oneOff","sendWindow","EventSendWindow","sendFileWindow","tree","getTreeByType","prestype","getPath","loadLibraryTab","selectTreeNodeByPath","extrafields","Author","hasClass","deleteBookmark","addBookmark","Item","getItemTypeString","slidenumber","itemnumber","undefined","slideid","parentData","parentfields","addType","CategoryLinks","response","isSquare","events","click","event","viewAll","linkEl","filetypeextension","toUpperCase","tileList","openURLOnClick","openURLFile","clickHandler","replace","subcategories","treeView","slice","group","stopPropagation","Homepage","loadFromArray","pageheader","pageHeader","PageHeader","showHeaderMenu","CatLinks","slashIndex","lastIndexOf","catName","href","loadFolderByPath","Chart","chartName","chartConfig","postData","monthDateRange","chart","edate","sdate","rightNow","startTime","setMonth","getMonth","String","getFullYear","chartEl","uniqueID","grab","renderChart","post","srs","series","labels","cfg","FilePopularityConfig","ContentPopularityConfig","defaultConfig","pt","x","UTC","renderTo","yAxis","Highcharts","extend","credits","enabled","marginTop","marginLeft","marginRight","spacing","backgroundColor","Browser","ie8","fontFamily","borderBottom","color","xAxis","lineColor","lineWidth","tickWidth","minRange","minTickInterval","minorGridLineWidth","minorTickWidth","minorTickLength","minorTickInterval","startOnTick","endOnTick","overflow","formatter","dateFormat","textTransform","allowDecimals","min","gridLineColor","tooltip","useHTML","y","legend","colors","align","tickAmount","itemDistance","symbolRadius","itemStyle","CollaborationTopics","category","pageName","viewAllTitle","getTopics","topics","Nav","navigateToPage","getElement","window","location","hash","topic","dateString","categoryName","topicId","dateCreated","createdBy","displayName","Communications","gridWidth","gridHeight","datePickers","currentTab","contentUrl","getLayoutsPath","HTML","update","onLoad","fromDateEl","fromIconEl","toDateEl","toIconEl","setUpDatePicker2","applyFilters","gridPanel","loadGrid","resize","buttons","bclass","onclick","onGridTabClick","enableDrafts","unshift","omniGrid","columnModel","getColumnModel","getUrl","pagination","serverSort","filterHide","filterHideCls","filterSelectedCls","alternaterows","showHeader","sortHeader","resizeColumns","multipleSelection","perPage","includeTotal","resizable","onRowDblClick","setColumnModel","buttonObj","element","getEventUrl","getDraftsColumnModel","getScheduledColumnModel","getSentColumnModel","dataIndex","dataType","labelFunction","renderDateTimeString","renderRecipients","renderDateString","getPluralString","columnData","recipients","str","obj","target","startDate","endDate","filterKey","closeDatePickers","controlHeight","bodyHeight","controlEl","getWidth","setSize","archived","getEventRecipients","chevronEl","Email","Created","order","showDate","UserApproved","ImportDate","getDownloadUrl","Duplicates","toDay","fromDay","getDay","gridButtonClick","draw","model","bclassSent","bclassScheduled","accordion","accordionRenderer","renderDuplicates","sendEl","rowdata","setAttribute","sendSelected","recipient","recipCont","labelEl","checkEl","flags","checked","displayname","map","checkbox","refresh","filter","clearButton","buttonText","defaultText","defaultTextColor","textColor","questionContainerEl","buttonEl","onClearClick","onSubmitClicked","defaultValue","modified","FastLaneTileList","breadcrumb","prevFolderInfo","FastLane","removeEvents","startLoadingPhase","renderContent","pureElement","topFolder","folderClicked","rowElement","getParent","breadcrumbEl","pageheadercontainerEl","TileList","allowDrag","size","fastlane","defaultViewType","targetList","testParam","loadTopFolderAsDefault","selectedFolder","childNodes","manageBreadcrumb","LoadedContent","folderInfo","headerType","headerTypes","useLargePageNumber","allowCollapse","getPageHeaderMenuBar","endLoadingPhase","catid","addToBreadcrumb","renderBreadcrumb","clearBreadcrumb","crumb","onBreadcrumbClicked","loadGlobalFavorites","loadFolder","reset","tileListEl","Favorites","presentation","CreatedDate","getStandardContent","PresType","FavoritesLinks","FeaturedContent","recursive","showView","doNav","autoNavTime","slides","subHeader","navImages","navImageType","numberOfFiles","params","eventGroupOptions","eventGroupType","campaign","relatedContentOptions","fileId","contentFilter","tileListContEl","prevButtonEl","prevImg","nextButton","nextImg","homeScrollFx","homeTileList","homeScrollInterval","autoNavInterval","prevImgEl","nextButtonEl","nextImgEl","clearInterval","eventOptions","setupNavButtons","updateNavButtons","startAutoScroll","wrapperClass","isMainPage","Tween","link","property","loadComplete","onHashChange","getHash","getRequestOptions","ignoreFilter","flagClasses","getFlaggingClasses","len","fileInfo","expired","getExtensionFromData","pagecount","hasFakeSlides","eventGroup","maxRows","getNewestEventGroups","getPopularEventGroups","getFilesByMethod","getTopRated","getPopular","getContentTypeFromCategoryType","onRelatedContentLoaded","tiles","wrapper","getFlaggingLocation","flagging","showOnTileList","renderFlags","showMoreEl","showMoreElText","siblings","getAllNext","nextShowMore","getNext","tile","getLibraryPath","startScroll","stopScroll","right","doScroll","setInterval","rightButton","loop","left","scroll","rightBoundary","boundary","boundaryFn","getTileWidth","parentWidth","start","getChildren","properties","directions","styleName","styleVal","disabled","setButtonState","Graph","dataFile","graphType","chartLabel","googleChartsLibraryLoaded","loadScript","callback","headEl","document","getElementsByTagName","newScript","createElement","onload","appendChild","google","charts","packages","setOnLoadCallback","getChartData","XMLHttpRequest","onreadystatechange","content","readyState","status","getArrayFromCSV","parse","responseText","Number","visualization","DataTable","addColumn","addRows","drawChart","getChartOptions","fill","titleTextStyle","fontSize","fontName","bold","hAxis","textStyle","vAxis","is3D","graphTypes","piechart","PieChart","barchart","BarChart","columnchart","ColumnChart","chartOptions","chartConstructor","log","htmlFile","clickEnabled","popupHeight","editable","editor","Popup","useIframe","onLoadHtml","nodes","setHtml","isUserMemberOfGroup","setupEditor","tinyMCE","getTinyMCEOptions","plugins","toolbar","inline","setup","addTinyMCEButton","on","init","setupEditButtons","buttonCont","edit","save","enableEditing","disableEditing","iFrame","removePadding","args","language","iFrameEl","oldPadding","typeOptions","collaboration","desc","getAppPath","getUrlLibraryName","activityreports","salesreports","reportsdashboard","contentanalytics","learn","popupmanager","invitations","contentanalyticsdemo","portaltracker","portaltracker2","sessionId","dynamicdatamanager","pages","hashIndex","indexOf","baseUrl","toQueryString","magic","reportsSubTab","mainPadEl","loadIframe","getSrc","aria-label","attachEvent","onLoadIframe","addEventListener","css","onResize","sessionName","Image","imagePath","fromLibrary","alt","imageEl","focus","cursor","ImageLink","imageAlt","clickImage","linkText","onBeforeRenderItem","renderSubItem","nodeEl","bodyEl","Link","Links","links","keys","iconHTML","getSlideText","HTMLWindow","MyBookmarks","MyFiles","myFilesClicked","contentid","cartItem","lastmoddate","MyCreations","isMooTree","mypresClick","loadTabByName","MyFavorites","MyUploads","myUploadClick","loadWorkspaceTab","initializer","tab","isCollapsed","selectedEl","getTabByName","isLibrary","handleIconEl","columnToggle","NewContent","imageSize","showViewAll","dateField","catLink","viewAllLinkEl","info","getThumbnailUrl","description","linkHeight","treeview","showtree","treeViewType","console","openSidePanelOnPageClick","gFavTreeView","myFavTreeView","OpenFile","openFile","fvname","vname","contextInfo","getFileID","fileinfo","Opportunities","opportunityFilter","embedInModule","embedHeight","openTabOnClick","tabName","getDefaultOpportunityFilter","amount","stageType","crmStageType","active","orderByColumns","sortOrder","onHold","keyword","state","crmOpportunityState","dealStatus","startRow","viewName","fields","accountId","parentContEl","getCrmUrl","oppFilter","clone","opps","buildOpportunityItem","showNoOpp","opp","parentContainer","oppItemEl","oppItemName","accountName","oppItemScore","numStars","score","opportunityId","scoreContEl","border-color","getUrgencyColor","urgency","getScore","getAmountString","infoContEl","openProjectRoom","closedWon","closedLost","oppId","Popular","slide","PopularContentLinks","NumberOfDays","Category","ExcludeField","ExcludeValue","nameMeta","getCustomData","ContentLists","showPopularFiles","resultOptions","sendData","Fields","FilePath","StartDate","ExcludeFields","Processed","myProcView","MyProcessedView","addSpacer","sendEnabled","canShare","externalCrmEnabled","externalCrm","attachCreated","deleteEnabled","create","allowCreateDelete","addTitle","showTitle","Recent","showAuthor","showModDate","getNewestFiles","onRecentLoaded","getNewestGroups","importdate","getFileDownloadUrl","RecentActivity","dayRange","trackerTabNames","firstName","FirstName","lastName","LastName","atIndex","time","ActiveDate","LastSessionId","tabId","tabEl","RecentEvents","getArchivedUserEvents","onEventsLoaded","ExecTime","RecentFilesLinks","importDate","viewOption","excludeCategory","showNewestFiles","RecentGroupsLinks","maxResults","rootfiles","changeHash","ListView","prepTreeGrid","fileList","setData","RecentlyAdded","folderPath","Reports","subtabName","preventDefault","subtab","Rss","requiresAuthentication","username","password","showThumbnail","limit","customFormat","linkPrefix","feedData","entries","removeImages","rssHeading","dateText","authors","join","publishedDate","contentEl","advancedSearchText","searchButtonText","searchPlaceholder","customSearch","searchBoxEl","searchButtonEl","clearButtonEl","advancedSearchEl","buttonContEl","searchBoxWrapperEl","placeholder","onSearchBoxKeyDown","ElasticSearch","Autocomplete","createAutoCompleteElement","searchIcon","searchToolbarSubmit","onSearchClick","onAdvancedClick","keyCode","Tabs","tabWidth","tabHeight","tabsEl","tabs","contentWrapperEl","border-bottom","newTabs","tabPage","page","setUpTabs","onTabClicked","goToTab","MochaUI","initializeTabs","getPageModules","moduleLoader","TagCloud","methodOptions","onTagCloudLoaded","maxKeywordsSelected","svg","tagCloudMethods","getTopKeywordsForLibrary","all","getTopKeywordsForCategory","cid","getTopKeywordsForFile","fid","getTopKeywordsForSlide","sid","getOpportunityTopKeywords","crmType","getApiUrl","maxScore","tag","totalScore","d3","cloud","words","rotate","font","d","drawCloud","select","append","attr","selectAll","enter","onKeywordClicked","keywordEl","getAttribute","onKeyWordDeselected","onKeywordSelected","currentlySelected","each","classList","erase","keywordClassList","selectedKeywords","onKeywordDeselected","encodeQueryData","ret","Tasks","getDefaultResultOptions","crmId","opportunity","taskType","crmTaskType","task","parentId","statuses","today","setHours","tasks","buildTaskItem","showNoTask","day","month","oppName","itemContEl","taskId","dueDate","overDue","crmTaskStatus","complete","dateContEl","opportunityName","Thumbnail","caption","getFileInfo","onLoadData","imageWrapper","image","Uploads","UserUploads","UserFileList","countOptions","uploads","showDownload","showShare","onNameClicked","FileList","countContEl","onCountClicked","evt","startsWith","Welcome","Wizards","Workflow","showAddButton","showHistory","showToDo","isMetro","openWorkflow","onButtonClicked","workflow","groupNames","footerEl","onHistoryClicked","onToDoClicked","footerHeight","openWorkflowToDo","getOpenUserInstancesURL","requests","requestLinkEl","getDisplayName","onItemClicked","processname","YouTube","videoId","playlistId","player","YT","loadPlayer","loadAPI","videoContainer","Player","onReady","loadVideo","cueVideoById","cuePlaylist","listType","list","Asset","javascript","onYouTubeIframeAPIReady"],"mappings":"AAAAA,UAAAC,aAAA,IAAAC,MAAA,CACAC,WAAA,CAAAC,QAAAC,QACAC,MAAA,CAAA,cAAA,cAEAC,QAAA,CACAC,UAAA,KACAC,cAAA,KAGAC,YAAA,KAEAC,QAAA,GAEAC,WAAA,SAAAL,GACAM,KAAAC,WAAAP,GAEAM,KAAAN,QAAAC,YAGAK,KAAAH,YAAAK,EAAAF,KAAAN,QAAAC,aAGAQ,QAAA,WACA,IAAA,IAAAC,KAAAJ,KAAAF,QACAE,KAAAF,QAAAO,eAAAD,IAAAJ,KAAAF,QAAAM,IAGAJ,KAAAF,QAAAM,GAAAD,UAGAH,KAAAF,QAAA,GAEAE,KAAAH,cACAG,KAAAH,YAAAS,QACAN,KAAAH,YAAAU,YAAA,cAIAC,YAAA,SAAAC,EAAAZ,EAAAa,GACA,QAAA,IAAAD,GAAA,MAAAA,GAAA,GAAAA,EAAAE,SAGAd,EADAA,GACAG,KAAAH,YACAG,KAAAH,aAAA,MAEA,IAAAa,GAAA,MAAAA,IACAA,EAAA,IAEAb,EAAAS,QACAT,EAAAe,SAAA,YAGA,IAAA,IAAAC,EAAA,EAAAA,EAAAJ,EAAAE,OAAAE,IAEA,GAAA,MAAAJ,EAAAI,GAAAf,SAAA,GAAAW,EAAAI,GAAAf,QAAAa,OAAA,CAGA,IAEAG,EACAC,EAHAC,EAAAP,EAAAI,GAAAG,OACA,iBAAAA,GAAAA,EAAAC,SAAA,OACAH,EAAAZ,EAAA,aACAa,EAAAG,SAAAF,GAGAA,EAFAF,EAAAK,aAEAJ,EAAA,MAgBA,IAZA,IAiBAK,EAjBAC,EAAAL,GAAAhB,KAAAN,QAAAE,cACA0B,EAAAb,EAAAI,GAAAS,UACAxB,EAAAW,EAAAI,GAAAf,QACAyB,EAAAd,EAAAI,GAAAU,UAAAzB,EAAAa,OACAa,EAAAf,EAAAI,GAAAW,UAAA,EACAC,EAAAhB,EAAAI,GAAAa,WAAA,GACAC,EAAA,IAAAC,QAAA,MAAA,CACAC,MAAA,eAAAJ,EACAK,GAAA,gBAAAjB,EAAA,GAAAH,IACAqB,aAAAlC,GAGAmC,EAAA,EAAAA,EAAAlC,EAAAa,OAAAqB,IACAlC,EAAAkC,KAIAZ,EAAApB,KAAAiC,YAAAnC,EAAAkC,GAAAT,EAAAI,GAEA3B,KAAAkC,aAAApC,EAAAkC,GAAAZ,EAAAC,EAAAG,EAAAF,OAKAW,YAAA,SAAAE,EAAAZ,EAAAa,GACAC,EAAAF,EAAAE,SAAA,EAIAC,EAAAtC,KAAAuC,eAAAF,EAHAd,GAIAiB,EAAAF,EAAA,GACAG,EAAAH,EAAA,GAEAI,EAAA,UAAAF,EACA,EAAAC,IACAC,GAAA,IAAAD,GAGAE,EAAA,IAAAf,QAAA,MAAA,CAAAC,MAAAa,IAAAX,aAAAK,GAGA,OAFA,IAAAR,QAAA,MAAA,CAAAC,MAAA,mBAAAE,aAAAY,IAMAJ,eAAA,SAAAC,EAAAC,GACA,IAAAG,EAAA,SAAAC,EAAAC,GACA,OAAAA,EAAAF,EAAAE,EAAAD,EAAAC,GAAAD,GAKA,MAAA,CAAAL,GAFAI,EAAAA,EAAAJ,EAAAC,IAEAA,EAAAG,IAGAG,gBAAA,SAAAZ,EAAAd,EAAAG,EAAAwB,GACA,GAAA,iBAAA3B,EACA,OAAAA,EAEA,IAAA4B,EAAA5B,EACA6B,EAAAf,EAAAe,SAAA,EAQA,OAJAD,IAFAC,EADA,SAAAC,OAAAhB,EAAArC,SACAqC,EAAArC,QAAAa,OAEAuC,GAAA1B,GAIA0B,IADA1B,EAAA,GAAAA,EAAAwB,GACAA,GAAAE,EAAA,IAGAhB,aAAA,SAAAC,EAAAf,EAAAC,EAAAG,EAAAF,EAAA8B,EAAAC,GACA,GAAAlB,EAIA,GAAA,SAAAgB,OAAAhB,EAAArC,SAIA,IAFA,IASAwD,EAGAC,EAZAC,EAAArB,EAAArC,QACA2D,EAAA,EACAC,EAAA,EAAAA,EAAAF,EAAA7C,OAAA+C,IACAN,GACAhC,EAAAR,SAAA,YACA+C,EAAA3D,KAAAiC,YAAAuB,EAAAE,GAAAF,EAAA7C,OAAAS,GACApB,KAAAkC,aAAAsB,EAAAE,GAAAC,EAAAtC,EAAAG,EAAAF,GAAA,EAAA+B,KAGAC,EAAA,IAAA1B,QAAA,MAAA,CACAC,MAAA,sBACAE,aAAAX,GACAmC,EAAAvD,KAGA4D,WAAA,SAAAC,EAAAC,GAEA,GAAAL,IACAA,EAAAK,EAAAC,SAAA,gBAAAC,SAAA,GAGAT,EAAArB,aAAA2B,EAAAC,EAAAzC,EAAAG,EAAAF,GAAA,EAAAmC,IACAQ,KAAA,CAAAT,EAAAE,GAAAJ,IAAA,UAKA,CACA,IAAAL,EAAAjD,KAAA+C,gBAAAZ,EAAAd,EAAAG,EAAA6B,GAAA,GACArD,KAAAkE,WAAA/B,EAAAc,EAAA3B,EAAAF,GAAA,KAIA8C,WAAA,SAAAC,EAAAnD,EAAAM,EAAAc,EAAAgC,GACA1E,EAAA2E,OAAAC,MAAA,CACAtD,OAAAA,EACAM,UAAAA,EACAQ,GAAAqC,EAAArC,IACAqC,EAAAzE,SAGA,iBAAAyE,EAAAI,OAAA,UAAApB,OAAAgB,EAAAI,SACA7E,EAAA6E,MAAAJ,EAAAI,OAEA,QAAAJ,EAAAK,QAGArC,EAAA,IAAAhD,UAAAsF,QAAAN,EAAAK,MAAA9E,EAAA0C,EAAAgC,IACAM,OACA1E,KAAAF,QAAAqE,EAAArC,IAAAK,IAGAwC,UAAA,SAAAvE,GACA,OAAAJ,KAAAF,QAAAM,IAGAwE,mBAAA,SAAAC,GACA,IAAA,IAAAC,KAAA9E,KAAAF,QACAE,KAAAF,QAAAO,eAAAyE,MAGA3C,EAAAnC,KAAAF,QAAAgF,KACA,mBAAA3C,EAAA0C,IAGA1C,EAAA0C,SAKA1F,UAAA4F,cAAA,GACA5F,UAAAsF,QAAA,GCxNAtF,UAAA6F,cAAA,IAAA3F,MAAA,CACAC,WAAA,CAAAC,QAAAC,QACAC,MAAA,CAAA,SAAA,YAAA,aAAA,gBAEAC,QAAA,CACAC,UAAA,WACA4E,MAAA,KACAU,MAAA,KACAC,SAAA,KACAC,cAAA,KACAC,cAAA,KACAC,YAAA,KACAC,aAAA,MAGA5D,UAAA,cACA7B,YAAA,KAEAC,QAAA,GAEAyF,aAAA,KAEAxF,WAAA,SAAAL,GACAM,KAAAC,WAAAP,GAEAM,KAAAN,QAAAC,YAGAK,KAAAH,YAAAK,EAAAF,KAAAN,QAAAC,WACAK,KAAAuF,aAAA,IAAA/F,SAGAkF,KAAA,SAAAc,GACAxF,KAAAwF,OAAAA,EAEAxF,KAAAyF,UAGAA,OAAA,WACAzF,KAAAH,YAAAS,QACAN,KAAAH,YAAAU,YAAA,YAEAP,KAAA0F,cAEA,IAAAC,EAAA,EACApC,EAAAvD,KAEAA,KAAAwF,OAAAI,KAAAC,QAAA,SAAAC,GACAvE,EAAAgC,EAAAwC,UAAAD,GAEAH,EAAAK,KAAAC,IAAAN,EAAApE,KAGAvB,KAAAN,QAAA6E,OACAvE,KAAAkG,aAAAP,GAEA3F,KAAAmG,iBAAAR,GAEA3F,KAAAuF,aAAAa,UAAA,iBAGAV,YAAA,WACA1F,KAAAqG,QAAA,IAAAzE,QAAA,QAAA,CACAC,MAAA7B,KAAA0B,UAAA,WACAK,aAAA/B,KAAAH,aAEAG,KAAAqG,QAAAC,UAAA,CACArB,MAAAjF,KAAAuG,aAAAvG,KAAAN,QAAAuF,OACAC,SAAAlF,KAAAuG,aAAAvG,KAAAN,QAAAwF,YAGAlF,KAAAN,QAAAyF,gBACAnF,KAAAqG,QAAAG,SAAA,kBAAA,YACAxG,KAAAqG,QAAAG,SAAA,iBAAAxG,KAAAuG,aAAAvG,KAAAN,QAAAyF,kBAIAe,aAAA,SAAAP,GACA,IAAAc,EAAA,IAAA7E,QAAA,KAAA,CACAC,MAAA7B,KAAA0B,UAAA,gBACAgF,UAAA1G,KAAAqG,SAEAM,EAAA,IAAA/E,QAAA,KAAA,CACAC,MAAA7B,KAAA0B,UAAA,UACAkF,QAAAjB,EACAkB,OAAA,CACAC,QAAA9G,KAAAuG,aAAAvG,KAAAN,QAAA0F,kBAEArD,aAAA0E,GAEA,IAAA7E,QAAA,MAAA,CACAC,MAAA7B,KAAA0B,UAAA,SACAqF,KAAA/G,KAAAN,QAAA6E,QACAxC,aAAA4E,IAGAR,iBAAA,SAAAR,GAKA,IAJA,IAAAqB,EAAA,IAAApF,QAAA,KAAA,CACAC,MAAA7B,KAAA0B,UAAA,iBACAK,aAAA/B,KAAAqG,SAEAxF,EAAA,EAAAA,EAAA8E,EAAA9E,IAAA,CACA,IAKAoE,EALAgC,EAAA,IAAArF,QAAA,KAAA,CACAC,MAAA7B,KAAA0B,UAAA,UACAK,aAAAiF,GAEAhH,KAAAN,QAAA2F,cACAJ,EAAAjF,KAAAuG,aAAAvG,KAAAN,QAAA2F,aACA4B,EAAAT,SAAA,QAAAvB,GACAgC,EAAAT,SAAA,YAAAvB,GACAgC,EAAAT,SAAA,YAAAvB,MAKAc,UAAA,SAAAD,GACA,IAAAoB,EAAAlH,KAAAmH,SAAArB,GACAvE,EAAA,EACAgC,EAAAvD,KAQA,OANA8F,EAAAhG,QAAA+F,QAAA,SAAA1D,GACAZ,GAAAL,SAAAiB,EAAAE,UAAA,EAEAkB,EAAA6D,WAAAjF,EAAA+E,KAGA3F,GAGA4F,SAAA,SAAArB,GACA,IAAAoB,EAAA,IAAAtF,QAAA,KAAA,CACAC,MAAA7B,KAAA0B,UAAA,SACAK,aAAA/B,KAAAqG,SAEArF,EAAA8E,EAAA9E,QAAAhB,KAAAN,QAAA4F,aAUA,OATAtE,GACAkG,EAAAV,SAAA,SAAAxG,KAAAuG,aAAAvF,IAEA8E,EAAAuB,QACAR,EAAA7G,KAAAsH,YAAAxB,EAAAuB,OAEAH,EAAAZ,UAAAO,IAGAK,GAGAE,WAAA,SAAAjF,EAAA+E,GACAD,EAAAjH,KAAAuH,SAAApF,EAAA+E,GAEAlH,KAAAwH,aAAArF,EAAA8E,IAGAM,SAAA,SAAApF,EAAA+E,GACA,IAAA7E,EAAAnB,SAAAiB,EAAAE,UAAA,EACAa,EAAAhC,SAAAiB,EAAAe,UAAA,EACA+D,EAAA,IAAArF,QAAA,KAAA,CACAC,MAAA7B,KAAA0B,UAAA,QACAkF,QAAAvE,EACAoF,QAAAvE,IACAnB,aAAAmF,GAWA,OATAlH,KAAAN,QAAA0F,eACA6B,EAAAT,SAAA,UAAAxG,KAAAuG,aAAAvG,KAAAN,QAAA0F,gBAEAjD,EAAAkF,QACAR,EAAA7G,KAAAsH,YAAAnF,EAAAkF,OAEAJ,EAAAX,UAAAO,IAGAI,GAGAO,aAAA,SAAArD,EAAA8C,GACA,IAAAS,EAAA,IAAA9F,QAAA,MAAA,CACAiF,OAAA,CACA7F,OAAA,UAEAe,aAAAkF,GAEA,QAAA9C,EAAAK,MAAA,eAAAL,EAAAK,OAGA9E,EAAA2E,OAAAC,MAAA,CACAxC,GAAAqC,EAAArC,GACAyD,aAAAvF,KAAAuF,cACApB,EAAAzE,SAEAyE,EAAAI,QACA7E,EAAA6E,MAAAJ,EAAAI,QAEApC,EAAA,IAAAhD,UAAAsF,QAAAN,EAAAK,MAAA9E,EAAAgI,GAAA,IAEAvD,WAAAA,EACAhC,EAAAuC,SAGA6B,aAAA,SAAAoB,GACA,OAAAA,IAGAA,EAAAA,EAAAC,YAEAC,SAAA,MAGAF,EAAAE,SAAA,QACAF,GAAA,MAHAA,GALA,MAaAL,YAAA,SAAAQ,GACA,IAAAjB,EAAA,GAaA,OAXAiB,EAAAC,MAAA,KACAlC,QAAA,SAAAmC,GACA,IAAAC,EAAAD,EAAAD,MAAA,KAEAG,EAAAD,EAAA,GACAN,EAAAM,EAAA,GAEAC,GAAAP,IACAd,EAAAqB,EAAAC,QAAAR,EAAAQ,UAGAtB,KCnOA1H,UAAAiJ,cAAA,IAAA/I,MAAA,CACAC,WAAA,CAAAC,QAAAC,QACAC,MAAA,CAAA,SAAA,YAAA,aAAA,gBAEAC,QAAA,CACAC,UAAA,WACA4E,MAAA,KACAU,MAAA,KACAC,SAAA,KACAC,cAAA,KACAC,cAAA,KACAC,YAAA,KACAC,aAAA,MAGA5D,UAAA,cACA7B,YAAA,KAEAC,QAAA,GAEAyF,aAAA,KAEAxF,WAAA,SAAAL,GACAM,KAAAC,WAAAP,GAEAM,KAAAN,QAAAC,YAGAK,KAAAH,YAAAK,EAAAF,KAAAN,QAAAC,WACAK,KAAAuF,aAAA,IAAA/F,SAGAkF,KAAA,SAAAc,GACAxF,KAAAwF,OAAAA,EAEAxF,KAAAyF,UAGAA,OAAA,WACA,IAAAlC,EAAAvD,KAEAA,KAAAH,YAAAS,QACAN,KAAAH,YAAAU,YAAA,YAEAP,KAAAqI,kBAEArI,KAAAN,QAAA6E,OACAvE,KAAAkG,eAEAlG,KAAAwF,OAAA8C,SAAAzC,QAAA,SAAA0C,GACAhF,EAAAiF,cAAAD,MAIAF,gBAAA,WACArI,KAAAyI,YAAA,IAAA7G,QAAA,MAAA,CACAC,MAAA7B,KAAA0B,UAAA,eACAgH,OAAA1I,KAAAH,aAEAG,KAAAyI,YAAAnC,UAAA,CACArB,MAAAjF,KAAAuG,aAAAvG,KAAAN,QAAAuF,OACAC,SAAAlF,KAAAuG,aAAAvG,KAAAN,QAAAwF,aAMAgB,aAAA,WACA,IAAAS,EAAA,IAAA/E,QAAA,MAAA,CACAC,MAAA7B,KAAA0B,UAAA,YACAgH,OAAA1I,KAAAyI,aAEA,IAAA7G,QAAA,MAAA,CACAC,MAAA7B,KAAA0B,UAAA,SACAqF,KAAA/G,KAAAN,QAAA6E,QACAxC,aAAA4E,IAGA6B,cAAA,SAAAD,GACA,IAAAI,EAAA3I,KAAA4I,cAAAL,GACAhF,EAAAvD,KAEAuI,EAAAM,QAAAhD,QAAA,SAAAiD,GACAvF,EAAAwF,aAAAD,EAAAH,MAIAC,cAAA,SAAAL,GACA,IAAAI,EAAA,IAAA/G,QAAA,MAAA,CACAC,MAAA7B,KAAA0B,UAAA,aACAK,aAAA/B,KAAAyI,aAQA,OANAF,EAAAlB,QACAR,EAAA7G,KAAAsH,YAAAiB,EAAAlB,OAEAsB,EAAArC,UAAAO,IAGA8B,GAGAI,aAAA,SAAAD,EAAAH,GACA,IAAAK,EAAAhJ,KAAAiJ,aAAAH,EAAAH,GACApF,EAAAvD,KAEA8I,EAAAhJ,QAAA+F,QAAA,SAAA1D,GACAoB,EAAA2F,WAAA/G,EAAA6G,MAIAC,aAAA,SAAAH,EAAAH,GACAK,EAAA,IAAApH,QAAA,MAAA,CACAC,MAAA7B,KAAA0B,UAAA,YACAK,aAAA4G,GAQA,OANAG,EAAAzB,QACAR,EAAA7G,KAAAsH,YAAAwB,EAAAzB,OAEA2B,EAAA1C,UAAAO,IAGAmC,GAGAE,WAAA,SAAA/E,EAAA6E,GACAG,EAAAnJ,KAAAoJ,WAAAjF,EAAA6E,GAEAhJ,KAAAwH,aAAArD,EAAAgF,IAGAC,WAAA,SAAAjF,EAAA6E,GACAG,EAAA,IAAAvH,QAAA,MAAA,CACAC,MAAA7B,KAAA0B,UAAA,UACAK,aAAAiH,GAWA,OATAhJ,KAAAN,QAAA0F,eACA+D,EAAA3C,SAAA,UAAAxG,KAAAuG,aAAAvG,KAAAN,QAAA0F,gBAEAjB,EAAAkD,QACAR,EAAA7G,KAAAsH,YAAAnD,EAAAkD,OAEA8B,EAAA7C,UAAAO,IAGAsC,GAGA3B,aAAA,SAAArD,EAAAgF,GACA,IAAAzB,EAAA,IAAA9F,QAAA,MAAA,CACAiF,OAAA,CACA7F,OAAA,UAEAe,aAAAoH,GAEA,QAAAhF,EAAAK,MAAA,eAAAL,EAAAK,OAGAxD,EAAAmD,EAAAnD,QAAAhB,KAAAN,QAAA4F,aAEA5F,EAAA2E,OAAAC,MAAA,CACAxC,GAAAqC,EAAArC,GACAd,OAAAA,EACAuE,aAAAvF,KAAAuF,cACApB,EAAAzE,SAEAyE,EAAAI,QACA7E,EAAA6E,MAAAJ,EAAAI,QAEApC,EAAA,IAAAhD,UAAAsF,QAAAN,EAAAK,MAAA9E,EAAAgI,GAAA,IAEAvD,WAAAA,EACAhC,EAAAuC,SAGA6B,aAAA,SAAAoB,GACA,OAAAA,IAGAA,EAAAA,EAAAC,YAEAC,SAAA,MAGAF,EAAAE,SAAA,QACAF,GAAA,MAHAA,GALA,MAaAL,YAAA,SAAAQ,GACA,IAAAjB,EAAA,GAaA,OAXAiB,EAAAC,MAAA,KACAlC,QAAA,SAAAmC,GACA,IAAAC,EAAAD,EAAAD,MAAA,KAEAG,EAAAD,EAAA,GACAN,EAAAM,EAAA,GAEAC,GAAAP,IACAd,EAAAqB,EAAAC,QAAAR,EAAAQ,UAGAtB,KC3MA1H,UAAAsF,QAAA4E,OAAA,IAAAhK,MAAA,CACAC,WAAAC,QACAE,MAAA,CAAA,UAAA,QAEAC,QAAA,CACA6E,MAAA,KACA+E,SAAA,KACAC,aAAA,KACAC,YAAA,KACA5I,SAAA,KACAkB,GAAA,KACAd,OAAA,KACAM,UAAA,KACAmI,YAAA,KACAC,aAAA,MAGAC,UAAA,KACAC,SAAA,KACA/J,YAAA,KACAgK,QAAA,KAEAzF,gBAAA,EAEA0F,QAAA,KACAL,YAAA,KAEA1J,WAAA,SAAAL,EAAAiK,EAAAvF,EAAA2F,GACA/J,KAAAC,WAAAP,GACAM,KAAA2J,UAAAA,EACA3J,KAAAoE,iBAAAA,EACA2F,IAAA/J,KAAA+J,SAAAA,IAGA5J,QAAA,WACA,mBAAAH,KAAAN,QAAAgK,cACA1J,KAAAN,QAAAgK,aAAAM,MAAAhK,MAEAA,KAAA8J,UACA9J,KAAA8J,QAAAG,SACAjK,KAAA8J,QAAA,MAIA,IADA,IAAAI,EAAA,CAAAlK,KAAA4J,SAAA5J,KAAAH,aACAgB,EAAAqJ,EAAAvJ,OAAAE,KACAqJ,EAAArJ,KACAX,EAAAgK,EAAArJ,IAAAV,UACA+J,EAAArJ,GAAA,MAKAb,KAAA2J,WAAA3J,KAAAoE,iBACAlE,EAAAF,KAAA2J,WAAAxJ,UACAH,KAAA2J,UAAA,OAIAjF,KAAA,WACA,GAAA1E,KAAA2J,UAAA,CAGA,IAiBAQ,EAjBArI,EAAA9B,KAAAN,QAAAoC,GACAyC,EAAAvE,KAAAN,QAAA6E,MACA+E,EAAAtJ,KAAAN,QAAA4J,SAwEA,GAtEAtJ,KAAA2J,UAAArJ,QACAN,KAAA2J,UAAA/I,SAAAZ,KAAAoK,aAAA,YAEApK,KAAAN,QAAAkB,UACAZ,KAAA2J,UAAA/I,SAAAZ,KAAAN,QAAAkB,UAEAZ,KAAA8J,UACA9J,KAAA8J,QAAAG,SACAjK,KAAA8J,QAAA,MAGA,MAAAvF,IACA,UAAApB,OAAAoB,IAAAA,EAAA8F,WACAF,EAAAG,WAAAC,QAAAhG,EAAA8F,UACA9F,EAAAvE,KAAAN,QAAA6E,MAAA4F,EAAA5F,IAGA,iBAAAA,GAAA,EAAAA,EAAA5D,SACAX,KAAA4J,SAAA,IAAAhI,QAAA,MAAA,CACAC,MAAA7B,KAAAoK,aAAA,YACArI,aAAA/B,KAAA2J,WAEA3J,KAAA6J,QAAA,IAAAjI,QAAA,OAAA,CACA4I,KAAArL,UAAAsL,KAAAC,UAAAnG,GACAoG,mBAAApG,EACA1C,MAAA7B,KAAAoK,aAAA,iBACArI,aAAA/B,KAAA4J,WAGA,OAAArF,GAAA,mBAAAgF,eACAvJ,KAAA6J,QAAAe,WAAArB,cACAvJ,KAAA6J,QAAAjJ,SAAA,eAGA0I,GACA,iBAAAA,GAAA,EAAAA,EAAA3I,QACA,IAAAiB,QAAA,OAAA,CACA4I,KAAArL,UAAAsL,KAAAC,UAAApB,GACAzH,MAAA7B,KAAAoK,aAAA,gBACArI,aAAA,IAAAH,QAAA,MAAA,CACAC,MAAA7B,KAAAoK,aAAA,wBACArI,aAAA/B,KAAA4J,YAKA5J,KAAAH,YAAA,IAAA+B,QAAA,MAAA,CACAC,MAAA7B,KAAAoK,aAAA,eACArI,aAAA/B,KAAA2J,WAGA,iBAAA7H,IACA9B,KAAAH,YAAAiC,GAAA,UAAAA,EAEA,iBAAA9B,KAAA2J,UAAA7H,IAAA,GAAA9B,KAAA2J,UAAA7H,GAAAnB,SACAX,KAAA2J,UAAA7H,GAAA,UAAAA,EAAA,YAEA9B,KAAA4J,WACA5J,KAAA4J,SAAA9H,GAAA,UAAAA,EAAA,YAIA,mBAAA9B,KAAAyJ,aACAzJ,KAAAyJ,YAAAO,MAAAhK,MACA,mBAAAA,KAAAN,QAAA+J,aACAzJ,KAAAN,QAAA+J,YAAAO,MAAAhK,MAEA,iBAAAA,KAAAN,QAAA4B,WACAtB,KAAAH,YAAA2G,SAAA,YAAAxG,KAAAN,QAAA4B,UAAA,MAEA,iBAAAtB,KAAAN,QAAAsB,OACAhB,KAAAH,YAAA2G,SAAA,SAAAxG,KAAAN,QAAAsB,YACA,CAMA6J,GALA7K,KAAAN,QAAAsB,QAAAhB,KAAA2J,UAAAxI,cAIAnB,KAAA4J,SAAA5J,KAAA4J,SAAAzI,YAAA,GAIA,GAAA2J,MAAAD,GACA,OAEA,EAAAA,GACA7K,KAAAH,YAAA2G,SAAA,SAAAqE,EAAA,MAEA7K,KAAA2J,UAAAnD,SAAA,SAAAxG,KAAAN,QAAAsB,OAAA,MAIAhB,KAAA+J,UAAA/J,KAAA+J,aAGAK,aAAA,SAAAW,GACA,IAAArJ,EAAA,WAAAqJ,EAKA,OAHA/K,KAAAN,QAAA8J,cACA9H,GAAA,IAAA1B,KAAAN,QAAA8J,YAAAuB,GAEArJ,KCtKAvC,UAAAsF,QAAAuG,SAAA,IAAA3L,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,WAAA,qBAAA,kBACA,cAAA,mBAAA,cAEAC,QAAA,CACA8J,YAAA,oBACA0B,MAAA,GACAC,eAAA,IACAC,cAAA,KACAC,WAAA,IACAC,qBAAA,EACAC,QAAA,KACAhH,MAAA,aACAiH,SAAA,CACArM,UAAAsM,gBAAAC,QACAvM,UAAAsM,gBAAAE,SACAxM,UAAAsM,gBAAAG,OACAzM,UAAAsM,gBAAAI,UACA1M,UAAAsM,gBAAAK,UACA3M,UAAAsM,gBAAAM,aAIAC,OAAA,KACAC,SAAA,KACAC,WAAA,KACAC,aAAA,KACAC,aAAA,KACAC,YAAA,GAEAC,UAAA,KACAC,UAAA,KAEAC,YAAA,KACAf,gBAAA,KAIAgB,YAAA,SACAC,WAAA,EAEAC,WAAA,EACAC,WAAA,KAEA7M,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GAEA,MAAAM,KAAAN,QAAA6L,QACAvL,KAAA4M,WAAA,kCAEA5M,KAAA4M,WAAA,0CAEA5M,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAxJ,QAAA,WACA,IAAA,IAAAU,EAAAb,KAAAqM,YAAA1L,OAAAE,KACAb,KAAAqM,YAAAxL,KACAX,EAAAF,KAAAqM,YAAAxL,IAAAV,UACAH,KAAAqM,YAAAxL,GAAA,MAIAb,KAAAuM,YACAO,aAAA9M,KAAAuM,WACAvM,KAAAuM,UAAA,MAIA,IADA,IAAArC,EAAA,CAAAlK,KAAAgM,OAAAhM,KAAAiM,SAAAjM,KAAAkM,WAAAlM,KAAAmM,aAAAnM,KAAAoM,cACAvL,EAAAqJ,EAAAvJ,OAAAE,KACAqJ,EAAArJ,KACAX,EAAAgK,EAAArJ,IAAAV,UACA+J,EAAArJ,GAAA,MAIAb,KAAAsM,UAAA,MAGA5H,KAAA,WACA,IAYAqI,EAZA/M,KAAA2J,YAGA3J,KAAA6M,SAEA7M,KAAAgM,OAAA,IAAApK,QAAA,KAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzH,aAAA/B,KAAAH,aAEAG,KAAA4J,SAAAtJ,QAGAyM,EAAA,CAAA,UACA,MAAA/M,KAAAN,QAAA6L,SACAwB,EAAAC,KAAA,UAIAhN,KAAAkM,WAAAlM,KAAAiN,eAAA,oBAAAjN,KAAAN,QAAAoC,GAAA,QAAAiL,EAAA,yBAAA/M,KAAAkN,kBAKAlN,KAAAmM,aAAAnM,KAAAiN,eAAA,sBAAAjN,KAAAN,QAAAoC,GAAA,YAFA,CAAA,MAAA,YAAA,YAAA,WAAA,cAEA,2BAAA,SAAA0C,GACAxE,KAAAyL,gBAAAtM,UAAAsM,gBAAAjH,GACAxE,KAAAsM,UAAA,KACAtM,KAAAmN,cACAC,KAAApN,MAAAb,UAAAsL,KAAAC,UAAA,mCAKA1K,KAAAoM,aAAApM,KAAAiN,eAAA,sBAAAjN,KAAAN,QAAAoC,GAAA,QAFA,CAAA,MAAA,IAAA,KAAA,MAEA,gCAAA,SAAAuL,GACAC,EAAAD,EAAArJ,QACA8G,MAAAwC,GACAtN,KAAAsM,UAAA,MAEAtM,KAAAsM,UAAA,IAAAiB,KACAvN,KAAAsM,UAAAkB,QAAAxN,KAAAsM,UAAAmB,UAAAH,IAGAtN,KAAAmN,cACAC,KAAApN,MAAAb,UAAAsL,KAAAC,UAAA,mCACA1K,KAAAoM,aAAAsB,OAGA1N,KAAAiM,SAAA,IAAArK,QAAA,mBAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACA7B,MAAAxI,UAAAsL,KAAAC,UAAA1K,KAAA4M,YACAe,WAAA,SACA5L,aAAA/B,KAAA4J,UAGA5J,KAAAiM,SAAArB,WAAA,WACAzL,UAAAyO,MAAAC,gBAAA7N,KAAAiM,YACA9M,UAAAsL,KAAAC,UAAA1K,KAAA4M,aACAzN,UAAAyO,MAAAE,gBAAA9N,KAAAiM,SAAA,KACAjM,MAEAA,KAAAiM,SAAA8B,SAAA,OAAA,WACA,IAAApG,EAAAxI,UAAAyO,MAAAC,gBAAA7N,KAAAiM,UACAtE,GAAA,GAAAA,EAAAhH,OAKAX,KAAAwM,YAAA7E,GAJA3H,KAAAiM,SAAA+B,IAAA,OAAA7O,UAAAsL,KAAAC,UAAA1K,KAAA4M,aACA5M,KAAAwM,YAAA,OAIAY,KAAApN,OAEAA,KAAAiM,SAAA8B,SAAA,UAAA,SAAAE,GAEA,UADA,IAAAC,MAAAD,GACA7N,MACAJ,KAAAwM,YAAArN,UAAAyO,MAAAC,gBAAA7N,KAAAiM,UACAjM,KAAAsM,UAAA,KACAtM,KAAAmN,eAEAC,KAAApN,OAEA,IAAA4B,QAAA,qBAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,uBACA7B,MAAAxI,UAAAsL,KAAAC,UAAA,QACA3I,aAAA/B,KAAA4J,UAAAgB,WAAA,WACA5K,KAAAsM,UAAA,KACAtM,KAAAmN,cACAnN,MAEAA,KAAAmO,aAGAlB,eAAA,SAAAmB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACA,IAAAC,EAAA,IAAA9M,QAAA,KAAA,CACAC,MAAA,SACAE,aAAA/B,KAAA4J,UACA+E,EAAA,IAAA/M,QAAA,MAAAG,aAAA2M,GACAE,EAAA,IAAAhN,QAAA,IAAA,CACAC,MAAAuM,EACAtM,GAAAuM,EAAA,YACAtM,aAAA4M,GACAE,EAAA,IAAAjN,QAAA,MAAA,CACAE,GAAAuM,EAAA,SACAtM,aAAA4M,GAEAC,EAAAE,OAAAD,EAAA/M,GACA8M,EAAAb,SAAA,WAAAgB,YAAAhB,SAAA,YAAA,WACAiB,MAAAhP,KAAA8O,UAGAD,EAAAd,SAAA,YAAAkB,kBAAAlB,SAAA,WAAAgB,YAAAhB,SAAA,OAAAgB,YAEA,IAAA,IAAAlO,EAAA,EAAAA,EAAAyN,EAAA3N,OAAAE,IAAA,CACA,IAAAqO,EAAA/P,UAAAsL,KAAAC,WAAA6D,GAAA,IAAAD,EAAAzN,IACA,GAAAA,GACA1B,UAAAyO,MAAAE,gBAAAc,GAAAH,GAAA,IAAAS,GAEAC,EAAA,IAAAvN,QAAA,IAAA,CACAmF,KAAAmI,IACAnN,aAAA8M,GAEAM,EAAAV,WAAAA,EACAU,EAAAC,UAAAR,EAAA9M,GACAqN,EAAAE,UAAAb,EACAW,EAAAxH,MAAA2G,EAAAzN,GACAsO,EAAAvE,WAAA5K,KAAAsP,sBAAAH,GAGA,OAAAT,GAGAY,sBAAA,WACA,mBAAAtP,KAAAqP,WACArP,KAAAqP,UAAArP,KAAA2H,OAEA,IAAAiH,EAAA1O,EAAAF,KAAAoP,WACAR,GAGAzP,UAAAyO,MAAAE,gBAAAc,GAAA5O,KAAAyO,YAAA,IAAAzO,KAAAuP,IAAA,UAGArC,iBAAA,SAAAsC,GACAxP,KAAAyM,aAAA+C,IAGAxP,KAAAmM,aAAA,UAAAqD,EAAA,OAAA,UACAxP,KAAAoM,aAAA,UAAAoD,EAAA,OAAA,UACAxP,KAAAgM,OAAA1L,QACAN,KAAAyL,gBAAA,KACAzL,KAAAsM,UAAA,KACAtM,KAAAyM,YAAA+C,EACAxP,KAAA4M,WAAA,UAAA4C,EAAA,MAAAxP,KAAAN,QAAA6L,QAAA,kCAAA,0CAAA,yCACAkE,EAAA,UAAAD,EAAA,yCAAA,MAAAxP,KAAAN,QAAA6L,QAAA,kCAAA,0CAEApM,UAAAyO,MAAAC,gBAAA7N,KAAAiM,YACA9M,UAAAsL,KAAAC,UAAA+E,IACAzP,KAAAiM,SAAA+B,IAAA,OAAA7O,UAAAsL,KAAAC,UAAA1K,KAAA4M,aAEA5M,KAAAmN,eAGAA,WAAA,WACAnN,KAAAgM,OAAA1L,QAEA,IAAA,IAAAO,EAAAb,KAAAqM,YAAA1L,OAAAE,KACAb,KAAAqM,YAAAxL,KACAX,EAAAF,KAAAqM,YAAAxL,IAAAV,UACAH,KAAAqM,YAAAxL,GAAA,KACAb,KAAAqM,YAAAqD,OAAA7O,IAIAb,KAAAmO,YAGAA,SAAA,WACAnO,KAAAuM,YACAO,aAAA9M,KAAAuM,WACAvM,KAAAuM,UAAA,MAIA,UAAAvM,KAAAyM,YACAzM,KAAA8J,QAAA3K,UAAAK,OAAAmQ,mBAAA3P,KAAAN,QAAA6L,QAAAvL,KAAAsM,UAAAsD,mBAAA5P,KAAAsM,UAAAuD,eAAA,KAAA,KAAA7P,KAAAN,QAAAwL,MAAAlL,KAAAwM,YAAAxM,KAAAyL,iBAAAzL,KAAAN,QAAA8L,SAAA,QAAAxL,KAAA8P,oBAGA9P,KAAA8J,QAAA3K,UAAAK,OAAAuQ,qBAAA/P,KAAAsM,UAAAsD,mBAAA5P,KAAAsM,UAAAuD,eAAA,KAAA,KAAA7P,KAAAN,QAAAwL,MAAAlL,KAAAwM,YAAA,QAAAxM,KAAAgQ,kBAGAF,mBAAA,SAAAG,GAGA,GAFAjQ,KAAAuM,UAAA3I,WAAA5D,KAAAmO,SAAAf,KAAApN,MAAAA,KAAAN,QAAAyL,gBAEA8E,GAAAA,EAAAC,KAAA,CAIAlQ,KAAAsM,UAAAnN,UAAAyO,MAAAuC,sBAAAF,EAAAG,aAKA,IAHA,IAAAC,EAAA,EAAArQ,KAAAqM,YAAA1L,OAGAE,EAAAoP,EAAAC,KAAAvP,OAAAE,KAAA,CACA,IAAAyP,EAAAL,EAAAC,KAAArP,GACA0P,EAAA,IAAA3O,QAAA,KAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SAEA6D,EAAAlO,UAAAyO,MAAAuC,sBAAAG,EAAAE,SACAC,EAAApD,EAAAqD,eAAA1Q,KAAAsM,WAEA,IAAA1K,QAAA,OAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,sBACAzH,aAAAwO,GAEA,IAAA3O,QAAA,OAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,OACAzC,KAAA0J,IACA1O,aAAAwO,GACAlD,KAAAA,EAEArN,KAAA2Q,eAAAL,EAAAC,GACA,IAAA3O,QAAA,OAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzC,KAAA/G,KAAA4Q,cAAAN,EAAAO,WACA9O,aAAAwO,GACAvQ,KAAA8Q,eAAAR,EAAAC,GAEAvQ,KAAAqM,YAAA0E,MAAAC,QAAAhR,KAAAqM,YAAAkE,GAGAF,GAAArQ,KAAAN,QAAA4L,oBACAzK,GAAAoP,EAAAC,KAAAvP,OAAA,EACAX,KAAAiR,YAAAV,IAEAvQ,KAAA0M,aACA1M,KAAAiR,YAAAC,MAAAlR,KAAAN,QAAA2L,WAAArL,KAAA0M,WAAA1M,KAAA,CAAAuQ,KAIAA,EAAA7J,UAAA1G,KAAAgM,QAGA,GAAAhM,KAAA2M,UAKA,IADA,IAAAwE,EAAAC,GAAA,KAAApR,KAAAN,QAAA8J,aAAA,IAAA,QACA3I,EAAAsQ,EAAAxQ,OAAAE,KACAsQ,EAAAtQ,IAAAsQ,EAAAtQ,GAAAwM,MACAlO,UAAAyO,MAAAE,gBAAAqD,EAAAtQ,GAAAsQ,EAAAtQ,GAAAwM,KAAAqD,uBANA1Q,KAAA2M,WAAA,EAWA,IAAA0E,EAAArR,KAAAqM,YAAA1L,OAAAX,KAAAN,QAAAwL,MAEA,KAAAmG,EAAA,GAAA,CAIA,IAAAxQ,EAAAb,KAAAqM,YAAA1L,OAAAE,KAAAwQ,KACArR,KAAAqM,YAAAxL,IACAX,EAAAF,KAAAqM,YAAAxL,IAAAV,UAIAH,KAAAqM,YAAAqD,OAAA1P,KAAAN,QAAAwL,MAAAlL,KAAAqM,YAAA1L,WAGAsQ,YAAA,SAAAV,GACAA,EAAA7J,UAAA1G,KAAAgM,QAEA,EAAAhM,KAAA0M,YACA1M,KAAA0M,aAEA,IAAA4E,GAAAC,MAAAhB,EAAA,CACAiB,KAAA,aACAC,SAAAzR,KAAAN,QAAA0L,gBACAsC,OAAAgE,UAGAd,cAAA,SAAAe,GACA,OAAAA,GACA,KAAAxS,UAAAsM,gBAAAC,QACA,OAAAvM,UAAAsL,KAAAC,UAAA,oBACA,KAAAvL,UAAAsM,gBAAAE,SACA,OAAAxM,UAAAsL,KAAAC,UAAA,qBACA,KAAAvL,UAAAsM,gBAAAG,OACA,OAAAzM,UAAAsL,KAAAC,UAAA,mBACA,KAAAvL,UAAAsM,gBAAAmG,gBACA,OAAAzS,UAAAsL,KAAAC,UAAA,oBACA,KAAAvL,UAAAsM,gBAAAoG,KACA,OAAA1S,UAAAsL,KAAAC,UAAA,iBACA,KAAAvL,UAAAsM,gBAAAI,UACA,OAAA1M,UAAAsL,KAAAC,UAAA,sBACA,KAAAvL,UAAAsM,gBAAAK,UACA,OAAA3M,UAAAsL,KAAAC,UAAA,kBACA,KAAAvL,UAAAsM,gBAAAM,WACA,OAAA5M,UAAAsL,KAAAC,UAAA,kBAGA,MAAA,IAGAsF,gBAAA,SAAAC,GAGA,GAFAjQ,KAAAuM,UAAA3I,WAAA5D,KAAAmO,SAAAf,KAAApN,MAAAA,KAAAN,QAAAyL,gBAEA8E,EAAA,CAGAjQ,KAAAgM,OAAA1L,QAEA,IAAA,IAAAO,EAAA,EAAAA,EAAAoP,EAAAtP,OAAAE,IAAA,CACA,IAAAyP,EAAAL,EAAApP,GACA0P,EAAA,IAAA3O,QAAA,KAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzH,aAAA/B,KAAAgM,QAEA,IAAApK,QAAA,OAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,oBACAzH,aAAAwO,GACA,IAAA3O,QAAA,OAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,QACAzC,KAAA5H,UAAAsL,KAAAqH,mBAAA,yBAAAxB,EAAAyB,MAAA,CAAAzB,EAAAyB,UACAhQ,aAAAwO,GAEAvQ,KAAA8Q,eAAAR,EAAAC,GAEAvQ,KAAAqM,YAAA0E,MAAAC,QAAAhR,KAAAqM,YAAAkE,MAIAI,eAAA,SAAAL,EAAAC,GACAyB,EAAA,IAAApQ,QAAA,OAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,OACAzC,KAAAuJ,EAAA2B,cACAlQ,aAAAwO,GAGAyB,EAAAE,OAAA/S,UAAAgT,SAAAC,mBAAA/N,OAAAgO,YAAA/B,IACA0B,EAAApH,WAAA,WACA,IAAA0H,EAAA,IAAAnT,UAAAoT,oBAAAvS,KAAAkS,OAAA,CACApQ,GAAA,uBAAA,IAAAyL,MAAAiF,UACAC,MAAAC,qBAAA/R,OACAgS,gBAAA,WACAD,qBAAAhD,OAAA1P,KAAAN,QAAA+S,OAEA,IAAA,IAAA5R,EAAA,EAAAA,EAAA6R,qBAAA/R,OAAAE,IACA6R,qBAAA7R,GAAAnB,QAAA+S,MAAA5R,KAIA6R,qBAAA1F,KAAAsF,MAIAxB,eAAA,SAAAR,EAAAC,GACA,IA6BAqC,EAmCA1K,EAhEAiH,EAAA,IAAAvN,QAAA,QAAAG,aAAAwO,GAGAD,EAAAuC,aAEAC,EAAA3T,UAAAyO,MAAAmF,aAAAzC,EAAAuC,aAAAG,cACAxO,EAAA,eACArF,UAAA8T,WAAAC,QAAAJ,GACAtO,EAAA,QACArF,UAAA8T,WAAAE,QAAAL,GACAtO,EAAA,QACArF,UAAA8T,WAAAG,QAAAN,GACAtO,EAAA,QACArF,UAAA8T,WAAAI,WAAAP,IAAA,QAAAA,GAAA3T,UAAA8T,WAAAK,YAAAR,GACAtO,EAAA,WACA,yBAAA8L,EAAAiD,cACA/O,EAAA,aAGA2K,EAAAnB,IAAA,OAAA7O,UAAAsL,KAAAC,UAAAlG,GAAAwO,eAEAQ,EAAA,EAAAV,EAAAnS,OAAAmS,EAAAnS,OAAA,EAAA,EAEA8S,EAAA,IAAA7R,QAAA,OAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,UACAzC,KAAAuJ,EAAAuC,YAAAa,UAAA,EAAApD,EAAAuC,YAAAlS,OAAA6S,KACAzR,aAAAoN,GAGAyD,EAAA,CACAE,IAAAA,EACAa,YAAArD,EAAAsD,YACAC,eAAAvD,EAAAwD,gBAIAxD,EAAAsD,aAAAzU,UAAA4U,YAAAC,YACApB,EAAAqB,OAAA3D,EAAA4D,UACAtB,EAAA1K,KAAAoI,EAAAuC,aAEAvC,EAAAsD,aAAAzU,UAAA4U,YAAAI,gBACAvB,EAAAwB,QAAA9D,EAAA4D,UACAtB,EAAA1K,KAAAoI,EAAAuC,cAGAD,EAAAyB,OAAA/D,EAAA4D,UACAtB,EAAA0B,SAAAhE,EAAAuC,aAGAY,EAAAb,KAAAA,EAEAa,EAAA7I,WAAA,WAMA,OAJA5K,KAAA4S,KAAAe,aAAAxU,UAAA4U,YAAAC,YAAA,CAAA7U,UAAAoV,aAAAC,UAAArV,UAAAoV,aAAAE,iBAAA5M,SAAA7H,KAAA4S,KAAAiB,gBACA1U,UAAAyO,MAAA8G,cAAA1U,KAAA4S,KAAA,UAEAzT,UAAAwV,cAAAC,kBAAA5U,KAAA4S,OACA,MAKAzD,EAAAvO,UAAAZ,KAAAN,QAAA8J,aAAA,IAAA,YAEAtB,EAAAoI,EAAAuE,UACA,GAAA3M,EAAAvH,SACAuH,EAAA/I,UAAAsL,KAAAqK,aAAA,2BAAA,CAAA3V,UAAAyO,MAAAuC,sBAAAG,EAAAyE,UAAAC,OAAA,eACA7V,UAAAyO,MAAAE,gBAAAqB,EAAAjH,GAGAiH,EAAA8F,QAAA3E,EAAA4E,QACA/F,EAAAvE,WAAA,WACA,IAAAuK,EAAA,IAAAhW,UAAAiW,mBAYA,OAXAD,EAAAE,OAEA,EAAArV,KAAAiV,SACA,IAAA9V,UAAAmW,mBAAA,CACA/J,QAAAvL,KAAAiV,QACAM,KAAAJ,EAAAI,OAGAF,QAGA,IAIA/E,EAAAO,SAAA1R,UAAAsM,gBAAAM,YACA,IAAAnK,QAAA,OAAA,CACAmF,KAAA5H,UAAAsL,KAAAqH,mBAAA,sBAAAxB,EAAAkF,MAAA,CAAAlF,EAAAkF,UACAzT,aAAAwO,OC9gBApR,UAAAsF,QAAAgR,cAAA,IAAApW,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,yBACAkM,SAAA,MAGA3V,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAMAiR,EANA3V,KAAA2J,WAAA3J,KAAAN,QAAAgW,WAGA1V,KAAA6M,SAGA8I,EAAAxW,UAAAyW,KAAAC,aAAA,gBAAA,2BAAA7V,KAAAN,QAAAgW,SAEA1V,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACAK,UAAA,SAAA/F,GACAA,GAGAA,EAAAgG,KAAAlO,MAAA,MAGAlC,QAAA,SAAAqQ,GACA,IAAAtU,QAAA,MAAA,CACAmF,KAAAmP,EACArU,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,iBACAzH,aAAA/B,KAAAH,cACAuN,KAAApN,QACAoN,KAAApN,MACAmW,UAAAhX,UAAAyO,MAAAuI,YAEAnW,KAAA8J,QAAAsM,WCxCAjX,UAAAsF,QAAA4R,aAAA,IAAAhX,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,wBACA8M,MAAA,KACAC,MAAA,KACA5P,OAAA,KACA6P,QAAA,KACAC,QAAA,wBACAC,YAAA,KACA5U,GAAA,KACA0M,QAAA,KACA9E,aAAA,MAGA3J,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GAEA,IAAA6D,EAAAvD,KACAA,KAAAN,QAAA8O,QAAA,WACAjL,EAAA7D,QAAAgX,YACA1W,KAAA2W,YAAA,IAAAxX,UAAAyX,YAAA,CACArS,MAAAhB,EAAA7D,QAAAiH,OACA3F,OAAAuC,EAAA7D,QAAAgX,YACAF,QAAAjT,EAAA7D,QAAA8W,QACAK,YAAA,KACAC,SAAA,SAAAnP,GAEAA,EAAAA,EAAAoP,WAAA,OAAA,SACAA,WAAA,KAAA,SACAA,WAAA,KAAA,SAEA,IAAAC,EAAA,IAAA7X,UAAAK,OAAA0O,MACA8I,EAAA9O,KAAA3E,EAAA7D,QAAA+W,QACAO,EAAAC,YAAAtP,EACAqP,EAAAE,SAAA,IAAA3J,KAGA,IADA,IAAA4J,EAAA5T,EAAA7D,QAAA4W,MAAAvO,MAAA,KACAlH,EAAA,EAAAA,EAAAsW,EAAAxW,OAAAE,IAAA,CACA,IAAAuW,EAAA,IAAAjY,UAAAgT,SAAAkF,QACAD,EAAAd,MAAAa,EAAAtW,GACAmW,EAAAM,aAAAF,GAGAjY,UAAAK,OAAA+X,UAAAP,EAEA,WACA7X,UAAAyO,MAAA4J,aAAArY,UAAAsL,KAAAC,UAAA,yBACA0C,KAAApN,MAEA,WACAb,UAAAyO,MAAA6J,MAAAtY,UAAAsL,KAAAC,UAAA,+BAGA2K,OAEArV,KAAA2W,YAAA,IAAAxX,UAAAyX,YAAA,CACArS,MAAAhB,EAAA7D,QAAAiH,OACA6P,QAAAjT,EAAA7D,QAAA8W,QACAK,YAAA,KACAC,SAAA,SAAAnP,GAEAA,EAAAA,EAAAoP,WAAA,OAAA,SACAA,WAAA,KAAA,SACAA,WAAA,KAAA,SAEA,IAAAC,EAAA,IAAA7X,UAAAK,OAAA0O,MACA8I,EAAA9O,KAAA3E,EAAA7D,QAAA+W,QACAO,EAAAC,YAAAtP,EACAqP,EAAAE,SAAA,IAAA3J,KAGA,IADA,IAAA4J,EAAA5T,EAAA7D,QAAA4W,MAAAvO,MAAA,KACAlH,EAAA,EAAAA,EAAAsW,EAAAxW,OAAAE,IAAA,CACA,IAAAuW,EAAA,IAAAjY,UAAAgT,SAAAkF,QACAD,EAAAd,MAAAa,EAAAtW,GACAmW,EAAAM,aAAAF,GAGAjY,UAAAK,OAAA+X,UAAAP,EAEA,WACA7X,UAAAyO,MAAA4J,aAAArY,UAAAsL,KAAAC,UAAA,yBACA0C,KAAApN,MAEA,WACAb,UAAAyO,MAAA6J,MAAAtY,UAAAsL,KAAAC,UAAA,+BAGA2K,QAIA1L,EAAAiB,WAAA5K,KAAAN,QAAA8O,SAEAxO,KAAAN,QAAAgK,aAAA,WACA1J,KAAA2W,cACA3W,KAAA2W,YAAAe,QACA1X,KAAA2W,YAAA,OAIA3W,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAOA6R,EAPAvW,KAAA2J,YAGA3J,KAAA6M,SACA7M,KAAA2J,UAAA/I,SAAA,eAIA,GADA2V,GAAAvW,KAAAN,QAAA6W,OAAA,IAAApO,QACAxH,QACA,IAAAiB,QAAA,MAAA,CACAC,MAAA,YACA2I,KAAArL,UAAAsL,KAAAC,UAAA6L,GACA5L,mBAAA4L,IACAxU,aAAA/B,KAAAH,iBCvHAV,UAAAsF,QAAAkT,gBAAA,IAAAtY,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,eAAA,gBAEAC,QAAA,CACA8J,YAAA,2BACAoO,QAAAzY,UAAAyY,QAAAC,KACAC,QAAA,KAEAC,YAAA,EAEAC,SAAA,EACAC,OAAA,OACAC,gBAAA,EACAC,aAAA,KAEAC,iBAAA,EAEAC,iBAAA,EAEAC,UAAA,EAEAC,aAAA,EAEAC,eAAA,EAEAC,gBAAA,EAEAC,aAAA,KAEAC,kBAAA,EAEAC,SAAA,EAEA1N,MAAA,KAEA2N,QAAA,MAGA9Y,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,GACA3J,KAAAsO,MAAA,IAGAwK,OAAA,WAGA,IAAAC,EAAA/Y,KAAAoE,eACApE,KAAAoE,gBAAA,EAEApE,KAAAG,UACAH,KAAA0E,OAGA1E,KAAAoE,eAAA2U,GAGArU,KAAA,WACA,GAAA1E,KAAA2J,UAAA,CAGA3J,KAAA6M,SAEA7M,KAAAN,QAAAkZ,UACA5Y,KAAAgZ,aAAA,IAAApX,QAAA,MACA,CACAC,MAAA,yBACA6G,OAAA1I,KAAA2J,YAIA,IAAAsP,EAAA,EACAC,EAAAlZ,KAAAN,QAAAqY,WAAA,QAAA/X,KAAAN,QAAAsY,QAAA,SAAA,WACAmB,EAAA,GAEA,GAAAnZ,KAAAN,QAAAkY,UAAAzY,UAAAyY,QAAAzD,eACAhV,UAAAia,mBAAAja,UAAAia,kBAAAC,kBACAJ,EAAA9Z,UAAAia,kBAAAC,gBAAAC,OACAJ,EAAAlZ,KAAAN,QAAAsY,QAAA,UAAA,QACA7Y,UAAAyM,OAAA2N,gBAAApa,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAC,UACAP,EAAA,UAAAha,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAC,cAGA,GAAA1Z,KAAAN,QAAAkY,UAAAzY,UAAAyY,QAAA5D,WAAA,CAEA,GAAAhU,KAAAN,QAAAsY,QACA,KAAA,uDAEAkB,EAAAlZ,KAAAN,QAAAqY,WAAA,UAAA,SACA5Y,UAAAyM,OAAA2N,gBAAApa,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAE,cACAR,EAAA,UAAAha,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAE,kBAEA3Z,KAAAN,QAAAqY,WACA5Y,UAAAyM,OAAA2N,gBAAApa,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAG,cACAT,EAAA,WAAAha,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAG,aAGAza,UAAAyM,OAAA2N,gBAAApa,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAI,SACAV,EAAA,UAAAha,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAI,QAGAlE,EAAAxW,UAAAyW,KAAAC,aAAAqD,GAAA,aACAlZ,KAAAN,QAAAoY,QACAnC,GAAA,SAAAsD,EAAA,UAAArJ,mBAAA5P,KAAAN,QAAAoY,SAEAnC,GAAA,QAAAsD,EAEA9Z,UAAA2a,cAAAC,eACApE,GAAA,WAEAxW,UAAA2a,cAAAE,cACArE,GAAAwD,IAGAxD,GAAAwD,EAEAnZ,KAAAN,QAAAwL,QACAyK,GAAA,YAAA3V,KAAAN,QAAAwL,OAEAxL,EAAA,CACAiW,IAAAA,EACAK,UAAAhW,KAAAia,aACA9D,UAAA,SAAAsB,GACAlU,KAAA7D,QAAA0Y,iBACAjZ,UAAAyO,MAAAuI,UAAAsB,KAIA7E,EAAA,GACA,mBAAA5S,KAAAN,QAAAwa,iBACAtH,EAAA5S,KAAAN,QAAAwa,eAAAtH,EAAA+C,MAGA,iBAAA/C,EAAAA,OACAA,EAAAA,KAAAmD,KAAAoE,UAAAvH,EAAAA,OAEA,oBAAAwH,SACAxH,EAAAA,KAAAwH,OAAAC,OAAAzH,EAAAA,OAGAlT,EAAAkT,KAAAA,EAAAA,KACAlT,EAAAwZ,OAAA,OACAtG,EAAA+C,MACAjW,EAAAiW,IAAA/C,EAAA+C,MAKA,mBAAA2E,QAAAC,aAAAva,KAAAN,QAAAwY,iBAEAtF,EAAA0H,QAAAC,YAAA,CAAAC,QAAAxa,KAAAN,QAAAkY,SAAAlY,EAAAiW,QAGA,iBAAA/C,EAAAA,OACAA,EAAAA,KAAAmD,KAAAoE,UAAAvH,EAAAA,OAEA,oBAAAwH,SACAxH,EAAAA,KAAAwH,OAAAC,OAAAzH,EAAAA,OAGAlT,EAAAkT,KAAAA,EAAAA,KACAlT,EAAAwZ,OAAA,OACAxZ,EAAAiW,IAAA/C,EAAA+C,KAIA3V,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAArW,GACAM,KAAA8J,QAAAsM,SAGA6D,aAAA,SAAAhK,GAEAjQ,KAAAgZ,cACAhZ,KAAA2J,UAAA8Q,YAAA,yBAAAta,UAGA,IAQAua,EASAC,EACAC,EAGAtM,EArBAtC,EAAA,IAAApK,QAAA,KAAA,CACAC,MAAA,iBACAE,aAAA/B,KAAAH,aACA0D,EAAAvD,KAEAiQ,IAGAyK,EAAAzK,EAAAqJ,OAIAhL,EADAtO,KAAAN,QAAAqY,WACA9H,EAAA4K,cACA,SAAA1X,OAAA8M,GACAA,GAGA0K,EAAA1K,EAAA6K,QAAA,GACAF,EAAA3K,EAAA8K,OAAA,GACAC,EAAA/K,EAAAgL,eAAA,GAEAL,EAAAM,OAAAP,GAAAO,OAAAF,MAGA,GAAA1M,EAAA3N,SAGAX,KAAAN,QAAA4Y,UACA,IAAA1W,QAAA,OAAA,CACAC,MAAA,mBACAkF,KAAA,aACAhF,aAAA/B,KAAA4J,UAEAgB,WAAA,WACAzL,UAAAsF,QAAA0W,QAAAC,aAAA,EAAA7X,EAAA7D,QAAAoY,SACA3Y,UAAAkc,KAAAC,iBAAAC,YAAA,GAAA,KAKAjN,EAAAzI,QAAA,SAAAsD,GACA,IACAyJ,EAAAvO,OAAAgO,YAAAlJ,GACAjB,EAAAlI,KAAAN,QAAA,gBAAAyJ,EAAAqS,MAAArS,EAAAsS,MAAAtS,EAAAsS,OAAAtS,EAAAqS,KACAE,EAAAvc,UAAAyO,MAAA+N,aAAAxS,EAAAyS,YAAA,SAcA,GAZA5b,KAAAN,QAAAiZ,mBACAnU,EAAA2E,EAAAmQ,MAAA,SAAA,QACAuC,EAAA1c,UAAA2c,SAAAC,iBAAA7T,EAAAiB,EAAA3E,KACA,EAAAqX,EAAAlb,SACAuH,EAAA2T,IAIA7b,KAAAN,QAAA+Y,iBACAvQ,EAAA/I,UAAAyO,MAAAoO,wBAAA9T,IAGA,SAAAlI,KAAAN,QAAAuY,OAAA,CAWA,GATA,iBAAAyC,GAAAvR,EAAA8S,YACA9S,EAAA8S,YAAAC,OACA/S,EAAA8S,YAAAC,OACA/S,EAAA8S,YAAAE,OACAhT,EAAA8S,YAAAE,MAGAxG,EAEA,EAAAxM,EAAAiT,QACAjT,EAAAiT,aACA,GAAA,EAAAjT,EAAAkT,OACAlT,EAAAkT,YACA,GAAA,EAAAlT,EAAA8K,OACA9K,EAAAmT,WACA,CAAA,KAAA,EAAAnT,EAAAmQ,OAGA,OAFAnQ,EAAAmQ,MAIAtZ,KAAAN,QAAAkY,QAGA,IAyBA2E,EAWAC,EAIAC,EAaAC,EArDAnM,EAAA,IAAA3O,QAAA,KAAA,CACAC,MAAA,iBACAE,aAAAiK,GAEA2Q,EAAA,IAAA/a,QAAA,MAAA,CACAC,MAAA,yBACAE,aAAAwO,GAOAkD,GALA,IAAA7R,QAAA,MAAA,CACAC,MAAA,eACA+a,IAAAzd,UAAAyO,MAAAiP,mBAAA1T,KACApH,aAAA4a,GAEA,IAAA/a,QAAA,IAAA,CACAC,MAAA,eACAkF,KAAAmB,EACA3D,MAAA2D,IACAnG,aAAA4a,IAEAlJ,EAAAb,KAAAA,EACAa,EAAA7I,WAAA,WACAzL,UAAAwV,cAAAC,kBAAA5U,KAAA4S,QAGA5S,KAAAN,QAAA4Y,WACAiE,EAAA,IAAA3a,QAAA,MAAA,CACAC,MAAA,qBACAE,aAAAwO,GAEApR,UAAA2d,UAAAC,cAAA5T,EAAA+K,UAAA/K,EAAAyK,YAAA,SAAAoJ,GACA,EAAAA,IACAT,EAAA3b,SAAA,cACA2b,EAAAS,WAAAA,KAIAR,EAAA,IAAA5a,QAAA,MAAA,CACAC,MAAA,sBACAE,aAAAwO,GAEAkM,EAAA,IAAA7a,QAAA,MAAA,CACAC,MAAA,yBACAE,aAAAwO,GAEA0M,EAAA,IAAArb,QAAA,MAAA,CACAmF,KAAA,aACAhF,aAAA0a,GAEAS,EAAA,IAAAtb,QAAA,MAAA,CACAmF,KAAA,aACAhF,aAAA0a,GAEAlZ,EAAA7D,QAAA8Y,gBACAkE,EAAA,IAAA9a,QAAA,MAAA,CACAmF,KAAA,UACAhF,aAAA0a,IAGA9N,EAAA,IAAA/M,QAAA,MAAA,CACAmF,KAAA,oBACAhF,aAAA0a,GAEAlZ,EAAA7D,QAAA6Y,aACA,IAAA3W,QAAA,MAAA,CACAmF,KAAA,aACAhF,aAAA0a,GAEA7R,WAAA,WACAzL,UAAAyO,MAAAuP,QAAAvK,KAIA6J,EAAA/O,OAEA8O,EAAAzO,SAAA,aAAA,WACA0O,EAAApH,OACAoH,EAAAlc,YAAA,cAEA,IAAA6c,EAAAX,EAAAY,wBACAC,EAAA/Z,EAAA1D,YAAAwd,wBACAE,EAAAH,EAAAI,OAAAF,EAAAE,OAEAf,EAAAgB,YAAA,aAAAF,GAGAG,GADAN,EAAAX,EAAAY,yBACAM,IAAAL,EAAAK,IAEAlB,EAAAgB,YAAA,YAAAF,GAAAG,GAEAlB,EAAA5b,SAAA,YAGA6b,EAAA1O,SAAA,aAAA,WACA0O,EAAApH,OACAmH,EAAA5b,SAAA,YAGA4b,EAAAzO,SAAA,aAAA,WACA0O,EAAA/O,OACA8O,EAAAjc,YAAA,YAGAkc,EAAA1O,SAAA,aAAA,WACA0O,EAAA/O,OACA8O,EAAAjc,YAAA,YAGA0c,EAAArS,WAAA,WACA0P,QAAAsD,aAAAhL,KAGAsK,EAAAtS,WAAA,WAEA,IAGAzB,EACA0U,EAJA1e,UAAA2e,WAGA3U,EAAA5F,EAAAwa,aAAAnL,EAAA,GACAiL,EAAA,SAAAG,EAAAC,GACA9e,UAAAyO,MAAAsQ,qBAAA/U,EAAA8U,EAAAD,GAGA7e,UAAAyO,MAAAuQ,sBAEAhf,UAAAif,KAAAC,WAIAL,GAAAC,GAAA9e,UAAAmf,sBAAAC,SAAAve,KAAAwe,UACAxe,KAAA0X,SACAtK,KAAApN,MAGAb,UAAA2e,SAAAU,SAAArV,GAAA,GACAhK,UAAA2e,SAAAW,eAAAtV,EAAA,KAAA,KAAA,KAAA,KAAA,WACA0U,GAAA1e,UAAA2e,SAAAU,SAAArV,GAAAhK,UAAAmf,sBAAAC,WAKAV,EAAA1e,UAAA2e,SAAAY,UAAAvV,GAAAhK,UAAAmf,sBAAAK,UAGAjC,GACAA,EAAA9R,WAAA,WACA,IAAAgU,EAAAzf,UAAAyf,UAAAC,OACA7e,KAAA8e,WAAA,IAAA3f,UAAA4f,gBAAA,CACApM,gBAAA,WACA3S,KAAAgf,eAAA,MACA5R,KAAApN,MACA4e,UAAAA,GACAhM,GACA5S,KAAA8e,WAAAzJ,SAIA1G,EAAA/D,WAAA,WACA,IAAAqU,EAAA3E,QAAA4E,cAAA3b,EAAA7D,QAAAkY,QAAA,KAAAhF,EAAAuM,UACAhgB,UAAAyO,MAAAwR,QAAAxM,EAAA,SAAAgD,GACA,MAAAA,GACA0E,QAAA+E,iBACAlgB,UAAAyO,MAAA0R,qBAAAL,EAAArJ,OAIA,IAAAhU,QAAA,OAAA,CACAC,MAAA,gBACAkF,KAAA,kBAAA2U,IACA3Z,aAAAwO,GAEA,IAAA3O,QAAA,OAAA,CACAC,MAAA,gBACAkF,KAAA,YAAA6L,EAAA2M,YAAAC,QAAA,MACAzd,aAAAwO,GAEAgM,EAAA3R,WAAA,WACA,IAAArH,EAAAvD,KACAA,KAAAyf,SAAA,cACAtgB,UAAA2d,UAAA4C,eAAA1f,KAAAgd,WAAA7T,EAAA+K,UAAA/K,EAAAyK,YAAA,WACArQ,EAAAhD,YAAA,eACA6M,KAAApN,OAGAb,UAAA2d,UAAA6C,YAAAxW,EAAA+K,UAAA/K,EAAAyK,YAAA,SAAAoJ,GACAzZ,EAAA3C,SAAA,cACAZ,KAAAgd,WAAAA,GACA5P,KAAApN,UAKAA,KAAAN,QAAAyY,cACA,IAAAvW,QAAA,MAAA,CACAC,MAAA7B,KAAAN,QAAAyY,eACApW,aAAAwO,IAEAnD,KAAApN,OAEA,mBAAAA,KAAAN,QAAAgZ,cACA1Y,KAAAN,QAAAgZ,aAAA1O,MAAAhK,SAGA+d,aAAA,SAAAnL,EAAApO,GACA,IAAArF,UAAAif,KACA,OAAAxL,EAEAzJ,EAAA,IAAAhK,UAAAif,KAAAwB,KAAAhN,GAsBA,OArBApO,GAAArF,UAAAyO,MAAAiS,kBAAA7f,KAAAN,QAAAkT,OAAA5S,KAAAN,QAAAkT,KAAAkN,YAAA,EACA3W,EAAA2W,YAAA,EAEAtb,GAAArF,UAAAsL,KAAAC,UAAA,SACA,GAAA1K,KAAAN,QAAAkT,KAAAkN,cACA3W,EAAA2W,YAAA,GACA3W,EAAA4W,gBAAAC,EACA,GAAAhgB,KAAAN,QAAAkT,KAAAqN,UACA9W,EAAA8W,QAAA,GAEAjgB,KAAAN,QAAAwgB,YAAAlgB,KAAAN,QAAAwgB,WAAAX,cACApW,EAAAoW,YAAAvf,KAAAN,QAAAwgB,WAAAX,cAIAvf,KAAAN,QAAAwgB,YAAAlgB,KAAAN,QAAAwgB,WAAAX,cACApW,EAAAgX,aAAAngB,KAAAN,QAAAwgB,WAAAX,aAGApW,EAAAiX,QAAA,KAEAjX,KCveAhK,UAAAsF,QAAA4b,cAAA,IAAAhhB,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,WAEAC,QAAA,CACA8J,YAAA,yBACA+M,MAAA,KACA0C,QAAA,EACAnB,QAAA,KACA4C,OAAA,EACAlW,KAAA,SAGAzE,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAiBAiR,EAjBApS,EAAAvD,KAEAA,KAAA2J,YAIA3J,KAAA6M,SAEA7M,KAAAH,cAEA,UAAAG,KAAAN,QAAA8E,OACAxE,KAAAN,QAAAuZ,QAAA9Z,UAAAia,kBAAAC,gBAAAC,OAIA3D,EADA3V,KAAAN,QAAAoY,QACA3Y,UAAAyW,KAAAC,aAAA,SAAA,SAAA7V,KAAAN,QAAAuZ,QAAA,QAAAjZ,KAAAN,QAAAgb,MAAA,UAAA9K,mBAAA5P,KAAAN,QAAAoY,SAAA,aAEA3Y,UAAAyW,KAAAC,aAAA,SAAA,QAAA7V,KAAAN,QAAAgb,MAAA,aAEA1a,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACAuD,OAAA,MACAlD,UAAA,SAAAsK,GACA/c,EAAA7D,QAAA6gB,SAEA,IAAA3e,QAAA,OAAA,CACAC,MAAA,UACA2e,OAAA,CACAC,MAAA,SAAAC,GACAnd,EAAAod,QAAAD,EAAAJ,KAGAvZ,KAAA,eACAhF,aAAAwB,EAAAoG,WAGApG,EAAA7D,QAAAihB,SAEA,IAAA/e,QAAA,OAAA,CACAC,MAAA,UACA2e,OAAA,CACAC,MAAA,SAAAC,GACAnd,EAAAod,QAAAD,EAAAJ,KAGAvZ,KAAA,aACAhF,aAAAwB,EAAAoG,WAGA,SAAApG,EAAA7D,QAAA8E,KACA8b,EAAA1F,MAAA/U,QAAA,SAAAgS,GACA,IAAA+I,EAAA,IAAAhf,QAAA,MAAA,CACAC,MAAA,YACA2e,OAAA,CACAC,MAAA,SAAAC,GACA,OAAA7I,EAAAgJ,kBAAAC,eAAA3hB,UAAA4hB,SAAAC,eACA7hB,UAAAyO,MAAAqT,YAAApJ,GAEAtU,EAAA2d,aAAAR,EAAA7I,OAGA9V,aAAAwB,EAAA1D,aAEA,IAAA+B,QAAA,MAAA,CACAC,MAAA,iBACA+a,IAAAzd,UAAAyO,MAAAiP,mBAAAhF,KACA9V,aAAA6e,GAEA,IAAAhf,QAAA,OAAA,CACAC,MAAA,iBACAkF,KAAA8Q,EAAA3P,KAAAiZ,QAAA,QAAA,IACA5c,MAAAsT,EAAA3P,KAAAiZ,QAAA,QAAA,MACApf,aAAA6e,KAGA,cAAArd,EAAA7D,QAAA8E,KACA8b,EAAAc,cAAAvb,QAAA,SAAAgS,GACA,IAAA+I,EAAA,IAAAhf,QAAA,MAAA,CACAC,MAAA,YACA2e,OAAA,CACAC,MAAA,SAAAC,GACAvhB,UAAAyO,MAAA0R,qBAAA+B,SAAA9d,EAAA7D,QAAAoY,QAAA,IAAAD,EAAA3P,KAAA,MAAA,OAGAnG,aAAAwB,EAAA1D,aAEA,IAAA+B,QAAA,OAAA,CACAC,MAAA,iBACAkF,KAAA8Q,EAAA3P,KACA3D,MAAAsT,EAAA3P,OACAnG,aAAA6e,GAEA,IAAAhf,QAAA,OAAA,CACAC,MAAA,oBACAE,aAAA6e,KAGA,UAAArd,EAAA7D,QAAA8E,OACA8b,EAAA3F,OAAA2F,EAAA3F,OAAA2G,MAAA,EAAA,GACAhB,EAAA3F,OAAA9U,QAAA,SAAA0b,GACA,IAAAX,EAAA,IAAAhf,QAAA,MAAA,CACAC,MAAA,YACA2e,OAAA,CACAC,MAAA,SAAAC,GACAnd,EAAA2d,aAAAR,EAAAa,OAGAxf,aAAAwB,EAAA1D,aAEA,IAAA+B,QAAA,MAAA,CACAC,MAAA,iBACA+a,IAAAzd,UAAAyO,MAAAiP,mBAAA0E,KACAxf,aAAA6e,GAEA,IAAAhf,QAAA,OAAA,CACAC,MAAA,iBACAkF,KAAAwa,EAAArZ,KACA3D,MAAAgd,EAAArZ,OACAnG,aAAA6e,SAKA5gB,KAAA8J,QAAAsM,UAGA8K,aAAA,SAAAR,EAAA7I,GACA6I,EAAAc,kBACAriB,UAAAwV,cAAAC,kBAAAiD,IAGA8I,QAAA,SAAAD,EAAAJ,GAEAnhB,UAAAsiB,SAAA/T,OACAqT,SAAAW,cAAApB,EAAA1F,OAEA,IAAAzL,EAAAjP,EAAA,cACAiP,GACAA,EAAAkG,OAGA,MAAAlW,UAAAwiB,aACAxiB,UAAAyiB,WAAAzhB,UACAhB,UAAAyiB,WAAA,MAGA1hB,EAAA,gBAAAI,QAEAnB,UAAAyiB,WAAA,IAAAziB,UAAA0iB,WAAA,CACA3Z,KAAAoY,EAAApY,KACA4Z,gBAAA,OCzKA3iB,UAAAsF,QAAAsd,SAAA,IAAA1iB,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,oBACAkM,SAAA,KACAkC,QAAAzY,UAAAyY,QAAAC,MAGA9X,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAMAiR,EANA3V,KAAA2J,WAAA3J,KAAAN,QAAAgW,WAGA1V,KAAA6M,SAGA8I,EAAAxW,UAAAyW,KAAAC,aAAA,gBAAA,2BAAA7V,KAAAN,QAAAgW,SAEA1V,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACAK,UAAA,SAAA/F,GACAA,GAGAA,EAAAgG,KAAAlO,MAAA,MAGAlC,QAAA,SAAAqQ,GACA,IAAA8L,EAAA9L,EAAA+L,YAAA,KACAC,EAAAhM,EAAAxC,UAAAsO,GAGApB,EAAA,IAAAhf,QAAA,IAAA,CACAmF,KAAAmb,EACAC,KAAA,qBACAtgB,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzH,aAAA/B,KAAAH,aAGA+gB,EAAAhL,KAAAM,EACA0K,EAAAhJ,QAAA5X,KAAAN,QAAAkY,QACAgJ,EAAAhW,WAAA,WACAzL,UAAAyO,MAAAwU,iBAAApiB,KAAA4V,KAAA5V,KAAA4X,YAEAxK,KAAApN,QACAoN,KAAApN,MACAmW,UAAAhX,UAAAyO,MAAAuI,YAEAnW,KAAA8J,QAAAsM,WCrDAjX,UAAAsF,QAAA4d,MAAA,IAAAhjB,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,eAEAC,QAAA,CACA8J,YAAA,iBACA8Y,UAAA,KACAC,YAAA,KACA3P,KAAA,KACA4P,SAAA,KACAC,eAAA,KACA3gB,GAAA,MAGA4gB,MAAA,KAEA3iB,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,GAAA1E,KAAA2J,UAAA,CAKA,IAKAgZ,EACAC,EARA5iB,KAAA6M,SAEA7M,KAAAN,QAAA+iB,iBACAI,EAAA,IAAAtV,MACAuV,EAAA,IAAAvV,MACAwV,SAAAD,EAAAE,WAAAhjB,KAAAN,QAAA+iB,gBAEAE,EAAAM,QAAA,KAAAJ,EAAAG,WAAA,IAAA1B,OAAA,IAAA,IAAA2B,QAAA,IAAAJ,EAAApV,WAAA6T,OAAA,IAAA,IAAA2B,OAAAJ,EAAAK,eACAN,EAAAK,QAAA,KAAAH,EAAAE,WAAA,IAAA1B,OAAA,IAAA,IAAA2B,QAAA,IAAAH,EAAArV,WAAA6T,OAAA,IAAA,IAAA2B,OAAAH,EAAAI,gBAIAljB,KAAAmjB,QAAA,IAAAvhB,QAAA,MAAA,CAAAE,GAAA,gBAAAmhB,OAAAG,WAAAne,MAAA,QAEAjF,KAAAH,YAAAwjB,KAAArjB,KAAAmjB,SAGA,IAAAxN,EAAAxW,UAAAyW,KAAAC,aAAA,WAAA,mBAAA7V,KAAAN,QAAA4iB,UAAA,UAAAM,EAAA,UAAAD,EACA,GAAA,iBAAA3iB,KAAAN,QAAAkT,KACA,IAAA,IAAAxS,KAAAJ,KAAAN,QAAAkT,KACA5S,KAAAN,QAAAkT,KAAAvS,eAAAD,KAGAuV,GAAA,IAAAvV,EAAA,IAAAwP,mBAAA5P,KAAAN,QAAAkT,KAAAxS,KAIAJ,KAAAN,QAAA8iB,SAEA,IAAArjB,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACAK,UAAA,SAAA/F,GACAjQ,KAAAsjB,YAAArT,IACA7C,KAAApN,QACAujB,KAAAvjB,KAAAN,QAAA8iB,UAKA,IAAArjB,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACAK,UAAA,SAAA/F,GACAjQ,KAAAsjB,YAAArT,IACA7C,KAAApN,QACAoW,SAKAkN,YAAA,SAAA1Q,GACA,IAAA4Q,EAAA5Q,EAAA6Q,OACAC,EAAA9Q,EAAA8Q,OAGA,GAAAF,GAAAE,GAAA,GAAAF,EAAA7iB,QAAA,GAAA+iB,EAAA/iB,OAAA,CAeA,IAAA,IAXAgjB,EADA,mBAAA3jB,KAAAN,QAAA4iB,UACAnjB,UAAAsF,QAAA4d,MAAAuB,qBAEA,sBAAA5jB,KAAAN,QAAA4iB,UACAnjB,UAAAsF,QAAA4d,MAAAwB,wBAEA,MAAA7jB,KAAAN,QAAA6iB,aAAA,iBAAAviB,KAAAN,QAAA6iB,YACAle,OAAAC,MAAAnF,UAAAsF,QAAA4d,MAAAyB,cAAA9jB,KAAAN,QAAA6iB,aAEApjB,UAAAsF,QAAA4d,MAAAyB,cAGAjjB,EAAA2iB,EAAA7iB,OAAAE,KACA,GAAA,OAAA2iB,EAAA3iB,GAAA+R,KACA,IAAA,IAAA5Q,EAAAwhB,EAAA3iB,GAAA+R,KAAAjS,OAAAqB,KAAA,CACA,IAAA+hB,EAAAP,EAAA3iB,GAAA+R,KAAA5Q,GACA+F,EAAAgc,EAAAC,EAAAjc,MAAA,KACAgc,EAAAC,EAAAzW,KAAA0W,IAAAlc,EAAA,GAAAA,EAAA,GAAA,EAAAA,EAAA,IAKA4b,EAAAjB,MAAAwB,SAAAlkB,KAAAmjB,QACAQ,EAAAF,OAAAD,EACAG,EAAAQ,MAAA5f,MAAA,CAAAwC,KAAA2c,EAAA,GAAAnN,OACAvW,KAAA0iB,MAAA,IAAA0B,WAAA/B,MAAAsB,OAIAxkB,UAAAsF,QAAA4d,MAAAgC,OAAA,CACAP,cAAA,CACAQ,QAAA,CACAC,SAAA,GAEA7B,MAAA,CACAle,KAAA,SACAggB,UAAA,EACAC,WAAA,EACAC,YAAA,EACAjhB,aAAA,GACAkhB,QAAA,EACA3jB,OAAA,IACA4jB,gBAAAC,QAAAC,IAAA,QAAA,cACAzd,MAAA,CACA0d,WAAA,mBACA/hB,OAAA,SACAgiB,aAAA,mBAGAzgB,MAAA,CACAyf,EAAA,EACAjd,KAAA,gCACAM,MAAA,CACA0d,WAAA,mBACAE,MAAA,SAGAC,MAAA,CACA1gB,KAAA,WACA6C,MAAA,CACA0d,WAAA,mBACAje,QAAA,QAEAqe,UAAA,cACAC,UAAA,EACAC,UAAA,EACAC,SAAA,OACAC,gBAAA,MACAC,mBAAA,EACAC,eAAA,EACAC,gBAAA,EACAC,kBAAA,MACAC,aAAA,EACAC,WAAA,EACAnC,OAAA,CACAoC,SAAA,UACAC,UAAA,WACA,OAAA3B,WAAA4B,WAAA,KAAAhmB,KAAA2H,QAEAN,MAAA,CACA4d,MAAA,UACAgB,cAAA,eAIA9B,MAAA,CACA+B,eAAA,EACAC,IAAA,EACAC,cAAA,OACA/e,MAAA,CACA0d,WAAA,oBAEArB,OAAA,CACAa,SAAA,IAGA8B,QAAA,CACAC,SAAA,EACAP,UAAA,WACA,OAAA/lB,KAAAumB,GAEAlf,MAAA,CACA0d,WAAA,mBACAE,MAAA,YAGAuB,OAAA,CACAjC,SAAA,EACAhgB,MAAA,CACAwC,KAAA,eAEAid,GAAA,IACAuC,GAAA,MAIA3C,qBAAA,CACA6C,OAAA,CAAA,UAAA,UAAA,WACAnC,QAAA,CACAC,SAAA,GAEA7B,MAAA,CACAle,KAAA,SACAggB,UAAA,GACAC,WAAA,GACAC,YAAA,GACAjhB,aAAA,GACAzC,OAAA,IACAiE,MAAA,IACA2f,gBAAAC,QAAAC,IAAA,QAAA,eAEAvgB,MAAA,CACAwC,KAAA,gCACA2f,MAAA,OACA1C,EAAA,GACAuC,EAAA,IAEArB,MAAA,CACA1gB,KAAA,WACA4gB,UAAA,EACAC,UAAA,EACAC,SAAA,OACAC,gBAAA,MACAC,mBAAA,EACAC,eAAA,EACAC,gBAAA,EACAC,kBAAA,MACAC,aAAA,EACAC,WAAA,EACAnC,OAAA,CACAqC,UAAA,WACA,OAAA3B,WAAA4B,WAAA,KAAAhmB,KAAA2H,UAIAwc,MAAA,CACA+B,eAAA,EACAC,IAAA,EACAC,cAAA,OACAO,WAAA,EACAf,aAAA,EACAC,WAAA,EACAnC,OAAA,CACAa,SAAA,IAGA8B,QAAA,CACAC,SAAA,EACAP,UAAA,WACA,OAAA/lB,KAAAumB,IAGAC,OAAA,CACAI,aAAA,EACAC,aAAA,EACA7C,EAAA,IACA8C,UAAA,CACA7B,MAAA,aAKApB,wBAAA,CACA4C,OAAA,CAAA,WACAnC,QAAA,CACAC,SAAA,GAEA7B,MAAA,CACAle,KAAA,SACAggB,UAAA,GACAC,WAAA,GACAC,YAAA,EACAjhB,aAAA,GACAzC,OAAA,IACA4jB,gBAAAC,QAAAC,IAAA,QAAA,eAEAvgB,MAAA,CACAyf,GAAA,GACAjd,KAAA,gBACA2f,MAAA,OACArf,MAAA,CACA0d,WAAA,qBAGAG,MAAA,CACA1gB,KAAA,WACA4gB,UAAA,EACAC,UAAA,EACAC,SAAA,OACAC,gBAAA,MACAC,mBAAA,EACAC,eAAA,EACAC,gBAAA,EACAC,kBAAA,MACAC,aAAA,EACAC,WAAA,EACAnC,OAAA,CACAoC,SAAA,UACAC,UAAA,WACA,OAAA3B,WAAA4B,WAAA,KAAAhmB,KAAA2H,SAGAmf,UAAA,CACA7B,MAAA,YAGAd,MAAA,CACA+B,eAAA,EACAC,IAAA,EACAC,cAAA,OACA/e,MAAA,CACA0d,WAAA,oBAEArB,OAAA,CACAa,SAAA,IAGA8B,QAAA,CACAC,SAAA,EACAP,UAAA,WACA,OAAA/lB,KAAAumB,GAEAlf,MAAA,CACA0d,WAAA,mBACAE,MAAA,YAGAuB,OAAA,CACAjC,SAAA,MC1UAplB,UAAAsF,QAAAsiB,oBAAA,IAAA1nB,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,GAEAC,QAAA,CACA8J,YAAA,+BACA+M,MAAA,KACAyQ,SAAA,KACAC,SAAA,gBACAtG,SAAA,EACAuG,cAAA,EACAhc,MAAA,IAGAnL,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAAAnB,EAAAvD,KAEAA,KAAA2J,YAIA3J,KAAA6M,SAEA7M,KAAAH,aAIAV,UAAAyO,MAAAuZ,UAAAnnB,KAAAN,QAAAwL,MAAA,SAAAkc,GACA7jB,EAAA7D,QAAAihB,SAEA,IAAA/e,QAAA,OAAA,CACAC,MAAA,UACA2e,OAAA,CACAC,MAAA,SAAAC,GACAvhB,UAAAsF,QAAA4iB,IAAAC,eAAA/jB,EAAA7D,QAAAunB,YAGAlgB,KAAA,aACAhF,aAAAwB,EAAAqG,UAGArG,EAAA7D,QAAAwnB,eACArd,QAAAtG,EAAAqG,SAAA2d,WAAA,IAAAhkB,EAAA7D,QAAA8J,YAAA,eACAK,QAAAe,WAAA,WACA4c,OAAAC,SAAAC,KAAA,QAAAnkB,EAAA7D,QAAAunB,SAAA,aAAA1jB,EAAA7D,QAAAsnB,YAIAI,EAAAvhB,QAAA,SAAA8hB,GACA,IACA/G,EAUAgH,EAXArkB,EAAA7D,QAAAsnB,UAAAzjB,EAAA7D,QAAAsnB,UAAAW,EAAAE,eACAjH,EAAA,IAAAhf,QAAA,MAAA,CACAC,MAAA,aACA2e,OAAA,CACAC,MAAA,SAAAC,GACA8G,OAAAC,SAAAC,KAAA,QAAAnkB,EAAA7D,QAAAunB,SAAA,YAAAU,EAAAG,YAGA/lB,aAAAwB,EAAA1D,aAGA+nB,GADAva,EAAA,IAAAE,KAAAoa,EAAAI,cACAta,UAAA,KAAAJ,EAAA2V,WAAA,GAAA,IAAA3V,EAAA6V,cAEA,IAAAthB,QAAA,OAAA,CACAC,MAAA,kBACA2I,KAAAmd,EAAAlR,QACAlS,MAAAojB,EAAAlR,UACA1U,aAAA6e,GAEA,IAAAhf,QAAA,OAAA,CACAC,MAAA,kBACA2I,KAAAod,EACArjB,MAAAqjB,IACA7lB,aAAA6e,GAEA,IAAAhf,QAAA,OAAA,CACAC,MAAA,qBACA2I,KAAAmd,EAAAnR,QACAjS,MAAAojB,EAAAnR,UACAzU,aAAA6e,GAEA,IAAAhf,QAAA,OAAA,CACAC,MAAA,oBACA2I,KAAAmd,EAAAK,UAAAC,YACA1jB,MAAAojB,EAAAK,UAAAC,cACAlmB,aAAA6e,YCzFAzhB,UAAAsF,QAAAyjB,eAAA,IAAA7oB,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,OAAA,SAAA,eAAA,UAEAC,QAAA,CACA8J,YAAA,0BACAxI,OAAA,OACAM,UAAA,IACA6mB,UAAA,IACAC,WAAA,KAGAC,YAAA,GACAC,WAAA,OACA/S,KAAA,KAEAxV,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAMA6jB,EANAvoB,KAAA2J,YAGA3J,KAAA6M,SACA7M,KAAA2J,UAAA/I,SAAA,cAEA2nB,EAAAppB,UAAAyW,KAAA4S,iBAAA,4BACA,IAAArpB,UAAA2W,QAAA2S,KAAA,CACA9S,IAAA4S,EACAG,OAAA1oB,KAAAH,YACAmW,UAAAhW,KAAA2oB,SACAvS,SAGAuS,OAAA,WACA,IAAAvmB,EAAAlC,EAAAF,KAAAH,aACA+oB,EAAAxmB,EAAAmlB,WAAA,aACAsB,EAAAzmB,EAAAmlB,WAAA,aACAuB,EAAA1mB,EAAAmlB,WAAA,WACAwB,EAAA3mB,EAAAmlB,WAAA,WAEAvnB,KAAAqoB,YAAA,KAAAlpB,UAAAyO,MAAAob,iBAAAJ,EAAAC,GACA7oB,KAAAqoB,YAAA,GAAAlpB,UAAAyO,MAAAob,iBAAAF,EAAAC,GAEA5Z,EAAA/M,EAAAmlB,WAAA,aACApY,GACAA,EAAAvE,WAAA5K,KAAAipB,aAAAjpB,MAEAkpB,EAAA9mB,EAAAmlB,WAAA,cACA2B,GACAlpB,KAAAmpB,SAAAD,GAEAlpB,KAAAopB,UAGAD,SAAA,SAAAD,GACA,IAAAG,EAAA,CACA,CAAAnhB,KAAA/I,UAAAsL,KAAAC,UAAA,aAAA4e,OAAA,UAAAC,QAAAvpB,KAAAwpB,eAAApc,KAAApN,OACA,CAAAkI,KAAA/I,UAAAsL,KAAAC,UAAA,QAAA4e,OAAA,yBAAAC,QAAAvpB,KAAAwpB,eAAApc,KAAApN,QAGAb,UAAAuhB,MAAA+I,cACAJ,EAAAK,QAAA,CAAAxhB,KAAA/I,UAAAsL,KAAAC,UAAA,UAAA4e,OAAA,UAAAC,QAAAvpB,KAAAwpB,eAAApc,KAAApN,QAGAA,KAAAuV,KAAA,IAAAoU,SAAAT,EAAA,CACAG,QAAAA,EACAO,YAAA5pB,KAAA6pB,iBACAlU,IAAA3V,KAAA8pB,SACAC,YAAA,EACAC,YAAA,EACAC,YAAA,EACAC,cAAA,OACAC,kBAAA,SACAC,eAAA,EACAC,YAAA,EACAC,YAAA,EACAC,eAAA,EACAC,mBAAA,EACAvlB,MAAAjF,KAAAN,QAAAyoB,UACAnnB,OAAAhB,KAAAN,QAAA0oB,WACAqC,QAAA,GACAC,cAAA,EACAC,WAAA,IAGA3qB,KAAAuV,KAAAxH,SAAA,WAAA/N,KAAA4qB,cAAAxd,KAAApN,QAGAwpB,eAAA,SAAAthB,EAAAqN,GACArN,GAAA/I,UAAAsL,KAAAC,UAAA,YACA1K,KAAAsoB,WAAA,UACApgB,GAAA/I,UAAAsL,KAAAC,UAAA,aACA1K,KAAAsoB,WAAA,YACApgB,GAAA/I,UAAAsL,KAAAC,UAAA,UACA1K,KAAAsoB,WAAA,QAEA/S,EAAA7V,QAAAiW,IAAA3V,KAAA8pB,SACAvU,EAAAsV,eAAA7qB,KAAA6pB,kBACAtU,EAAAuD,SAEAvD,EAAA7V,QAAA2pB,QAAAxjB,QAAA,SAAAilB,GACAA,GAAAA,EAAAC,UACAD,EAAA5iB,MAAAA,GACA4iB,EAAAxB,OAAA,iBACAwB,EAAAC,QAAArpB,UAAA,mBAGAopB,EAAAxB,OAAA,UACAwB,EAAAC,QAAArpB,UAAA,eAMAooB,OAAA,WACA,OAAA9pB,KAAAsoB,YACA,IAAA,SACA,OAAAnpB,UAAAyW,KAAAoV,YAAA,iBAAA,4BACA,IAAA,YACA,OAAA7rB,UAAAyW,KAAAoV,YAAA,iBAAA,sBACA,IAAA,OACA,OAAA7rB,UAAAyW,KAAAoV,YAAA,gBAAA,wBAIAnB,eAAA,WACA,OAAA7pB,KAAAsoB,YACA,IAAA,SACA,OAAAtoB,KAAAirB,uBACA,IAAA,YACA,OAAAjrB,KAAAkrB,0BACA,IAAA,OACA,OAAAlrB,KAAAmrB,uBAIAF,qBAAA,WAiBA,MAhBA,CACA,CACAtkB,OAAAxH,UAAAsL,KAAAC,UAAA,WACA0gB,UAAA,OACAC,SAAA,SACApmB,MAAA,GAAAjF,KAAAN,QAAAyoB,WAEA,CACAxhB,OAAAxH,UAAAsL,KAAAC,UAAA,QACA0gB,UAAA,WACAC,SAAA,SACAC,cAAAtrB,KAAAurB,qBACAtmB,MAAA,GAAAjF,KAAAN,QAAAyoB,aAOA+C,wBAAA,WA+BA,MA9BA,CACA,CACAvkB,OAAAxH,UAAAsL,KAAAC,UAAA,MACA0gB,UAAA,KACAC,SAAA,SACAC,cAAAtrB,KAAAwrB,iBACAvmB,MAAA,IAAAjF,KAAAN,QAAAyoB,WAEA,CACAxhB,OAAAxH,UAAAsL,KAAAC,UAAA,WACA0gB,UAAA,OACAC,SAAA,SACApmB,MAAA,IAAAjF,KAAAN,QAAAyoB,WAEA,CACAxhB,OAAAxH,UAAAsL,KAAAC,UAAA,kBACA0gB,UAAA,WACAC,SAAA,SACAC,cAAAtrB,KAAAurB,qBACAtmB,MAAA,IAAAjF,KAAAN,QAAAyoB,WAEA,CACAxhB,OAAAxH,UAAAsL,KAAAC,UAAA,WACA0gB,UAAA,iBACAC,SAAA,SACAC,cAAAtrB,KAAAyrB,iBACAxmB,MAAA,IAAAjF,KAAAN,QAAAyoB,aAOAgD,mBAAA,WAuDA,MAtDA,CACA,CACAxkB,OAAAxH,UAAAsL,KAAAC,UAAA,MACA0gB,UAAA,KACAC,SAAA,SACAC,cAAAtrB,KAAAwrB,iBACAvmB,MAAA,IAAAjF,KAAAN,QAAAyoB,WAEA,CACAxhB,OAAAxH,UAAAsL,KAAAC,UAAA,WACA0gB,UAAA,OACAC,SAAA,SACApmB,MAAA,IAAAjF,KAAAN,QAAAyoB,WAEA,CACAxhB,OAAAxH,UAAAsL,KAAAC,UAAA,kBACA0gB,UAAA,WACAC,SAAA,SACAC,cAAAtrB,KAAAurB,qBACAtmB,MAAA,IAAAjF,KAAAN,QAAAyoB,WAEA,CACAxhB,OAAAxH,UAAAsL,KAAAC,UAAA,WACA0gB,UAAA,iBACAC,SAAA,SACAC,cAAAtrB,KAAAyrB,iBACAxmB,MAAA,IAAAjF,KAAAN,QAAAyoB,WAEA,CACAxhB,OAAAxH,UAAAsL,KAAAC,UAAA,SACA0gB,UAAA,YACAC,SAAA,SACApmB,MAAA,MAAAjF,KAAAN,QAAAyoB,WAEA,CACAxhB,OAAAxH,UAAAsL,KAAAC,UAAA,UACA0gB,UAAA,aACAC,SAAA,SACApmB,MAAA,MAAAjF,KAAAN,QAAAyoB,WAEA,CACAxhB,OAAAxH,UAAAsL,KAAAihB,gBAAA,QAAA,GACAN,UAAA,aACAC,SAAA,SACApmB,MAAA,MAAAjF,KAAAN,QAAAyoB,WAEA,CACAxhB,OAAAxH,UAAAsL,KAAAihB,gBAAA,WAAA,GACAN,UAAA,gBACAC,SAAA,SACApmB,MAAA,MAAAjF,KAAAN,QAAAyoB,aAOAoD,qBAAA,SAAA3Y,EAAA9M,EAAA6lB,GACAte,EAAAuF,EAAA+Y,EAAAP,WACA,OAAA/d,EACAlO,UAAAyO,MAAAuC,sBAAA9C,GAAA2H,OAAA,qBAEA,OAGAyW,iBAAA,SAAA7Y,EAAA9M,EAAA6lB,GACAte,EAAAuF,EAAA+Y,EAAAP,WACA,OAAA/d,EACAlO,UAAAyO,MAAAuC,sBAAA9C,GAAA2H,OAAA,YAEA,OAGAwW,iBAAA,SAAA5Y,GACA,IAAAA,EAAAgZ,YAAA,GAAAhZ,EAAAgZ,WAAAjrB,OACA,MAAA,GAEA,IAAAkrB,EAAAjZ,EAAAgZ,WAAA,GAAAtV,OAAA1D,EAAAgZ,WAAA,GAAA1jB,KAGA,OAFA,EAAA0K,EAAAgZ,WAAAjrB,SACAkrB,GAAA1sB,UAAAsL,KAAAqK,aAAA,WAAAlC,EAAAgZ,WAAAjrB,OAAA,IACAkrB,GAGAjB,cAAA,SAAAkB,GACA,IAAAhmB,EAAAgmB,EAAAhmB,IAEAkR,EADA8U,EAAAC,OACArsB,QAAAkT,KAAA9M,GAEA,IAAA3G,UAAAmW,mBAAA,CAAA/J,QAAAyL,EAAA/B,QAAAM,KAAAvV,KAAAuV,OACAF,QAGA4T,aAAA,WACA,IAaA9Z,EAbA/M,EAAAlC,EAAAF,KAAAH,aACAuC,KAGA+M,EAAA/M,EAAAmlB,WAAA,gBAEAvnB,KAAAuV,KAAA7V,QAAAssB,UAAA7c,EAAAxH,QAEAwH,EAAA/M,EAAAmlB,WAAA,cAEAvnB,KAAAuV,KAAA7V,QAAAusB,QAAA9c,EAAAxH,OAEAukB,EAAA,IACA/c,EAAAnP,KAAAH,YAAA0nB,WAAA,iBAEA2E,EAAA/c,EAAAxH,OAEA3H,KAAAuV,KAAA3J,OAAAsgB,KAGAC,iBAAA,WACA,GAAAnsB,KAAAqoB,YACA,IAAA,IAAAjoB,KAAAJ,KAAAqoB,YACAroB,KAAAqoB,YAAAjoB,IACAJ,KAAAqoB,YAAAjoB,GAAAsX,SAKA0R,OAAA,WACA,IAOAgD,EAQAnnB,EACAjE,EAhBAqrB,EAAArsB,KAAA2J,UAAA5F,SAAA,UAAAC,QACAhE,KAAA4J,WACAyiB,GAAArsB,KAAA4J,SAAA7F,SAAA,UAAAC,SAEAhE,KAAAH,YAAA2G,SAAA,SAAA6lB,GAEArsB,KAAAuV,OACA6W,EAAA,KACAhqB,EAAAlC,EAAAF,KAAAH,gBAEAysB,EAAAlqB,EAAAmlB,WAAA,wBAEA6E,EAAAE,EAAAnrB,aAGA8D,EAAA7C,EAAAmqB,WAAAnqB,EAAA2B,SAAA,eAAAC,QAAA5B,EAAA2B,SAAA,gBAAAC,QACAhD,EAAAqrB,EAAAD,EAAA,GAAAhqB,EAAA2B,SAAA,iBAAAC,QAEAhE,KAAAuV,KAAAiX,QAAAvnB,EAAAjE,OC/UA7B,UAAAsF,QAAA0N,SAAA,IAAA9S,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,oBACA+B,QAAA,KACAkhB,UAAA,GAGA1sB,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAKAsH,EALAhM,KAAA2J,WAAA,iBAAA3J,KAAAN,QAAA6L,UAGAvL,KAAA6M,SAEAb,EAAA,IAAApK,QAAA,MAAAG,aAAA/B,KAAAH,aAEAG,KAAA8J,QAAA3K,UAAAK,OAAAktB,mBAAA1sB,KAAAN,QAAA6L,QAAAvL,KAAAN,QAAA+sB,SAAA,QAAA,SAAAxc,GACA,GAAAA,EAGA,IAAA,IAAApP,EAAA,EAAAF,EAAAsP,EAAAtP,OAAAE,EAAAF,EAAAE,IAAA,CACA,IAAA0P,EAAA,IAAA3O,QAAA,KAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzH,aAAAiK,GACA2gB,EAAA,IAAA/qB,QAAA,OAAA,CACAC,MAAA,sBAGA,IAAAD,QAAA,OAAA,CACAmF,KAAAkJ,EAAApP,GAAAoR,YACApQ,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzH,aAAAwO,GAEAN,EAAApP,GAAAoR,aAAAhC,EAAApP,GAAA+rB,OACA,IAAAhrB,QAAA,OAAA,CACAmF,KAAAkJ,EAAApP,GAAA+rB,MACA/qB,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,UACAzH,aAAAwO,GAGAoc,EAAA5qB,aAAAwO,GAEAA,EAAA2B,OAAA/S,UAAAgT,SAAAC,mBAAA/N,OAAAgO,YAAApC,EAAApP,KACA0P,EAAA3F,WAAA,WACA,IAAA0H,EAAA,IAAAnT,UAAAoT,oBAAAvS,KAAAkS,OAAA,CACApQ,GAAA,uBAAA,IAAAyL,MAAAiF,UACAC,MAAAC,qBAAA/R,OACAgS,gBAAA,WACAD,qBAAAhD,OAAA1P,KAAAN,QAAA+S,OAEA,IAAA,IAAA5R,EAAA,EAAAA,EAAA6R,qBAAA/R,OAAAE,IACA6R,qBAAA7R,GAAAnB,QAAA+S,MAAA5R,KAIA6R,qBAAA1F,KAAAsF,OAGAlF,KAAApN,WChEAb,UAAAsF,QAAAooB,QAAA,IAAAxtB,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,mBACAqP,QAAA,mBACAiU,MAAA,OACA5hB,MAAA,GACA6hB,UAAA,EACA/G,WAAA,WACA/N,OAAA,YAGAlY,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAMAsH,EACA2J,EAPA3V,KAAA2J,WAAAxK,UAAAia,mBAAA,iBAAAja,UAAAia,kBAAA4T,eAGAhtB,KAAA6M,SAGAb,EAAA,IAAApK,QAAA,MAAAG,aAAA/B,KAAAH,aACA8V,EAAAxW,UAAAyW,KAAAC,aAAA,YAAA,sBAAA7V,KAAAN,QAAAmZ,QAAA,UAAA7Y,KAAAN,QAAAotB,MAAA,YAAA9sB,KAAAN,QAAAwL,MAAA,QAAA/L,UAAAia,kBAAA4T,aAEAhtB,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACAK,UAAA,SAAA/F,GACA,GAAAA,EAAA,CAGAjE,EAAA1L,QAGA,IAAAsa,EAAA3K,EAAA8K,MACA,GAAAH,GAAA,GAAAA,EAAAja,OAIA,IAAA,IAAAE,EAAA,EAAAA,EAAA+Z,EAAAja,OAAAE,IAAA,CACA,IAAAgX,EAAA+C,EAAA/Z,GACAwM,EAAAlO,UAAAyO,MAAAuC,sBAAA0H,EAAAoV,YAAAjY,OAAAhV,KAAAN,QAAAsmB,YACArQ,EAAA,IAEA,aAAA3V,KAAAN,QAAAuY,SACAtC,EAAAxW,UAAAyW,KAAAsX,eAAA,QAAA,QAAArV,EAAAwE,QAGA,IAAA9L,EAAA,IAAA3O,QAAA,KAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzH,aAAAiK,GACA4U,EAAA,IAAAhf,QAAA,IAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,OACAzC,KAAA/G,KAAAN,QAAAqtB,SAAA1f,EAAA,MAAAwK,EAAA2D,KAAA3D,EAAA2D,KACAjX,MAAAsT,EAAA2D,KACA2G,KAAAxM,EACAoW,OAAA,cACAhqB,aAAAwO,GAGA,YAAAvQ,KAAAN,QAAAuY,SACA2I,EAAAhO,KAAAvO,OAAAgO,YAAAwF,GACA+I,EAAAhW,WAAA,WACAzL,UAAAwV,cAAAC,kBAAA5U,KAAA4S,YAIAxF,KAAApN,MACAmW,UAAAhX,UAAAyO,MAAAuI,YAEAnW,KAAA8J,QAAAsM,WCzEAjX,UAAAsF,QAAA0oB,WAAA,IAAA9tB,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,OAAA,SAAA,mBAAA,eAAA,eAAA,UAEAC,QAAA,CACA8J,YAAA,sBACAxI,OAAA,OACAM,UAAA,KAGA+mB,YAAA,GACAC,WAAA,YACA/S,KAAA,KAEAxV,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,GAEA3J,KAAAN,QAAA4oB,aACAtoB,KAAAsoB,WAAAtoB,KAAAN,QAAA4oB,aAIA5jB,KAAA,WACA,IAMA6jB,EANAvoB,KAAA2J,YAGA3J,KAAA6M,SACA7M,KAAA2J,UAAA/I,SAAA,cAEA2nB,EAAAppB,UAAAyW,KAAA4S,iBAAA,wBACA,IAAArpB,UAAA2W,QAAA2S,KAAA,CACA9S,IAAA4S,EACAG,OAAA1oB,KAAAH,YACAmW,UAAAhW,KAAA2oB,SACAvS,SAGAuS,OAAA,WACA,IAAAvmB,EAAAlC,EAAAF,KAAAH,aACA+oB,EAAAxmB,EAAAmlB,WAAA,aACAsB,EAAAzmB,EAAAmlB,WAAA,aACAuB,EAAA1mB,EAAAmlB,WAAA,WACAwB,EAAA3mB,EAAAmlB,WAAA,WACA6F,EAAA,IAAA7f,KACA8f,EAAA,IAAA9f,KAAA6f,EAAAlK,cAAAkK,EAAApK,WAAA,EAAAoK,EAAAE,UAEA1E,EAAAjhB,MAAA0lB,EAAArY,OAAA,MAEAhV,KAAAqoB,YAAA,KAAAlpB,UAAAyO,MAAAob,iBAAAJ,EAAAC,GACA7oB,KAAAqoB,YAAA,GAAAlpB,UAAAyO,MAAAob,iBAAAF,EAAAC,GAEA5Z,EAAA/M,EAAAmlB,WAAA,aACApY,GACAA,EAAAvE,WAAA5K,KAAAipB,aAAAjpB,MAEAkpB,EAAA9mB,EAAAmlB,WAAA,cACA2B,IACAqE,EAAA,SAAArlB,EAAAqN,GACArN,GAAA/I,UAAAsL,KAAAC,UAAA,cACA1K,KAAAsoB,WAAA,YACA/S,EAAA7V,QAAAiW,IAAAxW,UAAAyW,KAAAoV,YAAA,oBAAA,sBACAzV,EAAAiY,OACAjY,EAAApH,YAEAjG,GAAA/I,UAAAsL,KAAAC,UAAA,UACA1K,KAAAsoB,WAAA,OACA/S,EAAA7V,QAAAiW,IAAAxW,UAAAyW,KAAAoV,YAAA,mBAAA,sBACAzV,EAAAiY,OACAjY,EAAApH,YAGAoH,EAAA7V,QAAA2pB,QAAAxjB,QAAA,SAAAilB,GACAA,GAAAA,EAAAC,UACAD,EAAA5iB,MAAAA,GACA4iB,EAAAxB,OAAA,iBACAwB,EAAAC,QAAArpB,UAAA,mBAGAopB,EAAAxB,OAAA,UACAwB,EAAAC,QAAArpB,UAAA,eAwDA+rB,EArBA,CACA,CACA9mB,OAAAxH,UAAAsL,KAAAC,UAAA,WACA0gB,UAAA,OACAC,SAAA,SACApmB,MAAA,KAEA,CACA0B,OAAAxH,UAAAsL,KAAAC,UAAA,cACA0gB,UAAA,YACAC,SAAA,SACApmB,MAAA,KAEA,CACA0B,OAAAxH,UAAAsL,KAAAC,UAAA,kBACA0gB,UAAA,WACAC,SAAA,SACAC,cA/CA,SAAA1Y,EAAA9M,EAAA6lB,GACAte,EAAAuF,EAAA+Y,EAAAP,WACA,OAAA/d,EACAlO,UAAAyO,MAAAuC,sBAAA9C,GAAA2H,OAAA,qBAEA,OA2CA/P,MAAA,MAIA0Q,EAAAxW,UAAAyW,KAAAoV,YAAA,mBAAA,sBAEA,aAAAhrB,KAAAsoB,aACA3S,EAAAxW,UAAAyW,KAAAoV,YAAA,oBAAA,uBAEA0C,EAAA,UACAC,EAAA,yBAEA,QAAA3tB,KAAAsoB,aACAoF,EAAA,yBACAC,EAAA,WAEA3tB,KAAAuV,KAAA,IAAAoU,SAAAT,EAAA,CACAG,QAAA,CACA,CAAAnhB,KAAA/I,UAAAsL,KAAAC,UAAA,aAAA4e,OAAAqE,EAAApE,QAAAgE,EAAAngB,KAAApN,OACA,CAAAkI,KAAA/I,UAAAsL,KAAAC,UAAA,QAAA4e,OAAAoE,EAAAnE,QAAAgE,EAAAngB,KAAApN,QAEA4pB,YAAA6D,EACA9X,IAAAA,EACAoU,YAAA,EACAC,YAAA,EACAC,YAAA,EACAC,cAAA,OACAC,kBAAA,SACAyD,WAAA,EACAC,kBAAA7tB,KAAA8tB,iBACA1D,eAAA,EACAC,YAAA,EACAC,YAAA,EACAC,eAAA,EACAC,mBAAA,EACAvlB,MAAA,IACAjE,OAAA,IACAypB,QAAA,GACAE,WAAA,EACAqB,UAAApD,EAAAjhB,QAEA3H,KAAAuV,KAAAxH,SAAA,WAlEA,SAAA+d,GACA,IAAAhmB,EAAAgmB,EAAAhmB,IAAAyP,EAAAuW,EAAAC,OACA/U,EAAAzB,EAAA7V,QAAAkT,KAAA9M,GACA,IAAA3G,UAAAmW,mBAAA,CAAA/J,QAAAyL,EAAA/B,QAAAM,KAAAA,IACAF,QA8DAjI,KAAApN,OACAA,KAAAopB,WAIA0E,iBAAA,SAAAhC,GACA,IAMAiC,EANA3rB,EAAA0pB,EAAAjf,OACA+F,EAAAkZ,EAAAkC,QAEA5rB,EAAAoE,SAAA,UAAA,aAEAoM,EAAAgZ,YAAAhZ,EAAAgZ,WAAAjrB,UACAotB,EAAA,IAAAnsB,QAAA,qBAAA,CAAAC,MAAA,0CAAA6G,OAAAtG,IACA6rB,aAAA,QAAA,iBACAF,EAAAnjB,WAAA,WACA5K,KAAAkuB,aAAApC,IACA1e,KAAApN,OAEA4S,EAAAgZ,WAAA/lB,QAAA,SAAAsoB,GACA,IAAAC,EAAA,IAAAxsB,QAAA,OAAA8G,OAAAtG,GACAisB,EAAA,IAAAzsB,QAAA,SAAA8G,OAAA0lB,GACAE,EAAA,IAAA1sB,QAAA,wBAAA8G,OAAA2lB,GAEA,IAAA,GADAC,EAAA1b,KAAAub,GACAI,SACAD,EAAAE,SAAA,GAEAtmB,EAAAimB,EAAAM,YACAvmB,EAAAL,SAAA,OACAK,GAAA,KAAAimB,EAAA7X,MAAA,KACA,IAAA1U,QAAA,OAAA,CAAAmF,KAAAmB,EAAArG,MAAA,iBAAA6G,OAAA2lB,OAKAH,aAAA,SAAApC,GACA,IAGA5S,EAHA9W,EAAA0pB,EAAAjf,OACA+F,EAAAkZ,EAAAkC,QAIApC,EAAA,GAKAA,EAHAhZ,EAAA6Z,UACAvT,EAAA,YACA9W,EAAAqY,YAAA,gCACAiU,IAAA,SAAAC,GACAR,EAAAQ,EAAA/b,KAEA,OADAub,EAAAI,MAAA,EACAJ,MAIAjV,EAAA,WACA9W,EAAAqY,YAAA,wBACAiU,IAAA,SAAAC,GACA,IAAAR,EAAAQ,EAAA/b,KAEA,OADAub,EAAAI,MAAAI,EAAAH,QAAA,EAAA,EACAL,KAIAxY,EAAAxW,UAAAyW,KAAAoV,YAAA9R,GAAA,gBAAAtG,EAAAqC,QACA,IAAA9V,UAAA2W,QAAA,CACAH,IAAAA,EACAuD,OAAA,OACAtG,KAAAwH,OAAAC,OAAAtE,KAAAoE,UAAAyR,IACA5V,UAAA,WACA7W,UAAAyO,MAAA4J,aAAA,WAEAxX,KAAAuV,KAAAqZ,WACAxhB,KAAApN,QACAoW,QAGA6S,aAAA,WACA,IAaA9Z,EAbA/M,EAAAlC,EAAAF,KAAAH,aACAuC,KAGA+M,EAAA/M,EAAAmlB,WAAA,gBAEAvnB,KAAAuV,KAAA7V,QAAAssB,UAAA7c,EAAAxH,QAEAwH,EAAA/M,EAAAmlB,WAAA,cAEAvnB,KAAAuV,KAAA7V,QAAAusB,QAAA9c,EAAAxH,OAEAukB,EAAA,IACA/c,EAAAnP,KAAAH,YAAA0nB,WAAA,iBAEA2E,EAAA/c,EAAAxH,OAEA3H,KAAAuV,KAAAsZ,OAAA3C,EAAA,WAAA,CAAA,WAGA9C,OAAA,WACA,IAOAgD,EAQAnnB,EACAjE,EAhBAqrB,EAAArsB,KAAA2J,UAAA5F,SAAA,UAAAC,QACAhE,KAAA4J,WACAyiB,GAAArsB,KAAA4J,SAAA7F,SAAA,UAAAC,SAEAhE,KAAAH,YAAA2G,SAAA,SAAA6lB,GAEArsB,KAAAuV,OACA6W,EAAA,KACAhqB,EAAAlC,EAAAF,KAAAH,gBAEAysB,EAAAlqB,EAAAmlB,WAAA,wBAEA6E,EAAAE,EAAAnrB,aAGA8D,EAAA7C,EAAAmqB,WAAAnqB,EAAA2B,SAAA,eAAAC,QAAA5B,EAAA2B,SAAA,gBAAAC,QACAhD,EAAAqrB,EAAAD,EAAA,GAAAhqB,EAAA2B,SAAA,iBAAAC,QAEAhE,KAAAuV,KAAAiX,QAAAvnB,EAAAjE,OChSA7B,UAAAsF,QAAAmoB,MAAA,IAAAvtB,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,kBAAA,eAAA,gBAEAC,QAAA,CACA8J,YAAA,iBACA8M,MAAA,KACAwY,aAAA,EACApW,aAAA,KACAqW,WAAA,KACAC,YAAA,KACAvY,QAAA,KACAwY,iBAAA,KACAC,UAAA,MAGAC,oBAAA,KAEApvB,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAxJ,QAAA,WACAH,KAAAmvB,sBACAjvB,EAAAF,KAAAmvB,qBAAAhvB,UACAH,KAAAmvB,oBAAA,MAGAnvB,KAAA6M,UAGA6L,aAAA,WACA,mBAAA1Y,KAAAN,QAAAgZ,cACA1Y,KAAAN,QAAAgZ,aAAA1Y,KAAAH,cAGA6E,KAAA,WACA,IAUAnB,EAuBA6rB,EAjCApvB,KAAA2J,WAAA3J,KAAAN,QAAA4W,QAGAtW,KAAA6M,SAEA7M,KAAAmvB,oBAAA,IAAAvtB,QAAA,WAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,OACA7B,MAAA3H,KAAAN,QAAAsvB,aAAA7vB,UAAAsL,KAAAC,UAAA,4BACA3I,aAAA/B,KAAAH,aACAG,KAAAmvB,oBAAA9nB,MAAA4d,MAAAjlB,KAAAN,QAAAuvB,kBAAA,QACA1rB,EAAAvD,MAEAmvB,oBAAAphB,SAAA,QAAA,WACA,IAAApG,EAAAxI,UAAAyO,MAAAC,gBAAA7N,MAMA,OALA2H,GAAAxI,UAAAsL,KAAAC,UAAA,2BAAA/C,GAAApE,EAAA7D,QAAAsvB,cACA7vB,UAAAyO,MAAAE,gBAAA9N,KAAA,IACAA,KAAAqH,MAAA4d,MAAA1hB,EAAA7D,QAAAwvB,WAAA,YAGA,GACA9hB,KAAApN,KAAAmvB,sBAGAnvB,KAAAmvB,oBAAAphB,SAAA,OAAA,WAOA,OALA,GADA5O,UAAAyO,MAAAC,gBAAA7N,MACAW,SACAxB,UAAAyO,MAAAE,gBAAA9N,KAAAuD,EAAA7D,QAAAsvB,aAAA7vB,UAAAsL,KAAAC,UAAA,2BACA1K,KAAAqH,MAAA4d,MAAA1hB,EAAA7D,QAAAuvB,kBAAA,SAGA,GACA7hB,KAAApN,KAAAmvB,sBAEAC,EAAA,IAAAxtB,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,OACAgB,MAAA,IAAAxK,KAAAN,QAAAqvB,WAAA,GAAA/uB,KAAAN,QAAAqvB,YAAA5vB,UAAAsL,KAAAC,UAAA,2BACA3I,aAAA/B,KAAAH,aAEAG,KAAAN,QAAAovB,aACA,IAAAltB,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,QACAzC,KAAA5H,UAAAsL,KAAAC,UAAA,WACA3I,aAAA/B,KAAAH,aACA+K,WAAA5K,KAAAqvB,cAGArvB,KAAA0Y,eAEA0W,EAAAxkB,WAAA5K,KAAAsvB,mBAGAA,gBAAA,WACA,IAAA9Y,EAAArX,UAAAyO,MAAAC,gBAAA7N,KAAAmvB,qBACAI,EAAAvvB,KAAAN,QAAAsvB,aAAA7vB,UAAAsL,KAAAC,UAAA,0BAEA,GAAA8L,GAAA+Y,EAAA,CAUA,IAJA/Y,EAAAA,EAAAO,WAAA,OAAA,SACAA,WAAA,KAAA,SACAA,WAAA,KAAA,SAEAC,EAAA,IAAA7X,UAAAK,OAAA0O,MACA8I,EAAA9O,KAAAlI,KAAAN,QAAA+W,SAAAzW,KAAAN,QAAA6E,MAAA,WACAyS,EAAAC,YAAAT,EACAQ,EAAAE,SAAA,IAAA3J,KAGA,IADA,IAAA4J,EAAAnX,KAAAN,QAAA4W,MAAAvO,MAAA,KACAlH,EAAAsW,EAAAxW,OAAAE,KAAA,CACA,IAAAuW,EAAA,IAAAjY,UAAAgT,SAAAkF,QACAD,EAAAd,MAAAa,EAAAtW,GAAAsH,OACA6O,EAAAM,aAAAF,GAGAjY,UAAAK,OAAA+X,UAAAP,EAEA,WACA7X,UAAAyO,MAAA4J,aAAArY,UAAAsL,KAAAC,UAAA,wBAEAvL,UAAAyO,MAAAE,gBAAA9N,KAAAmvB,oBAAAI,GACAvvB,KAAAmvB,oBAAA9nB,MAAA4d,MAAA1hB,KAAA7D,QAAAuvB,kBAAA,QACA7hB,KAAApN,MAEA,WACAb,UAAAyO,MAAA6J,MAAAtY,UAAAsL,KAAAC,UAAA,iCA/BAvL,UAAAyO,MAAA4J,aAAArY,UAAAsL,KAAAC,UAAA,6BAmCA2kB,aAAA,WACArvB,KAAAmvB,sBAGAnvB,KAAAmvB,oBAAAnhB,IAAA,OAAA7O,UAAAsL,KAAAC,UAAA,2BACA1K,KAAAmvB,oBAAAK,UAAA,MCtIArwB,UAAAsF,QAAAgrB,iBAAA,IAAApwB,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,gBAAA,oBAAA,kBAAA,mBAAA,sBAAA,QAEAC,QAAA,CACA8J,YAAA,4BACA1H,GAAA,oBAGA4tB,WAAA,GACAC,eAAA,KAIA5vB,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,GAIAxK,UAAAywB,SAAAC,aAAA,gCACA1wB,UAAAywB,SAAA7hB,SAAA,+BAAA/N,KAAA8vB,mBAIA3wB,UAAAywB,SAAAC,aAAA,oCACA1wB,UAAAywB,SAAA7hB,SAAA,mCAAA/N,KAAA+vB,gBAGArrB,KAAA,WACA,IAMAsrB,EA4CAC,EAlDA1sB,EAAAvD,KACAkwB,GAAA,EAGAlwB,KAAA2J,YAGAwmB,GADAH,EAAAhwB,KAAA2J,UAAAymB,aACAA,YAEApwB,KAAA6M,SAGA7M,KAAAH,cAGAmwB,EAAAxpB,SAAA,SAAA,QACA2pB,EAAA3pB,SAAA,SAAA,QACAxG,KAAA2J,UAAAnD,SAAA,SAAA,QACAxG,KAAAH,YAAA2G,SAAA,SAAA,QAGAxG,KAAAqwB,aAAA,IAAAzuB,QAAA,MAAA,CACAE,GAAA,+BAEA9B,KAAAqwB,aAAA3nB,OAAA1I,KAAAH,aAGAG,KAAAswB,sBAAA,IAAA1uB,QAAA,MAAA,CACAE,GAAA,+BAEA9B,KAAAswB,sBAAA5nB,OAAA1I,KAAAH,aAGAG,KAAA+gB,SAAA,IAAA5hB,UAAAoxB,SAAA,CACAzuB,GAAA,qBACAnC,UAAAK,KAAAH,YACAinB,UAAA,iBACA0J,WAAA,EACAC,KAAAtxB,UAAAuxB,SAAAC,kBAEA3wB,KAAA+gB,SAAArhB,QAAAkxB,WAAApJ,OAAAzG,SACA5hB,UAAAywB,SAAA7O,SAAA/gB,KAAA+gB,SAEA/gB,KAAA+gB,SAAA8P,UAAA,qCAGA7wB,KAAAH,YAAA2G,SAAA,mBAAA,QAAArH,UAAAyW,KAAA4S,iBAAA,6CAEArpB,UAAAuxB,SAAAI,yBAEAb,EAAA/vB,EAAA,sCACAF,KAAAN,QAAAqxB,gBACAd,EAAAe,WAAAnrB,QAAA,SAAAklB,GACAmF,GAGAnF,EAAAxb,IAAA,SACAhM,EAAA7D,QAAAqxB,iBACAhG,EAAAtK,QACAyP,GAAA,KAIAD,GAAAA,EAAAe,WAAA,KAAAd,GACAD,EAAAe,WAAA,GAAAvQ,YAQAsP,cAAA,WAGA/vB,KAAAixB,iBAAA9xB,UAAAywB,SAAAsB,cAAAC,YAGAnxB,KAAA+gB,SAAAW,cAAAviB,UAAAywB,SAAAsB,cAAA5iB,MAAAnP,UAAAywB,SAAAsB,cAAAnZ,WAAA,GAGA5Y,UAAAyiB,WAAA,IAAAziB,UAAA0iB,WAAA,CACA/f,GAAA9B,KAAAswB,sBAAA/gB,IAAA,MACA6hB,WAAAjyB,UAAAkyB,YAAAX,SACAxoB,KAAA,IACAopB,oBAAA,EACAC,eAAA,EACAC,qBAAAlX,QAAAkX,qBACA1P,gBAAA,IAGA9hB,KAAAyxB,kBACAtyB,UAAAywB,SAAAxpB,UAAA,2CAMA6qB,iBAAA,SAAAE,GACA,GAAAA,EAAA,CAEA,GAAAnxB,KAAA2vB,eACA,GAAAwB,EAAAO,OAAA1xB,KAAA2vB,eAAA+B,OACA,GAAAP,EAAAO,QAAA1xB,KAAA2vB,eAAA+B,MAAA,YAEA,GAAAP,EAAA3sB,OAAAxE,KAAA2vB,eAAAnrB,MAAA2sB,EAAA5sB,QAAAvE,KAAA2vB,eAAAprB,MAAA,OAKAvE,KAAA2xB,gBAAAR,GACAnxB,KAAA4xB,mBAEA5xB,KAAA2vB,eAAAwB,OAIAnxB,KAAA6xB,kBACA7xB,KAAA4xB,oBAIAC,gBAAA,WACA7xB,KAAA0vB,WAAA,GACA1vB,KAAA2vB,eAAA,MAGAgC,gBAAA,SAAAR,GACAnxB,KAAA0vB,WAAA1iB,KAAAmkB,IAGAS,iBAAA,WACA,IAAAruB,EAAAvD,KAGAA,KAAAqwB,aAAA/vB,QAGAN,KAAA0vB,WAAA7pB,QAAA,SAAAisB,EAAArf,GAEA,IAAA7Q,QAAA,OAAA,CACAC,MAAA,wBACAkF,KAAA+qB,EAAAvtB,MACAic,OAAA,CACAC,MAAA,WAAAld,EAAAwuB,oBAAAD,OAEAppB,OAAAnF,EAAA8sB,cAEA5d,EAAAlP,EAAAmsB,WAAA/uB,OAAA,GACA,IAAAiB,QAAA,OAAA,CACAC,MAAA,8BACAkF,KAAA,OACA2B,OAAAnF,EAAA8sB,iBAMA0B,oBAAA,SAAAD,GACA,IAAAvuB,EAAAvD,KAEA,oBAAA8xB,EAAAttB,MAEAxE,KAAA6xB,kBACA1yB,UAAAywB,SAAAoC,uBAIAhyB,KAAA0vB,WAAA7pB,QAAA,SAAAsD,EAAAsJ,GAEAqf,EAAAJ,QAAAvoB,EAAAuoB,OAAA,MAAAvoB,EAAAuoB,QAEAnuB,EAAAmsB,WAAAnsB,EAAAmsB,WAAApO,MAAA,EAAA7O,GAGAtT,UAAAywB,SAAAqC,WAAA9oB,OAUA2mB,kBAAA,WAEA9vB,KAAA+gB,SAAAmR,QAEAlyB,KAAA6xB,kBAGA,IAAAM,EAAAjyB,EAAA,2BACAiyB,GACAA,EAAA3rB,SAAA,mBAAA,QAAArH,UAAAyW,KAAA4S,iBAAA,4CAKAiJ,gBAAA,WAEA,IAAAU,EAAAjyB,EAAA,2BACAiyB,GACAA,EAAA3rB,SAAA,mBAAA,WCzOArH,UAAAsF,QAAA2tB,UAAA,IAAA/yB,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,qBACAqP,QAAA,WACAiU,MAAA,OACA5hB,MAAA,GACA6hB,UAAA,EACA/G,WAAA,WACA/N,OAAA,WAGAlY,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAMAsH,EACA2J,EAPA3V,KAAA2J,YAGA3J,KAAA6M,SAGAb,EAAA,IAAApK,QAAA,MAAAG,aAAA/B,KAAAH,aACA8V,EAAAxW,UAAAyW,KAAAC,aAAA,UAAA,4BAAA7V,KAAAN,QAAAmZ,QAAA,UAAA7Y,KAAAN,QAAAotB,MAAA,YAAA9sB,KAAAN,QAAAwL,MAGA/L,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAE,cACAhE,GAAA,UAAAxW,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAE,aAEA3Z,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACAK,UAAA,SAAA/F,GACA,GAAAA,EAAA,CAGAjE,EAAA1L,QAGA,IAAA0a,EAAA/K,EAAAgL,cACA,GAAAD,GAAA,GAAAA,EAAAra,OAIA,IAAA,IAAAE,EAAA,EAAAA,EAAAma,EAAAra,OAAAE,IAAA,CACA,IAAAwxB,EAAArX,EAAAna,GACAwM,EAAAlO,UAAAyO,MAAAuC,sBAAAkiB,EAAAC,aAAAtd,OAAAhV,KAAAN,QAAAsmB,YACArQ,EAAA,IAEA0c,EAAAlzB,UAAAyO,MAAA2kB,mBAAAF,GAGA,GAAA,SAAAryB,KAAAN,QAAAuY,OAAA,CACA,KAAA,EAAAoa,EAAA/V,QAGA,SAFA3G,EAAA,WAAA0c,EAAA/V,OAIA+V,EAAApW,aAAA,iBAAAoW,EAAApW,YAAAE,QACAxG,GAAA,UAAA0c,EAAApW,YAAAE,OACAkW,EAAAG,SAAArzB,UAAAoV,aAAAyL,YACArK,GAAA,aAAA0c,EAAAG,UAEA7c,GAAA,SAAAxW,UAAAyY,QAAA5D,WAIA,IAAAzD,EAAA,IAAA3O,QAAA,KAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzH,aAAAiK,GAYA4U,GAVA,IAAAhf,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,OACAoT,IAAAzd,UAAAyO,MAAAiP,mBAAAwV,GACA7R,OAAA,CACAC,MAAA,SAAAC,GACAnd,KAAA2d,aAAAR,EAAA2R,OAGAtwB,aAAAwO,GAEA,IAAA3O,QAAA,IAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,OACAzC,KAAA/G,KAAAN,QAAAqtB,SAAA1f,EAAA,MAAAglB,EAAAnqB,KAAAmqB,EAAAnqB,KACA3D,MAAA8tB,EAAAnqB,KACAia,KAAAxM,EACAoW,OAAA,cACAhqB,aAAAwO,IAGA,YAAAvQ,KAAAN,QAAAuY,SACA2I,EAAAhO,KAAAvO,OAAAgO,YAAAggB,GACAzR,EAAAhW,WAAA,WACAzL,UAAAwV,cAAAC,kBAAA5U,KAAA4S,YAIAxF,KAAApN,MACAmW,UAAAhX,UAAAyO,MAAAuI,YAEAnW,KAAA8J,QAAAsM,WCtGAjX,UAAAsF,QAAAguB,eAAA,IAAApzB,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,WAEAC,QAAA,CACA8J,YAAA,0BACA+M,MAAA,MAGAxW,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAAAnB,EAAAvD,KAEAA,KAAA2J,YAIA3J,KAAA6M,SAEA7M,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA,CACAJ,IAAAxW,UAAAyW,KAAAC,aAAA,WAAA,mBACAqD,OAAA,MACAlD,UAAA,SAAAsK,GACA/c,EAAA7D,QAAA6gB,UAEA,IAAA3e,QAAA,OAAA,CACAC,MAAA,UACA2e,OAAA,CACAC,MAAA,SAAAC,GACAnd,EAAAod,QAAAD,EAAAJ,KAGAvZ,KAAA,eACAhF,aAAAwB,EAAAoG,WAEA2W,EAAAtF,cAAAnV,QAAA,SAAAwsB,GACA,IAAAzR,EAAA,IAAAhf,QAAA,MAAA,CACAC,MAAA,YACA2e,OAAA,CACAC,MAAA,SAAAC,GACAnd,EAAA2d,aAAAR,EAAA2R,OAGAtwB,aAAAwB,EAAA1D,aAEA,IAAA+B,QAAA,MAAA,CACAC,MAAA,iBACA+a,IAAA,4DACA7a,aAAA6e,GAEA,IAAAhf,QAAA,OAAA,CACAC,MAAA,iBACAkF,KAAAsrB,EAAAnqB,KACA3D,MAAA8tB,EAAAnqB,OACAnG,aAAA6e,QAIA5gB,KAAA8J,QAAAsM,SAGA8K,aAAA,SAAAR,EAAA7I,GACA6I,EAAAc,kBACAriB,UAAAwV,cAAAC,kBAAAiD,IAGA8I,QAAA,SAAAD,EAAAJ,GAEAnhB,UAAAsiB,SAAA/T,OACAqT,SAAAW,cAAApB,EAAAtF,eAEA7L,EAAAjP,EAAA,cACAiP,GACAA,EAAAkG,OAGA,MAAAlW,UAAAwiB,aACAxiB,UAAAyiB,WAAAzhB,UACAhB,UAAAyiB,WAAA,MAGA1hB,EAAA,gBAAAI,QAEAnB,UAAAyiB,WAAA,IAAAziB,UAAA0iB,WAAA,CACA3Z,KAAA,eACA4Z,gBAAA,OCzFA3iB,UAAAsF,QAAAiuB,gBAAA,IAAArzB,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,cAAA,aAAA,mBAAA,yBAAA,eAEAC,QAAA,CACA8J,YAAA,2BACAqP,QAAA,KACAiU,MAAA,OACAhV,QAAA,KACAF,QAAAzY,UAAAyY,QAAAC,KACArG,KAAA,WACAkJ,OAAA,EACAzB,QAAA,EACA0Z,WAAA,EACAC,UAAA,EACAC,OAAA,EACAC,YAAA,EACA/a,YAAA,EACAgb,QAAA,EACAC,WAAA,EACAC,WAAA,EACAC,aAAA,KACAC,cAAA,GACAC,OAAA,KACAlb,gBAAA,EACAmb,kBAAA,CACAC,eAAAn0B,UAAAm0B,eAAAC,UAEAC,sBAAA,CACAC,QAAA,EACA9V,IAAA,IAEA5J,YAAA5U,UAAA4U,YAAA8D,KACA6b,cAAA,KACAxZ,eAAA,MAGAyZ,eAAA,KACAC,aAAA,KACAC,QAAA,KACAC,WAAA,KACAC,QAAA,KAEAC,aAAA,KACAC,aAAA,KACAC,mBAAA,KAEAC,gBAAA,KAEAp0B,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GAEAM,KAAAN,QAAAmZ,UACA7Y,KAAAN,QAAAkY,SAAAzY,UAAAyY,QAAAzD,eACAnU,KAAAN,QAAAmZ,QAAA,mBAEA7Y,KAAAN,QAAAmZ,QAAA,oBAGA7Y,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAmP,OAAA,WAGA,IAAAC,EAAA/Y,KAAAoE,eACApE,KAAAoE,gBAAA,EAEApE,KAAAG,UACAH,KAAA0E,OAGA1E,KAAAoE,eAAA2U,GAGA5Y,QAAA,WACAH,KAAA6M,SAGA,IADA,IAAA3C,EAAA,CAAAlK,KAAA2zB,eAAA3zB,KAAA4zB,aAAA5zB,KAAAo0B,UAAAp0B,KAAAq0B,aAAAr0B,KAAAs0B,WACAzzB,EAAAqJ,EAAAvJ,OAAAE,KACAqJ,EAAArJ,KACAX,EAAAgK,EAAArJ,IAAAV,UACA+J,EAAArJ,GAAA,MAIAb,KAAAg0B,eACAh0B,KAAAg0B,aAAA/pB,SACAjK,KAAAg0B,aAAA,MAGAh0B,KAAAi0B,eACAj0B,KAAAi0B,aAAA9zB,UACAH,KAAAi0B,aAAA,MAGAj0B,KAAAk0B,qBACAK,cAAAv0B,KAAAk0B,oBACAl0B,KAAAk0B,mBAAA,MAGAl0B,KAAAm0B,kBACAI,cAAAv0B,KAAAm0B,iBACAn0B,KAAAm0B,gBAAA,OAIAzvB,KAAA,WACA,IAuGAuV,EAwCAua,EAyBAjxB,EAEAoS,EA1KA3V,KAAA2J,YAAA,YAAA3J,KAAAN,QAAA8R,MAAAxR,KAAAN,QAAAoY,SAAA,EAAA9X,KAAAN,QAAAgb,SAGA1a,KAAA6M,SAEA7M,KAAA8J,UACA9J,KAAA8J,QAAAG,SACAjK,KAAA8J,QAAA,MAGA9J,KAAAN,QAAAmzB,QACA7yB,KAAAy0B,kBACAjN,OAAAzZ,SAAA,SAAA/N,KAAA00B,kBAEA,EAAA10B,KAAAN,QAAAozB,aACA9yB,KAAA20B,mBAGA30B,KAAA2zB,eAAA,IAAA/xB,QAAA,MAAA,CACAC,MAAA7B,KAAAN,QAAA8J,YAAA,aACAd,OAAA1I,KAAAH,aAEAG,KAAAi0B,aAAA,IAAA90B,UAAAoxB,SAAA,CACAE,KAAA,GACA3uB,GAAA9B,KAAAN,QAAAoC,GAAA,mBACA8yB,aAAA,yBACAj1B,UAAAK,KAAA2zB,eACAnD,WAAA,EACAqE,YAAA,EACA7B,UAAAhzB,KAAAN,QAAAszB,YAEAhzB,KAAAi0B,aAAArc,QAAA5X,KAAAN,QAAAkY,QACA5X,KAAAi0B,aAAAv0B,QAAAkxB,WAAA7P,SAEA/gB,KAAAN,QAAAmzB,QACA7yB,KAAAg0B,aAAA,IAAA1iB,GAAAwjB,MAAA90B,KAAAN,QAAAoC,GAAA,mBAAA,CACA2P,SAAA,IACAsjB,KAAA,SACAC,SAAA,OACAnX,WAAA7d,KAAA00B,iBAAAtnB,KAAApN,SAIA,YAAAA,KAAAN,QAAA8R,MAEAxR,KAAAN,QAAAkY,SAAAzY,UAAAyY,QAAAzD,gBAAA,GAAAnU,KAAAN,QAAAuZ,SAAA9Z,UAAAia,mBAAAja,UAAAia,kBAAAC,kBACArZ,KAAAN,QAAAuZ,QAAA9Z,UAAAia,kBAAAC,gBAAAC,OAEA3D,EAAA,KAEAA,EADA3V,KAAAN,QAAAkY,SAAAzY,UAAAyY,QAAA8I,MACAvhB,UAAAyW,KAAAoV,YAAA,YAEA9R,EAAAlZ,KAAAN,QAAAqY,WAAA,QAAA/X,KAAAN,QAAAizB,UAAA,SAAA,WACA3yB,KAAAN,QAAAkY,SAAAzY,UAAAyY,QAAAzD,iBACA+E,EAAAlZ,KAAAN,QAAAqY,WAAA,QAAA,aAEA5Y,UAAAyW,KAAAC,aAAAqD,IAGAvD,GAAA,sBAAA3V,KAAAN,QAAAmZ,QAAA,UAAA7Y,KAAAN,QAAAotB,MAAA,SAAA9sB,KAAAN,QAAAuZ,QAAA,QAAAjZ,KAAAN,QAAAgb,MAAA,UAAA9K,mBAAA5P,KAAAN,QAAAoY,SAEA3Y,UAAAyM,OAAA2N,iBACAvZ,KAAAN,QAAAkY,SAAAzY,UAAAyY,QAAAC,MAAA1Y,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAI,OACAlE,GAAA,UAAAxW,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAI,OACA7Z,KAAAN,QAAAkY,SAAAzY,UAAAyY,QAAAzD,gBAAAhV,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAC,UACA/D,GAAA,UAAAxW,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAC,UAGAha,EAAA,CACAiW,IAAAA,EACAK,UAAA,SAAA/F,GACAA,GAAAA,EAAA2C,MAAA3C,EAAA2C,KAAA,KAGA5S,KAAAN,QAAAg0B,eAAA,aAAAvwB,OAAAnD,KAAAN,QAAAg0B,iBACAzjB,EAAAjQ,KAAAN,QAAAg0B,cAAAzjB,IAGAjQ,KAAAi0B,aAAAgB,aAAAhlB,GACAjQ,KAAAN,QAAAmzB,OACA7yB,KAAA00B,mBAEA10B,KAAAN,QAAAkzB,WACAlY,EAAAzK,EAAA2C,KAAA,GAAA8e,OAAA,EAEA,IAAA9vB,QAAA,IAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,aACAgB,KAAArL,UAAAsL,KAAAC,UAAA,yBACAyX,KAAA,UAAAzH,EAAA,SAAA1a,KAAAN,QAAAkY,UACA7V,aAAA/B,KAAA4J,UACAgB,WAAA,WAEAzL,UAAAyO,MAAAsnB,aAAA/1B,UAAAyO,MAAAunB,WAAA,QAGA/nB,KAAApN,MACAmW,UAAAhX,UAAAyO,MAAAuI,WAGAnW,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA/V,KAAAo1B,kBAAA11B,IACAM,KAAA8J,QAAAsM,SAGA6D,EAAA,SAAAhK,GACA,GAAAA,GAAAA,EAAA2C,MAAA3C,EAAA2C,KAAA,GAAA,CAIA,IAAA,IAAA/R,EAAAoP,EAAA2C,KAAAjS,OAAAE,KAAA,CACA,GAAA,kBAAAb,KAAAN,QAAA8R,KAAA,CAGAvB,EAAA2C,KAAA/R,GAAAw0B,cAAA,EAEA,IADA,IAAAC,EAAAn2B,UAAAyO,MAAA2nB,mBAAAtlB,EAAA2C,KAAA/R,IACAmB,EAAA,EAAAwzB,EAAAF,EAAA30B,OAAAqB,EAAAwzB,EAAAxzB,IAAA,CACA,IAAAqkB,EAAA,KAEAiP,EAAAtzB,GAAA6F,SAAA,kBAEAwe,EAAAlnB,UAAAsL,KAAAC,UAAA,oBAEA4qB,EAAAtzB,GAAA6F,SAAA,mBAEAwe,EAAAlnB,UAAAsL,KAAAC,UAAA,qBAEAnH,EAAAkyB,SAAA50B,GAAA,CACA60B,QAAAJ,EAAAz0B,GACAwlB,QAAAA,IAIA,IAAAvT,EAAA3T,UAAAyO,MAAA+nB,qBAAA1lB,EAAA2C,KAAA/R,IAAA,GACA,GAAAoP,EAAA2C,KAAA/R,GAAA+0B,WAAAz2B,UAAA8T,WAAA4iB,cAAA/iB,KACA7C,EAAA2C,KAAA/R,GAAA+0B,UAAA,GAGA51B,KAAAi0B,aAAAgB,aAAAhlB,GAEAjQ,KAAAN,QAAAmzB,OACA7yB,KAAA00B,qBACAtnB,KAAApN,MAEAA,KAAAN,QAAAqU,aAAA5U,UAAA4U,YAAA+hB,YACAtB,EAAAnwB,OAAAC,MAAA,GAAA,CAAAyxB,QAAA/1B,KAAAN,QAAAyzB,eAAAnzB,KAAAN,QAAA2zB,mBACA,UAAArzB,KAAAN,QAAA8R,KACAxR,KAAA8J,QAAA3K,UAAAyO,MAAAooB,qBAAAxB,GAAA,EAAAva,GACA,WAAAja,KAAAN,QAAA8R,OACAxR,KAAA8J,QAAA3K,UAAAyO,MAAAqoB,sBAAAzB,GAAA,EAAAva,MAGA,SAAAja,KAAAN,QAAA8R,OACAxR,KAAA8J,QAAA3K,UAAAyO,MAAAsoB,iBAAAl2B,KAAAN,QAAAyzB,cAAAlZ,EAAA,KAAA,cAAA9a,UAAAqa,OAAAC,YAAAI,MAAA,KAAA7Z,KAAAN,QAAA0zB,OAAApzB,KAAAN,QAAAwY,eAAAlY,KAAAN,QAAAwa,iBACA,UAAAla,KAAAN,QAAA8R,KACAxR,KAAA8J,QAAA3K,UAAAyO,MAAA5N,KAAAN,QAAAkY,SAAAzY,UAAAyY,QAAAC,KAAA,iBAAA,mBAAA7X,KAAAN,QAAAyzB,cAAAlZ,EAAA,KAAA,KAAA,KAAAja,KAAAN,QAAAwY,eAAAlY,KAAAN,QAAAwa,gBACA,YAAAla,KAAAN,QAAA8R,KACAxR,KAAA8J,QAAA3K,UAAAyO,MAAAuoB,YAAAn2B,KAAAN,QAAAyzB,cAAAnzB,KAAAN,QAAAkY,QAAAqC,EAAAja,KAAAN,QAAAwY,eAAAlY,KAAAN,QAAAwa,gBACA,WAAAla,KAAAN,QAAA8R,KACAxR,KAAA8J,QAAA3K,UAAAyO,MAAAwoB,WAAAp2B,KAAAN,QAAAyzB,cAAAh0B,UAAAyO,MAAAyoB,+BAAAr2B,KAAAN,QAAAkY,QAAA5X,KAAAN,QAAAqzB,QAAA9Y,EAAA,KAAA,KAAAja,KAAAN,QAAAwY,eAAAlY,KAAAN,QAAAwa,gBACA,WAAAla,KAAAN,QAAA8R,MACAmE,EAAAxW,UAAAyW,KAAAC,aAAA,YAAA,0DAAA7V,KAAAN,QAAAyzB,cAAA,QAAAh0B,UAAAia,kBAAA4T,aAEAhtB,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA/V,KAAAo1B,kBAAA,CACAzf,IAAAA,EACAK,UAAAiE,KAEAja,KAAA8J,QAAAsM,QAEA,kBAAApW,KAAAN,QAAA8R,QACAjO,EAAAvD,MACAy1B,SAAA,GACA9f,EAAAxW,UAAAyW,KAAAC,aAAA,YACAF,GAAA,QAAA3V,KAAAN,QAAA8zB,sBAAA7V,IACAhI,GAAA,QAAA3V,KAAAN,QAAA8zB,sBAAAC,OACA9d,GAAA,aACAA,GAAA,UAAAxW,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAI,OAEA7Z,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA/V,KAAAo1B,kBAAA,CACAzf,IAAAA,EACAK,UAAA,SAAA/F,GACAgK,EAAAhK,GACA1M,EAAA+yB,6BAGAt2B,KAAA8J,QAAAsM,YAMAkgB,uBAAA,WAKA,IAJA,IAAAC,EAAAv2B,KAAAi0B,aAAAuC,QAAA/b,YAAA,4BAEAlX,EAAAvD,KAEAa,EAAA,EAAA20B,EAAAe,EAAA51B,OAAAE,EAAA20B,EAAA30B,IACA01B,EAAA11B,GAAA0tB,MAAA,IAAA3sB,QAAA,MAAA,CAAAC,MAAA,2BAAA1C,UAAAyO,MAAA6oB,oBAAAt3B,UAAAu3B,SAAAjP,YAAA1lB,aAAAw0B,EAAA11B,IACA1B,UAAAu3B,SAAAnS,SAAAplB,UAAAu3B,SAAAC,gBACA32B,KAAA42B,YAAAL,EAAA11B,IAGA,IAAA,IAEAg2B,EAGAC,EALAj2B,EATA,EASA20B,EAAAe,EAAA51B,OAAAE,EAAA20B,EAAA30B,IACAA,EAVA,GAUA,IACAg2B,EAAA,IAAAj1B,QAAA,MAAA,CACAC,MAAA,gDAEAi1B,EAAA,IAAAl1B,QAAA,OAAA,CACAC,MAAA,qDACAkF,KAAA,aAGA8vB,EAAAxT,KAAAyT,GACAD,EAAA9oB,SAAA,QAAA,SAAAjK,GAGA,IAFA,IAAAizB,EAAA/2B,KAAAg3B,WAAA,8BAEAh1B,EAAA,EAAAwzB,EADAxvB,KAAAmgB,IAtBA,EAsBA4Q,EAAAp2B,QACAqB,EAAAwzB,EAAAxzB,IACA+0B,EAAA/0B,GAAAqT,OAGA,IAAA4hB,EAAAj3B,KAAAk3B,QAAA,wBACAD,GACAA,EAAAzwB,SAAA,UAAA,gBAGAxG,KAAAG,UAEAoD,EAAA7D,QAAAmzB,OACAtvB,EAAAmxB,qBAGA6B,EAAA11B,GAAAwiB,KAAAwT,EAAA,WAGAN,EAAA11B,GAAA6M,OAGA1N,KAAAN,QAAAmzB,OACA7yB,KAAA00B,oBAGAkC,YAAA,SAAAO,GACAA,EAAA5I,OACA4I,EAAA5I,MAAAjuB,QAGA,IADA,IAAAg1B,EAAAn2B,UAAAyO,MAAA2nB,mBAAAv1B,KAAA4S,MACA/R,EAAA,EAAA20B,EAAAF,EAAA30B,OAAAE,EAAA20B,EAAA30B,IAEA,IAAAe,QAAA,MAAA,CACAC,MAAAyzB,EAAAz0B,GAAA,gBACA0D,MAHA,OAIAxC,aAAAo1B,EAAA5I,QAIA6G,kBAAA,SAAA11B,GAEA,IAIAkT,EAoBA,OAxBA5S,KAAAN,QAAAwY,gBAAA,mBAAAoC,QAAAC,aAAA,mBAAAva,KAAAN,QAAAwa,iBAEAtH,EAAA,CAAA4H,QAAAxa,KAAAN,QAAAkY,UAEAhF,EADA,mBAAA5S,KAAAN,QAAAwa,eACAla,KAAAN,QAAAwa,eAAAtH,EAAAlT,EAAAiW,KAEA2E,QAAAC,YAAA3H,EAAAlT,EAAAiW,QAKA,iBAAA/C,EAAAA,OACAA,EAAAA,KAAAmD,KAAAoE,UAAAvH,EAAAA,OAEA,oBAAAwH,SACAxH,EAAAA,KAAAwH,OAAAC,OAAAzH,EAAAA,OAGAlT,EAAAkT,KAAAA,EAAAA,KACAlT,EAAAwZ,OAAA,OACAxZ,EAAAiW,IAAA/C,EAAA+C,MAIAjW,GAGA+0B,gBAAA,WACAz0B,KAAA4zB,aAAA,IAAAhyB,QAAA,IAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,mBACAd,OAAA1I,KAAAH,aACAG,KAAAN,QAAAuzB,YACAjzB,KAAAo0B,UAAA,IAAAxyB,QAAA,OAAA8G,OAAA1I,KAAA4zB,cAEA5zB,KAAAo0B,UAAAxX,IAAAzd,UAAAyW,KAAAwhB,iBAAA,mBAAAp3B,KAAAN,QAAAwzB,cAAA,QAGAlzB,KAAA4zB,aAAA7lB,SAAA,YAAA/N,KAAAq3B,YAAApzB,MAAA,IACAjE,KAAA4zB,aAAA7lB,SAAA,UAAA/N,KAAAs3B,YACAt3B,KAAA4zB,aAAA7lB,SAAA,WAAA/N,KAAAs3B,YAEAt3B,KAAAq0B,aAAA,IAAAzyB,QAAA,IAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,oBACAd,OAAA1I,KAAAH,aACAG,KAAAN,QAAAuzB,YACAjzB,KAAAs0B,UAAA,IAAA1yB,QAAA,OAAA8G,OAAA1I,KAAAq0B,cAEAr0B,KAAAs0B,UAAA1X,IAAAzd,UAAAyW,KAAAwhB,iBAAA,eAAAp3B,KAAAN,QAAAwzB,cAAA,QAGAlzB,KAAAq0B,aAAAtmB,SAAA,YAAA/N,KAAAq3B,YAAApzB,MAAA,IACAjE,KAAAq0B,aAAAtmB,SAAA,UAAA/N,KAAAs3B,YACAt3B,KAAAq0B,aAAAtmB,SAAA,WAAA/N,KAAAs3B,aAIAD,YAAA,SAAAE,GACAhD,cAAAv0B,KAAAk0B,oBACAl0B,KAAAw3B,SAAAD,GAGAv3B,KAAAk0B,mBAAAuD,YAAA,WACAz3B,KAAAw3B,SAAAD,IACAnqB,KAAApN,MAAA,KAGAu0B,cAAAv0B,KAAAm0B,iBACAn0B,KAAAm0B,gBAAA,MAIAmD,WAAA,WACA/C,cAAAv0B,KAAAk0B,oBACAl0B,KAAA00B,mBAGA,EAAA10B,KAAAN,QAAAozB,aACA9yB,KAAA20B,mBAIAA,gBAAA,WAEA30B,KAAAm0B,kBAGAn0B,KAAAm0B,gBAAAsD,YAAA,WACAz3B,KAAAw3B,UAAA,GAAA,IACApqB,KAAApN,MAAAA,KAAAN,QAAAozB,eAGA0E,SAAA,SAAAE,EAAAC,GACA,IAKAC,EAEAC,EAMAC,EACAC,EACAC,GAfAh4B,KAAAi0B,eAGA9B,EAAAjyB,EAAAF,KAAAi0B,aAAAuC,WACAx2B,KAAAg0B,eACA4D,EAAAzF,EAAApuB,SAAA,QAAAC,QAEA6zB,EAAA73B,KAAAi4B,aAAA9F,GACAltB,EAAAktB,EAAA9U,wBAAApY,MAKA6yB,GAJAI,EAAA/F,EAAA/B,YAAA/S,wBAAApY,OAIAA,EAAAizB,EAAAjzB,EAAA,EACA8yB,EAJA,EAKAC,EAAAhyB,KAAAmgB,IAEAuR,IAEAG,GAAAA,EACAG,EAAAhyB,KAAAC,IACA8xB,EAAAD,GAKAF,EAFAD,GAAAC,GAAAG,EAEAL,EAAA,EAAAI,EAIAE,EAAAJ,EAAAC,EAAAE,GAGA/3B,KAAAg0B,aAAAmE,MAAAP,KAIAK,aAAA,SAAA9F,GACA,IAAAltB,EAAA,IAEAsxB,EAAApE,EAAAiG,cACA,GAAA7B,GAAAA,EAAA,GAOA,IANA,IAAAY,EAAAZ,EAAA,GACAtxB,EAAAkyB,EAAA9Z,wBAAApY,MAGAozB,EAAA,CAAA,SAAA,UAAA,gBACAC,EAAA,CAAA,OAAA,SACAz3B,EAAAw3B,EAAA13B,OAAAE,KACA,IAAA,IAAAmB,EAAAs2B,EAAA33B,OAAAqB,KAAA,CACA,IAAAu2B,EAAAF,EAAAx3B,GACA03B,EAAA1wB,SAAA,KACA0wB,EAAAA,EAAApX,QAAA,IAAAmX,EAAAz3B,IAEA03B,GAAAD,EAAAz3B,GAEA23B,GAAArB,EAAApzB,SAAAw0B,IAAA,KAAAv0B,QACA,EAAAw0B,IACAvzB,GAAAuzB,GAKA,OAAAvzB,GAGAyvB,iBAAA,WACA,IAGAvC,EAGAyF,EAaAzoB,EACAigB,EAIAqJ,GAxBAz4B,KAAAi0B,eAGA9B,EAAAjyB,EAAAF,KAAAi0B,aAAAuC,YAGAoB,EAAAzF,EAAApuB,SAAA,QAAAC,QACAmL,EAAAnP,KAAAo0B,UACAhF,EAAApvB,KAAA4zB,aACA6E,EAAA,GAAAb,EAEAzoB,GAAAigB,EACAjwB,UAAAyO,MAAA8qB,eAAAvpB,EAAAigB,EAAAqJ,GAEArJ,GACAA,EAAA3R,YAAA,WAAAgb,GAIAtpB,EAAAnP,KAAAs0B,UACAlF,EAAApvB,KAAAq0B,aAIAoE,EAHAb,EAAAzF,EAAA9U,wBAAApY,MAAA,GACAktB,EAAA/B,YAAA7D,WAGApd,GAAAigB,EACAjwB,UAAAyO,MAAA8qB,eAAAvpB,EAAAigB,EAAAqJ,GACArJ,GACAA,EAAA3R,YAAA,WAAAgb,OCpiBAt5B,UAAAsF,QAAAk0B,MAAA,IAAAt5B,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,4BAAA,kBAAA,eAAA,aAEAkK,UAAA,KAEAjK,QAAA,CACA8J,YAAA,iBACAovB,SAAA,KACAC,UAAA,KACA/2B,GAAA,KAGAyU,MAAA,KACAtR,MAAA,KACAjE,OAAA,KACA4jB,gBAAA,KACAsK,UAAA,MAGAnvB,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GAEAM,KAAA2J,UAAAA,EACA3J,KAAAN,QAAAm5B,UAAA74B,KAAAN,QAAAm5B,UAAA7lB,cACAhT,KAAAN,QAAAo5B,WAAA94B,KAAAN,QAAA6W,MACAvW,KAAAN,QAAA6W,MAAA,KACAvW,KAAA4S,KAAA,KAEA5S,KAAA6M,OAAA7M,KAAAN,QAAAiK,EAAA,KAAA,WAGAzJ,EAAA,yBAEAF,KAAA+4B,4BAGA/4B,KAAAg5B,WAAA,2CAAAh5B,KAAA+4B,2BAIApvB,EAAAqE,IAAA,OAAA,gBAAAhO,KAAAN,QAAAoC,OAKAk3B,WAAA,SAAApc,EAAAqc,GAEA,IAAAC,EAAAC,SAAAC,qBAAA,QAAA,GACAC,EAAAF,SAAAG,cAAA,UAEAD,EAAAv3B,GAAA,wBACAu3B,EAAA70B,KAAA,kBACA60B,EAAAzc,IAAAA,EACAyc,EAAAE,OAAAN,EACAC,EAAAM,YAAAH,IAGAN,0BAAA,WAEA,IAAAx1B,EAAAvD,KAEA,IAEAy5B,OAAAC,OAAAh1B,KAAA,UAAA,CAAAi1B,SAAA,CAAA,YAAA,UAGAF,OAAAC,OAAAE,kBAAAr2B,EAAAs2B,cAEA,MAAAnZ,GAEA,kBAAAA,EAAAxY,MAGAtE,WAAA,WACAL,EAAAw1B,6BACA,OAOAc,aAAA,WAEA,IAAAt2B,EAAAvD,KACA2V,EAAA,sDAAA3V,KAAAN,QAAAk5B,SACA9uB,EAAA,IAAAgwB,eAEAhwB,EAAAiwB,mBAAA,WACA,IAGAC,EAHA,GAAAlwB,EAAAmwB,YAAA,KAAAnwB,EAAAowB,UAGAF,EAAA76B,UAAAyO,MAAAusB,gBAAApkB,KAAAqkB,MAAAtwB,EAAAuwB,cAAApkB,OAGApQ,QAAA,SAAAsD,EAAAsJ,GACA,IAAAA,IACAunB,EAAAvnB,GAAA,GAAA6nB,OAAAN,EAAAvnB,GAAA,OAIAlP,EAAAqP,KAAA,IAAA6mB,OAAAc,cAAAC,UACAj3B,EAAAqP,KAAA6nB,UAAA,SAAAT,EAAA,GAAA,IACAz2B,EAAAqP,KAAA6nB,UAAA,SAAAT,EAAA,GAAA,IACAz2B,EAAAqP,KAAA8nB,QAAAV,EAAA1Y,MAAA,EAAA0Y,EAAAr5B,SAGA4C,EAAAo3B,cAIA7wB,EAAA+H,KAAA,MAAA8D,GAAA,GACA7L,EAAAsM,KAAA,OAIAwkB,gBAAA,WAKA,IAAA9B,EAAA94B,KAAAN,QAAAo5B,YAAA,GACAlU,EAAA5kB,KAAAN,QAAAklB,iBAAA,cACAsK,EAAAlvB,KAAAN,QAAAwvB,WAAA,OAIA,MAAA,CAEA3qB,MAAAu0B,EACAlU,gBAAA,CAAAiW,KAAAjW,GACA3f,MAPAjF,KAAAN,QAAAuF,OAAA,IAQAjE,OAPAhB,KAAAN,QAAAsB,QAAA,IASA85B,eAAA,CACA7V,MAAAiK,EACA6L,SAAA,KACAC,SAAA,SACAC,MAAA,GAGAC,MAAA,CACAC,UAAA,CAAAlW,MAAAiK,IAGAkM,MAAA,CACAD,UAAA,CAAAlW,MAAAiK,IAIA1I,OAAA,OACA6U,MAAA,IAKAV,UAAA,WAGA,IAAAW,EAAA,CACAC,SAAA9B,OAAAc,cAAAiB,SACAC,SAAAhC,OAAAc,cAAAmB,SACAC,YAAAlC,OAAAc,cAAAqB,aAIAC,EAAA77B,KAAA46B,kBAGAkB,EAAAR,EAAAt7B,KAAAN,QAAAm5B,WAEAiD,EAKA,IAAAA,EAAA97B,KAAA2J,WACA6jB,KAAAxtB,KAAA4S,KAAAipB,GALA18B,UAAAyO,MAAAmuB,IAAA,kDC/KA58B,UAAAsF,QAAAgkB,KAAA,IAAAppB,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,gBACAkM,SAAA,KACAlL,KAAA,KACAwxB,SAAA,KACA/C,SAAA,KACAzqB,QAAA,KACAytB,aAAA,KACAC,YAAA,IACAC,UAAA,GAGA53B,MAAA,KACAiG,KAAA,KACA4xB,OAAA,KAEAr8B,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACA,IAAA6D,EAAAvD,KACA,QAAAA,KAAAN,QAAAu8B,eACAj8B,KAAAN,QAAA8O,QAAA,WACA,IAAArP,UAAAk9B,MAAA,CAAAL,SAAA,aAAAh7B,OAAAuC,EAAA7D,QAAAw8B,YAAAI,WAAA,MAKAt8B,KAAAN,QAAA8O,SACA7E,EAAAiB,WAAA5K,KAAAN,QAAA8O,SAEAxO,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAOAiR,EAPA3V,KAAA2J,YAAA3J,KAAAN,QAAAgW,UAAA1V,KAAAN,QAAA8K,MAAAxK,KAAAN,QAAAs8B,YAGAh8B,KAAA6M,SAEA,iBAAA7M,KAAAN,QAAAgW,UAEAC,EAAAxW,UAAAyW,KAAAC,aAAA,gBAAA,2BAAAjG,mBAAA5P,KAAAN,QAAAgW,UAEA1V,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACAK,UAAA,SAAA/F,GACAA,GAGAjQ,KAAAu8B,WAAAtsB,EAAAgG,OACA7I,KAAApN,MACAmW,UAAAhX,UAAAyO,MAAAuI,YAEAnW,KAAA8J,QAAAsM,QAEA,iBAAApW,KAAAN,QAAAs8B,SACAh8B,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAA2S,KAAA,CACA9S,IAAA3V,KAAAN,QAAAs8B,SACAhmB,UAAA,SAAAwmB,EAAAtyB,EAAAM,GACAA,GAGAxK,KAAAu8B,WAAA/xB,IACA4C,KAAApN,QACAoW,OAEA,iBAAApW,KAAAN,QAAA8K,MACAxK,KAAAu8B,WAAAv8B,KAAAN,QAAA8K,QAGA+xB,WAAA,SAAA/xB,GACAxK,KAAAwK,KAAAA,EACAxK,KAAAy8B,QAAAjyB,GAEAxK,KAAAN,QAAAy8B,UAAAh9B,UAAAyO,MAAA8uB,oBAAA,mBACA18B,KAAA28B,cAEA,mBAAA38B,KAAAN,QAAAu5B,UACAj5B,KAAAN,QAAAu5B,SAAAj5B,KAAAH,cAGA48B,QAAA,SAAAjyB,GACAxK,KAAAH,YAAAmO,IAAA,OAAAxD,IAKAmyB,YAAA,WAEA38B,KAAAH,YAAAiC,IACA86B,QAAAltB,OAAA,IAAA1P,KAAAH,YAAAiC,IAEA,IAAApC,EAAAP,UAAAyO,MAAAivB,kBAAA,CACA9Q,OAAA/rB,KAAAH,YACAi9B,QAAA,mCACAC,QAAA,uKACAC,QAAA,EACAC,MAAA,SAAAb,GACAp8B,KAAAo8B,OAAAA,EAEAj9B,UAAAyO,MAAAsvB,iBAAAd,EAAA,eACAA,EAAAe,GAAA,OAAA,WACAf,EAAA1uB,UAEAN,KAAApN,QAGA48B,QAAAQ,KAAA19B,GAEAM,KAAAq9B,oBAGAA,iBAAA,WACA,IAGAC,EAHAt9B,KAAA4J,WAGA0zB,EAAA,IAAA17B,QAAA,MAAA,CACAC,MAAA7B,KAAAN,QAAA8J,YAAA,iBACAzH,aAAA/B,KAAA4J,UAEA,IAAAhI,QAAA,OAAA,CACAC,MAAA7B,KAAAN,QAAA8J,YAAA,kBACAzH,aAAAu7B,GACA1yB,WAAA5K,KAAAu9B,KAAAv9B,MAEA,IAAA4B,QAAA,OAAA,CACAC,MAAA7B,KAAAN,QAAA8J,YAAA,sBACAzH,aAAAu7B,GACA1yB,WAAA5K,KAAAiK,OAAAjK,MAEA,IAAA4B,QAAA,OAAA,CACAC,MAAA7B,KAAAN,QAAA8J,YAAA,kBACAzH,aAAAu7B,GACA1yB,WAAA5K,KAAAw9B,KAAAx9B,QAGAu9B,KAAA,WACAv9B,KAAAy9B,gBAEAz9B,KAAA6J,UACA7J,KAAAuE,MAAAvE,KAAA6J,QAAA0F,IAAA,UAGAtF,OAAA,WACAjK,KAAA09B,iBAEA19B,KAAAy8B,QAAAz8B,KAAAwK,MACAxK,KAAA6J,SACA7J,KAAA6J,QAAAmE,IAAA,OAAAhO,KAAAuE,QAGAi5B,KAAA,WAOA,IACA5qB,EAPA5S,KAAA09B,iBAEA19B,KAAAwK,KAAAxK,KAAAH,YAAA0P,IAAA,QACAvP,KAAA6J,UACA7J,KAAAuE,MAAAvE,KAAA6J,QAAA0F,IAAA,SAEAvP,KAAAN,QAAA6F,eACAqN,EAAA,CACArO,MAAAvE,KAAAuE,MACAiG,KAAAxK,KAAAwK,MAGAxK,KAAAN,QAAA6F,aAAAa,UAAA,eAAA,CAAApG,KAAA,OAAA4S,MAIA6qB,cAAA,WACAz9B,KAAA2J,UAAA/I,SAAA,WACAZ,KAAAo8B,OAAA/mB,OAEArV,KAAA6J,SACA7J,KAAA6J,QAAAmE,IAAA,kBAAA,SAGA0vB,eAAA,WACA19B,KAAA2J,UAAApJ,YAAA,WACAP,KAAAo8B,OAAA1uB,OAEA1N,KAAA6J,SACA7J,KAAA6J,QAAAmE,IAAA,kBAAA,YCvLA7O,UAAAsF,QAAAk5B,OAAA,IAAAt+B,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,eAAA,YAEAC,QAAA,CACA8J,YAAA,kBACAoT,IAAA,KACAghB,eAAA,EACAp5B,KAAA,KACAq5B,KAAA,KACAC,SAAA,KACAv5B,MAAA,MAGAw5B,SAAA,KACAC,WAAA,KAEAC,YAAA,CACAC,cAAA,CACAC,KAAA,gBACAvhB,IAAA,SAAAkL,GACA,OAAA3oB,UAAAyW,KAAAwoB,WAAA,iBAAA,8BAAAj/B,UAAAyW,KAAAyoB,oBAAA,YAAAvW,IAGAwW,gBAAA,CACAH,KAAA,mBACAvhB,IAAAzd,UAAAyW,KAAAwoB,WAAA,WAAA,2BAAAj/B,UAAAyW,KAAAyoB,qBAEAE,aAAA,CACAJ,KAAA,gBACAvhB,IAAAzd,UAAAyW,KAAAwoB,WAAA,WAAA,sBAAAj/B,UAAAyW,KAAAyoB,qBAEAG,iBAAA,CACAL,KAAA,oBACAvhB,IAAAzd,UAAAyW,KAAAwoB,WAAA,WAAA,0BAAAj/B,UAAAyW,KAAAyoB,qBAEAI,iBAAA,CACAN,KAAA,oBACAvhB,IAAAzd,UAAAyW,KAAAwoB,WAAA,oBAAA,uBAAAj/B,UAAAyW,KAAAyoB,qBAGAK,MAAA,CACAP,KAAA,QACAvhB,IAAAzd,UAAAyW,KAAAwoB,WAAA,SAAA,uBAAAj/B,UAAAyW,KAAAyoB,qBAGAM,aAAA,CACAR,KAAA,gBACAvhB,IAAAzd,UAAAyW,KAAAwoB,WAAA,gBAAA,uBAAAj/B,UAAAyW,KAAAyoB,qBAGAO,YAAA,CACAT,KAAA,iBACAvhB,IAAAzd,UAAAyW,KAAAwoB,WAAA,eAAA,uBAAAj/B,UAAAyW,KAAAyoB,qBAGAQ,qBAAA,CACAV,KAAA,yBACAvhB,IAAA,WAGA,MAAA,+IAIAkiB,cAAA,CACAX,KAAA,kBACAvhB,IAAAzd,UAAAyW,KAAAwoB,WAAA,YAAA,0BAAAj/B,UAAAyW,KAAAyoB,qBAEAU,eAAA,CACAZ,KAAA,kBACAvhB,IAAA,SAAAoiB,GACA,OAAA7/B,UAAAyW,KAAAwoB,WAAA,kBAAA,0BAAAj/B,UAAAyW,KAAAyoB,oBAAA,UAAAW,IAGAC,mBAAA,CACAd,KAAA,uBACAvhB,IAAAzd,UAAAyW,KAAAwoB,WAAA,sBAAA,0BAAAj/B,UAAAyW,KAAAyoB,qBAEAa,MAAA,CACAf,KAAA,QACAvhB,IAAA,SAAAld,GACA,IAAAiW,EAAA6R,OAAAC,SAAAtF,KACAgd,EAAAxpB,EAAAypB,QAAA,KACA,EAAAD,IACAxpB,EAAAA,EAAAjC,UAAA,EAAAyrB,IAEAz/B,EAAA2/B,QAAA1pB,EAEAyd,EAAA/uB,OAAAi7B,cAAA5/B,GAEA,OAAAP,UAAAyW,KAAAwoB,WAAA,SAAA,uBAAAj/B,UAAAyW,KAAAyoB,oBAAA,IAAAjL,IAIAmM,MAAA,CACApB,KAAA,eACAvhB,IAAAzd,UAAAyW,KAAAwoB,WAAA,SAAA,uBAAAj/B,UAAAyW,KAAAyoB,sBAIAt+B,WAAA,SAAAL,EAAAiK,GACAjK,EAAA8E,OACA9E,EAAA8E,KAAA9E,EAAA8E,KAAAwO,cACAhT,KAAAi+B,YAAAv+B,EAAA8E,QACA9E,EAAA2E,OAAAC,MAAA,GAAAtE,KAAAi+B,YAAAv+B,EAAA8E,MAAA9E,IACA8/B,gBACA9/B,EAAAkd,IAAAld,EAAAkd,IAAA,WAAAld,EAAA8/B,gBAKAx/B,KAAAC,WAAAP,GACAM,KAAA6M,OAAAnN,EAAAiK,IAGAjF,KAAA,WACA,IAIA+6B,EAJAz/B,KAAA2J,aAGA3J,KAAAN,QAAAk+B,gBACA6B,EAAAv/B,EAAA,oBAEAF,KAAAg+B,WAAAyB,EAAAp4B,MAAAP,QACA24B,EAAAp4B,MAAAP,QAAA,KAIA9G,KAAA6M,SAEA7M,KAAA0/B,eAGAA,WAAA,WACA,IAOA9iB,EAPA5c,KAAAH,cAGAG,KAAAgZ,aAAA,IAAApX,QAAA,MAAA,CACAC,MAAA,8BACA6G,OAAA1I,KAAAH,aAEA+c,EAAA5c,KAAA2/B,SAEA3/B,KAAA+9B,SAAA,IAAAn8B,QAAA,SAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACA1H,GAAA9B,KAAAN,QAAAoC,GAAA,UACA8a,IAAAA,EACAgjB,aAAA5/B,KAAAN,QAAAy+B,OACAp8B,aAAA/B,KAAAH,aAEAG,KAAA+9B,SAAA8B,YACA7/B,KAAA+9B,SAAA8B,YAAA,SAAA7/B,KAAA8/B,cAGA9/B,KAAA+9B,SAAAgC,iBAAA,OAAA//B,KAAA8/B,cAAA,GAGA9/B,KAAAN,QAAAsgC,KACAhgC,KAAA+9B,SAAAz3B,UAAAtG,KAAAN,QAAAsgC,KAEA,QAAAhgC,KAAAN,QAAAsB,SACAhB,KAAAigC,WACAzY,OAAAzZ,SAAA,SAAA/N,KAAAigC,aAIAH,aAAA,WACA9/B,KAAAgZ,cACAhZ,KAAAgZ,aAAA7Y,WAIAw/B,OAAA,WACA,IAAA/iB,EAAA5c,KAAAN,QAAAkd,IACAihB,EAAA79B,KAAAN,QAAAm+B,KAiBA,MAfA,mBAAAjhB,EAEAA,EADA,SAAAzZ,OAAA06B,GACAjhB,EAAA5S,MAAAhK,KAAA69B,GAEAjhB,EAAAihB,GAEA,iBAAAA,GAAA,MAAAA,IACAjhB,GAAA,IAAAvY,OAAAi7B,cAAAzB,KAGAjhB,EAAA/U,SAAA,YAAA1I,UAAA+gC,cACAtjB,GAAA,UAAAzd,UAAA+gC,aAEAtjB,GAAA,SAAA5c,KAAAN,QAAAo+B,SAAA,IAAA7a,OAAAG,YAKA6c,SAAA,WACA,IAAAt2B,EAAAzJ,EAAA,eACAyJ,IACA3J,KAAAH,YAAA2G,SAAA,SAAAmD,EAAAxI,YAAA,MACAnB,KAAAH,YAAA2G,SAAA,QAAA,UAIArG,QAAA,WACA,IACAs/B,EADA,MAAAz/B,KAAAg+B,aACAyB,EAAAv/B,EAAA,oBAEAu/B,EAAAp4B,MAAAP,QAAA9G,KAAAg+B,YAGAh+B,KAAA+9B,WACA79B,EAAAF,KAAA+9B,UAAA59B,UACAH,KAAA+9B,SAAA,SCnNA5+B,UAAAsF,QAAA07B,MAAA,IAAA9gC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,iBACA42B,UAAA,KACAC,YAAA,KACAC,IAAA,KACA9xB,QAAA,KACAkK,aAAA,KACAqc,KAAA,KACAxe,MAAA,MAGAxW,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAiBA67B,EAgBAh9B,EAjCAvD,KAAA2J,WAAA3J,KAAAN,QAAA0gC,YAIAxqB,EAAA5V,KAAAN,QAAA0gC,UACApgC,KAAAN,QAAA2gC,cACAzqB,EAAAzW,UAAAyW,KAAAwhB,iBAAAxhB,GAEA5V,KAAA6M,SAGA7M,KAAAH,cACAK,EAAAF,KAAAH,aAAAM,UACAH,KAAAH,YAAA,MAIA0gC,EAAA,IAAA3+B,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,QACA82B,IAAAtgC,KAAAN,QAAA4gC,KAAA,GACA1jB,IAAAhH,IACA7T,aAAA/B,KAAA2J,WAGA3J,KAAAN,QAAA6W,OACA,IAAA3U,QAAA,OAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,UACAzH,aAAA/B,KAAA2J,WACAqE,IAAA,OAAAhO,KAAAN,QAAA6W,OAIAvW,KAAAN,QAAAq1B,QACAxxB,EAAAvD,MACAN,QAAA8O,QAAA,WACAgZ,OAAA3V,KAAAtO,EAAA7D,QAAAq1B,KAAA,UACAyL,SAEAD,EAAAj6B,UAAA,CAAAm6B,OAAA,aAIA,mBAAAzgC,KAAAN,QAAA8O,SACA+xB,EAAA31B,WAAA5K,KAAAN,QAAA8O,SAIAxO,KAAAN,QAAAgZ,cACA1Y,KAAAN,QAAAgZ,aAAA1Y,KAAA2J,UAAA3J,KAAAN,QAAA8O,aCpEArP,UAAAsF,QAAAi8B,UAAA,IAAArhC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,qBACA42B,UAAA,KACAO,SAAA,KACAnyB,QAAA,KACAkK,aAAA,KACA/R,OAAA,KACA6P,QAAA,KACAoqB,YAAA,EACAC,SAAA,MAGA9gC,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAmCAkc,EAnCA5gB,KAAA2J,YAGA3J,KAAA6M,SAEA7M,KAAAH,cACAK,EAAAF,KAAAH,aAAAM,UACAH,KAAAH,YAAA,MAGAG,KAAAN,QAAA0gC,YACAG,EAAA,IAAA3+B,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,QACA82B,IAAAtgC,KAAAN,QAAA4gC,KAAA,GACA1jB,IAAA5c,KAAAN,QAAA0gC,YACAr+B,aAAA/B,KAAA2J,WACA3J,KAAAN,QAAAkhC,YAAA,mBAAA5gC,KAAAN,QAAA8O,SACA+xB,EAAA31B,WAAA5K,KAAAN,QAAA8O,UAGAxO,KAAAN,QAAAiH,QACA,IAAA/E,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,QACAzC,KAAA/G,KAAAN,QAAAiH,QAAA,KACA5E,aAAA/B,KAAA2J,WAGA3J,KAAAN,QAAA8W,SACA,IAAA5U,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,UACAgB,KAAAxK,KAAAN,QAAA8W,SAAA,KACAzU,aAAA/B,KAAA2J,WAGA3J,KAAAN,QAAAmhC,WACAjgB,EAAA,IAAAhf,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,OACAgB,KAAAxK,KAAAN,QAAAmhC,UAAA,KACA9+B,aAAA/B,KAAA2J,WACA,mBAAA3J,KAAAN,QAAA8O,SACAoS,EAAAhW,WAAA5K,KAAAN,QAAA8O,UAGAxO,KAAAN,QAAAgZ,cACA1Y,KAAAN,QAAAgZ,aAAA1Y,KAAA2J,UAAA3J,KAAAN,QAAA8O,aCjEArP,UAAAsF,QAAAsR,KAAA,IAAA1W,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,OAAA,eAAA,qBAAA,aAAA,iBAEAC,QAAA,CACA8J,YAAA,gBACAmM,IAAA,GACAmrB,mBAAA,MAGA/gC,WAAA,SAAAL,EAAAiK,GAGA,GAFA3J,KAAAC,WAAAP,GAEA,IAAAM,KAAAN,QAAAiW,KAAA,IAAAxN,OAAAxH,OACA,KAAA,4BAEAX,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA1E,KAAA2J,YAGA3J,KAAA6M,SAEA,IAAA1N,UAAA2W,QAAAC,KAAA,CACAmD,OAAA,MACAvD,IAAAxW,UAAAyW,KAAAC,aAAA,OAAA,iBAAAjG,mBAAA5P,KAAAN,QAAAiW,KACAK,UAAAhW,KAAAia,aACA9D,UAAAhX,UAAAyO,MAAAuI,YACAC,SAGA6D,aAAA,SAAArH,GACA,GAAAA,EAAA,CAGA,IAAAxQ,EAAAlC,EAAAF,KAAAH,aACA,GAAAuC,EAAA,CAGAA,EAAA9B,QAEA,IAAA0L,EAAA,IAAApK,QAAA,MAAAG,aAAAK,GACA,GAAA,SAAAe,OAAAyP,GACA5S,KAAAkJ,WAAA0J,EAAA5G,QAEA,IAAA,IAAAnL,EAAA,EAAAF,EAAAiS,EAAAjS,OAAAE,EAAAF,EAAAE,IACAb,KAAAkJ,WAAA0J,EAAA/R,GAAAmL,MAIA80B,mBAAA,SAAA33B,GACA,MAAA,mBAAAnJ,KAAAN,QAAAohC,oBACA9gC,KAAAN,QAAAohC,mBAAA33B,IAIAD,WAAA,SAAAC,EAAA6C,GACA,GAAA7C,EAAA,CAGA,IAEAS,EAFAjD,GAAAwC,EAAAxC,QAAA,IAAAwB,OAUA,GATA,EAAAxB,EAAAhG,SACAiJ,EAAA,IAAAhI,QAAA,KAAA,CACAC,MAAA,aACAE,aAAAiK,GACA,IAAApK,QAAA,KAAA,CACAmF,KAAAJ,IACA5E,aAAA6H,IAGAT,EAAAmF,MAGA,IAAA,IAAAzN,EAAA,EAAAF,EAAAwI,EAAAmF,MAAA3N,OAAAE,EAAAF,EAAAE,IACAb,KAAA+gC,cAAA53B,EAAAmF,MAAAzN,GAAAmL,KAGA+0B,cAAA,SAAA53B,EAAA6C,GACA,IAOApC,EAqBAo3B,EA5BA73B,GAAAnJ,KAAA8gC,mBAAA33B,KAGA/G,EAAA,IAAAR,QAAA,KAAA,CACAC,MAAA,aACAE,aAAAiK,GAEApC,EAAA,IAAAhI,QAAA,MAAAG,aAAAK,GACAwe,EAAA,IAAAhf,QAAA,IAAA,CACAugB,KAAAhZ,EAAA4rB,MAAA,IACAhJ,OAAA,WACAhqB,aAAA6H,GACA,IAAAhI,QAAA,OAAA,CACAC,MAAA,2BACAkF,MAAAoC,EAAA5E,OAAA,IAAA4D,SACApG,aAAA6e,GAGA,GADAtX,GAAAH,EAAAG,UAAA,IAAAnB,QACAxH,QACA,IAAAiB,QAAA,MAAA,CACAC,MAAA,WACAkF,KAAAuC,IACAvH,aAAA6H,GAGAq3B,EAAA,IAAAr/B,QAAA,MAAA,CACAC,MAAA,gBACAE,aAAAK,GACA4+B,EAAA,IAAAp/B,QAAA,MAAA,CACAC,MAAA,2BACAE,aAAAk/B,GACA,IAAAr/B,QAAA,IAAA,CACAmF,MAAAoC,EAAApC,MAAA,IAAAoB,SACApG,aAAAi/B,OCjHA7hC,UAAAsF,QAAAy8B,KAAA,IAAA7hC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,gBACAurB,KAAA,KACAxe,MAAA,MAGAxW,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAYA6R,EAZAvW,KAAA2J,YAGA3J,KAAA6M,SAGA7M,KAAA2J,UAAA/I,SAAA,eACAZ,KAAA2J,UAAAiB,WAAA,WACA4c,OAAA3V,KAAA7R,KAAAN,QAAAq1B,KAAA,UACAyL,SACApzB,KAAApN,OAGA,GADAuW,GAAAvW,KAAAN,QAAA6W,OAAA,IAAApO,QACAxH,QACA,IAAAiB,QAAA,MAAA,CACAC,MAAA,YACA2I,KAAA+L,IACAxU,aAAA/B,KAAAH,iBChCAV,UAAAsF,QAAA08B,MAAA,IAAA9hC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,iBACA43B,MAAA,GACA1rB,SAAA,KACA3O,KAAA,KACAvC,KAAA,QAGAzE,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,GAAA1E,KAAA2J,WAAA3J,KAAAN,QAAA0hC,MAAA,CAGA,IAAAr6B,EAAA/G,KAAAN,QAAAqH,KAEA/G,KAAA6M,SACA,IAMA8I,EANA3J,EAAA,IAAApK,QAAA,KAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzH,aAAA/B,KAAAH,aAEA,iBAAAG,KAAAN,QAAAgW,WAEAC,EAAAxW,UAAAyW,KAAAC,aAAA,gBAAA,2BAAAjG,mBAAA5P,KAAAN,QAAAgW,UAEA1V,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACAK,UAAA,SAAA/F,GACAA,IAEAlJ,EAAAkJ,EAAAgG,KACA,IAAArU,QAAA,MAAA,CACA4I,KAAArL,UAAAsL,KAAAC,UAAA3D,GACAlF,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACA9C,UAAA1G,KAAAH,eACAuN,KAAApN,MACAmW,UAAAhX,UAAAyO,MAAAuI,YAEAnW,KAAA8J,QAAAsM,QAGArP,GACA,iBAAAA,GAAA,EAAAA,EAAApG,QACA,IAAAiB,QAAA,MAAA,CACA4I,KAAArL,UAAAsL,KAAAC,UAAA3D,GACAlF,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACA9C,UAAA1G,KAAAH,aAIA,IAAA,IAAAgB,EAAA,EAAAA,EAAAb,KAAAN,QAAA0hC,MAAAzgC,OAAAE,IAAA,CACA,IAKA+f,EALAmU,EAAA/0B,KAAAN,QAAA0hC,MAAAvgC,GAEA,GAAAwD,OAAAg9B,KAAAtM,GAAAp0B,SAGAigB,EAAA,IAAAhf,QAAA,KAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SAAAurB,EAAArzB,WAAA,MACAK,aAAAiK,GAEA+oB,EAAAuM,UACA,IAAA1/B,QAAA,OAAA,CACA4I,KAAAuqB,EAAAuM,WACAv/B,aAAA6e,GAGA,IAAAhf,QAAA,OAAA,CACA4I,KAAAuqB,EAAA7sB,OACAnG,aAAA6e,GAEAmU,EAAA5c,cACA,IAAAvW,QAAA,MAAA,CACAC,MAAAkzB,EAAA5c,eACApW,aAAA6e,GAGA,QAAA5gB,KAAAN,QAAA8E,KACA,mBAAAuwB,EAAAvmB,QACAoS,EAAAhW,WAAAmqB,EAAAvmB,SACA,iBAAAumB,EAAA5S,OACAvB,EAAAuB,KAAA4S,EAAA5S,KACAvB,EAAAmL,OAAAgJ,EAAAhJ,QAAA,SACAnL,EAAAhW,WAAA,WACA4c,OAAA3V,KAAA7R,KAAAmiB,KAAAniB,KAAA+rB,WAIA,QAAA/rB,KAAAN,QAAA8E,MACAxE,KAAA4K,WAAAmqB,EAAArf,SAAAqf,EAAA7sB,KAAA0Y,OAKAhW,WAAA,SAAA8K,EAAAxN,EAAA0Y,GACAzhB,UAAAyO,MAAA2zB,aAAA,CAAAjtB,SAAAoB,EAAAoK,YAAA,GAAA,SAAAlN,GACAgO,EAAAhW,WAAA,WACA,IAAAzL,UAAAqiC,WAAA,CACAj9B,MAAA2D,EACAsC,KAAAoI,EAAAqD,cCxGA9W,UAAAsF,QAAAg9B,YAAA,IAAApiC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,UAAA,gBAEAC,QAAA,CACA8J,YAAA,qBACA+M,MAAA,KACA+B,UAAA,EACAC,aAAA,EACAC,eAAA,GAGAzY,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAQAiR,EARApS,EAAAvD,KAEAA,KAAA2J,YAIA3J,KAAA6M,SAEA8I,EAAAxW,UAAAyW,KAAAC,aAAA,aAAA,2BAAA1W,UAAAyM,OAAA2N,eAAApa,UAAAqa,OAAAC,YAAAI,OAEA7Z,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACAuD,OAAA,MACAlD,UAAA,SAAAsK,GACA/c,EAAA7D,QAAAihB,SAEA,IAAA/e,QAAA,OAAA,CACAC,MAAA,UACA2e,OAAA,CACAC,MAAA,SAAAC,GACAvhB,UAAAuiC,QAAA7S,OAAA,GACA1vB,UAAAuiC,QAAA7S,OAAA,iBAAA,EAEAvU,QAAAqnB,iBACAxiC,UAAAkc,KAAAC,iBAAAC,YAAA,GAAA,KAGAxU,KAAA,aACAhF,aAAAwB,EAAAqG,UAEA0W,EAAAza,QAAA,SAAAsD,GACA,IAqBAoT,EAaAC,EAIAC,EAIAQ,EAIAC,EAKAR,EAKA/N,EAxDAiS,EAAA,IAAAhf,QAAA,MAAA,CACAC,MAAA,cACAE,aAAAwB,EAAA1D,aAEA,IAAA+B,QAAA,MAAA,CACAC,MAAA,iBACA+a,IAAAzd,UAAAyO,MAAAiP,mBAAA1T,KACApH,aAAA6e,GAEA,IAAAhf,QAAA,OAAA,CACAC,MAAA,iBACAkF,KAAAoC,EAAAjB,KACA3D,MAAA4E,EAAAjB,KACAsY,OAAA,CACAC,MAAA,SAAAC,GACAnd,EAAA2d,aAAAR,EAAAvX,OAGApH,aAAA6e,GAEArd,EAAA7D,QAAA4Y,WACAiE,EAAA,IAAA3a,QAAA,MAAA,CACAC,MAAA,qBACAE,aAAA6e,GAEAzhB,UAAA2d,UAAAC,cAAA5T,EAAAy4B,UACAz4B,EAAAwK,YACA,SAAAqJ,GACA,EAAAA,IACAT,EAAA3b,SAAA,cACA2b,EAAAS,WAAAA,KAIAR,EAAA,IAAA5a,QAAA,MAAA,CACAC,MAAA,sBACAE,aAAA6e,GAEAnE,EAAA,IAAA7a,QAAA,MAAA,CACAC,MAAA,yBACAE,aAAA6e,GAEA3D,EAAA,IAAArb,QAAA,MAAA,CACAmF,KAAA,aACAhF,aAAA0a,GAEAS,EAAA,IAAAtb,QAAA,MAAA,CACAmF,KAAA,aACAhF,aAAA0a,GAEAlZ,EAAA7D,QAAA8Y,gBACAkE,EAAA,IAAA9a,QAAA,MAAA,CACAmF,KAAA,UACAhF,aAAA0a,IAGA9N,EAAA,IAAA/M,QAAA,MAAA,CACAmF,KAAA,oBACAhF,aAAA0a,GAEAlZ,EAAA7D,QAAA6Y,aACA,IAAA3W,QAAA,MAAA,CACAmF,KAAA,aACAhF,aAAA0a,GAEA7R,WAAA,WACAzL,UAAAyO,MAAAuP,QAAAhU,KAIAsT,EAAA/O,OAEA8O,EAAAzO,SAAA,aAAA,WACA0O,EAAApH,OACAoH,EAAAlc,YAAA,cAEA,IAAA6c,EAAAX,EAAAY,wBACAC,EAAA/Z,EAAA1D,YAAAwd,wBACAE,EAAAH,EAAAI,OAAAF,EAAAE,OAEAf,EAAAgB,YAAA,aAAAF,GAGAG,GADAN,EAAAX,EAAAY,yBACAM,IAAAL,EAAAK,IAEAlB,EAAAgB,YAAA,YAAAF,GAAAG,GAEAlB,EAAA5b,SAAA,YAGA6b,EAAA1O,SAAA,aAAA,WACA0O,EAAApH,OACAmH,EAAA5b,SAAA,YAGA4b,EAAAzO,SAAA,aAAA,WACA0O,EAAA/O,OACA8O,EAAAjc,YAAA,YAGAkc,EAAA1O,SAAA,aAAA,WACA0O,EAAA/O,OACA8O,EAAAjc,YAAA,YAGA0c,EAAArS,WAAA,WACA0P,QAAAsD,aAAAzU,KAGA+T,EAAAtS,WAAA,WAEA,IAGAi3B,EACAhkB,EAJA1e,UAAA2e,WAGA+jB,EAAAt+B,EAAAwa,aAAA5U,EAAA,GACA0U,EAAA,SAAAG,EAAAC,GACA9e,UAAAyO,MAAAsQ,qBAAA2jB,EAAA5jB,EAAAD,GAGA7e,UAAAyO,MAAAuQ,sBAEAhf,UAAAif,KAAAC,WAIAL,GAAAC,GAAA9e,UAAAmf,sBAAAC,SAAAve,KAAAwe,UACAxe,KAAA0X,SACAtK,KAAApN,MAGAb,UAAA2e,SAAAU,SAAAqjB,GAAA,GACA1iC,UAAA2e,SAAAW,eAAAtV,EAAA,KAAA,KAAA,KAAA,KAAA,WACA0U,GAAA1e,UAAA2e,SAAAU,SAAAqjB,GAAA1iC,UAAAmf,sBAAAC,WAKAV,EAAA1e,UAAA2e,SAAAY,UAAAmjB,GAAA1iC,UAAAmf,sBAAAK,UAGAjC,GACAA,EAAA9R,WAAA,WACA,IAAAgU,EAAAzf,UAAAyf,UAAAC,OACA7e,KAAA8e,WAAA,IAAA3f,UAAA4f,gBAAA,CACApM,gBAAA,WACA3S,KAAAgf,eAAA,MACA5R,KAAApN,MACA4e,UAAAA,GACAzV,GACAnJ,KAAA8e,WAAAzJ,SAIA1G,EAAA/D,WAAA,WACA,IAAAqU,EAAA3E,QAAA4E,cAAA/f,UAAAyY,QAAAC,KAAA,KAAA1O,EAAAgW,UACAhgB,UAAAyO,MAAAwR,QAAAjW,EAAA,SAAAyM,GACA,MAAAA,GACA0E,QAAA+E,iBACAlgB,UAAAyO,MAAA0R,qBAAAL,EAAArJ,OAIA,IAAAhU,QAAA,OAAA,CACAC,MAAA,gBACAkF,KAAA,iBAAA5H,UAAAyO,MAAA+N,aAAAxS,EAAA24B,YAAA,WACA//B,aAAA6e,GAEA,IAAAhf,QAAA,OAAA,CACAC,MAAA,gBACAkF,KAAA,YAAAoC,EAAAoW,YAAAC,QAAA,MACAzd,aAAA6e,GAEArE,EAAA3R,WAAA,WACA,IAAArH,EAAAvD,KACAA,KAAAyf,SAAA,cACAtgB,UAAA2d,UAAA4C,eAAA1f,KAAAgd,WACA7T,EAAAy4B,UACAz4B,EAAAwK,YACA,WACApQ,EAAAhD,YAAA,eACA6M,KAAApN,OAGAb,UAAA2d,UAAA6C,YAAAxW,EAAAy4B,UACAz4B,EAAAwK,YACA,SAAAqJ,GACAzZ,EAAA3C,SAAA,cACAZ,KAAAgd,WAAAA,GACA5P,KAAApN,eAOAA,KAAA8J,QAAAsM,SAGA8K,aAAA,SAAAR,EAAA7I,GACA6I,EAAAc,kBACAriB,UAAAwV,cAAAC,kBAAAiD,IAGA8I,QAAA,SAAAD,EAAAJ,GAEAnhB,UAAAsiB,SAAA/T,OACAqT,SAAAW,cAAApB,EAAAtF,eAEA7L,EAAAjP,EAAA,cACAiP,GACAA,EAAAkG,OAGA,MAAAlW,UAAAwiB,aACAxiB,UAAAyiB,WAAAzhB,UACAhB,UAAAyiB,WAAA,MAGA1hB,EAAA,gBAAAI,QAEAnB,UAAAyiB,WAAA,IAAAziB,UAAA0iB,WAAA,CACA3Z,KAAA,eACA4Z,gBAAA,KAIA/D,aAAA,SAAAnL,EAAApO,GACA,IAAArF,UAAAif,KACA,OAAAxL,EAEAzJ,EAAA,IAAAhK,UAAAif,KAAAwB,KAAAhN,GAsBA,OArBApO,GAAArF,UAAAyO,MAAAiS,kBAAA7f,KAAAN,QAAAkT,OAAA5S,KAAAN,QAAAkT,KAAAkN,YAAA,EACA3W,EAAA2W,YAAA,EAEAtb,GAAArF,UAAAsL,KAAAC,UAAA,SACA,GAAA1K,KAAAN,QAAAkT,KAAAkN,cACA3W,EAAA2W,YAAA,GACA3W,EAAA4W,gBAAAC,EACA,GAAAhgB,KAAAN,QAAAkT,KAAAqN,UACA9W,EAAA8W,QAAA,GAEAjgB,KAAAN,QAAAwgB,YAAAlgB,KAAAN,QAAAwgB,WAAAX,cACApW,EAAAoW,YAAAvf,KAAAN,QAAAwgB,WAAAX,cAIAvf,KAAAN,QAAAwgB,YAAAlgB,KAAAN,QAAAwgB,WAAAX,cACApW,EAAAgX,aAAAngB,KAAAN,QAAAwgB,WAAAX,aAGApW,EAAAiX,QAAA,KAEAjX,KC7SAhK,UAAAsF,QAAAs9B,YAAA,IAAA1iC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,uBACA+M,MAAA,KACA0Q,SAAA,eACA+a,WAAA,GAGAjiC,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAKAnB,EAiBAgT,EAtBAvW,KAAA2J,YAIA3J,KAAA6M,UACAtJ,EAAAvD,MACA2J,UAAA/I,SAAA,eAEAZ,KAAAN,QAAAsiC,UAEAhiC,KAAA2J,UAAAoE,SAAA,QAAA,WACA7N,EAAA,WAAAugB,QACAnG,QAAA2nB,YAAA,KAIAjiC,KAAA2J,UAAAoE,SAAA,QAAA,WACAuM,QAAA4nB,cAAA3+B,EAAA7D,QAAAunB,UACA3M,QAAA2nB,YAAA,KAKA,GADA1rB,GAAAvW,KAAAN,QAAA6W,OAAA,IAAApO,QACAxH,QACA,IAAAiB,QAAA,MAAA,CACAC,MAAA,YACA2I,KAAArL,UAAAsL,KAAAC,UAAA6L,GACA5L,mBAAA4L,IACAxU,aAAA/B,KAAAH,iBC5CAV,UAAAsF,QAAA09B,YAAA,IAAA9iC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,uBACA+M,MAAA,KACA0Q,SAAA,eACA+a,WAAA,GAGAjiC,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAoBA6R,EApBAvW,KAAA2J,YAIA3J,KAAA2J,UAAA/I,SAAA,eACAZ,KAAA6M,SACA7M,KAEAN,QAAAsiC,UAEAhiC,KAAA2J,UAAAoE,SAAA,QAAA,WACA7N,EAAA,WAAAugB,QACAthB,UAAAyO,MAAAsnB,aAAA,6BAAA,KAGAl1B,KAAA2J,UAAAoE,SAAA,QAAA,WACA5O,UAAAyO,MAAAsnB,aAAA,6BAAA,KAKA,GADA3e,GAAAvW,KAAAN,QAAA6W,OAAA,IAAApO,QACAxH,QACA,IAAAiB,QAAA,MAAA,CACAC,MAAA,YACA2I,KAAArL,UAAAsL,KAAAC,UAAA6L,GACA5L,mBAAA4L,IACAxU,aAAA/B,KAAAH,iBC1CAV,UAAAsF,QAAA29B,UAAA,IAAA/iC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,qBACA+M,MAAA,KACA0Q,SAAA,eACA+a,WAAA,GAGAjiC,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAKAnB,EAgBAgT,EArBAvW,KAAA2J,YAIA3J,KAAA6M,UACAtJ,EAAAvD,MACA2J,UAAA/I,SAAA,eAEAZ,KAAAN,QAAAsiC,UAEAhiC,KAAA2J,UAAAoE,SAAA,QAAA,WACA7N,EAAA,WAAAugB,QACAnG,QAAA+nB,eAAA,KAGAriC,KAAA2J,UAAAoE,SAAA,QAAA,WACAuM,QAAA4nB,cAAA3+B,EAAA7D,QAAAunB,UACA3M,QAAA+nB,eAAA,KAKA,GADA9rB,GAAAvW,KAAAN,QAAA6W,OAAA,IAAApO,QACAxH,QACA,IAAAiB,QAAA,MAAA,CACAC,MAAA,YACA2I,KAAArL,UAAAsL,KAAAC,UAAA6L,GACA5L,mBAAA4L,IACAxU,aAAA/B,KAAAH,iBC3CAV,UAAAsF,QAAA4iB,IAAA,IAAAhoB,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,eACAyd,SAAA,KAEA1Q,MAAA,KACA/H,QAAA,MAGAzO,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAcA6R,EAdAvW,KAAA2J,YAAA3J,KAAAN,QAAAunB,UAAAjnB,KAAAN,QAAA8O,WAGAxO,KAAA6M,SAEA7M,KAAA2J,UAAA/I,SAAA,eACA,mBAAAZ,KAAAN,QAAA8O,QACAxO,KAAA2J,UAAAiB,WAAA5K,KAAAN,QAAA8O,QAAApB,KAAApN,OAEAA,KAAA2J,UAAAiB,WAAA,WACAzL,UAAAsF,QAAA4iB,IAAAC,eAAAtnB,KAAAN,QAAAunB,WACAjnB,MAIA,GADAuW,GAAAvW,KAAAN,QAAA6W,OAAA,IAAApO,QACAxH,QACA,IAAAiB,QAAA,MAAA,CACAC,MAAA,YACA2I,KAAArL,UAAAsL,KAAAC,UAAA6L,GACA5L,mBAAA4L,IACAxU,aAAA/B,KAAAH,iBAKAV,UAAAsF,QAAA4iB,IAAAhD,OAAA,CACAiD,eAAA,SAAAL,GAEA,IADAA,GAAAA,GAAA,IAAA9e,OAAA6K,eACAnL,SAAA,aACAyS,QAAAgoB,wBACA,GAAA,CAAA,UAAA,aAAAz6B,SAAAof,GAAA,CACA,GAAAA,GAAAsb,YAAAC,KAEAjnB,YAAAA,WAAAknB,YAAA,CAEA,IAAAC,EAAAtxB,GAAA,sBAAA,GACA,GAAAsxB,EAAA,CACAF,EAAAloB,QAAAqoB,aAAAxjC,UAAAyO,MAAAC,gBAAA60B,IAEA,GAAAF,GAAAA,EAAAI,UAKA,YAJArnB,WAAAsnB,aACAtnB,WAAAsnB,aAAApiB,QAEAlF,WAAAunB,iBAQAxoB,QAAA+E,sBAGA/E,QAAA4nB,cAAAjb,EAAA,KAAA,MAAA,MCvEA9nB,UAAAsF,QAAAs+B,WAAA,IAAA1jC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,gBAEAC,QAAA,CACA8J,YAAA,sBACAsO,QAAA,KACAF,QAAAzY,UAAAyY,QAAAC,KACAoB,QAAA,EACAJ,QAAA,mBACAiU,MAAA,OACAkW,UAAA,KACAC,aAAA,EACAC,UAAA,aACAld,WAAA,oBACAtN,aAAA,KACAR,gBAAA,GAGAnY,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAeAhF,EASAkT,EAxBA5S,KAAA2J,WAAA3J,KAAAN,QAAAoY,UAGA9X,KAAA6M,SAEAqM,EAAA,WACAlZ,KAAAN,QAAAkY,SAAAzY,UAAAyY,QAAAzD,iBACAnU,KAAAN,QAAAuZ,QAAA9Z,UAAAia,kBAAAC,gBAAAC,MACAJ,EAAA,QACA,oBAAAlZ,KAAAN,QAAAmZ,UACA7Y,KAAAN,QAAAmZ,QAAA,oBACA,cAAA7Y,KAAAN,QAAAwjC,YACAljC,KAAAN,QAAAwjC,UAAA,gBAGAxjC,EAAA,CACAiW,IAAAxW,UAAAyW,KAAAC,aAAAqD,GAAA,sBAAAlZ,KAAAN,QAAAmZ,QAAA,UAAA7Y,KAAAN,QAAAotB,MAAA,mBAAA9sB,KAAAN,QAAAuZ,QAAA,UAAAjZ,KAAAN,QAAAoY,QACA9B,UAAAhW,KAAAia,aACA9D,UAAAhX,UAAAyO,MAAAuI,YAIAnW,KAAAN,QAAAwY,gBAAA,oBAAAoC,SAAA,mBAAAA,QAAAC,cAEA3H,EAAA0H,QAAAC,YAAA,CACAC,QAAAxa,KAAAN,QAAAkY,SACAlY,EAAAiW,QAIA,iBAAA/C,EAAAA,OACAA,EAAAA,KAAAmD,KAAAoE,UAAAvH,EAAAA,OAEA,oBAAAwH,SACAxH,EAAAA,KAAAwH,OAAAC,OAAAzH,EAAAA,OAGAlT,EAAAkT,KAAAA,EAAAA,KACAlT,EAAAwZ,OAAA,OACAxZ,EAAAiW,IAAA/C,EAAA+C,KAIA3V,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAArW,GACAM,KAAA8J,QAAAsM,SAGA6D,aAAA,SAAAhK,GACA,IAKAkzB,EACAvoB,EAaA2lB,EA8CA6C,EAaAv4B,EA9EAoF,IAKAkzB,EAAA,WADAlzB,EAAAqJ,OAAA,GACA,SAAAtZ,KAAAN,QAAAkY,QACAgD,EAAA3K,EAAA8K,MACAJ,EAAA1K,EAAA6K,OACAuoB,EAAA,KAGAzoB,GAAAA,EAAA,GACAyoB,EAAAh/B,OAAAgO,YAAAuI,EAAA,IACAD,GAAAA,EAAA,KACA0oB,EAAAh/B,OAAAgO,YAAAsI,EAAA,KAGA0oB,KAEA9C,EAAA,IAAA3+B,QAAA,MAAA,CACAgb,IAAAzd,UAAAyO,MAAA01B,gBAAAtjC,KAAAN,QAAAsjC,UAAAK,GACAxhC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,UACAzH,aAAA/B,KAAAH,cAGA+S,KAAAywB,EACA9C,EAAArgB,WAAA7b,OAAAgO,YAAApC,GACAswB,EAAA31B,WAAA,WACAzL,UAAAwV,cAAAC,kBAAA5U,KAAA4S,KAAA5S,KAAAkgB,cAIAmjB,EAAAn7B,MACA,IAAAtG,QAAA,IAAA,CACAmF,KAAAs8B,EAAAn7B,KACAia,KAAAghB,EAAA,WAAAE,EAAAhvB,OAAA,YAAAgvB,EAAAjvB,QACAvS,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzH,aAAA/B,KAAAH,aAIAG,KAAAN,QAAAwjC,WAAAG,EAAArjC,KAAAN,QAAAwjC,aACA71B,EAAAg2B,EAAArjC,KAAAN,QAAAwjC,WACA,IAAAthC,QAAA,OAAA,CACA4I,KAAArL,UAAAyO,MAAAuC,sBAAA9C,GAAA2H,OAAAhV,KAAAN,QAAAsmB,YACAnkB,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzH,aAAA/B,KAAAH,cAIAwjC,EAAAE,aACA,IAAA3hC,QAAA,OAAA,CACA4I,KAAA64B,EAAAE,YACA1hC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,gBACAzH,aAAA/B,KAAAH,cAKAG,KAAAN,QAAAujC,cAEAriB,EAAA,IAAAhf,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,YACAzH,aAAA/B,KAAA2J,YAEAy5B,EAAA,IAAAxhC,QAAA,IAAA,CACA4I,KAAArL,UAAAsL,KAAAC,UAAA,+BACA7I,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,kBAEAuE,SAAA,QAAA,WACA5O,UAAAyO,MAAAwR,QAAA/a,OAAAgO,YAAApC,GAAA,SAAA2F,GACAzW,UAAAyO,MAAA0R,qBAAA+B,SAAAzL,MAEAxI,KAAApN,OACAojC,EAAArhC,aAAA6e,GAGA4iB,EAAA5iB,EAAAzf,YACA0J,EAAA7K,KAAAH,YAAAsB,YAAAqiC,EAAA,GAEA14B,MAAAD,IACA7K,KAAAH,YAAA2G,SAAA,SAAAqE,EAAA,OAGA,mBAAA7K,KAAAN,QAAAgZ,cACA1Y,KAAAN,QAAAgZ,aAAA1Y,KAAA2J,eC9JAxK,UAAAsF,QAAA0W,QAAA,IAAA9b,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,mBACAoM,KAAA,KACAW,MAAA,KACAzU,GAAA,KACA0M,QAAA,KACAi1B,SAAA,EACAC,UAAA,GAGA3jC,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GAGA,IAAA6D,EAAAvD,KAGA2J,EAAAiB,WAAA,WACAzL,UAAAsF,QAAA0W,QAAAC,aAAA7X,EAAA7D,QAAA+jC,SAAAlgC,EAAA7D,QAAAkW,KAAArS,EAAA7D,QAAAgkC,YAGA1jC,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAIAjF,KAAA,WACA,IAOA6R,EAPAvW,KAAA2J,YAGA3J,KAAA6M,SACA7M,KAAA2J,UAAA/I,SAAA,eAIA,GADA2V,GAAAvW,KAAAN,QAAA6W,MAAA3O,YAAA,IAAAO,QACAxH,QACA,IAAAiB,QAAA,MAAA,CACAC,MAAA,YACA2I,KAAArL,UAAAsL,KAAAC,UAAA6L,GACA5L,mBAAA4L,IACAxU,aAAA/B,KAAAH,iBAKAV,UAAAsF,QAAA0W,QAAAkJ,OAAA,CACAjJ,aAAA,SAAAuoB,EAAA/tB,EAAA8tB,GAEAA,IACAE,QAAA7H,IAAA,6BACA58B,UAAAkc,KAAAC,iBAAAC,YAAA,EAAApc,UAAAkiB,SAAAwiB,2BAGA,GAAAF,EACAxkC,UAAAyO,MAAA0R,qBAAA+B,SAAAzL,EAAA,MAAA,GAGA,GAAA+tB,EACAxkC,UAAAyO,MAAA0R,qBAAAwkB,aAAAluB,EAAA,MAAA,GAGA,GAAA+tB,GACAxkC,UAAAyO,MAAA0R,qBAAAykB,cAAAnuB,EAAA,MAAA,MChEAzW,UAAAsF,QAAAu/B,SAAA,IAAA3kC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,oBACAgF,QAAA,KACA+H,MAAA,KACAjC,SAAA,MAGAvU,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,GACA,IAAApG,EAAAvD,KAEAA,KAAAN,QAAA8O,QAAA,WACArP,UAAAsF,QAAAu/B,SAAAC,SAAA1gC,EAAA7D,QAAA4U,WAGA3K,EAAAiB,WAAA5K,KAAAN,QAAA8O,UAGA9J,KAAA,WACA1E,KAAA6M,SAEA7M,KAAA2J,UAAA/I,SAAA,eACA,IAAA2V,GAAAvW,KAAAN,QAAA6W,OAAA,IAAApO,OACA,EAAAoO,EAAA5V,QACA,IAAAiB,QAAA,MAAA,CACAC,MAAA,YACA2I,KAAA+L,IACAxU,aAAA/B,KAAAH,gBAKAV,UAAAsF,QAAAu/B,SAAA3f,OAAA,CACA4f,SAAA,SAAA3vB,EAAA4vB,EAAAC,EAAAC,GACAjlC,UAAAyO,MAAAy2B,UAAA/vB,EAAA,SAAAmf,GACA9d,EAAAxW,UAAAyW,KAAAC,aAAA,aAAA,QAAA4d,EAAA,aAEAyQ,IACAvuB,GAAA,WAAAuuB,GAEAC,IACAxuB,GAAA,UAAAwuB,GAEA,IAAAhlC,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACAK,UAAA,SAAA/F,GACA9Q,UAAAwV,cAAAC,kBAAA3E,EAAA2C,KAAA,GAAA0xB,SAAA,KAAA,KAAAF,IACAh3B,KAAApN,QACAoW,YCpDAjX,UAAAsF,QAAA8/B,cAAA,IAAAllC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,yBACAjF,MAAA,gBACAigC,kBAAA,KAGAC,eAAA,EACAC,YAAA,IACAC,gBAAA,EACAC,QAAA,iBAGAJ,kBAAA,KACA9iC,UAAA,cAEA3B,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACA,IAAA6D,EAAAvD,KAEAA,KAAAN,QAAA8kC,oBACAxkC,KAAAN,QAAA8kC,kBAAA,IAGAxkC,KAAAwkC,kBAAAngC,OAAAC,MAAAtE,KAAAN,QAAA8kC,kBAAAxkC,KAAA6kC,+BAEA7kC,KAAAN,QAAA+kC,gBAGAzkC,KAAAwkC,kBAAA,CACAM,OAAA,EACAC,UAAA5lC,UAAA6lC,aAAAC,OACAC,eAAA,CAAA,CAAAh9B,KAAA,QAAA4kB,MAAA3tB,UAAAgmC,UAAAhH,OACAiH,OAAA,EACAC,QAAA,GACAC,MAAAnmC,UAAAomC,oBAAAN,OACAO,WAAArmC,UAAA6lC,aAAAnzB,KACArN,KAAA,GACAihC,SAAA,EACA1P,QAAA,EACA2P,SAAA,KACAC,OAAA,GACAC,UAAA,EACArX,MAAA,GAGAvuB,KAAAN,QAAAsB,OAAAhB,KAAAN,QAAAglC,YAEA,GAAA1kC,KAAAN,QAAAilC,iBACA3kC,KAAAN,QAAAklC,QACAj7B,EAAAiB,WAAA,WACA0P,QAAA4nB,cAAA3+B,EAAA7D,QAAAklC,WAGAj7B,EAAAiB,WAAA,WACA0P,QAAA4nB,cAAA,qBAOAliC,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAk7B,4BAAA,WACA,MAAA,CACAC,OAAA,EACAC,UAAA5lC,UAAA6lC,aAAAC,OACAC,eAAA,CAAA,CAAAh9B,KAAA,UAAA4kB,MAAA3tB,UAAAgmC,UAAAhH,OACAiH,OAAA,EACAC,QAAA,GACAC,MAAAnmC,UAAAomC,oBAAAN,OACAzgC,KAAA,GACAihC,SAAA,EACA1P,QAAA,KACA2P,SAAA,KACAC,OAAA,GACAC,UAAA,EACArX,MAAA,IAIA7pB,KAAA,WACA1E,KAAA2J,YAGA3J,KAAA6M,SAEA7M,KAAAN,QAAAmC,OACA7B,KAAAH,YAAAe,SAAAZ,KAAAN,QAAAmC,OAGA7B,KAAAmO,aAGAA,SAAA,WACAnO,KAAAH,YAAAS,QAEA,IAAAulC,EAAA,IAAAjkC,QAAA,OAAAG,aAAA/B,KAAAH,aAEA8V,EAAAxW,UAAAyW,KAAAkwB,UAAA,YAAA,sBAEAC,EAAAhwB,KAAAoE,UAAA9V,OAAA2hC,MAAAhmC,KAAAwkC,oBACA,oBAAApqB,SACA2rB,EAAA3rB,OAAAC,OAAA0rB,IAEA/lC,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACA/C,KAAAmzB,EACA7sB,OAAA,OACAlD,UAAA,SAAAiwB,GAGA,GAFAJ,EAAAvlC,QAEA2lC,GAAA,GAAAA,EAAAtlC,OAGA,IAAA,IAAAE,EAAA,EAAA20B,EAAAyQ,EAAAtlC,OAAAE,EAAA20B,EAAA30B,IACAb,KAAAkmC,qBAAAD,EAAAplC,GAAAglC,QAHA7lC,KAAAmmC,UAAAN,IAKAz4B,KAAApN,MACAmW,UAAAhX,UAAAyO,MAAAuI,YAEAnW,KAAA8J,QAAAsM,QAGA+vB,UAAA,SAAAN,GACA,IAAAnkC,EAAA1B,KAAA0B,UAAA,WACAmkC,EAAAjlC,SAAAc,EAAA,YAEA,IAAAE,QAAA,OAAA,CACAC,MAAAH,EAAA,QACAqF,KAAA5H,UAAAsL,KAAAC,UAAA,gCACA3I,aAAA8jC,IAGAK,qBAAA,SAAAE,EAAAC,GAEA,GAAArmC,KAAAN,QAAA+kC,cAAA,CAGA,IAAA6B,EAAA,IAAA1kC,QAAA,MAAA,CACAC,MAAA7B,KAAA0B,UAAA,WAGA6kC,EAAA,IAAA3kC,QAAA,MAAA,CACAC,MAAA7B,KAAA0B,UAAA,cACA8I,KAAA47B,EAAAI,YAAA,MAGAC,EAAA,IAAA7kC,QAAA,MAAA,CACAC,MAAA7B,KAAA0B,UAAA,iBAIAglC,EAAAxlC,SAAAklC,EAAAO,MAAA,IACA,EAAAD,IACAA,EAAA,GAGA,IAAA,IAAA7lC,EAAA,EAAAA,EAAA6lC,EAAA7lC,IACA,IAAAe,QAAA,MAAA,CACAC,MAAA7B,KAAA0B,UAAA,oBACAkb,IAAAzd,UAAAyW,KAAA4S,iBAAA,sCAEAzmB,aAAA0kC,GAIA,IAAAL,EAAAO,MAAA,IAAAD,EAAA,GACA,IAAA9kC,QAAA,MAAA,CACAC,MAAA7B,KAAA0B,UAAA,oBACAkb,IAAAzd,UAAAyW,KAAA4S,iBAAA,2CAEAzmB,aAAA0kC,GAIAF,EAAAxkC,aAAAukC,GACAG,EAAA1kC,aAAAukC,GACAA,EAAAvkC,aAAAskC,OAEA,CAEA3kC,EAAA1B,KAAA0B,UAAA,QAGA4kC,EAAA,IAAA1kC,QAAA,MAAA,CACAC,MAAAH,EACAI,GAAAJ,EAAA,IAAA0kC,EAAAQ,gBACA7kC,aAAAskC,GAGAQ,EAAA,IAAAjlC,QAAA,MAAA,CACAC,MAAAH,EAAA,cACAmF,OAAA,CACAigC,eAAA9mC,KAAA+mC,gBAAAX,EAAAY,QAAAZ,EAAArB,cAEAhjC,aAAAukC,GACA,IAAA1kC,QAAA,OAAA,CACAC,MAAAH,EAAA,SACA8I,KAAAxK,KAAAinC,SAAAb,EAAArB,UAAAqB,EAAAO,SACA5kC,aAAA8kC,GACA,IAAAjlC,QAAA,OAAA,CACAC,MAAAH,EAAA,SACA8I,KAAAxK,KAAAknC,gBAAAd,EAAAtB,UACA/iC,aAAA8kC,GAGAM,EAAA,IAAAvlC,QAAA,MAAA,CACAC,MAAAH,EAAA,uBACAK,aAAAukC,GACA,IAAA1kC,QAAA,OAAA,CACAC,MAAAH,EAAA,iBACA6C,MAAA6hC,EAAAl+B,KACAsC,KAAA47B,EAAAl+B,OACAnG,aAAAolC,GAEAA,EAAAv8B,WAAA,WAAA5K,KAAAonC,gBAAAhB,EAAAQ,gBAAA5mC,QAIAinC,SAAA,SAAAlC,EAAA4B,GACA,OAAA5B,GAAA5lC,UAAA6lC,aAAAqC,WAAAtC,GAAA5lC,UAAA6lC,aAAAsC,WAAA,MAAApmC,SAAAylC,EAAA,KAGAI,gBAAA,SAAAC,EAAAjC,GACA,OAAAA,GAAA5lC,UAAA6lC,aAAAqC,UACA,UACAtC,GAAA5lC,UAAA6lC,aAAAsC,WACA,OACA,IAAAN,EACA,UACA,IAAAA,EACA,UACA,IAAAA,EACA,UACA,WAGAE,gBAAA,SAAApC,GACA,OAAA,EAAAA,GAAAA,EAAA,IACA,IAAAA,EACA,KAAAA,GAAAA,EAAA,IACA,IAAA5jC,SAAA4jC,EAAA,IAAA,IAAA,IACA,KAAAA,GAAAA,EAAA,IACA,IAAA5jC,SAAA4jC,EAAA,IAAA,IAAA,IACA,IAAAA,GAAAA,EAAA,KACA,IAAA5jC,SAAA4jC,EAAA,IAAA,IAAA,IACA,KAAAA,GAAAA,EAAA,KACA,IAAA5jC,SAAA4jC,EAAA,KAAA,IAAA,IACA,OAGAsC,gBAAA,SAAAG,GACA,IAAA5xB,EAAAxW,UAAAyW,KAAAwoB,WAAA,aAAA,wBAAAj/B,UAAAyW,KAAAyoB,qBACA,GAAA1oB,EAAAypB,QAAA,KACAzpB,GAAA,IAEAA,GAAA,IACA6R,OAAA3V,KAAA8D,EAAA,SAAA4xB,EAAA,UAAAA,EAAA,2BCtQApoC,UAAAsF,QAAA+iC,QAAA,IAAAnoC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,gBAEAC,QAAA,CACA8J,YAAA,mBACAuK,YAAA5U,UAAA4U,YAAA0zB,MACAnvB,UAAA,EACAC,aAAA,EACAC,eAAA,EACAwT,UAAA,KACAC,QAAA,KACApT,QAAA,KACAD,SAAA,GAGA7Y,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAmP,OAAA,WAGA,IAAAC,EAAA/Y,KAAAoE,eACApE,KAAAoE,gBAAA,EAEApE,KAAAG,UACAH,KAAA0E,OAGA1E,KAAAoE,eAAA2U,GAGArU,KAAA,WACA,IAOAsU,EAWAiB,EAhBAja,KAAA2J,YAGA3J,KAAA6M,SACA7M,KAAAN,QAAAkZ,UACAI,EAAA,IAAApX,QAAA,MACA,CACAC,MAAA,0BACA6G,OAAA1I,KAAA2J,YAGA3J,KAAA8J,UACA9J,KAAA8J,QAAAG,SACAjK,KAAA8J,QAAA,MAGAmQ,EAAA,SAAAhK,GACA,IAUAjE,EAVAzI,EAAAvD,KAGAgZ,GACAhZ,KAAA2J,UAAA8Q,YAAA,0BAAAta,UAGA8P,GAAAA,EAAA2C,MAAA3C,EAAA2C,KAAA,KAGA5G,EAAA,IAAApK,QAAA,KAAA,CACAC,MAAA,iBACAE,aAAA/B,KAAAH,aAGA,IADAkzB,EAAA9iB,EAAA2C,MAAA,IACAjS,QAIAoyB,EAAAltB,QAAA,SAAAsD,GACA,IA2BAoT,EAWAC,EAIAC,EAIAQ,EASAP,EAvDA9J,EAAAvO,OAAAgO,YAAAlJ,GAEAoH,EAAA,IAAA3O,QAAA,KAAA,CACAC,MAAA,iBACAE,aAAAiK,GAEA2Q,EAAA,IAAA/a,QAAA,MAAA,CACAC,MAAA,yBACAE,aAAAwO,GAOAqQ,GALA,IAAAhf,QAAA,MAAA,CACAC,MAAA,eACA+a,IAAAzd,UAAAyO,MAAAiP,mBAAA1T,KACApH,aAAA4a,GAEA,IAAA/a,QAAA,IAAA,CACAC,MAAA,eACAkF,KAAAoC,EAAAjB,MAAAiB,EAAAmL,SACA/P,MAAA4E,EAAAjB,MAAAiB,EAAAmL,WACAvS,aAAA4a,IAEAiE,EAAAhO,KAAAA,EACAgO,EAAAhW,WAAA,WACAzL,UAAAwV,cAAAC,kBAAA5U,KAAA4S,QAGArP,EAAA7D,QAAA4Y,WACAiE,EAAA,IAAA3a,QAAA,MAAA,CACAC,MAAA,qBACAE,aAAAwO,GAEApR,UAAA2d,UAAAC,cAAA5T,EAAAy4B,UAAAz4B,EAAAwK,YAAA,SAAAqJ,GACA,EAAAA,IACAT,EAAA3b,SAAA,cACA2b,EAAAS,WAAAA,KAIAR,EAAA,IAAA5a,QAAA,MAAA,CACAC,MAAA,sBACAE,aAAAwO,GAEAkM,EAAA,IAAA7a,QAAA,MAAA,CACAC,MAAA,yBACAE,aAAAwO,GAEA0M,EAAA,IAAArb,QAAA,MAAA,CACAmF,KAAA,aACAhF,aAAA0a,GAEAS,EAAA,IAAAtb,QAAA,MAAA,CACAmF,KAAA,aACAhF,aAAA0a,GAEAlZ,EAAA7D,QAAA8Y,gBACAkE,EAAA,IAAA9a,QAAA,MAAA,CACAmF,KAAA,UACAhF,aAAA0a,IAGA9N,EAAA,IAAA/M,QAAA,MAAA,CACAmF,KAAA,oBACAhF,aAAA0a,GAEAlZ,EAAA7D,QAAA6Y,aACA,IAAA3W,QAAA,MAAA,CACAmF,KAAA,aACAhF,aAAA0a,GAEA7R,WAAA,WACAzL,UAAAyO,MAAAuP,QAAAvK,KAIA6J,EAAA/O,OAEA8O,EAAAzO,SAAA,aAAA,WACA0O,EAAApH,OACAoH,EAAAlc,YAAA,cAEA,IAAA6c,EAAAX,EAAAY,wBACAC,EAAA/Z,EAAA1D,YAAAwd,wBACAE,EAAAH,EAAAI,OAAAF,EAAAE,OAEAf,EAAAgB,YAAA,aAAAF,GAGAG,GADAN,EAAAX,EAAAY,yBACAM,IAAAL,EAAAK,IAEAlB,EAAAgB,YAAA,YAAAF,GAAAG,GAEAlB,EAAA5b,SAAA,YAGA6b,EAAA1O,SAAA,aAAA,WACA0O,EAAApH,OACAmH,EAAA5b,SAAA,YAGA4b,EAAAzO,SAAA,aAAA,WACA0O,EAAA/O,OACA8O,EAAAjc,YAAA,YAGAkc,EAAA1O,SAAA,aAAA,WACA0O,EAAA/O,OACA8O,EAAAjc,YAAA,YAGA0c,EAAArS,WAAA,WACA0P,QAAAsD,aAAAhL,KAGAsK,EAAAtS,WAAA,WAEA,IAGAzB,EACA0U,EAJA1e,UAAA2e,WAGA3U,EAAA5F,EAAAwa,aAAAnL,EAAA,GACAiL,EAAA,SAAAG,EAAAC,GACA9e,UAAAyO,MAAAsQ,qBAAA/U,EAAA8U,EAAAD,GAGA7e,UAAAyO,MAAAuQ,sBAEAhf,UAAAif,KAAAC,WAIAL,GAAAC,GAAA9e,UAAAmf,sBAAAC,SAAAve,KAAAwe,UACAxe,KAAA0X,SACAtK,KAAApN,MAGAb,UAAA2e,SAAAU,SAAArV,GAAA,GACAhK,UAAA2e,SAAAW,eAAAtV,EAAA,KAAA,KAAA,KAAA,KAAA,WACA0U,GAAA1e,UAAA2e,SAAAU,SAAArV,GAAAhK,UAAAmf,sBAAAC,WAKAV,EAAA1e,UAAA2e,SAAAY,UAAAvV,GAAAhK,UAAAmf,sBAAAK,UAGAjC,GACAA,EAAA9R,WAAA,WACA,IAAAgU,EAAAzf,UAAAyf,UAAAC,OACA7e,KAAA8e,WAAA,IAAA3f,UAAA4f,gBAAA,CACApM,gBAAA,WACA3S,KAAAgf,eAAA,MACA5R,KAAApN,MACA4e,UAAAA,GACAhM,GACA5S,KAAA8e,WAAAzJ,SAIA1G,EAAA/D,WAAA,WACA,IAAAqU,EAAA3E,QAAA4E,cAAA/f,UAAAyY,QAAAC,KAAA,KAAAjF,EAAAuM,UACAhgB,UAAAyO,MAAAwR,QAAAxM,EAAA,SAAAgD,GACA,MAAAA,GACA0E,QAAA+E,iBACAlgB,UAAAyO,MAAA0R,qBAAAL,EAAArJ,OAIA,IAAAhU,QAAA,OAAA,CACAC,MAAA,gBACAkF,KAAA,iBAAA5H,UAAAyO,MAAA+N,aAAAxS,EAAA24B,YAAA,WACA//B,aAAAwO,GAEA,IAAA3O,QAAA,OAAA,CACAC,MAAA,gBACAkF,KAAA,YAAAoC,EAAAoW,YAAAC,QAAA,MACAzd,aAAAwO,GAEAgM,EAAA3R,WAAA,WACA,IAAArH,EAAAvD,KACAA,KAAAyf,SAAA,cACAtgB,UAAA2d,UAAA4C,eAAA1f,KAAAgd,WAAA7T,EAAAy4B,UAAAz4B,EAAAwK,YAAA,WACApQ,EAAAhD,YAAA,eACA6M,KAAApN,OAGAb,UAAA2d,UAAA6C,YAAAxW,EAAAy4B,UAAAz4B,EAAAwK,YAAA,SAAAqJ,GACAzZ,EAAA3C,SAAA,cACAZ,KAAAgd,WAAAA,GACA5P,KAAApN,cAKAoN,KAAApN,MACAA,KAAA8J,QAAA3K,UAAAyO,MAAAwoB,WAAA,GAAAp2B,KAAAN,QAAAqU,YAAAkG,EAAA,KAAA,MAAA,EAAAja,KAAAN,QAAAwa,kBAGA6D,aAAA,SAAAnL,EAAApO,GACA,IAAArF,UAAAif,KACA,OAAAxL,EAEAzJ,EAAA,IAAAhK,UAAAif,KAAAwB,KAAAhN,GAsBA,OArBApO,GAAArF,UAAAyO,MAAAiS,kBAAA7f,KAAAN,QAAAkT,OAAA5S,KAAAN,QAAAkT,KAAAkN,YAAA,EACA3W,EAAA2W,YAAA,EAEAtb,GAAArF,UAAAsL,KAAAC,UAAA,SACA,GAAA1K,KAAAN,QAAAkT,KAAAkN,cACA3W,EAAA2W,YAAA,GACA3W,EAAA4W,gBAAAC,EACA,GAAAhgB,KAAAN,QAAAkT,KAAAqN,UACA9W,EAAA8W,QAAA,GAEAjgB,KAAAN,QAAAwgB,YAAAlgB,KAAAN,QAAAwgB,WAAAX,cACApW,EAAAoW,YAAAvf,KAAAN,QAAAwgB,WAAAX,cAIAvf,KAAAN,QAAAwgB,YAAAlgB,KAAAN,QAAAwgB,WAAAX,cACApW,EAAAgX,aAAAngB,KAAAN,QAAAwgB,WAAAX,aAGApW,EAAAiX,QAAA,KAEAjX,KCxSAhK,UAAAsF,QAAAijC,oBAAA,IAAAroC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,UAAA,gBAAA,gBAEAC,QAAA,CACA8J,YAAA,wBACA+M,MAAA,KACAgK,UAAA,EACAonB,aAAA,KACAC,SAAA,KACAC,aAAA,KACAC,aAAA,KACAlwB,QAAAzY,UAAAyY,QAAAC,KACAI,OAAA,WAGAlY,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAAAnB,EAAAvD,KAEAA,KAAA2J,YAEA3J,KAAA6M,SAEA7M,KAAAH,cAEAG,KAAAN,QAAA6gB,UAEA,IAAA3e,QAAA,OAAA,CACAC,MAAA,UACA2e,OAAA,CACAC,MAAA,WACAld,EAAAod,YAGA5Z,KAAA,eACAhF,aAAA/B,KAAA2J,WAGAxK,UAAAyO,MAAAwoB,WAAA,EAAAj3B,UAAA4U,YAAA8D,KAAA,SAAAyI,GACAA,EAAA1N,KAAA/M,QAAA,SAAAgS,GACA,IAGA3P,EAFAA,EADA3E,EAAA7D,QAAAqoC,UACAlwB,EAAA0H,YAAAhc,EAAA7D,QAAAqoC,WAEAlwB,EAAA3P,KACA,IAAA0Y,EAAA,IAAAhf,QAAA,MAAA,CACAC,MAAA,YACA2e,OAAA,CACAC,MAAA,SAAAC,GACAnd,EAAA2d,aAAAR,EAAA7I,OAGA9V,aAAAwB,EAAA1D,aAEA,IAAA+B,QAAA,MAAA,CACAC,MAAA,iBACA+a,IAAAzd,UAAAyO,MAAAiP,mBAAAhF,KACA9V,aAAA6e,GAEA,IAAAhf,QAAA,OAAA,CACAC,MAAA,iBACAkF,KAAAmB,EACA3D,MAAA2D,IACAnG,aAAA6e,MAEA,KAAA,MAAA,EAAArd,EAAAykC,kBAGA9mB,aAAA,SAAAR,EAAA7I,GACA6I,EAAAc,kBAEA,YAAAxhB,KAAAN,QAAAuY,OACA9Y,UAAAwV,cAAAC,kBAAAiD,GAGA,SAAA7X,KAAAN,QAAAuY,SACAtC,EAAA,IAGA,EAAAkC,EAAAxD,OACAsB,GAAA,UAAAkC,EAAAxD,OACA,EAAAwD,EAAAzD,UACAuB,GAAA,WAAAkC,EAAAzD,SAGAyD,EAAA0H,aAAA,MAAA1H,EAAA0H,YAAApD,MACAxG,GAAA,UAAAkC,EAAA0H,YAAApD,MACA,EAAAtE,EAAA6Z,QACA/b,GAAA,UAAAkC,EAAA6Z,OAGAyH,SAAA1R,SAAAtF,KAAAxM,EAAA,SAAA3V,KAAAN,QAAAkY,UAIA+I,QAAA,WACAxhB,UAAA8oC,aAAAC,oBAGAF,cAAA,SAAAp1B,EAAA+C,GACA,IA2BAqW,EA3BAmc,EAAA,CACAv1B,KAAA,GACA+C,IAAAA,GAwCA,MArCA,mBAAA2E,QAAAC,aAGA,OAFA6tB,EAAA9tB,QAAAC,YAAA3H,EAAA+C,MAGAwyB,EAAAC,GAIA,MAAApoC,KAAAN,QAAAkoC,WACAO,EAAAxyB,IAAA9N,SAAA,cACAsgC,EAAAxyB,KAAA,aAGAwyB,EAAAv1B,KAAAy1B,OAAA,CACAC,SAAAtoC,KAAAN,QAAAkoC,SAAA,MAIA,MAAA5nC,KAAAN,QAAAioC,eACAQ,EAAAxyB,IAAA9N,SAAA,cACAsgC,EAAAxyB,KAAA,cAEAqW,EAAA,IAAAze,MACAC,QAAAwe,EAAAve,UAAAzN,KAAAN,QAAAioC,cACAQ,EAAAv1B,KAAA21B,UAAAvc,GAGA,MAAAhsB,KAAAN,QAAAmoC,cAAA,MAAA7nC,KAAAN,QAAAooC,eACAK,EAAAxyB,IAAA9N,SAAA,cACAsgC,EAAAxyB,KAAA,aAGAwyB,EAAAv1B,KAAA41B,cAAA,GACAL,EAAAv1B,KAAA41B,cAAAxoC,KAAAN,QAAAmoC,cAAA7nC,KAAAN,QAAAooC,cAIAK,KClJAhpC,UAAAsF,QAAAgkC,UAAA,IAAAppC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,qBACA0B,MAAA,IAGAnL,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA1E,KAAA2J,WAAAxK,UAAAia,mBAAA,iBAAAja,UAAAia,kBAAA4T,eAGAhtB,KAAA6M,SAIA1N,UAAAupC,WAAA,IAAAvpC,UAAAwpC,gBAAA,CACAhpC,UAAAK,KAAAH,YACA+oC,WAAA,EACAC,YAAA1pC,UAAAuhB,MAAAooB,SACAC,mBAAA5pC,UAAA6pC,YAAAC,cACAC,cAAA/pC,UAAAgqC,OAAAC,kBACAC,SAAAlqC,UAAAgqC,OAAAG,YAEAnqC,UAAAupC,WAAAhkC,KAAA1E,KAAAN,QAAAwL,WC7BA/L,UAAAsF,QAAA8kC,OAAA,IAAAlqC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,iBAAA,gBAEAC,QAAA,CACA8J,YAAA,kBACAoO,QAAAzY,UAAAyY,QAAAC,KACA3M,MAAA,GACA+M,OAAA,OACA8U,UAAA,EACAzU,UAAA,EACAM,SAAA,EACA4wB,YAAA,EACAC,aAAA,EACA9oB,SAAA,EACApI,aAAA,EACAC,eAAA,EACAyO,SAAA,cAGAlnB,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAYAG,EAZA7E,KAAA2J,WAAA,iBAAA3J,KAAAN,QAAAkY,UAGA5X,KAAA6M,SAEA7M,KAAAN,QAAAkZ,UACA5Y,KAAAgZ,aAAA,IAAApX,QAAA,MACA,CACAC,MAAA,yBACA6G,OAAA1I,KAAA2J,YAGA9E,EAAA,KAEA7E,KAAAN,QAAAkY,UAAAzY,UAAAyY,QAAAC,KACAhT,EAAA1F,UAAAyO,MAAA87B,eAAA1pC,KAAAN,QAAAwL,MAAAlL,KAAA2pC,eAAA,KAAA,KAAA,KAAA3pC,KAAAN,QAAAwY,eAAAlY,KAAAN,QAAAwa,gBACAla,KAAAN,QAAAkY,UAAAzY,UAAAyY,QAAAzD,iBACAtP,EAAA1F,UAAAyO,MAAAg8B,iBAEA,mBAAA/kC,GAGAA,EAAA7E,KAAAN,QAAAwL,MAAAlL,KAAA2pC,eAAA,KAAA,WAGAA,eAAA,SAAAr7B,GAEAtO,KAAAgZ,cACAhZ,KAAA2J,UAAA8Q,YAAA,yBAAAta,UAGA,IAQA6L,EARAzI,EAAAvD,KACAsO,GAAA,GAAAA,EAAA3N,SAGA2N,EAAAsE,OACAtE,EAAAA,EAAAsE,MAGA5G,EAAA,IAAApK,QAAA,KAAA,CACAC,MAAA,iBACAE,aAAA/B,KAAAH,aAEAG,KAAAN,QAAAihB,SACA,IAAA/e,QAAA,OAAA,CACAC,MAAA,mBACAkF,KAAA,aACAhF,aAAA/B,KAAA4J,UAEAgB,WAAA,WACAzL,UAAAsF,QAAA4iB,IAAAC,eAAA/jB,EAAA7D,QAAAunB,YAIA3Y,EAAAzI,QAAA,SAAAsD,GACA,IAsBAoT,EAaAC,EAIAC,EAIAQ,EASAP,EApDA9J,EAAAvO,OAAAgO,YAAAlJ,GACAxB,GAAApE,EAAA7D,QAAAqtB,SACA5tB,UAAAyO,MAAAuC,sBAAAyC,EAAAi3B,YAAA70B,OAAA,YAAA,MACA,IAAApC,EAAA1K,KAEAqI,EAAA,IAAA3O,QAAA,KAAA,CACAC,MAAA,iBACAE,aAAAiK,GAOA4U,GALA,IAAAhf,QAAA,MAAA,CACAC,MAAA,eACA+a,IAAAzd,UAAAyO,MAAAiP,mBAAAjK,KACA7Q,aAAAwO,GAEA,IAAA3O,QAAA,OAAA,CACAC,MAAA,eACAkF,KAAAY,EACApD,MAAAqO,EAAA1K,OACAnG,aAAAwO,IAEAhN,EAAA7D,QAAA4Y,WAEAiE,EAAA,IAAA3a,QAAA,MAAA,CACAC,MAAA,qBACAE,aAAAwO,GAEApR,UAAA2d,UAAAC,cAAAnK,EAAAgvB,UACAhvB,EAAAe,YACA,SAAAqJ,GACA,EAAAA,IACAT,EAAA3b,SAAA,cACA2b,EAAAS,WAAAA,KAIAR,EAAA,IAAA5a,QAAA,MAAA,CACAC,MAAA,sBACAE,aAAAwO,GAEAkM,EAAA,IAAA7a,QAAA,MAAA,CACAC,MAAA,yBACAE,aAAAwO,GAEA0M,EAAA,IAAArb,QAAA,MAAA,CACAmF,KAAA,aACAhF,aAAA0a,GAEAS,EAAA,IAAAtb,QAAA,MAAA,CACAmF,KAAA,aACAhF,aAAA0a,GAEAlZ,EAAA7D,QAAA8Y,gBACAkE,EAAA,IAAA9a,QAAA,MAAA,CACAmF,KAAA,UACAhF,aAAA0a,IAGA9N,EAAA,IAAA/M,QAAA,MAAA,CACAmF,KAAA,oBACAhF,aAAA0a,GAEAlZ,EAAA7D,QAAA6Y,aACA,IAAA3W,QAAA,MAAA,CACAmF,KAAA,aACAhF,aAAA0a,GAEA7R,WAAA,WACAzL,UAAAyO,MAAAuP,QAAAvK,KAIA6J,EAAA/O,OAEA8O,EAAAzO,SAAA,aAAA,WACA0O,EAAApH,OACAoH,EAAAlc,YAAA,cAEA,IAAA6c,EAAAX,EAAAY,wBACAC,EAAA/Z,EAAA1D,YAAAwd,wBACAE,EAAAH,EAAAI,OAAAF,EAAAE,OAEAf,EAAAgB,YAAA,aAAAF,GAGAG,GADAN,EAAAX,EAAAY,yBACAM,IAAAL,EAAAK,IAEAlB,EAAAgB,YAAA,YAAAF,GAAAG,GAEAlB,EAAA5b,SAAA,YAGA6b,EAAA1O,SAAA,aAAA,WACA0O,EAAApH,OACAmH,EAAA5b,SAAA,YAGA4b,EAAAzO,SAAA,aAAA,WACA0O,EAAA/O,OACA8O,EAAAjc,YAAA,YAGAkc,EAAA1O,SAAA,aAAA,WACA0O,EAAA/O,OACA8O,EAAAjc,YAAA,YAGA0c,EAAArS,WAAA,WACA0P,QAAAsD,aAAAhL,KAGAsK,EAAAtS,WAAA,WAEA,IAGAzB,EACA0U,EAJA1e,UAAA2e,WAGA3U,EAAA5F,EAAAwa,aAAAnL,EAAA,GACAiL,EAAA,SAAAG,EAAAC,GACA9e,UAAAyO,MAAAsQ,qBAAA/U,EAAA8U,EAAAD,GAGA7e,UAAAyO,MAAAuQ,sBAEAhf,UAAAif,KAAAC,WAIAL,GAAAC,GAAA9e,UAAAmf,sBAAAC,SAAAve,KAAAwe,UACAxe,KAAA0X,SACAtK,KAAApN,MAGAb,UAAA2e,SAAAU,SAAArV,GAAA,GACAhK,UAAA2e,SAAAW,eAAAtV,EAAA,KAAA,KAAA,KAAA,KAAA,WACA0U,GAAA1e,UAAA2e,SAAAU,SAAArV,GAAAhK,UAAAmf,sBAAAC,WAKAV,EAAA1e,UAAA2e,SAAAY,UAAAvV,GAAAhK,UAAAmf,sBAAAK,UAGAjC,GACAA,EAAA9R,WAAA,WACA,IAAAgU,EAAAzf,UAAAyf,UAAAC,OACA7e,KAAA8e,WAAA,IAAA3f,UAAA4f,gBAAA,CACApM,gBAAA,WACA3S,KAAAgf,eAAA,MACA5R,KAAApN,MACA4e,UAAAA,GACAhM,GACA5S,KAAA8e,WAAAzJ,SAIA1G,EAAA/D,WAAA,WACA,IAAAqU,EAAA3E,QAAA4E,cAAA/f,UAAAyY,QAAAC,KAAA,KAAAjF,EAAAuM,UACAhgB,UAAAyO,MAAAwR,QAAAxM,EAAA,SAAAgD,GACA,MAAAA,GACA0E,QAAA+E,iBACAlgB,UAAAyO,MAAA0R,qBAAAL,EAAArJ,OAIA,IAAAhU,QAAA,OAAA,CACAC,MAAA,gBACAkF,KAAA,iBAAA5H,UAAAyO,MAAA+N,aAAA/I,EAAAkvB,YAAA,WACA//B,aAAAwO,GAEA,IAAA3O,QAAA,OAAA,CACAC,MAAA,gBACAkF,KAAA,YAAA6L,EAAA2M,YAAAC,QAAA,MACAzd,aAAAwO,GAEAgM,EAAA3R,WAAA,WACA,IAAArH,EAAAvD,KACAA,KAAAyf,SAAA,cACAtgB,UAAA2d,UAAA4C,eAAA1f,KAAAgd,WACApK,EAAAgvB,UACAhvB,EAAAe,YACA,WACApQ,EAAAhD,YAAA,eACA6M,KAAApN,OAGAb,UAAA2d,UAAA6C,YAAA/M,EAAAgvB,UACAhvB,EAAAe,YACA,SAAAqJ,GACAzZ,EAAA3C,SAAA,cACAZ,KAAAgd,WAAAA,GACA5P,KAAApN,UAMA,YAAAuD,EAAA7D,QAAAuY,QACA2I,EAAAhO,KAAAA,EACAgO,EAAAhW,WAAA,WACAzL,UAAAwV,cAAAC,kBAAA5U,KAAA4S,SAIA,SAAArP,EAAA7D,QAAAuY,QACAtC,EAAA,IAGA,EAAA/C,EAAAyB,OACAsB,GAAA,UAAA/C,EAAAyB,OACA,EAAAzB,EAAAwB,UACAuB,GAAA,WAAA/C,EAAAwB,SAGAxB,EAAA2M,aAAA,MAAA3M,EAAA2M,YAAApD,MACAxG,GAAA,UAAA/C,EAAA2M,YAAApD,MACA,EAAAvJ,EAAA8e,QACA/b,GAAA,UAAA/C,EAAA8e,OAGA9Q,EAAAuB,KAAAxM,EAAA,SAAA3V,KAAAN,QAAAkY,SAGA,aAAA5X,KAAAN,QAAAuY,QAAA,EAAArF,EAAAyB,SAEAuM,EAAAuB,KAAAhjB,UAAAyO,MAAAk8B,mBAAAl3B,EAAAyB,QACAuM,EAAAmL,OAAA,iBAKAhO,aAAA,SAAAnL,EAAApO,GACA,IAAArF,UAAAif,KACA,OAAAxL,EAEAzJ,EAAA,IAAAhK,UAAAif,KAAAwB,KAAAhN,GAsBA,OArBApO,GAAArF,UAAAyO,MAAAiS,kBAAA7f,KAAAN,QAAAkT,OAAA5S,KAAAN,QAAAkT,KAAAkN,YAAA,EACA3W,EAAA2W,YAAA,EAEAtb,GAAArF,UAAAsL,KAAAC,UAAA,SACA,GAAA1K,KAAAN,QAAAkT,KAAAkN,cACA3W,EAAA2W,YAAA,GACA3W,EAAA4W,gBAAAC,EACA,GAAAhgB,KAAAN,QAAAkT,KAAAqN,UACA9W,EAAA8W,QAAA,GAEAjgB,KAAAN,QAAAwgB,YAAAlgB,KAAAN,QAAAwgB,WAAAX,cACApW,EAAAoW,YAAAvf,KAAAN,QAAAwgB,WAAAX,cAIAvf,KAAAN,QAAAwgB,YAAAlgB,KAAAN,QAAAwgB,WAAAX,cACApW,EAAAgX,aAAAngB,KAAAN,QAAAwgB,WAAAX,aAGApW,EAAAiX,QAAA,KAEAjX,KChVAhK,UAAAsF,QAAAslC,eAAA,IAAA1qC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,0BACA0B,MAAA,EACA8+B,SAAA,EACAC,gBAAA,CAAA,WAAA,UAAA,iBAAA,gBAAA,UAGAlqC,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAKAiR,EAGAtI,EARArN,KAAA2J,YAGA3J,KAAA6M,SAEA8I,EAAAxW,UAAAyW,KAAAC,aAAA,UAAA,oBAAA7V,KAAAN,QAAAwL,MACA,EAAAlL,KAAAN,QAAAsqC,WACA38B,EAAA,IAAAE,KACAF,EAAAlO,UAAAyO,MAAAuC,sBAAA9C,EAAAG,QAAAH,EAAAI,UAAAzN,KAAAN,QAAAsqC,WAEAr0B,GAAA,UAAA/F,mBAAAvC,EAAA2H,OAAA,cAGAhV,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACAK,UAAAhW,KAAAia,aAAA7M,KAAApN,MACAmW,UAAAhX,UAAAyO,MAAAuI,YAEAnW,KAAA8J,QAAAsM,SAGA6D,aAAA,SAAArH,GACA,GAAAA,GAAA,GAAAA,EAAAjS,OAGA,IAAA,IAAAE,EAAA,EAAAF,EAAAiS,EAAAjS,OAAAE,EAAAF,EAAAE,IAAA,CACA,IAAAsO,EAAA,IAAAvN,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzH,aAAA/B,KAAAH,aAEAqqC,GAAAt3B,EAAA/R,GAAAspC,WAAA,IAAAhiC,OACAiiC,GAAAx3B,EAAA/R,GAAAwpC,UAAA,IAAAliC,OACA,EAAA+hC,EAAAvpC,OAAAypC,EAAAzpC,QACA,EAAAupC,EAAAvpC,QACA,IAAAiB,QAAA,OAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,YACAzC,KAAAmjC,IACAnoC,aAAAoN,GAGA,EAAAi7B,EAAAzpC,QACA,IAAAiB,QAAA,OAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,WACAzC,KAAAqjC,IACAroC,aAAAoN,KAOA,IAFAm7B,GADAh0B,GAAA1D,EAAA/R,GAAA+rB,OAAA,IAAAzkB,QACAi3B,QAAA,QAGA9oB,EAAAA,EAAA5C,UAAA,EAAA42B,IAEA,IAAA1oC,QAAA,OAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,WACAzC,KAAAuP,IACAvU,aAAAoN,IAGA,IAAAo7B,EAAAprC,UAAAyO,MAAAuC,sBAAAyC,EAAA/R,GAAA2pC,YAAA95B,eAAA,MAAA,GAAA,GACA,IAAA9O,QAAA,OAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,OACAzC,KAAAwjC,IACAxoC,aAAAoN,GAEA,IAAA5L,EAAAvD,KACAmP,EAAAnB,IAAA,YAAA4E,EAAA/R,GAAA4pC,eACAt7B,EAAAvE,WAAA,WAEA,IAAA,IAAA5I,EAAAuB,EAAA7D,QAAAuqC,gBAAAtpC,OAAAqB,KAAA,CACA,IAMA0oC,EANAlI,EAAAloB,QAAAqoB,aAAAp/B,EAAA7D,QAAAuqC,gBAAAjoC,IACA,GAAAwgC,EAAA,CAEAkI,GADAlI,EAAA1gC,IAIAyB,EAAA7D,QAAAuqC,gBAAAjoC,IAHAmf,QAAA,WAAA,IAAAnO,cAIA23B,EAAAzqC,EAAAwqC,GAMA,OAJAC,GACAA,EAAA38B,IAAA,YAAAhO,KAAAuP,IAAA,mBAEA+K,QAAA4nB,cAAAwI,WCnGAvrC,UAAAsF,QAAAmmC,aAAA,IAAAvrC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,kBAEAC,QAAA,CACA8J,YAAA,wBACAoV,UAAAzf,UAAAyf,UAAAC,OACAhG,QAAA,WACAiU,MAAA,OACA5hB,MAAA,GACA6hB,UAAA,EACA/G,WAAA,YAGAjmB,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA1E,KAAA2J,YAGA3J,KAAA6M,SAEA7M,KAAA8J,QAAA3K,UAAAK,OAAAqrC,sBAAA7qC,KAAAN,QAAAkf,UAAA5e,KAAAN,QAAAwL,MAAAlL,KAAAN,QAAAmZ,QAAA7Y,KAAAN,QAAAotB,MAAA,QAAA9sB,KAAA8qC,kBAGAA,eAAA,SAAA76B,GACA,GAAAA,EAAA,CAGAjQ,KAAAH,YAAAS,QAIA,IAFA,IAAA0L,EAAA,IAAApK,QAAA,MAAAG,aAAA/B,KAAAH,aAEAgB,EAAA,EAAAA,EAAAoP,EAAAtP,OAAAE,IAAA,CACA,IAAA6f,EAAAzQ,EAAApP,GACAwM,EAAAlO,UAAAyO,MAAAuC,sBAAAuQ,EAAAqqB,UAAA/1B,OAAAhV,KAAAN,QAAAsmB,YAGAzV,EAAA,IAAA3O,QAAA,KAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzH,aAAAiK,GACA4U,EAAA,IAAAhf,QAAA,IAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,OACAzC,KAAA/G,KAAAN,QAAAqtB,SAAA1f,EAAA,MAAAqT,EAAAlF,KAAAkF,EAAAlF,KACAjX,MAAAmc,EAAAlF,KACA2G,KAAA,qBACA4J,OAAA,cACAhqB,aAAAwO,GAEAqQ,EAAAhO,KAAAvO,OAAAgO,YAAAqO,GACAE,EAAAhW,WAAA,WACA,IAAAuK,EAAA,IAAAhW,UAAAiW,mBAWA,OAVAD,EAAAE,OAEA,EAAArV,KAAA4S,KAAAqC,SACA,IAAA9V,UAAAmW,mBAAA,CACA/J,QAAAvL,KAAA4S,KAAAqC,QACAM,KAAAJ,EAAAI,OAEAF,QAGA,SCjEAlW,UAAAsF,QAAAumC,iBAAA,IAAA3rC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,UAAA,gBAAA,gBAEAC,QAAA,CACA8J,YAAA,4BACA+M,MAAA,KACA00B,WAAA,KACAC,WAAA,KACAC,gBAAA,KACAvzB,QAAAzY,UAAAyY,QAAAC,KACAI,OAAA,WAGAlY,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAAAnB,EAAAvD,KAEAA,KAAA2J,YAIA3J,KAAA6M,SAEA7M,KAAAH,cAIAG,KAAAN,QAAA6gB,UAEA,IAAA3e,QAAA,OAAA,CACAC,MAAA,UACA2e,OAAA,CACAC,MAAAzgB,KAAA2gB,SAEA5Z,KAAA5H,UAAAsL,KAAAC,UAAA,oBACAC,mBAAA,qBACA5I,aAAA/B,KAAA2J,WAGAxK,UAAAyO,MAAA87B,eAAA,EAAA,SAAAppB,GACAA,EAAA1N,KAAA/M,QAAA,SAAAgS,GACA,IAGA3P,EAFAA,EADA3E,EAAA7D,QAAAqoC,UACAlwB,EAAA0H,YAAAhc,EAAA7D,QAAAqoC,WAEAlwB,EAAA3P,KACA,IAAA0Y,EAAA,IAAAhf,QAAA,MAAA,CACAC,MAAA,YACA2e,OAAA,CACAC,MAAA,SAAAC,GACAnd,EAAA2d,aAAAR,EAAA7I,OAGA9V,aAAAwB,EAAA1D,aAEA,IAAA+B,QAAA,MAAA,CACAC,MAAA,iBACA+a,IAAAzd,UAAAyO,MAAAiP,mBAAAhF,KACA9V,aAAA6e,GAEA,IAAAhf,QAAA,OAAA,CACAC,MAAA,iBACAkF,KAAAmB,EACA3D,MAAA2D,IACAnG,aAAA6e,GAEA,QAAArd,EAAA7D,QAAAurC,aACArqB,EAAAhgB,SAAA,QAEA,IAAAgB,QAAA,MAAA,CACAC,MAAA,iBACAkF,KAAA5H,UAAAyO,MAAAuC,sBAAA0H,EAAAgyB,YAAA70B,OAAA,cACAjT,aAAA6e,OAGA,KAAA,KAAA,MAAA,EAAArd,EAAAykC,kBAGA9mB,aAAA,SAAAR,EAAA7I,GACA6I,EAAAc,kBAEA,YAAAxhB,KAAAN,QAAAuY,OACA9Y,UAAAwV,cAAAC,kBAAAiD,GAGA,SAAA7X,KAAAN,QAAAuY,SACAtC,EAAA,IAGA,EAAAkC,EAAAxD,OACAsB,GAAA,UAAAkC,EAAAxD,OACA,EAAAwD,EAAAzD,UACAuB,GAAA,WAAAkC,EAAAzD,SAGAyD,EAAA0H,aAAA,MAAA1H,EAAA0H,YAAApD,MACAxG,GAAA,UAAAkC,EAAA0H,YAAApD,MACA,EAAAtE,EAAA6Z,QACA/b,GAAA,UAAAkC,EAAA6Z,OAGAyH,SAAA1R,SAAAtF,KAAAxM,EAAA,SAAA3V,KAAAN,QAAAkY,UAIA+I,QAAA,WACAxhB,UAAA8oC,aAAAmD,mBAGApD,cAAA,SAAAp1B,EAAA+C,GACA,IAAAwyB,EAAA,CACAv1B,KAAA,GACA+C,IAAAA,GAyBA,MAtBA,mBAAA2E,QAAAC,aAGA,OAFA6tB,EAAA9tB,QAAAC,YAAA3H,EAAA+C,MAGAwyB,EAAAC,GAIA,MAAApoC,KAAAN,QAAAyrC,kBACAhD,EAAAxyB,IAAA9N,SAAA,cACAsgC,EAAAxyB,KAAA,aAGAwyB,EAAAv1B,KAAA41B,cAAA,CACAF,SAAAtoC,KAAAN,QAAAyrC,kBAIA,MAAAnrC,KAAAN,QAAA0zB,SACA+U,EAAAxyB,KAAA,IAAAtR,OAAAi7B,cAAAt/B,KAAAN,QAAA0zB,SAGA+U,KC7IAhpC,UAAAsF,QAAA4mC,kBAAA,IAAAhsC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,UAAA,gBAAA,gBAEAC,QAAA,CACA8J,YAAA,6BACA+M,MAAA,KACA00B,WAAA,KACAC,WAAA,KACAC,gBAAA,KACAvzB,QAAAzY,UAAAyY,QAAAzD,eACAm3B,WAAA,EACArzB,OAAA,WAGAlY,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAwBAc,EAxBAjC,EAAAvD,KAEAA,KAAA2J,YAIA3J,KAAA6M,SAEA7M,KAAAH,cAIAG,KAAAN,QAAA6gB,UAEA,IAAA3e,QAAA,OAAA,CACAC,MAAA,UACA2e,OAAA,CACAC,MAAAzgB,KAAA2gB,SAEA5Z,KAAA5H,UAAAsL,KAAAC,UAAA,oBACAC,mBAAA,qBACA5I,aAAA/B,KAAA2J,WAGAnE,EAAA,SAAA8a,GACA,IAAA1N,EAAA0N,EACAA,GAAAA,EAAA1N,OACAA,EAAA0N,EAAA1N,OAEAA,EADA0N,GAAAA,EAAA3F,OACA2F,EAAA3F,OACA/H,GAAA/M,QAAA,SAAAgS,GACA,IAAA+I,EAAA,IAAAhf,QAAA,MACA,CACAC,MAAA,YACA2e,OAAA,CACAC,MAAA,SAAAC,GACAnd,EAAA2d,aAAAR,EAAA7I,OAGA9V,aAAAwB,EAAA1D,aAEA,IAAA+B,QAAA,MACA,CACAC,MAAA,iBACA+a,IAAAzd,UAAAyO,MAAAiP,mBAAAhF,KACA9V,aAAA6e,GAEA,IAAAhf,QAAA,OACA,CACAC,MAAA,iBACAkF,KAAA8Q,EAAA3P,KACA3D,MAAAsT,EAAA3P,OACAnG,aAAA6e,GAEA,QAAArd,EAAA7D,QAAAurC,aACArqB,EAAAhgB,SAAA,QAEA,IAAAgB,QAAA,MACA,CACAC,MAAA,iBACAkF,KAAA5H,UAAAyO,MAAAuC,sBAAA0H,EAAAgyB,YAAA70B,OAAA,cACAjT,aAAA6e,OAMA5gB,KAAAN,QAAA6rC,WAAA,QAAAvrC,KAAAN,QAAA6rC,UACA,IAAApsC,UAAA2W,QAAAC,KAAA,CACAJ,IAAAxW,UAAAyW,KAAAC,aAAA,SAAA,kBAAA1W,UAAAia,kBAAAC,gBAAAC,MAAA,sBACAtD,UACAxQ,IAEA4Q,OAEAjX,UAAAyO,MAAAg8B,gBAAA5pC,KAAAN,QAAA4rC,WACA9lC,EACA,KAAA,KAAA,MAAA,EAAAjC,EAAAykC,kBAIA9mB,aAAA,SAAAR,EAAA7I,GACA6I,EAAAc,kBAEA,YAAAxhB,KAAAN,QAAAuY,OACA9Y,UAAAwV,cAAAC,kBAAAiD,GAGA,SAAA7X,KAAAN,QAAAuY,SACAtC,EAAA,IAGA,EAAAkC,EAAAxD,OACAsB,GAAA,UAAAkC,EAAAxD,OACA,EAAAwD,EAAAzD,UACAuB,GAAA,WAAAkC,EAAAzD,SAGAyD,EAAA0H,aAAA,MAAA1H,EAAA0H,YAAApD,MACAxG,GAAA,UAAAkC,EAAA0H,YAAApD,MACA,EAAAtE,EAAA6Z,QACA/b,GAAA,UAAAkC,EAAA6Z,OAGAyH,SAAA1R,SAAAtF,KAAAxM,EAAA,SAAA3V,KAAAN,QAAAkY,UAIA+I,QAAA,SAAAD,GACA,IAGAgH,EAHAnkB,EAAAvD,KAEAA,KAAAN,QAAA6rC,WAAA,QAAAvrC,KAAAN,QAAA6rC,WACA7jB,EAAA,SAAAvoB,UAAAia,kBAAAC,gBAAAC,MAAA,SAAAna,UAAAyY,QAAAzD,eACAhV,UAAAyO,MAAA49B,WAAA9jB,GACAvoB,UAAAyO,MAAAsnB,aAAAxN,GAAA,IAEAvoB,UAAAyO,MAAAg8B,gBAAA,GAAA,SAAAtpB,GAEAnhB,UAAAsiB,SAAA/T,OACAnK,EAAA7D,QAAAwrC,YACA/rC,UAAAssC,SAAAC,aAAA,EAAA,GACAC,SAAAC,QAAAtrB,IAEAS,SAAAW,cAAApB,EAAA1N,MAEAzD,EAAAjP,EAAA,cACAiP,GACAA,EAAAkG,OAGA,MAAAlW,UAAAwiB,aACAxiB,UAAAyiB,WAAAzhB,UACAhB,UAAAyiB,WAAA,MAGA1hB,EAAA,gBAAAI,QAEAnB,UAAAyiB,WAAA,IAAAziB,UAAA0iB,WAAA,CACA3Z,KAAA,gBACA4Z,gBAAA,KAGA,KAAA,KAAA,MAAA,EAAAve,EAAAykC,gBAIAA,cAAA,SAAAp1B,EAAA+C,GACA,IAAAwyB,EAAA,CACAv1B,KAAA,GACA+C,IAAAA,GAqBA,MAlBA,mBAAA2E,QAAAC,aAGA,OAFA6tB,EAAA9tB,QAAAC,YAAA3H,EAAA+C,MAGAwyB,EAAAC,GAIA,MAAApoC,KAAAN,QAAAyrC,kBACAhD,EAAAxyB,IAAA9N,SAAA,cACAsgC,EAAAxyB,KAAA,aAGAwyB,EAAAv1B,KAAA41B,cAAA,CACAF,SAAAtoC,KAAAN,QAAAyrC,kBAIAhD,KC/LAhpC,UAAAsF,QAAAonC,cAAA,IAAAxsC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,yBACA1H,GAAA,gBACAyU,MAAA,8BACAu1B,WAAA,+BAGA/rC,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,GAEA,IAAApG,EAAAvD,KACA2J,EAAAoE,SAAA,QAAA,WACA5O,UAAAyO,MAAA0R,qBAAA+B,SAAA9d,EAAA7D,QAAAosC,WAAA,MAAA,MAIApnC,KAAA,WACA1E,KAAA6M,SAEA,IAAA0J,GAAAvW,KAAAN,QAAA6W,OAAA,IAAApO,OACA,EAAAoO,EAAA5V,QACA,IAAAiB,QAAA,MAAA,CACAC,MAAA,YACA2I,KAAArL,UAAAsL,KAAAC,UAAA6L,GACA5L,mBAAA4L,IACAxU,aAAA/B,KAAAH,gBC7BAV,UAAAsF,QAAAsnC,QAAA,IAAA1sC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,mBACAo7B,QAAA,UACAruB,MAAA,KACAy1B,WAAA,MAGAjsC,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAGAnB,EA0BAgT,EA7BAvW,KAAA2J,WAAA3J,KAAAN,QAAAklC,WAGArhC,EAAAvD,MACA6M,SAEA7M,KAAA2J,UAAAiB,WAAA,SAAA8V,GACAA,EAAAurB,iBACAvrB,EAAAc,kBAEA,IAAAojB,GAAArhC,EAAA7D,QAAAklC,SAAA,WAAAz8B,OAAA6K,cAEAzP,EAAA7D,QAAAssC,WAGA,WAFAE,EAAA3oC,EAAA7D,QAAAssC,WAAAh5B,cAAA7K,QAGAmS,QAAA4nB,cAAA0C,EAAA,KAAA,SACA,YAAAsH,EACA5xB,QAAA4nB,cAAA0C,EAAA,KAAA,WACA,eAAAsH,GACA5xB,QAAA4nB,cAAA0C,EAAA,KAAA,cAIAtqB,QAAA4nB,cAAA0C,KAMA,GADAruB,GAAAvW,KAAAN,QAAA6W,OAAA,IAAApO,QACAxH,QACA,IAAAiB,QAAA,MAAA,CACAC,MAAA,YACA2I,KAAArL,UAAAsL,KAAAC,UAAA6L,GACA5L,mBAAA4L,IACAxU,aAAA/B,KAAAH,iBCnDAV,UAAAsF,QAAA0nC,IAAA,IAAA9sC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,eACAmM,IAAA,8BACAuD,OAAA,cACAkzB,wBAAA,EACAC,SAAA,GACAC,SAAA,GACAC,eAAA,EACAC,MAAA,GACAC,aAAA,KACAC,WAAA,IAGA3sC,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAMAnB,EACAyI,EACA2J,EARA3V,KAAA2J,YAGA3J,KAAA6M,SAGAtJ,EAAAvD,KACAgM,EAAA,IAAApK,QAAA,MAAAG,aAAA/B,KAAAH,aACA8V,EAAAxW,UAAAyW,KAAAC,aAAA7V,KAAAN,QAAAwZ,QAAA,kBAAAtJ,mBAAA5P,KAAAN,QAAAiW,KAAA,YAAA3V,KAAAN,QAAA0sC,uBAEApsC,KAAAN,QAAA0sC,yBACAz2B,GAAA,aAAA3V,KAAAN,QAAA2sC,SAAA,WAAArsC,KAAAN,QAAA4sC,UAEAtsC,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACAK,UAAA,SAAA/F,GACA,GAAAA,EAGA,GAAA,iBAAAA,EAEA,IADA,IAAA2C,EAAAmD,KAAAqkB,MAAAnqB,GACApP,EAAA,EAAAF,EAAAiS,EAAAjS,OAAAE,EAAAF,EAAAE,IACA0C,EAAA2F,WAAA0J,EAAA/R,GAAAmL,OAIA,CACA,IACAguB,EADA2S,EAAA18B,EAAA28B,QAEAjsC,EAAAgsC,EAAAhsC,OAEAqL,EAAA1L,QAEA,iBAAAN,KAAAN,QAAA8sC,OAAA,GAAAxsC,KAAAN,QAAA8sC,QACA7rC,EAAAqF,KAAAmgB,IAAAxlB,EAAAX,KAAAN,QAAA8sC,QAEA,IAAA3rC,EAAA,EAAAA,EAAAF,EAAAE,IAAA,CAOAm5B,GAHAA,EAHAh6B,KAAAN,QAAA6sC,cAGAI,EAAA9rC,GAAAm5B,QAFAh6B,KAAA6sC,aAAAF,EAAA9rC,GAAAm5B,UAKAjjB,WAAA,aAAA,KAEA/W,KAAAN,QAAA+sC,cAAA,YAAAtpC,OAAAnD,KAAAN,QAAA+sC,gBACAzS,EAAAh6B,KAAAN,QAAA+sC,aAAAzS,IAGA,IAAAzpB,EAAA,IAAA3O,QAAA,KAAA,CACAC,MAAA,aACAE,aAAAiK,GACA8gC,EAAA,IAAAlrC,QAAA,KAAA,IAEAG,aAAAwO,GAEA,IAAA3O,QAAA,IAAA,CACAC,MAAA,YACAsgB,KAAAwqB,EAAA9rC,GAAAugC,MAAAuL,EAAA9rC,GAAAugC,MAAA,GAAA,IACArV,OAAA,KAAA,IAAAxe,MAAAiF,UACAzL,KAAA4lC,EAAA9rC,GAAA0D,QACAxC,aAAA+qC,GAEA,IAAAC,EAAA,GACAJ,EAAA9rC,GAAAmsC,SAAA,EAAAL,EAAA9rC,GAAAmsC,QAAArsC,SACAosC,EAAA,OAAAJ,EAAA9rC,GAAAmsC,QAAAte,IAAA,SAAAvlB,GACA,OAAAA,EAAAjB,MAAAiB,EAAAmN,QACA22B,KAAA,OAEAN,EAAA9rC,GAAAqsC,gBACA,EAAAH,EAAApsC,SACAosC,GAAA,KACAA,GAAA,cAAA,IAAAx/B,KAAAo/B,EAAA9rC,GAAAqsC,eAAAl4B,OAAA,UAGA,IAAApT,QAAA,MAAA,CACAC,MAAA,WACA2I,KAAAuiC,IACAhrC,aAAA+qC,GACA,IAAAlrC,QAAA,MAAA,CACA4I,KAAAwvB,EACAn4B,MAAA,gBACAE,aAAAwO,MAGAnD,KAAApN,MACAmW,UAAAhX,UAAAyO,MAAAuI,YAEAnW,KAAA8J,QAAAsM,SAGAlN,WAAA,SAAAC,EAAA6C,GACA,GAAA7C,EAAA,CAGA,IAEAS,EAFAjD,GAAAwC,EAAAxC,QAAA,IAAAwB,OAUA,GATA,EAAAxB,EAAAhG,SACAiJ,EAAA,IAAAhI,QAAA,KAAA,CACAC,MAAA,oBACAE,aAAAiK,GACA,IAAApK,QAAA,KAAA,CACAmF,KAAAJ,IACA5E,aAAA6H,IAGAT,EAAAmF,MAGA,IAAA,IAAAzN,EAAA,EAAAF,EAAAwI,EAAAmF,MAAA3N,OAAAE,EAAAF,EAAAE,IACAb,KAAA+gC,cAAA53B,EAAAmF,MAAAzN,GAAAmL,KAGA+0B,cAAA,SAAA53B,EAAA6C,GACA,IAOApC,EAqBAo3B,EA5BA73B,IAGA/G,EAAA,IAAAR,QAAA,KAAA,CACAC,MAAA,aACAE,aAAAiK,GAEApC,EAAA,IAAAhI,QAAA,MAAAG,aAAAK,GACAwe,EAAA,IAAAhf,QAAA,IAAA,CACAugB,KAAAniB,KAAAN,QAAAgtC,WAAAvjC,EAAA4rB,MAAA,IACAhJ,OAAA,WACAhqB,aAAA6H,GACA,IAAAhI,QAAA,OAAA,CACAC,MAAA,2BACAkF,MAAAoC,EAAA5E,OAAA,IAAA4D,SACApG,aAAA6e,GAGA,GADAtX,GAAAH,EAAAG,UAAA,IAAAnB,QACAxH,QACA,IAAAiB,QAAA,MAAA,CACAC,MAAA,WACAkF,KAAAuC,IACAvH,aAAA6H,GAGAq3B,EAAA,IAAAr/B,QAAA,MAAA,CACAC,MAAA,gBACAE,aAAAK,GACA4+B,EAAA,IAAAp/B,QAAA,MAAA,CACAC,MAAA,2BACAE,aAAAk/B,GACA,IAAAr/B,QAAA,IAAA,CACAmF,MAAAoC,EAAApC,MAAA,IAAAoB,SACApG,aAAAi/B,KAGA6L,aAAA,SAAA7S,GACAmT,EAAA,IAAAvrC,QAAA,MAAA,CACA4I,KAAAwvB,IAMA,OAHAmT,EAAA1yB,YAAA,WAAA2V,YAAAjwB,UACAgtC,EAAA1yB,YAAA,OAAAta,UAEAgtC,EAAA59B,IAAA,WCnLApQ,UAAAsF,QAAA+U,OAAA,IAAAna,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,qBAAA,gBAAA,eAAA,mBAEAC,QAAA,CACA8J,YAAA,kBACA4jC,mBAAA,GACAC,iBAAA,GACAC,kBAAA,GACAC,aAAA,MAGAC,YAAA,KACAC,eAAA,KACAC,cAAA,KACAC,iBAAA,KAEA5tC,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IA4BAkpC,EA5BArqC,EAAAvD,KACAA,KAAA2J,YAGA3J,KAAA6M,SAEA7M,KAAA6tC,mBAAA,IAAAjsC,QAAA,MACA,CACAE,GAAA9B,KAAAN,QAAAoC,GAAA,uBACAC,aAAA/B,KAAAH,aAEAG,KAAAwtC,YAAA,IAAA5rC,QAAA,mBAAA,CACAksC,YAAA9tC,KAAAN,QAAA4tC,mBAAAnuC,UAAAsL,KAAAC,UAAA,8BACA5I,GAAA9B,KAAAN,QAAAoC,GAAA,aACAD,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,QACAzH,aAAA/B,KAAA6tC,oBACA7tC,KAAAwtC,YAAAz/B,SAAA,UAAA/N,KAAA+tC,oBAEA5uC,UAAA6uC,cAAAC,aAAAC,0BAAAluC,KAAAwtC,aAEAxtC,KAAAmuC,WAAA,IAAAvsC,QAAA,MACA,CACAC,MAAA,gBACAE,aAAA/B,KAAA6tC,oBACA7tC,KAAAmuC,WAAAvjC,WAAA,WACA0P,QAAA8zB,oBAAA7qC,EAAAiqC,YAAA1rC,GAAAyB,EAAA7D,QAAA6tC,gBAGAK,EAAA,IAAAhsC,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,mBACAzH,aAAA/B,KAAAH,aAEAG,KAAAytC,eAAA,IAAA7rC,QAAA,qBAAA,CACA+F,MAAA3H,KAAAN,QAAA2tC,kBAAAluC,UAAAsL,KAAAC,UAAA,UACA7I,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,uBACAzH,aAAA6rC,GACA5tC,KAAAytC,eAAA7iC,WAAA5K,KAAAquC,eAEAruC,KAAA0tC,cAAA,IAAA9rC,QAAA,qBAAA,CACA+F,MAAAxI,UAAAsL,KAAAC,UAAA,SACA7I,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,sBACAzH,aAAA6rC,GACA5tC,KAAA0tC,cAAA9iC,WAAA5K,KAAAqvB,cAEArvB,KAAA2tC,iBAAA,IAAA/rC,QAAA,IAAA,CACAmF,KAAA/G,KAAAN,QAAA0tC,oBAAAjuC,UAAAsL,KAAAC,UAAA,mBAAA,KACAyX,KAAA,qBACAtgB,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,aACAzH,aAAA/B,KAAAH,aACAG,KAAA2tC,iBAAA/iC,WAAA5K,KAAAsuC,mBAGAnuC,QAAA,WAEA,IADA,IAAA+J,EAAA,CAAAlK,KAAAwtC,YAAAxtC,KAAAytC,eAAAztC,KAAA0tC,cAAA1tC,KAAA2tC,kBACA9sC,EAAAqJ,EAAAvJ,OAAAE,KACAqJ,EAAArJ,KACAX,EAAAgK,EAAArJ,IAAAV,UACA+J,EAAArJ,GAAA,MAIAb,KAAA6M,UAGAkhC,mBAAA,SAAA9/B,GACAjO,KAAAwtC,aAIA,IADA,IAAAt/B,MAAAD,GACAsgC,SACAj0B,QAAA8zB,oBAAApuC,KAAAwtC,YAAA1rC,GAAA9B,KAAAN,QAAA6tC,eAGAc,cAAA,WACAruC,KAAAwtC,aAIA,kBAAAxtC,KAAAwtC,YAAAhe,UAGAlV,QAAA8zB,oBAAApuC,KAAAwtC,YAAA1rC,GAAA9B,KAAAN,QAAA6tC,eAGAle,aAAA,WACArvB,KAAAwtC,cAGAxtC,KAAAwtC,YAAA7lC,MAAA3H,KAAAN,QAAA4tC,mBAAAnuC,UAAAsL,KAAAC,UAAA,8BACA1K,KAAAwtC,YAAAhe,UAAA,IAGA8e,gBAAA,WAEA,OADAh0B,QAAA4nB,cAAA,WACA,KCrHA/iC,UAAAsF,QAAA+pC,KAAA,IAAAnvC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,YAAA,WAEAC,QAAA,CACA8J,YAAA,gBACAjF,MAAA,KACAkqC,SAAA,KACAC,UAAA,KACA1pB,aAAA,KACAtjB,UAAA,IAGAitC,OAAA,KACAC,KAAA,KACAC,iBAAA,KAEA9uC,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAxJ,QAAA,WAEA,IADA,IAAA+J,EAAA,CAAAlK,KAAA2uC,QACA9tC,EAAAqJ,EAAAvJ,OAAAE,KACAqJ,EAAArJ,KACAX,EAAAgK,EAAArJ,IAAAV,UACA+J,EAAArJ,GAAA,OAKA6D,KAAA,WACA,GAAA1E,KAAA2J,UAAA,CAEA3J,KAAA6M,SAEA,IAAAlD,EAAA,IAAA/H,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,eACA3C,OAAA,CACA5B,MAAAjF,KAAAN,QAAA+uC,SACAztC,OAAAhB,KAAAN,QAAAgvC,UACAI,gBAAA9uC,KAAAN,QAAAslB,gBAEAjjB,aAAA/B,KAAAH,aAEAG,KAAA2uC,OAAA,IAAA/sC,QAAA,KAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,kBACAzH,aAAA4H,GAEA3J,KAAA6uC,iBAAA,IAAAjtC,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,YACAzH,aAAA/B,KAAAH,aAEAG,KAAA4uC,KAAA,GAKA,IAJA,IAAAA,EAAA5uC,KAAAN,QAAAkvC,KACAjuC,EAAAiuC,EAAAjuC,OACAouC,EAAA,GAEAluC,EAAA,EAAAA,EAAAF,EAAAE,IACA+tC,EAAA/tC,GAAAqH,MACA6mC,EAAA/hC,KAAA4hC,EAAA/tC,IAKA,IAFAF,GADAiuC,EAAAG,GACApuC,OAEAE,EAAA,EAAAA,EAAAF,EAAAE,IAAA,CACA,IAKA2hC,EALAoC,EAAAgK,EAAA/tC,GAAAqH,KACA8mC,EAAAJ,EAAA/tC,GAAAouC,MAAArK,EAEAA,IAEApC,EAAA,IAAA5gC,QAAA,KAAA,CACAE,GAAA8iC,EAAAzjB,QAAA,KAAA,IAAAA,QAAA,KAAA,MAEA,IAAAvf,QAAA,IAAA,CACAmF,KAAA69B,IAEA7iC,aAAAygC,GACAxiC,KAAAN,QAAAgC,WACA8gC,EAAA5hC,SAAAZ,KAAAN,QAAAgC,WACA8gC,EAAAzgC,aAAA/B,KAAA2uC,QACA3uC,KAAAkvC,UAAAtK,EAAApC,EAAAwM,EAAAJ,EAAA/tC,GAAAsuC,cACAnvC,KAAA4uC,KAAA5hC,KAAAw1B,GACA,GAAA3hC,IACAb,KAAA4uC,KAAA/tC,GAAAD,SAAA,YACAZ,KAAAovC,QAAAxK,EAAAoK,KAGAK,QAAAC,eAAAtvC,KAAA2uC,UAGAO,UAAA,SAAAtK,EAAA+F,EAAAqE,EAAAG,GACA,IACA5rC,EADAonC,IACApnC,EAAAvD,KACA2qC,EAAA//B,WAAA,WACA,IAKA9K,EALAyD,EAAA+kB,YAAAsc,IAEAuK,GACAA,IACA5rC,EAAA+kB,WAAAsc,GACA9kC,EAAAwa,QAAAi1B,eAAAP,KAGA7vC,UAAAqwC,aAAAhvC,YAAAV,EAAAyD,EAAAsrC,iBAAA,cAKAO,QAAA,SAAAxK,EAAAoK,GACA,IAEAttC,EAFAkjC,GAAA5kC,KAAAsoB,YAAAsc,GAAAoK,IAEAttC,EAAA,GACA1B,KAAAN,QAAAgC,YACAA,EAAA,IAAA1B,KAAAN,QAAAgC,WAEA1B,KAAAH,YAAA4a,YAAA,cAAA/Y,GAAAnB,YAAA,YACAP,KAAAH,YAAA0nB,WAAA,IAAAqd,EAAAzjB,QAAA,KAAA,IAAAA,QAAA,KAAA,KAAAvgB,SAAA,YACAZ,KAAAsoB,WAAAsc,GACA9kC,EAAAwa,QAAAi1B,eAAAP,KAGA7vC,UAAAqwC,aAAAhvC,YAAAV,EAAAE,KAAA6uC,iBAAA,aC1HA1vC,UAAAsF,QAAAgrC,SAAA,IAAApwC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,eAAA,YAAA,oBAEAC,QAAA,CACA8J,YAAA,oBACA0P,OAAA,2BACAw2B,cAAA,KACAC,iBAAA,KACAC,oBAAA,GAGAh9B,KAAA,KACA+C,IAAA,KACAk6B,IAAA,KAEAC,gBAAA,CACAC,yBAAA,CACAd,KAAA,UACA/1B,OAAA,UACAxZ,QAAA,CACAuG,IAAA,GACA+pC,KAAA,IAIAC,0BAAA,CACAhB,KAAA,UACA/1B,OAAA,UACAxZ,QAAA,CACAwwC,KAAA,EACAvd,WAAA,EACA1sB,IAAA,GACA+pC,KAAA,IAIAG,sBAAA,CACAlB,KAAA,UACA/1B,OAAA,UACAxZ,QAAA,CACA0wC,KAAA,EACAnqC,IAAA,GACA+pC,KAAA,IAIAK,uBAAA,CACApB,KAAA,UACA/1B,OAAA,UACAxZ,QAAA,CACA4wC,KAAA,EACArqC,IAAA,GACA+pC,KAAA,IAIAO,0BAAA,CACAtB,KAAA,MACA/1B,OAAA,UACAxZ,QAAA,CACA6nC,OAAA,EACAiJ,QAAArxC,UAAAqxC,QAAAxwB,UACA/Z,IAAA,GACA+pC,KAAA,KAKAjwC,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GAEAwZ,EAAAlZ,KAAA8vC,gBAAA9vC,KAAAN,QAAAwZ,QACAA,EAAAxZ,QAAA2E,OAAAC,MAAA,GAAA4U,EAAAxZ,QAAAM,KAAAN,QAAAgwC,eACA1vC,KAAA2V,IAAA3V,KAAAywC,UAAAv3B,EAAA+1B,KAAA/1B,EAAAA,OAAAA,EAAAxZ,SAEAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA1E,KAAA2J,YAGA3J,KAAA6M,SAEA,IAAA1N,UAAA2W,QAAAC,KAAA,CACAJ,IAAA3V,KAAA2V,IACAK,UAAAhW,KAAAia,aACA9D,UAAAhX,UAAAyO,MAAAuI,YACAC,SAGA6D,aAAA,SAAArH,GACA5S,KAAA4S,KAAAA,EACA,IAAA89B,EAAA1qC,KAAAC,IAAA+D,MAAAhE,KAAA4M,EAAA8b,IAAA,SAAAiiB,GACA,OAAAA,EAAAC,cAKAprC,EAAAqrC,GAAArrC,OAAAsrC,QACArgB,KAAA,CAAA,IAAA,MACAsgB,MAAAn+B,EAAA8b,IAAA,SAAAiiB,GACA,MAAA,CAAA5pC,KAAA4pC,EAAAtL,QAAA5U,KAAAkgB,EAAAC,WAAAF,EANA,QAQA5pC,QAAA,GACAkqC,OAAA,GACAC,KAAA,QACAlW,SAAA,SAAAmW,GAAA,OAAAA,EAAAzgB,OACA0M,GAAA,MAAA,SAAA4T,GACA/wC,KAAAmxC,UAAA3rC,EAAAurC,IACA3jC,KAAApN,OAEAwF,EAAA2yB,SAGAgZ,UAAA,SAAA3rC,EAAAurC,GACAF,GAAAO,OAAApxC,KAAAH,aAAAwxC,OAAA,OACAC,KAAA,QAAA9rC,EAAAirB,OAAA,IACA6gB,KAAA,SAAA9rC,EAAAirB,OAAA,IACA4gB,OAAA,KACAC,KAAA,YAAA,aAAA9rC,EAAAirB,OAAA,GAAA,EAAA,IAAAjrB,EAAAirB,OAAA,GAAA,EAAA,KACA8gB,UAAA,QACA3+B,KAAAm+B,GACAS,QAAAH,OAAA,QACAhqC,MAAA,YAAA,SAAA6pC,GAAA,OAAAA,EAAAzgB,KAAA,OACA6gB,KAAA,cAAA,UACAA,KAAA,YAAA,SAAAJ,GACA,MAAA,aAAA,CAAAA,EAAAltB,EAAAktB,EAAA3qB,GAAA,WAAA2qB,EAAAF,OAAA,MAEAjqC,KAAA,SAAAmqC,GAAA,OAAAA,EAAAnqC,OAEA/G,KAAAN,QAAAiwC,kBAAA,aAAAxsC,OAAAnD,KAAAN,QAAAiwC,mBACA3vC,KAAAN,QAAAiwC,iBAAA3vC,KAAA4S,MAGA5S,KAAAH,YAAA4a,YAAA,QAAA7P,WAAA5K,KAAAyxC,kBACAzxC,KAAAH,YAAAwV,QAGAo8B,iBAAA,SAAAxjC,GACAyjC,EAAAxxC,EAAA+N,EAAA8d,SACA2lB,EAAAC,aAAA,UAAA,IAAA5pC,MAAA,QAEAF,SAAA,YACA7H,KAAA4xC,oBAAAF,GAEA1xC,KAAA6xC,kBAAAH,IAIAG,kBAAA,SAAAH,GACA,IAAAI,EAAA9xC,KAAAH,YAAA4a,YAAA,iBACAq3B,EAAAnxC,QAAAX,KAAAN,QAAAkwC,qBACAkC,EAAAC,KAAA,SAAAjuC,GACA,IAAAkuC,GAAAluC,EAAA6tC,aAAA,UAAA,IAAA5pC,MAAA,QACAiqC,EAAAC,MAAA,YACAnuC,EAAAmqB,aAAA,QAAA+jB,EAAA/E,KAAA,QAIAiF,GAAAR,EAAAC,aAAA,UAAA,IAAA5pC,MAAA,QACAmqC,EAAAllC,KAAA,YACA0kC,EAAAzjB,aAAA,QAAAikB,EAAAjF,KAAA,MAEAkF,EAAAnyC,KAAAH,YAAA4a,YAAA,iBAAAiU,IAAA,SAAA5qB,GACA,OAAAA,EAAAyL,IAAA,UAGAvP,KAAAN,QAAAmyC,mBAAA,aAAA1uC,OAAAnD,KAAAN,QAAAmyC,oBACA7xC,KAAAN,QAAAmyC,kBAAAH,EAAAniC,IAAA,QAAA4iC,IAIAP,oBAAA,SAAAF,GACA,IAAAQ,GAAAR,EAAAC,aAAA,UAAA,IAAA5pC,MAAA,QACAmqC,EAAAD,MAAA,YACAP,EAAAzjB,aAAA,QAAAikB,EAAAjF,KAAA,MAEAkF,EAAAnyC,KAAAH,YAAA4a,YAAA,iBAAAiU,IAAA,SAAA5qB,GACA,OAAAA,EAAAyL,IAAA,UAGAvP,KAAAN,QAAA0yC,qBAAAjvC,OAAA,aAAAnD,KAAAN,QAAA0yC,sBACApyC,KAAAN,QAAA0yC,oBAAAV,EAAAniC,IAAA,QAAA4iC,IAIAE,gBAAA,SAAAz/B,GACA,IACAs+B,EADAoB,EAAA,GACA,IAAApB,KAAAt+B,EACA0/B,EAAAtlC,KAAA4C,mBAAAshC,GAAA,IAAAthC,mBAAAgD,EAAAs+B,KACA,OAAAoB,EAAArF,KAAA,MAGAwD,UAAA,SAAAxB,EAAA/1B,EAAAxZ,GAGAiW,EADA,OAAAs5B,EACA9vC,UAAAyW,KAAAkwB,UAAA5sB,GAEA/Z,UAAAyW,KAAAC,aAAAqD,GAGAvD,GAAA,aACAyd,EAAApzB,KAAAqyC,gBAAA3yC,GAMA,OAJA0zB,IACAzd,GAAA,IAAAyd,GAGAzd,KClNAxW,UAAAsF,QAAA8tC,MAAA,IAAAlzC,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,iBACAjF,MAAA,QACA4jC,cAAA,MAGAA,cAAA,KACAzmC,UAAA,eAEA3B,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,GACAjK,EAAAyoC,gBACAzoC,EAAAyoC,cAAA,IAEAnoC,KAAAmoC,cAAA9jC,OAAAC,MAAAtE,KAAAwyC,0BAAA9yC,EAAAyoC,gBAGAqK,wBAAA,WACA,MAAA,CACA/M,SAAA,EACA1P,QAAA,KACA2P,SAAA,KACAC,OAAA,GACAT,eAAA,CAAA,CAAAh9B,KAAA,UAAA4kB,MAAA,QACA2lB,OAAA,EACAjC,QAAArxC,UAAAqxC,QAAAkC,YACAC,SAAAxzC,UAAAyzC,YAAAC,KACAC,UAAA,EACAC,SAAA,GACA/mB,UAAA,KACAC,QAAA,KACAqZ,MAAAnmC,UAAAomC,oBAAAN,SAIAvgC,KAAA,WACA1E,KAAA2J,YAGA3J,KAAA6M,SACA7M,KAAAmO,aAGAA,SAAA,WACAnO,KAAAH,YAAAS,QAEA,IAKA0yC,EALAnN,EAAA,IAAAjkC,QAAA,OAAAG,aAAA/B,KAAAH,aACA8V,EAAAxW,UAAAyW,KAAAkwB,UAAA,aAAA,sBACApmC,EAAAM,KAAAmoC,cAEAzoC,EAAAizC,UAAAxzC,UAAAyzC,YAAAlyB,SACAsyB,EAAA,IAAAzlC,MACA0lC,SAAA,EAAA,EAAA,EAAA,GACAvzC,EAAAssB,UAAAgnB,GAGAtzC,EAAAqW,KAAAoE,UAAAza,GACA,oBAAA0a,SACA1a,EAAA0a,OAAAC,OAAA3a,IAEAM,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACA/C,KAAAlT,EACAwZ,OAAA,OACAlD,UAAA,SAAAk9B,GAGA,GAFArN,EAAAvlC,QAEA4yC,GAAA,GAAAA,EAAAvyC,OAGA,IAAA,IAAAE,EAAA,EAAA20B,EAAA0d,EAAAvyC,OAAAE,EAAA20B,EAAA30B,IACAb,KAAAmzC,cAAAD,EAAAryC,GAAAglC,QAHA7lC,KAAAozC,WAAAvN,IAKAz4B,KAAApN,MACAmW,UAAAhX,UAAAyO,MAAAuI,YAEAnW,KAAA8J,QAAAsM,QAGAg9B,WAAA,SAAAvN,GACA,IAAAnkC,EAAA1B,KAAA0B,UAAA,WACAmkC,EAAAjlC,SAAAc,EAAA,YAEA,IAAAE,QAAA,OAAA,CACAC,MAAAH,EAAA,QACAqF,KAAA5H,UAAAsL,KAAAC,UAAA,YAAA1K,KAAAmoC,cAAAwK,UAAAxzC,UAAAyzC,YAAAlyB,MAAA,SAAA,SAAA,WACA3e,aAAA8jC,IAGAsN,cAAA,SAAAN,EAAAhN,GACA,IAGAnkC,EAQA2xC,EACAC,EA0BAC,EACApM,EAvCA0L,GAAAhN,IAGAnkC,EAAA1B,KAAA0B,UAAA,QACA8xC,EAAA,IAAA5xC,QAAA,MAAA,CACAC,MAAAH,EACAI,GAAAJ,EAAA,IAAAmxC,EAAAY,SACA1xC,aAAA8jC,GAIAwN,GADAK,EAAAv0C,UAAAyO,MAAAuC,sBAAA0iC,EAAAa,UACAA,EAAAjmC,UAAA,MACA6lC,EAAAI,EAAAA,EAAA1+B,OAAA,MAAA,OAEA2+B,IADAd,EAAA3Y,QAAA/6B,UAAAy0C,cAAAC,aACAH,GAAAA,EAAA,IAAAnmC,KACAumC,EAAA,IAAAlyC,QAAA,MAAA,CACAC,MAAAH,EAAA,aACAmF,OAAA,CACAigC,eAAA9mC,KAAA+mC,gBAAA8L,EAAA7L,QAAA6L,EAAA9N,cAEAhjC,aAAAyxC,GACA,IAAA5xC,QAAA,OAAA,CACAC,MAAAH,EAAA,OACAqF,KAAAssC,IACAtxC,aAAA+xC,GACA,IAAAlyC,QAAA,OAAA,CACAC,MAAAH,EAAA,SACAqF,KAAAusC,IACAvxC,aAAA+xC,GACAH,GACA,IAAA/xC,QAAA,OAAA,CACAC,MAAAH,EAAA,UACA6C,MAAA,YACAxC,aAAA+xC,GAIA5rC,GAAA2qC,EAAA3qC,MAAA,IAAAC,OACAorC,GAAAV,EAAAkB,iBAAA,IAAA5rC,OACAg/B,EAAA,IAAAvlC,QAAA,MAAA,CACAC,MAAAH,EAAA,uBACAK,aAAAyxC,GACA,IAAA5xC,QAAA,OAAA,CACAC,MAAAH,EAAA,iBACA6C,MAAA2D,EACAnB,KAAAmB,IACAnG,aAAAolC,GACA,IAAAvlC,QAAA,OAAA,CACAC,MAAAH,EAAA,gBACA6C,MAAAgvC,EACAxsC,KAAAwsC,IACAxxC,aAAAolC,GAEAA,EAAAv8B,WAAA,WAAA5K,KAAAonC,gBAAAyL,EAAAJ,QAAAzyC,QAGAinC,SAAA,SAAAlC,EAAA4B,GACA,OAAA5B,GAAA5lC,UAAA6lC,aAAAqC,WAAAtC,GAAA5lC,UAAA6lC,aAAAsC,WAAA,MAAApmC,SAAAylC,EAAA,KAGAI,gBAAA,SAAAC,EAAAjC,GACA,OAAAA,GAAA5lC,UAAA6lC,aAAAqC,UACA,UACAtC,GAAA5lC,UAAA6lC,aAAAsC,WACA,OACA,IAAAN,EACA,UACA,IAAAA,EACA,UACA,IAAAA,EACA,UACA,WAGAI,gBAAA,SAAAG,GACA,IAAA5xB,EAAAxW,UAAAyW,KAAAwoB,WAAA,aAAA,wBAAAj/B,UAAAyW,KAAAyoB,qBACA,GAAA1oB,EAAAypB,QAAA,KACAzpB,GAAA,IAEAA,GAAA,IACA6R,OAAA3V,KAAA8D,EAAA,SAAA4xB,EAAA,UAAAA,EAAA,2BC9KApoC,UAAAsF,QAAAuvC,UAAA,IAAA30C,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,aAAA,WAEAC,QAAA,CACA8J,YAAA,qBACA8K,SAAA,KACAmc,KAAA,KACA/kB,SAAA,EACAuoC,QAAA,MAGArhC,KAAA,KAEA7S,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,GAEA3J,KAAAN,QAAA4U,UACAtU,KAAAk0C,YAAAl0C,KAAAN,QAAA4U,WAGA4/B,YAAA,SAAA5/B,GACA,IAAAnV,UAAA2W,QAAAC,KAAA,CACAJ,IAAAxW,UAAAyW,KAAAC,aAAA,SAAA,oBAAAjG,mBAAA0E,GACA0B,UAAAhW,KAAAm0C,WACAh+B,UAAAhX,UAAAyO,MAAAuI,YACAC,QAGA+9B,WAAA,SAAAvhC,GACA5S,KAAA4S,KAAAA,EACA5S,KAAAyF,UAGAA,OAAA,WACA,IAAAgrB,EAAAzwB,KAAAN,QAAA+wB,KACA7d,EAAA5S,KAAA4S,KACA+C,EAAAxW,UAAAyO,MAAA01B,gBAAA7S,EAAA7d,GAEAwhC,EAAA,IAAAxyC,QAAA,MAAA,CACAC,MAAA7B,KAAAN,QAAA8J,YAAA,kBACAzH,aAAA/B,KAAAH,aAEAw0C,EAAA,IAAAzyC,QAAA,MAAA,CACAC,MAAA7B,KAAAN,QAAA8J,YAAA,QACAoT,IAAAjH,IACA5T,aAAAqyC,GAEAp0C,KAAAN,QAAAgM,UACA2oC,EAAAzzC,SAAA,WACAyzC,EAAAzpC,WAAA5K,KAAAwO,UAGAxO,KAAAkT,WACA,IAAAtR,QAAA,MAAA,CACAC,MAAA7B,KAAAN,QAAA8J,YAAA,gBACAzH,aAAAqyC,GAGAp0C,KAAAN,QAAAu0C,SACA,IAAAryC,QAAA,MAAA,CACA4I,KAAAxK,KAAAN,QAAAu0C,UACAlyC,aAAA/B,KAAAH,cAIAqT,QAAA,WACA,IAAAJ,EAAA3T,UAAAyO,MAAA+nB,qBAAA31B,KAAA4S,MAEA,OAAAzT,UAAA8T,WAAAC,QAAAJ,IAGAtE,QAAA,WACArP,UAAAwV,cAAAC,kBAAA5U,KAAA4S,SC1EAzT,UAAAsF,QAAA6vC,QAAA,IAAAj1C,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,mBACAqP,QAAA,mBACAiU,MAAA,OACA5hB,MAAA,EACA6hB,UAAA,EACA/G,WAAA,YAGAjmB,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA,IAMAsH,EACA2J,EAPA3V,KAAA2J,WAAAxK,UAAAia,mBAAA,iBAAAja,UAAAia,kBAAAm7B,cAGAv0C,KAAA6M,SAGAb,EAAA,IAAApK,QAAA,MAAAG,aAAA/B,KAAAH,aACA8V,EAAAxW,UAAAyW,KAAAC,aAAA,YAAA,sBAAA7V,KAAAN,QAAAmZ,QAAA,UAAA7Y,KAAAN,QAAAotB,MAAA,YAAA9sB,KAAAN,QAAAwL,MAAA,QAAA/L,UAAAia,kBAAAm7B,YAEAv0C,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACAK,UAAA,SAAA/F,GACA,GAAAA,EAAA,CAGAjE,EAAA1L,QAGA,IAAAsa,EAAA3K,EAAA8K,MACA,GAAAH,GAAA,GAAAA,EAAAja,OAIA,IAAA,IAAAE,EAAA,EAAAA,EAAA+Z,EAAAja,OAAAE,IAAA,CACA,IAAAgX,EAAA+C,EAAA/Z,GACAwM,EAAAlO,UAAAyO,MAAAuC,sBAAA0H,EAAAoV,YAAAjY,OAAAhV,KAAAN,QAAAsmB,YAGAzV,EAAA,IAAA3O,QAAA,KAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzH,aAAAiK,GACA,IAAApK,QAAA,IAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,OACAzC,KAAA/G,KAAAN,QAAAqtB,SAAA1f,EAAA,MAAAwK,EAAA2D,KAAA3D,EAAA2D,KACAjX,MAAAsT,EAAA2D,KACA2G,KAAAhjB,UAAAyW,KAAAsX,eAAA,QAAA,QAAArV,EAAAwE,OACA0P,OAAA,cACAhqB,aAAAwO,MAEAnD,KAAApN,MACAmW,UAAAhX,UAAAyO,MAAAuI,YAEAnW,KAAA8J,QAAAsM,WC5DAjX,UAAAsF,QAAA+vC,aAAA,IAAAn1C,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,gBAAA,kBAEAC,QAAA,CACA8J,YAAA,wBACA0B,MAAA,GACAupC,aAAA,CAAA,IAAA,KAAA,MACA78B,QAAAzY,UAAAyY,QAAA88B,SAGA/I,SAAA,KAEA5rC,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GAEAM,KAAAN,QAAA6E,MAAApF,UAAAsL,KAAAC,UAAA1K,KAAAN,QAAAkY,SAAAzY,UAAAyY,QAAA88B,QAAA,UAAA,QAEA10C,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAxJ,QAAA,WACAH,KAAA2rC,WACA3rC,KAAA2rC,SAAAxrC,UACAH,KAAA2rC,SAAA,OAIAjnC,KAAA,WACA,GAAA1E,KAAA2J,UAAA,CAGA3J,KAAA6M,SAEA,IAGAnN,EAAA,CACAC,UAJA,IAAAiC,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzH,aAAA/B,KAAAH,aAGA80C,cAAA,EACAC,WAAA,EACAhM,WAAA,EACAiM,cAAA70C,KAAA60C,eAWA,GARA70C,KAAAN,QAAAkY,SAAAzY,UAAAyY,QAAA88B,QACAh1C,EAAAgb,MAAAvb,UAAAia,kBAAAm7B,YAEA70C,EAAAgb,MAAAvb,UAAAia,kBAAA4T,aAEAhtB,KAAA2rC,SAAA,IAAAxsC,UAAA21C,SAAAp1C,GACAM,KAAA2rC,SAAAjnC,KAAA1E,KAAAN,QAAAwL,OAEAlL,KAAAN,QAAA+0C,cAAA,EAAAz0C,KAAAN,QAAA+0C,aAAA9zC,OAAA,CAKA,IAJA,IAAAo0C,EAAA,IAAAnzC,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,YACAzH,aAAA/B,KAAAH,aAEAgB,EAAA,EAAAF,EAAAX,KAAAN,QAAA+0C,aAAA9zC,OAAAE,EAAAF,EAAAE,IAAA,CACA,IAAAqK,EAAAlL,KAAAN,QAAA+0C,aAAA5zC,GACA,GAAAA,IACAqK,EAAA,QAAAA,GAEA,IAAAtJ,QAAA,IAAA,CACAC,MAAA,kBACAkF,KAAAmE,IACAnJ,aAAAgzC,GAEAnqC,WAAA5K,KAAAg1C,gBAEA,IAAApzC,QAAA,OAAA,CACAmF,KAAA,QACAhF,aAAAgzC,GAGA,IAAAnzC,QAAA,IAAA,CACAC,MAAA,kBACAkF,KAAA,aACAhF,aAAAgzC,GACAnqC,WAAA5K,KAAAg1C,mBAIAA,eAAA,SAAA/mC,GACAjO,KAAA2rC,WAGAsJ,EAAA,IAAA/mC,MAAAD,IACA/C,GAAA/L,UAAAyO,MAAAC,gBAAA3N,EAAA+0C,EAAAlpB,UAAA,IAAA5jB,QAGA+sC,WAAA,UACAhqC,EAAAA,EAAAnD,MAAA,KAAA,IAEA+C,MAAAI,EAAAlH,WACAkH,EAAA,MAEAlL,KAAA2rC,SAAAjnC,KAAAwG,KAGA2pC,cAAA,SAAAjiC,GACA4U,OAAA3V,KAAA1S,UAAAyO,MAAAk8B,mBAAAl3B,EAAAyB,QAAA,cAGAua,QAAA,WACA5uB,KAAA2rC,UACA3rC,KAAA2rC,SAAAzZ,OAAA,MC1GA/yB,UAAAsF,QAAA0wC,QAAA,IAAA91C,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA6E,MAAA,UACAiF,YAAA,sBCLArK,UAAAsF,QAAA2wC,QAAA,IAAA/1C,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OAEA3J,QAAA,CACA8J,YAAA,mBACA1H,GAAA,UACAyU,MAAA,UACAu1B,WAAA,yBAGA/rC,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,GAEA,IAAApG,EAAAvD,KACA2J,EAAAoE,SAAA,QAAA,WACA5O,UAAAyO,MAAA0R,qBAAA+B,SAAA9d,EAAA7D,QAAAosC,WAAA,MAAA,MAIApnC,KAAA,WACA1E,KAAA6M,SAEA,IAAA0J,GAAAvW,KAAAN,QAAA6W,OAAA,IAAApO,OACA,EAAAoO,EAAA5V,QACA,IAAAiB,QAAA,MAAA,CACAC,MAAA,YACA2I,KAAArL,UAAAsL,KAAAC,UAAA6L,GACA5L,mBAAA4L,IACAxU,aAAA/B,KAAAH,gBC7BAV,UAAAsF,QAAA4wC,SAAA,IAAAh2C,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,WAAA,gBAAA,mBAEAC,QAAA,CACA8J,YAAA,oBACAqP,QAAA,eACAiU,MAAA,OACA5hB,MAAA,GACAoqC,eAAA,EACAC,aAAA,EACAC,UAAA,EACAC,SAAA,EACAl1B,UAAA,EACAm1B,cAAA,GAGA1pC,OAAA,KAEAjM,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAxJ,QAAA,WACAH,KAAAgM,SACA9L,EAAAF,KAAAgM,QAAA7L,UACAH,KAAAgM,OAAA,OAIAtH,KAAA,WACA,IA4BA8wC,EAyBA3qC,EArDA7K,KAAA2J,YAGA3J,KAAA6M,UAEA7M,KAAAN,QAAA41C,eAAAt1C,KAAAN,QAAA+1C,SAAAz1C,KAAAN,QAAA6gB,UAEA,IAAA3e,QAAA,qBAAA,CACAC,MAAA,WAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACA7B,MAAAxI,UAAAsL,KAAAC,UAAA,qBACA3I,aAAA/B,KAAAH,aAAA+K,WAAA5K,KAAA21C,gBAAA31C,MAGAA,KAAAN,QAAA+1C,UAAAz1C,KAAAN,QAAA6gB,WAEA,GADAhK,GAAAvW,KAAAN,QAAA6W,OAAA,IAAApO,QACAxH,QACA,IAAAiB,QAAA,MAAA,CACAC,MAAA,YACA2I,KAAArL,UAAAsL,KAAAC,UAAA6L,GACA5L,mBAAA4L,IACAxU,aAAA/B,KAAAH,aAEAG,KAAAH,YAAA+K,WAAA5K,KAAA21C,gBAAA31C,OAIAA,KAAAgM,OAAA,IAAApK,QAAA,MAAAG,aAAA/B,KAAAH,aAEA21C,EAAAx1C,KAAAN,QAAA81C,UAAAr2C,UAAAyO,MAAA8uB,oBAAAv9B,UAAAy2C,SAAAC,aACA71C,KAAAN,QAAA61C,aAAAC,IAAAx1C,KAAAN,QAAA+1C,WAEAK,EAAA,IAAAl0C,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,WACAzH,aAAA/B,KAAA2J,WAEA3J,KAAAN,QAAA61C,aAEA,IAAA3zC,QAAA,IAAA,CACAmF,KAAA,eACAlF,MAAA,SACAE,aAAA+zC,GAAAlrC,WAAA5K,KAAA+1C,iBAAA/1C,MAIAw1C,GACA,IAAA5zC,QAAA,IAAA,CACAmF,KAAA5H,UAAAsL,KAAAC,UAAA,wBACA7I,MAAA,UACAE,aAAA+zC,GAAAlrC,WAAA5K,KAAAg2C,cAAAh2C,MAIAi2C,EAAAH,EAAA30C,YACA0J,EAAA7K,KAAAH,YAAAsB,YAAA80C,EAAA,GAEAnrC,MAAAD,IACA7K,KAAAH,YAAA2G,SAAA,SAAAqE,EAAA,OAGA7K,KAAAN,QAAA6gB,UAEA,IAAA3e,QAAA,OAAA,CACAC,MAAA,UACA2e,OAAA,CACAC,MAAAzgB,KAAA+1C,kBAEAhvC,KAAA5H,UAAAsL,KAAAC,UAAA,oBACAC,mBAAA,qBACA5I,aAAA/B,KAAA2J,WAGA3J,KAAAN,QAAAg2C,aACA11C,KAAAH,YAAA+K,WAAAzL,UAAAyO,MAAAsoC,iBAAAl2C,MAGAA,KAAAmO,aAGAA,SAAA,WACA,IAGAwH,EAHA3V,KAAAgM,SAGA2J,EAAAxW,UAAAk2C,SAAAc,wBAAAn2C,KAAAN,QAAAmZ,QAAA7Y,KAAAN,QAAAotB,MAAA,GAAA,YAAA9sB,KAAAN,QAAAwL,MAEAlL,KAAAgM,OAAA1L,QAEAN,KAAAN,QAAA+1C,UAAAz1C,KAAAN,QAAA6gB,WACAvgB,KAAA8J,QAAA,IAAA3K,UAAA2W,QAAAC,KAAA,CACAJ,IAAAA,EACAK,UAAA,SAAA/F,GACA,GAAAA,GAAAA,EAAA2C,MAAA,GAAA3C,EAAA2C,KAAAjS,QAAAX,KAAAgM,OAAA,CAGA,IAAAoqC,EAAAnmC,EAAA2C,KACA5S,KAAAN,QAAA6gB,WACA61B,EAAAz1C,OAAAqF,KAAAmgB,IAAAiwB,EAAAz1C,OAAA,IAGA,IAAA,IAAAE,EAAA,EAAAA,EAAAu1C,EAAAz1C,OAAAE,IAAA,CAEA,IAAAiJ,EAAAssC,EAAAv1C,GACA0P,EAAA,IAAA3O,QAAA,KACA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,SACAzH,aAAA/B,KAAAgM,QACAqqC,EAAA,IAAAz0C,QAAA,IACA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,OACAgB,KAAAxK,KAAAs2C,eAAAxsC,KACA/H,aAAAwO,GAEA8lC,EAAAvsC,QAAAA,EACAusC,EAAAE,cAAAv2C,KAAAu2C,cACAF,EAAAzrC,WAAA,WACA5K,KAAAu2C,cAAAv2C,KAAA8J,UAEAusC,MAEAjpC,KAAApN,MACAmW,UAAAhX,UAAAyO,MAAAuI,YAEAnW,KAAA8J,QAAAsM,UAIAkgC,eAAA,SAAA1jC,GACA,OAAAA,EAAA4jC,aAGAD,cAAA,WAAA,OAAA,GACAZ,gBAAA,WAAA,OAAA,GACAI,iBAAA,WAAA,OAAA,GACAC,cAAA,WAAA,OAAA,KCpKA72C,UAAAsF,QAAAgyC,QAAA,IAAAp3C,MAAA,CACA4L,QAAA9L,UAAAsF,QAAA4E,OACA5J,MAAA,CAAA,aAAA,aAEAC,QAAA,CACA8J,YAAA,mBAGAktC,QAAA,GAEArK,SAAA,GAEAsK,WAAA,IAGAC,OAAA,KAEA72C,WAAA,SAAAL,EAAAiK,GACA3J,KAAAC,WAAAP,GACAM,KAAA6M,OAAA7M,KAAAN,QAAAiK,IAGAjF,KAAA,WACA1E,KAAA2J,YAGA3J,KAAA6M,SAEA7M,KAAAH,cAGA,oBAAAg3C,GACA72C,KAAA82C,cAEA33C,UAAAsF,QAAAgyC,QAAAM,UAEAvvB,OAAAzZ,SAAA,wBAAA/N,KAAA82C,gBAIAA,WAAA,WAEA,IAAAE,EAAA,IAAAp1C,QAAA,MAAA,CACAC,OAAA7B,KAAAN,QAAA8J,aAAA,IAAA,UACAd,OAAA1I,KAAAH,aAEAG,KAAA42C,OAAA,IAAAC,GAAAI,OAAAD,EAAA,CACAh2C,OAAA,OACAiE,MAAA,OACAub,OAAA,CACA02B,QAAAl3C,KAAAm3C,cAKAA,UAAA,WACAn3C,KAAAN,QAAAg3C,QAEA12C,KAAA42C,OAAAQ,aAAA,CACAV,QAAA12C,KAAAN,QAAAg3C,UAGA12C,KAAAN,QAAA2sC,SAEArsC,KAAA42C,OAAAS,YAAA,CACAC,SAAA,eACAC,KAAAv3C,KAAAN,QAAA2sC,WAGArsC,KAAAN,QAAAi3C,YAEA32C,KAAA42C,OAAAS,YAAA,CACAC,SAAA,WACAC,KAAAv3C,KAAAN,QAAAi3C,gBAMAx3C,UAAAsF,QAAAgyC,QAAAM,QAAA,WACA72C,EAAA,sBAKAs3C,MAAAC,WAAA,qCAAA,CACA31C,GAAA,qBAGA0lB,OAAAkwB,wBAAA,WACAlwB,OAAAphB,UAAA","file":"_layouts\\core\\modules\\modules.bundle.min.js","sourcesContent":["Librarian.ModuleLoader = new Class({\r\n Implements: [Options, Events], \r\n Binds: [\"loadModules\", \"loadModule\"],\r\n\r\n options: {\r\n container: null,\r\n defaultHeight: 200\r\n },\r\n\r\n containerEl: null,\r\n\r\n modules: {},\r\n\r\n initialize: function(options) {\r\n this.setOptions(options);\r\n\r\n if (!this.options.container)\r\n return;\r\n\r\n this.containerEl = $(this.options.container);\r\n },\r\n\r\n destroy: function() {\r\n for (var key in this.modules) {\r\n if (!this.modules.hasOwnProperty(key) || !this.modules[key])\r\n continue;\r\n\r\n this.modules[key].destroy();\r\n }\r\n\r\n this.modules = {};\r\n\r\n if (this.containerEl) {\r\n this.containerEl.empty();\r\n this.containerEl.removeClass(\"pure-g-r\");\r\n }\r\n },\r\n\r\n loadModules: function(moduleList, containerEl, idSuffix) {\r\n if ((typeof moduleList == \"undefined\") || (moduleList == null) || (moduleList.length == 0))\r\n return;\r\n if (!containerEl)\r\n containerEl = this.containerEl;\r\n if (!this.containerEl)\r\n return;\r\n if ((typeof idSuffix == \"undefined\") || (idSuffix == null))\r\n idSuffix = '';\r\n\r\n containerEl.empty();\r\n containerEl.addClass(\"pure-g-r\");\r\n\r\n // Go through each row in the modules list\r\n for (var i = 0; i < moduleList.length; i++) {\r\n // If this doesn't have any modules in it, skip it\r\n if (moduleList[i].modules == null || (moduleList[i].modules.length == 0))\r\n continue;\r\n\r\n var height = moduleList[i].height;\r\n if (typeof height == \"string\" && height.endsWith(\"%\")) {\r\n var mainEl = $(\"mainPanel\"),\r\n percentage = parseInt(height),\r\n parentHeight = mainEl.getHeight();\r\n\r\n height = parentHeight * (percentage / 100);\r\n }\r\n\r\n // Get the height of the row, either from the definition or the default\r\n var rowHeight = height || this.options.defaultHeight,\r\n minHeight = moduleList[i].minHeight,\r\n modules = moduleList[i].modules,\r\n colCount = moduleList[i].colCount || modules.length,\r\n rowCount = moduleList[i].rowCount || 1,\r\n extraClass = moduleList[i].className || '',\r\n rowEl = new Element(\"div\", {\r\n \"class\": \"modules-row \" + extraClass,\r\n \"id\": \"modules-row-\" + (i + 1) + idSuffix\r\n }).injectInside(containerEl);\r\n\r\n // Go through each module in this row\r\n for (var j = 0; j < modules.length; j++) {\r\n if (!modules[j])\r\n continue;\r\n\r\n // Get the container element in the right auto-created column\r\n var moduleEl = this.getModuleEl(modules[j], colCount, rowEl);\r\n // Create the module and all sub-modules\r\n this.createModule(modules[j], moduleEl, rowHeight, rowCount, minHeight);\r\n }\r\n }\r\n },\r\n\r\n getModuleEl: function(module, colCount, contEl) {\r\n var colSpan = module.colSpan || 1,\r\n colTotal = colCount;\r\n\r\n // Pure grids use simple fractions\r\n var fraction = this.reduceFraction(colSpan, colTotal),\r\n numerator = fraction[0],\r\n denominator = fraction[1];\r\n\r\n var pureClass = \"pure-u-\" + numerator;\r\n if (denominator > 1)\r\n pureClass += \"-\" + denominator;\r\n\r\n // Create a container element\r\n var colEl = new Element(\"div\", { \"class\": pureClass }).injectInside(contEl),\r\n moduleEl = new Element(\"div\", { \"class\": \"modules-module\" }).injectInside(colEl);\r\n\r\n return moduleEl;\r\n },\r\n\r\n // http://stackoverflow.com/a/4652513\r\n reduceFraction: function(numerator, denominator) {\r\n var gcd = function(a, b) {\r\n return b ? gcd(b, a % b) : a;\r\n };\r\n\r\n gcd = gcd(numerator, denominator);\r\n\r\n return [numerator / gcd, denominator / gcd];\r\n },\r\n\r\n getModuleHeight: function(module, rowHeight, rowCount, margin) {\r\n if (typeof rowHeight != \"number\")\r\n return rowHeight;\r\n\r\n var modHeight = rowHeight,\r\n rowSpan = module.rowSpan || 1;\r\n if (typeOf(module.modules) == \"array\")\r\n rowSpan = module.modules.length;\r\n\r\n modHeight *= (rowSpan / rowCount);\r\n\r\n // Adjust the height by a factor of the number of rows and the margin\r\n var adjustment = ((rowCount - 1) / rowCount) * margin;\r\n return (modHeight - (rowSpan * adjustment)) + (margin * (rowSpan - 1));\r\n },\r\n\r\n createModule: function(module, moduleEl, rowHeight, rowCount, minHeight, isHorizontal, bottomMargin) {\r\n if (!module)\r\n return;\r\n\r\n // If there is a sub module array\r\n if (typeOf(module.modules) == \"array\") {\r\n // Go through each sub module\r\n var subModules = module.modules,\r\n marginBottom = 0;\r\n for (var k = 0; k < subModules.length; k++) {\r\n if (isHorizontal) {\r\n moduleEl.addClass(\"pure-g-r\");\r\n var colModEl = this.getModuleEl(subModules[k], subModules.length, moduleEl);\r\n this.createModule(subModules[k], colModEl, rowHeight, rowCount, minHeight, false, bottomMargin);\r\n }\r\n else {\r\n var subModuleEl = new Element(\"div\", {\r\n \"class\": \"modules-submodule\"\r\n }).injectInside(moduleEl),\r\n self = this;\r\n\r\n // Timeout allows DOM to apply styles to the element so the marginBottom value is correct\r\n setTimeout(function(subModule, el) {\r\n // Save the bottom margin of the first item because the last one won't have a margin\r\n if (marginBottom == 0)\r\n marginBottom = el.getStyle(\"marginBottom\").toInt() || 0;\r\n\r\n // Check if this module has any sub-modules and load that\r\n self.createModule(subModule, el, rowHeight, rowCount, minHeight, true, marginBottom);\r\n }.pass([subModules[k], subModuleEl]), 100);\r\n }\r\n }\r\n }\r\n // Load the module\r\n else {\r\n var modHeight = this.getModuleHeight(module, rowHeight, rowCount, bottomMargin || 0);\r\n this.loadModule(module, modHeight, minHeight, moduleEl, true);\r\n }\r\n },\r\n\r\n loadModule: function(moduleInfo, height, minHeight, contEl, destroyWrapper) {\r\n var options = Object.merge({\r\n height: height,\r\n minHeight: minHeight,\r\n id: moduleInfo.id\r\n }, moduleInfo.options);\r\n\r\n // Explicitly check the title so that if the module defines a default title we don't override it with nothing\r\n if ((typeof moduleInfo.title == \"string\") || (typeOf(moduleInfo.title) == \"object\"))\r\n options.title = moduleInfo.title;\r\n\r\n if (moduleInfo.type == \"skip\")\r\n return;\r\n\r\n var module = new Librarian.Modules[moduleInfo.type](options, contEl, destroyWrapper);\r\n module.load();\r\n this.modules[moduleInfo.id] = module;\r\n },\r\n\r\n getModule: function(key) {\r\n return this.modules[key];\r\n },\r\n\r\n callModuleFunction: function(func) {\r\n for (var moduleName in this.modules) {\r\n if (!this.modules.hasOwnProperty(moduleName))\r\n continue;\r\n\r\n var module = this.modules[moduleName];\r\n if (!module || (typeof module[func] != \"function\"))\r\n continue;\r\n\r\n module[func]();\r\n }\r\n }\r\n});\r\n\r\nLibrarian.ModuleLoaders = {};\r\nLibrarian.Modules = {};\r\n","Librarian.ModuleLoader2 = new Class({\r\n Implements: [Options, Events],\r\n Binds: [\"render\", \"renderRow\", \"renderCell\", \"renderModule\"],\r\n\r\n options: {\r\n container: \"homepage\",\r\n title: null,\r\n width: null,\r\n maxWidth: null,\r\n moduleSpacing: null,\r\n modulePadding: null,\r\n moduleWidth: null,\r\n moduleHeight: null\r\n },\r\n\r\n className: \"page-layout\",\r\n containerEl: null,\r\n\r\n modules: {},\r\n\r\n eventHandler: null,\r\n\r\n initialize: function(options) {\r\n this.setOptions(options);\r\n\r\n if (!this.options.container)\r\n return;\r\n\r\n this.containerEl = $(this.options.container);\r\n this.eventHandler = new Events();\r\n },\r\n\r\n load: function(layout) {\r\n this.layout = layout;\r\n\r\n this.render();\r\n },\r\n\r\n render: function() {\r\n this.containerEl.empty();\r\n this.containerEl.removeClass(\"pure-g-r\");\r\n\r\n this.createTable();\r\n\r\n var totalColumns = 0,\r\n self = this;\r\n\r\n this.layout.rows.forEach(function(row) {\r\n var colCount = self.renderRow(row);\r\n\r\n totalColumns = Math.max(totalColumns, colCount);\r\n });\r\n\r\n if (this.options.title)\r\n this.createHeader(totalColumns);\r\n\r\n this.createSpacingRow(totalColumns);\r\n\r\n this.eventHandler.fireEvent(\"pageRendered\");\r\n },\r\n\r\n createTable: function() {\r\n this.tableEl = new Element(\"table\", {\r\n \"class\": this.className + \"-table\"\r\n }).injectInside(this.containerEl);\r\n\r\n this.tableEl.setStyles({\r\n \"width\": this.getSizeValue(this.options.width),\r\n \"maxWidth\": this.getSizeValue(this.options.maxWidth)\r\n });\r\n\r\n if (this.options.moduleSpacing) {\r\n this.tableEl.setStyle(\"border-collapse\", \"separate\");\r\n this.tableEl.setStyle(\"border-spacing\", this.getSizeValue(this.options.moduleSpacing));\r\n }\r\n },\r\n\r\n createHeader: function(totalColumns) {\r\n var headerRow = new Element(\"tr\", {\r\n \"class\": this.className + \"-header-row\"\r\n }).injectTop(this.tableEl);\r\n\r\n var header = new Element(\"td\", {\r\n \"class\": this.className + \"-header\",\r\n \"colspan\": totalColumns,\r\n styles: {\r\n \"padding\": this.getSizeValue(this.options.modulePadding)\r\n }\r\n }).injectInside(headerRow);\r\n\r\n var title = new Element(\"div\", {\r\n \"class\": this.className + \"-title\",\r\n \"text\": this.options.title\r\n }).injectInside(header);\r\n },\r\n\r\n createSpacingRow: function(totalColumns) {\r\n var spacingRow = new Element(\"tr\", {\r\n \"class\": this.className + \"-spacing-row\"\r\n }).injectInside(this.tableEl);\r\n\r\n for (var i = 0; i < totalColumns; i++) {\r\n var td = new Element(\"td\", {\r\n \"class\": this.className + \"-cell\"\r\n }).injectInside(spacingRow);\r\n\r\n if (this.options.moduleWidth) {\r\n var width = this.getSizeValue(this.options.moduleWidth);\r\n td.setStyle(\"width\", width);\r\n td.setStyle(\"min-width\", width);\r\n td.setStyle(\"max-width\", width);\r\n }\r\n }\r\n },\r\n\r\n renderRow: function(row) {\r\n var tr = this.createTr(row),\r\n colCount = 0,\r\n self = this;\r\n\r\n row.modules.forEach(function(module) {\r\n colCount += parseInt(module.colSpan) || 1;\r\n\r\n self.renderCell(module, tr);\r\n });\r\n\r\n return colCount;\r\n },\r\n\r\n createTr: function(row) {\r\n var tr = new Element(\"tr\", {\r\n \"class\": this.className + \"-row\"\r\n }).injectInside(this.tableEl);\r\n\r\n var height = row.height || this.options.moduleHeight;\r\n if (height)\r\n tr.setStyle(\"height\", this.getSizeValue(height));\r\n\r\n if (row.style) {\r\n var styles = this.parseStyles(row.style);\r\n\r\n tr.setStyles(styles);\r\n }\r\n\r\n return tr;\r\n },\r\n\r\n renderCell: function(module, tr) {\r\n var td = this.createTd(module, tr);\r\n\r\n this.renderModule(module, td);\r\n },\r\n\r\n createTd: function(module, tr) {\r\n var colSpan = parseInt(module.colSpan) || 1,\r\n rowSpan = parseInt(module.rowSpan) || 1,\r\n td = new Element(\"td\", {\r\n \"class\": this.className + \"-cell\",\r\n \"colspan\": colSpan,\r\n \"rowspan\": rowSpan\r\n }).injectInside(tr);\r\n\r\n if (this.options.modulePadding)\r\n td.setStyle(\"padding\", this.getSizeValue(this.options.modulePadding));\r\n\r\n if (module.style) {\r\n var styles = this.parseStyles(module.style);\r\n\r\n td.setStyles(styles);\r\n }\r\n\r\n return td;\r\n },\r\n\r\n renderModule: function(moduleInfo, td) {\r\n var moduleWrapper = new Element(\"div\", {\r\n styles: {\r\n height: \"100%\"\r\n }\r\n }).injectInside(td);\r\n\r\n if (moduleInfo.type == \"skip\" || moduleInfo.type == \"placeholder\")\r\n return;\r\n\r\n var options = Object.merge({\r\n id: moduleInfo.id,\r\n eventHandler: this.eventHandler\r\n }, moduleInfo.options);\r\n\r\n if (moduleInfo.title)\r\n options.title = moduleInfo.title;\r\n\r\n var module = new Librarian.Modules[moduleInfo.type](options, moduleWrapper, false);\r\n\r\n module.moduleInfo = moduleInfo;\r\n module.load();\r\n },\r\n\r\n getSizeValue: function(value) {\r\n if (!value)\r\n return null;\r\n\r\n value = value.toString();\r\n\r\n if (value.contains('%'))\r\n return value;\r\n\r\n if (!value.contains('px'))\r\n value += 'px';\r\n\r\n return value;\r\n },\r\n\r\n parseStyles: function(styleString) {\r\n var styles = {};\r\n\r\n var nameValuePairs = styleString.split(';');\r\n nameValuePairs.forEach(function(pair) {\r\n var parts = pair.split(\":\");\r\n\r\n var name = parts[0],\r\n value = parts[1];\r\n\r\n if (name && value)\r\n styles[name.trim()] = value.trim();\r\n });\r\n\r\n return styles;\r\n }\r\n\r\n});","Librarian.ModuleLoader3 = new Class({\r\n Implements: [Options, Events],\r\n Binds: [\"render\", \"renderRow\", \"renderCell\", \"renderModule\"],\r\n\r\n options: {\r\n container: \"homepage\",\r\n title: null,\r\n width: null,\r\n maxWidth: null,\r\n moduleSpacing: null,\r\n modulePadding: null,\r\n moduleWidth: null,\r\n moduleHeight: null\r\n },\r\n\r\n className: \"page-layout\",\r\n containerEl: null,\r\n\r\n modules: {},\r\n\r\n eventHandler: null,\r\n\r\n initialize: function(options) {\r\n this.setOptions(options);\r\n\r\n if (!this.options.container)\r\n return;\r\n\r\n this.containerEl = $(this.options.container);\r\n this.eventHandler = new Events();\r\n },\r\n\r\n load: function(layout) {\r\n this.layout = layout;\r\n\r\n this.render();\r\n },\r\n\r\n render: function() {\r\n var self = this;\r\n\r\n this.containerEl.empty();\r\n this.containerEl.removeClass(\"pure-g-r\");\r\n\r\n this.createDashboard();\r\n\r\n if (this.options.title)\r\n this.createHeader();\r\n\r\n this.layout.sections.forEach(function(section) {\r\n self.renderSection(section);\r\n });\r\n },\r\n\r\n createDashboard: function() {\r\n this.dashboardEl = new Element(\"div\", {\r\n \"class\": this.className + \"-dashboard\"\r\n }).inject(this.containerEl);\r\n\r\n this.dashboardEl.setStyles({\r\n \"width\": this.getSizeValue(this.options.width),\r\n \"maxWidth\": this.getSizeValue(this.options.maxWidth)\r\n });\r\n\r\n // TODO: moduleSpacing\r\n },\r\n \r\n createHeader: function() {\r\n var header = new Element(\"div\", {\r\n \"class\": this.className + \"-header\"\r\n }).inject(this.dashboardEl);\r\n\r\n var title = new Element(\"div\", {\r\n \"class\": this.className + \"-title\",\r\n \"text\": this.options.title\r\n }).injectInside(header);\r\n },\r\n\r\n renderSection: function(section) {\r\n var sectionEl = this.createSection(section),\r\n self = this;\r\n\r\n section.columns.forEach(function(column) {\r\n self.renderColumn(column, sectionEl);\r\n });\r\n },\r\n\r\n createSection: function(section) {\r\n var sectionEl = new Element(\"div\", {\r\n \"class\": this.className + \"-section\"\r\n }).injectInside(this.dashboardEl);\r\n \r\n if (section.style) {\r\n var styles = this.parseStyles(section.style);\r\n\r\n sectionEl.setStyles(styles);\r\n }\r\n\r\n return sectionEl;\r\n },\r\n\r\n renderColumn: function(column, sectionEl) {\r\n var columnEl = this.createColumn(column, sectionEl),\r\n self = this;\r\n\r\n column.modules.forEach(function(module) {\r\n self.renderItem(module, columnEl);\r\n });\r\n },\r\n\r\n createColumn: function(column, sectionEl) {\r\n var columnEl = new Element(\"div\", {\r\n \"class\": this.className + \"-column\"\r\n }).injectInside(sectionEl);\r\n\r\n if (column.style) {\r\n var styles = this.parseStyles(column.style);\r\n\r\n columnEl.setStyles(styles);\r\n }\r\n\r\n return columnEl;\r\n },\r\n\r\n renderItem: function(moduleInfo, columnEl) {\r\n var item = this.createItem(moduleInfo, columnEl);\r\n\r\n this.renderModule(moduleInfo, item);\r\n },\r\n\r\n createItem: function(moduleInfo, columnEl) {\r\n var item = new Element(\"div\", {\r\n \"class\": this.className + \"-item\"\r\n }).injectInside(columnEl);\r\n\r\n if (this.options.modulePadding)\r\n item.setStyle(\"padding\", this.getSizeValue(this.options.modulePadding));\r\n\r\n if (moduleInfo.style) {\r\n var styles = this.parseStyles(moduleInfo.style);\r\n\r\n item.setStyles(styles);\r\n }\r\n\r\n return item;\r\n },\r\n\r\n renderModule: function(moduleInfo, item) {\r\n var moduleWrapper = new Element(\"div\", {\r\n styles: {\r\n height: \"100%\"\r\n }\r\n }).injectInside(item);\r\n\r\n if (moduleInfo.type == \"skip\" || moduleInfo.type == \"placeholder\")\r\n return;\r\n\r\n var height = moduleInfo.height || this.options.moduleHeight;\r\n\r\n var options = Object.merge({\r\n id: moduleInfo.id,\r\n height: height,\r\n eventHandler: this.eventHandler\r\n }, moduleInfo.options);\r\n\r\n if (moduleInfo.title)\r\n options.title = moduleInfo.title;\r\n\r\n var module = new Librarian.Modules[moduleInfo.type](options, moduleWrapper, false);\r\n\r\n module.moduleInfo = moduleInfo;\r\n module.load();\r\n },\r\n\r\n getSizeValue: function(value) {\r\n if (!value)\r\n return null;\r\n\r\n value = value.toString();\r\n\r\n if (value.contains('%'))\r\n return value;\r\n\r\n if (!value.contains('px'))\r\n value += 'px';\r\n\r\n return value;\r\n },\r\n\r\n parseStyles: function(styleString) {\r\n var styles = {};\r\n\r\n var nameValuePairs = styleString.split(';');\r\n nameValuePairs.forEach(function(pair) {\r\n var parts = pair.split(\":\");\r\n\r\n var name = parts[0],\r\n value = parts[1];\r\n\r\n if (name && value)\r\n styles[name.trim()] = value.trim();\r\n });\r\n\r\n return styles;\r\n }\r\n\r\n});","Librarian.Modules.Module = new Class({\r\n Implements: Options,\r\n Binds: [\"destroy\", \"load\"],\r\n\r\n options: {\r\n title: null,\r\n subTitle: null,\r\n titleOnClick: null,\r\n classPrefix: null,\r\n addClass: null,\r\n id: null,\r\n height: null,\r\n minHeight: null,\r\n onPreRender: null,\r\n onPreDestroy: null\r\n },\r\n\r\n wrapperEl: null,\r\n headerEl: null,\r\n containerEl: null,\r\n titleEl: null,\r\n\r\n destroyWrapper: false,\r\n\r\n request: null,\r\n onPreRender: null,\r\n\r\n initialize: function(options, wrapperEl, destroyWrapper, onLoaded) {\r\n this.setOptions(options);\r\n this.wrapperEl = wrapperEl;\r\n this.destroyWrapper = !!destroyWrapper;\r\n if(onLoaded) { this.onLoaded = onLoaded; }\r\n },\r\n\r\n destroy: function() {\r\n if (typeof this.options.onPreDestroy == \"function\")\r\n this.options.onPreDestroy.apply(this);\r\n\r\n if (this.request) {\r\n this.request.cancel();\r\n this.request = null;\r\n }\r\n\r\n var elements = [this.headerEl, this.containerEl];\r\n for (var i = elements.length; i--;) {\r\n if (elements[i]) {\r\n $(elements[i]).destroy();\r\n elements[i] = null;\r\n }\r\n }\r\n\r\n // Only destroy the wrapper if we explicitly tell it to\r\n if (this.wrapperEl && this.destroyWrapper) {\r\n $(this.wrapperEl).destroy();\r\n this.wrapperEl = null;\r\n }\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n var id = this.options.id,\r\n title = this.options.title,\r\n subTitle = this.options.subTitle;\r\n\r\n this.wrapperEl.empty();\r\n this.wrapperEl.addClass(this.getClassName(\"wrapper\"));\r\n\r\n if (this.options.addClass)\r\n this.wrapperEl.addClass(this.options.addClass);\r\n\r\n if (this.request) {\r\n this.request.cancel();\r\n this.request = null;\r\n }\r\n\r\n if (title != null) {\r\n if (typeOf(title) == \"object\" && title.template) {\r\n var titleTemplate = Handlebars.compile(title.template);\r\n title = this.options.title = titleTemplate(title);\r\n }\r\n\r\n if ((typeof title == \"string\") && (title.length > 0)) {\r\n this.headerEl = new Element(\"div\", {\r\n \"class\": this.getClassName(\"header\")\r\n }).injectInside(this.wrapperEl);\r\n\r\n this.titleEl = new Element(\"span\", {\r\n \"html\": Librarian.Lang.getString(title),\r\n \"data-translation\": title,\r\n \"class\": this.getClassName(\"header-text\")\r\n }).injectInside(this.headerEl);\r\n }\r\n\r\n if (title !== null && typeof titleOnClick == 'function') {\r\n this.titleEl.addOnClick(titleOnClick);\r\n this.titleEl.addClass(\"title-link\");\r\n }\r\n\r\n if (subTitle) {\r\n if (typeof subTitle == \"string\" && subTitle.length > 0) {\r\n new Element(\"span\", {\r\n \"html\": Librarian.Lang.getString(subTitle),\r\n \"class\": this.getClassName(\"sub-header\")\r\n }).injectInside(new Element(\"div\", {\r\n \"class\": this.getClassName(\"sub-header-wrapper\")\r\n }).injectInside(this.headerEl));\r\n }\r\n }\r\n }\r\n\r\n this.containerEl = new Element(\"div\", {\r\n \"class\": this.getClassName(\"container\")\r\n }).injectInside(this.wrapperEl);\r\n\r\n // Set an ID on the container\r\n if (typeof id == \"string\") {\r\n this.containerEl.id = \"module_\" + id;\r\n // Don't overwrite an ID if there already is one\r\n if ((typeof this.wrapperEl.id != \"string\") || (this.wrapperEl.id.length == 0))\r\n this.wrapperEl.id = \"module_\" + id + \"_wrapper\";\r\n\r\n if (this.headerEl)\r\n this.headerEl.id = \"module_\" + id + \"_header\";\r\n }\r\n\r\n // Run the onPreRender\r\n if (typeof this.onPreRender == \"function\")\r\n this.onPreRender.apply(this);\r\n if (typeof this.options.onPreRender == \"function\")\r\n this.options.onPreRender.apply(this);\r\n\r\n if (typeof this.options.minHeight == \"number\")\r\n this.containerEl.setStyle(\"minHeight\", this.options.minHeight + \"px\");\r\n\r\n if (typeof this.options.height === \"string\")\r\n this.containerEl.setStyle(\"height\", this.options.height);\r\n else {\r\n var height = this.options.height || this.wrapperEl.getHeight();\r\n\r\n // Get the height of the header and, using that,\r\n // figure out the height of the container\r\n var headerHeight = this.headerEl ? this.headerEl.getHeight() : 0,\r\n contHeight = height - headerHeight;\r\n\r\n // If something went wrong, just forget about setting the height\r\n if (isNaN(contHeight))\r\n return;\r\n \r\n if (contHeight > 0)\r\n this.containerEl.setStyle(\"height\", contHeight + \"px\");\r\n \r\n this.wrapperEl.setStyle(\"height\", this.options.height + \"px\");\r\n }\r\n\r\n // execute callback if provided\r\n if(this.onLoaded) { this.onLoaded(); }\r\n },\r\n\r\n getClassName: function(suffix) {\r\n var className = \"modules-\" + suffix;\r\n\r\n if (this.options.classPrefix)\r\n className += \" \" + this.options.classPrefix + suffix;\r\n\r\n return className;\r\n }\r\n});","Librarian.Modules.Activity = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"loadData\", \"onActivitiesLoaded\", \"onPortalsLoaded\",\r\n \"slideItemIn\", \"showActivityView\", \"updateList\"],\r\n\r\n options: {\r\n classPrefix: \"modules-activity-\",\r\n count: 50,\r\n updateInterval: 30000,\r\n slideDuration: 1200,\r\n slideDelay: 500,\r\n slideInDifferential: true,\r\n eventId: null,\r\n title: \"Activities\", // A placeholder that will go away if everything works correctly\r\n logTypes: [\r\n Librarian.activityLogType.preview,\r\n Librarian.activityLogType.download,\r\n Librarian.activityLogType.search,\r\n Librarian.activityLogType.openEmail,\r\n Librarian.activityLogType.clickLink,\r\n Librarian.activityLogType.shareEvent\r\n ]\r\n },\r\n\r\n listEl: null,\r\n filterEl: null,\r\n viewTypeEl: null,\r\n typeFilterEl: null,\r\n dateFilterEl: null,\r\n activityEls: [],\r\n\r\n eventDate: null,\r\n loadTimer: null,\r\n\r\n filterValue: null,\r\n activityLogType: null,\r\n // \"recent\" - Recent Portal Activity\r\n // \"active\" - Most Active Portals\r\n // \"active_chart\" - Most Active Portals Chart\r\n currentView: \"recent\",\r\n delayCount: 0,\r\n\r\n hasLoaded: false,\r\n filterText: null,\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n\r\n if (this.options.eventId == null)\r\n this.filterText = \"modules_activity_filter_default\";\r\n else\r\n this.filterText = \"modules_activity_contact_filter_default\";\r\n\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n destroy: function() {\r\n for (var i = this.activityEls.length; i--;) {\r\n if (this.activityEls[i]) {\r\n $(this.activityEls[i]).destroy();\r\n this.activityEls[i] = null;\r\n }\r\n }\r\n\r\n if (this.loadTimer) {\r\n clearTimeout(this.loadTimer);\r\n this.loadTimer = null;\r\n }\r\n\r\n var elements = [this.listEl, this.filterEl, this.viewTypeEl, this.typeFilterEl, this.dateFilterEl];\r\n for (var i = elements.length; i--;) {\r\n if (elements[i]) {\r\n $(elements[i]).destroy();\r\n elements[i] = null;\r\n }\r\n }\r\n\r\n this.eventDate = null;\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n this.listEl = new Element(\"ul\", {\r\n \"class\": (this.options.classPrefix || '') + \"list\"\r\n }).injectInside(this.containerEl);\r\n\r\n this.headerEl.empty();\r\n\r\n // Add view type dropdown\r\n var viewTypes = [\"recent\"];\r\n if (this.options.eventId == null) {\r\n viewTypes.push(\"active\");\r\n //viewTypes.push(\"active_chart\");\r\n }\r\n\r\n this.viewTypeEl = this.createDropdown(\"ico-activity-menu\", this.options.id + \"_view\", viewTypes, \"modules_activity_view_\", this.showActivityView);\r\n\r\n // Add activity filter dropdown\r\n var typeFilters = [\"all\", \"clickLink\", \"openEmail\", \"download\", \"shareEvent\"];\r\n\r\n this.typeFilterEl = this.createDropdown(\"ico-activity-filter\", this.options.id + \"_activity\", typeFilters, \"modules_activity_filter_\", function(type) {\r\n this.activityLogType = Librarian.activityLogType[type];\r\n this.eventDate = null;\r\n this.updateList();\r\n }.bind(this), Librarian.Lang.getString(\"modules_activity_filter_prefix\"));\r\n\r\n // Add date filter dropdown\r\n var dateFilters = [\"all\", \"7\", \"30\", \"60\"];\r\n\r\n this.dateFilterEl = this.createDropdown(\"ico-activity-filter\", this.options.id + \"_date\", dateFilters, \"modules_activity_date_filter_\", function(date) {\r\n var days = date.toInt();\r\n if (isNaN(days))\r\n this.eventDate = null;\r\n else {\r\n this.eventDate = new Date();\r\n this.eventDate.setDate(this.eventDate.getDate() - days);\r\n }\r\n\r\n this.updateList();\r\n }.bind(this), Librarian.Lang.getString(\"modules_activity_filter_prefix\"));\r\n this.dateFilterEl.hide();\r\n\r\n // Add filter box\r\n this.filterEl = new Element(\"input[type=text]\", {\r\n \"class\": (this.options.classPrefix || '') + \"filter\",\r\n \"value\": Librarian.Lang.getString(this.filterText),\r\n \"spellcheck\": \"true\"\r\n }).injectInside(this.headerEl);\r\n\r\n // If the default value is still there when the user clicks into the box, clear it\r\n this.filterEl.addOnClick(function() {\r\n var value = Librarian.Utils.getElementValue(this.filterEl);\r\n if (value === Librarian.Lang.getString(this.filterText))\r\n Librarian.Utils.setElementValue(this.filterEl, '');\r\n }, this);\r\n // If the box is empty when the user clicks out of it, re-add the default value\r\n this.filterEl.addEvent(\"blur\", function() {\r\n var value = Librarian.Utils.getElementValue(this.filterEl);\r\n if (!value || (value.length == 0)) {\r\n this.filterEl.set(\"text\", Librarian.Lang.getString(this.filterText));\r\n this.filterValue = null;\r\n }\r\n else\r\n this.filterValue = value;\r\n }.bind(this));\r\n // If the user presses enter while they are in the box, get the latest filter value and update the list\r\n this.filterEl.addEvent(\"keydown\", function(e) {\r\n var evt = new Event(e);\r\n if (evt.key === \"enter\") {\r\n this.filterValue = Librarian.Utils.getElementValue(this.filterEl);\r\n this.eventDate = null;\r\n this.updateList();\r\n }\r\n }.bind(this));\r\n\r\n new Element(\"input[type=button]\", {\r\n \"class\": (this.options.classPrefix || '') + \"filter-button button\",\r\n \"value\": Librarian.Lang.getString(\"go\")\r\n }).injectInside(this.headerEl).addOnClick(function() {\r\n this.eventDate = null;\r\n this.updateList();\r\n }, this);\r\n\r\n this.loadData();\r\n },\r\n\r\n createDropdown: function(iconClass, baseId, items, langPrefix, onClick, textPrefix) {\r\n var viewsEl = new Element(\"ul\", {\r\n \"class\": \"sddm\"\r\n }).injectInside(this.headerEl),\r\n viewEl = new Element(\"li\").injectInside(viewsEl),\r\n triggerEl = new Element(\"a\", {\r\n \"class\": iconClass,\r\n \"id\": baseId + \"Trigger\"\r\n }).injectInside(viewEl),\r\n targetEl = new Element(\"div\", {\r\n \"id\": baseId + \"Menu\"\r\n }).injectInside(viewEl);\r\n\r\n triggerEl.menuId = targetEl.id;\r\n triggerEl.addEvent(\"mouseout\", mclosetime).addEvent(\"mouseover\", function() {\r\n mopen(this.menuId);\r\n });\r\n\r\n targetEl.addEvent(\"mouseover\", mcancelclosetime).addEvent(\"mouseout\", mclosetime).addEvent(\"blur\", mclosetime);\r\n\r\n for (var i = 0; i < items.length; i++) {\r\n var itemText = Librarian.Lang.getString((langPrefix || '') + items[i]);\r\n if (i == 0)\r\n Librarian.Utils.setElementValue(triggerEl, (textPrefix || '') + itemText);\r\n\r\n var itemEl = new Element(\"a\", {\r\n \"text\": itemText\r\n }).injectInside(targetEl);\r\n\r\n itemEl.textPrefix = textPrefix;\r\n itemEl.triggerId = triggerEl.id;\r\n itemEl.onClickFn = onClick;\r\n itemEl.value = items[i];\r\n itemEl.addOnClick(this.onDropDownItemClicked, itemEl);\r\n }\r\n\r\n return viewsEl;\r\n },\r\n\r\n onDropDownItemClicked: function() {\r\n if (typeof this.onClickFn == \"function\")\r\n this.onClickFn(this.value);\r\n\r\n var triggerEl = $(this.triggerId);\r\n if (!triggerEl)\r\n return;\r\n\r\n Librarian.Utils.setElementValue(triggerEl, (this.textPrefix || '') + this.get(\"text\"));\r\n },\r\n\r\n showActivityView: function(viewType) {\r\n if (this.currentView == viewType)\r\n return;\r\n\r\n this.typeFilterEl[(viewType == \"recent\") ? \"show\" : \"hide\"]();\r\n this.dateFilterEl[(viewType == \"recent\") ? \"hide\" : \"show\"]();\r\n this.listEl.empty();\r\n this.activityLogType = null;\r\n this.eventDate = null;\r\n this.currentView = viewType;\r\n this.filterText = (viewType == \"recent\") ? ((this.options.eventId == null) ? \"modules_activity_filter_default\" : \"modules_activity_contact_filter_default\") : \"modules_activity_portal_filter_default\";\r\n var otherText = (viewType == \"recent\") ? \"modules_activity_portal_filter_default\" : ((this.options.eventId == null) ? \"modules_activity_filter_default\" : \"modules_activity_contact_filter_default\");\r\n\r\n var value = Librarian.Utils.getElementValue(this.filterEl);\r\n if (value === Librarian.Lang.getString(otherText))\r\n this.filterEl.set(\"text\", Librarian.Lang.getString(this.filterText));\r\n\r\n this.updateList();\r\n },\r\n\r\n updateList: function() {\r\n this.listEl.empty();\r\n\r\n for (var i = this.activityEls.length; i--;) {\r\n if (this.activityEls[i]) {\r\n $(this.activityEls[i]).destroy();\r\n this.activityEls[i] = null;\r\n this.activityEls.remove(i);\r\n }\r\n }\r\n\r\n this.loadData();\r\n },\r\n\r\n loadData: function() {\r\n if (this.loadTimer) {\r\n clearTimeout(this.loadTimer);\r\n this.loadTimer = null;\r\n }\r\n\r\n // If this is the normal view, load everything as usual\r\n if (this.currentView == \"recent\")\r\n this.request = Librarian.Events.getEventActivities(this.options.eventId, this.eventDate ? encodeURIComponent(this.eventDate.toISOString()) : null, null, this.options.count, this.filterValue, this.activityLogType || this.options.logTypes, \"ujson\", this.onActivitiesLoaded);\r\n // Otherwise, load the portals list\r\n else\r\n this.request = Librarian.Events.getEventActivityData(this.eventDate ? encodeURIComponent(this.eventDate.toISOString()) : null, null, this.options.count, this.filterValue, \"ujson\", this.onPortalsLoaded);\r\n },\r\n\r\n onActivitiesLoaded: function(json) {\r\n this.loadTimer = setTimeout(this.loadData.bind(this), this.options.updateInterval);\r\n\r\n if (!json || !json.List)\r\n return;\r\n\r\n // Save this date as the last date\r\n this.eventDate = Librarian.Utils.extractDateFromString(json.CurrentTime);\r\n // If we already have activities, this is a differential load\r\n var isDifferential = (this.activityEls.length > 0);\r\n\r\n // Go through each activity, create a display for its data, and add it to the list\r\n for (var i = json.List.length; i--;) {\r\n var activity = json.List[i],\r\n listItemEl = new Element(\"li\", {\r\n \"class\": (this.options.classPrefix || '') + \"item\"\r\n }),\r\n date = Librarian.Utils.extractDateFromString(activity.LogDate),\r\n prettyDate = date.toPrettyFormat(this.eventDate);\r\n\r\n new Element(\"span\", {\r\n \"class\": (this.options.classPrefix || '') + \"icon ico-activity\"\r\n }).injectInside(listItemEl);\r\n // Save the date into the date element so we can update all the dates later\r\n var dateEl = new Element(\"span\", {\r\n \"class\": (this.options.classPrefix || '') + \"date\",\r\n \"text\": prettyDate\r\n }).injectInside(listItemEl);\r\n dateEl.date = date;\r\n\r\n this.addUserElement(activity, listItemEl);\r\n new Element(\"span\", {\r\n \"class\": (this.options.classPrefix || '') + \"action\",\r\n \"text\": this.getActionText(activity.LogType)\r\n }).injectInside(listItemEl);\r\n this.addItemElement(activity, listItemEl);\r\n\r\n this.activityEls = Array.pushTop(this.activityEls, listItemEl);\r\n\r\n // If this is a differential load, slide the new element in from the side\r\n if (isDifferential && this.options.slideInDifferential) {\r\n if (i == (json.List.length - 1))\r\n this.slideItemIn(listItemEl);\r\n else {\r\n this.delayCount++;\r\n this.slideItemIn.delay(this.options.slideDelay * this.delayCount, this, [listItemEl]);\r\n }\r\n }\r\n else\r\n listItemEl.injectTop(this.listEl);\r\n }\r\n\r\n if (!this.hasLoaded)\r\n this.hasLoaded = true;\r\n else {\r\n // Reload all the dates with the latest offsets\r\n var dateEls = $$('.' + (this.options.classPrefix || '') + \"date\");\r\n for (var i = dateEls.length; i--;) {\r\n if (dateEls[i] && dateEls[i].date)\r\n Librarian.Utils.setElementValue(dateEls[i], dateEls[i].date.toPrettyFormat());\r\n }\r\n }\r\n\r\n // Check how many we are over the maximum\r\n var removeCount = this.activityEls.length - this.options.count;\r\n // If we're not, don't continue\r\n if (removeCount < 0)\r\n return;\r\n\r\n // Otherwise, remove from the bottom until we're at the maximum\r\n for (var i = this.activityEls.length; i-- && removeCount--;) {\r\n if (this.activityEls[i])\r\n $(this.activityEls[i]).destroy();\r\n }\r\n\r\n // Chop the removed elements out of the array now that we're done\r\n this.activityEls.remove(this.options.count, this.activityEls.length);\r\n },\r\n\r\n slideItemIn: function(listItemEl) {\r\n listItemEl.injectTop(this.listEl);\r\n\r\n if (this.delayCount > 0)\r\n this.delayCount--;\r\n\r\n new Fx.Slide(listItemEl, {\r\n \"mode\": \"horizontal\",\r\n \"duration\": this.options.slideDuration\r\n }).hide().toggle();\r\n },\r\n\r\n getActionText: function(logType) {\r\n switch (logType) {\r\n case Librarian.activityLogType.preview:\r\n return Librarian.Lang.getString(\"activity_preview\");\r\n case Librarian.activityLogType.download:\r\n return Librarian.Lang.getString(\"activity_download\");\r\n case Librarian.activityLogType.search:\r\n return Librarian.Lang.getString(\"activity_search\");\r\n case Librarian.activityLogType.sessionActivity:\r\n return Librarian.Lang.getString(\"activity_generic\");\r\n case Librarian.activityLogType.open:\r\n return Librarian.Lang.getString(\"activity_open\");\r\n case Librarian.activityLogType.openEmail:\r\n return Librarian.Lang.getString(\"activity_openemail\");\r\n case Librarian.activityLogType.clickLink:\r\n return Librarian.Lang.getString(\"activity_click\");\r\n case Librarian.activityLogType.shareEvent:\r\n return Librarian.Lang.getString(\"activity_share\");\r\n }\r\n\r\n return '';\r\n },\r\n\r\n onPortalsLoaded: function(json) {\r\n this.loadTimer = setTimeout(this.loadData.bind(this), this.options.updateInterval);\r\n\r\n if (!json)\r\n return;\r\n\r\n this.listEl.empty();\r\n\r\n for (var i = 0; i < json.length; i++) {\r\n var activity = json[i],\r\n listItemEl = new Element(\"li\", {\r\n \"class\": (this.options.classPrefix || '') + \"item\"\r\n }).injectInside(this.listEl);\r\n\r\n new Element(\"span\", {\r\n \"class\": (this.options.classPrefix || '') + \"icon ico-portal\"\r\n }).injectInside(listItemEl);\r\n new Element(\"span\", {\r\n \"class\": (this.options.classPrefix || '') + \"count\",\r\n \"text\": Librarian.Lang.getPluralArgString(\"modules_activity_count\", activity.Total, [activity.Total])\r\n }).injectInside(listItemEl);\r\n\r\n this.addItemElement(activity, listItemEl);\r\n\r\n this.activityEls = Array.pushTop(this.activityEls, listItemEl);\r\n }\r\n },\r\n\r\n addUserElement: function(activity, listItemEl) {\r\n var userEl = new Element(\"span\", {\r\n \"class\": (this.options.classPrefix || '') + \"user\",\r\n \"text\": activity.DisplayName\r\n }).injectInside(listItemEl);\r\n\r\n // Save the client portion of the activity data for later\r\n userEl.client = Librarian.Contacts.getContactFromJSON(Object.toLowerKeys(activity));\r\n userEl.addOnClick(function() {\r\n var win = new Librarian.ContactDetailWindow(this.client, {\r\n id: \"ContactDetailWindow\" + (new Date().getTime()),\r\n index: contactDetailWindows.length,\r\n onCloseComplete: function() {\r\n contactDetailWindows.remove(this.options.index);\r\n\r\n for (var i = 0; i < contactDetailWindows.length; i++)\r\n contactDetailWindows[i].options.index = i;\r\n }\r\n });\r\n\r\n contactDetailWindows.push(win);\r\n });\r\n },\r\n\r\n addItemElement: function(activity, listItemEl) {\r\n var itemEl = new Element(\"span\").injectInside(listItemEl);\r\n\r\n // If this has content\r\n if (activity.ContentName) {\r\n // Get its extension and figure out its type\r\n var ext = Librarian.Utils.getExtension(activity.ContentName).toLowerCase(),\r\n type = \"presentation\";\r\n if (Librarian.extensions.isVideo(ext))\r\n type = \"video\";\r\n else if (Librarian.extensions.isAudio(ext))\r\n type = \"audio\";\r\n else if (Librarian.extensions.isImage(ext))\r\n type = \"image\";\r\n else if (Librarian.extensions.isWordFile(ext) || (ext === \"pdf\") || Librarian.extensions.isExcelFile(ext))\r\n type = \"document\";\r\n else if (activity.ContentText == \"SlideShow Player View\")\r\n type = \"slideshow\";\r\n\r\n // Set the type as the starting text\r\n itemEl.set(\"text\", Librarian.Lang.getString(type).toLowerCase());\r\n\r\n var subLength = (ext.length > 0) ? (ext.length + 1) : 0,\r\n // Set the name of the file as a new element without the PDF\r\n nameEl = new Element(\"span\", {\r\n \"class\": (this.options.classPrefix || '') + \"subject\",\r\n \"text\": activity.ContentName.substring(0, activity.ContentName.length - subLength)\r\n }).injectInside(itemEl);\r\n\r\n // Save the data for this content\r\n var data = {\r\n ext: ext,\r\n contenttype: activity.ContentType,\r\n contentsubtype: activity.ContentSubType\r\n };\r\n\r\n // Treat Favorites differently\r\n if (activity.ContentType == Librarian.contentType.myFavorite) {\r\n data.presid = activity.ContentId;\r\n data.name = activity.ContentName;\r\n }\r\n else if (activity.ContentType == Librarian.contentType.globalFavorite) {\r\n data.groupid = activity.ContentId;\r\n data.name = activity.ContentName;\r\n }\r\n else {\r\n data.fileid = activity.ContentId;\r\n data.filename = activity.ContentName;\r\n }\r\n\r\n nameEl.data = data;\r\n // Open a preview window when this is clicked\r\n nameEl.addOnClick(function() {\r\n // If this is a slideshow or a shared slideshow, open the player\r\n if ((this.data.contenttype == Librarian.contentType.myFavorite) && [Librarian.virtPresType.slideshow, Librarian.virtPresType.sharedSlideshow].contains(this.data.contentsubtype))\r\n Librarian.Utils.openSlideShow(this.data, \"player\");\r\n else\r\n Librarian.PreviewWindow.openPreviewWindow(this.data);\r\n return false;\r\n });\r\n }\r\n else {\r\n // Add the class\r\n itemEl.addClass((this.options.classPrefix || '') + \"subject\");\r\n // Set the subject as the text\r\n var name = activity.Subject;\r\n if (!name || (name.length == 0))\r\n name = Librarian.Lang.getArgString(\"modules_activity_unnamed\", [Librarian.Utils.extractDateFromString(activity.SendDate).format(\"%m/%d/%Y\")]);\r\n Librarian.Utils.setElementValue(itemEl, name);\r\n\r\n // Load the details window for this event\r\n itemEl.eventid = activity.EventId;\r\n itemEl.addOnClick(function() {\r\n var managerWindow = new Librarian.EventManagerWindow();\r\n managerWindow.show();\r\n\r\n if (this.eventid > 0) {\r\n var detailWindow = new Librarian.EventDetailsWindow({\r\n eventId: this.eventid,\r\n grid: managerWindow.grid\r\n });\r\n\r\n detailWindow.show();\r\n }\r\n\r\n return false;\r\n });\r\n\r\n // IF this was a share, add the share count to the text\r\n if (activity.LogType == Librarian.activityLogType.shareEvent) {\r\n new Element(\"span\", {\r\n \"text\": Librarian.Lang.getPluralArgString(\"activity_share_with\", activity.Count, [activity.Count])\r\n }).injectInside(listItemEl);\r\n }\r\n }\r\n }\r\n});","Librarian.Modules.Announcements = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-announcements-\",\r\n fileName: null\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl || !this.options.fileName)\r\n return;\r\n\r\n this.parent();\r\n\r\n // Generate the URL\r\n var url = Librarian.path.getMethodUrl(\"getslidetext\") + \"&out=ujson&snum=1&fname=\" + this.options.fileName;\r\n\r\n this.request = new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: function(json) {\r\n if (!json)\r\n return;\r\n\r\n var lines = json.Text.split('\\n');\r\n\r\n // Add each line from the source file as a new item in the announcements list\r\n lines.forEach(function(line) {\r\n new Element(\"div\", {\r\n \"text\": line,\r\n \"class\": (this.options.classPrefix || '') + \"announcement\"\r\n }).injectInside(this.containerEl);\r\n }.bind(this));\r\n }.bind(this),\r\n onFailure: Librarian.Utils.onFailure\r\n });\r\n this.request.send();\r\n }\r\n});","Librarian.Modules.AskMarketing = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-askmarketing-\",\r\n email: null,\r\n label: null,\r\n header: null, \r\n message: null,\r\n subject: \"Ask Marketing Message\",\r\n inputHeight: null,\r\n id: null,\r\n onClick: null,\r\n onPreDestroy: null\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n\r\n var self = this;\r\n this.options.onClick = function () {\r\n if (self.options.inputHeight) {\r\n this.inputWindow = new Librarian.InputWindow({\r\n title: self.options.header,\r\n height: self.options.inputHeight,\r\n message: self.options.message,\r\n buttonLabel: \"OK\",\r\n onSubmit: function (value) {\r\n // Replace new lines with line breaks to keep formatting\r\n value = value.replaceAll(\"\\r\\n\", \"
\")\r\n .replaceAll(\"\\r\", \"
\")\r\n .replaceAll(\"\\n\", \"
\");\r\n\r\n var eventInfo = new Librarian.Events.Event();\r\n eventInfo.name = self.options.subject;\r\n eventInfo.messagebody = value;\r\n eventInfo.exectime = new Date();\r\n\r\n var emails = self.options.email.split(';');\r\n for (var i = 0; i < emails.length; i++) {\r\n var recipientInfo = new Librarian.Contacts.Contact();\r\n recipientInfo.email = emails[i];\r\n eventInfo.addRecipient(recipientInfo);\r\n }\r\n\r\n Librarian.Events.sendEvent(eventInfo,\r\n // Success\r\n function () {\r\n Librarian.Utils.notification(Librarian.Lang.getString(\"resource_email_sent\"));\r\n }.bind(this),\r\n // Failure\r\n function () {\r\n Librarian.Utils.error(Librarian.Lang.getString(\"resource_email_failed\"));\r\n });\r\n }\r\n }).show();\r\n } else {\r\n this.inputWindow = new Librarian.InputWindow({\r\n title: self.options.header,\r\n message: self.options.message,\r\n buttonLabel: \"OK\",\r\n onSubmit: function (value) {\r\n // Replace new lines with line breaks to keep formatting\r\n value = value.replaceAll(\"\\r\\n\", \"
\")\r\n .replaceAll(\"\\r\", \"
\")\r\n .replaceAll(\"\\n\", \"
\");\r\n\r\n var eventInfo = new Librarian.Events.Event();\r\n eventInfo.name = self.options.subject;\r\n eventInfo.messagebody = value;\r\n eventInfo.exectime = new Date();\r\n\r\n var emails = self.options.email.split(';');\r\n for (var i = 0; i < emails.length; i++) {\r\n var recipientInfo = new Librarian.Contacts.Contact();\r\n recipientInfo.email = emails[i];\r\n eventInfo.addRecipient(recipientInfo);\r\n }\r\n\r\n Librarian.Events.sendEvent(eventInfo,\r\n // Success\r\n function () {\r\n Librarian.Utils.notification(Librarian.Lang.getString(\"resource_email_sent\"));\r\n }.bind(this),\r\n // Failure\r\n function () {\r\n Librarian.Utils.error(Librarian.Lang.getString(\"resource_email_failed\"));\r\n });\r\n }\r\n }).show();\r\n }\r\n };\r\n\r\n wrapperEl.addOnClick(this.options.onClick);\r\n\r\n this.options.onPreDestroy = function() {\r\n if (this.inputWindow) {\r\n this.inputWindow.close();\r\n this.inputWindow = null;\r\n }\r\n };\r\n\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n this.wrapperEl.addClass(\"nav-wrapper\");\r\n \r\n // add label\r\n var label = (this.options.label || '').trim();\r\n if (label.length > 0) {\r\n new Element(\"div\", {\r\n \"class\": \"nav-label\",\r\n \"html\": Librarian.Lang.getString(label),\r\n \"data-translation\": label\r\n }).injectInside(this.containerEl);\r\n }\r\n }\r\n});","Librarian.Modules.CategoryContent = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"onDataLoaded\", \"prepCartItem\"],\r\n\r\n options: {\r\n classPrefix: \"modules-categorycontent-\",\r\n catType: Librarian.catType.file,\r\n catPath: null,\r\n // Whether to display a list of categories at the given path\r\n categories: false,\r\n // Whether to flatten the tree structure at the given path to a flat list of content\r\n flatten: false,\r\n action: \"open\", // Or \"preview\",\r\n useGetSendData: true,\r\n overlayClass: null,\r\n // Don't show error, Use for GF Builder categories since they might not be there\r\n suppressFailure: false,\r\n // If true, tries to use name before title, instead of title before name\r\n displayFilename: false,\r\n // Show detailed information\r\n detailed: false,\r\n // Show Get Link option, 'detailed' must be true if enabled\r\n showGetLink: false,\r\n // Show Share Link option, turn off for certain user groups\r\n showShareLink: true,\r\n // Only use if displayFilename is true\r\n stripExtension: false,\r\n // Function to call after rendering is complete\r\n onPostRender: null,\r\n // Whether or not to use the content's 'Title' metadata as the name\r\n useTitleMetadata: false,\r\n // Show loading spinner\r\n spinner: false,\r\n // Number of files to show\r\n count: null,\r\n // Value to order results by\r\n orderBy: null\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n this.items = [];\r\n },\r\n\r\n reload: function() {\r\n // Make sure we don't destroy the wrapper,\r\n // but save the set value so we can reset it after\r\n var destroyWrapperVal = this.destroyWrapper;\r\n this.destroyWrapper = false;\r\n\r\n this.destroy();\r\n this.load();\r\n\r\n // Reset the saved value\r\n this.destroyWrapper = destroyWrapperVal;\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n if (this.options.spinner) {\r\n this.loadingImage = new Element(\"div\",\r\n {\r\n \"class\": \"recentLoadingSpinner\"\r\n }).inject(this.wrapperEl);\r\n }\r\n\r\n // Assume we're loading files, for now\r\n var rootCat = 0,\r\n method = this.options.categories ? \"getcc\" : (this.options.flatten ? \"getcfi\" : \"getfiles\"),\r\n view = \"\";\r\n // If the catType was set to Global Favorites, load that instead\r\n if (this.options.catType === Librarian.catType.globalFavorite) {\r\n if (Librarian.specialCategories && Librarian.specialCategories.GlobalFavorites)\r\n rootCat = Librarian.specialCategories.GlobalFavorites.CatId;\r\n method = this.options.flatten ? \"getccgi\" : \"getcg\";\r\n if (Librarian.search.viewNameByType && Librarian.search.viewNameByType[Librarian.Search.outputTypes.GROUPS])\r\n view = \"&vname=\" + Librarian.search.viewNameByType[Librarian.Search.outputTypes.GROUPS];\r\n }\r\n // If the catType was set to My Favorites, load that instead\r\n else if (this.options.catType === Librarian.catType.myFavorite) {\r\n // TODO\r\n if (this.options.flatten)\r\n throw \"'Flatten' option is not implemented for My Favorites\";\r\n\r\n method = this.options.categories ? \"getvpcc\" : \"getvps\";\r\n if (Librarian.search.viewNameByType && Librarian.search.viewNameByType[Librarian.Search.outputTypes.MYFAVORITE])\r\n view = \"&vname=\" + Librarian.search.viewNameByType[Librarian.Search.outputTypes.MYFAVORITE];\r\n }\r\n else if (this.options.categories) {\r\n if (Librarian.search.viewNameByType && Librarian.search.viewNameByType[Librarian.Search.outputTypes.CATEGORIES])\r\n view = \"&cvname=\" + Librarian.search.viewNameByType[Librarian.Search.outputTypes.CATEGORIES];\r\n \r\n }\r\n else if (Librarian.search.viewNameByType && Librarian.search.viewNameByType[Librarian.Search.outputTypes.FILES])\r\n view = \"&vname=\" + Librarian.search.viewNameByType[Librarian.Search.outputTypes.FILES];\r\n\r\n // Create the container element and generate the URL\r\n var url = Librarian.path.getMethodUrl(method) + \"&out=ujson\";\r\n if (this.options.catPath)\r\n url += \"&pcid=\" + rootCat + \"&cpath=\" + encodeURIComponent(this.options.catPath);\r\n else\r\n url += \"&cid=\" + rootCat;\r\n\r\n if (Librarian.elasticSearch.enableContent) {\r\n url += \"&usees=1\";\r\n\r\n if (Librarian.elasticSearch.includeView)\r\n url += view;\r\n }\r\n else\r\n url += view;\r\n\r\n if (this.options.count)\r\n url+= \"&perpage=\" + this.options.count;\r\n\r\n var options = {\r\n url: url,\r\n onSuccess: this.onDataLoaded,\r\n onFailure: function(error) {\r\n if (!self.options.suppressFailure)\r\n Librarian.Utils.onFailure(error);\r\n }\r\n };\r\n\r\n var data = {};\r\n if ((typeof this.options.customSendData == \"function\")) {\r\n data = this.options.customSendData(data, url);\r\n if (data) {\r\n // If the given data is an object, stringify it\r\n if (typeof data.data == \"object\")\r\n data.data = JSON.stringify(data.data);\r\n // Convert the data to Base64\r\n if (typeof Base64 != \"undefined\")\r\n data.data = Base64.encode(data.data);\r\n\r\n // And save it\r\n options.data = data.data;\r\n options.method = \"post\";\r\n if (data.url)\r\n options.url = data.url;\r\n }\r\n }\r\n\r\n // If we have a custom data function\r\n if (typeof Library.getSendData == \"function\" && this.options.useGetSendData) {\r\n // Get the data to send and check that it is valid\r\n data = Library.getSendData({ cattype: this.options.catType }, options.url);\r\n if (data) {\r\n // If the given data is an object, stringify it\r\n if (typeof data.data == \"object\")\r\n data.data = JSON.stringify(data.data);\r\n // Convert the data to Base64\r\n if (typeof Base64 != \"undefined\")\r\n data.data = Base64.encode(data.data);\r\n\r\n // And save it\r\n options.data = data.data;\r\n options.method = \"post\";\r\n options.url = data.url;\r\n }\r\n }\r\n\r\n this.request = new Librarian.Request.JSON(options);\r\n this.request.send();\r\n },\r\n\r\n onDataLoaded: function(json) {\r\n // remove loading image\r\n if (this.loadingImage) {\r\n this.wrapperEl.getElements(\".recentLoadingSpinner\").destroy();\r\n }\r\n\r\n var listEl = new Element(\"ul\", {\r\n \"class\": \"content-list\"\r\n }).injectInside(this.containerEl),\r\n self = this;\r\n\r\n if (!json)\r\n return;\r\n\r\n var catId = json.CatId,\r\n items;\r\n // If we're told to load categories, use the inner subcategories list as the items list\r\n if (this.options.categories)\r\n items = json.SubCategories;\r\n else if (typeOf(json) == \"array\")\r\n items = json;\r\n // Otherwise, aggregate all the sub lists into one\r\n else {\r\n var groups = json.Groups || [],\r\n files = json.Files || [],\r\n presentations = json.Presentations || [];\r\n\r\n items = files.concat(groups).concat(presentations);\r\n }\r\n\r\n if (!items || (items.length == 0))\r\n return;\r\n\r\n if (this.options.detailed) {\r\n var viewAllEl = new Element(\"span\", {\r\n \"class\": \"content-view-all\",\r\n \"text\": \"View All\"\r\n }).injectInside(this.headerEl);\r\n\r\n viewAllEl.addOnClick(function() {\r\n Librarian.Modules.OpenCat.openCategory(0, self.options.catPath);\r\n Librarian.Init.toggleSideColumn(sideColumn, true, true);\r\n });\r\n }\r\n\r\n // Add a row for each item in the list which links back to the item\r\n items.forEach(function(item) {\r\n var url = '#',\r\n data = Object.toLowerKeys(item),\r\n name = (this.options.displayFilename) ? (item.Name || item.Title) : (item.Title || item.Name),\r\n moddate = Librarian.Utils.getDateValue(item.LastModDate, \"%x %X\");\r\n\r\n if (this.options.useTitleMetadata) {\r\n var type = item.CatId ? \"folder\" : \"file\";\r\n var formattedName = Librarian.TreeView.getFormattedName(name, item, type);\r\n if (formattedName && formattedName.length > 0) {\r\n name = formattedName;\r\n }\r\n }\r\n\r\n if (this.options.stripExtension)\r\n name = Librarian.Utils.getNameWithoutExtension(name);\r\n\r\n // Set up the hash if this is set to open\r\n if (this.options.action === \"open\") {\r\n url = \"#catid=\";\r\n if ((typeof catId != \"number\") && item.ExtraFields) {\r\n if (item.ExtraFields.fCatId)\r\n url += item.ExtraFields.fCatId;\r\n else if (item.ExtraFields.CatID)\r\n url += item.ExtraFields.CatID;\r\n }\r\n else\r\n url += catId;\r\n\r\n if (item.GroupId > 0)\r\n url += \"&groupid=\" + item.GroupId;\r\n else if (item.FileId > 0)\r\n url += \"&fileid=\" + item.FileId;\r\n else if (item.presid > 0)\r\n url += \"&presid=\" + item.PresId;\r\n else if (item.CatId > 0)\r\n url = \"#catid=\" + item.CatId;\r\n else\r\n return;\r\n\r\n url += \"&type=\" + this.options.catType;\r\n }\r\n\r\n var listItemEl = new Element(\"li\", {\r\n \"class\": \"content-item\"\r\n }).injectInside(listEl);\r\n\r\n var nameWrapperEl = new Element('div', {\r\n \"class\": \"content-name-wrapper\"\r\n }).injectInside(listItemEl);\r\n\r\n var iconEl = new Element(\"img\", {\r\n \"class\": \"content-icon\",\r\n src: Librarian.Utils.getContentTypeIcon(item)\r\n }).injectInside(nameWrapperEl);\r\n\r\n var nameEl = new Element('a', {\r\n \"class\": \"content-name\",\r\n \"text\": name,\r\n \"title\": name\r\n }).injectInside(nameWrapperEl);\r\n\r\n nameEl.data = data;\r\n nameEl.addOnClick(function() {\r\n Librarian.PreviewWindow.openPreviewWindow(this.data);\r\n });\r\n\r\n if (this.options.detailed) {\r\n var bookmarkEl = new Element(\"div\", {\r\n \"class\": \"content-bookmark\"\r\n }).injectInside(listItemEl);\r\n\r\n Librarian.Bookmarks.getBookmarkId(item.ContentId, item.ContentType, function(bookmarkId) {\r\n if (bookmarkId > 0) {\r\n bookmarkEl.addClass(\"bookmarked\");\r\n bookmarkEl.bookmarkId = bookmarkId;\r\n }\r\n });\r\n\r\n var threeDotEl = new Element(\"div\", {\r\n \"class\": \"content-menu-icon\"\r\n }).injectInside(listItemEl);\r\n\r\n var menuEl = new Element(\"div\", {\r\n \"class\": \"content-menu-wrapper\"\r\n }).injectInside(listItemEl);\r\n\r\n var downloadEl = new Element(\"div\", {\r\n \"text\": \"Download\"\r\n }).injectInside(menuEl);\r\n\r\n var cartEl = new Element(\"div\", {\r\n \"text\": \"Add File\"\r\n }).injectInside(menuEl);\r\n\r\n if (self.options.showShareLink) {\r\n var shareEl = new Element(\"div\", {\r\n \"text\": \"Share\"\r\n }).injectInside(menuEl);\r\n }\r\n\r\n var viewEl = new Element(\"div\", {\r\n \"text\": \"View in Library\"\r\n }).injectInside(menuEl);\r\n\r\n if (self.options.showGetLink) {\r\n var getLinkEl = new Element(\"div\", {\r\n \"text\": \"Get Link\"\r\n }).injectInside(menuEl);\r\n\r\n getLinkEl.addOnClick(function () {\r\n Librarian.Utils.getLink(data);\r\n });\r\n }\r\n\r\n menuEl.hide();\r\n\r\n threeDotEl.addEvent('mouseenter', function() {\r\n menuEl.show();\r\n menuEl.removeClass(\"open-above\");\r\n\r\n var menuRect = menuEl.getBoundingClientRect();\r\n var contRect = self.containerEl.getBoundingClientRect();\r\n var openAbove = menuRect.bottom > contRect.bottom;\r\n\r\n menuEl.toggleClass(\"open-above\", openAbove);\r\n\r\n menuRect = menuEl.getBoundingClientRect();\r\n var openLeft = menuRect.top < contRect.top;\r\n\r\n menuEl.toggleClass(\"open-left\", (openAbove && openLeft));\r\n\r\n threeDotEl.addClass(\"active\");\r\n });\r\n\r\n menuEl.addEvent('mouseenter', function() {\r\n menuEl.show();\r\n threeDotEl.addClass(\"active\");\r\n });\r\n\r\n threeDotEl.addEvent('mouseleave', function() {\r\n menuEl.hide();\r\n threeDotEl.removeClass(\"active\");\r\n });\r\n\r\n menuEl.addEvent('mouseleave', function() {\r\n menuEl.hide();\r\n threeDotEl.removeClass(\"active\");\r\n });\r\n\r\n downloadEl.addOnClick(function () {\r\n Library.downloadData(data);\r\n });\r\n\r\n cartEl.addOnClick(function () {\r\n // Can't add to the cart if we don't have a cart\r\n if (!Librarian.userCart)\r\n return;\r\n\r\n var item = self.prepCartItem(data, 1),\r\n onComplete = function(success, notifyType) {\r\n Librarian.Utils.showCartNotification(item, notifyType, success);\r\n\r\n // Update the checkboxes on the main page\r\n Librarian.Utils.updateAllCheckboxes();\r\n\r\n Librarian.Cart.onChange();\r\n\r\n // If we're in the cart and we just removed ourselves,\r\n // close the window to prevent switching errors.\r\n if (success && (notifyType == Librarian.cartNotificationTypes.removed) && this.isInCart)\r\n this.close();\r\n }.bind(this);\r\n\r\n // If it's already in the cart, prompt the user to remove it\r\n if (Librarian.userCart.isInCart(item, true)) {\r\n Librarian.userCart.removeFromCart(item, null, null, null, null, function() {\r\n onComplete(!Librarian.userCart.isInCart(item), Librarian.cartNotificationTypes.removed);\r\n });\r\n }\r\n // Otherwise, add it\r\n else\r\n onComplete(Librarian.userCart.addToCart(item), Librarian.cartNotificationTypes.added);\r\n });\r\n\r\n if (shareEl) {\r\n shareEl.addOnClick(function () {\r\n var eventType = Librarian.eventType.oneOff;\r\n this.sendWindow = new Librarian.EventSendWindow({\r\n onCloseComplete: function () {\r\n this.sendFileWindow = null;\r\n }.bind(this),\r\n eventType: eventType\r\n }, data);\r\n this.sendWindow.show();\r\n });\r\n }\r\n\r\n viewEl.addOnClick(function () {\r\n var tree = Library.getTreeByType(self.options.catType, null, data.prestype);\r\n Librarian.Utils.getPath(data, function(path) {\r\n if (path != null)\r\n Library.loadLibraryTab();\r\n Librarian.Utils.selectTreeNodeByPath(tree, path);\r\n });\r\n });\r\n\r\n new Element(\"span\", {\r\n \"class\": \"content-field\",\r\n \"text\": \"Last Modified: \" + moddate\r\n }).injectInside(listItemEl);\r\n\r\n new Element('span',{\r\n \"class\": \"content-field\",\r\n \"text\": \"Author: \" + (data.extrafields.Author || \"\"),\r\n }).injectInside(listItemEl);\r\n\r\n bookmarkEl.addOnClick(function () {\r\n var self = this;\r\n if (this.hasClass(\"bookmarked\")) {\r\n Librarian.Bookmarks.deleteBookmark(this.bookmarkId, item.ContentId, item.ContentType, function() {\r\n self.removeClass(\"bookmarked\");\r\n }.bind(this));\r\n\r\n } else {\r\n Librarian.Bookmarks.addBookmark(item.ContentId, item.ContentType, function(bookmarkId) {\r\n self.addClass(\"bookmarked\");\r\n this.bookmarkId = bookmarkId;\r\n }.bind(this));\r\n }\r\n });\r\n } \r\n\r\n if (this.options.overlayClass) {\r\n new Element(\"div\", {\r\n \"class\": this.options.overlayClass\r\n }).injectInside(listItemEl);\r\n }\r\n }.bind(this));\r\n\r\n if (typeof this.options.onPostRender == \"function\")\r\n this.options.onPostRender.apply(this);\r\n },\r\n\r\n prepCartItem: function(data, type) {\r\n if (!Librarian.Cart)\r\n return data;\r\n\r\n var item = new Librarian.Cart.Item(data);\r\n if ((type == Librarian.Utils.getItemTypeString(this.options.data)) && (this.options.data.slidenumber < 1))\r\n item.slidenumber = 1;\r\n // Files\r\n else if (type == Librarian.Lang.getString(\"item\")) {\r\n if (this.options.data.slidenumber != 0)\r\n item.slidenumber = 0;\r\n item.itemnumber = undefined;\r\n if (this.options.data.slideid != 0)\r\n item.slideid = 0;\r\n // Restore the parent extra fields if we're adding this as an item\r\n if (this.options.parentData && this.options.parentData.extrafields)\r\n item.extrafields = this.options.parentData.extrafields;\r\n }\r\n // Slides/Pages\r\n // If there is parent data and they have extra fields, save the extrafields as parents fields\r\n else if (this.options.parentData && this.options.parentData.extrafields)\r\n item.parentfields = this.options.parentData.extrafields;\r\n\r\n // Reset the add type for this item so the cart can process it correctly\r\n item.addType = null;\r\n\r\n return item;\r\n }\r\n});","Librarian.Modules.CategoryLinks = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"viewAll\"],\r\n\r\n options: {\r\n classPrefix: \"modules-categorylinks-\",\r\n label: null,\r\n rootCat: 0,\r\n catPath: null,\r\n catId: -1,\r\n type: \"files\"\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n var self = this;\r\n\r\n if (!this.wrapperEl) {\r\n return;\r\n }\r\n\r\n this.parent();\r\n\r\n if (!this.containerEl) { return; }\r\n\r\n if (this.options.type == \"groups\") {\r\n this.options.rootCat = Librarian.specialCategories.GlobalFavorites.CatId;\r\n }\r\n\r\n if (this.options.catPath)\r\n var url = Librarian.path.getMethodUrl(\"getcc\") + \"&pcid=\" + this.options.rootCat + \"&cid=\" + this.options.catId + \"&cpath=\" + encodeURIComponent(this.options.catPath) + \"&out=ljson\";\r\n else \r\n var url = Librarian.path.getMethodUrl(\"getcc\") + \"&cid=\" + this.options.catId + \"&out=ljson\";\r\n \r\n this.request = new Librarian.Request.JSON({\r\n url: url,\r\n method: \"get\",\r\n onSuccess: function (response) {\r\n if (self.options.isSquare) {\r\n // add view all button\r\n new Element(\"span\", {\r\n \"class\": \"viewAll\",\r\n events: {\r\n click: function (event) {\r\n self.viewAll(event, response);\r\n }\r\n },\r\n text: \"View all >\"\r\n }).injectInside(self.wrapperEl);\r\n }\r\n\r\n else if (self.options.viewAll) {\r\n // add view all button\r\n new Element(\"span\", {\r\n \"class\": \"viewAll\",\r\n events: {\r\n click: function (event) {\r\n self.viewAll(event, response);\r\n }\r\n },\r\n text: \"View all\"\r\n }).injectInside(self.wrapperEl);\r\n }\r\n\r\n if (self.options.type == \"files\") { \r\n response.files.forEach(function(file) {\r\n var linkEl = new Element(\"div\", {\r\n \"class\": \"file-link\",\r\n events: {\r\n click: function(event) {\r\n if ((file.filetypeextension.toUpperCase() == \"URL\") && Librarian.tileList.openURLOnClick)\r\n Librarian.Utils.openURLFile(file);\r\n else\r\n self.clickHandler(event, file);\r\n }\r\n }\r\n }).injectInside(self.containerEl);\r\n\r\n new Element(\"img\", {\r\n \"class\": \"file-link-icon\",\r\n src: Librarian.Utils.getContentTypeIcon(file)\r\n }).injectInside(linkEl);\r\n\r\n new Element(\"span\", {\r\n \"class\": \"file-link-text\",\r\n text: file.name.replace(\".page\", \"\"),\r\n title: file.name.replace(\".page\", \"\")\r\n }).injectInside(linkEl);\r\n });\r\n }\r\n else if (self.options.type == \"categories\"){\r\n response.subcategories.forEach(function(file) { \r\n var linkEl = new Element(\"div\", {\r\n \"class\": \"file-link\",\r\n events: {\r\n click: function(event) {\r\n Librarian.Utils.selectTreeNodeByPath(treeView, self.options.catPath + \"/\" + file.name, null, true);\r\n }\r\n }\r\n }).injectInside(self.containerEl);\r\n\r\n new Element(\"span\", {\r\n \"class\": \"file-link-text\",\r\n text: file.name,\r\n title: file.name\r\n }).injectInside(linkEl);\r\n\r\n new Element(\"span\", {\r\n \"class\": \"file-link-arrow\"\r\n }).injectInside(linkEl);\r\n });\r\n }\r\n else if (self.options.type == \"groups\") {\r\n response.groups = response.groups.slice(0, 8);\r\n response.groups.forEach(function(group) {\r\n var linkEl = new Element(\"div\", {\r\n \"class\": \"file-link\",\r\n events: {\r\n click: function(event) {\r\n self.clickHandler(event, group);\r\n }\r\n }\r\n }).injectInside(self.containerEl);\r\n\r\n new Element(\"img\", {\r\n \"class\": \"file-link-icon\",\r\n src: Librarian.Utils.getContentTypeIcon(group)\r\n }).injectInside(linkEl);\r\n\r\n new Element(\"span\", {\r\n \"class\": \"file-link-text\",\r\n text: group.name,\r\n title: group.name\r\n }).injectInside(linkEl);\r\n });\r\n }\r\n }\r\n });\r\n this.request.send(); \r\n }, \r\n\r\n clickHandler: function (event, file) {\r\n event.stopPropagation();\r\n Librarian.PreviewWindow.openPreviewWindow(file);\r\n },\r\n\r\n viewAll: function (event, response) {\r\n\r\n Librarian.Homepage.hide();\r\n tileList.loadFromArray(response.files);\r\n\r\n var itemEl = $(\"pageheader\");\r\n if (itemEl) {\r\n itemEl.show();\r\n }\r\n\r\n if(Librarian.pageheader != null) {\r\n Librarian.pageHeader.destroy();\r\n Librarian.pageHeader = null;\r\n }\r\n\r\n $('myInProgress').empty();\r\n\r\n Librarian.pageHeader = new Librarian.PageHeader({\r\n name: response.name,\r\n showHeaderMenu: false\r\n });\r\n }\r\n});","Librarian.Modules.CatLinks = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-catlinks-\",\r\n fileName: null,\r\n catType: Librarian.catType.file\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl || !this.options.fileName)\r\n return;\r\n\r\n this.parent();\r\n\r\n // Generate the URL\r\n var url = Librarian.path.getMethodUrl(\"getslidetext\") + \"&out=ujson&snum=1&fname=\" + this.options.fileName;\r\n\r\n this.request = new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: function(json) {\r\n if (!json)\r\n return;\r\n\r\n var lines = json.Text.split('\\n');\r\n\r\n // Add each line from the source file as a new item in the cat links list\r\n lines.forEach(function(line) {\r\n var slashIndex = line.lastIndexOf('/'),\r\n catName = line.substring(slashIndex);\r\n\r\n // Use the last item after the slash as the name to show\r\n var linkEl = new Element(\"a\", {\r\n \"text\": catName,\r\n \"href\": \"javascript:void(0)\",\r\n \"class\": (this.options.classPrefix || '') + \"link\"\r\n }).injectInside(this.containerEl);\r\n\r\n // Save the path and the type to use in the onClick\r\n linkEl.path = line;\r\n linkEl.catType = this.options.catType;\r\n linkEl.addOnClick(function() {\r\n Librarian.Utils.loadFolderByPath(this.path, this.catType);\r\n })\r\n }.bind(this));\r\n }.bind(this),\r\n onFailure: Librarian.Utils.onFailure\r\n });\r\n this.request.send();\r\n }\r\n});","Librarian.Modules.Chart = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"renderChart\"],\r\n\r\n options: {\r\n classPrefix: \"modules-chart-\",\r\n chartName: null,\r\n chartConfig: null,\r\n data: null, \r\n postData: null, \r\n monthDateRange: null, \r\n id: null, \r\n },\r\n\r\n chart: null,\r\n\r\n initialize: function (options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function () {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n if(this.options.monthDateRange) {\r\n var rightNow = new Date();\r\n var startTime = new Date();\r\n startTime.setMonth(startTime.getMonth() - this.options.monthDateRange);\r\n\r\n var edate = String((\"0\" + (rightNow.getMonth() + 1)).slice(-2)) + \"-\" + String((\"0\" + rightNow.getDate()).slice(-2)) + \"-\" + String(rightNow.getFullYear());\r\n var sdate = String((\"0\" + (startTime.getMonth() + 1)).slice(-2)) + \"-\" + String((\"0\" + startTime.getDate()).slice(-2)) + \"-\" + String(startTime.getFullYear());\r\n }\r\n\r\n // Create chart element\r\n this.chartEl = new Element(\"div\", { id: \"chart_module_\" + String.uniqueID(), width: \"80%\" });\r\n\r\n this.containerEl.grab(this.chartEl);\r\n\r\n // Generate the URL\r\n var url = Librarian.path.getMethodUrl(\"getcrep\") + \"&out=chart&name=\" + this.options.chartName + \"&sdate=\" + sdate + \"&edate=\" + edate;\r\n if (typeof this.options.data == \"object\") {\r\n for (var key in this.options.data) {\r\n if (!this.options.data.hasOwnProperty(key))\r\n continue;\r\n\r\n url += '&' + key + '=' + encodeURIComponent(this.options.data[key]);\r\n }\r\n }\r\n\r\n if(this.options.postData) {\r\n\r\n new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: function(json) {\r\n this.renderChart(json);\r\n }.bind(this)\r\n }).post(this.options.postData);\r\n \r\n } \r\n else {\r\n\r\n new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: function(json) {\r\n this.renderChart(json);\r\n }.bind(this)\r\n }).send();\r\n }\r\n \r\n },\r\n\r\n renderChart: function(data) {\r\n var srs = data.series,\r\n labels = data.labels,\r\n cfg;\r\n\r\n if (!srs || !labels || (srs.length == 0) || (labels.length == 0))\r\n return;\r\n\r\n if(this.options.chartName === \"FilePopularity\") {\r\n cfg = Librarian.Modules.Chart.FilePopularityConfig;\r\n } \r\n else if(this.options.chartName === \"ContentPopularity\") {\r\n cfg = Librarian.Modules.Chart.ContentPopularityConfig;\r\n }\r\n else if ((this.options.chartConfig != null) && (typeof this.options.chartConfig == \"object\"))\r\n cfg = Object.merge(Librarian.Modules.Chart.defaultConfig, this.options.chartConfig);\r\n else\r\n cfg = Librarian.Modules.Chart.defaultConfig;\r\n\r\n // Set up dates\r\n for (var i = srs.length; i--;) {\r\n if (srs[i].data !== null) {\r\n for (var j = srs[i].data.length; j--;) {\r\n var pt = srs[i].data[j],\r\n split = pt.x.split(\"-\");\r\n pt.x = Date.UTC(split[2], split[0] - 1, split[1]);\r\n }\r\n }\r\n }\r\n\r\n cfg.chart.renderTo = this.chartEl;\r\n cfg.series = srs;\r\n cfg.yAxis.title = { text: labels[0].label };\r\n this.chart = new Highcharts.Chart(cfg);\r\n }\r\n});\r\n\r\nLibrarian.Modules.Chart.extend({\r\n defaultConfig: {\r\n credits: {\r\n enabled: false\r\n },\r\n chart: {\r\n type: \"column\",\r\n marginTop: 0,\r\n marginLeft: 0,\r\n marginRight: 0,\r\n marginBottom: 25,\r\n spacing: 0,\r\n height: 200,\r\n backgroundColor: Browser.ie8 ? \"white\" : \"transparent\",\r\n style: {\r\n fontFamily: \"Lato, sans-serif\",\r\n margin: \"0 auto\",\r\n borderBottom: \"1px solid #ddd\"\r\n }\r\n },\r\n title: {\r\n x: 0,\r\n text: \"Sends, Downloads & Page Views\",\r\n style: {\r\n fontFamily: \"Lato, sans-serif\",\r\n color: \"#222\",\r\n }\r\n },\r\n xAxis: {\r\n type: \"datetime\",\r\n style: {\r\n fontFamily: \"Lato, sans-serif\",\r\n padding: \"10px\"\r\n },\r\n lineColor: \"transparent\",\r\n lineWidth: 0,\r\n tickWidth: 0,\r\n minRange: 24 * 3600 * 1000 * 30,\r\n minTickInterval: 24 * 3600 * 1000,\r\n minorGridLineWidth: 0,\r\n minorTickWidth: 1,\r\n minorTickLength: 5,\r\n minorTickInterval: 24 * 3600 * 1000,\r\n startOnTick: true,\r\n endOnTick: true,\r\n labels: {\r\n overflow: \"justify\",\r\n formatter: function() {\r\n return Highcharts.dateFormat(\"%b\", this.value);\r\n },\r\n style: {\r\n color: \"#a0a0a0\",\r\n textTransform: \"uppercase\"\r\n }\r\n }\r\n },\r\n yAxis: {\r\n allowDecimals: false,\r\n min: 0,\r\n gridLineColor: \"#ddd\",\r\n style: {\r\n fontFamily: \"Lato, sans-serif\"\r\n },\r\n labels: {\r\n enabled: true\r\n }\r\n },\r\n tooltip: {\r\n useHTML: true,\r\n formatter: function() {\r\n return this.y;\r\n },\r\n style: {\r\n fontFamily: \"Lato, sans-serif\",\r\n color: \"#909090\"\r\n }\r\n },\r\n legend: {\r\n enabled: true,\r\n title: {\r\n text: \"File Shares\"\r\n },\r\n x: -150, \r\n y: -150,\r\n }\r\n },\r\n\r\n FilePopularityConfig: {\r\n colors: [\"#1b75bc\", \"#00aeef\", \"#a6ce39\"],\r\n credits: {\r\n enabled: false\r\n },\r\n chart: {\r\n type: \"column\",\r\n marginTop: 75,\r\n marginLeft: 60,\r\n marginRight: 25,\r\n marginBottom: 75,\r\n height: 325,\r\n width: 625,\r\n backgroundColor: Browser.ie8 ? \"white\" : \"transparent\"\r\n },\r\n title: {\r\n text: \"Sends, Downloads & Page Views\",\r\n align: \"left\", \r\n x: 10, \r\n y: 25\r\n },\r\n xAxis: {\r\n type: \"datetime\",\r\n lineWidth: 0,\r\n tickWidth: 0,\r\n minRange: 24 * 3600 * 1000 * 30,\r\n minTickInterval: 24 * 3600 * 1000,\r\n minorGridLineWidth: 0,\r\n minorTickWidth: 1,\r\n minorTickLength: 5,\r\n minorTickInterval: 24 * 3600 * 1000,\r\n startOnTick: true,\r\n endOnTick: true,\r\n labels: {\r\n formatter: function() {\r\n return Highcharts.dateFormat(\"%b\", this.value);\r\n }\r\n }\r\n },\r\n yAxis: {\r\n allowDecimals: false,\r\n min: 0,\r\n gridLineColor: \"#ddd\",\r\n tickAmount: 6,\r\n startOnTick: true,\r\n endOnTick: true,\r\n labels: {\r\n enabled: true\r\n }\r\n },\r\n tooltip: {\r\n useHTML: true,\r\n formatter: function() {\r\n return this.y;\r\n }\r\n },\r\n legend: {\r\n itemDistance: 8, \r\n symbolRadius: 0, \r\n x: 195, \r\n itemStyle: {\r\n color: \"#a0a0a0\"\r\n }\r\n }\r\n },\r\n\r\n ContentPopularityConfig: {\r\n colors: [\"#a6ce39\"],\r\n credits: {\r\n enabled: false\r\n },\r\n chart: {\r\n type: \"column\",\r\n marginTop: 50,\r\n marginLeft: 45,\r\n marginRight: 0,\r\n marginBottom: 75,\r\n height: 325,\r\n backgroundColor: Browser.ie8 ? \"white\" : \"transparent\"\r\n },\r\n title: {\r\n x: -10,\r\n text: \"Content Views\",\r\n align: \"left\",\r\n style: {\r\n fontFamily: \"Lato, sans-serif\",\r\n }\r\n },\r\n xAxis: {\r\n type: \"datetime\",\r\n lineWidth: 0,\r\n tickWidth: 0,\r\n minRange: 24 * 3600 * 1000 * 30,\r\n minTickInterval: 24 * 3600 * 1000,\r\n minorGridLineWidth: 0,\r\n minorTickWidth: 1,\r\n minorTickLength: 5,\r\n minorTickInterval: 24 * 3600 * 1000,\r\n startOnTick: true,\r\n endOnTick: true,\r\n labels: {\r\n overflow: \"justify\",\r\n formatter: function() {\r\n return Highcharts.dateFormat(\"%b\", this.value);\r\n }\r\n }, \r\n itemStyle: {\r\n color: \"#000000\"\r\n }\r\n },\r\n yAxis: {\r\n allowDecimals: false,\r\n min: 0,\r\n gridLineColor: \"#ddd\",\r\n style: {\r\n fontFamily: \"Lato, sans-serif\"\r\n },\r\n labels: {\r\n enabled: true\r\n }\r\n },\r\n tooltip: {\r\n useHTML: true,\r\n formatter: function() {\r\n return this.y;\r\n },\r\n style: {\r\n fontFamily: \"Lato, sans-serif\",\r\n color: \"#909090\"\r\n }\r\n },\r\n legend: {\r\n enabled: false\r\n } \r\n }\r\n});","Librarian.Modules.CollaborationTopics = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [],\r\n\r\n options: {\r\n classPrefix: \"modules-collaborationtopics-\",\r\n label: null,\r\n category: null,\r\n pageName: \"collaboration\",\r\n viewAll: false,\r\n viewAllTitle: false,\r\n count: 20\r\n },\r\n\r\n initialize: function (options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function () {\r\n var self = this;\r\n\r\n if (!this.wrapperEl) {\r\n return;\r\n }\r\n\r\n this.parent();\r\n\r\n if (!this.containerEl) {\r\n return;\r\n }\r\n\r\n Librarian.Utils.getTopics(this.options.count, function (topics) {\r\n if (self.options.viewAll) {\r\n // add view all button\r\n new Element(\"span\", {\r\n \"class\": \"viewAll\",\r\n events: {\r\n click: function (event) {\r\n Librarian.Modules.Nav.navigateToPage(self.options.pageName);\r\n }\r\n },\r\n text: \"View all\"\r\n }).injectInside(self.headerEl);\r\n }\r\n\r\n if (self.options.viewAllTitle) {\r\n titleEl = self.headerEl.getElement(\".\" + self.options.classPrefix + \"header-text\");\r\n titleEl.addOnClick(function() {\r\n window.location.hash = (\"page=\" + self.options.pageName + \"&category=\" + self.options.category);\r\n });\r\n }\r\n\r\n topics.forEach(function (topic) {\r\n if (!self.options.category || self.options.category == topic.categoryName) {\r\n var linkEl = new Element(\"div\", {\r\n \"class\": \"topic-link\",\r\n events: {\r\n click: function (event) {\r\n window.location.hash = (\"page=\" + self.options.pageName + \"&topicid=\" + topic.topicId);\r\n }\r\n }\r\n }).injectInside(self.containerEl);\r\n\r\n var date = new Date(topic.dateCreated),\r\n dateString = date.getDate() + \"-\" + (date.getMonth() + 1) + \"-\" + date.getFullYear();\r\n\r\n new Element(\"span\", {\r\n \"class\": \"topic-link-text\",\r\n html: topic.subject,\r\n title: topic.subject\r\n }).injectInside(linkEl);\r\n\r\n new Element(\"span\", {\r\n \"class\": \"topic-link-date\",\r\n html: dateString,\r\n title: dateString\r\n }).injectInside(linkEl);\r\n\r\n new Element(\"span\", {\r\n \"class\": \"topic-link-message\",\r\n html: topic.message,\r\n title: topic.message\r\n }).injectInside(linkEl);\r\n\r\n new Element(\"span\", {\r\n \"class\": \"topic-link-author\",\r\n html: topic.createdBy.displayName,\r\n title: topic.createdBy.displayName\r\n }).injectInside(linkEl);\r\n }\r\n });\r\n });\r\n }\r\n});","Librarian.Modules.Communications = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"load\", \"onLoad\", \"applyFilters\", \"resize\"],\r\n\r\n options: {\r\n classPrefix: \"modules-communications-\",\r\n height: \"auto\",\r\n minHeight: 300,\r\n gridWidth: 800,\r\n gridHeight: 305\r\n },\r\n\r\n datePickers: {},\r\n currentTab: \"sent\",\r\n grid: null,\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n this.wrapperEl.addClass(\"ecomm-grid\");\r\n\r\n var contentUrl = Librarian.path.getLayoutsPath() + \"pages/communications.html\";\r\n new Librarian.Request.HTML({\r\n url: contentUrl,\r\n update: this.containerEl,\r\n onSuccess: this.onLoad\r\n }).send();\r\n },\r\n\r\n onLoad: function() {\r\n var contEl = $(this.containerEl),\r\n fromDateEl = contEl.getElement(\".fromDate\"),\r\n fromIconEl = contEl.getElement(\".fromIcon\"),\r\n toDateEl = contEl.getElement(\".toDate\"),\r\n toIconEl = contEl.getElement(\".toIcon\");\r\n\r\n this.datePickers[\"from\"] = Librarian.Utils.setUpDatePicker2(fromDateEl, fromIconEl);\r\n this.datePickers[\"to\"] = Librarian.Utils.setUpDatePicker2(toDateEl, toIconEl);\r\n\r\n var itemEl = contEl.getElement(\".goButton\");\r\n if (itemEl)\r\n itemEl.addOnClick(this.applyFilters, this);\r\n\r\n var gridPanel = contEl.getElement(\".gridPanel\");\r\n if (gridPanel)\r\n this.loadGrid(gridPanel);\r\n\r\n this.resize();\r\n },\r\n\r\n loadGrid: function(gridPanel) {\r\n var buttons = [\r\n { name: Librarian.Lang.getString(\"scheduled\"), bclass: \"gridTab\", onclick: this.onGridTabClick.bind(this) },\r\n { name: Librarian.Lang.getString(\"sent\"), bclass: \"gridTab gridCurrentTab\", onclick: this.onGridTabClick.bind(this) }\r\n ];\r\n\r\n if (Librarian.event.enableDrafts) {\r\n buttons.unshift({ name: Librarian.Lang.getString(\"drafts\"), bclass: \"gridTab\", onclick: this.onGridTabClick.bind(this) });\r\n }\r\n\r\n this.grid = new omniGrid(gridPanel, {\r\n buttons: buttons,\r\n columnModel: this.getColumnModel(),\r\n url: this.getUrl(),\r\n pagination: true,\r\n serverSort: false,\r\n filterHide: true,\r\n filterHideCls: \"hide\",\r\n filterSelectedCls: \"filter\",\r\n alternaterows: true,\r\n showHeader: true,\r\n sortHeader: true,\r\n resizeColumns: true,\r\n multipleSelection: true,\r\n width: this.options.gridWidth,\r\n height: this.options.gridHeight,\r\n perPage: 20,\r\n includeTotal: false,\r\n resizable: false\r\n });\r\n\r\n this.grid.addEvent(\"dblclick\", this.onRowDblClick.bind(this));\r\n },\r\n\r\n onGridTabClick: function(name, grid) {\r\n if (name == Librarian.Lang.getString(\"drafts\"))\r\n this.currentTab = \"drafts\";\r\n if (name == Librarian.Lang.getString(\"scheduled\"))\r\n this.currentTab = \"scheduled\";\r\n else if (name == Librarian.Lang.getString(\"sent\"))\r\n this.currentTab = \"sent\";\r\n\r\n grid.options.url = this.getUrl();\r\n grid.setColumnModel(this.getColumnModel());\r\n grid.reload();\r\n\r\n grid.options.buttons.forEach(function(buttonObj) {\r\n if (buttonObj && buttonObj.element) {\r\n if (buttonObj.name == name) {\r\n buttonObj.bclass = \"gridCurrentTab\";\r\n buttonObj.element.className = \"gridCurrentTab\";\r\n }\r\n else {\r\n buttonObj.bclass = \"gridTab\";\r\n buttonObj.element.className = \"gridTab\";\r\n }\r\n }\r\n });\r\n },\r\n\r\n getUrl: function() {\r\n switch (this.currentTab) {\r\n case \"drafts\":\r\n return Librarian.path.getEventUrl(\"getschuevents\") + \"&out=dgrid&expand=1&est=9\";\r\n case \"scheduled\":\r\n return Librarian.path.getEventUrl(\"getschuevents\") + \"&out=dgrid&expand=1\";\r\n case \"sent\":\r\n return Librarian.path.getEventUrl(\"getaruevents\") + \"&out=dgrid&expand=1\";\r\n }\r\n },\r\n\r\n getColumnModel: function() {\r\n switch (this.currentTab) {\r\n case \"drafts\":\r\n return this.getDraftsColumnModel();\r\n case \"scheduled\":\r\n return this.getScheduledColumnModel();\r\n case \"sent\":\r\n return this.getSentColumnModel();\r\n }\r\n },\r\n\r\n getDraftsColumnModel: function() {\r\n var draftColumns = [\r\n {\r\n header: Librarian.Lang.getString(\"subject\"),\r\n dataIndex: \"name\",\r\n dataType: \"string\",\r\n width: .5 * this.options.gridWidth\r\n },\r\n {\r\n header: Librarian.Lang.getString(\"date\"),\r\n dataIndex: \"exectime\",\r\n dataType: \"string\",\r\n labelFunction: this.renderDateTimeString,\r\n width: .2 * this.options.gridWidth\r\n }\r\n ];\r\n\r\n return draftColumns;\r\n },\r\n\r\n getScheduledColumnModel: function() {\r\n var scheduledColumns = [\r\n {\r\n header: Librarian.Lang.getString(\"to\"),\r\n dataIndex: \"to\",\r\n dataType: \"string\",\r\n labelFunction: this.renderRecipients,\r\n width: .25 * this.options.gridWidth\r\n },\r\n {\r\n header: Librarian.Lang.getString(\"subject\"),\r\n dataIndex: \"name\",\r\n dataType: \"string\",\r\n width: .35 * this.options.gridWidth\r\n },\r\n {\r\n header: Librarian.Lang.getString(\"event_senddate\"),\r\n dataIndex: \"exectime\",\r\n dataType: \"string\",\r\n labelFunction: this.renderDateTimeString,\r\n width: .19 * this.options.gridWidth\r\n },\r\n {\r\n header: Librarian.Lang.getString(\"expires\"),\r\n dataIndex: \"expirationdate\",\r\n dataType: \"string\",\r\n labelFunction: this.renderDateString,\r\n width: .19 * this.options.gridWidth\r\n }\r\n ];\r\n\r\n return scheduledColumns;\r\n },\r\n\r\n getSentColumnModel: function() {\r\n var sentColumns = [\r\n {\r\n header: Librarian.Lang.getString(\"to\"),\r\n dataIndex: \"to\",\r\n dataType: \"string\",\r\n labelFunction: this.renderRecipients,\r\n width: .23 * this.options.gridWidth\r\n },\r\n {\r\n header: Librarian.Lang.getString(\"subject\"),\r\n dataIndex: \"name\",\r\n dataType: \"string\",\r\n width: .23 * this.options.gridWidth\r\n },\r\n {\r\n header: Librarian.Lang.getString(\"event_senddate\"),\r\n dataIndex: \"exectime\",\r\n dataType: \"string\",\r\n labelFunction: this.renderDateTimeString,\r\n width: .19 * this.options.gridWidth\r\n },\r\n {\r\n header: Librarian.Lang.getString(\"expires\"),\r\n dataIndex: \"expirationdate\",\r\n dataType: \"string\",\r\n labelFunction: this.renderDateString,\r\n width: .12 * this.options.gridWidth\r\n },\r\n {\r\n header: Librarian.Lang.getString(\"opens\"),\r\n dataIndex: \"opencount\",\r\n dataType: \"number\",\r\n width: .0525 * this.options.gridWidth\r\n },\r\n {\r\n header: Librarian.Lang.getString(\"clicks\"),\r\n dataIndex: \"clickcount\",\r\n dataType: \"number\",\r\n width: .0525 * this.options.gridWidth\r\n },\r\n {\r\n header: Librarian.Lang.getPluralString(\"share\", 2),\r\n dataIndex: \"sharecount\",\r\n dataType: \"number\",\r\n width: .0525 * this.options.gridWidth\r\n },\r\n {\r\n header: Librarian.Lang.getPluralString(\"download\", 2),\r\n dataIndex: \"downloadcount\",\r\n dataType: \"number\",\r\n width: .0825 * this.options.gridWidth\r\n }\r\n ];\r\n\r\n return sentColumns;\r\n },\r\n\r\n renderDateTimeString: function(data, row, columnData) {\r\n var date = data[columnData.dataIndex];\r\n if (date)\r\n return Librarian.Utils.extractDateFromString(date).format(\"%m/%d/%Y %l:%M %p\");\r\n else\r\n return \"N/A\";\r\n },\r\n\r\n renderDateString: function(data, row, columnData) {\r\n var date = data[columnData.dataIndex];\r\n if (date)\r\n return Librarian.Utils.extractDateFromString(date).format(\"%m/%d/%Y\");\r\n else\r\n return \"N/A\";\r\n },\r\n\r\n renderRecipients: function(data /*, row, columnData*/) {\r\n if (!data.recipients || data.recipients.length == 0)\r\n return '';\r\n\r\n var str = data.recipients[0].email || data.recipients[0].name;\r\n if (data.recipients.length > 1)\r\n str += Librarian.Lang.getArgString(\"and_more\", (data.recipients.length - 1));\r\n return str;\r\n },\r\n\r\n onRowDblClick: function(obj) {\r\n var row = obj.row, \r\n grid = obj.target,\r\n eventInfo = grid.options.data[row];\r\n\r\n var detailWindow = new Librarian.EventDetailsWindow({ eventId: eventInfo.eventid, grid: this.grid });\r\n detailWindow.show();\r\n },\r\n\r\n applyFilters: function() {\r\n var contEl = $(this.containerEl);\r\n if (!contEl)\r\n return;\r\n\r\n var itemEl = contEl.getElement(\".fromDate\");\r\n if (itemEl)\r\n this.grid.options.startDate = itemEl.value;\r\n\r\n itemEl = contEl.getElement(\".toDate\");\r\n if (itemEl)\r\n this.grid.options.endDate = itemEl.value;\r\n\r\n var filterKey = '';\r\n itemEl = this.containerEl.getElement(\".searchBox\");\r\n if (itemEl)\r\n filterKey = itemEl.value;\r\n\r\n this.grid.search(filterKey);\r\n },\r\n\r\n closeDatePickers: function() {\r\n if (this.datePickers) {\r\n for (var key in this.datePickers) {\r\n if (this.datePickers[key])\r\n this.datePickers[key].close();\r\n }\r\n }\r\n },\r\n\r\n resize: function() {\r\n var bodyHeight = this.wrapperEl.getStyle(\"height\").toInt();\r\n if (this.headerEl)\r\n bodyHeight -= this.headerEl.getStyle(\"height\").toInt();\r\n\r\n this.containerEl.setStyle(\"height\", bodyHeight);\r\n\r\n if (this.grid) {\r\n var controlHeight = 40,\r\n contEl = $(this.containerEl);\r\n if (contEl) {\r\n var controlEl = contEl.getElement(\".commDateControls\");\r\n if (controlEl)\r\n controlHeight = controlEl.getHeight();\r\n }\r\n\r\n var width = contEl.getWidth() - contEl.getStyle(\"paddingLeft\").toInt() - contEl.getStyle(\"paddingRight\").toInt();\r\n var height = bodyHeight - controlHeight - 40 - contEl.getStyle(\"paddingBottom\").toInt();\r\n\r\n this.grid.setSize(width, height);\r\n }\r\n }\r\n});","Librarian.Modules.Contacts = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-contacts-\",\r\n eventId: null,\r\n archived: true\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl || (typeof this.options.eventId != \"number\"))\r\n return;\r\n\r\n this.parent();\r\n\r\n var listEl = new Element(\"ul\").injectInside(this.containerEl);\r\n\r\n this.request = Librarian.Events.getEventRecipients(this.options.eventId, this.options.archived, \"ujson\", function(json) {\r\n if (!json)\r\n return;\r\n\r\n for (var i = 0, length = json.length; i < length; i++) {\r\n var listItemEl = new Element(\"li\", {\r\n \"class\": (this.options.classPrefix || '') + \"item\"\r\n }).injectInside(listEl),\r\n chevronEl = new Element(\"span\", {\r\n \"class\": \"entypo-right-open\"\r\n });\r\n\r\n new Element(\"span\", {\r\n \"text\": json[i].DisplayName,\r\n \"class\": (this.options.classPrefix || '') + \"name\"\r\n }).injectInside(listItemEl);\r\n\r\n if (json[i].DisplayName != json[i].Email) {\r\n new Element(\"span\", {\r\n \"text\": json[i].Email,\r\n \"class\": (this.options.classPrefix || '') + \"email\"\r\n }).injectInside(listItemEl);\r\n }\r\n\r\n chevronEl.injectInside(listItemEl);\r\n\r\n listItemEl.client = Librarian.Contacts.getContactFromJSON(Object.toLowerKeys(json[i]));\r\n listItemEl.addOnClick(function () {\r\n var win = new Librarian.ContactDetailWindow(this.client, {\r\n id: \"ContactDetailWindow\" + (new Date().getTime()),\r\n index: contactDetailWindows.length,\r\n onCloseComplete: function() {\r\n contactDetailWindows.remove(this.options.index);\r\n\r\n for (var i = 0; i < contactDetailWindows.length; i++)\r\n contactDetailWindows[i].options.index = i;\r\n }\r\n });\r\n\r\n contactDetailWindows.push(win);\r\n });\r\n }\r\n }.bind(this));\r\n }\r\n});","Librarian.Modules.Created = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-created-\",\r\n orderBy: \"FileDBImportDate\",\r\n order: \"desc\",\r\n count: 20,\r\n showDate: true,\r\n dateFormat: \"%m/%d/%Y\",\r\n action: \"download\" // Or \"preview\"\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl || !Librarian.specialCategories || (typeof Librarian.specialCategories.UserApproved != \"number\"))\r\n return;\r\n\r\n this.parent();\r\n\r\n // Create the container element and generate the URL\r\n var listEl = new Element(\"ul\").injectInside(this.containerEl),\r\n url = Librarian.path.getMethodUrl(\"getfiles\") + \"&out=ujson&orderBy=\" + this.options.orderBy + \"&order=\" + this.options.order + \"&perpage=\" + this.options.count + \"&cid=\" + Librarian.specialCategories.UserApproved;\r\n\r\n this.request = new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: function(json) {\r\n if (!json)\r\n return;\r\n\r\n listEl.empty();\r\n\r\n // Get the list of files, but make sure there are some before we continue\r\n var files = json.Files;\r\n if (!files || (files.length == 0))\r\n return;\r\n\r\n // Create a line for each of the files\r\n for (var i = 0; i < files.length; i++) {\r\n var file = files[i],\r\n date = Librarian.Utils.extractDateFromString(file.ImportDate).format(this.options.dateFormat),\r\n url = '#';\r\n // Set up the URL if this is set to download\r\n if (this.options.action === \"download\")\r\n url = Librarian.path.getDownloadUrl(\"dnld\") + \"&fid=\" + file.FileId;\r\n\r\n // Create the list item and link for this file\r\n var listItemEl = new Element(\"li\", {\r\n \"class\": (this.options.classPrefix || '') + \"item\"\r\n }).injectInside(listEl),\r\n linkEl = new Element(\"a\", {\r\n \"class\": (this.options.classPrefix || '') + \"link\",\r\n \"text\": this.options.showDate ? (date + \" - \" + file.Name) : file.Name,\r\n \"title\": file.Name,\r\n \"href\": url,\r\n \"target\": \"_download\"\r\n }).injectInside(listItemEl);\r\n\r\n // If this is set to preview, save the data and add the onClick\r\n if (this.options.action === \"preview\") {\r\n linkEl.data = Object.toLowerKeys(file);\r\n linkEl.addOnClick(function() {\r\n Librarian.PreviewWindow.openPreviewWindow(this.data);\r\n });\r\n }\r\n }\r\n }.bind(this),\r\n onFailure: Librarian.Utils.onFailure\r\n });\r\n this.request.send();\r\n }\r\n});","Librarian.Modules.Duplicates = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"load\", \"onLoad\", \"renderDuplicates\", \"sendSelected\", \"applyFilters\", \"resize\"],\r\n\r\n options: {\r\n classPrefix: \"modules-duplicates-\",\r\n height: \"auto\",\r\n minHeight: 300\r\n },\r\n\r\n datePickers: {},\r\n currentTab: \"scheduled\",\r\n grid: null,\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n\r\n if (this.options.currentTab) {\r\n this.currentTab = this.options.currentTab;\r\n }\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n this.wrapperEl.addClass(\"ecomm-grid\");\r\n\r\n var contentUrl = Librarian.path.getLayoutsPath() + \"pages/duplicates.html\";\r\n new Librarian.Request.HTML({\r\n url: contentUrl,\r\n update: this.containerEl,\r\n onSuccess: this.onLoad\r\n }).send();\r\n },\r\n\r\n onLoad: function() {\r\n var contEl = $(this.containerEl),\r\n fromDateEl = contEl.getElement(\".fromDate\"),\r\n fromIconEl = contEl.getElement(\".fromIcon\"),\r\n toDateEl = contEl.getElement(\".toDate\"),\r\n toIconEl = contEl.getElement(\".toIcon\"),\r\n toDay = new Date(),\r\n fromDay = new Date(toDay.getFullYear(), toDay.getMonth() - 1, toDay.getDay());\r\n\r\n fromDateEl.value = fromDay.format(\"%x\");\r\n\r\n this.datePickers[\"from\"] = Librarian.Utils.setUpDatePicker2(fromDateEl, fromIconEl);\r\n this.datePickers[\"to\"] = Librarian.Utils.setUpDatePicker2(toDateEl, toIconEl);\r\n\r\n var itemEl = contEl.getElement(\".goButton\");\r\n if (itemEl)\r\n itemEl.addOnClick(this.applyFilters, this);\r\n\r\n var gridPanel = contEl.getElement(\".gridPanel\");\r\n if (gridPanel) {\r\n var gridButtonClick = function(name, grid) {\r\n if (name == Librarian.Lang.getString(\"scheduled\")) {\r\n this.currentTab = \"scheduled\";\r\n grid.options.url = Librarian.path.getEventUrl(\"getscheventswdup\") + \"&out=dgrid&expand=1\";\r\n grid.draw();\r\n grid.loadData();\r\n }\r\n else if (name == Librarian.Lang.getString(\"sent\")) {\r\n this.currentTab = \"sent\";\r\n grid.options.url = Librarian.path.getEventUrl(\"getareventswdup\") + \"&out=dgrid&expand=1\";\r\n grid.draw();\r\n grid.loadData();\r\n }\r\n\r\n grid.options.buttons.forEach(function(buttonObj) {\r\n if (buttonObj && buttonObj.element) {\r\n if (buttonObj.name == name) {\r\n buttonObj.bclass = \"gridCurrentTab\";\r\n buttonObj.element.className = \"gridCurrentTab\";\r\n }\r\n else {\r\n buttonObj.bclass = \"gridTab\";\r\n buttonObj.element.className = \"gridTab\";\r\n }\r\n }\r\n });\r\n },\r\n renderDateTimeString = function(data, row, columnData) {\r\n var date = data[columnData.dataIndex];\r\n if (date)\r\n return Librarian.Utils.extractDateFromString(date).format(\"%m/%d/%Y %l:%M %p\");\r\n else\r\n return \"N/A\";\r\n },\r\n renderDateString = function(data, row, columnData) {\r\n var date = data[columnData.dataIndex];\r\n if (date)\r\n return Librarian.Utils.extractDateFromString(date).format(\"%m/%d/%Y\");\r\n else\r\n return \"N/A\";\r\n },\r\n renderRecipients = function(data /*, row, columnData*/) {\r\n if (!data.recipients || data.recipients.length == 0)\r\n return '';\r\n\r\n var str = data.recipients[0].email;\r\n if (data.recipients.length > 1)\r\n str += Librarian.Lang.getArgString(\"and_more\", (data.recipients.length - 1));\r\n return str;\r\n },\r\n onRowDblClick = function(obj) {\r\n var row = obj.row, grid = obj.target,\r\n eventInfo = grid.options.data[row],\r\n detailWindow = new Librarian.EventDetailsWindow({ eventId: eventInfo.eventid, grid: grid });\r\n detailWindow.show();\r\n },\r\n\r\n cmu = [\r\n {\r\n header: Librarian.Lang.getString(\"subject\"),\r\n dataIndex: \"name\",\r\n dataType: \"string\",\r\n width: 300\r\n },\r\n {\r\n header: Librarian.Lang.getString(\"eventgroup\"),\r\n dataIndex: \"groupname\",\r\n dataType: \"string\",\r\n width: 300\r\n },\r\n {\r\n header: Librarian.Lang.getString(\"event_senddate\"),\r\n dataIndex: \"exectime\",\r\n dataType: \"string\",\r\n labelFunction: renderDateTimeString,\r\n width: 150\r\n }\r\n ],\r\n model = cmu,\r\n url = Librarian.path.getEventUrl(\"getareventswdup\") + \"&out=dgrid&expand=1\";\r\n\r\n if (this.currentTab == \"scheduled\") \r\n url = Librarian.path.getEventUrl(\"getscheventswdup\") + \"&out=dgrid&expand=1\";\r\n\r\n var bclassSent = \"gridTab\";\r\n var bclassScheduled = \"gridTab gridCurrentTab\";\r\n\r\n if (this.currentTab == \"sent\") {\r\n bclassSent = \"gridTab gridCurrentTab\";\r\n bclassScheduled = \"gridTab\";\r\n }\r\n this.grid = new omniGrid(gridPanel, {\r\n buttons: [\r\n { name: Librarian.Lang.getString(\"scheduled\"), bclass: bclassScheduled, onclick: gridButtonClick.bind(this) },\r\n { name: Librarian.Lang.getString(\"sent\"), bclass: bclassSent, onclick: gridButtonClick.bind(this) }\r\n ],\r\n columnModel: model,\r\n url: url,\r\n pagination: true,\r\n serverSort: false,\r\n filterHide: true,\r\n filterHideCls: \"hide\",\r\n filterSelectedCls: \"filter\",\r\n accordion: true,\r\n accordionRenderer: this.renderDuplicates,\r\n alternaterows: true,\r\n showHeader: true,\r\n sortHeader: true,\r\n resizeColumns: true,\r\n multipleSelection: true,\r\n width: 800,\r\n height: 305,\r\n perPage: 20,\r\n resizable: false,\r\n startDate: fromDateEl.value\r\n });\r\n this.grid.addEvent(\"dblclick\", onRowDblClick.bind(this));\r\n this.resize();\r\n }\r\n },\r\n \r\n renderDuplicates: function(obj) {\r\n var contEl = obj.parent;\r\n var data = obj.rowdata;\r\n\r\n contEl.setStyle(\"padding\", \"10px 20px\");\r\n\r\n if (data.recipients && data.recipients.length) {\r\n var sendEl = new Element(\"input[type=button]\", { \"class\": \"pure-button pure-button-primary right\" }).inject(contEl);\r\n sendEl.setAttribute(\"value\", \"Send Selected\");\r\n sendEl.addOnClick(function() {\r\n this.sendSelected(obj);\r\n }.bind(this));\r\n\r\n data.recipients.forEach(function(recipient) { \r\n var recipCont = new Element(\"div\").inject(contEl);\r\n var labelEl = new Element(\"label\").inject(recipCont);\r\n var checkEl = new Element(\"input[type=checkbox]\").inject(labelEl);\r\n checkEl.data = recipient;\r\n if ((recipient.flags & 2) == 2)\r\n checkEl.checked = true;\r\n \r\n var name = recipient.displayname;\r\n if (!name.contains('@'))\r\n name += \" <\" + recipient.email + \">\";\r\n var nameEl = new Element(\"span\", { text: name, \"class\": \"spacerLeftMd\" }).inject(labelEl);\r\n });\r\n }\r\n },\r\n\r\n sendSelected: function(obj) {\r\n var contEl = obj.parent;\r\n var data = obj.rowdata;\r\n\r\n var method,\r\n checkboxes,\r\n recipients = [];\r\n \r\n if (data.archived) {\r\n method = \"sendardup\";\r\n checkboxes = contEl.getElements(\"input[type=checkbox]:checked\");\r\n recipients = checkboxes.map(function(checkbox) {\r\n var recipient = checkbox.data;\r\n recipient.flags = 2;\r\n return recipient;\r\n });\r\n } \r\n else {\r\n method = \"upschdup\";\r\n checkboxes = contEl.getElements(\"input[type=checkbox]\");\r\n recipients = checkboxes.map(function(checkbox) {\r\n var recipient = checkbox.data;\r\n recipient.flags = checkbox.checked ? 2 : 0;\r\n return recipient;\r\n });\r\n }\r\n\r\n var url = Librarian.path.getEventUrl(method) + \"&in=json&eid=\" + data.eventid;\r\n new Librarian.Request({\r\n url: url,\r\n method: \"post\",\r\n data: Base64.encode(JSON.stringify(recipients)),\r\n onSuccess: function() {\r\n Librarian.Utils.notification(\"Success\");\r\n \r\n this.grid.refresh();\r\n }.bind(this)\r\n }).send();\r\n },\r\n\r\n applyFilters: function() {\r\n var contEl = $(this.containerEl);\r\n if (!contEl)\r\n return;\r\n\r\n var itemEl = contEl.getElement(\".fromDate\");\r\n if (itemEl)\r\n this.grid.options.startDate = itemEl.value;\r\n\r\n itemEl = contEl.getElement(\".toDate\");\r\n if (itemEl)\r\n this.grid.options.endDate = itemEl.value;\r\n\r\n var filterKey = '';\r\n itemEl = this.containerEl.getElement(\".searchBox\");\r\n if (itemEl)\r\n filterKey = itemEl.value;\r\n\r\n this.grid.filter(filterKey, \"contains\", [\"name\"]);\r\n },\r\n\r\n resize: function() {\r\n var bodyHeight = this.wrapperEl.getStyle(\"height\").toInt();\r\n if (this.headerEl)\r\n bodyHeight -= this.headerEl.getStyle(\"height\").toInt();\r\n\r\n this.containerEl.setStyle(\"height\", bodyHeight);\r\n\r\n if (this.grid) {\r\n var controlHeight = 40,\r\n contEl = $(this.containerEl);\r\n if (contEl) {\r\n var controlEl = contEl.getElement(\".commDateControls\");\r\n if (controlEl)\r\n controlHeight = controlEl.getHeight();\r\n }\r\n\r\n var width = contEl.getWidth() - contEl.getStyle(\"paddingLeft\").toInt() - contEl.getStyle(\"paddingRight\").toInt();\r\n var height = bodyHeight - controlHeight - 40 - contEl.getStyle(\"paddingBottom\").toInt();\r\n\r\n this.grid.setSize(width, height);\r\n }\r\n }\r\n});","Librarian.Modules.Email = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"onSubmitClicked\", \"onClearClick\", \"onPostRender\"],\r\n\r\n options: {\r\n classPrefix: \"modules-email-\",\r\n email: null,\r\n clearButton: false,\r\n onPostRender: null,\r\n buttonText: null,\r\n defaultText: null,\r\n subject: null,\r\n defaultTextColor: null,\r\n textColor: null\r\n },\r\n\r\n questionContainerEl: null,\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n destroy: function() {\r\n if (this.questionContainerEl) {\r\n $(this.questionContainerEl).destroy();\r\n this.questionContainerEl = null;\r\n }\r\n\r\n this.parent();\r\n },\r\n\r\n onPostRender: function() {\r\n if (typeof this.options.onPostRender == \"function\")\r\n this.options.onPostRender(this.containerEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl || !this.options.email)\r\n return;\r\n\r\n this.parent();\r\n\r\n this.questionContainerEl = new Element(\"textarea\", {\r\n \"class\": (this.options.classPrefix || '') + \"text\",\r\n \"value\": this.options.defaultText || Librarian.Lang.getString(\"resource_email_default\")\r\n }).injectInside(this.containerEl);\r\n this.questionContainerEl.style.color = this.options.defaultTextColor || \"#999\";\r\n var self = this;\r\n // Clear the default value out of the box when it is clicked into\r\n this.questionContainerEl.addEvent(\"focus\", function() {\r\n var value = Librarian.Utils.getElementValue(this);\r\n if (value == Librarian.Lang.getString(\"resource_email_default\") || value == self.options.defaultText) {\r\n Librarian.Utils.setElementValue(this, '');\r\n this.style.color = self.options.textColor || \"#454545\";\r\n }\r\n\r\n return false;\r\n }.bind(this.questionContainerEl));\r\n\r\n // If the box is empty when it is clicked out of, restore the default value\r\n this.questionContainerEl.addEvent(\"blur\", function () {\r\n var value = Librarian.Utils.getElementValue(this);\r\n if (value.length == 0) {\r\n Librarian.Utils.setElementValue(this, self.options.defaultText || Librarian.Lang.getString(\"resource_email_default\"));\r\n this.style.color = self.options.defaultTextColor || \"#999\";\r\n }\r\n\r\n return false;\r\n }.bind(this.questionContainerEl));\r\n\r\n var buttonEl = new Element(\"div\", {\r\n \"class\": (this.options.classPrefix || '') + \"send\",\r\n \"html\": ((this.options.buttonText === false) ? '' : this.options.buttonText || Librarian.Lang.getString(\"resource_email_button\"))\r\n }).injectInside(this.containerEl);\r\n\r\n if (this.options.clearButton) {\r\n var clearButtonEl = new Element(\"div\", {\r\n \"class\": (this.options.classPrefix || '') + \"clear\",\r\n \"text\": Librarian.Lang.getString(\"clear\")\r\n }).injectInside(this.containerEl);\r\n clearButtonEl.addOnClick(this.onClearClick);\r\n }\r\n\r\n this.onPostRender();\r\n\r\n buttonEl.addOnClick(this.onSubmitClicked);\r\n },\r\n\r\n onSubmitClicked: function() {\r\n var message = Librarian.Utils.getElementValue(this.questionContainerEl),\r\n defaultValue = this.options.defaultText || Librarian.Lang.getString(\"resource_email_default\"); \r\n // Don't send the default value\r\n if (message == defaultValue) {\r\n Librarian.Utils.notification(Librarian.Lang.getString(\"resource_email_nochange\"));\r\n return;\r\n }\r\n\r\n // Replace new lines with line breaks to keep formatting\r\n message = message.replaceAll(\"\\r\\n\", \"
\")\r\n .replaceAll(\"\\r\", \"
\")\r\n .replaceAll(\"\\n\", \"
\");\r\n\r\n var eventInfo = new Librarian.Events.Event();\r\n eventInfo.name = this.options.subject || this.options.title + \" Message\";\r\n eventInfo.messagebody = message;\r\n eventInfo.exectime = new Date();\r\n\r\n var emails = this.options.email.split(';');\r\n for (var i = emails.length; i--;) {\r\n var recipientInfo = new Librarian.Contacts.Contact();\r\n recipientInfo.email = emails[i].trim();\r\n eventInfo.addRecipient(recipientInfo);\r\n }\r\n\r\n Librarian.Events.sendEvent(eventInfo,\r\n // Success\r\n function() {\r\n Librarian.Utils.notification(Librarian.Lang.getString(\"resource_email_sent\"));\r\n // Clear the question when it has successfully sent\r\n Librarian.Utils.setElementValue(this.questionContainerEl, defaultValue);\r\n this.questionContainerEl.style.color = self.options.defaultTextColor || \"#999\";\r\n }.bind(this),\r\n // Failure\r\n function() {\r\n Librarian.Utils.error(Librarian.Lang.getString(\"resource_email_failed\"));\r\n });\r\n },\r\n\r\n onClearClick: function() {\r\n if (!this.questionContainerEl)\r\n return;\r\n\r\n this.questionContainerEl.set(\"text\", Librarian.Lang.getString(\"resource_email_default\"));\r\n this.questionContainerEl.modified = true;\r\n }\r\n});","Librarian.Modules.FastLaneTileList = new Class({\r\n Extends: Librarian.Modules.Module, \r\n Binds: [\"renderContent\", \"startLoadingPhase\", \"endLoadingPhase\", \"renderBreadcrumb\", \"onBreadcrumbClicked\", \"load\"], \r\n\r\n options: {\r\n classPrefix: \"modules-fastlanetilelist-\",\r\n id: \"fastLaneTileList\"\r\n },\r\n\r\n breadcrumb: [],\r\n prevFolderInfo: null,\r\n\r\n /* Module Methods */\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n\r\n // start loading screen\r\n // prevent event getting called twice because of tab double-load bug\r\n Librarian.FastLane.removeEvents(\"fastlane-start-loading-phase\");\r\n Librarian.FastLane.addEvent(\"fastlane-start-loading-phase\", this.startLoadingPhase);\r\n\r\n // render tile list items\r\n // prevent event getting called twice because of tab double-load bug\r\n Librarian.FastLane.removeEvents(\"fastlane-content-ready-to-render\");\r\n Librarian.FastLane.addEvent(\"fastlane-content-ready-to-render\", this.renderContent);\r\n }, \r\n\r\n load: function() {\r\n var self = this,\r\n folderClicked = false;\r\n\r\n // check module wrapper\r\n if (!this.wrapperEl) { return; }\r\n\r\n var pureElement = this.wrapperEl.getParent();\r\n var rowElement = pureElement.getParent();\r\n\r\n this.parent();\r\n\r\n // check module container\r\n if (!this.containerEl) { return; }\r\n \r\n // set styles so module can be height of whole page\r\n pureElement.setStyle(\"height\", \"100%\");\r\n rowElement.setStyle(\"height\", \"100%\");\r\n this.wrapperEl.setStyle(\"height\", \"100%\");\r\n this.containerEl.setStyle(\"height\", \"100%\");\r\n\r\n // initialize breadcrumb element\r\n this.breadcrumbEl = new Element(\"div\", {\r\n id: \"fastLaneTileListBreadcrumb\"\r\n });\r\n this.breadcrumbEl.inject(this.containerEl);\r\n\r\n // initialize pageheader container\r\n this.pageheadercontainerEl = new Element(\"div\", {\r\n id: \"fastLaneTileListPageheader\"\r\n });\r\n this.pageheadercontainerEl.inject(this.containerEl);\r\n\r\n // initialize tile list\r\n this.tileList = new Librarian.TileList({\r\n id: \"fastlane-tile-list\",\r\n container: this.containerEl,\r\n itemStyle: \"tile-list-item\",\r\n allowDrag: true,\r\n size: Librarian.fastlane.defaultViewType\r\n });\r\n this.tileList.options.targetList = window.tileList;\r\n Librarian.FastLane.tileList = this.tileList;\r\n\r\n this.tileList.testParam = \"this is the real fastlane tileList\";\r\n\r\n // set no folder selected background image\r\n this.containerEl.setStyle(\"background-image\", \"url('\" + Librarian.path.getLayoutsPath() + \"/core/fastlane/img/nofolderselected.png\" + \"')\");\r\n\r\n if(Librarian.fastlane.loadTopFolderAsDefault) {\r\n // select top folder as default\r\n var topFolder = $(\"fastlaneFolderListFoldersContainer\");\r\n if (this.options.selectedFolder){\r\n topFolder.childNodes.forEach(function(element){\r\n if (folderClicked)\r\n return;\r\n\r\n var folderName = element.get(\"text\");\r\n if (folderName == self.options.selectedFolder) {\r\n element.click();\r\n folderClicked = true;\r\n }\r\n });\r\n }\r\n if(topFolder && topFolder.childNodes[0] && !folderClicked) {\r\n topFolder.childNodes[0].click();\r\n }\r\n }\r\n \r\n }, \r\n\r\n /* Tile List Methods */\r\n\r\n renderContent: function() {\r\n\r\n // manage breadcrumb\r\n this.manageBreadcrumb(Librarian.FastLane.LoadedContent.folderInfo);\r\n\r\n // load info in tile list\r\n this.tileList.loadFromArray(Librarian.FastLane.LoadedContent.items, Librarian.FastLane.LoadedContent.categories, 1);\r\n\r\n // create pageheader\r\n Librarian.pageHeader = new Librarian.PageHeader({\r\n id: this.pageheadercontainerEl.get(\"id\"),\r\n headerType: Librarian.headerTypes.fastlane,\r\n name: \" \",\r\n useLargePageNumber: true,\r\n allowCollapse: false,\r\n getPageHeaderMenuBar: Library.getPageHeaderMenuBar, \r\n showHeaderMenu: true\r\n });\r\n\r\n this.endLoadingPhase();\r\n Librarian.FastLane.fireEvent(\"fastlane-content-view-finished-loading\");\r\n },\r\n\r\n\r\n /* Breadcrumb Methods */\r\n\r\n manageBreadcrumb: function(folderInfo) {\r\n if(folderInfo) {\r\n // prevents duplicate breadcrumb entry\r\n if(this.prevFolderInfo) {\r\n if(folderInfo.catid && this.prevFolderInfo.catid) {\r\n if(folderInfo.catid === this.prevFolderInfo.catid) { return; }\r\n } else {\r\n if(folderInfo.type === this.prevFolderInfo.type && folderInfo.title === this.prevFolderInfo.title) { return; }\r\n }\r\n }\r\n\r\n // add new entry to end of breadcrumb\r\n this.addToBreadcrumb(folderInfo);\r\n this.renderBreadcrumb();\r\n\r\n this.prevFolderInfo = folderInfo;\r\n } \r\n else {\r\n // folder type does not use breadcrumb\r\n this.clearBreadcrumb();\r\n this.renderBreadcrumb();\r\n }\r\n },\r\n\r\n clearBreadcrumb: function() {\r\n this.breadcrumb = [];\r\n this.prevFolderInfo = null;\r\n }, \r\n\r\n addToBreadcrumb: function(folderInfo) {\r\n this.breadcrumb.push(folderInfo);\r\n },\r\n\r\n renderBreadcrumb: function() {\r\n var self = this;\r\n\r\n // empty current breadcrumb element\r\n this.breadcrumbEl.empty();\r\n\r\n // build crumb for each item in breadcrumb\r\n this.breadcrumb.forEach(function(crumb, index) {\r\n \r\n new Element(\"span\", {\r\n class: \"fastLaneTileListCrumb\",\r\n text: crumb.title,\r\n events: {\r\n click: function() { self.onBreadcrumbClicked(crumb); }\r\n }\r\n }).inject(self.breadcrumbEl);\r\n\r\n if(index < (self.breadcrumb.length - 1)) {\r\n new Element(\"span\", {\r\n class: \"fastLaneTileListCrumbSpacer\",\r\n text: \">>\"\r\n }).inject(self.breadcrumbEl);\r\n }\r\n\r\n });\r\n },\r\n\r\n onBreadcrumbClicked: function(crumb) {\r\n var self = this;\r\n\r\n if(crumb.type === \"globalfavorites\") {\r\n // load clicked crumb\r\n this.clearBreadcrumb();\r\n Librarian.FastLane.loadGlobalFavorites();\r\n }\r\n else {\r\n\r\n this.breadcrumb.forEach(function(item, index) {\r\n // find which crumb needs to be loaded\r\n if(crumb.catid === item.catid && item.catid != null) {\r\n // slice breadcrumb, remove all crumbs after clicked crumb\r\n self.breadcrumb = self.breadcrumb.slice(0, index);\r\n\r\n // load clicked crumb\r\n Librarian.FastLane.loadFolder(item);\r\n }\r\n });\r\n\r\n }\r\n },\r\n \r\n\r\n /* Loading Phase Methods */\r\n\r\n startLoadingPhase: function() {\r\n // clear tile list\r\n this.tileList.reset();\r\n\r\n this.clearBreadcrumb();\r\n\r\n // show loading icon\r\n var tileListEl = $(\"module_fastLaneTileList\");\r\n if(tileListEl) {\r\n tileListEl.setStyle(\"background-image\", \"url(\\\"\" + Librarian.path.getLayoutsPath() + \"core/fastlane/img/loading-spinner.gif\" + \"\\\")\");\r\n }\r\n \r\n }, \r\n\r\n endLoadingPhase: function() {\r\n // remove loading icon\r\n var tileListEl = $(\"module_fastLaneTileList\");\r\n if(tileListEl) {\r\n tileListEl.setStyle(\"background-image\", \"none\");\r\n }\r\n\r\n }\r\n\r\n});","Librarian.Modules.Favorites = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-favorites-\",\r\n orderBy: \"DateTime\",\r\n order: \"desc\",\r\n count: 20,\r\n showDate: false,\r\n dateFormat: \"%m/%d/%Y\",\r\n action: \"preview\" // Or \"open\"\r\n },\r\n\r\n initialize: function (options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function () {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n // Create the container element and generate the URL\r\n var listEl = new Element(\"ul\").injectInside(this.containerEl),\r\n url = Librarian.path.getMethodUrl(\"getvps\") + \"&out=ujson&all=1&orderBy=\" + this.options.orderBy + \"&order=\" + this.options.order + \"&perpage=\" + this.options.count;\r\n\r\n // Use the view to get the cat id for hash linking, if it's provided\r\n if (Librarian.search.viewNameByType[Librarian.Search.outputTypes.MYFAVORITE])\r\n url += \"&vname=\" + Librarian.search.viewNameByType[Librarian.Search.outputTypes.MYFAVORITE];\r\n\r\n this.request = new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: function (json) {\r\n if (!json)\r\n return;\r\n\r\n listEl.empty();\r\n\r\n // Get the list of presentations, but make sure there are some before we continue\r\n var presentations = json.Presentations;\r\n if (!presentations || (presentations.length == 0))\r\n return;\r\n\r\n // Create a line for each of the presentations\r\n for (var i = 0; i < presentations.length; i++) {\r\n var presentation = presentations[i],\r\n date = Librarian.Utils.extractDateFromString(presentation.CreatedDate).format(this.options.dateFormat),\r\n url = '#';\r\n\r\n presentation = Librarian.Utils.getStandardContent(presentation);\r\n\r\n // Set up the hash if this is set to open\r\n if (this.options.action === \"open\") {\r\n if (presentation.PresId > 0)\r\n url = \"#presid=\" + presentation.PresId;\r\n else\r\n continue;\r\n\r\n if (presentation.ExtraFields && (typeof presentation.ExtraFields.CatID === \"number\"))\r\n url += \"&catid=\" + presentation.ExtraFields.CatID;\r\n if (presentation.PresType > Librarian.virtPresType.undefined)\r\n url += \"&prestype=\" + presentation.PresType;\r\n\r\n url += \"&type=\" + Librarian.catType.myFavorite;\r\n }\r\n\r\n // Create the list item and link for this favorite\r\n var listItemEl = new Element(\"li\", {\r\n \"class\": (this.options.classPrefix || '') + \"item\"\r\n }).injectInside(listEl);\r\n\r\n var iconEl = new Element(\"img\", {\r\n \"class\": (this.options.classPrefix || '') + \"icon\",\r\n src: Librarian.Utils.getContentTypeIcon(presentation),\r\n events: {\r\n click: function(event) {\r\n self.clickHandler(event, presentation);\r\n }\r\n }\r\n }).injectInside(listItemEl);\r\n\r\n var linkEl = new Element(\"a\", {\r\n \"class\": (this.options.classPrefix || '') + \"link\",\r\n \"text\": this.options.showDate ? (date + \" - \" + presentation.name) : presentation.name,\r\n \"title\": presentation.name,\r\n \"href\": url,\r\n \"target\": \"_download\"\r\n }).injectInside(listItemEl);\r\n\r\n // If this is set to preview, save the data and add the onClick\r\n if (this.options.action === \"preview\") {\r\n linkEl.data = Object.toLowerKeys(presentation);\r\n linkEl.addOnClick(function () {\r\n Librarian.PreviewWindow.openPreviewWindow(this.data);\r\n });\r\n }\r\n }\r\n }.bind(this),\r\n onFailure: Librarian.Utils.onFailure\r\n });\r\n this.request.send();\r\n }\r\n});","Librarian.Modules.FavoritesLinks = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"viewAll\"],\r\n\r\n options: {\r\n classPrefix: \"modules-favoriteslinks-\",\r\n label: null\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n var self = this;\r\n\r\n if (!this.wrapperEl) {\r\n return;\r\n }\r\n\r\n this.parent();\r\n \r\n this.request = new Librarian.Request.JSON({\r\n url: Librarian.path.getMethodUrl(\"getvpcc\") + \"&cid=0&out=ljson\",\r\n method: \"get\",\r\n onSuccess: function (response) {\r\n if (self.options.isSquare) {\r\n // add view all button\r\n new Element(\"span\", {\r\n \"class\": \"viewAll\",\r\n events: {\r\n click: function (event) {\r\n self.viewAll(event, response)\r\n }\r\n },\r\n text: \"View all >\"\r\n }).injectInside(self.wrapperEl);\r\n }\r\n response.presentations.forEach(function(presentation) {\r\n var linkEl = new Element(\"div\", {\r\n \"class\": \"file-link\",\r\n events: {\r\n click: function(event) {\r\n self.clickHandler(event, presentation);\r\n }\r\n }\r\n }).injectInside(self.containerEl);\r\n\r\n new Element(\"img\", {\r\n \"class\": \"file-link-icon\",\r\n src: \"/webclient/_layouts/filetypeicons/Favorites_Icon_16.png\"\r\n }).injectInside(linkEl);\r\n\r\n new Element(\"span\", {\r\n \"class\": \"file-link-text\",\r\n text: presentation.name,\r\n title: presentation.name\r\n }).injectInside(linkEl);\r\n });\r\n }\r\n });\r\n this.request.send(); \r\n }, \r\n\r\n clickHandler: function (event, file) {\r\n event.stopPropagation();\r\n Librarian.PreviewWindow.openPreviewWindow(file);\r\n },\r\n\r\n viewAll: function (event, response) {\r\n\r\n Librarian.Homepage.hide();\r\n tileList.loadFromArray(response.presentations);\r\n\r\n var itemEl = $(\"pageheader\");\r\n if (itemEl) {\r\n itemEl.show();\r\n }\r\n\r\n if(Librarian.pageheader != null) {\r\n Librarian.pageHeader.destroy();\r\n Librarian.pageHeader = null;\r\n }\r\n\r\n $('myInProgress').empty();\r\n\r\n Librarian.pageHeader = new Librarian.PageHeader({\r\n name: \"My Favorites\",\r\n showHeaderMenu: false\r\n });\r\n }\r\n});","Librarian.Modules.FeaturedContent = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"startScroll\", \"stopScroll\", \"updateNavButtons\", \"onRelatedContentLoaded\", \"renderFlags\"],\r\n\r\n options: {\r\n classPrefix: \"modules-featuredcontent-\",\r\n orderBy: null,\r\n order: \"desc\",\r\n catPath: null,\r\n catType: Librarian.catType.file,\r\n mode: \"category\", // \"files\", \"recent\", \"toprated\", or \"popular\"\r\n catId: -1,\r\n rootCat: 0,\r\n recursive: false, // Get files recursively from catPath for category mode\r\n showView: true,\r\n doNav: true,\r\n autoNavTime: 0, // Timer in ms\r\n categories: false,\r\n slides: false, // Only used by \"popular\"\r\n subHeader: false, // Add sub to tiles in the tile list\r\n navImages: true,\r\n navImageType: null,\r\n numberOfFiles: 20, // Number of files to show\r\n params: null, // Additional parameters\r\n useGetSendData: true,\r\n eventGroupOptions: {\r\n eventGroupType: Librarian.eventGroupType.campaign\r\n },\r\n relatedContentOptions: {\r\n fileId: -1,\r\n top: 20\r\n },\r\n contentType: Librarian.contentType.file,\r\n contentFilter: null,\r\n customSendData: null\r\n },\r\n\r\n tileListContEl: null,\r\n prevButtonEl: null,\r\n prevImg: null,\r\n nextButton: null,\r\n nextImg: null,\r\n\r\n homeScrollFx: null,\r\n homeTileList: null,\r\n homeScrollInterval: null,\r\n\r\n autoNavInterval: null,\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n\r\n if (!this.options.orderBy) {\r\n if (this.options.catType == Librarian.catType.globalFavorite)\r\n this.options.orderBy = \"GroupLastModDate\";\r\n else\r\n this.options.orderBy = \"FileDBImportDate\";\r\n }\r\n\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n reload: function() {\r\n // Make sure we don't destroy the wrapper,\r\n // but save the set value so we can reset it after\r\n var destroyWrapperVal = this.destroyWrapper;\r\n this.destroyWrapper = false;\r\n\r\n this.destroy();\r\n this.load();\r\n\r\n // Reset the saved value\r\n this.destroyWrapper = destroyWrapperVal;\r\n },\r\n\r\n destroy: function() {\r\n this.parent();\r\n\r\n var elements = [this.tileListContEl, this.prevButtonEl, this.prevImgEl, this.nextButtonEl, this.nextImgEl];\r\n for (var i = elements.length; i--;) {\r\n if (elements[i]) {\r\n $(elements[i]).destroy();\r\n elements[i] = null;\r\n }\r\n }\r\n\r\n if (this.homeScrollFx) {\r\n this.homeScrollFx.cancel();\r\n this.homeScrollFx = null;\r\n }\r\n\r\n if (this.homeTileList) {\r\n this.homeTileList.destroy();\r\n this.homeTileList = null;\r\n }\r\n\r\n if (this.homeScrollInterval) {\r\n clearInterval(this.homeScrollInterval);\r\n this.homeScrollInterval = null;\r\n }\r\n\r\n if (this.autoNavInterval) {\r\n clearInterval(this.autoNavInterval);\r\n this.autoNavInterval = null;\r\n }\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl || ((this.options.mode == \"category\") && !(this.options.catPath || this.options.catId > 0)))\r\n return;\r\n\r\n this.parent();\r\n\r\n if (this.request) {\r\n this.request.cancel();\r\n this.request = null;\r\n }\r\n\r\n if (this.options.doNav) {\r\n this.setupNavButtons();\r\n window.addEvent(\"resize\", this.updateNavButtons);\r\n\r\n if (this.options.autoNavTime > 0)\r\n this.startAutoScroll();\r\n }\r\n\r\n this.tileListContEl = new Element(\"div\", {\r\n \"class\": this.options.classPrefix + \"tileList\"\r\n }).inject(this.containerEl);\r\n\r\n this.homeTileList = new Librarian.TileList({\r\n size: '',\r\n id: this.options.id + \"_tileListWrapper\",\r\n wrapperClass: \"tile-list-wrapper-home\",\r\n container: this.tileListContEl,\r\n allowDrag: true,\r\n isMainPage: false,\r\n subHeader: this.options.subHeader\r\n });\r\n this.homeTileList.catType = this.options.catType;\r\n this.homeTileList.options.targetList = tileList;\r\n\r\n if (this.options.doNav) {\r\n this.homeScrollFx = new Fx.Tween(this.options.id + \"_tileListWrapper\", {\r\n duration: 240,\r\n link: \"cancel\",\r\n property: \"left\",\r\n onComplete: this.updateNavButtons.bind(this)\r\n });\r\n }\r\n\r\n if (this.options.mode == \"category\") {\r\n // If this is a Global Favorite, use the correct root Cat ID\r\n if ((this.options.catType == Librarian.catType.globalFavorite) && (this.options.rootCat == 0) && Librarian.specialCategories && Librarian.specialCategories.GlobalFavorites)\r\n this.options.rootCat = Librarian.specialCategories.GlobalFavorites.CatId;\r\n\r\n var url = null;\r\n if (this.options.catType == Librarian.catType.event)\r\n url = Librarian.path.getEventUrl(\"getegcc\");\r\n else {\r\n var method = this.options.categories ? \"getcc\" : this.options.recursive ? \"getcfi\" : \"getfiles\";\r\n if (this.options.catType == Librarian.catType.globalFavorite)\r\n method = this.options.categories ? \"getcc\" : \"getgroups\";\r\n\r\n url = Librarian.path.getMethodUrl(method);\r\n }\r\n\r\n url += \"&out=dgrid&orderby=\" + this.options.orderBy + \"&order=\" + this.options.order + \"&pcid=\" + this.options.rootCat + \"&cid=\" + this.options.catId + \"&cpath=\" + encodeURIComponent(this.options.catPath);\r\n\r\n if (Librarian.search.viewNameByType) {\r\n if ((this.options.catType == Librarian.catType.file) && Librarian.search.viewNameByType[Librarian.Search.outputTypes.FILES])\r\n url += \"&vname=\" + Librarian.search.viewNameByType[Librarian.Search.outputTypes.FILES];\r\n else if ((this.options.catType == Librarian.catType.globalFavorite) && Librarian.search.viewNameByType[Librarian.Search.outputTypes.GROUPS])\r\n url += \"&vname=\" + Librarian.search.viewNameByType[Librarian.Search.outputTypes.GROUPS];\r\n }\r\n\r\n var options = {\r\n url: url,\r\n onSuccess: function(json) {\r\n if (!json || !json.data || !json.data[0])\r\n return;\r\n\r\n if (this.options.contentFilter && typeOf(this.options.contentFilter) === \"function\") {\r\n json = this.options.contentFilter(json);\r\n }\r\n\r\n this.homeTileList.loadComplete(json);\r\n if (this.options.doNav)\r\n this.updateNavButtons();\r\n\r\n if (this.options.showView) {\r\n var catId = json.data[0].catid || 0;\r\n\r\n new Element(\"a\", {\r\n \"class\": (this.options.classPrefix || '') + \"view right\",\r\n \"html\": Librarian.Lang.getString(\"modules_featured_view\"),\r\n \"href\": \"#catid=\" + catId + \"&type=\" + this.options.catType\r\n }).injectInside(this.headerEl)\r\n .addOnClick(function() {\r\n // Call this explicitly, if not the first time clicking the 'View All' button does nothing.\r\n Librarian.Utils.onHashChange(Librarian.Utils.getHash(), true);\r\n });\r\n }\r\n }.bind(this),\r\n onFailure: Librarian.Utils.onFailure\r\n };\r\n\r\n this.request = new Librarian.Request.JSON(this.getRequestOptions(options));\r\n this.request.send();\r\n }\r\n else {\r\n var onDataLoaded = function(json) {\r\n if (!json || !json.data || !json.data[0])\r\n return;\r\n\r\n // Make sure files with fake slides have the correct fake slide count\r\n for (var i = json.data.length; i--;) {\r\n if (this.options.mode == \"relatedContent\") {\r\n var hasExpired = false,\r\n hasViewOnly = false;\r\n json.data[i].ignoreFilter = true;\r\n var flagClasses = Librarian.Utils.getFlaggingClasses(json.data[i]);\r\n for (var j = 0, len = flagClasses.length; j < len; j++) {\r\n var tooltip = null;\r\n \r\n if (flagClasses[j].contains(\"expired-flag\")) {\r\n hasExpired = true;\r\n tooltip = Librarian.Lang.getString(\"expired_content\");\r\n }\r\n if (flagClasses[j].contains(\"viewonly-flag\")) {\r\n hasViewOnly = true;\r\n tooltip = Librarian.Lang.getString(\"viewonly_content\");\r\n }\r\n self.fileInfo[i] = {\r\n expired: flagClasses[i],\r\n tooltip: tooltip\r\n };\r\n }\r\n }\r\n var ext = Librarian.Utils.getExtensionFromData(json.data[i], true);\r\n if ((json.data[i].pagecount == 0) && Librarian.extensions.hasFakeSlides(ext))\r\n json.data[i].pagecount = 1;\r\n }\r\n\r\n this.homeTileList.loadComplete(json);\r\n\r\n if (this.options.doNav)\r\n this.updateNavButtons();\r\n }.bind(this);\r\n\r\n if (this.options.contentType == Librarian.contentType.eventGroup) {\r\n var eventOptions = Object.merge({}, { maxRows: this.options.numberOfFiles}, this.options.eventGroupOptions);\r\n if (this.options.mode == \"recent\")\r\n this.request = Librarian.Utils.getNewestEventGroups(eventOptions, true, onDataLoaded);\r\n else if (this.options.mode == \"popular\")\r\n this.request = Librarian.Utils.getPopularEventGroups(eventOptions, true, onDataLoaded);\r\n }\r\n else {\r\n if (this.options.mode == \"files\")\r\n this.request = Librarian.Utils.getFilesByMethod(this.options.numberOfFiles, onDataLoaded, null, \"getfilelist\", Librarian.Search.outputTypes.FILES, null, this.options.params, this.options.useGetSendData, this.options.customSendData);\r\n if (this.options.mode == \"recent\")\r\n this.request = Librarian.Utils[this.options.catType == Librarian.catType.file ? \"getNewestFiles\" : \"getNewestGroups\"](this.options.numberOfFiles, onDataLoaded, null, null, null, this.options.useGetSendData, this.options.customSendData);\r\n else if (this.options.mode == \"toprated\")\r\n this.request = Librarian.Utils.getTopRated(this.options.numberOfFiles, this.options.catType, onDataLoaded, this.options.useGetSendData, this.options.customSendData);\r\n else if (this.options.mode == \"popular\")\r\n this.request = Librarian.Utils.getPopular(this.options.numberOfFiles, Librarian.Utils.getContentTypeFromCategoryType(this.options.catType, this.options.slides), onDataLoaded, null, null, this.options.useGetSendData, this.options.customSendData);\r\n else if (this.options.mode == \"created\") {\r\n var url = Librarian.path.getMethodUrl(\"getfiles\") + \"&out=dgrid&orderBy=fFileLastModDate&order=DESC&perpage=\" + this.options.numberOfFiles + \"&cid=\" + Librarian.specialCategories.UserApproved;\r\n\r\n this.request = new Librarian.Request.JSON(this.getRequestOptions({\r\n url: url,\r\n onSuccess: onDataLoaded\r\n }));\r\n this.request.send();\r\n }\r\n else if (this.options.mode == \"relatedContent\") {\r\n var self = this;\r\n self.fileInfo = [];\r\n var url = Librarian.path.getMethodUrl(\"getsmlrf\");\r\n url += \"&max=\" + this.options.relatedContentOptions.top;\r\n url += \"&fid=\" + this.options.relatedContentOptions.fileId;\r\n url += \"&out=dgrid\";\r\n url += \"&vname=\" + Librarian.search.viewNameByType[Librarian.Search.outputTypes.FILES];\r\n\r\n this.request = new Librarian.Request.JSON(this.getRequestOptions({\r\n url: url,\r\n onSuccess: function(json) {\r\n onDataLoaded(json);\r\n self.onRelatedContentLoaded();\r\n }\r\n }));\r\n this.request.send();\r\n }\r\n }\r\n }\r\n },\r\n\r\n onRelatedContentLoaded: function() {\r\n var tiles = this.homeTileList.wrapper.getElements(\".tile-list-items-wrapper\");\r\n var maxShown = 5;\r\n var self = this;\r\n\r\n for (var i = 0, len = tiles.length; i < len; i++) {\r\n tiles[i].flags = new Element(\"div\", { \"class\": \"tile-list-flags-wrapper \" + Librarian.Utils.getFlaggingLocation(Librarian.flagging.location) }).injectInside(tiles[i]);\r\n if (Librarian.flagging.enabled && Librarian.flagging.showOnTileList)\r\n this.renderFlags(tiles[i]);\r\n }\r\n\r\n for (var i = maxShown, len = tiles.length; i < len; i++) {\r\n if (i % maxShown === 0) {\r\n var showMoreEl = new Element(\"div\", {\r\n \"class\": \"tile-list-items-wrapper tile-list-show-more\",\r\n });\r\n var showMoreElText = new Element(\"span\", {\r\n \"class\": \"tile-list-item-image-cont tile-list-show-more-text\",\r\n \"text\": \"See More\"\r\n });\r\n\r\n showMoreEl.grab(showMoreElText);\r\n showMoreEl.addEvent(\"click\", function(el) {\r\n var siblings = this.getAllNext(\":not(.tile-list-show-more)\");\r\n var siblingCount = Math.min(maxShown, siblings.length);\r\n for (var j = 0, len = siblingCount; j < len; j++) {\r\n siblings[j].show();\r\n }\r\n\r\n var nextShowMore = this.getNext(\".tile-list-show-more\");\r\n if (nextShowMore) {\r\n nextShowMore.setStyle(\"display\", \"inline-block\");\r\n }\r\n\r\n this.destroy();\r\n\r\n if (self.options.doNav)\r\n self.updateNavButtons();\r\n\r\n });\r\n tiles[i].grab(showMoreEl, \"before\");\r\n }\r\n\r\n tiles[i].hide();\r\n }\r\n\r\n if (this.options.doNav)\r\n this.updateNavButtons();\r\n },\r\n\r\n renderFlags: function(tile) {\r\n if (tile.flags)\r\n tile.flags.empty();\r\n\r\n var flagClasses = Librarian.Utils.getFlaggingClasses(this.data);\r\n for (var i = 0, len = flagClasses.length; i < len; i++) {\r\n var tooltip = null;\r\n new Element(\"div\", {\r\n \"class\": flagClasses[i] + \" content-flag\",\r\n \"title\": tooltip\r\n }).injectInside(tile.flags);\r\n }\r\n },\r\n\r\n getRequestOptions: function(options) {\r\n // If we have a custom data function\r\n if (this.options.useGetSendData && ((typeof Library.getSendData == \"function\") || (typeof this.options.customSendData == \"function\"))) {\r\n // Get the data to send and check that it is valid\r\n var data = { cattype: this.options.catType };\r\n if ((typeof this.options.customSendData == \"function\")) {\r\n data = this.options.customSendData(data, options.url);\r\n } else {\r\n data = Library.getSendData(data, options.url);\r\n }\r\n\r\n if (data) {\r\n // If the given data is an object, stringify it\r\n if (typeof data.data == \"object\")\r\n data.data = JSON.stringify(data.data);\r\n // Convert the data to Base64\r\n if (typeof Base64 != \"undefined\")\r\n data.data = Base64.encode(data.data);\r\n\r\n // And save it\r\n options.data = data.data;\r\n options.method = \"post\";\r\n options.url = data.url;\r\n }\r\n }\r\n\r\n return options;\r\n },\r\n\r\n setupNavButtons: function() {\r\n this.prevButtonEl = new Element(\"a\", {\r\n \"class\": (this.options.classPrefix || '') + \"navButton left\"\r\n }).inject(this.containerEl);\r\n if (this.options.navImages) {\r\n this.prevImgEl = new Element(\"img\").inject(this.prevButtonEl);\r\n // TODO: Use style\r\n this.prevImgEl.src = Librarian.path.getLibraryPath() + \"img/previousLg.\" + (this.options.navImageType || \"gif\");\r\n }\r\n\r\n this.prevButtonEl.addEvent(\"mousedown\", this.startScroll.pass(false));\r\n this.prevButtonEl.addEvent(\"mouseup\", this.stopScroll);\r\n this.prevButtonEl.addEvent(\"mouseout\", this.stopScroll);\r\n\r\n this.nextButtonEl = new Element(\"a\", {\r\n \"class\": (this.options.classPrefix || '') + \"navButton right\"\r\n }).inject(this.containerEl);\r\n if (this.options.navImages) {\r\n this.nextImgEl = new Element(\"img\").inject(this.nextButtonEl);\r\n // TODO: Use style\r\n this.nextImgEl.src = Librarian.path.getLibraryPath() + \"img/nextLg.\" + (this.options.navImageType || \"gif\");\r\n }\r\n\r\n this.nextButtonEl.addEvent(\"mousedown\", this.startScroll.pass(true));\r\n this.nextButtonEl.addEvent(\"mouseup\", this.stopScroll);\r\n this.nextButtonEl.addEvent(\"mouseout\", this.stopScroll);\r\n },\r\n\r\n // Start scrolling when button is clicked\r\n startScroll: function(right) {\r\n clearInterval(this.homeScrollInterval);\r\n this.doScroll(right);\r\n\r\n // Keep scrolling while button is held\r\n this.homeScrollInterval = setInterval(function () {\r\n this.doScroll(right);\r\n }.bind(this), 250);\r\n\r\n // Stop auto-scrolling when clicking\r\n clearInterval(this.autoNavInterval);\r\n this.autoNavInterval = null;\r\n },\r\n\r\n // Stop scrolling after releasing button\r\n stopScroll: function() {\r\n clearInterval(this.homeScrollInterval);\r\n this.updateNavButtons();\r\n\r\n // Resume auto-scrolling\r\n if (this.options.autoNavTime > 0)\r\n this.startAutoScroll();\r\n },\r\n\r\n // Set timer to auto scroll on loop\r\n startAutoScroll: function() {\r\n // Don't start multiple timers\r\n if (this.autoNavInterval)\r\n return;\r\n\r\n this.autoNavInterval = setInterval(function() {\r\n this.doScroll(true, true);\r\n }.bind(this), this.options.autoNavTime);\r\n },\r\n\r\n doScroll: function(rightButton, loop) {\r\n if (!this.homeTileList)\r\n return;\r\n\r\n var tileListEl = $(this.homeTileList.wrapper);\r\n if (tileListEl && this.homeScrollFx) {\r\n var left = tileListEl.getStyle(\"left\").toInt(),\r\n // Scroll the width of 1 tile\r\n scroll = this.getTileWidth(tileListEl),\r\n width = tileListEl.getBoundingClientRect().width,\r\n parentWidth = tileListEl.getParent().getBoundingClientRect().width,\r\n leftBoundary = 0,\r\n // Determine how much larger this container is than its parent\r\n // This number (expressed as negative) is the amount that the container can be moved to the left\r\n rightBoundary = (width > parentWidth) ? (parentWidth - width) : 0,\r\n boundary = leftBoundary,\r\n boundaryFn = Math.min;\r\n\r\n if (rightButton) {\r\n // Move container to the left\r\n scroll = -scroll;\r\n boundaryFn = Math.max;\r\n boundary = rightBoundary;\r\n }\r\n\r\n if (loop && left == boundary) {\r\n // Loop back around if we are at the edge\r\n left = rightButton ? 0 : rightBoundary;\r\n }\r\n else {\r\n // Ensure that the container does not scroll past its boundary\r\n left = boundaryFn(left + scroll, boundary);\r\n }\r\n\r\n this.homeScrollFx.start(left);\r\n }\r\n },\r\n\r\n getTileWidth: function (tileListEl) {\r\n var width = 220;\r\n\r\n var tiles = tileListEl.getChildren();\r\n if (tiles && tiles[0]) {\r\n var tile = tiles[0];\r\n width = tile.getBoundingClientRect().width;\r\n\r\n // Include these properties widths when calculating the scroll size to be more accurate\r\n var properties = [\"margin\", \"padding\", \"border*Width\"],\r\n directions = [\"Left\", \"Right\"];\r\n for (var i = properties.length; i--;) {\r\n for (var j = directions.length; j--;) {\r\n var styleName = properties[i];\r\n if (styleName.contains('*'))\r\n styleName = styleName.replace('*', directions[i]);\r\n else\r\n styleName += directions[i];\r\n\r\n var styleVal = (tile.getStyle(styleName) || '0').toInt();\r\n if (styleVal > 0)\r\n width += styleVal;\r\n }\r\n }\r\n }\r\n\r\n return width;\r\n },\r\n\r\n updateNavButtons: function() {\r\n if (!this.homeTileList)\r\n return;\r\n\r\n var tileListEl = $(this.homeTileList.wrapper);\r\n if (tileListEl) {\r\n // Previous button\r\n var left = tileListEl.getStyle(\"left\").toInt(),\r\n itemEl = this.prevImgEl,\r\n buttonEl = this.prevButtonEl,\r\n disabled = (left >= 0);\r\n\r\n if (itemEl && buttonEl) {\r\n Librarian.Utils.setButtonState(itemEl, buttonEl, disabled);\r\n }\r\n else if (buttonEl)\r\n buttonEl.toggleClass(\"disabled\", disabled);\r\n \r\n\r\n // Next button\r\n itemEl = this.nextImgEl;\r\n buttonEl = this.nextButtonEl;\r\n var right = left + tileListEl.getBoundingClientRect().width -1,\r\n parentRight = tileListEl.getParent().getWidth();\r\n\r\n disabled = (parentRight >= right);\r\n if (itemEl && buttonEl) \r\n Librarian.Utils.setButtonState(itemEl, buttonEl, disabled); \r\n else if (buttonEl)\r\n buttonEl.toggleClass(\"disabled\", disabled);\r\n }\r\n }\r\n});","/* Reads data from excel file and renders chart useing the Google Charts API */\r\n\r\nLibrarian.Modules.Graph = new Class({\r\n Extends: Librarian.Modules.Module, \r\n Binds: [\"googleChartsLibraryLoaded\", \"getChartOptions\", \"getChartData\", \"drawChart\"],\r\n\r\n wrapperEl: null,\r\n\r\n options: {\r\n classPrefix: \"modules-graph-\",\r\n dataFile: null, \r\n graphType: null,\r\n id: null,\r\n\r\n // chart style options\r\n label: null,\r\n width: null, \r\n height: null, \r\n backgroundColor: null, \r\n textColor: null,\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n\r\n this.wrapperEl = wrapperEl;\r\n this.options.graphType = this.options.graphType.toLowerCase();\r\n this.options.chartLabel = this.options.label;\r\n this.options.label = null;\r\n this.data = null;\r\n\r\n this.parent(this.options, wrapperEl, null, function() {\r\n // called when module is loaded (prevents drawing of chart before element is in DOM) \r\n\r\n if($(\"google-charts-library\")) {\r\n // library already loaded\r\n this.googleChartsLibraryLoaded();\r\n } else {\r\n // dynamicaly load google charts source files\r\n this.loadScript(\"https://www.gstatic.com/charts/loader.js\", this.googleChartsLibraryLoaded);\r\n }\r\n\r\n // set name to apply CSS rule to all graph modules\r\n wrapperEl.set(\"name\", \"module_graph_\" + this.options.id);\r\n });\r\n \r\n }, \r\n\r\n loadScript: function(src, callback) {\r\n // create new script element and append to head\r\n var headEl = document.getElementsByTagName(\"head\")[0];\r\n var newScript = document.createElement(\"script\");\r\n\r\n newScript.id = \"google-charts-library\";\r\n newScript.type = \"text/javascript\";\r\n newScript.src = src;\r\n newScript.onload = callback;\r\n headEl.appendChild(newScript);\r\n },\r\n\r\n googleChartsLibraryLoaded: function() {\r\n\r\n var self = this;\r\n\r\n try{\r\n // load google chart packages\r\n google.charts.load('current', { 'packages': ['corechart', 'line'] });\r\n\r\n // run callback when packages finish loading\r\n google.charts.setOnLoadCallback(self.getChartData);\r\n\r\n } catch(event) {\r\n\r\n if(event.name == \"ReferenceError\") {\r\n // this can happen when two graph modules are loaded at the same time\r\n // the charts loader script element is set, but has not finished loading\r\n setTimeout(function() {\r\n self.googleChartsLibraryLoaded();\r\n }, 250);\r\n }\r\n\r\n }\r\n\r\n },\r\n\r\n getChartData: function() {\r\n\r\n var self = this;\r\n var url = \"default.ashx?m=getslidetext&out=ujson&snum=1&fname=\" + this.options.dataFile;\r\n var request = new XMLHttpRequest();\r\n\r\n request.onreadystatechange = function() {\r\n if (request.readyState == 4 && request.status == 200) {\r\n\r\n // parse json\r\n var content = Librarian.Utils.getArrayFromCSV(JSON.parse(request.responseText).Text);\r\n\r\n // convert values from string to numbers\r\n content.forEach(function(item, index) {\r\n if(index === 0) { return; }\r\n content[index][1] = Number(content[index][1]);\r\n });\r\n\r\n // feed data to google charts\r\n self.data = new google.visualization.DataTable();\r\n self.data.addColumn(\"string\", content[0][0]);\r\n self.data.addColumn(\"number\", content[0][1]);\r\n self.data.addRows(content.slice(1, content.length));\r\n\r\n // draw chart\r\n self.drawChart(); \r\n }\r\n };\r\n\r\n request.open(\"GET\", url, true);\r\n request.send(null);\r\n\r\n },\r\n\r\n getChartOptions: function() {\r\n\r\n //TODO: add json file option to load chart options from file\r\n\r\n // set configurable options set in layout xml file\r\n var chartLabel = this.options.chartLabel || \"\",\r\n backgroundColor = this.options.backgroundColor || \"transparent\",\r\n textColor = this.options.textColor || \"#fff\",\r\n width = this.options.width || 320,\r\n height = this.options.height || 320;\r\n\r\n return { \r\n // configurable options\r\n 'title': chartLabel,\r\n 'backgroundColor': { 'fill': backgroundColor },\r\n 'width': width,\r\n 'height': height,\r\n\r\n 'titleTextStyle': {\r\n 'color': textColor, \r\n 'fontSize': '37',\r\n 'fontName': 'Roboto',\r\n 'bold': false,\r\n },\r\n\r\n 'hAxis': {\r\n 'textStyle': { 'color': textColor }\r\n },\r\n\r\n 'vAxis': {\r\n 'textStyle': { 'color': textColor }\r\n },\r\n\r\n // non-configurable options\r\n 'legend': 'none',\r\n 'is3D': true,\r\n };\r\n\r\n },\r\n\r\n drawChart: function() {\r\n\r\n // used to resovle string of graphType to constructor\r\n var graphTypes = {\r\n piechart: google.visualization.PieChart, \r\n barchart: google.visualization.BarChart,\r\n columnchart: google.visualization.ColumnChart,\r\n };\r\n\r\n // set chart settings\r\n var chartOptions = this.getChartOptions();\r\n\r\n // draw graph \r\n var chartConstructor = graphTypes[this.options.graphType];\r\n\r\n if(!chartConstructor) {\r\n Librarian.Utils.log(\"Graph Module Error: Invalid graphType value\");\r\n return;\r\n }\r\n\r\n var chart = new chartConstructor(this.wrapperEl);\r\n chart.draw(this.data, chartOptions);\r\n \r\n }\r\n\r\n});\r\n\r\n","Librarian.Modules.HTML = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-html-\",\r\n fileName: null,\r\n html: null,\r\n htmlFile: null,\r\n callback: null,\r\n onClick: null,\r\n clickEnabled: null,\r\n popupHeight: 350,\r\n editable: false,\r\n },\r\n\r\n title: null,\r\n html: null,\r\n editor: null,\r\n\r\n initialize: function (options, wrapperEl) {\r\n this.setOptions(options);\r\n var self = this;\r\n if (this.options.clickEnabled == \"true\") {\r\n this.options.onClick = function () {\r\n var windowPopup = new Librarian.Popup({ htmlFile: \"popup.html\", height: self.options.popupHeight, useIframe: false });\r\n };\r\n }\r\n\r\n // add click handler to module\r\n if (this.options.onClick)\r\n wrapperEl.addOnClick(this.options.onClick);\r\n\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function () {\r\n if (!this.wrapperEl || (!this.options.fileName && !this.options.html && !this.options.htmlFile))\r\n return;\r\n\r\n this.parent();\r\n\r\n if (typeof this.options.fileName == \"string\") {\r\n // Generate the URL\r\n var url = Librarian.path.getMethodUrl(\"getslidetext\") + \"&out=ujson&snum=1&fname=\" + encodeURIComponent(this.options.fileName);\r\n\r\n this.request = new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: function (json) {\r\n if (!json)\r\n return;\r\n\r\n this.onLoadHtml(json.Text);\r\n }.bind(this),\r\n onFailure: Librarian.Utils.onFailure\r\n });\r\n this.request.send();\r\n }\r\n else if (typeof this.options.htmlFile == \"string\") {\r\n this.request = new Librarian.Request.HTML({\r\n url: this.options.htmlFile,\r\n onSuccess: function (nodes, elements, html) {\r\n if (!html)\r\n return;\r\n\r\n this.onLoadHtml(html);\r\n }.bind(this)\r\n }).send();\r\n }\r\n else if (typeof this.options.html == \"string\")\r\n this.onLoadHtml(this.options.html);\r\n },\r\n\r\n onLoadHtml: function (html) {\r\n this.html = html;\r\n this.setHtml(html);\r\n\r\n if (this.options.editable && Librarian.Utils.isUserMemberOfGroup(\"Administrators\"))\r\n this.setupEditor();\r\n\r\n if (typeof this.options.callback == \"function\")\r\n this.options.callback(this.containerEl);\r\n },\r\n\r\n setHtml: function (html) {\r\n this.containerEl.set(\"html\", html);\r\n },\r\n\r\n // #region Editing\r\n\r\n setupEditor: function () {\r\n // Remove any editors that were previously using this ID, to prevent collisions\r\n if (this.containerEl.id)\r\n tinyMCE.remove(\"#\" + this.containerEl.id);\r\n\r\n var options = Librarian.Utils.getTinyMCEOptions({\r\n target: this.containerEl,\r\n plugins: \"lists advlist code link image hr\", // casechange checklist formatpainter\", TODO Add these if we purchase the plugins\r\n toolbar: \"fontfamily bold italic underline forecolor backcolor fontsize | alignleft aligncenter alignright indent outdent bullist numlist | link insertimage removeformat code\",\r\n inline: true,\r\n setup: function (editor) {\r\n this.editor = editor;\r\n\r\n Librarian.Utils.addTinyMCEButton(editor, \"insertimage\");\r\n editor.on(\"init\", function () {\r\n editor.hide();\r\n });\r\n }.bind(this)\r\n });\r\n\r\n tinyMCE.init(options);\r\n\r\n this.setupEditButtons();\r\n },\r\n\r\n setupEditButtons: function () {\r\n if (!this.headerEl)\r\n return;\r\n\r\n var buttonCont = new Element(\"div\", {\r\n \"class\": this.options.classPrefix + \"edit-buttons\"\r\n }).injectInside(this.headerEl);\r\n\r\n var editButton = new Element(\"span\", {\r\n \"class\": this.options.classPrefix + \"edit ico-edit\"\r\n }).injectInside(buttonCont)\r\n .addOnClick(this.edit, this);\r\n\r\n var cancelButton = new Element(\"span\", {\r\n \"class\": this.options.classPrefix + \"cancel ico-cancel\"\r\n }).injectInside(buttonCont)\r\n .addOnClick(this.cancel, this);\r\n\r\n var saveButton = new Element(\"span\", {\r\n \"class\": this.options.classPrefix + \"save ico-save\"\r\n }).injectInside(buttonCont)\r\n .addOnClick(this.save, this);\r\n },\r\n\r\n edit: function () {\r\n this.enableEditing();\r\n\r\n if (this.titleEl)\r\n this.title = this.titleEl.get(\"text\");\r\n },\r\n\r\n cancel: function () {\r\n this.disableEditing();\r\n\r\n this.setHtml(this.html);\r\n if (this.titleEl)\r\n this.titleEl.set(\"text\", this.title);\r\n },\r\n\r\n save: function () {\r\n this.disableEditing();\r\n\r\n this.html = this.containerEl.get(\"html\");\r\n if (this.titleEl)\r\n this.title = this.titleEl.get(\"text\");\r\n\r\n if (this.options.eventHandler) {\r\n var data = {\r\n title: this.title,\r\n html: this.html\r\n }\r\n\r\n this.options.eventHandler.fireEvent(\"updateModule\", [this, \"HTML\", data]);\r\n }\r\n },\r\n\r\n enableEditing: function () {\r\n this.wrapperEl.addClass(\"editing\");\r\n this.editor.show();\r\n\r\n if (this.titleEl)\r\n this.titleEl.set(\"contenteditable\", \"true\");\r\n },\r\n\r\n disableEditing: function () {\r\n this.wrapperEl.removeClass(\"editing\");\r\n this.editor.hide();\r\n\r\n if (this.titleEl)\r\n this.titleEl.set(\"contenteditable\", \"false\");\r\n }\r\n\r\n // #endregion\r\n});","Librarian.Modules.iFrame = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"onLoadIframe\", \"onResize\"],\r\n\r\n options: {\r\n classPrefix: \"modules-iframe-\",\r\n src: null,\r\n removePadding: true,\r\n type: null, // This will override options, possible values: collaboration, dashboard, activityreports, salesreports, portaltracker\r\n args: null,\r\n language: \"en\",\r\n title: null\r\n },\r\n\r\n iFrameEl: null,\r\n oldPadding: null,\r\n\r\n typeOptions: {\r\n \"collaboration\": {\r\n desc: \"collaboration\",\r\n src: function(topicId) {\r\n return Librarian.path.getAppPath(\"collaboration\") + \"/collaboration.htm?libName=\" + Librarian.path.getUrlLibraryName() + \"#topicid=\" + topicId;\r\n }\r\n },\r\n \"activityreports\": {\r\n desc: \"activity reports\",\r\n src: Librarian.path.getAppPath(\"reports\") + \"/activities.htm?libName=\" + Librarian.path.getUrlLibraryName()\r\n },\r\n \"salesreports\": {\r\n desc: \"sales reports\",\r\n src: Librarian.path.getAppPath(\"reports\") + \"/sales.htm?libName=\" + Librarian.path.getUrlLibraryName()\r\n },\r\n \"reportsdashboard\": {\r\n desc: \"reports dashboard\",\r\n src: Librarian.path.getAppPath(\"reports\") + \"/dashboard.htm?libName=\" + Librarian.path.getUrlLibraryName()\r\n },\r\n \"contentanalytics\": {\r\n desc: \"content analytics\",\r\n src: Librarian.path.getAppPath(\"contentanalytics\") + \"/index.html?libName=\" + Librarian.path.getUrlLibraryName()\r\n },\r\n\r\n \"learn\": {\r\n desc: \"learn\",\r\n src: Librarian.path.getAppPath(\"learn\") + \"/index.html?libName=\" + Librarian.path.getUrlLibraryName()\r\n },\r\n\r\n \"popupmanager\": {\r\n desc: \"popup manager\",\r\n src: Librarian.path.getAppPath(\"popupmanager\") + \"/index.html?libName=\" + Librarian.path.getUrlLibraryName()\r\n },\r\n\r\n \"invitations\": {\r\n desc: \"events manager\",\r\n src: Librarian.path.getAppPath(\"invitations\") + \"/index.html?libName=\" + Librarian.path.getUrlLibraryName()\r\n },\r\n\r\n \"contentanalyticsdemo\": {\r\n desc: \"content analytics demo\",\r\n src: function() {\r\n var auth = \"Hash YXVzZXI6T2FDeGI3VTNsVkZpOVg0RWpBWWxO\"; // AUser\r\n\r\n return \"https://demo.accent-technologies.com/webclient/apps/contentanalytics/index.html?libName=adl&auth=\" + auth;\r\n }\r\n },\r\n\r\n \"portaltracker\": {\r\n desc: \"portral tracker\",\r\n src: Librarian.path.getAppPath(\"tracking\") + \"/dashboard.htm?libName=\" + Librarian.path.getUrlLibraryName()\r\n },\r\n \"portaltracker2\": {\r\n desc: \"portral tracker\",\r\n src: function(sessionId) {\r\n return Librarian.path.getAppPath(\"portal-tracker\") + \"/dashboard.htm?libName=\" + Librarian.path.getUrlLibraryName() + \"#sesid=\" + sessionId;\r\n }\r\n },\r\n \"dynamicdatamanager\": {\r\n desc: \"dynamic data manager\",\r\n src: Librarian.path.getAppPath(\"dynamicdatamanager\") + \"/dashboard.htm?libName=\" + Librarian.path.getUrlLibraryName()\r\n },\r\n \"pages\": {\r\n desc: \"pages\",\r\n src: function(options) {\r\n var url = window.location.href;\r\n var hashIndex = url.indexOf(\"#\");\r\n if (hashIndex > 0)\r\n url = url.substring(0, hashIndex);\r\n\r\n options.baseUrl = url;\r\n\r\n var params = Object.toQueryString(options);\r\n\r\n return Librarian.path.getAppPath(\"pages\") + \"/index.html?libName=\" + Librarian.path.getUrlLibraryName() + '&' + params;\r\n }\r\n },\r\n\r\n \"magic\": {\r\n desc: \"accent magic\",\r\n src: Librarian.path.getAppPath(\"magic\") + \"/index.html?libName=\" + Librarian.path.getUrlLibraryName()\r\n }\r\n },\r\n\r\n initialize: function (options, wrapperEl) {\r\n if (options.type) {\r\n options.type = options.type.toLowerCase();\r\n if (this.typeOptions[options.type]) {\r\n options = Object.merge({}, this.typeOptions[options.type], options);\r\n if (options.reportsSubTab) {\r\n options.src = options.src + \"&subtab=\" + options.reportsSubTab;\r\n }\r\n }\r\n }\r\n\r\n this.setOptions(options);\r\n this.parent(options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n if (this.options.removePadding) {\r\n var mainPadEl = $(\"mainPanel_pad\");\r\n if (mainPadEl) {\r\n this.oldPadding = mainPadEl.style.padding;\r\n mainPadEl.style.padding = \"0\";\r\n }\r\n }\r\n\r\n this.parent();\r\n\r\n this.loadIframe();\r\n },\r\n\r\n loadIframe: function() {\r\n if (!this.containerEl)\r\n return;\r\n\r\n this.loadingImage = new Element(\"div\", {\r\n \"class\": \"iFrameLoadingImageSpinner\"\r\n }).inject(this.containerEl);\r\n\r\n var src = this.getSrc();\r\n\r\n this.iFrameEl = new Element(\"iframe\", {\r\n \"class\": (this.options.classPrefix || '') + \"iframe\",\r\n \"id\": this.options.id + \"_iframe\",\r\n \"src\": src,\r\n \"aria-label\": this.options.desc\r\n }).injectInside(this.containerEl);\r\n\r\n if (this.iFrameEl.attachEvent) {\r\n this.iFrameEl.attachEvent('onload', this.onLoadIframe);\r\n }\r\n else {\r\n this.iFrameEl.addEventListener('load', this.onLoadIframe, false);\r\n }\r\n\r\n if (this.options.css)\r\n this.iFrameEl.setStyles(this.options.css);\r\n\r\n if (this.options.height == \"100%\") {\r\n this.onResize();\r\n window.addEvent(\"resize\", this.onResize);\r\n }\r\n },\r\n\r\n onLoadIframe: function() {\r\n if (this.loadingImage) {\r\n this.loadingImage.destroy();\r\n }\r\n },\r\n\r\n getSrc: function() {\r\n var src = this.options.src,\r\n args = this.options.args;\r\n\r\n if (typeof src == \"function\") {\r\n if (typeOf(args) == \"array\")\r\n src = src.apply(this, args);\r\n else\r\n src = src(args);\r\n } \r\n else if (typeof args == \"object\" && args != null) {\r\n src += '&' + Object.toQueryString(args);\r\n }\r\n\r\n if (!src.contains(\"&sname=\") && Librarian.sessionName)\r\n src += \"&sname=\" + Librarian.sessionName;\r\n\r\n src += \"&lang=\" + this.options.language + '&' + String.uniqueID();\r\n\r\n return src;\r\n },\r\n\r\n onResize: function () {\r\n var wrapperEl = $(\"pageWrapper\");\r\n if (wrapperEl) {\r\n this.containerEl.setStyle(\"height\", wrapperEl.getHeight() + \"px\");\r\n this.containerEl.setStyle(\"width\", \"100%\");\r\n }\r\n },\r\n\r\n destroy: function () {\r\n if (this.oldPadding != null) {\r\n var mainPadEl = $(\"mainPanel_pad\");\r\n if (mainPadEl)\r\n mainPadEl.style.padding = this.oldPadding;\r\n }\r\n\r\n if (this.iFrameEl) {\r\n $(this.iFrameEl).destroy();\r\n this.iFrameEl = null;\r\n }\r\n }\r\n});","Librarian.Modules.Image = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-image-\",\r\n imagePath: null,\r\n fromLibrary: null, \r\n alt: null,\r\n onClick: null,\r\n onPostRender: null, \r\n link: null,\r\n label: null\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl || !this.options.imagePath)\r\n return;\r\n\r\n // get path in library\r\n var path = this.options.imagePath;\r\n if (this.options.fromLibrary)\r\n path = Librarian.path.getLibraryPath() + path;\r\n\r\n this.parent();\r\n\r\n // destroy old container element\r\n if (this.containerEl) {\r\n $(this.containerEl).destroy();\r\n this.containerEl = null;\r\n }\r\n\r\n // build image element\r\n var imageEl = new Element(\"img\", {\r\n \"class\": (this.options.classPrefix || '') + \"image\",\r\n \"alt\": this.options.alt || '',\r\n \"src\": path\r\n }).injectInside(this.wrapperEl);\r\n\r\n //add label if specified\r\n if(this.options.label){\r\n var labelEl = new Element(\"span\",{\r\n \"class\": (this.options.classPrefix || '') + \"label\"\r\n }).injectInside(this.wrapperEl);\r\n labelEl.set(\"text\", this.options.label);\r\n }\r\n\r\n // if link to open specified\r\n if(this.options.link) {\r\n var self = this;\r\n this.options.onClick = function() {\r\n var newtab = window.open(self.options.link, '_blank');\r\n newtab.focus();\r\n };\r\n imageEl.setStyles({\"cursor\": \"pointer\"});\r\n }\r\n\r\n // add click handler\r\n if(typeof this.options.onClick == \"function\") {\r\n imageEl.addOnClick(this.options.onClick);\r\n }\r\n\r\n // call postrender callback\r\n if (this.options.onPostRender)\r\n this.options.onPostRender(this.wrapperEl, this.options.onClick);\r\n\r\n }\r\n});","Librarian.Modules.ImageLink = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-imagelink-\",\r\n imagePath: null,\r\n imageAlt: null,\r\n onClick: null,\r\n onPostRender: null,\r\n header: null,\r\n message: null,\r\n clickImage: false,\r\n linkText: null\r\n },\r\n\r\n initialize: function (options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function () {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n if (this.containerEl) {\r\n $(this.containerEl).destroy();\r\n this.containerEl = null;\r\n }\r\n\r\n if (this.options.imagePath) {\r\n var imageEl = new Element(\"img\", {\r\n \"class\": (this.options.classPrefix || '') + \"image\",\r\n \"alt\": this.options.alt || '',\r\n \"src\": this.options.imagePath\r\n }).injectInside(this.wrapperEl);\r\n if (this.options.clickImage && typeof this.options.onClick == \"function\")\r\n imageEl.addOnClick(this.options.onClick);\r\n }\r\n\r\n if (this.options.header) {\r\n new Element(\"div\", {\r\n \"class\": (this.options.classPrefix || '') + \"title\",\r\n \"text\": this.options.header || ''\r\n }).injectInside(this.wrapperEl);\r\n }\r\n\r\n if (this.options.message) {\r\n new Element(\"div\", {\r\n \"class\": (this.options.classPrefix || '') + \"message\",\r\n \"html\": this.options.message || ''\r\n }).injectInside(this.wrapperEl);\r\n }\r\n\r\n if (this.options.linkText) {\r\n var linkEl = new Element(\"div\", {\r\n \"class\": (this.options.classPrefix || '') + \"link\",\r\n \"html\": this.options.linkText || ''\r\n }).injectInside(this.wrapperEl);\r\n if (typeof this.options.onClick == \"function\")\r\n linkEl.addOnClick(this.options.onClick);\r\n }\r\n\r\n if (this.options.onPostRender)\r\n this.options.onPostRender(this.wrapperEl, this.options.onClick);\r\n }\r\n});","Librarian.Modules.JSON = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"load\", \"onDataLoaded\", \"onBeforeRenderItem\", \"renderItem\", \"renderSubItem\"],\r\n\r\n options: {\r\n classPrefix: \"modules-json-\",\r\n url: \"\",\r\n onBeforeRenderItem: null,\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n\r\n if ((this.options.url || '').trim().length == 0)\r\n throw \"URL parameter is required\";\r\n\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n new Librarian.Request.JSON({\r\n method: \"get\",\r\n url: Librarian.path.getMethodUrl(\"prx\") + \"&out=text&url=\" + encodeURIComponent(this.options.url),\r\n onSuccess: this.onDataLoaded,\r\n onFailure: Librarian.Utils.onFailure\r\n }).send();\r\n },\r\n\r\n onDataLoaded: function(data) {\r\n if (!data)\r\n return;\r\n\r\n var contEl = $(this.containerEl);\r\n if (!contEl)\r\n return;\r\n\r\n contEl.empty();\r\n\r\n var listEl = new Element(\"ul\").injectInside(contEl);\r\n if (typeOf(data) != \"array\")\r\n this.renderItem(data, listEl);\r\n else {\r\n for (var i = 0, length = data.length; i < length; i++)\r\n this.renderItem(data[i], listEl);\r\n }\r\n },\r\n\r\n onBeforeRenderItem: function(item) {\r\n if (typeof this.options.onBeforeRenderItem == \"function\")\r\n return this.options.onBeforeRenderItem(item);\r\n return true;\r\n },\r\n\r\n renderItem: function(item, listEl) {\r\n if (!item)\r\n return;\r\n\r\n var header = (item.header || '').trim();\r\n if (header.length > 0) {\r\n var headerEl = new Element(\"li\", {\r\n \"class\": \"rss-feed\"\r\n }).injectInside(listEl);\r\n new Element(\"h2\", {\r\n \"text\": header\r\n }).injectInside(headerEl);\r\n }\r\n\r\n if (!item.items)\r\n return;\r\n\r\n for (var i = 0, length = item.items.length; i < length; i++)\r\n this.renderSubItem(item.items[i], listEl);\r\n },\r\n\r\n renderSubItem: function(item, listEl) {\r\n if (!item || !this.onBeforeRenderItem(item))\r\n return;\r\n\r\n var contEl = new Element(\"li\", {\r\n \"class\": \"rss-feed\"\r\n }).injectInside(listEl);\r\n\r\n var headerEl = new Element(\"h2\").injectInside(contEl);\r\n var linkEl = new Element(\"a\", {\r\n \"href\": item.link || '#',\r\n \"target\": \"_blank\"\r\n }).injectInside(headerEl);\r\n new Element(\"span\", {\r\n \"class\": \"rss-title content-header\",\r\n \"text\": (item.title || '').trim()\r\n }).injectInside(linkEl);\r\n\r\n var subTitle = (item.subTitle || '').trim();\r\n if (subTitle.length > 0) {\r\n new Element(\"div\", {\r\n \"class\": \"rss-date\",\r\n \"text\": subTitle\r\n }).injectInside(headerEl);\r\n }\r\n\r\n var bodyEl = new Element(\"div\", {\r\n \"class\": \"rss-content\"\r\n }).injectInside(contEl);\r\n var nodeEl = new Element(\"div\", {\r\n \"class\": \"node-body article-body\"\r\n }).injectInside(bodyEl);\r\n new Element(\"p\", {\r\n \"text\": (item.text || '').trim()\r\n }).injectInside(nodeEl);\r\n }\r\n});","Librarian.Modules.Link = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-link-\",\r\n link: null,\r\n label: null,\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n // add onClick function to wrapperEl open new tab\r\n this.wrapperEl.addClass(\"nav-wrapper\");\r\n this.wrapperEl.addOnClick(function() {\r\n var newTab = window.open(this.options.link, '_blank');\r\n newTab.focus();\r\n }.bind(this));\r\n \r\n var label = (this.options.label || '').trim();\r\n if (label.length > 0) {\r\n new Element(\"div\", {\r\n \"class\": \"nav-label\",\r\n \"html\": label\r\n }).injectInside(this.containerEl);\r\n }\r\n }\r\n});","Librarian.Modules.Links = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-links-\",\r\n links: [],\r\n fileName: null,\r\n text: null,\r\n type: \"href\"\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl || !this.options.links)\r\n return;\r\n\r\n var text = this.options.text;\r\n\r\n this.parent();\r\n var listEl = new Element(\"ul\", {\r\n \"class\": (this.options.classPrefix || '') + \"list\"\r\n }).injectInside(this.containerEl);\r\n\r\n if (typeof this.options.fileName == \"string\") {\r\n // Generate the URL\r\n var url = Librarian.path.getMethodUrl(\"getslidetext\") + \"&out=ujson&snum=1&fname=\" + encodeURIComponent(this.options.fileName);\r\n\r\n this.request = new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: function(json) {\r\n if (!json)\r\n return;\r\n text = json.Text;\r\n new Element(\"div\", {\r\n \"html\": Librarian.Lang.getString(text),\r\n \"class\": (this.options.classPrefix || '') + \"text\"\r\n }).injectTop(this.containerEl);\r\n }.bind(this),\r\n onFailure: Librarian.Utils.onFailure\r\n });\r\n this.request.send();\r\n }\r\n\r\n if (text) {\r\n if (typeof text == \"string\" && text.length > 0) {\r\n new Element(\"div\", {\r\n \"html\": Librarian.Lang.getString(text),\r\n \"class\": (this.options.classPrefix || '') + \"text\"\r\n }).injectTop(this.containerEl);\r\n }\r\n }\r\n\r\n for (var i = 0; i < this.options.links.length; i++) {\r\n var link = this.options.links[i];\r\n\r\n if (Object.keys(link).length == 0)\r\n continue;\r\n\r\n var linkEl = new Element(\"li\", {\r\n \"class\": (this.options.classPrefix || '') + \"link \" + (link.className || '')\r\n }).injectInside(listEl);\r\n\r\n if (link.iconHTML) {\r\n new Element(\"span\", {\r\n \"html\": link.iconHTML\r\n }).injectInside(linkEl);\r\n }\r\n\r\n new Element(\"span\", {\r\n \"html\": link.name\r\n }).injectInside(linkEl);\r\n\r\n if (link.overlayClass) {\r\n new Element(\"div\", {\r\n 'class': link.overlayClass\r\n }).injectInside(linkEl);\r\n }\r\n\r\n if (this.options.type == \"href\") {\r\n if (typeof link.onClick == \"function\")\r\n linkEl.addOnClick(link.onClick);\r\n else if (typeof link.href == \"string\") {\r\n linkEl.href = link.href;\r\n linkEl.target = link.target || \"_blank\";\r\n linkEl.addOnClick(function() {\r\n window.open(this.href, this.target);\r\n });\r\n }\r\n } \r\n else if (this.options.type == \"html\") {\r\n this.addOnClick(link.fileName, link.name, linkEl); \r\n }\r\n }\r\n },\r\n\r\n addOnClick: function(fileName, name, linkEl) {\r\n Librarian.Utils.getSlideText({ filename:fileName, slidenumber: 0 }, function(data) {\r\n linkEl.addOnClick(function() {\r\n new Librarian.HTMLWindow({\r\n title: name,\r\n html: data.Text\r\n });\r\n });\r\n });\r\n }\r\n});","Librarian.Modules.MyBookmarks = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"viewAll\", \"prepCartItem\"],\r\n\r\n options: {\r\n classPrefix: \"modules-bookmarks-\",\r\n label: null,\r\n detailed: false,\r\n showGetLink: false,\r\n showShareLink: true,\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n var self = this;\r\n\r\n if (!this.wrapperEl) {\r\n return;\r\n }\r\n\r\n this.parent();\r\n\r\n var url = Librarian.path.getMethodUrl(\"getbmitms\") + \"&cid=0&out=ljson&fvname=\" + Librarian.search.viewNameByType[Librarian.Search.outputTypes.FILES];\r\n \r\n this.request = new Librarian.Request.JSON({\r\n url: url,\r\n method: \"get\",\r\n onSuccess: function (response) {\r\n if (self.options.viewAll) {\r\n // add view all button\r\n new Element(\"span\", {\r\n \"class\": \"viewAll\",\r\n events: {\r\n click: function (event) {\r\n Librarian.MyFiles.filter = {};\r\n Librarian.MyFiles.filter[\"BookmarkedFiles\"] = true;\r\n\r\n Library.myFilesClicked();\r\n Librarian.Init.toggleSideColumn(sideColumn, true, false);\r\n }\r\n },\r\n text: \"View all\"\r\n }).injectInside(self.headerEl);\r\n }\r\n response.forEach(function(item) {\r\n var linkEl = new Element(\"div\", {\r\n \"class\": \"file-link\", \r\n }).injectInside(self.containerEl);\r\n\r\n new Element(\"img\", {\r\n \"class\": \"file-link-icon\",\r\n src: Librarian.Utils.getContentTypeIcon(item)\r\n }).injectInside(linkEl);\r\n\r\n new Element(\"span\", {\r\n \"class\": \"file-link-text\",\r\n text: item.name,\r\n title: item.name,\r\n events: {\r\n click: function(event) {\r\n self.clickHandler(event, item);\r\n }\r\n }\r\n }).injectInside(linkEl);\r\n\r\n if (self.options.detailed) {\r\n var bookmarkEl = new Element(\"div\", {\r\n \"class\": \"content-bookmark\"\r\n }).injectInside(linkEl);\r\n\r\n Librarian.Bookmarks.getBookmarkId(item.contentid,\r\n item.contenttype,\r\n function(bookmarkId) {\r\n if (bookmarkId > 0) {\r\n bookmarkEl.addClass(\"bookmarked\");\r\n bookmarkEl.bookmarkId = bookmarkId;\r\n }\r\n });\r\n\r\n var threeDotEl = new Element(\"div\", {\r\n \"class\": \"content-menu-icon\"\r\n }).injectInside(linkEl);\r\n\r\n var menuEl = new Element(\"div\", {\r\n \"class\": \"content-menu-wrapper\"\r\n }).injectInside(linkEl);\r\n\r\n var downloadEl = new Element(\"div\", {\r\n \"text\": \"Download\"\r\n }).injectInside(menuEl);\r\n\r\n var cartEl = new Element(\"div\", {\r\n \"text\": \"Add File\"\r\n }).injectInside(menuEl);\r\n\r\n if (self.options.showShareLink) {\r\n var shareEl = new Element(\"div\", {\r\n \"text\": \"Share\"\r\n }).injectInside(menuEl);\r\n }\r\n\r\n var viewEl = new Element(\"div\", {\r\n \"text\": \"View in Library\"\r\n }).injectInside(menuEl);\r\n\r\n if (self.options.showGetLink) {\r\n var getLinkEl = new Element(\"div\", {\r\n \"text\": \"Get Link\"\r\n }).injectInside(menuEl);\r\n\r\n getLinkEl.addOnClick(function () {\r\n Librarian.Utils.getLink(item);\r\n });\r\n }\r\n\r\n menuEl.hide();\r\n\r\n threeDotEl.addEvent('mouseenter', function() {\r\n menuEl.show();\r\n menuEl.removeClass(\"open-above\");\r\n\r\n var menuRect = menuEl.getBoundingClientRect();\r\n var contRect = self.containerEl.getBoundingClientRect();\r\n var openAbove = menuRect.bottom > contRect.bottom;\r\n \r\n menuEl.toggleClass(\"open-above\", openAbove);\r\n\r\n menuRect = menuEl.getBoundingClientRect();\r\n var openLeft = menuRect.top < contRect.top;\r\n\r\n menuEl.toggleClass(\"open-left\", (openAbove && openLeft));\r\n\r\n threeDotEl.addClass(\"active\");\r\n });\r\n\r\n menuEl.addEvent('mouseenter', function() {\r\n menuEl.show();\r\n threeDotEl.addClass(\"active\");\r\n });\r\n\r\n threeDotEl.addEvent('mouseleave', function() {\r\n menuEl.hide();\r\n threeDotEl.removeClass(\"active\");\r\n });\r\n\r\n menuEl.addEvent('mouseleave', function() {\r\n menuEl.hide();\r\n threeDotEl.removeClass(\"active\");\r\n });\r\n\r\n downloadEl.addOnClick(function () {\r\n Library.downloadData(item);\r\n });\r\n\r\n cartEl.addOnClick(function () {\r\n // Can't add to the cart if we don't have a cart\r\n if (!Librarian.userCart)\r\n return;\r\n\r\n var cartItem = self.prepCartItem(item, 1),\r\n onComplete = function(success, notifyType) {\r\n Librarian.Utils.showCartNotification(cartItem, notifyType, success);\r\n\r\n // Update the checkboxes on the main page\r\n Librarian.Utils.updateAllCheckboxes();\r\n\r\n Librarian.Cart.onChange();\r\n\r\n // If we're in the cart and we just removed ourselves,\r\n // close the window to prevent switching errors.\r\n if (success && (notifyType == Librarian.cartNotificationTypes.removed) && this.isInCart)\r\n this.close();\r\n }.bind(this);\r\n\r\n // If it's already in the cart, prompt the user to remove it\r\n if (Librarian.userCart.isInCart(cartItem, true)) {\r\n Librarian.userCart.removeFromCart(item, null, null, null, null, function() {\r\n onComplete(!Librarian.userCart.isInCart(cartItem), Librarian.cartNotificationTypes.removed);\r\n });\r\n }\r\n // Otherwise, add it\r\n else\r\n onComplete(Librarian.userCart.addToCart(cartItem), Librarian.cartNotificationTypes.added);\r\n });\r\n\r\n if (shareEl) {\r\n shareEl.addOnClick(function () {\r\n var eventType = Librarian.eventType.oneOff;\r\n this.sendWindow = new Librarian.EventSendWindow({\r\n onCloseComplete: function () {\r\n this.sendFileWindow = null;\r\n }.bind(this),\r\n eventType: eventType\r\n }, item);\r\n this.sendWindow.show();\r\n });\r\n }\r\n\r\n viewEl.addOnClick(function () {\r\n var tree = Library.getTreeByType(Librarian.catType.file, null, item.prestype);\r\n Librarian.Utils.getPath(item, function(path) {\r\n if (path != null)\r\n Library.loadLibraryTab();\r\n Librarian.Utils.selectTreeNodeByPath(tree, path);\r\n });\r\n });\r\n\r\n new Element('span', {\r\n \"class\": \"content-field\",\r\n \"text\": \"Last Modifed: \" + Librarian.Utils.getDateValue(item.lastmoddate, \"%x %X\")\r\n }).injectInside(linkEl);\r\n\r\n new Element('span', {\r\n \"class\": \"content-field\",\r\n \"text\": \"Author: \" + (item.extrafields.Author || \"\")\r\n }).injectInside(linkEl);\r\n\r\n bookmarkEl.addOnClick(function() {\r\n var self = this;\r\n if (this.hasClass(\"bookmarked\")) {\r\n Librarian.Bookmarks.deleteBookmark(this.bookmarkId,\r\n item.contentid,\r\n item.contenttype,\r\n function() {\r\n self.removeClass(\"bookmarked\");\r\n }.bind(this));\r\n\r\n } else {\r\n Librarian.Bookmarks.addBookmark(item.contentid,\r\n item.contenttype,\r\n function(bookmarkId) {\r\n self.addClass(\"bookmarked\");\r\n this.bookmarkId = bookmarkId;\r\n }.bind(this));\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n this.request.send(); \r\n }, \r\n\r\n clickHandler: function (event, file) {\r\n event.stopPropagation();\r\n Librarian.PreviewWindow.openPreviewWindow(file);\r\n },\r\n\r\n viewAll: function (event, response) {\r\n\r\n Librarian.Homepage.hide();\r\n tileList.loadFromArray(response.presentations);\r\n\r\n var itemEl = $(\"pageheader\");\r\n if (itemEl) {\r\n itemEl.show();\r\n }\r\n\r\n if(Librarian.pageheader != null) {\r\n Librarian.pageHeader.destroy();\r\n Librarian.pageHeader = null;\r\n }\r\n\r\n $('myInProgress').empty();\r\n\r\n Librarian.pageHeader = new Librarian.PageHeader({\r\n name: \"My Favorites\",\r\n showHeaderMenu: false\r\n });\r\n },\r\n\r\n prepCartItem: function (data, type) {\r\n if (!Librarian.Cart)\r\n return data;\r\n\r\n var item = new Librarian.Cart.Item(data);\r\n if ((type == Librarian.Utils.getItemTypeString(this.options.data)) && (this.options.data.slidenumber < 1))\r\n item.slidenumber = 1;\r\n // Files\r\n else if (type == Librarian.Lang.getString(\"item\")) {\r\n if (this.options.data.slidenumber != 0)\r\n item.slidenumber = 0;\r\n item.itemnumber = undefined;\r\n if (this.options.data.slideid != 0)\r\n item.slideid = 0;\r\n // Restore the parent extra fields if we're adding this as an item\r\n if (this.options.parentData && this.options.parentData.extrafields)\r\n item.extrafields = this.options.parentData.extrafields;\r\n }\r\n // Slides/Pages\r\n // If there is parent data and they have extra fields, save the extrafields as parents fields\r\n else if (this.options.parentData && this.options.parentData.extrafields)\r\n item.parentfields = this.options.parentData.extrafields;\r\n\r\n // Reset the add type for this item so the cart can process it correctly\r\n item.addType = null;\r\n\r\n return item;\r\n }\r\n});","Librarian.Modules.MyCreations = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-mycreations-\",\r\n label: null,\r\n pageName: \"My Workspace\",\r\n isMooTree: false\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl) {\r\n return;\r\n }\r\n\r\n this.parent();\r\n var self = this;\r\n this.wrapperEl.addClass(\"nav-wrapper\");\r\n\r\n if(this.options.isMooTree) {\r\n // open browse part of moo tree to myUploads\r\n this.wrapperEl.addEvent(\"click\", function() {\r\n $(\"library\").click();\r\n Library.mypresClick(5);\r\n });\r\n }\r\n else {\r\n this.wrapperEl.addEvent(\"click\", function() {\r\n Library.loadTabByName(self.options.pageName);\r\n Library.mypresClick(5);\r\n });\r\n }\r\n\r\n var label = (this.options.label || '').trim();\r\n if (label.length > 0) {\r\n new Element(\"div\", {\r\n \"class\": \"nav-label\",\r\n \"html\": Librarian.Lang.getString(label),\r\n \"data-translation\": label\r\n }).injectInside(this.containerEl);\r\n }\r\n }\r\n});","Librarian.Modules.MyFavorites = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-myfavorites-\",\r\n label: null,\r\n pageName: \"My Workspace\",\r\n isMooTree: false\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl) {\r\n return;\r\n }\r\n\r\n this.wrapperEl.addClass(\"nav-wrapper\");\r\n this.parent();\r\n var self = this;\r\n\r\n if(this.options.isMooTree) {\r\n // open browse part of moo tree to myUploads\r\n this.wrapperEl.addEvent(\"click\", function() {\r\n $(\"library\").click();\r\n Librarian.Utils.onHashChange(\"catid=0&prestype=1&type=6\", true);\r\n });\r\n } else {\r\n this.wrapperEl.addEvent(\"click\", function() {\r\n Librarian.Utils.onHashChange(\"catid=0&prestype=1&type=6\", true);\r\n });\r\n }\r\n\r\n var label = (this.options.label || '').trim();\r\n if (label.length > 0) {\r\n new Element(\"div\", {\r\n \"class\": \"nav-label\",\r\n \"html\": Librarian.Lang.getString(label),\r\n \"data-translation\": label\r\n }).injectInside(this.containerEl);\r\n }\r\n }\r\n});","Librarian.Modules.MyUploads = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-myuploads-\",\r\n label: null,\r\n pageName: \"My Workspace\",\r\n isMooTree: false\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl) {\r\n return;\r\n }\r\n\r\n this.parent();\r\n var self = this;\r\n this.wrapperEl.addClass(\"nav-wrapper\");\r\n\r\n if(this.options.isMooTree) {\r\n // open browse part of moo tree to myUploads\r\n this.wrapperEl.addEvent(\"click\", function() {\r\n $(\"library\").click();\r\n Library.myUploadClick(false);\r\n });\r\n } else {\r\n this.wrapperEl.addEvent(\"click\", function() {\r\n Library.loadTabByName(self.options.pageName);\r\n Library.myUploadClick(false);\r\n });\r\n }\r\n \r\n var label = (this.options.label || '').trim();\r\n if (label.length > 0) {\r\n new Element(\"div\", {\r\n \"class\": \"nav-label\",\r\n \"html\": Librarian.Lang.getString(label),\r\n \"data-translation\": label\r\n }).injectInside(this.containerEl);\r\n }\r\n }\r\n});","Librarian.Modules.Nav = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-nav-\",\r\n pageName: null,\r\n // Text to label this module with, placed within the container so it can be moved via CSS rather than in the title above the module\r\n label: null,\r\n onClick: null\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl || (!this.options.pageName && !this.options.onClick))\r\n return;\r\n\r\n this.parent();\r\n\r\n this.wrapperEl.addClass(\"nav-wrapper\");\r\n if (typeof this.options.onClick == \"function\")\r\n this.wrapperEl.addOnClick(this.options.onClick.bind(this));\r\n else {\r\n this.wrapperEl.addOnClick(function () {\r\n Librarian.Modules.Nav.navigateToPage(this.options.pageName);\r\n }, this);\r\n }\r\n\r\n var label = (this.options.label || '').trim();\r\n if (label.length > 0) {\r\n new Element(\"div\", {\r\n \"class\": \"nav-label\",\r\n \"html\": Librarian.Lang.getString(label),\r\n \"data-translation\": label\r\n }).injectInside(this.containerEl);\r\n }\r\n }\r\n});\r\n\r\nLibrarian.Modules.Nav.extend({\r\n navigateToPage: function (pageName) {\r\n pageName = (pageName|| \"\").trim().toLowerCase();\r\n if (pageName.contains(\"workspace\"))\r\n Library.loadWorkspaceTab();\r\n else if ([\"library\", \"directory\"].contains(pageName)) {\r\n if (pageName == initializer.tab) {\r\n // If the side column exists but it is collapsed\r\n if (sideColumn && sideColumn.isCollapsed) {\r\n // Find the selected tab\r\n var selectedEl = $$(\"#menuBar li.active\")[0];\r\n if (selectedEl) {\r\n var tab = Library.getTabByName(Librarian.Utils.getElementValue(selectedEl));\r\n // If the current tab is the library tab, just show the column\r\n if (tab && tab.isLibrary) {\r\n if (sideColumn.handleIconEl)\r\n sideColumn.handleIconEl.click();\r\n else\r\n sideColumn.columnToggle();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Load the library tab as a fallback\r\n Library.loadLibraryTab();\r\n }\r\n else\r\n Library.loadTabByName(pageName, null, null, true);\r\n }\r\n})","Librarian.Modules.NewContent = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"onDataLoaded\"],\r\n\r\n options: {\r\n classPrefix: \"modules-newcontent-\",\r\n catPath: null,\r\n catType: Librarian.catType.file,\r\n rootCat: 0,\r\n orderBy: \"FileDBImportDate\",\r\n order: \"desc\",\r\n imageSize: \"sm\",\r\n showViewAll: true,\r\n dateField: \"importdate\",\r\n dateFormat: \"%m/%d/%Y %l:%M %p\",\r\n onPostRender: null,\r\n useGetSendData: true\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl || !this.options.catPath)\r\n return;\r\n\r\n this.parent();\r\n\r\n var method = \"getfiles\";\r\n if (this.options.catType == Librarian.catType.globalFavorite) {\r\n this.options.rootCat = Librarian.specialCategories.GlobalFavorites.CatId;\r\n method = \"getcg\";\r\n if (this.options.orderBy == \"FileDBImportDate\")\r\n this.options.orderBy = \"GroupLastModDate\";\r\n if (this.options.dateField == \"importdate\")\r\n this.options.dateField = \"lastmoddate\";\r\n }\r\n\r\n var options = {\r\n url: Librarian.path.getMethodUrl(method) + \"&out=ujson&orderby=\" + this.options.orderBy + \"&order=\" + this.options.order + \"&perpage=1&pcid=\" + this.options.rootCat + \"&cpath=\" + this.options.catPath,\r\n onSuccess: this.onDataLoaded,\r\n onFailure: Librarian.Utils.onFailure\r\n };\r\n\r\n // If we have a custom data function\r\n if (this.options.useGetSendData && (typeof Library != \"undefined\") && (typeof Library.getSendData == \"function\")) {\r\n // Get the data to send and check that it is valid\r\n var data = Library.getSendData({\r\n cattype: this.options.catType\r\n }, options.url);\r\n\r\n if (data) {\r\n // If the given data is an object, stringify it\r\n if (typeof data.data == \"object\")\r\n data.data = JSON.stringify(data.data);\r\n // Convert the data to Base64\r\n if (typeof Base64 != \"undefined\")\r\n data.data = Base64.encode(data.data);\r\n\r\n // And save it\r\n options.data = data.data;\r\n options.method = \"post\";\r\n options.url = data.url;\r\n }\r\n }\r\n\r\n this.request = new Librarian.Request.JSON(options);\r\n this.request.send();\r\n },\r\n\r\n onDataLoaded: function(json) {\r\n if (!json)\r\n return;\r\n\r\n // Build the link to this category for use later\r\n var catId = json.CatId || 0,\r\n catLink = \"#catid=\" + catId + \"&type=\" + this.options.catType,\r\n files = json.Files,\r\n groups = json.Groups,\r\n info = null;\r\n\r\n // Change the data to lower case so the thumbnail and preview window can use it\r\n if (files && files[0])\r\n info = Object.toLowerKeys(files[0]);\r\n else if (groups && groups[0])\r\n info = Object.toLowerKeys(groups[0]);\r\n\r\n // If we have at least one file, build the data\r\n if (info) {\r\n // Create the image with the correct image and class\r\n var imageEl = new Element(\"img\", {\r\n \"src\": Librarian.Utils.getThumbnailUrl(this.options.imageSize, info),\r\n \"class\": (this.options.classPrefix || '') + \"image\"\r\n }).injectInside(this.containerEl);\r\n\r\n // Save the data in the image so we can open the preview window using it\r\n imageEl.data = info;\r\n imageEl.parentData = Object.toLowerKeys(json);\r\n imageEl.addOnClick(function() {\r\n Librarian.PreviewWindow.openPreviewWindow(this.data, this.parentData);\r\n });\r\n\r\n // Add the file name if its available\r\n if (info.name) {\r\n new Element(\"a\", {\r\n \"text\": info.name,\r\n \"href\": catLink + \"&fileid=\" + info.fileid + \"&groupid=\" + info.groupid,\r\n \"class\": (this.options.classPrefix || '') + \"name\"\r\n }).injectInside(this.containerEl);\r\n }\r\n\r\n // Add the file date if its available and we are told to show it\r\n if (this.options.dateField && info[this.options.dateField]) {\r\n var date = info[this.options.dateField];\r\n new Element(\"span\", {\r\n \"html\": Librarian.Utils.extractDateFromString(date).format(this.options.dateFormat),\r\n \"class\": (this.options.classPrefix || '') + \"date\"\r\n }).injectInside(this.containerEl);\r\n }\r\n\r\n // Add the file description if its available\r\n if (info.description) {\r\n new Element(\"span\", {\r\n \"html\": info.description,\r\n \"class\": (this.options.classPrefix || '') + \"description\"\r\n }).injectInside(this.containerEl);\r\n }\r\n }\r\n\r\n // If we are told to show the \"View All\" link, add that too\r\n if (this.options.showViewAll) {\r\n // Add it into its own container so that it can be pinned to the bottom\r\n var linkEl = new Element(\"div\", {\r\n \"class\": (this.options.classPrefix || '') + \"viewall\"\r\n }).injectInside(this.wrapperEl);\r\n\r\n var viewAllLinkEl = new Element(\"a\", {\r\n \"html\": Librarian.Lang.getString(\"modules_newcontent_view_all\"),\r\n \"class\": (this.options.classPrefix || '') + \"viewall-link\"\r\n });\r\n viewAllLinkEl.addEvent('click', function () {\r\n Librarian.Utils.getPath(Object.toLowerKeys(json), function(path) {\r\n Librarian.Utils.selectTreeNodeByPath(treeView, path);\r\n }); \r\n }.bind(this));\r\n viewAllLinkEl.injectInside(linkEl);\r\n\r\n // Adjust the height of the container to fit the link\r\n var linkHeight = linkEl.getHeight(),\r\n contHeight = this.containerEl.getHeight() - linkHeight - 10;\r\n\r\n if (!isNaN(contHeight))\r\n this.containerEl.setStyle(\"height\", contHeight + \"px\");\r\n }\r\n\r\n if (typeof this.options.onPostRender == \"function\")\r\n this.options.onPostRender(this.wrapperEl);\r\n }\r\n});","Librarian.Modules.OpenCat = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-opencat-\",\r\n path: null,\r\n label: null,\r\n id: null,\r\n onClick: null,\r\n treeview: 0,\r\n showtree: false\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n\r\n // open category on click\r\n var self = this;\r\n\r\n // add click handler to module\r\n wrapperEl.addOnClick(function() {\r\n Librarian.Modules.OpenCat.openCategory(self.options.treeview, self.options.path, self.options.showtree);\r\n });\r\n\r\n this.parent(this.options, wrapperEl);\r\n\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n this.wrapperEl.addClass(\"nav-wrapper\");\r\n \r\n // add label\r\n var label = (this.options.label.toString() || '').trim();\r\n if (label.length > 0) {\r\n new Element(\"div\", {\r\n \"class\": \"nav-label\",\r\n \"html\": Librarian.Lang.getString(label),\r\n \"data-translation\": label\r\n }).injectInside(this.containerEl);\r\n }\r\n }\r\n});\r\n\r\nLibrarian.Modules.OpenCat.extend({\r\n openCategory: function (treeViewType, path, showtree) {\r\n \r\n if (showtree) {\r\n console.log('open tree event triggered')\r\n Librarian.Init.toggleSideColumn(sideColumn, true, Librarian.treeView.openSidePanelOnPageClick);\r\n }\r\n\r\n if (treeViewType == 0) {\r\n Librarian.Utils.selectTreeNodeByPath(treeView, path, null, true);\r\n }\r\n\r\n else if (treeViewType == 1) {\r\n Librarian.Utils.selectTreeNodeByPath(gFavTreeView, path, null, true);\r\n }\r\n\r\n else if (treeViewType == 2) {\r\n Librarian.Utils.selectTreeNodeByPath(myFavTreeView, path, null, true);\r\n }\r\n }\r\n})","Librarian.Modules.OpenFile = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-openfile-\",\r\n onClick: null,\r\n label: null,\r\n filename: null,\r\n },\r\n\r\n initialize: function (options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n var self = this;\r\n\r\n this.options.onClick = function () {\r\n Librarian.Modules.OpenFile.openFile(self.options.filename);\r\n };\r\n\r\n wrapperEl.addOnClick(this.options.onClick);\r\n },\r\n\r\n load: function () {\r\n this.parent();\r\n\r\n this.wrapperEl.addClass(\"nav-wrapper\");\r\n var label = (this.options.label || '').trim();\r\n if (label.length > 0) {\r\n new Element(\"div\", {\r\n \"class\": \"nav-label\",\r\n \"html\": label\r\n }).injectInside(this.containerEl);\r\n }\r\n }\r\n});\r\n\r\nLibrarian.Modules.OpenFile.extend({\r\n openFile: function (filename, fvname, vname, contextInfo) {\r\n Librarian.Utils.getFileID(filename, function (fileId) {\r\n var url = Librarian.path.getMethodUrl(\"getslides\") + \"&fid=\" + fileId + \"&out=dgrid\";\r\n\r\n if (fvname)\r\n url += \"&fvname=\" + fvname;\r\n\r\n if (vname)\r\n url += \"&vname=\" + vname;\r\n\r\n new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: function (json) {\r\n Librarian.PreviewWindow.openPreviewWindow(json.data[0].fileinfo, null, null, contextInfo);\r\n }.bind(this)\r\n }).send();\r\n });\r\n }\r\n})","Librarian.Modules.Opportunities = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-opportunities-\",\r\n title: \"Opportunities\",\r\n opportunityFilter: null, \r\n\r\n /* metro tile settings */\r\n embedInModule: false,\r\n embedHeight: 303,\r\n openTabOnClick: false,\r\n tabName: \"Opportunities\"\r\n },\r\n\r\n opportunityFilter: null,\r\n className: \"modules-opp\",\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n var self = this;\r\n\r\n if (!this.options.opportunityFilter) {\r\n this.options.opportunityFilter = {};\r\n }\r\n\r\n this.opportunityFilter = Object.merge(this.options.opportunityFilter, this.getDefaultOpportunityFilter());\r\n \r\n if(this.options.embedInModule) {\r\n\r\n // get filter for homepage view\r\n this.opportunityFilter = {\r\n amount: 0,\r\n stageType: Librarian.crmStageType.active,\r\n orderByColumns: [{ name: \"Score\", order: Librarian.sortOrder.desc }],\r\n onHold: 0,\r\n keyword: '',\r\n state: Librarian.crmOpportunityState.active,\r\n dealStatus: Librarian.crmStageType.open,\r\n type: '',\r\n startRow: 1,\r\n maxRows: 3,\r\n viewName: null,\r\n fields: {},\r\n accountId: 0,\r\n flags: 0\r\n };\r\n\r\n this.options.height = this.options.embedHeight;\r\n\r\n if(this.options.openTabOnClick == true) {\r\n if(this.options.tabName) {\r\n wrapperEl.addOnClick(function() {\r\n Library.loadTabByName(self.options.tabName);\r\n });\r\n } else {\r\n wrapperEl.addOnClick(function() {\r\n Library.loadTabByName(\"Opportunities\");\r\n });\r\n }\r\n }\r\n\r\n }\r\n\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n getDefaultOpportunityFilter: function() {\r\n return {\r\n amount: 0,\r\n stageType: Librarian.crmStageType.active,\r\n orderByColumns: [{ name: \"Urgency\", order: Librarian.sortOrder.desc }],\r\n onHold: 0,\r\n keyword: '',\r\n state: Librarian.crmOpportunityState.active,\r\n type: '',\r\n startRow: 1,\r\n maxRows: 2400,\r\n viewName: null,\r\n fields: {},\r\n accountId: 0,\r\n flags: 0\r\n };\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n if(this.options.class) {\r\n this.containerEl.addClass(this.options.class);\r\n }\r\n \r\n this.loadData();\r\n },\r\n\r\n loadData: function() {\r\n this.containerEl.empty();\r\n // Create the container element and generate the URL\r\n var parentContEl = new Element(\"div\").injectInside(this.containerEl),\r\n // Get top opportunities\r\n url = Librarian.path.getCrmUrl(\"gettcros\") + \"&out=cjson&in=cjson\";\r\n\r\n var oppFilter = JSON.stringify(Object.clone(this.opportunityFilter));\r\n if (typeof Base64 != \"undefined\")\r\n oppFilter = Base64.encode(oppFilter);\r\n\r\n this.request = new Librarian.Request.JSON({\r\n url: url,\r\n data: oppFilter,\r\n method: \"post\",\r\n onSuccess: function(opps) {\r\n parentContEl.empty();\r\n\r\n if (!opps || (opps.length == 0))\r\n this.showNoOpp(parentContEl);\r\n else {\r\n for (var i = 0, len = opps.length; i < len; i++)\r\n this.buildOpportunityItem(opps[i], parentContEl);\r\n }\r\n }.bind(this),\r\n onFailure: Librarian.Utils.onFailure\r\n });\r\n this.request.send();\r\n },\r\n\r\n showNoOpp: function (parentContEl) {\r\n var className = this.className + \"-no-item\";\r\n parentContEl.addClass(className + \"-wrapper\");\r\n\r\n new Element(\"span\", {\r\n \"class\": className + \"-text\",\r\n \"text\": Librarian.Lang.getString(\"modules_opportunities_none\")\r\n }).injectInside(parentContEl);\r\n },\r\n\r\n buildOpportunityItem: function(opp, parentContainer) {\r\n\r\n if(this.options.embedInModule) {\r\n \r\n // build elements for each opportunity\r\n var oppItemEl = new Element(\"div\", {\r\n \"class\": this.className + \"-embed\"\r\n });\r\n\r\n var oppItemName = new Element(\"div\", {\r\n \"class\": this.className + \"-name-embed\", \r\n \"html\": opp.accountName + \":\"\r\n });\r\n\r\n var oppItemScore = new Element(\"div\", {\r\n \"class\": this.className + \"-score-embed\"\r\n });\r\n\r\n // star rating based on score 0 - 100\r\n var numStars = parseInt(opp.score / 20);\r\n if(numStars > 5) {\r\n numStars = 5;\r\n }\r\n\r\n for(var i=0; i < numStars; i++) {\r\n var starEl = new Element(\"img\", {\r\n \"class\": this.className + \"-score-star-embed\", \r\n \"src\": Librarian.path.getLayoutsPath() + \"/core/pagebuilder/images/star.png\"\r\n });\r\n starEl.injectInside(oppItemScore);\r\n }\r\n\r\n // add halfstar\r\n if( (opp.score % 20 >= 10) && (numStars < 5) ) {\r\n var starEl = new Element(\"img\", {\r\n \"class\": this.className + \"-score-star-embed\", \r\n \"src\": Librarian.path.getLayoutsPath() + \"/core/pagebuilder/images/half_star.png\"\r\n });\r\n starEl.injectInside(oppItemScore);\r\n }\r\n\r\n // inject elements\r\n oppItemName.injectInside(oppItemEl);\r\n oppItemScore.injectInside(oppItemEl);\r\n oppItemEl.injectInside(parentContainer);\r\n }\r\n else {\r\n\r\n var className = this.className + \"-item\";\r\n\r\n //Container\r\n var oppItemEl = new Element(\"div\", {\r\n \"class\": className,\r\n \"id\": className + \"-\" + opp.opportunityId\r\n }).injectInside(parentContainer);\r\n\r\n // Score\r\n var scoreContEl = new Element(\"div\", {\r\n \"class\": className + \"-score-cont\",\r\n \"styles\": {\r\n \"border-color\": this.getUrgencyColor(opp.urgency, opp.stageType)\r\n }\r\n }).injectInside(oppItemEl);\r\n new Element(\"span\", {\r\n \"class\": className + \"-score\",\r\n \"html\": this.getScore(opp.stageType, opp.score)\r\n }).injectInside(scoreContEl);\r\n new Element(\"span\", {\r\n \"class\": className + \"-value\",\r\n \"html\": this.getAmountString(opp.amount)\r\n }).injectInside(scoreContEl); \r\n\r\n // Opportunity Name\r\n var infoContEl = new Element(\"div\", {\r\n \"class\": className + \"-info-cont pointer\"\r\n }).injectInside(oppItemEl);\r\n new Element(\"span\", {\r\n \"class\": className + \"-name ellipsis\",\r\n \"title\": opp.name,\r\n \"html\": opp.name\r\n }).injectInside(infoContEl);\r\n\r\n infoContEl.addOnClick(function() { this.openProjectRoom(opp.opportunityId); }, this);\r\n }\r\n },\r\n\r\n getScore: function(stageType, score) {\r\n return ((stageType == Librarian.crmStageType.closedWon) || (stageType == Librarian.crmStageType.closedLost)) ? \"---\" : parseInt(score, 10);\r\n },\r\n\r\n getUrgencyColor: function(urgency, stageType) {\r\n if (stageType == Librarian.crmStageType.closedWon)\r\n return \"#82BD3D\";\r\n if (stageType == Librarian.crmStageType.closedLost)\r\n return \"#333\";\r\n if (urgency >= 80)\r\n return \"#D2254B\";\r\n if (urgency >= 60)\r\n return \"#F5821E\";\r\n if (urgency >= 40)\r\n return \"#F4CD42\";\r\n return \"#0078BE\";\r\n },\r\n\r\n getAmountString: function(amount) {\r\n if (amount > 0 && amount < 1000)\r\n return \"$\" + amount;\r\n if (amount >= 1000 && amount < 1000000)\r\n return \"$\" + parseInt(amount / 1000, 10) + \"K\";\r\n if (amount >= 1000000 && amount < 1000000000)\r\n return \"$\" + parseInt(amount / 1000000, 10) + \"M\";\r\n if (amount > 1000000000 && amount < 1000000000000)\r\n return \"$\" + parseInt(amount / 1000000000, 10) + \"B\";\r\n if (amount > 1000000000000 && amount < 1000000000000000)\r\n return \"$\" + parseInt(amount / 1000000000000, 10) + \"T\";\r\n return \"---\";\r\n },\r\n\r\n openProjectRoom: function(oppId) {\r\n var url = Librarian.path.getAppPath(\"dashboard\") + \"/project.htm?libName=\" + Librarian.path.getUrlLibraryName();\r\n if (url.indexOf('?') == -1)\r\n url += '?';\r\n else\r\n url += '&';\r\n window.open(url + \"oppId=\" + oppId, \"Project\" + oppId, \"width=990,height=770\");\r\n }\r\n});","Librarian.Modules.Popular = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"prepCartItem\"],\r\n\r\n options: {\r\n classPrefix: \"modules-popular-\",\r\n contentType: Librarian.contentType.slide,\r\n detailed: false,\r\n showGetLink: false,\r\n showShareLink: true,\r\n startDate: null,\r\n endDate: null,\r\n orderBy: null,\r\n spinner: false\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n reload: function() {\r\n // Make sure we don't destroy the wrapper,\r\n // but save the set value so we can reset it after\r\n var destroyWrapperVal = this.destroyWrapper;\r\n this.destroyWrapper = false;\r\n\r\n this.destroy();\r\n this.load();\r\n\r\n // Reset the saved value\r\n this.destroyWrapper = destroyWrapperVal;\r\n },\r\n\r\n load: function() {\r\n var self = this;\r\n\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n if (this.options.spinner) {\r\n var loadingImage = new Element(\"div\",\r\n {\r\n \"class\": \"popularLoadingSpinner\"\r\n }).inject(this.wrapperEl);\r\n }\r\n\r\n if (this.request) {\r\n this.request.cancel();\r\n this.request = null;\r\n }\r\n\r\n var onDataLoaded = function(json) {\r\n var self = this;\r\n\r\n // remove loading image\r\n if (loadingImage) {\r\n this.wrapperEl.getElements(\".popularLoadingSpinner\").destroy();\r\n }\r\n\r\n if (!json || !json.data || !json.data[0])\r\n return;\r\n\r\n var listEl = new Element(\"ul\", {\r\n \"class\": \"content-list\"\r\n }).injectInside(this.containerEl);\r\n\r\n var slides = json.data || [];\r\n if (slides.length == 0)\r\n return;\r\n\r\n // Add a row for each item in the list which links back to the item\r\n slides.forEach(function(item) {\r\n var data = Object.toLowerKeys(item);\r\n\r\n var listItemEl = new Element(\"li\", {\r\n \"class\": \"content-item\"\r\n }).injectInside(listEl);\r\n\r\n var nameWrapperEl = new Element('div', {\r\n \"class\": \"content-name-wrapper\"\r\n }).injectInside(listItemEl);\r\n\r\n var iconEl = new Element(\"img\", {\r\n \"class\": \"content-icon\",\r\n \"src\": Librarian.Utils.getContentTypeIcon(item)\r\n }).injectInside(nameWrapperEl);\r\n\r\n var linkEl = new Element('a', {\r\n \"class\": \"content-name\",\r\n \"text\": item.name || item.filename,\r\n \"title\": item.name || item.filename\r\n }).injectInside(nameWrapperEl);\r\n\r\n linkEl.data = data;\r\n linkEl.addOnClick(function() {\r\n Librarian.PreviewWindow.openPreviewWindow(this.data);\r\n });\r\n\r\n if (self.options.detailed) {\r\n var bookmarkEl = new Element(\"div\", {\r\n \"class\": \"content-bookmark\"\r\n }).injectInside(listItemEl);\r\n\r\n Librarian.Bookmarks.getBookmarkId(item.contentid, item.contenttype, function(bookmarkId) {\r\n if (bookmarkId > 0) {\r\n bookmarkEl.addClass(\"bookmarked\");\r\n bookmarkEl.bookmarkId = bookmarkId;\r\n }\r\n }); \r\n\r\n var threeDotEl = new Element(\"div\", {\r\n \"class\": \"content-menu-icon\"\r\n }).injectInside(listItemEl);\r\n\r\n var menuEl = new Element(\"div\", {\r\n \"class\": \"content-menu-wrapper\"\r\n }).injectInside(listItemEl);\r\n\r\n var downloadEl = new Element(\"div\", {\r\n \"text\": \"Download\"\r\n }).injectInside(menuEl);\r\n\r\n var cartEl = new Element(\"div\", {\r\n \"text\": \"Add File\"\r\n }).injectInside(menuEl);\r\n\r\n if (self.options.showShareLink) {\r\n var shareEl = new Element(\"div\", {\r\n \"text\": \"Share\"\r\n }).injectInside(menuEl);\r\n }\r\n\r\n var viewEl = new Element(\"div\", {\r\n \"text\": \"View in Library\"\r\n }).injectInside(menuEl);\r\n\r\n if (self.options.showGetLink) {\r\n var getLinkEl = new Element(\"div\", {\r\n \"text\": \"Get Link\"\r\n }).injectInside(menuEl);\r\n\r\n getLinkEl.addOnClick(function () {\r\n Librarian.Utils.getLink(data);\r\n });\r\n }\r\n\r\n menuEl.hide();\r\n\r\n threeDotEl.addEvent('mouseenter', function() {\r\n menuEl.show();\r\n menuEl.removeClass(\"open-above\");\r\n\r\n var menuRect = menuEl.getBoundingClientRect();\r\n var contRect = self.containerEl.getBoundingClientRect();\r\n var openAbove = menuRect.bottom > contRect.bottom;\r\n\r\n menuEl.toggleClass(\"open-above\", openAbove);\r\n\r\n menuRect = menuEl.getBoundingClientRect();\r\n var openLeft = menuRect.top < contRect.top;\r\n\r\n menuEl.toggleClass(\"open-left\", (openAbove && openLeft));\r\n\r\n threeDotEl.addClass(\"active\");\r\n });\r\n\r\n menuEl.addEvent('mouseenter', function() {\r\n menuEl.show();\r\n threeDotEl.addClass(\"active\");\r\n });\r\n\r\n threeDotEl.addEvent('mouseleave', function() {\r\n menuEl.hide();\r\n threeDotEl.removeClass(\"active\");\r\n });\r\n\r\n menuEl.addEvent('mouseleave', function() {\r\n menuEl.hide();\r\n threeDotEl.removeClass(\"active\");\r\n });\r\n\r\n downloadEl.addOnClick(function () {\r\n Library.downloadData(data);\r\n });\r\n\r\n cartEl.addOnClick(function () {\r\n // Can't add to the cart if we don't have a cart\r\n if (!Librarian.userCart)\r\n return;\r\n\r\n var item = self.prepCartItem(data, 1),\r\n onComplete = function(success, notifyType) {\r\n Librarian.Utils.showCartNotification(item, notifyType, success);\r\n\r\n // Update the checkboxes on the main page\r\n Librarian.Utils.updateAllCheckboxes();\r\n\r\n Librarian.Cart.onChange();\r\n\r\n // If we're in the cart and we just removed ourselves,\r\n // close the window to prevent switching errors.\r\n if (success && (notifyType == Librarian.cartNotificationTypes.removed) && this.isInCart)\r\n this.close();\r\n }.bind(this);\r\n\r\n // If it's already in the cart, prompt the user to remove it\r\n if (Librarian.userCart.isInCart(item, true)) {\r\n Librarian.userCart.removeFromCart(item, null, null, null, null, function() {\r\n onComplete(!Librarian.userCart.isInCart(item), Librarian.cartNotificationTypes.removed);\r\n });\r\n }\r\n // Otherwise, add it\r\n else\r\n onComplete(Librarian.userCart.addToCart(item), Librarian.cartNotificationTypes.added);\r\n });\r\n\r\n if (shareEl) {\r\n shareEl.addOnClick(function () {\r\n var eventType = Librarian.eventType.oneOff;\r\n this.sendWindow = new Librarian.EventSendWindow({\r\n onCloseComplete: function () {\r\n this.sendFileWindow = null;\r\n }.bind(this),\r\n eventType: eventType\r\n }, data);\r\n this.sendWindow.show();\r\n });\r\n }\r\n\r\n viewEl.addOnClick(function () {\r\n var tree = Library.getTreeByType(Librarian.catType.file, null, data.prestype);\r\n Librarian.Utils.getPath(data, function(path) {\r\n if (path != null)\r\n Library.loadLibraryTab();\r\n Librarian.Utils.selectTreeNodeByPath(tree, path);\r\n });\r\n });\r\n\r\n new Element('span', {\r\n \"class\": \"content-field\",\r\n \"text\": \"Last Modifed: \" + Librarian.Utils.getDateValue(item.lastmoddate, \"%x %X\"),\r\n }).injectInside(listItemEl);\r\n\r\n new Element('span', {\r\n \"class\": \"content-field\",\r\n \"text\": \"Author: \" + (item.extrafields.Author || \"\"),\r\n }).injectInside(listItemEl);\r\n\r\n bookmarkEl.addOnClick(function () {\r\n var self = this;\r\n if (this.hasClass(\"bookmarked\")) {\r\n Librarian.Bookmarks.deleteBookmark(this.bookmarkId, item.contentid, item.contenttype, function() {\r\n self.removeClass(\"bookmarked\");\r\n }.bind(this));\r\n\r\n } else {\r\n Librarian.Bookmarks.addBookmark(item.contentid, item.contenttype, function(bookmarkId) {\r\n self.addClass(\"bookmarked\");\r\n this.bookmarkId = bookmarkId;\r\n }.bind(this));\r\n }\r\n });\r\n } \r\n });\r\n }.bind(this);\r\n this.request = Librarian.Utils.getPopular(20, this.options.contentType, onDataLoaded, null, null, true, this.options.customSendData);\r\n },\r\n\r\n prepCartItem: function(data, type) {\r\n if (!Librarian.Cart)\r\n return data;\r\n\r\n var item = new Librarian.Cart.Item(data);\r\n if ((type == Librarian.Utils.getItemTypeString(this.options.data)) && (this.options.data.slidenumber < 1))\r\n item.slidenumber = 1;\r\n // Files\r\n else if (type == Librarian.Lang.getString(\"item\")) {\r\n if (this.options.data.slidenumber != 0)\r\n item.slidenumber = 0;\r\n item.itemnumber = undefined;\r\n if (this.options.data.slideid != 0)\r\n item.slideid = 0;\r\n // Restore the parent extra fields if we're adding this as an item\r\n if (this.options.parentData && this.options.parentData.extrafields)\r\n item.extrafields = this.options.parentData.extrafields;\r\n }\r\n // Slides/Pages\r\n // If there is parent data and they have extra fields, save the extrafields as parents fields\r\n else if (this.options.parentData && this.options.parentData.extrafields)\r\n item.parentfields = this.options.parentData.extrafields;\r\n\r\n // Reset the add type for this item so the cart can process it correctly\r\n item.addType = null;\r\n\r\n return item;\r\n }\r\n});","Librarian.Modules.PopularContentLinks = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"viewAll\", \"getCustomData\", \"clickHandler\"],\r\n\r\n options: {\r\n classPrefix: \"modules-popularlinks-\",\r\n label: null,\r\n isSquare: false,\r\n NumberOfDays: null, // how many days worth of activities to pull\r\n Category: null,\r\n ExcludeField: null,\r\n ExcludeValue: null,\r\n catType: Librarian.catType.file,\r\n action: \"preview\" // \"download\" or \"preview\"\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n var self = this;\r\n\r\n if (!this.wrapperEl) { return; }\r\n\r\n this.parent();\r\n\r\n if (!this.containerEl) { return; }\r\n\r\n if(this.options.isSquare) {\r\n // add view all button\r\n new Element(\"span\", {\r\n \"class\": \"viewAll\",\r\n events: {\r\n click: function() {\r\n self.viewAll();\r\n }\r\n },\r\n text: \"View all >\"\r\n }).injectInside(this.wrapperEl);\r\n }\r\n\r\n Librarian.Utils.getPopular(7, Librarian.contentType.file, function(response) {\r\n response.data.forEach(function (file) {\r\n if (self.options.nameMeta)\r\n var name = file.extrafields[self.options.nameMeta] || file.name;\r\n else\r\n var name = file.name;\r\n var linkEl = new Element(\"div\", {\r\n \"class\": \"file-link\",\r\n events: {\r\n click: function (event) {\r\n self.clickHandler(event, file);\r\n }\r\n }\r\n }).injectInside(self.containerEl);\r\n \r\n new Element(\"img\", {\r\n \"class\": \"file-link-icon\",\r\n src: Librarian.Utils.getContentTypeIcon(file)\r\n }).injectInside(linkEl);\r\n\r\n new Element(\"span\", {\r\n \"class\": \"file-link-text\",\r\n text: name,\r\n title: name\r\n }).injectInside(linkEl);\r\n });\r\n }, null, null, true, self.getCustomData);\r\n }, \r\n\r\n clickHandler: function(event, file) {\r\n event.stopPropagation();\r\n\r\n if (this.options.action === \"preview\") {\r\n Librarian.PreviewWindow.openPreviewWindow(file);\r\n }\r\n\r\n else if (this.options.action === \"open\") {\r\n var url = '#';\r\n\r\n // Build the url from the data we have\r\n if (file.fileid > 0)\r\n url += \"fileid=\" + file.fileid;\r\n else if (file.groupid > 0)\r\n url += \"groupid=\" + file.groupid;\r\n\r\n // Including the cat ID if we have it\r\n if (file.extrafields && file.extrafields.CatID != null)\r\n url += \"&catid=\" + file.extrafields.CatID;\r\n else if (file.catid > 0)\r\n url += \"&catid=\" + file.catid;\r\n\r\n // And set that as the url for this link\r\n document.location.href = url + \"&type=\" + this.options.catType;\r\n }\r\n },\r\n\r\n viewAll: function() {\r\n Librarian.ContentLists.showPopularFiles();\r\n },\r\n\r\n getCustomData: function (data, url) {\r\n var resultOptions = {\r\n data: {},\r\n url: url\r\n };\r\n\r\n if ((typeof Library.getSendData == \"function\")) {\r\n var sendData = Library.getSendData(data, url);\r\n\r\n if (sendData != null) {\r\n resultOptions = sendData;\r\n }\r\n }\r\n \r\n if (this.options.Category != null) {\r\n if (!resultOptions.url.contains(\"in=ujson\")) {\r\n resultOptions.url += \"&in=ujson\";\r\n }\r\n\r\n resultOptions.data.Fields = {\r\n \"FilePath\": this.options.Category + \"%\"\r\n }\r\n }\r\n\r\n if (this.options.NumberOfDays != null) {\r\n if (!resultOptions.url.contains(\"in=ujson\")) {\r\n resultOptions.url += \"&in=ujson\";\r\n }\r\n var startDate = new Date();\r\n startDate.setDate(startDate.getDate() - this.options.NumberOfDays);\r\n resultOptions.data.StartDate = startDate;\r\n }\r\n\r\n if (this.options.ExcludeField != null && this.options.ExcludeValue != null) {\r\n if (!resultOptions.url.contains(\"in=ujson\")) {\r\n resultOptions.url += \"&in=ujson\";\r\n }\r\n\r\n resultOptions.data.ExcludeFields = {}\r\n resultOptions.data.ExcludeFields[this.options.ExcludeField] = this.options.ExcludeValue;\r\n }\r\n\r\n\r\n return resultOptions;\r\n }\r\n\r\n});","Librarian.Modules.Processed = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-processed-\",\r\n count: 10\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl || !Librarian.specialCategories || (typeof Librarian.specialCategories.UserApproved != \"number\"))\r\n return;\r\n\r\n this.parent();\r\n\r\n\r\n // Save this so it can be cancelled later if needed\r\n Librarian.myProcView = new Librarian.MyProcessedView({\r\n container: this.containerEl,\r\n addSpacer: false,\r\n sendEnabled: Librarian.event.canShare,\r\n externalCrmEnabled: Librarian.externalCrm.attachCreated,\r\n deleteEnabled: Librarian.create.allowCreateDelete,\r\n addTitle: Librarian.create.showTitle\r\n });\r\n Librarian.myProcView.load(this.options.count);\r\n }\r\n});","Librarian.Modules.Recent = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"onRecentLoaded\", \"prepCartItem\"],\r\n\r\n options: {\r\n classPrefix: \"modules-recent-\",\r\n catType: Librarian.catType.file,\r\n count: 20,\r\n action: \"open\", // \"download\", or \"preview\"\r\n showDate: false,\r\n detailed: false,\r\n spinner: false,\r\n showAuthor: false,\r\n showModDate: false,\r\n viewAll: false,\r\n showGetLink: false,\r\n showShareLink: true,\r\n pageName: \"Collateral\"\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl || (typeof this.options.catType != \"number\"))\r\n return;\r\n\r\n this.parent();\r\n\r\n if (this.options.spinner) {\r\n this.loadingImage = new Element(\"div\",\r\n {\r\n \"class\": \"recentLoadingSpinner\"\r\n }).inject(this.wrapperEl);\r\n }\r\n\r\n var func = null;\r\n\r\n if (this.options.catType === Librarian.catType.file)\r\n func = Librarian.Utils.getNewestFiles(this.options.count, this.onRecentLoaded, null, null, null, this.options.useGetSendData, this.options.customSendData);\r\n else if (this.options.catType === Librarian.catType.globalFavorite)\r\n func = Librarian.Utils.getNewestGroups;\r\n\r\n if (typeof func != \"function\")\r\n return;\r\n\r\n func(this.options.count, this.onRecentLoaded, null, \"ujson\");\r\n },\r\n\r\n onRecentLoaded: function(items) {\r\n // remove loading image\r\n if (this.loadingImage) {\r\n this.wrapperEl.getElements(\".recentLoadingSpinner\").destroy();\r\n }\r\n\r\n var self = this;\r\n if (!items || (items.length == 0))\r\n return;\r\n\r\n if (items.data)\r\n items = items.data;\r\n\r\n // Create the container element\r\n var listEl = new Element(\"ul\", {\r\n \"class\": \"content-list\"\r\n }).injectInside(this.containerEl);\r\n\r\n if (this.options.viewAll) {\r\n var viewAllEl = new Element(\"span\", {\r\n \"class\": \"content-view-all\",\r\n \"text\": \"View All\"\r\n }).injectInside(this.headerEl);\r\n\r\n viewAllEl.addOnClick(function() {\r\n Librarian.Modules.Nav.navigateToPage(self.options.pageName);\r\n });\r\n }\r\n\r\n items.forEach(function(item) {\r\n var data = Object.toLowerKeys(item),\r\n value = (self.options.showDate\r\n ? Librarian.Utils.extractDateFromString(data.importdate).format(\"%m/%d/%Y\") + \" - \"\r\n : '') + data.name;\r\n\r\n var listItemEl = new Element(\"li\", {\r\n \"class\": \"content-item\"\r\n }).injectInside(listEl);\r\n\r\n var iconEl = new Element(\"img\", {\r\n \"class\": \"content-icon\",\r\n src: Librarian.Utils.getContentTypeIcon(data)\r\n }).injectInside(listItemEl);\r\n\r\n var linkEl = new Element(\"span\", {\r\n \"class\": \"content-name\",\r\n \"text\": value,\r\n \"title\": data.name\r\n }).injectInside(listItemEl);\r\n\r\n if (self.options.detailed) {\r\n\r\n var bookmarkEl = new Element(\"div\", {\r\n \"class\": \"content-bookmark\"\r\n }).injectInside(listItemEl); \r\n\r\n Librarian.Bookmarks.getBookmarkId(data.contentid,\r\n data.contenttype,\r\n function(bookmarkId) {\r\n if (bookmarkId > 0) {\r\n bookmarkEl.addClass(\"bookmarked\");\r\n bookmarkEl.bookmarkId = bookmarkId;\r\n }\r\n });\r\n\r\n var threeDotEl = new Element(\"div\", {\r\n \"class\": \"content-menu-icon\"\r\n }).injectInside(listItemEl);\r\n\r\n var menuEl = new Element(\"div\", {\r\n \"class\": \"content-menu-wrapper\"\r\n }).injectInside(listItemEl);\r\n\r\n var downloadEl = new Element(\"div\", {\r\n \"text\": \"Download\"\r\n }).injectInside(menuEl);\r\n\r\n var cartEl = new Element(\"div\", {\r\n \"text\": \"Add File\"\r\n }).injectInside(menuEl);\r\n\r\n if (self.options.showShareLink) {\r\n var shareEl = new Element(\"div\", {\r\n \"text\": \"Share\"\r\n }).injectInside(menuEl);\r\n }\r\n\r\n var viewEl = new Element(\"div\", {\r\n \"text\": \"View in Library\"\r\n }).injectInside(menuEl);\r\n\r\n if (self.options.showGetLink) {\r\n var getLinkEl = new Element(\"div\", {\r\n \"text\": \"Get Link\"\r\n }).injectInside(menuEl);\r\n\r\n getLinkEl.addOnClick(function() {\r\n Librarian.Utils.getLink(data);\r\n });\r\n }\r\n\r\n menuEl.hide();\r\n\r\n threeDotEl.addEvent('mouseenter', function() {\r\n menuEl.show();\r\n menuEl.removeClass(\"open-above\");\r\n\r\n var menuRect = menuEl.getBoundingClientRect();\r\n var contRect = self.containerEl.getBoundingClientRect();\r\n var openAbove = menuRect.bottom > contRect.bottom;\r\n\r\n menuEl.toggleClass(\"open-above\", openAbove);\r\n\r\n menuRect = menuEl.getBoundingClientRect();\r\n var openLeft = menuRect.top < contRect.top;\r\n\r\n menuEl.toggleClass(\"open-left\", (openAbove && openLeft));\r\n\r\n threeDotEl.addClass(\"active\");\r\n });\r\n\r\n menuEl.addEvent('mouseenter', function() {\r\n menuEl.show();\r\n threeDotEl.addClass(\"active\");\r\n });\r\n\r\n threeDotEl.addEvent('mouseleave', function() {\r\n menuEl.hide();\r\n threeDotEl.removeClass(\"active\");\r\n });\r\n\r\n menuEl.addEvent('mouseleave', function() {\r\n menuEl.hide();\r\n threeDotEl.removeClass(\"active\");\r\n });\r\n\r\n downloadEl.addOnClick(function () {\r\n Library.downloadData(data);\r\n });\r\n\r\n cartEl.addOnClick(function () {\r\n // Can't add to the cart if we don't have a cart\r\n if (!Librarian.userCart)\r\n return;\r\n\r\n var item = self.prepCartItem(data, 1),\r\n onComplete = function(success, notifyType) {\r\n Librarian.Utils.showCartNotification(item, notifyType, success);\r\n\r\n // Update the checkboxes on the main page\r\n Librarian.Utils.updateAllCheckboxes();\r\n\r\n Librarian.Cart.onChange();\r\n\r\n // If we're in the cart and we just removed ourselves,\r\n // close the window to prevent switching errors.\r\n if (success && (notifyType == Librarian.cartNotificationTypes.removed) && this.isInCart)\r\n this.close();\r\n }.bind(this);\r\n\r\n // If it's already in the cart, prompt the user to remove it\r\n if (Librarian.userCart.isInCart(item, true)) {\r\n Librarian.userCart.removeFromCart(item, null, null, null, null, function() {\r\n onComplete(!Librarian.userCart.isInCart(item), Librarian.cartNotificationTypes.removed);\r\n });\r\n }\r\n // Otherwise, add it\r\n else\r\n onComplete(Librarian.userCart.addToCart(item), Librarian.cartNotificationTypes.added);\r\n });\r\n\r\n if (shareEl) {\r\n shareEl.addOnClick(function () {\r\n var eventType = Librarian.eventType.oneOff;\r\n this.sendWindow = new Librarian.EventSendWindow({\r\n onCloseComplete: function () {\r\n this.sendFileWindow = null;\r\n }.bind(this),\r\n eventType: eventType\r\n }, data);\r\n this.sendWindow.show();\r\n });\r\n }\r\n\r\n viewEl.addOnClick(function () {\r\n var tree = Library.getTreeByType(Librarian.catType.file, null, data.prestype);\r\n Librarian.Utils.getPath(data, function(path) {\r\n if (path != null)\r\n Library.loadLibraryTab();\r\n Librarian.Utils.selectTreeNodeByPath(tree, path);\r\n });\r\n });\r\n\r\n new Element('span', {\r\n \"class\": \"content-field\",\r\n \"text\": \"Last Modifed: \" + Librarian.Utils.getDateValue(data.lastmoddate, \"%x %X\")\r\n }).injectInside(listItemEl);\r\n\r\n new Element('span', {\r\n \"class\": \"content-field\",\r\n \"text\": \"Author: \" + (data.extrafields.Author || \"\")\r\n }).injectInside(listItemEl);\r\n\r\n bookmarkEl.addOnClick(function() {\r\n var self = this;\r\n if (this.hasClass(\"bookmarked\")) {\r\n Librarian.Bookmarks.deleteBookmark(this.bookmarkId,\r\n data.contentid,\r\n data.contenttype,\r\n function() {\r\n self.removeClass(\"bookmarked\");\r\n }.bind(this));\r\n\r\n } else {\r\n Librarian.Bookmarks.addBookmark(data.contentid,\r\n data.contenttype,\r\n function(bookmarkId) {\r\n self.addClass(\"bookmarked\");\r\n this.bookmarkId = bookmarkId;\r\n }.bind(this));\r\n }\r\n });\r\n }\r\n\r\n // Add the onClick handler to open the Preview window if that is our set action\r\n if (self.options.action === \"preview\") {\r\n linkEl.data = data;\r\n linkEl.addOnClick(function() {\r\n Librarian.PreviewWindow.openPreviewWindow(this.data);\r\n });\r\n }\r\n // Otherwise, if the set action is to open the location of the file\r\n else if (self.options.action === \"open\") {\r\n var url = '#';\r\n\r\n // Build the url from the data we have\r\n if (data.fileid > 0)\r\n url += \"fileid=\" + data.fileid;\r\n else if (data.groupid > 0)\r\n url += \"groupid=\" + data.groupid;\r\n\r\n // Including the cat ID if we have it\r\n if (data.extrafields && data.extrafields.CatID != null)\r\n url += \"&catid=\" + data.extrafields.CatID;\r\n else if (data.catid > 0)\r\n url += \"&catid=\" + data.catid;\r\n\r\n // And set that as the url for this link\r\n linkEl.href = url + \"&type=\" + this.options.catType;\r\n }\r\n // Lastly, if the set action is to download and this is a file\r\n else if ((this.options.action === \"download\") && (data.fileid > 0)) {\r\n // Set the source and target\r\n linkEl.href = Librarian.Utils.getFileDownloadUrl(data.fileid);\r\n linkEl.target = \"_download\";\r\n }\r\n });\r\n },\r\n\r\n prepCartItem: function(data, type) {\r\n if (!Librarian.Cart)\r\n return data;\r\n\r\n var item = new Librarian.Cart.Item(data);\r\n if ((type == Librarian.Utils.getItemTypeString(this.options.data)) && (this.options.data.slidenumber < 1))\r\n item.slidenumber = 1;\r\n // Files\r\n else if (type == Librarian.Lang.getString(\"item\")) {\r\n if (this.options.data.slidenumber != 0)\r\n item.slidenumber = 0;\r\n item.itemnumber = undefined;\r\n if (this.options.data.slideid != 0)\r\n item.slideid = 0;\r\n // Restore the parent extra fields if we're adding this as an item\r\n if (this.options.parentData && this.options.parentData.extrafields)\r\n item.extrafields = this.options.parentData.extrafields;\r\n }\r\n // Slides/Pages\r\n // If there is parent data and they have extra fields, save the extrafields as parents fields\r\n else if (this.options.parentData && this.options.parentData.extrafields)\r\n item.parentfields = this.options.parentData.extrafields;\r\n\r\n // Reset the add type for this item so the cart can process it correctly\r\n item.addType = null;\r\n\r\n return item;\r\n }\r\n});","Librarian.Modules.RecentActivity = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-recentactivity-\",\r\n count: 5,\r\n dayRange: 7,\r\n trackerTabNames: [\"Tracking\", \"Tracker\", \"Portal Tracker\", \"PortalTracker\", \"Track\"]\r\n },\r\n\r\n initialize: function (options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n var url = Librarian.path.getMethodUrl(\"getrar\") + \"&out=ujson&count=\" + this.options.count;\r\n if (this.options.dayRange > 0) {\r\n var date = new Date();\r\n date = Librarian.Utils.extractDateFromString(date.setDate(date.getDate() - this.options.dayRange));\r\n\r\n url += \"&sdate=\" + encodeURIComponent(date.format(\"%m/%d/%Y\"));\r\n }\r\n\r\n this.request = new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: this.onDataLoaded.bind(this),\r\n onFailure: Librarian.Utils.onFailure\r\n });\r\n this.request.send();\r\n },\r\n\r\n onDataLoaded: function(data) {\r\n if (!data || (data.length == 0))\r\n return;\r\n\r\n for (var i = 0, length = data.length; i < length; i++) {\r\n var itemEl = new Element(\"div\", {\r\n \"class\": (this.options.classPrefix || '') + \"item\"\r\n }).injectInside(this.containerEl);\r\n\r\n var firstName = (data[i].FirstName || '').trim(),\r\n lastName = (data[i].LastName || '').trim();\r\n if ((firstName.length + lastName.length) > 0) {\r\n if (firstName.length > 0) {\r\n new Element(\"span\", {\r\n \"class\": (this.options.classPrefix || '') + \"firstname\",\r\n \"text\": firstName\r\n }).injectInside(itemEl);\r\n }\r\n\r\n if (lastName.length > 0) {\r\n new Element(\"span\", {\r\n \"class\": (this.options.classPrefix || '') + \"lastname\",\r\n \"text\": lastName\r\n }).injectInside(itemEl);\r\n }\r\n }\r\n else {\r\n var email = (data[i].Email || '').trim(),\r\n atIndex = email.indexOf('@');\r\n\r\n if (atIndex >= 0)\r\n email = email.substring(0, atIndex);\r\n\r\n new Element(\"span\", {\r\n \"class\": (this.options.classPrefix || '') + \"lastname\",\r\n \"text\": email\r\n }).injectInside(itemEl);\r\n }\r\n\r\n var time = Librarian.Utils.extractDateFromString(data[i].ActiveDate).toPrettyFormat(null, false, true);\r\n new Element(\"span\", {\r\n \"class\": (this.options.classPrefix || '') + \"time\",\r\n \"text\": time\r\n }).injectInside(itemEl);\r\n\r\n var self = this;\r\n itemEl.set(\"sessionId\", data[i].LastSessionId);\r\n itemEl.addOnClick(function() {\r\n // Load the portal tracker and pass the session ID in as a property of the tab itself\r\n for (var j = self.options.trackerTabNames.length; j--;) {\r\n var tab = Library.getTabByName(self.options.trackerTabNames[j]);\r\n if (tab) {\r\n if(tab.id)\r\n var tabId = tab.id.replace(/[^a-z]/gi, '').toLowerCase();\r\n //if tab ID isn't set in init file use label as id.\r\n else\r\n var tabId = self.options.trackerTabNames[j].replace(/[^a-z]/gi, '').toLowerCase();\r\n var tabEl = $(tabId);\r\n\r\n if (tabEl)\r\n tabEl.set(\"sessionId\", this.get(\"sessionId\"));\r\n\r\n Library.loadTabByName(tabId);\r\n return;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n});","Librarian.Modules.RecentEvents = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"onEventsLoaded\"],\r\n\r\n options: {\r\n classPrefix: \"modules-recentevents-\",\r\n eventType: Librarian.eventType.oneOff,\r\n orderBy: \"ExecTime\",\r\n order: \"desc\",\r\n count: 10,\r\n showDate: true,\r\n dateFormat: \"%m/%d/%Y\"\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n this.request = Librarian.Events.getArchivedUserEvents(this.options.eventType, this.options.count, this.options.orderBy, this.options.order, \"ujson\", this.onEventsLoaded);\r\n },\r\n\r\n onEventsLoaded: function(json) {\r\n if (!json)\r\n return;\r\n\r\n this.containerEl.empty();\r\n\r\n var listEl = new Element(\"ul\").injectInside(this.containerEl);\r\n\r\n for (var i = 0; i < json.length; i++) {\r\n var event = json[i],\r\n date = Librarian.Utils.extractDateFromString(event.ExecTime).format(this.options.dateFormat);\r\n\r\n // Create the list item and link for this file\r\n var listItemEl = new Element(\"li\", {\r\n \"class\": (this.options.classPrefix || '') + \"item\"\r\n }).injectInside(listEl),\r\n linkEl = new Element(\"a\", {\r\n \"class\": (this.options.classPrefix || '') + \"link\",\r\n \"text\": this.options.showDate ? (date + \" - \" + event.Name) : event.Name,\r\n \"title\": event.Name,\r\n \"href\": \"javascript:void(0)\",\r\n \"target\": \"_download\"\r\n }).injectInside(listItemEl);\r\n\r\n linkEl.data = Object.toLowerKeys(event);\r\n linkEl.addOnClick(function() {\r\n var managerWindow = new Librarian.EventManagerWindow();\r\n managerWindow.show();\r\n\r\n if (this.data.eventid > 0) {\r\n var detailWindow = new Librarian.EventDetailsWindow({\r\n eventId: this.data.eventid,\r\n grid: managerWindow.grid\r\n });\r\n detailWindow.show();\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n }\r\n});","Librarian.Modules.RecentFilesLinks = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"viewAll\", \"getCustomData\", \"clickHandler\"],\r\n\r\n options: {\r\n classPrefix: \"modules-recentfileslinks-\",\r\n label: null,\r\n importDate: null,\r\n viewOption: null,\r\n excludeCategory: null,\r\n catType: Librarian.catType.file,\r\n action: \"preview\" // \"download\", or \"preview\"\r\n },\r\n\r\n initialize: function (options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function () {\r\n var self = this;\r\n\r\n if (!this.wrapperEl) {\r\n return;\r\n }\r\n\r\n this.parent();\r\n\r\n if (!this.containerEl) {\r\n return;\r\n }\r\n\r\n if (this.options.isSquare) {\r\n // add view all button\r\n new Element(\"span\", {\r\n \"class\": \"viewAll\",\r\n events: {\r\n click: this.viewAll\r\n },\r\n text: Librarian.Lang.getString(\"homepage_viewall\"),\r\n \"data-translation\": \"homepage_viewall\"\r\n }).injectInside(this.wrapperEl);\r\n }\r\n\r\n Librarian.Utils.getNewestFiles(7, function (response) {\r\n response.data.forEach(function (file) {\r\n if (self.options.nameMeta)\r\n var name = file.extrafields[self.options.nameMeta] || file.name;\r\n else\r\n var name = file.name;\r\n var linkEl = new Element(\"div\", {\r\n \"class\": \"file-link\",\r\n events: {\r\n click: function (event) {\r\n self.clickHandler(event, file);\r\n }\r\n }\r\n }).injectInside(self.containerEl);\r\n\r\n new Element(\"img\", {\r\n \"class\": \"file-link-icon\",\r\n src: Librarian.Utils.getContentTypeIcon(file)\r\n }).injectInside(linkEl);\r\n\r\n new Element(\"span\", {\r\n \"class\": \"file-link-text\",\r\n text: name,\r\n title: name\r\n }).injectInside(linkEl);\r\n\r\n if (self.options.importDate == \"true\") {\r\n linkEl.addClass(\"date\");\r\n\r\n new Element(\"div\", {\r\n \"class\": \"file-link-date\",\r\n text: Librarian.Utils.extractDateFromString(file.importdate).format(\"%m/%d/%y\")\r\n }).injectInside(linkEl);\r\n }\r\n });\r\n }, null, null, null, true, self.getCustomData);\r\n },\r\n\r\n clickHandler: function (event, file) {\r\n event.stopPropagation();\r\n\r\n if (this.options.action === \"preview\") {\r\n Librarian.PreviewWindow.openPreviewWindow(file);\r\n }\r\n\r\n else if (this.options.action === \"open\") {\r\n var url = '#';\r\n\r\n // Build the url from the data we have\r\n if (file.fileid > 0)\r\n url += \"fileid=\" + file.fileid;\r\n else if (file.groupid > 0)\r\n url += \"groupid=\" + file.groupid;\r\n\r\n // Including the cat ID if we have it\r\n if (file.extrafields && file.extrafields.CatID != null)\r\n url += \"&catid=\" + file.extrafields.CatID;\r\n else if (file.catid > 0)\r\n url += \"&catid=\" + file.catid;\r\n\r\n // And set that as the url for this link\r\n document.location.href = url + \"&type=\" + this.options.catType;\r\n }\r\n },\r\n\r\n viewAll: function () {\r\n Librarian.ContentLists.showNewestFiles();\r\n },\r\n\r\n getCustomData: function (data, url) {\r\n var resultOptions = {\r\n data: {},\r\n url: url\r\n };\r\n\r\n if ((typeof Library.getSendData == \"function\")) {\r\n var sendData = Library.getSendData(data, url);\r\n\r\n if (sendData != null) {\r\n resultOptions = sendData;\r\n }\r\n }\r\n\r\n if (this.options.excludeCategory != null) {\r\n if (!resultOptions.url.contains(\"in=ujson\")) {\r\n resultOptions.url += \"&in=ujson\";\r\n }\r\n\r\n resultOptions.data.ExcludeFields = {\r\n \"FilePath\": this.options.excludeCategory\r\n }\r\n }\r\n\r\n if (this.options.params != null) {\r\n resultOptions.url += \"&\" + Object.toQueryString(this.options.params);\r\n }\r\n\r\n return resultOptions;\r\n }\r\n});","Librarian.Modules.RecentGroupsLinks = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"viewAll\", \"getCustomData\", \"clickHandler\"],\r\n\r\n options: {\r\n classPrefix: \"modules-recentgroupslinks-\",\r\n label: null,\r\n importDate: null,\r\n viewOption: null,\r\n excludeCategory: null,\r\n catType: Librarian.catType.globalFavorite,\r\n maxResults: 7,\r\n action: \"preview\" // \"download\", or \"preview\"\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n var self = this;\r\n\r\n if (!this.wrapperEl) {\r\n return;\r\n }\r\n\r\n this.parent();\r\n\r\n if (!this.containerEl) {\r\n return;\r\n }\r\n\r\n if (this.options.isSquare) {\r\n // add view all button\r\n new Element(\"span\", {\r\n \"class\": \"viewAll\",\r\n events: {\r\n click: this.viewAll\r\n },\r\n text: Librarian.Lang.getString(\"homepage_viewall\"),\r\n \"data-translation\": \"homepage_viewall\"\r\n }).injectInside(this.wrapperEl);\r\n }\r\n\r\n var layout = function (response) {\r\n var data = response;\r\n if (response && response.data)\r\n data = response.data;\r\n if (response && response.groups)\r\n data = response.groups;\r\n data.forEach(function(file) {\r\n var linkEl = new Element(\"div\",\r\n {\r\n \"class\": \"file-link\",\r\n events: {\r\n click: function(event) {\r\n self.clickHandler(event, file);\r\n }\r\n }\r\n }).injectInside(self.containerEl);\r\n\r\n new Element(\"img\",\r\n {\r\n \"class\": \"file-link-icon\",\r\n src: Librarian.Utils.getContentTypeIcon(file)\r\n }).injectInside(linkEl);\r\n\r\n new Element(\"span\",\r\n {\r\n \"class\": \"file-link-text\",\r\n text: file.name,\r\n title: file.name\r\n }).injectInside(linkEl);\r\n\r\n if (self.options.importDate == \"true\") {\r\n linkEl.addClass(\"date\");\r\n\r\n new Element(\"div\",\r\n {\r\n \"class\": \"file-link-date\",\r\n text: Librarian.Utils.extractDateFromString(file.importdate).format(\"%m/%d/%y\")\r\n }).injectInside(linkEl);\r\n }\r\n });\r\n };\r\n\r\n //Get groups from only root cat if root files filter added\r\n if (this.options.rootfiles && this.options.rootfiles == \"true\") {\r\n new Librarian.Request.JSON({\r\n url: Librarian.path.getMethodUrl(\"getcg\") + \"&out=cjson&cid=\" + Librarian.specialCategories.GlobalFavorites.CatId + \"&vname=SearchGroups\",\r\n onSuccess: function(json) {\r\n return layout(json);\r\n }\r\n }).send();\r\n } else {\r\n Librarian.Utils.getNewestGroups(this.options.maxResults, function (response) {\r\n return layout(response);\r\n }, null, null, null, true, self.getCustomData);\r\n }\r\n },\r\n\r\n clickHandler: function(event, file) {\r\n event.stopPropagation();\r\n\r\n if (this.options.action === \"preview\") {\r\n Librarian.PreviewWindow.openPreviewWindow(file);\r\n }\r\n\r\n else if (this.options.action === \"open\") {\r\n var url = '#';\r\n\r\n // Build the url from the data we have\r\n if (file.fileid > 0)\r\n url += \"fileid=\" + file.fileid;\r\n else if (file.groupid > 0)\r\n url += \"groupid=\" + file.groupid;\r\n\r\n // Including the cat ID if we have it\r\n if (file.extrafields && file.extrafields.CatID != null)\r\n url += \"&catid=\" + file.extrafields.CatID;\r\n else if (file.catid > 0)\r\n url += \"&catid=\" + file.catid;\r\n\r\n // And set that as the url for this link\r\n document.location.href = url + \"&type=\" + this.options.catType;\r\n }\r\n },\r\n\r\n viewAll: function(event) {\r\n var self = this;\r\n\r\n if (this.options.rootfiles && this.options.rootfiles == \"true\") {\r\n var hash = \"catid=\" + Librarian.specialCategories.GlobalFavorites.CatId + \"&type=\" + Librarian.catType.globalFavorite;\r\n Librarian.Utils.changeHash(hash);\r\n Librarian.Utils.onHashChange(hash, true);\r\n } else {\r\n Librarian.Utils.getNewestGroups(20, function (response) {\r\n\r\n Librarian.Homepage.hide();\r\n if (self.options.viewOption) {\r\n Librarian.ListView.prepTreeGrid(1, 0);\r\n fileList.setData(response);\r\n } else\r\n tileList.loadFromArray(response.data);\r\n\r\n var itemEl = $(\"pageheader\");\r\n if (itemEl) {\r\n itemEl.show();\r\n }\r\n\r\n if (Librarian.pageheader != null) {\r\n Librarian.pageHeader.destroy();\r\n Librarian.pageHeader = null;\r\n }\r\n\r\n $('myInProgress').empty();\r\n\r\n Librarian.pageHeader = new Librarian.PageHeader({\r\n name: \"Newest Groups\",\r\n showHeaderMenu: false\r\n });\r\n\r\n }, null, null, null, true, self.getCustomData);\r\n }\r\n },\r\n\r\n getCustomData: function (data, url) {\r\n var resultOptions = {\r\n data: {},\r\n url: url\r\n };\r\n\r\n if ((typeof Library.getSendData == \"function\")) {\r\n var sendData = Library.getSendData(data, url);\r\n\r\n if (sendData != null) {\r\n resultOptions = sendData;\r\n }\r\n }\r\n \r\n if (this.options.excludeCategory != null) {\r\n if (!resultOptions.url.contains(\"in=ujson\")) {\r\n resultOptions.url += \"&in=ujson\";\r\n }\r\n\r\n resultOptions.data.ExcludeFields = {\r\n \"FilePath\": this.options.excludeCategory\r\n }\r\n }\r\n\r\n return resultOptions;\r\n }\r\n\r\n});","Librarian.Modules.RecentlyAdded = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-recentlyadded-\",\r\n id: \"recentlyAdded\",\r\n label: \"Recently Added\",\r\n folderPath: \"MasterLibrary/RecentlyAdded\"\r\n },\r\n\r\n initialize: function (options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n\r\n var self = this;\r\n wrapperEl.addEvent(\"click\", function() {\r\n Librarian.Utils.selectTreeNodeByPath(treeView, self.options.folderPath, null, true);\r\n });\r\n },\r\n\r\n load: function () {\r\n this.parent();\r\n\r\n var label = (this.options.label || '').trim();\r\n if (label.length > 0) {\r\n new Element(\"div\", {\r\n \"class\": \"nav-label\",\r\n \"html\": Librarian.Lang.getString(label),\r\n \"data-translation\": label\r\n }).injectInside(this.containerEl);\r\n }\r\n }\r\n});","Librarian.Modules.Reports = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-reports-\",\r\n tabName: \"Reports\", \r\n label: null, \r\n subtabName: null\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl || (!this.options.tabName)) {\r\n return;\r\n }\r\n var self = this;\r\n this.parent();\r\n\r\n this.wrapperEl.addOnClick(function(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n var tabName = (self.options.tabName || \"Reports\").trim().toLowerCase();\r\n\r\n if(self.options.subtabName) {\r\n var subtab = self.options.subtabName.toLowerCase().trim();\r\n\r\n if(subtab === \"sales\") {\r\n Library.loadTabByName(tabName, null, \"sales\");\r\n } else if(subtab === \"content\") {\r\n Library.loadTabByName(tabName, null, \"content\");\r\n } else if(subtab === \"activities\") {\r\n Library.loadTabByName(tabName, null, \"activities\");\r\n }\r\n \r\n } else {\r\n Library.loadTabByName(tabName);\r\n }\r\n\r\n });\r\n\r\n var label = (this.options.label || '').trim();\r\n if (label.length > 0) {\r\n new Element(\"div\", {\r\n \"class\": \"nav-label\",\r\n \"html\": Librarian.Lang.getString(label),\r\n \"data-translation\": label\r\n }).injectInside(this.containerEl);\r\n }\r\n }\r\n\r\n});","Librarian.Modules.Rss = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-rss-\",\r\n url: \"https://news.yahoo.com/rss/\",\r\n method: \"readrssfeed\",\r\n requiresAuthentication: false,\r\n username: \"\",\r\n password: \"\",\r\n showThumbnail: true,\r\n limit: \"\",\r\n customFormat: null,\r\n linkPrefix: \"\"\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n // Create the container element and generate the URL\r\n var self = this,\r\n listEl = new Element(\"ul\").injectInside(this.containerEl),\r\n url = Librarian.path.getMethodUrl(this.options.method) + \"&out=cjson&url=\" + encodeURIComponent(this.options.url) + \"&rssauth=\" + this.options.requiresAuthentication;\r\n\r\n if (this.options.requiresAuthentication)\r\n url += \"&rssuname=\" + this.options.username + \"&rsspwd=\" + this.options.password;\r\n\r\n this.request = new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: function(json) {\r\n if (!json)\r\n return;\r\n\r\n if (typeof json != \"object\") {\r\n var data = JSON.parse(json);\r\n for (var i = 0, length = data.length; i < length; i++) {\r\n self.renderItem(data[i], listEl);\r\n }\r\n }\r\n\r\n else {\r\n var feedData = json.entries,\r\n content,\r\n length = feedData.length;\r\n\r\n listEl.empty();\r\n\r\n if ((typeof this.options.limit == \"number\") && (this.options.limit >= 0))\r\n length = Math.min(length, this.options.limit);\r\n\r\n for (var i = 0; i < length; i++) {\r\n if (!this.options.showThumbnail)\r\n content = this.removeImages(feedData[i].content);\r\n else\r\n content = feedData[i].content;\r\n\r\n // Replace encoded NBSPs in the content\r\n content = content.replaceAll(\" \", ' ');\r\n \r\n if (this.options.customFormat && typeOf(this.options.customFormat) == \"function\") {\r\n content = this.options.customFormat(content);\r\n }\r\n\r\n var listItemEl = new Element(\"li\", {\r\n \"class\": \"rss-feed\"\r\n }).injectInside(listEl),\r\n rssHeading = new Element(\"h2\", {\r\n\r\n }).injectInside(listItemEl);\r\n\r\n new Element(\"a\", {\r\n \"class\": \"rss-title\",\r\n \"href\": feedData[i].links ? feedData[i].links[0] : '#',\r\n \"target\": '_' + (new Date()).getTime(),\r\n \"text\": feedData[i].title\r\n }).injectInside(rssHeading);\r\n\r\n var dateText = '';\r\n if (feedData[i].authors && (feedData[i].authors.length > 0))\r\n dateText = \"By: \" + feedData[i].authors.map(function(item) {\r\n return item.name || item.email;\r\n }).join(\", \");\r\n\r\n if (feedData[i].publishedDate) {\r\n if (dateText.length > 0)\r\n dateText += ' ';\r\n dateText += \"Posted on: \" + new Date(feedData[i].publishedDate).format(\"%x %X\");\r\n }\r\n\r\n new Element(\"div\", {\r\n \"class\": \"rss-date\",\r\n \"html\": dateText\r\n }).injectInside(rssHeading);\r\n new Element(\"div\", {\r\n \"html\": content,\r\n \"class\": \"rss-content\"\r\n }).injectInside(listItemEl);\r\n }\r\n }\r\n }.bind(this),\r\n onFailure: Librarian.Utils.onFailure\r\n });\r\n this.request.send();\r\n },\r\n\r\n renderItem: function (item, listEl) {\r\n if (!item)\r\n return;\r\n\r\n var header = (item.header || '').trim();\r\n if (header.length > 0) {\r\n var headerEl = new Element(\"li\", {\r\n \"class\": \"rss-feed-header\"\r\n }).injectInside(listEl);\r\n new Element(\"h2\", {\r\n \"text\": header\r\n }).injectInside(headerEl);\r\n }\r\n\r\n if (!item.items)\r\n return;\r\n\r\n for (var i = 0, length = item.items.length; i < length; i++)\r\n this.renderSubItem(item.items[i], listEl);\r\n },\r\n\r\n renderSubItem: function (item, listEl) {\r\n if (!item)\r\n return;\r\n\r\n var contEl = new Element(\"li\", {\r\n \"class\": \"rss-feed\"\r\n }).injectInside(listEl);\r\n\r\n var headerEl = new Element(\"h2\").injectInside(contEl);\r\n var linkEl = new Element(\"a\", {\r\n \"href\": this.options.linkPrefix + item.link || '#',\r\n \"target\": \"_blank\"\r\n }).injectInside(headerEl);\r\n new Element(\"span\", {\r\n \"class\": \"rss-title content-header\",\r\n \"text\": (item.title || '').trim()\r\n }).injectInside(linkEl);\r\n\r\n var subTitle = (item.subTitle || '').trim();\r\n if (subTitle.length > 0) {\r\n new Element(\"div\", {\r\n \"class\": \"rss-date\",\r\n \"text\": subTitle\r\n }).injectInside(headerEl);\r\n }\r\n\r\n var bodyEl = new Element(\"div\", {\r\n \"class\": \"rss-content\"\r\n }).injectInside(contEl);\r\n var nodeEl = new Element(\"div\", {\r\n \"class\": \"node-body article-body\"\r\n }).injectInside(bodyEl);\r\n new Element(\"p\", {\r\n \"text\": (item.text || '').trim()\r\n }).injectInside(nodeEl);\r\n },\r\n\r\n removeImages: function(content) {\r\n var contentEl = new Element(\"div\", {\r\n \"html\": content\r\n });\r\n\r\n contentEl.getElements(\"a > img\").getParent().destroy();\r\n contentEl.getElements(\"img\").destroy();\r\n\r\n return contentEl.get(\"html\");\r\n }\r\n});","Librarian.Modules.Search = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"onSearchBoxKeyDown\", \"onSearchClick\", \"onClearClick\", \"onAdvancedClick\"],\r\n\r\n options: {\r\n classPrefix: \"modules-search-\",\r\n advancedSearchText: '',\r\n searchButtonText: '',\r\n searchPlaceholder: '',\r\n customSearch: null\r\n },\r\n\r\n searchBoxEl: null,\r\n searchButtonEl: null,\r\n clearButtonEl: null,\r\n advancedSearchEl: null,\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n var self = this;\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n this.searchBoxWrapperEl = new Element(\"div\",\r\n {\r\n \"id\": this.options.id + \"_searchBox-wrapper\"\r\n }).injectInside(this.containerEl);;\r\n\r\n this.searchBoxEl = new Element(\"input[type=text]\", {\r\n \"placeholder\": this.options.searchPlaceholder || Librarian.Lang.getString(\"modules_search_placeholder\"),\r\n \"id\": this.options.id + \"_searchBox\",\r\n \"class\": (this.options.classPrefix || '') + \"box\"\r\n }).injectInside(this.searchBoxWrapperEl);\r\n this.searchBoxEl.addEvent(\"keydown\", this.onSearchBoxKeyDown);\r\n\r\n Librarian.ElasticSearch.Autocomplete.createAutoCompleteElement(this.searchBoxEl);\r\n\r\n this.searchIcon = new Element(\"div\",\r\n {\r\n \"class\": \"search-icon\"\r\n }).injectInside(this.searchBoxWrapperEl);\r\n this.searchIcon.addOnClick(function() {\r\n Library.searchToolbarSubmit(self.searchBoxEl.id, self.options.customSearch);\r\n });\r\n\r\n var buttonContEl = new Element(\"div\", {\r\n \"class\" : (this.options.classPrefix || '') + \"button-wrapper\"\r\n }).injectInside(this.containerEl);\r\n\r\n this.searchButtonEl = new Element(\"input[type=button]\", {\r\n \"value\": this.options.searchButtonText || Librarian.Lang.getString(\"search\"),\r\n \"class\": (this.options.classPrefix || '') + \"button pure-button\"\r\n }).injectInside(buttonContEl);\r\n this.searchButtonEl.addOnClick(this.onSearchClick);\r\n\r\n this.clearButtonEl = new Element(\"input[type=button]\", {\r\n \"value\": Librarian.Lang.getString(\"clear\"),\r\n \"class\": (this.options.classPrefix || '') + \"clear pure-button\"\r\n }).injectInside(buttonContEl);\r\n this.clearButtonEl.addOnClick(this.onClearClick);\r\n\r\n this.advancedSearchEl = new Element(\"a\", {\r\n \"text\": this.options.advancedSearchText || (Librarian.Lang.getString(\"search_advanced\") + \" >\"),\r\n \"href\": \"javascript:void(0)\",\r\n \"class\": (this.options.classPrefix || '') + \"advanced\"\r\n }).injectInside(this.containerEl);\r\n this.advancedSearchEl.addOnClick(this.onAdvancedClick);\r\n },\r\n\r\n destroy: function() {\r\n var elements = [this.searchBoxEl, this.searchButtonEl, this.clearButtonEl, this.advancedSearchEl];\r\n for (var i = elements.length; i--;) {\r\n if (elements[i]) {\r\n $(elements[i]).destroy();\r\n elements[i] = null;\r\n }\r\n }\r\n\r\n this.parent();\r\n },\r\n\r\n onSearchBoxKeyDown: function(e) {\r\n if (!this.searchBoxEl)\r\n return;\r\n\r\n var evt = new Event(e);\r\n if (evt.keyCode == 13)\r\n Library.searchToolbarSubmit(this.searchBoxEl.id, this.options.customSearch);\r\n },\r\n\r\n onSearchClick: function() {\r\n if (!this.searchBoxEl)\r\n return;\r\n\r\n // If \"modified\" hasn't been set, no value has been entered in the box and we don't want to search on the default\r\n if (typeof this.searchBoxEl.modified != \"boolean\")\r\n return;\r\n\r\n Library.searchToolbarSubmit(this.searchBoxEl.id, this.options.customSearch);\r\n },\r\n\r\n onClearClick: function() {\r\n if (!this.searchBoxEl)\r\n return;\r\n\r\n this.searchBoxEl.value = this.options.searchPlaceholder || Librarian.Lang.getString(\"modules_search_placeholder\");\r\n this.searchBoxEl.modified = true;\r\n },\r\n\r\n onAdvancedClick: function() {\r\n Library.loadTabByName(\"search\");\r\n return false;\r\n }\r\n});","Librarian.Modules.Tabs = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"setUpTabs\", \"goToTab\"],\r\n\r\n options: {\r\n classPrefix: \"modules-tabs-\",\r\n title: null, // A placeholder that will go away if everything works correctly\r\n tabWidth: null,\r\n tabHeight: null,\r\n borderBottom: null,\r\n className: ''\r\n },\r\n\r\n tabsEl: null,\r\n tabs: null,\r\n contentWrapperEl: null,\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n destroy: function() {\r\n var elements = [this.tabsEl];\r\n for (var i = elements.length; i--;) {\r\n if (elements[i]) {\r\n $(elements[i]).destroy();\r\n elements[i] = null;\r\n }\r\n }\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n this.parent();\r\n\r\n var wrapperEl = new Element(\"div\", {\r\n \"class\": (this.options.classPrefix || '') + \"menu-wrapper\",\r\n \"styles\": {\r\n \"width\": this.options.tabWidth,\r\n \"height\": this.options.tabHeight,\r\n \"border-bottom\": this.options.borderBottom\r\n }\r\n }).injectInside(this.containerEl);\r\n\r\n this.tabsEl = new Element(\"ul\", {\r\n \"class\": (this.options.classPrefix || '') + \"menu tab-menu\"\r\n }).injectInside(wrapperEl);\r\n\r\n this.contentWrapperEl = new Element(\"div\", {\r\n \"class\": (this.options.classPrefix || '') + \"content\"\r\n }).injectInside(this.containerEl);\r\n\r\n this.tabs = [];\r\n var tabs = this.options.tabs,\r\n length = tabs.length,\r\n newTabs = [];\r\n // Remove tabs that don't have a name\r\n for (var i = 0; i < length; i++) {\r\n if (tabs[i].name)\r\n newTabs.push(tabs[i]);\r\n }\r\n tabs = newTabs;\r\n length = tabs.length;\r\n\r\n for (var i = 0; i < length; i++) {\r\n var tabName = tabs[i].name,\r\n tabPage = tabs[i].page || tabName;\r\n\r\n if (!tabName)\r\n continue;\r\n var tab = new Element(\"li\", {\r\n id: tabName.replace(/,/g, \"\").replace(/ /g, '')\r\n });\r\n new Element('a', {\r\n text: tabName\r\n })\r\n .injectInside(tab);\r\n if (this.options.className)\r\n tab.addClass(this.options.className);\r\n tab.injectInside(this.tabsEl);\r\n this.setUpTabs(tabName, tab, tabPage, tabs[i].onTabClicked);\r\n this.tabs.push(tab);\r\n if (i == 0) {\r\n this.tabs[i].addClass(\"selected\");\r\n this.goToTab(tabName, tabPage);\r\n }\r\n }\r\n MochaUI.initializeTabs(this.tabsEl);\r\n },\r\n\r\n setUpTabs: function(tabName, tabEl, tabPage, onTabClicked) {\r\n if (tabEl) {\r\n var self = this;\r\n tabEl.addOnClick(function() {\r\n if (self.currentTab == tabName)\r\n return;\r\n if (onTabClicked)\r\n onTabClicked();\r\n self.currentTab = tabName;\r\n var modules = Library.getPageModules(tabPage);\r\n if (!modules)\r\n return;\r\n Librarian.moduleLoader.loadModules(modules, self.contentWrapperEl, \"-tabs\");\r\n });\r\n }\r\n },\r\n\r\n goToTab: function(tabName, tabPage) {\r\n if (!tabName || this.currentTab == tabName || !tabPage)\r\n return;\r\n var className= '';\r\n if (this.options.className)\r\n className = '.' + this.options.className;\r\n\r\n this.containerEl.getElements(\"li.selected\" + className).removeClass(\"selected\");\r\n this.containerEl.getElement(\"#\" + tabName.replace(/,/g, \"\").replace(/ /g, '')).addClass(\"selected\");\r\n this.currentTab = tabName;\r\n var modules = Library.getPageModules(tabPage);\r\n if (!modules)\r\n return;\r\n Librarian.moduleLoader.loadModules(modules, this.contentWrapperEl, \"-tabs\");\r\n }\r\n});","Librarian.Modules.TagCloud = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"onDataLoaded\", \"drawCloud\", \"onKeywordClicked\"],\r\n\r\n options: {\r\n classPrefix: \"modules-tagcloud-\",\r\n method: \"getTopKeywordsForLibrary\",\r\n methodOptions: null,\r\n onTagCloudLoaded: null,\r\n maxKeywordsSelected: 1\r\n },\r\n\r\n data: null,\r\n url: null,\r\n svg: null,\r\n\r\n tagCloudMethods: {\r\n getTopKeywordsForLibrary: {\r\n page: \"default\",\r\n method: \"getltck\", \r\n options: {\r\n max: 20,\r\n all: false\r\n }\r\n },\r\n\r\n getTopKeywordsForCategory: {\r\n page: \"default\",\r\n method: \"getctck\",\r\n options: {\r\n cid: -1,\r\n recursive: false,\r\n max: 20,\r\n all: false\r\n }\r\n },\r\n\r\n getTopKeywordsForFile: {\r\n page: \"default\",\r\n method: \"getftck\",\r\n options: {\r\n fid: -1,\r\n max: 20,\r\n all: false\r\n }\r\n },\r\n\r\n getTopKeywordsForSlide: {\r\n page: \"default\",\r\n method: \"getstck\",\r\n options: {\r\n sid: -1,\r\n max: 20,\r\n all: false\r\n }\r\n },\r\n\r\n getOpportunityTopKeywords: {\r\n page: \"crm\",\r\n method: \"getotck\",\r\n options: {\r\n oppId: -1,\r\n crmType: Librarian.crmType.undefined,\r\n max: 20,\r\n all: false\r\n }\r\n }\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n\r\n var method = this.tagCloudMethods[this.options.method];\r\n method.options = Object.merge({}, method.options, this.options.methodOptions);\r\n this.url = this.getApiUrl(method.page, method.method, method.options);\r\n\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n new Librarian.Request.JSON({\r\n url: this.url,\r\n onSuccess: this.onDataLoaded,\r\n onFailure: Librarian.Utils.onFailure\r\n }).send();\r\n },\r\n\r\n onDataLoaded: function (data) {\r\n this.data = data;\r\n var maxScore = Math.max.apply(Math, data.map(function(tag) {\r\n return tag.totalScore;\r\n }));\r\n var maxFontSize = 100;\r\n\r\n \r\n var layout = d3.layout.cloud()\r\n .size([500, 500])\r\n .words(data.map(function (tag) {\r\n return { text: tag.keyword, size: (tag.totalScore / maxScore) * maxFontSize};\r\n }))\r\n .padding(5)\r\n .rotate(0)\r\n .font(\"Lato\")\r\n .fontSize(function (d) { return d.size; })\r\n .on(\"end\", function(words) {\r\n this.drawCloud(layout, words);\r\n }.bind(this));\r\n\r\n layout.start();\r\n },\r\n\r\n drawCloud: function(layout, words) {\r\n d3.select(this.containerEl).append(\"svg\")\r\n .attr(\"width\", layout.size()[0])\r\n .attr(\"height\", layout.size()[1])\r\n .append(\"g\")\r\n .attr(\"transform\", \"translate(\" + layout.size()[0] / 2 + \",\" + layout.size()[1] / 2 + \")\")\r\n .selectAll(\"text\")\r\n .data(words)\r\n .enter().append(\"text\")\r\n .style(\"font-size\", function (d) { return d.size + \"px\"; })\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"transform\", function (d) {\r\n return \"translate(\" + [d.x, d.y] + \")rotate(\" + d.rotate + \")\";\r\n })\r\n .text(function (d) { return d.text; });\r\n\r\n if (this.options.onTagCloudLoaded && typeOf(this.options.onTagCloudLoaded) === \"function\") {\r\n this.options.onTagCloudLoaded(this.data);\r\n }\r\n\r\n this.containerEl.getElements(\"text\").addOnClick(this.onKeywordClicked);\r\n this.containerEl.show();\r\n },\r\n\r\n onKeywordClicked: function (e) {\r\n var keywordEl = $(e.target);\r\n var classList = (keywordEl.getAttribute(\"class\") || \"\").split(/\\s+/g);\r\n\r\n if (classList.contains(\"selected\")) {\r\n this.onKeyWordDeselected(keywordEl); \r\n } else {\r\n this.onKeywordSelected(keywordEl);\r\n }\r\n },\r\n\r\n onKeywordSelected: function(keywordEl) { \r\n var currentlySelected = this.containerEl.getElements(\"text.selected\");\r\n if (currentlySelected.length >= this.options.maxKeywordsSelected) {\r\n currentlySelected.each(function (el) {\r\n var classList = (el.getAttribute(\"class\") || \"\").split(/\\s+/g);\r\n classList.erase(\"selected\");\r\n el.setAttribute(\"class\", classList.join(\" \"));\r\n });\r\n }\r\n\r\n var keywordClassList = (keywordEl.getAttribute(\"class\") || \"\").split(/\\s+/g);\r\n keywordClassList.push(\"selected\");\r\n keywordEl.setAttribute(\"class\", keywordClassList.join(\" \"));\r\n\r\n var selectedKeywords = this.containerEl.getElements(\"text.selected\").map(function(el) {\r\n return el.get(\"text\");\r\n });\r\n\r\n if (this.options.onKeywordSelected && typeOf(this.options.onKeywordSelected) === \"function\") {\r\n this.options.onKeywordSelected(keywordEl.get(\"text\"), selectedKeywords);\r\n }\r\n },\r\n\r\n onKeyWordDeselected: function (keywordEl) {\r\n var keywordClassList = (keywordEl.getAttribute(\"class\") || \"\").split(/\\s+/g);\r\n keywordClassList.erase(\"selected\");\r\n keywordEl.setAttribute(\"class\", keywordClassList.join(\" \"));\r\n\r\n var selectedKeywords = this.containerEl.getElements(\"text.selected\").map(function (el) {\r\n return el.get(\"text\");\r\n });\r\n\r\n if (this.options.onKeywordDeselected && typeOf(this.options.onKeywordDeselected === \"function\")) {\r\n this.options.onKeywordDeselected(keywordEl.get(\"text\"), selectedKeywords);\r\n }\r\n },\r\n\r\n encodeQueryData: function(data) {\r\n var ret = [];\r\n for (var d in data)\r\n ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\r\n return ret.join(\"&\");\r\n },\r\n\r\n getApiUrl: function (page, method, options) {\r\n var url;\r\n if (page == \"crm\") {\r\n url = Librarian.path.getCrmUrl(method);\r\n } else {\r\n url = Librarian.path.getMethodUrl(method);\r\n }\r\n\r\n url += \"&out=cjson\";\r\n var params = this.encodeQueryData(options);\r\n\r\n if (params) {\r\n url += \"&\" + params;\r\n }\r\n\r\n return url;\r\n }\r\n});","Librarian.Modules.Tasks = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-tasks-\",\r\n title: \"Tasks\",\r\n resultOptions: null\r\n },\r\n\r\n resultOptions: null,\r\n className: \"modules-task\",\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n if (!options.resultOptions)\r\n options.resultOptions = {};\r\n\r\n this.resultOptions = Object.merge(this.getDefaultResultOptions(), options.resultOptions);\r\n },\r\n\r\n getDefaultResultOptions: function() {\r\n return {\r\n startRow: 1,\r\n maxRows: 2400,\r\n viewName: null,\r\n fields: {},\r\n orderByColumns: [{ name: \"DueDate\", order: \"ASC\" }],\r\n crmId: -1,\r\n crmType: Librarian.crmType.opportunity,\r\n taskType: Librarian.crmTaskType.task,\r\n parentId: -1,\r\n statuses: [],\r\n startDate: null,\r\n endDate: null,\r\n state: Librarian.crmOpportunityState.active\r\n };\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n this.loadData();\r\n },\r\n\r\n loadData: function() {\r\n this.containerEl.empty();\r\n // Create the container element and generate the URL\r\n var parentContEl = new Element(\"div\").injectInside(this.containerEl),\r\n url = Librarian.path.getCrmUrl(\"getcrtsfm\") + \"&out=cjson&in=cjson\",\r\n options = this.resultOptions;\r\n\r\n if (options.taskType == Librarian.crmTaskType.event) {\r\n var today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n options.startDate = today;\r\n }\r\n\r\n options = JSON.stringify(options);\r\n if (typeof Base64 != \"undefined\")\r\n options = Base64.encode(options);\r\n\r\n this.request = new Librarian.Request.JSON({\r\n url: url,\r\n data: options,\r\n method: \"post\",\r\n onSuccess: function(tasks) {\r\n parentContEl.empty();\r\n\r\n if (!tasks || (tasks.length == 0))\r\n this.showNoTask(parentContEl);\r\n else {\r\n for (var i = 0, len = tasks.length; i < len; i++)\r\n this.buildTaskItem(tasks[i], parentContEl);\r\n }\r\n }.bind(this),\r\n onFailure: Librarian.Utils.onFailure\r\n });\r\n this.request.send();\r\n },\r\n\r\n showNoTask: function(parentContEl) {\r\n var className = this.className + \"-no-item\";\r\n parentContEl.addClass(className + \"-wrapper\");\r\n\r\n new Element(\"span\", {\r\n \"class\": className + \"-text\",\r\n \"text\": Librarian.Lang.getString(\"modules_\" + (this.resultOptions.taskType == Librarian.crmTaskType.event ? \"events\" : \"tasks\") + \"_none\")\r\n }).injectInside(parentContEl);\r\n },\r\n\r\n buildTaskItem: function(task, parentContEl) {\r\n if (!task || !parentContEl)\r\n return;\r\n\r\n var className = this.className + \"-item\",\r\n itemContEl = new Element(\"div\", {\r\n \"class\": className,\r\n \"id\": className + '-' + task.taskId\r\n }).injectInside(parentContEl);\r\n\r\n // Task Date\r\n var dueDate = Librarian.Utils.extractDateFromString(task.dueDate),\r\n day = dueDate ? dueDate.getDate() : \"---\",\r\n month = dueDate ? dueDate.format(\"%b\") : \"OPEN\",\r\n complete = task.status == Librarian.crmTaskStatus.complete,\r\n overDue = !complete && (dueDate ? dueDate < (new Date()) : false),\r\n dateContEl = new Element(\"div\", {\r\n \"class\": className + \"-date-cont\",\r\n \"styles\": {\r\n \"border-color\": this.getUrgencyColor(task.urgency, task.stageType)\r\n }\r\n }).injectInside(itemContEl);\r\n new Element(\"span\", {\r\n \"class\": className + \"-day\",\r\n \"text\": day\r\n }).injectInside(dateContEl);\r\n new Element(\"span\", {\r\n \"class\": className + \"-month\",\r\n \"text\": month\r\n }).injectInside(dateContEl);\r\n if (overDue) {\r\n new Element(\"span\", {\r\n \"class\": className + \"-urgent\",\r\n \"title\": \"Overdue\"\r\n }).injectInside(dateContEl);\r\n }\r\n\r\n // Task Details\r\n var name = (task.name || '').trim(),\r\n oppName = (task.opportunityName || '').trim(),\r\n infoContEl = new Element(\"div\", {\r\n \"class\": className + \"-info-cont pointer\"\r\n }).injectInside(itemContEl);\r\n new Element(\"span\", {\r\n \"class\": className + \"-name ellipsis\",\r\n \"title\": name,\r\n \"text\": name\r\n }).injectInside(infoContEl);\r\n new Element(\"span\", {\r\n \"class\": className + \"-opp ellipsis\",\r\n \"title\": oppName,\r\n \"text\": oppName\r\n }).injectInside(infoContEl);\r\n\r\n infoContEl.addOnClick(function() { this.openProjectRoom(task.crmId); }, this);\r\n },\r\n\r\n getScore: function (stageType, score) {\r\n return ((stageType == Librarian.crmStageType.closedWon) || (stageType == Librarian.crmStageType.closedLost)) ? \"---\" : parseInt(score, 10);\r\n },\r\n\r\n getUrgencyColor: function (urgency, stageType) {\r\n if (stageType == Librarian.crmStageType.closedWon)\r\n return \"#82BD3D\";\r\n if (stageType == Librarian.crmStageType.closedLost)\r\n return \"#333\";\r\n if (urgency >= 80)\r\n return \"#D2254B\";\r\n if (urgency >= 60)\r\n return \"#F5821E\";\r\n if (urgency >= 40)\r\n return \"#F4CD42\";\r\n return \"#0078BE\";\r\n },\r\n\r\n openProjectRoom: function(oppId) {\r\n var url = Librarian.path.getAppPath(\"dashboard\") + \"/project.htm?libName=\" + Librarian.path.getUrlLibraryName();\r\n if (url.indexOf('?') == -1)\r\n url += '?';\r\n else\r\n url += '&';\r\n window.open(url + \"oppId=\" + oppId, \"Project\" + oppId, \"width=990,height=770\");\r\n }\r\n});","Librarian.Modules.Thumbnail = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"onLoadData\", \"onClick\"],\r\n\r\n options: {\r\n classPrefix: \"modules-thumbnail-\",\r\n filename: null,\r\n size: \"lg\",\r\n preview: true,\r\n caption: null\r\n },\r\n\r\n data: null,\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n\r\n if (this.options.filename)\r\n this.getFileInfo(this.options.filename);\r\n },\r\n\r\n getFileInfo: function(filename) {\r\n new Librarian.Request.JSON({\r\n url: Librarian.path.getMethodUrl(\"getfi\") + \"&out=ljson&fname=\" + encodeURIComponent(filename),\r\n onSuccess: this.onLoadData,\r\n onFailure: Librarian.Utils.onFailure\r\n }).send();\r\n },\r\n\r\n onLoadData: function(data) {\r\n this.data = data;\r\n this.render();\r\n },\r\n\r\n render: function() {\r\n var size = this.options.size,\r\n data = this.data,\r\n url = Librarian.Utils.getThumbnailUrl(size, data);\r\n\r\n var imageWrapper = new Element(\"div\", {\r\n \"class\": this.options.classPrefix + \"image-wrapper\"\r\n }).injectInside(this.containerEl);\r\n\r\n var image = new Element(\"img\", {\r\n \"class\": this.options.classPrefix + \"image\",\r\n src: url\r\n }).injectInside(imageWrapper);\r\n\r\n if (this.options.preview) {\r\n image.addClass(\"pointer\");\r\n image.addOnClick(this.onClick);\r\n }\r\n\r\n if (this.isVideo()) {\r\n var playButton = new Element(\"div\", {\r\n \"class\": this.options.classPrefix + \"play-button\"\r\n }).injectInside(imageWrapper);\r\n }\r\n\r\n if (this.options.caption) {\r\n var caption = new Element(\"div\", {\r\n html: this.options.caption\r\n }).injectInside(this.containerEl);\r\n }\r\n },\r\n\r\n isVideo: function() {\r\n var ext = Librarian.Utils.getExtensionFromData(this.data);\r\n \r\n return Librarian.extensions.isVideo(ext);\r\n },\r\n\r\n onClick: function() {\r\n Librarian.PreviewWindow.openPreviewWindow(this.data);\r\n }\r\n});","Librarian.Modules.Uploads = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-uploads-\",\r\n orderBy: \"FileDBImportDate\",\r\n order: \"desc\",\r\n count: 5,\r\n showDate: false,\r\n dateFormat: \"%m/%d/%Y\"\r\n },\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl || !Librarian.specialCategories || (typeof Librarian.specialCategories.UserUploads != \"number\"))\r\n return;\r\n\r\n this.parent();\r\n\r\n // Create the container element and generate the URL\r\n var listEl = new Element(\"ul\").injectInside(this.containerEl),\r\n url = Librarian.path.getMethodUrl(\"getfiles\") + \"&out=ujson&orderBy=\" + this.options.orderBy + \"&order=\" + this.options.order + \"&perpage=\" + this.options.count + \"&cid=\" + Librarian.specialCategories.UserUploads;\r\n\r\n this.request = new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: function (json) {\r\n if (!json)\r\n return;\r\n\r\n listEl.empty();\r\n\r\n // Get the list of files, but make sure there are some before we continue\r\n var files = json.Files;\r\n if (!files || (files.length == 0))\r\n return;\r\n\r\n // Create a line for each of the files\r\n for (var i = 0; i < files.length; i++) {\r\n var file = files[i],\r\n date = Librarian.Utils.extractDateFromString(file.ImportDate).format(this.options.dateFormat);\r\n\r\n // Create the list item and link for this file\r\n var listItemEl = new Element(\"li\", {\r\n \"class\": (this.options.classPrefix || '') + \"item\"\r\n }).injectInside(listEl);\r\n new Element(\"a\", {\r\n \"class\": (this.options.classPrefix || '') + \"link\",\r\n \"text\": this.options.showDate ? (date + \" - \" + file.Name) : file.Name,\r\n \"title\": file.Name,\r\n \"href\": Librarian.path.getDownloadUrl(\"dnld\") + \"&fid=\" + file.FileId,\r\n \"target\": \"_download\"\r\n }).injectInside(listItemEl);\r\n }\r\n }.bind(this),\r\n onFailure: Librarian.Utils.onFailure\r\n });\r\n this.request.send();\r\n }\r\n});","Librarian.Modules.UserFileList = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"onNameClicked\", \"onCountClicked\"],\r\n\r\n options: {\r\n classPrefix: \"modules-userfilelist-\",\r\n count: 10,\r\n countOptions: [\"5\", \"20\", \"40\"],\r\n catType: Librarian.catType.uploads\r\n },\r\n\r\n fileList: null,\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n\r\n this.options.title = Librarian.Lang.getString((this.options.catType == Librarian.catType.uploads) ? \"uploads\" : \"proc\");\r\n\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n destroy: function() {\r\n if (this.fileList) {\r\n this.fileList.destroy();\r\n this.fileList = null;\r\n }\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n var listEl = new Element(\"div\", {\r\n \"class\": (this.options.classPrefix || '') + \"list\"\r\n }).injectInside(this.containerEl),\r\n options = {\r\n container: listEl,\r\n showDownload: false,\r\n showShare: true,\r\n addSpacer: false,\r\n onNameClicked: this.onNameClicked\r\n };\r\n\r\n if (this.options.catType == Librarian.catType.uploads)\r\n options.catId = Librarian.specialCategories.UserUploads;\r\n else\r\n options.catId = Librarian.specialCategories.UserApproved;\r\n\r\n this.fileList = new Librarian.FileList(options);\r\n this.fileList.load(this.options.count);\r\n\r\n if (this.options.countOptions && (this.options.countOptions.length > 0)) {\r\n var countContEl = new Element(\"div\", {\r\n \"class\": (this.options.classPrefix || '') + \"options\"\r\n }).injectInside(this.containerEl);\r\n\r\n for (var i = 0, length = this.options.countOptions.length; i < length; i++) {\r\n var count = this.options.countOptions[i];\r\n if (i == 0)\r\n count = \"Last \" + count;\r\n\r\n var countEl = new Element(\"a\", {\r\n \"class\": \"listitem bolder\",\r\n \"text\": count\r\n }).injectInside(countContEl);\r\n\r\n countEl.addOnClick(this.onCountClicked);\r\n\r\n new Element(\"span\", {\r\n \"text\": \" - \"\r\n }).injectInside(countContEl);\r\n }\r\n\r\n var allEl = new Element(\"a\", {\r\n \"class\": \"listitem bolder\",\r\n \"text\": \"Show All\"\r\n }).injectInside(countContEl);\r\n allEl.addOnClick(this.onCountClicked);\r\n }\r\n },\r\n\r\n onCountClicked: function(e) {\r\n if (!this.fileList)\r\n return;\r\n\r\n var evt = new Event(e),\r\n count = (Librarian.Utils.getElementValue($(evt.target)) || '').trim();\r\n\r\n // Pull the number out of the \"Last X\" option\r\n if (count.startsWith(\"Last\"))\r\n count = count.split(' ')[1];\r\n\r\n if (isNaN(count.toInt()))\r\n count = null;\r\n\r\n this.fileList.load(count);\r\n },\r\n\r\n onNameClicked: function(data) {\r\n window.open(Librarian.Utils.getFileDownloadUrl(data.fileid), \"_download\");\r\n },\r\n\r\n refresh: function() {\r\n if (this.fileList) {\r\n this.fileList.reset(true);\r\n }\r\n }\r\n});","Librarian.Modules.Welcome = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n title: \"Welcome\",\r\n classPrefix: \"modules-welcome-\"\r\n }\r\n});","Librarian.Modules.Wizards = new Class({\r\n Extends: Librarian.Modules.Module,\r\n\r\n options: {\r\n classPrefix: \"modules-wizards-\",\r\n id: \"wizards\",\r\n label: \"Wizards\",\r\n folderPath: \"MasterLibrary/Wizards\"\r\n },\r\n\r\n initialize: function (options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n\r\n var self = this;\r\n wrapperEl.addEvent(\"click\", function() {\r\n Librarian.Utils.selectTreeNodeByPath(treeView, self.options.folderPath, null, true);\r\n });\r\n },\r\n\r\n load: function () {\r\n this.parent();\r\n\r\n var label = (this.options.label || '').trim();\r\n if (label.length > 0) {\r\n new Element(\"div\", {\r\n \"class\": \"nav-label\",\r\n \"html\": Librarian.Lang.getString(label),\r\n \"data-translation\": label\r\n }).injectInside(this.containerEl);\r\n }\r\n }\r\n});","Librarian.Modules.Workflow = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"loadData\", \"onItemClicked\", \"onButtonClicked\"],\r\n\r\n options: {\r\n classPrefix: \"modules-workflow-\",\r\n orderBy: \"ModifiedDate\",\r\n order: \"desc\",\r\n count: 10,\r\n showAddButton: true,\r\n showHistory: true,\r\n showToDo: true,\r\n isMetro: false,\r\n isSquare: false,\r\n openWorkflow: false\r\n },\r\n\r\n listEl: null,\r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n },\r\n\r\n destroy: function() {\r\n if (this.listEl) {\r\n $(this.listEl).destroy();\r\n this.listEl = null;\r\n }\r\n },\r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n if (this.options.showAddButton && !this.options.isMetro && !this.options.isSquare) {\r\n // Create the submit button\r\n new Element(\"input[type=button]\", {\r\n \"class\": \"button \" + (this.options.classPrefix || '') + \"button\",\r\n \"value\": Librarian.Lang.getString(\"workflow_submit\")\r\n }).injectInside(this.containerEl).addOnClick(this.onButtonClicked, this);\r\n }\r\n\r\n if (this.options.isMetro && !this.options.isSquare) {\r\n var label = (this.options.label || '').trim();\r\n if (label.length > 0) {\r\n new Element(\"div\", {\r\n \"class\": \"nav-label\",\r\n \"html\": Librarian.Lang.getString(label),\r\n \"data-translation\": label\r\n }).injectInside(this.containerEl);\r\n }\r\n this.containerEl.addOnClick(this.onButtonClicked, this);\r\n }\r\n\r\n // The list container\r\n this.listEl = new Element(\"ul\").injectInside(this.containerEl);\r\n\r\n var showToDo = this.options.showToDo && Librarian.Utils.isUserMemberOfGroup(Librarian.workflow.groupNames);\r\n if (this.options.showHistory || showToDo && !this.options.isMetro) {\r\n // the footer container\r\n var footerEl = new Element(\"div\", {\r\n \"class\": (this.options.classPrefix || '') + \"footer\"\r\n }).injectInside(this.wrapperEl);\r\n\r\n if (this.options.showHistory) {\r\n // the history link\r\n new Element(\"a\", {\r\n \"text\": \"View History\",\r\n \"class\": \"left\"\r\n }).injectInside(footerEl).addOnClick(this.onHistoryClicked, this);\r\n }\r\n\r\n // and the \"My To Do\" list, but only if they are in the correct group\r\n if (showToDo) {\r\n new Element(\"a\", {\r\n \"text\": Librarian.Lang.getString(\"workflow_todo_mylist\"),\r\n \"class\": \"right\"\r\n }).injectInside(footerEl).addOnClick(this.onToDoClicked, this);\r\n }\r\n\r\n // Set the height of the container to compensate for the height of the footer\r\n var footerHeight = footerEl.getHeight(),\r\n contHeight = this.containerEl.getHeight() - footerHeight - 10;\r\n\r\n if (!isNaN(contHeight))\r\n this.containerEl.setStyle(\"height\", contHeight + \"px\");\r\n }\r\n\r\n if(this.options.isSquare) {\r\n // add view all button\r\n new Element(\"span\", {\r\n \"class\": \"viewAll\",\r\n events: {\r\n click: this.onHistoryClicked \r\n },\r\n text: Librarian.Lang.getString(\"homepage_viewall\"),\r\n \"data-translation\": \"homepage_viewall\"\r\n }).injectInside(this.wrapperEl);\r\n }\r\n\r\n if (this.options.openWorkflow) {\r\n this.containerEl.addOnClick(Librarian.Utils.openWorkflowToDo, this);\r\n }\r\n else \r\n this.loadData();\r\n },\r\n\r\n loadData: function() {\r\n if (!this.listEl)\r\n return;\r\n\r\n var url = Librarian.Workflow.getOpenUserInstancesURL(this.options.orderBy, this.options.order, 1) + \"&perpage=\" + this.options.count;\r\n\r\n this.listEl.empty();\r\n\r\n if (!this.options.isMetro || this.options.isSquare) {\r\n this.request = new Librarian.Request.JSON({\r\n url: url,\r\n onSuccess: function(json) {\r\n if (!json || !json.data || (json.data.length == 0) || !this.listEl)\r\n return;\r\n\r\n var requests = json.data;\r\n if (this.options.isSquare) {\r\n requests.length = Math.min(requests.length, 8);\r\n }\r\n // Go through each request\r\n for (var i = 0; i < requests.length; i++) {\r\n // Build the elements\r\n var request = requests[i],\r\n listItemEl = new Element(\"li\",\r\n {\r\n \"class\": (this.options.classPrefix || '') + \"item\"\r\n }).injectInside(this.listEl),\r\n requestLinkEl = new Element(\"a\",\r\n {\r\n \"class\": (this.options.classPrefix || '') + \"list\",\r\n \"html\": this.getDisplayName(request)\r\n }).injectInside(listItemEl);\r\n\r\n requestLinkEl.request = request;\r\n requestLinkEl.onItemClicked = this.onItemClicked;\r\n requestLinkEl.addOnClick(function() {\r\n this.onItemClicked(this.request);\r\n },\r\n requestLinkEl);\r\n }\r\n }.bind(this),\r\n onFailure: Librarian.Utils.onFailure\r\n });\r\n this.request.send();\r\n }\r\n },\r\n\r\n getDisplayName: function(data) {\r\n return data.processname;\r\n },\r\n\r\n onItemClicked: function(/*data*/) { return false; },\r\n onButtonClicked: function() { return false; },\r\n onHistoryClicked: function() { return false; },\r\n onToDoClicked: function() { return false; }\r\n});","Librarian.Modules.YouTube = new Class({\r\n Extends: Librarian.Modules.Module,\r\n Binds: [\"loadPlayer\", \"loadVideo\"], \r\n\r\n options: {\r\n classPrefix: \"modules-youtube-\",\r\n // pick one:\r\n // a single video is embeded\r\n videoId: \"\",\r\n // a user's uploaded videos are embeded as a playlist\r\n username: \"\",\r\n // a playlist is embeded\r\n playlistId: \"\"\r\n },\r\n\r\n player: null, \r\n\r\n initialize: function(options, wrapperEl) {\r\n this.setOptions(options);\r\n this.parent(this.options, wrapperEl);\r\n }, \r\n\r\n load: function() {\r\n if (!this.wrapperEl)\r\n return;\r\n\r\n this.parent();\r\n\r\n if (!this.containerEl)\r\n return;\r\n\r\n if (typeof YT !== \"undefined\")\r\n this.loadPlayer();\r\n else {\r\n Librarian.Modules.YouTube.loadAPI();\r\n\r\n window.addEvent(\"YouTubeIframeAPIReady\", this.loadPlayer);\r\n }\r\n },\r\n\r\n loadPlayer: function() {\r\n // Create element to be transformed into iframe\r\n var videoContainer = new Element(\"div\", {\r\n \"class\": (this.options.classPrefix || '') + \"video\"\r\n }).inject(this.containerEl);\r\n\r\n this.player = new YT.Player(videoContainer, {\r\n height: \"100%\",\r\n width: \"100%\",\r\n events: {\r\n onReady: this.loadVideo\r\n }\r\n });\r\n },\r\n\r\n loadVideo: function() {\r\n if (this.options.videoId) {\r\n // Embed video\r\n this.player.cueVideoById({\r\n videoId: this.options.videoId\r\n });\r\n }\r\n else if (this.options.username) {\r\n // Embed videos uploaded by a user\r\n this.player.cuePlaylist({ \r\n listType: \"user_uploads\",\r\n list: this.options.username\r\n });\r\n }\r\n else if (this.options.playlistId) {\r\n // Embed videos from a playlist\r\n this.player.cuePlaylist({\r\n listType: \"playlist\",\r\n list: this.options.playlistId\r\n });\r\n }\r\n }\r\n});\r\n\r\nLibrarian.Modules.YouTube.loadAPI = function() {\r\n var youtubeApiScript = $(\"youtubeApiScript\");\r\n if (youtubeApiScript)\r\n return; // Script is already loaded or loading\r\n\r\n // Load youtube API javascript file\r\n Asset.javascript(\"https://www.youtube.com/iframe_api\", {\r\n id: \"youtubeApiScript\"\r\n });\r\n\r\n window.onYouTubeIframeAPIReady = function() {\r\n window.fireEvent(\"YouTubeIframeAPIReady\");\r\n }\r\n} "]}