j1-template 2021.2.2 → 2021.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///(webpack)/buildin/global.js","webpack:///./template.js","webpack:///./node_modules/js-cookie/src/js.cookie.js","webpack:///./node_modules/log4javascript/log4javascript.js","webpack:///./node_modules/lite-url/dist/lite-url.min.js","webpack:///./node_modules/platform/platform.js","webpack:///(webpack)/buildin/module.js","webpack:///./js/adapter/adapter.js","webpack:///./js/core/core.js","webpack:///./js/navigator/navigator.js","webpack:///./js/asciidoctor/asciidoctor.js","webpack:///./js/scroll-smooth/scroll-smooth.js","webpack:///./js/anime/anime.js","webpack:///./js/tocbot/tocbot.js","webpack:///./js/tocbot/default-options.js","webpack:///./js/tocbot/build-html.js","webpack:///./js/tocbot/parse-content.js","webpack:///./js/tocbot/update-toc-scroll.js","webpack:///./js/tocbot/scroll-smooth/index.js","webpack:///./js/adoc_result_viewer/view_results.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","g","this","Function","e","window","Cookies","require","log4javascript","liteURL","platform","j1","adapter","core","navigator","asciidoctor","scrollSmooth","anime","factory","OldCookies","api","noConflict","extend","result","arguments","length","attributes","decode","replace","decodeURIComponent","init","converter","set","document","path","defaults","expires","Date","toUTCString","JSON","stringify","test","write","encodeURIComponent","String","escape","stringifiedAttributes","attributeName","split","cookie","json","jar","cookies","parts","slice","join","charAt","read","parse","getJSON","remove","withConverter","isUndefined","obj","EventSupport","Array","push","len","shift","firstItem","splice","startIndex","deleteCount","itemsAfterDeleted","itemsDeleted","argumentsArray","itemsToAppend","concat","eventTypes","eventListeners","setEventTypes","eventTypesParam","handleError","addEventListener","eventType","listener","array_contains","removeEventListener","array_remove","dispatchEvent","eventArgs","listeners","applicationStartDate","uniqueId","getTime","Math","floor","random","emptyFunction","newLine","pageLoaded","Log4JavaScript","toStr","toString","getExceptionMessage","ex","message","description","getUrlFileName","url","lastSlashIndex","max","lastIndexOf","substr","getExceptionStringRep","exStr","lineNumber","fileName","localEx","logLog","warn","showStackTraces","stack","bool","Boolean","trim","str","splitIntoLines","text","version","edition","urlEncode","arr","val","index","extractBooleanFromParam","param","defaultValue","extractStringFromParam","extractIntFromParam","parseInt","isNaN","extractFunctionFromParam","isError","err","Error","apply","args","methodName","argsStrings","script","returnValue","eval","quietMode","debugMessages","setQuietMode","numberOfErrors","alertAllErrors","setAlertAllErrors","debug","displayDebug","alert","exception","error","alertMessage","enabled","log4javascript_disabled","setEnabled","enable","isEnabled","useTimeStampsInMilliseconds","setTimeStampsInMilliseconds","timeStampsInMilliseconds","isTimeStampsInMilliseconds","evalInScope","expr","setShowStackTraces","show","Level","level","Timer","INFO","start","equals","isGreaterOrEqual","ALL","Number","MIN_VALUE","TRACE","DEBUG","WARN","ERROR","FATAL","OFF","MAX_VALUE","getElapsedTime","anonymousLoggerName","defaultLoggerName","nullLoggerName","rootLoggerName","Logger","parent","children","appenders","loggerLevel","isRoot","isNull","appenderCache","appenderCacheInvalidated","addChild","childLogger","invalidateAppenderCache","additive","getAdditivity","setAdditivity","additivity","valueChanged","addAppender","appender","Appender","setAddedToLogger","removeAppender","setRemovedFromLogger","removeAllAppenders","appenderCount","getEffectiveAppenders","parentEffectiveAppenders","log","params","getEffectiveLevel","finalParamIndex","lastParam","messages","loggingEvent","LoggingEvent","callAppenders","effectiveAppenders","doAppend","setLevel","getLevel","logger","group","initiallyExpanded","groupEnd","timers","time","timeEnd","timer","milliseconds","assert","trace","info","fatal","isEnabledFor","isTraceEnabled","isDebugEnabled","isInfoEnabled","isWarnEnabled","isErrorEnabled","isFatalEnabled","isEntryPoint","loggers","loggerNames","ROOT_LOGGER_DEFAULT_LEVEL","rootLogger","getRootLogger","getLogger","loggerName","parentLogger","lastDotIndex","parentLoggerName","substring","defaultLogger","getDefaultLogger","createDefaultLogger","nullLogger","getNullLogger","resetConfiguration","timeStamp","timeStampInMilliseconds","timeStampInSeconds","getMilliseconds","getThrowableStrRep","getCombinedMessages","Layout","loggerKey","timeStampKey","millisecondsKey","levelKey","messageKey","exceptionKey","urlKey","batchHeader","batchFooter","batchSeparator","returnsPostData","overrideTimeStampsSetting","format","ignoresThrowable","getContentType","allowBatching","getTimeStampValue","getDataValues","combineMessages","dataValues","location","href","hasCustomFields","customFields","setKeys","setCustomField","fieldUpdated","formatWithException","formatted","SimpleDateFormat","SimpleLayout","NullLayout","XmlLayout","escapeNewLines","JsonLayout","readable","colon","tab","lineBreak","HttpPostDataLayout","formatObjectExpansion","depth","indentation","objectsExpanded","doFormat","childDepth","childIndentation","childLines","expansion","childExpansion","formatString","lines","j","jLen","PatternLayout","pattern","DEFAULT_CONVERSION_PATTERN","AlertAppender","BrowserConsoleAppender","layout","threshold","append","setLayout","getLayout","setThreshold","getThreshold","isCombinedMessages","escapeCdata","formatMessage","isReadable","formatValue","prefix","expand","formattedValue","valType","childPrefix","queryBits","regex","monthNames","dayNames","types","G","y","M","w","W","D","F","E","a","H","k","K","h","S","Z","newDateAtMidnight","year","month","day","setMilliseconds","getDifference","date","isBefore","getUTCTime","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getTimeSince","getPreviousSunday","midday","previousSunday","getDay","getWeekInYear","minimalDaysInFirstWeek","startOfYear","weekInYear","getWeekInMonth","startOfMonth","weekInMonth","getDayInYear","setMinimalDaysInFirstWeek","days","getMinimalDaysInFirstWeek","padWithZeroes","formatText","data","numberOfLetters","minLength","formatNumber","formattedString","searchString","exec","quotedString","patternLetters","otherLetters","otherCharacters","patternLetter","rawData","getTimezoneOffset","absData","abs","hours","minutes","TTCC_CONVERSION_PATTERN","ISO8601_DATEFORMAT","DATETIME_DATEFORMAT","ABSOLUTETIME_DATEFORMAT","matchedString","padding","truncation","conversionCharacter","specifier","replacement","precision","loggerNameBits","dateFormat","fieldIndex","strLen","consoleMethodName","getFormattedMessage","concatenate","formattedMessage","console","opera","postError","xhrFactory","XMLHttpRequest","xmlHttpFactories","ActiveXObject","withCredentialsSupported","getXmlHttp","errorHandler","xmlHttp","ConsoleAppender","isHttpRequestSuccessful","status","AjaxAppender","withCredentials","isSupported","timed","waitForResponse","batchSize","timerInterval","requestSuccessCallback","failCallback","postVarName","sendAllOnUnload","contentType","sessionId","queuedLoggingEvents","queuedRequests","headers","sending","initialized","checkCanConfigure","configOptionName","sendAll","currentRequestBatch","sendRequest","preparePostData","scheduleSending","sendAllRemaining","sendingAnything","currentLoggingEvent","actualBatchSize","batchedLoggingEvents","formattedMessages","postData","setTimeout","xmlHttpErrorHandler","msg","successCallback","onreadystatechange","readyState","open","header","setRequestHeader","headerEx","send","errMsg","getSessionId","setSessionId","sessionIdParam","layoutParam","isTimed","setTimed","timedParam","getTimerInterval","setTimerInterval","timerIntervalParam","isWaitForResponse","setWaitForResponse","waitForResponseParam","getBatchSize","setBatchSize","batchSizeParam","isSendAllOnUnload","setSendAllOnUnload","sendAllOnUnloadParam","setRequestSuccessCallback","requestSuccessCallbackParam","setFailCallback","failCallbackParam","getPostVarName","setPostVarName","postVarNameParam","getHeaders","addHeader","toLowerCase","oldBeforeUnload","onbeforeunload","setCookie","setTime","toGMTString","getCookie","nameEquals","ca","indexOf","unescape","getBaseUrl","scripts","getElementsByTagName","src","lastSlash","isLoaded","win","loaded","padWithSpaces","spaces","numberOfSpaces","PopUpAppender","defaultCommandLineFunctions","consoleAppenderIdCounter","lazyInit","initiallyMinimized","useDocumentWrite","width","height","focusPopUp","InPageAppender","container","inPage","focusConsoleWindow","consoleWindowCreated","consoleWindowLoaded","consoleClosed","consoleAppenderId","newestMessageAtTop","scrollToLatestMessage","createWindow","safeToAppend","getConsoleWindow","maxMessages","showCommandLine","commandLineObjectExpansionDepth","showHideButton","showCloseButton","appenderName","consoleWindowExists","isNewestMessageAtTop","setNewestMessageAtTop","newestMessageAtTopParam","setNewestAtTop","isScrollToLatestMessage","setScrollToLatestMessage","scrollToLatestMessageParam","setScrollToLatest","getWidth","setWidth","widthParam","getHeight","setHeight","heightParam","getMaxMessages","setMaxMessages","maxMessagesParam","isShowCommandLine","setShowCommandLine","showCommandLineParam","isShowHideButton","setShowHideButton","showHideButtonParam","isShowCloseButton","setShowCloseButton","showCloseButtonParam","getCommandLineObjectExpansionDepth","setCommandLineObjectExpansionDepth","commandLineObjectExpansionDepthParam","minimized","QueuedLoggingEvent","levelName","QueuedGroup","QueuedGroupEnd","isInitiallyMinimized","setInitiallyMinimized","initiallyMinimizedParam","isUseDocumentWrite","setUseDocumentWrite","useDocumentWriteParam","checkAndAppend","reopenWhenClosed","appendQueuedLoggingEvents","focus","clear","clearLog","focusCommandLine","focusSearch","commandWindow","getCommandWindow","setCommandWindow","commandWindowParam","executeLastCommand","evalLastCommand","commandLayout","getCommandLayout","setCommandLayout","commandLayoutParam","evalCommandAndAppend","commandReturnValue","appendResult","commandOutput","execScript","commandLineFunctionsHash","commandLineFunctions","objectsToRestore","addObjectToRestore","addFunctionToWindow","evalExpr","mainLayout","addCommandLineFunction","functionName","commandLineFunction","storeCommandHistory","commandHistory","writeHtml","doc","writeln","close","consoleWindowLoadHandler","setAppender","setMainWindow","storedValue","currentCommandIndex","unload","caller","pollConsoleWindow","windowTest","interval","errorMessage","poll","setInterval","clearInterval","getConsoleUrl","documentDomainSet","domain","hostname","containerElement","cssProperties","addCssProperty","iframeContainerDiv","windowCreationStarted","iframeId","hide","$","blur","style","display","isVisible","fromButton","confirm","parentNode","removeChild","initErrorMessage","finalInit","writeToDocument","appendChild","createElement","border","iframeSrc","innerHTML","iframeDocumentExistsTest","pageLoadHandler","el","getElementById","nodeType","position","left","right","bottom","body","iframe","frames","popUp","useOldPopUp","complainAboutPopUpBlocking","isUseOldPopUp","setUseOldPopUp","useOldPopUpParam","isComplainAboutPopUpBlocking","setComplainAboutPopUpBlocking","complainAboutPopUpBlockingParam","isFocusPopUp","setFocusPopUp","focusPopUpParam","isReopenWhenClosed","setReopenWhenClosed","reopenWhenClosedParam","windowProperties","frameInfo","frameEl","frameElement","tagName","id","windowName","host","checkPopUpClosed","closed","popUpClosedCallback","setCloseIfOpenerCloses","mainPageReloaded","addGlobalCommandLineFunction","showLogEntryDeleteButtons","InlineAppender","dir","maxLen","propList","propVal","propNameStr","nodeTypes","preFormattedElements","emptyElements","getXhtml","rootNode","includeRootNode","startNewLine","preformatted","xhtml","node","getStyleAttributeValue","stylePairs","cssText","styleValue","nameValueBits","props","childNodes","outerHTML","RegExp","$1","hasPrefix","currentAttr","specified","nodeValue","nodeName","hasChildNodes","childStartNewLine","childPreformatted","endTag","lt","trimmedLines","keys","values","expansionDepth","setDocumentReady","attachEvent","oldOnload","onload","evt","hash","origin","pathname","protocol","search","password","username","port","changeQueryParser","objectTypes","root","freeExports","freeModule","freeGlobal","global","self","maxSafeInteger","pow","reOpera","objectProto","capitalize","string","toUpperCase","forOwn","callback","getClassOf","qualify","reduce","array","accumulator","each","ua","context","isCustomContext","nav","userAgent","isSpecialCasedOS","type","likeChrome","airRuntimeClass","enviroClass","javaClass","java","phantomClass","rhino","environment","alpha","beta","operamini","operaClass","arch","prerelease","useFeatures","guess","label","guesses","getName","product","getProduct","manufacturer","getManufacturer","os","cleanupOS","getOS","getVersion","patterns","unshift","parseFloat","runtime","flash","system","Capabilities","phantom","major","minor","patch","documentMode","toFixed","lang","System","getProperty","process","browser","versions","electron","nw","appMinorVersion","external","family","architecture","cpuClass","webpackPolyfill","deprecate","paths","_init_","options","foo","bar","getState","isMobile","ua_name","mobile","vendor","bsFormClearButton","on","nextAll","removeClass","addClass","createDropCap","$p","firstLetter","marginalDropCap","html","logText","defaultOptions","menuOptions","manageDropdownMenu","navbarSticky","eventHandler","action","sendMessage","$getNav","click","preventDefault","hasClass","wrap","postsArr","$postsList","find","firstList","round","secondList","ListHTML","createHTML","list","first","after","next","last","dropDown","megaMenu","closest","prepend","navbarHeighth","outerHeight","scrollTop","animate","slideToggle","is","nav_bar","container_id","unbind","slideUp","stopPropagation","toggle","css","wrapInner","$menu","breakPoint","$dropDown","timeoutHandle","navDefaultOptions","navMenuOptions","$getWindow","matchMedia","matches","$getIn","$getOut","menuSelector","xhr_container_id","delayMenuOpen","delay_menu_open","media_breakpoint","off","stop","fadeToggle","fadeOut","hover","$list","eq","fadeIn","clearTimeout","windowHeight","windowWidth","getId","$getHeight","getOffset","offset","top","updateSidebar","user_data","json_message","resolveMacros","updateMacros","jQuery","moduleOptions","dummyOption","callouts","colgroupList","conums","dependencies_met_page_finished","scroll","target","duration","scrollTo","timeStart","timeElapsed","pageYOffset","opt","easing","b","tgt","querySelector","decodeURI","distance","getBoundingClientRect","documentElement","loop","requestAnimationFrame","defaultInstanceSettings","update","begin","loopBegin","changeBegin","change","changeComplete","loopComplete","complete","direction","autoplay","timelineOffset","defaultTweenSettings","delay","endDelay","validTransforms","cache","CSS","springs","minMax","min","stringContains","applyArguments","func","isArray","pth","svg","SVGElement","inp","HTMLInputElement","dom","fnc","und","hex","rgb","hsl","col","parseEasingParameters","match","map","spring","mass","stiffness","damping","velocity","w0","sqrt","zeta","wd","solver","progress","exp","cos","sin","cached","elapsed","rest","steps","ceil","eases","functionEasings","bezier","A","aA1","aA2","B","C","calcBezier","aT","getSlope","mX1","mY1","mX2","mY2","sampleValues","Float32Array","x","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","penner","linear","Sine","PI","Circ","Back","Bounce","pow2","Elastic","amplitude","period","asin","forEach","easeIn","parseEasings","ease","selectString","querySelectorAll","filterArray","thisArg","flattenArray","toArray","NodeList","HTMLCollection","arrayContains","some","cloneObject","clone","replaceObjectProps","o1","o2","mergeObjects","colorToRgb","rgbValue","hexValue","hexToRgba","hslValue","hue2rgb","q","hslToRgba","getUnit","getFunctionValue","animatable","total","getAttribute","prop","convertPxToUnit","unit","tempEl","parentEl","factor","offsetWidth","convertedUnit","getCSSValue","uppercasePropName","getComputedStyle","getPropertyValue","getAnimationType","getElementTransforms","transform","reg","transforms","Map","getTransformValue","propName","defaultVal","getTransformUnit","getOriginalTargetValue","getRelativeValue","to","from","operator","u","validateValue","originalUnit","unitLess","getDistance","p1","p2","getPolylineLength","previousPos","points","totalLength","numberOfItems","currentPos","getItem","getTotalLength","getCircleLength","getRectLength","getLineLength","getPolygonLength","getParentSvg","pathEl","svgData","parentSvgEl","getParentSvgEl","rect","viewBoxAttr","viewBox","getPathProgress","point","getPointAtLength","p0","atan2","decomposeValue","rgx","original","numbers","strings","parseTargets","targets","item","pos","getAnimatables","parsed","normalizePropertyTweens","tweenSettings","settings","propArray","v","getProperties","properties","keyframes","propertyNames","newKey","flattenKeyframes","tweens","normalizeTweens","previousTween","tween","normalizeTweenValues","tweenValue","toUnit","originalValue","previousValue","fromUnit","end","isPath","isColor","setProgressValue","attribute","setAttribute","manual","setTargetsValue","valueUnit","animType","getAnimations","animatables","lastTween","createAnimation","getInstanceTimings","animations","animLength","getTlOffset","anim","timings","instanceID","raf","activeInstances","pausedInstances","engine","play","step","activeInstancesLength","activeInstance","paused","instanceIndex","tick","cancelAnimationFrame","startTime","lastTime","now","childrenLength","resolve","makePromise","instance","promise","Promise","_resolve","finished","instanceSettings","createNewInstance","toggleInstanceDirection","reversed","child","adjustTime","resetTime","currentTime","speed","seekChild","seek","setAnimationsProgress","insTime","animationsLength","tweenLength","eased","toNumbersLength","toNumber","fromNumber","stringsLength","n$1","currentValue","setCallback","cb","passThrough","setInstanceProgress","engineTime","insDuration","insDelay","insEndDelay","reversePlayback","i$1","syncInstanceChildren","began","loopBegan","changeBegan","changeCompleted","remaining","completed","reset","pause","reverse","restart","removeTargetsFromAnimations","targetsArray","hidden","ins","running","childAnimations","convertPx","percent","setDashoffset","pathLength","stagger","grid","axis","fromIndex","fromFirst","fromCenter","fromLast","isRange","val1","val2","maxValue","fromX","fromY","distanceX","distanceY","timeline","tl","add","instanceParams","tlIndex","insParams","tlDuration","define","buildHtml","parseContent","headingsArray","tocbot","BuildHtml","ParseContent","updateTocScroll","supports","destroy","skipRendering","tocSelector","scrollContainer","_scrollListener","_clickListener","customOptions","source","state","scrollSmoothDuration","scrollSmoothOffset","initSmoothScrolling","_buildHtml","_parseContent","selectHeadings","contentSelector","headingSelector","nestedHeadings","nestHeadingsArray","nest","render","throttle","updateToc","disableTocScrollSync","isTop","scrollingElement","eventPhase","currentTarget","scrollEndCallback","throttleTimeout","timeout","event","disableTocAnimation","enableTocAnimation","refresh","fn","scope","deferTimer","ignoreSelector","hasInnerContainers","linkClass","extraLinkClasses","activeLinkClass","listClass","extraListClasses","isCollapsedClass","collapsibleClass","listItemClass","activeListItemClass","collapseDepth","headingsOffset","positionFixedSelector","positionFixedClass","fixedSidebarOffset","includeHtml","onClick","orderedList","headingLabelCallback","ignoreHiddenElements","headingObjectCallback","basePath","currentlyHighlighting","createEl","link","onclick","cloneNode","textContent","createLink","createList","isCollapsed","listElement","classes","srcElement","className","selector","firstChild","posFixedEl","offsetTop","updateFixedSidebarClass","topHeader","headings","heading","getHeadingTopPos","offsetParent","tocLinks","tocLink","tocLis","tocLi","activeTocLink","li","tocLists","nextSibling","removeCollapsedFromParents","element","getLastItem","getHeadingLevel","getHeadingObject","HTMLElement","offsetHeight","headingLevel","prev","curr","currentHeading","lastItem","counter","undefined","addNode","selectors","toc","scrollHeight","clientHeight","activeItem","pageUrl","stripHash","jump","tabIndex","language","idx","view_result_link","result_block","title_div","toggleClass","toggle_result_block"],"mappings":"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","file":"template.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/assets/themes/j1/core/js\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/*\n # -----------------------------------------------------------------------------\n # ~/src/template.js\n # J1 Template Javascript Core library\n #\n # Product/Info:\n # https://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under the MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n #\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint-disable no-unused-vars */\n/* global window */\n\n// -----------------------------------------------------------------------------\n// Import SASS sources for HMR\n// -----------------------------------------------------------------------------\n// import '../100_template_css/scss/theme_uno/components/_footer.scss';\n// import '../100_template_css/theme_uno.css'; // <-- yes, also require (s)css. This is a Webpack thing\n\n// Core Libraries - imported|required from NODE|NPM modules\n// -----------------------------------------------------------------------------\n//\n// Following objects (framework modules) are *conditionaly* forced to be\n// exposed for run-time to the global namespace (window) by WP config\n// file (expose-loader):\n// jQuery\n// Popper ('popper.js/dist/umd/popper', https://github.com/twbs/bootstrap/issues/23381)\n// -----------------------------------------------------------------------------\n\n// Core Utilities (moved to modules)\n// -----------------------------------------------------------------------------\n// Following objects (native node modules) are *explicitely* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\nwindow.Cookies = require('js-cookie');\nwindow.log4javascript = require('log4javascript');\nwindow.liteURL = require('lite-url');\nwindow.platform = require('platform');\n// window.yaml = require('js-yaml'); # NOT longer used/needed\n// window.uuid = require('uuid/v4'); # NOT longer used/needed\n\n// Core Libraries - build|required from SOURCE\n// -----------------------------------------------------------------------------\n\n// Following source objects|modules are *explicitely* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\nwindow.j1.adapter = require('./js/adapter/adapter.js');\nwindow.j1.core = require('./js/core/core.js');\nwindow.j1.core.navigator = require('./js/navigator/navigator.js');\n// window.j1.core.cookiebar = require('./js/cookiebar/cookiebar.js');\n// window.j1.core.cookieconsent = require('./js/cookieconsent/cookieconsent.js');\nwindow.j1.core.asciidoctor = require('./js/asciidoctor/asciidoctor.js');\nwindow.j1.core.scrollSmooth = require('./js/scroll-smooth/scroll-smooth.js');\nwindow.j1.anime = require('./js/anime/anime.js'); // added for fam\n// window.j1.fam = require('./js/fam/fam.js'); // cannot used until NOT rewritten to jQuery\n\n// Following source objects|modules are *implicetly* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\n//const Bootstrap = require('./js/bootstrap/bootstrap.js');\n//const J1JekyllSearch = require('./js/jekyll_search/jekyll_search.js');\nconst J1Tocbot = require('./js/tocbot/tocbot.js');\n//const J1ThemeSwitcher = require('./js/bs_theme_switcher/switcher.js');\n// const J1MmenuLight = require('./js/mmenu-light/mmenu.js');\n\n// Passing log data over Internet|SeeMe (currently NOT used)\n// -----------------------------------------------------------------------------\n// window.j1.core.log4javascript = require('./js/logger/client/webhook.js');\n\n// BMD Libraries (moved to modules)\n// -----------------------------------------------------------------------------\n// window.bootstrapMaterialDesign = require('./js/bmd/js/bmd.js');\n\n// Github Webhooks (currently NOT used)\n// -----------------------------------------------------------------------------\n// window.j1.core.webhooks = require('./js/webhooks/octokit/client.js');\n\n\n// Test|Custom modules (currently NOT used)\n// -----------------------------------------------------------------------------\n// window.j1promiseTest = require('./js/custom/test_promises.js');\n// window.j1Example = require('./js/custom/example_module.js');\n\n// BS Libraries (moved to modules)\n// -----------------------------------------------------------------------------\n// Following source objects|modules are *implicetly* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\n// const Bootstrap = require('./js/bootstrap/bootstrap.js');\n\n// const J1JekyllSearch = require('./js/jekyll_search/jekyll_search.js'); // Buffer Kack\n// const J1Tocbot = require('./js/tocbot/tocbot.js');\n\n// Backstretch (moved to modules)\n// -----------------------------------------------------------------------------\n// Following source objects|modules are *implicetly* forced to be\n// exposed for run-time to the namespace of jQuery ($).\n// -----------------------------------------------------------------------------\n// const J1Attics = require('./js/backstretch/backstretch.js');\n\n// Additional Vanilla JS helpers\n// -----------------------------------------------------------------------------\nconst J1AdocResultViewer = require('./js/adoc_result_viewer/view_results.js');\n// const MSIEPolyfills = require('./js/polyfills/ms-ie.js');\n\n// HMR messages (currently NOT used)\n// -----------------------------------------------------------------------------\n// if (module.hot) {\n// var logtext;\n// var stat;\n// var stat=module.hot.status();\n//\n// logtext='[INFO ] [HMR ] [Hot Module Replacement enabled]';\n// console.log(logtext);\n// logtext='[INFO ] [HMR ] [Status: ' + stat + ']';\n// console.log(logtext);\n//\n// module.hot.accept('./template.js', function() {\n// console.log('[HMR] Accepting the updated template.js module!');\n// });\n//\n// module.hot.accept('../100_template_css/theme_uno.scss', function () {\n// console.log('[HMR] Accepting the updated style.css module!');\n// require('../100_template_css/theme_uno.scss')\n// })\n//\n// React to the current status...\n// module.hot.addStatusHandler(status => {\n// stat=module.hot.status();\n// logtext='[INFO ] [HMR ] [Status: ' + stat + ']';\n// console.log(logtext);\n// });\n//}\n\n// -----------------------------------------------------------------------------\n// END\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","/**\r\n * Copyright 2015 Tim Down.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n\r\n(function(factory,root){if(typeof define==\"function\"&&define.amd){define(factory);}else if(typeof module!=\"undefined\"&&typeof exports==\"object\"){module.exports=factory();}else{root.log4javascript=factory();}})(function(){if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0,len=arguments.length;i<len;i++){this[this.length]=arguments[i];}\r\nreturn this.length;};}\r\nif(!Array.prototype.shift){Array.prototype.shift=function(){if(this.length>0){var firstItem=this[0];for(var i=0,len=this.length-1;i<len;i++){this[i]=this[i+1];}\r\nthis.length=this.length-1;return firstItem;}};}\r\nif(!Array.prototype.splice){Array.prototype.splice=function(startIndex,deleteCount){var itemsAfterDeleted=this.slice(startIndex+deleteCount);var itemsDeleted=this.slice(startIndex,startIndex+deleteCount);this.length=startIndex;var argumentsArray=[];for(var i=0,len=arguments.length;i<len;i++){argumentsArray[i]=arguments[i];}\r\nvar itemsToAppend=(argumentsArray.length>2)?itemsAfterDeleted=argumentsArray.slice(2).concat(itemsAfterDeleted):itemsAfterDeleted;for(i=0,len=itemsToAppend.length;i<len;i++){this.push(itemsToAppend[i]);}\r\nreturn itemsDeleted;};}\r\nfunction isUndefined(obj){return typeof obj==\"undefined\";}\r\nfunction EventSupport(){}\r\nEventSupport.prototype={eventTypes:[],eventListeners:{},setEventTypes:function(eventTypesParam){if(eventTypesParam instanceof Array){this.eventTypes=eventTypesParam;this.eventListeners={};for(var i=0,len=this.eventTypes.length;i<len;i++){this.eventListeners[this.eventTypes[i]]=[];}}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: setEventTypes: eventTypes parameter must be an Array\");}},addEventListener:function(eventType,listener){if(typeof listener==\"function\"){if(!array_contains(this.eventTypes,eventType)){handleError(\"log4javascript.EventSupport [\"+this+\"]: addEventListener: no event called '\"+eventType+\"'\");}\r\nthis.eventListeners[eventType].push(listener);}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: addEventListener: listener must be a function\");}},removeEventListener:function(eventType,listener){if(typeof listener==\"function\"){if(!array_contains(this.eventTypes,eventType)){handleError(\"log4javascript.EventSupport [\"+this+\"]: removeEventListener: no event called '\"+eventType+\"'\");}\r\narray_remove(this.eventListeners[eventType],listener);}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: removeEventListener: listener must be a function\");}},dispatchEvent:function(eventType,eventArgs){if(array_contains(this.eventTypes,eventType)){var listeners=this.eventListeners[eventType];for(var i=0,len=listeners.length;i<len;i++){listeners[i](this,eventType,eventArgs);}}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: dispatchEvent: no event called '\"+eventType+\"'\");}}};var applicationStartDate=new Date();var uniqueId=\"log4javascript_\"+applicationStartDate.getTime()+\"_\"+\r\nMath.floor(Math.random()*100000000);var emptyFunction=function(){};var newLine=\"\\r\\n\";var pageLoaded=false;function Log4JavaScript(){}\r\nLog4JavaScript.prototype=new EventSupport();var log4javascript=new Log4JavaScript();log4javascript.version=\"1.4.13\";log4javascript.edition=\"log4javascript\";function toStr(obj){if(obj&&obj.toString){return obj.toString();}else{return String(obj);}}\r\nfunction getExceptionMessage(ex){if(ex.message){return ex.message;}else if(ex.description){return ex.description;}else{return toStr(ex);}}\r\nfunction getUrlFileName(url){var lastSlashIndex=Math.max(url.lastIndexOf(\"/\"),url.lastIndexOf(\"\\\\\"));return url.substr(lastSlashIndex+1);}\r\nfunction getExceptionStringRep(ex){if(ex){var exStr=\"Exception: \"+getExceptionMessage(ex);try{if(ex.lineNumber){exStr+=\" on line number \"+ex.lineNumber;}\r\nif(ex.fileName){exStr+=\" in file \"+getUrlFileName(ex.fileName);}}catch(localEx){logLog.warn(\"Unable to obtain file and line information for error\");}\r\nif(showStackTraces&&ex.stack){exStr+=newLine+\"Stack trace:\"+newLine+ex.stack;}\r\nreturn exStr;}\r\nreturn null;}\r\nfunction bool(obj){return Boolean(obj);}\r\nfunction trim(str){return str.replace(/^\\s+/,\"\").replace(/\\s+$/,\"\");}\r\nfunction splitIntoLines(text){var text2=text.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");return text2.split(\"\\n\");}\r\nvar urlEncode=(typeof window.encodeURIComponent!=\"undefined\")?function(str){return encodeURIComponent(str);}:function(str){return escape(str).replace(/\\+/g,\"%2B\").replace(/\"/g,\"%22\").replace(/'/g,\"%27\").replace(/\\//g,\"%2F\").replace(/=/g,\"%3D\");};function array_remove(arr,val){var index=-1;for(var i=0,len=arr.length;i<len;i++){if(arr[i]===val){index=i;break;}}\r\nif(index>=0){arr.splice(index,1);return true;}else{return false;}}\r\nfunction array_contains(arr,val){for(var i=0,len=arr.length;i<len;i++){if(arr[i]==val){return true;}}\r\nreturn false;}\r\nfunction extractBooleanFromParam(param,defaultValue){if(isUndefined(param)){return defaultValue;}else{return bool(param);}}\r\nfunction extractStringFromParam(param,defaultValue){if(isUndefined(param)){return defaultValue;}else{return String(param);}}\r\nfunction extractIntFromParam(param,defaultValue){if(isUndefined(param)){return defaultValue;}else{try{var value=parseInt(param,10);return isNaN(value)?defaultValue:value;}catch(ex){logLog.warn(\"Invalid int param \"+param,ex);return defaultValue;}}}\r\nfunction extractFunctionFromParam(param,defaultValue){if(typeof param==\"function\"){return param;}else{return defaultValue;}}\r\nfunction isError(err){return(err instanceof Error);}\r\nif(!Function.prototype.apply){Function.prototype.apply=function(obj,args){var methodName=\"__apply__\";if(typeof obj[methodName]!=\"undefined\"){methodName+=String(Math.random()).substr(2);}\r\nobj[methodName]=this;var argsStrings=[];for(var i=0,len=args.length;i<len;i++){argsStrings[i]=\"args[\"+i+\"]\";}\r\nvar script=\"obj.\"+methodName+\"(\"+argsStrings.join(\",\")+\")\";var returnValue=eval(script);delete obj[methodName];return returnValue;};}\r\nif(!Function.prototype.call){Function.prototype.call=function(obj){var args=[];for(var i=1,len=arguments.length;i<len;i++){args[i-1]=arguments[i];}\r\nreturn this.apply(obj,args);};}\r\nvar logLog={quietMode:false,debugMessages:[],setQuietMode:function(quietMode){this.quietMode=bool(quietMode);},numberOfErrors:0,alertAllErrors:false,setAlertAllErrors:function(alertAllErrors){this.alertAllErrors=alertAllErrors;},debug:function(message){this.debugMessages.push(message);},displayDebug:function(){alert(this.debugMessages.join(newLine));},warn:function(message,exception){},error:function(message,exception){if(++this.numberOfErrors==1||this.alertAllErrors){if(!this.quietMode){var alertMessage=\"log4javascript error: \"+message;if(exception){alertMessage+=newLine+newLine+\"Original error: \"+getExceptionStringRep(exception);}\r\nalert(alertMessage);}}}};log4javascript.logLog=logLog;log4javascript.setEventTypes([\"load\",\"error\"]);function handleError(message,exception){logLog.error(message,exception);log4javascript.dispatchEvent(\"error\",{\"message\":message,\"exception\":exception});}\r\nlog4javascript.handleError=handleError;var enabled=!((typeof log4javascript_disabled!=\"undefined\")&&log4javascript_disabled);log4javascript.setEnabled=function(enable){enabled=bool(enable);};log4javascript.isEnabled=function(){return enabled;};var useTimeStampsInMilliseconds=true;log4javascript.setTimeStampsInMilliseconds=function(timeStampsInMilliseconds){useTimeStampsInMilliseconds=bool(timeStampsInMilliseconds);};log4javascript.isTimeStampsInMilliseconds=function(){return useTimeStampsInMilliseconds;};log4javascript.evalInScope=function(expr){return eval(expr);};var showStackTraces=false;log4javascript.setShowStackTraces=function(show){showStackTraces=bool(show);};var Level=function(level,name){this.level=level;this.name=name;};Level.prototype={toString:function(){return this.name;},equals:function(level){return this.level==level.level;},isGreaterOrEqual:function(level){return this.level>=level.level;}};Level.ALL=new Level(Number.MIN_VALUE,\"ALL\");Level.TRACE=new Level(10000,\"TRACE\");Level.DEBUG=new Level(20000,\"DEBUG\");Level.INFO=new Level(30000,\"INFO\");Level.WARN=new Level(40000,\"WARN\");Level.ERROR=new Level(50000,\"ERROR\");Level.FATAL=new Level(60000,\"FATAL\");Level.OFF=new Level(Number.MAX_VALUE,\"OFF\");log4javascript.Level=Level;function Timer(name,level){this.name=name;this.level=isUndefined(level)?Level.INFO:level;this.start=new Date();}\r\nTimer.prototype.getElapsedTime=function(){return new Date().getTime()-this.start.getTime();};var anonymousLoggerName=\"[anonymous]\";var defaultLoggerName=\"[default]\";var nullLoggerName=\"[null]\";var rootLoggerName=\"root\";function Logger(name){this.name=name;this.parent=null;this.children=[];var appenders=[];var loggerLevel=null;var isRoot=(this.name===rootLoggerName);var isNull=(this.name===nullLoggerName);var appenderCache=null;var appenderCacheInvalidated=false;this.addChild=function(childLogger){this.children.push(childLogger);childLogger.parent=this;childLogger.invalidateAppenderCache();};var additive=true;this.getAdditivity=function(){return additive;};this.setAdditivity=function(additivity){var valueChanged=(additive!=additivity);additive=additivity;if(valueChanged){this.invalidateAppenderCache();}};this.addAppender=function(appender){if(isNull){handleError(\"Logger.addAppender: you may not add an appender to the null logger\");}else{if(appender instanceof log4javascript.Appender){if(!array_contains(appenders,appender)){appenders.push(appender);appender.setAddedToLogger(this);this.invalidateAppenderCache();}}else{handleError(\"Logger.addAppender: appender supplied ('\"+\r\ntoStr(appender)+\"') is not a subclass of Appender\");}}};this.removeAppender=function(appender){array_remove(appenders,appender);appender.setRemovedFromLogger(this);this.invalidateAppenderCache();};this.removeAllAppenders=function(){var appenderCount=appenders.length;if(appenderCount>0){for(var i=0;i<appenderCount;i++){appenders[i].setRemovedFromLogger(this);}\r\nappenders.length=0;this.invalidateAppenderCache();}};this.getEffectiveAppenders=function(){if(appenderCache===null||appenderCacheInvalidated){var parentEffectiveAppenders=(isRoot||!this.getAdditivity())?[]:this.parent.getEffectiveAppenders();appenderCache=parentEffectiveAppenders.concat(appenders);appenderCacheInvalidated=false;}\r\nreturn appenderCache;};this.invalidateAppenderCache=function(){appenderCacheInvalidated=true;for(var i=0,len=this.children.length;i<len;i++){this.children[i].invalidateAppenderCache();}};this.log=function(level,params){if(enabled&&level.isGreaterOrEqual(this.getEffectiveLevel())){var exception;var finalParamIndex=params.length-1;var lastParam=params[finalParamIndex];if(params.length>1&&isError(lastParam)){exception=lastParam;finalParamIndex--;}\r\nvar messages=[];for(var i=0;i<=finalParamIndex;i++){messages[i]=params[i];}\r\nvar loggingEvent=new LoggingEvent(this,new Date(),level,messages,exception);this.callAppenders(loggingEvent);}};this.callAppenders=function(loggingEvent){var effectiveAppenders=this.getEffectiveAppenders();for(var i=0,len=effectiveAppenders.length;i<len;i++){effectiveAppenders[i].doAppend(loggingEvent);}};this.setLevel=function(level){if(isRoot&&level===null){handleError(\"Logger.setLevel: you cannot set the level of the root logger to null\");}else if(level instanceof Level){loggerLevel=level;}else{handleError(\"Logger.setLevel: level supplied to logger \"+\r\nthis.name+\" is not an instance of log4javascript.Level\");}};this.getLevel=function(){return loggerLevel;};this.getEffectiveLevel=function(){for(var logger=this;logger!==null;logger=logger.parent){var level=logger.getLevel();if(level!==null){return level;}}};this.group=function(name,initiallyExpanded){if(enabled){var effectiveAppenders=this.getEffectiveAppenders();for(var i=0,len=effectiveAppenders.length;i<len;i++){effectiveAppenders[i].group(name,initiallyExpanded);}}};this.groupEnd=function(){if(enabled){var effectiveAppenders=this.getEffectiveAppenders();for(var i=0,len=effectiveAppenders.length;i<len;i++){effectiveAppenders[i].groupEnd();}}};var timers={};this.time=function(name,level){if(enabled){if(isUndefined(name)){handleError(\"Logger.time: a name for the timer must be supplied\");}else if(level&&!(level instanceof Level)){handleError(\"Logger.time: level supplied to timer \"+\r\nname+\" is not an instance of log4javascript.Level\");}else{timers[name]=new Timer(name,level);}}};this.timeEnd=function(name){if(enabled){if(isUndefined(name)){handleError(\"Logger.timeEnd: a name for the timer must be supplied\");}else if(timers[name]){var timer=timers[name];var milliseconds=timer.getElapsedTime();this.log(timer.level,[\"Timer \"+toStr(name)+\" completed in \"+milliseconds+\"ms\"]);delete timers[name];}else{logLog.warn(\"Logger.timeEnd: no timer found with name \"+name);}}};this.assert=function(expr){if(enabled&&!expr){var args=[];for(var i=1,len=arguments.length;i<len;i++){args.push(arguments[i]);}\r\nargs=(args.length>0)?args:[\"Assertion Failure\"];args.push(newLine);args.push(expr);this.log(Level.ERROR,args);}};this.toString=function(){return\"Logger[\"+this.name+\"]\";};}\r\nLogger.prototype={trace:function(){this.log(Level.TRACE,arguments);},debug:function(){this.log(Level.DEBUG,arguments);},info:function(){this.log(Level.INFO,arguments);},warn:function(){this.log(Level.WARN,arguments);},error:function(){this.log(Level.ERROR,arguments);},fatal:function(){this.log(Level.FATAL,arguments);},isEnabledFor:function(level){return level.isGreaterOrEqual(this.getEffectiveLevel());},isTraceEnabled:function(){return this.isEnabledFor(Level.TRACE);},isDebugEnabled:function(){return this.isEnabledFor(Level.DEBUG);},isInfoEnabled:function(){return this.isEnabledFor(Level.INFO);},isWarnEnabled:function(){return this.isEnabledFor(Level.WARN);},isErrorEnabled:function(){return this.isEnabledFor(Level.ERROR);},isFatalEnabled:function(){return this.isEnabledFor(Level.FATAL);}};Logger.prototype.trace.isEntryPoint=true;Logger.prototype.debug.isEntryPoint=true;Logger.prototype.info.isEntryPoint=true;Logger.prototype.warn.isEntryPoint=true;Logger.prototype.error.isEntryPoint=true;Logger.prototype.fatal.isEntryPoint=true;var loggers={};var loggerNames=[];var ROOT_LOGGER_DEFAULT_LEVEL=Level.DEBUG;var rootLogger=new Logger(rootLoggerName);rootLogger.setLevel(ROOT_LOGGER_DEFAULT_LEVEL);log4javascript.getRootLogger=function(){return rootLogger;};log4javascript.getLogger=function(loggerName){if(typeof loggerName!=\"string\"){loggerName=anonymousLoggerName;logLog.warn(\"log4javascript.getLogger: non-string logger name \"+\r\ntoStr(loggerName)+\" supplied, returning anonymous logger\");}\r\nif(loggerName==rootLoggerName){handleError(\"log4javascript.getLogger: root logger may not be obtained by name\");}\r\nif(!loggers[loggerName]){var logger=new Logger(loggerName);loggers[loggerName]=logger;loggerNames.push(loggerName);var lastDotIndex=loggerName.lastIndexOf(\".\");var parentLogger;if(lastDotIndex>-1){var parentLoggerName=loggerName.substring(0,lastDotIndex);parentLogger=log4javascript.getLogger(parentLoggerName);}else{parentLogger=rootLogger;}\r\nparentLogger.addChild(logger);}\r\nreturn loggers[loggerName];};var defaultLogger=null;log4javascript.getDefaultLogger=function(){if(!defaultLogger){defaultLogger=createDefaultLogger();}\r\nreturn defaultLogger;};var nullLogger=null;log4javascript.getNullLogger=function(){if(!nullLogger){nullLogger=new Logger(nullLoggerName);nullLogger.setLevel(Level.OFF);}\r\nreturn nullLogger;};log4javascript.resetConfiguration=function(){rootLogger.setLevel(ROOT_LOGGER_DEFAULT_LEVEL);loggers={};};var LoggingEvent=function(logger,timeStamp,level,messages,exception){this.logger=logger;this.timeStamp=timeStamp;this.timeStampInMilliseconds=timeStamp.getTime();this.timeStampInSeconds=Math.floor(this.timeStampInMilliseconds/1000);this.milliseconds=this.timeStamp.getMilliseconds();this.level=level;this.messages=messages;this.exception=exception;};LoggingEvent.prototype={getThrowableStrRep:function(){return this.exception?getExceptionStringRep(this.exception):\"\";},getCombinedMessages:function(){return(this.messages.length==1)?this.messages[0]:this.messages.join(newLine);},toString:function(){return\"LoggingEvent[\"+this.level+\"]\";}};log4javascript.LoggingEvent=LoggingEvent;var Layout=function(){};Layout.prototype={defaults:{loggerKey:\"logger\",timeStampKey:\"timestamp\",millisecondsKey:\"milliseconds\",levelKey:\"level\",messageKey:\"message\",exceptionKey:\"exception\",urlKey:\"url\"},loggerKey:\"logger\",timeStampKey:\"timestamp\",millisecondsKey:\"milliseconds\",levelKey:\"level\",messageKey:\"message\",exceptionKey:\"exception\",urlKey:\"url\",batchHeader:\"\",batchFooter:\"\",batchSeparator:\"\",returnsPostData:false,overrideTimeStampsSetting:false,useTimeStampsInMilliseconds:null,format:function(){handleError(\"Layout.format: layout supplied has no format() method\");},ignoresThrowable:function(){handleError(\"Layout.ignoresThrowable: layout supplied has no ignoresThrowable() method\");},getContentType:function(){return\"text/plain\";},allowBatching:function(){return true;},setTimeStampsInMilliseconds:function(timeStampsInMilliseconds){this.overrideTimeStampsSetting=true;this.useTimeStampsInMilliseconds=bool(timeStampsInMilliseconds);},isTimeStampsInMilliseconds:function(){return this.overrideTimeStampsSetting?this.useTimeStampsInMilliseconds:useTimeStampsInMilliseconds;},getTimeStampValue:function(loggingEvent){return this.isTimeStampsInMilliseconds()?loggingEvent.timeStampInMilliseconds:loggingEvent.timeStampInSeconds;},getDataValues:function(loggingEvent,combineMessages){var dataValues=[[this.loggerKey,loggingEvent.logger.name],[this.timeStampKey,this.getTimeStampValue(loggingEvent)],[this.levelKey,loggingEvent.level.name],[this.urlKey,window.location.href],[this.messageKey,combineMessages?loggingEvent.getCombinedMessages():loggingEvent.messages]];if(!this.isTimeStampsInMilliseconds()){dataValues.push([this.millisecondsKey,loggingEvent.milliseconds]);}\r\nif(loggingEvent.exception){dataValues.push([this.exceptionKey,getExceptionStringRep(loggingEvent.exception)]);}\r\nif(this.hasCustomFields()){for(var i=0,len=this.customFields.length;i<len;i++){var val=this.customFields[i].value;if(typeof val===\"function\"){val=val(this,loggingEvent);}\r\ndataValues.push([this.customFields[i].name,val]);}}\r\nreturn dataValues;},setKeys:function(loggerKey,timeStampKey,levelKey,messageKey,exceptionKey,urlKey,millisecondsKey){this.loggerKey=extractStringFromParam(loggerKey,this.defaults.loggerKey);this.timeStampKey=extractStringFromParam(timeStampKey,this.defaults.timeStampKey);this.levelKey=extractStringFromParam(levelKey,this.defaults.levelKey);this.messageKey=extractStringFromParam(messageKey,this.defaults.messageKey);this.exceptionKey=extractStringFromParam(exceptionKey,this.defaults.exceptionKey);this.urlKey=extractStringFromParam(urlKey,this.defaults.urlKey);this.millisecondsKey=extractStringFromParam(millisecondsKey,this.defaults.millisecondsKey);},setCustomField:function(name,value){var fieldUpdated=false;for(var i=0,len=this.customFields.length;i<len;i++){if(this.customFields[i].name===name){this.customFields[i].value=value;fieldUpdated=true;}}\r\nif(!fieldUpdated){this.customFields.push({\"name\":name,\"value\":value});}},hasCustomFields:function(){return(this.customFields.length>0);},formatWithException:function(loggingEvent){var formatted=this.format(loggingEvent);if(loggingEvent.exception&&this.ignoresThrowable()){formatted+=loggingEvent.getThrowableStrRep();}\r\nreturn formatted;},toString:function(){handleError(\"Layout.toString: all layouts must override this method\");}};log4javascript.Layout=Layout;var Appender=function(){};Appender.prototype=new EventSupport();Appender.prototype.layout=new PatternLayout();Appender.prototype.threshold=Level.ALL;Appender.prototype.loggers=[];Appender.prototype.doAppend=function(loggingEvent){if(enabled&&loggingEvent.level.level>=this.threshold.level){this.append(loggingEvent);}};Appender.prototype.append=function(loggingEvent){};Appender.prototype.setLayout=function(layout){if(layout instanceof Layout){this.layout=layout;}else{handleError(\"Appender.setLayout: layout supplied to \"+\r\nthis.toString()+\" is not a subclass of Layout\");}};Appender.prototype.getLayout=function(){return this.layout;};Appender.prototype.setThreshold=function(threshold){if(threshold instanceof Level){this.threshold=threshold;}else{handleError(\"Appender.setThreshold: threshold supplied to \"+\r\nthis.toString()+\" is not a subclass of Level\");}};Appender.prototype.getThreshold=function(){return this.threshold;};Appender.prototype.setAddedToLogger=function(logger){this.loggers.push(logger);};Appender.prototype.setRemovedFromLogger=function(logger){array_remove(this.loggers,logger);};Appender.prototype.group=emptyFunction;Appender.prototype.groupEnd=emptyFunction;Appender.prototype.toString=function(){handleError(\"Appender.toString: all appenders must override this method\");};log4javascript.Appender=Appender;function SimpleLayout(){this.customFields=[];}\r\nSimpleLayout.prototype=new Layout();SimpleLayout.prototype.format=function(loggingEvent){return loggingEvent.level.name+\" - \"+loggingEvent.getCombinedMessages();};SimpleLayout.prototype.ignoresThrowable=function(){return true;};SimpleLayout.prototype.toString=function(){return\"SimpleLayout\";};log4javascript.SimpleLayout=SimpleLayout;function NullLayout(){this.customFields=[];}\r\nNullLayout.prototype=new Layout();NullLayout.prototype.format=function(loggingEvent){return loggingEvent.messages;};NullLayout.prototype.ignoresThrowable=function(){return true;};NullLayout.prototype.formatWithException=function(loggingEvent){var messages=loggingEvent.messages,ex=loggingEvent.exception;return ex?messages.concat([ex]):messages;};NullLayout.prototype.toString=function(){return\"NullLayout\";};log4javascript.NullLayout=NullLayout;function XmlLayout(combineMessages){this.combineMessages=extractBooleanFromParam(combineMessages,true);this.customFields=[];}\r\nXmlLayout.prototype=new Layout();XmlLayout.prototype.isCombinedMessages=function(){return this.combineMessages;};XmlLayout.prototype.getContentType=function(){return\"text/xml\";};XmlLayout.prototype.escapeCdata=function(str){return str.replace(/\\]\\]>/,\"]]>]]&gt;<![CDATA[\");};XmlLayout.prototype.format=function(loggingEvent){var layout=this;var i,len;function formatMessage(message){message=(typeof message===\"string\")?message:toStr(message);return\"<log4javascript:message><![CDATA[\"+\r\nlayout.escapeCdata(message)+\"]]></log4javascript:message>\";}\r\nvar str=\"<log4javascript:event logger=\\\"\"+loggingEvent.logger.name+\"\\\" timestamp=\\\"\"+this.getTimeStampValue(loggingEvent)+\"\\\"\";if(!this.isTimeStampsInMilliseconds()){str+=\" milliseconds=\\\"\"+loggingEvent.milliseconds+\"\\\"\";}\r\nstr+=\" level=\\\"\"+loggingEvent.level.name+\"\\\">\"+newLine;if(this.combineMessages){str+=formatMessage(loggingEvent.getCombinedMessages());}else{str+=\"<log4javascript:messages>\"+newLine;for(i=0,len=loggingEvent.messages.length;i<len;i++){str+=formatMessage(loggingEvent.messages[i])+newLine;}\r\nstr+=\"</log4javascript:messages>\"+newLine;}\r\nif(this.hasCustomFields()){for(i=0,len=this.customFields.length;i<len;i++){str+=\"<log4javascript:customfield name=\\\"\"+\r\nthis.customFields[i].name+\"\\\"><![CDATA[\"+\r\nthis.customFields[i].value.toString()+\"]]></log4javascript:customfield>\"+newLine;}}\r\nif(loggingEvent.exception){str+=\"<log4javascript:exception><![CDATA[\"+\r\ngetExceptionStringRep(loggingEvent.exception)+\"]]></log4javascript:exception>\"+newLine;}\r\nstr+=\"</log4javascript:event>\"+newLine+newLine;return str;};XmlLayout.prototype.ignoresThrowable=function(){return false;};XmlLayout.prototype.toString=function(){return\"XmlLayout\";};log4javascript.XmlLayout=XmlLayout;function escapeNewLines(str){return str.replace(/\\r\\n|\\r|\\n/g,\"\\\\r\\\\n\");}\r\nfunction JsonLayout(readable,combineMessages){this.readable=extractBooleanFromParam(readable,false);this.combineMessages=extractBooleanFromParam(combineMessages,true);this.batchHeader=this.readable?\"[\"+newLine:\"[\";this.batchFooter=this.readable?\"]\"+newLine:\"]\";this.batchSeparator=this.readable?\",\"+newLine:\",\";this.setKeys();this.colon=this.readable?\": \":\":\";this.tab=this.readable?\"\\t\":\"\";this.lineBreak=this.readable?newLine:\"\";this.customFields=[];}\r\nJsonLayout.prototype=new Layout();JsonLayout.prototype.isReadable=function(){return this.readable;};JsonLayout.prototype.isCombinedMessages=function(){return this.combineMessages;};JsonLayout.prototype.format=function(loggingEvent){var layout=this;var dataValues=this.getDataValues(loggingEvent,this.combineMessages);var str=\"{\"+this.lineBreak;var i,len;function formatValue(val,prefix,expand){var formattedValue;var valType=typeof val;if(val instanceof Date){formattedValue=String(val.getTime());}else if(expand&&(val instanceof Array)){formattedValue=\"[\"+layout.lineBreak;for(var i=0,len=val.length;i<len;i++){var childPrefix=prefix+layout.tab;formattedValue+=childPrefix+formatValue(val[i],childPrefix,false);if(i<val.length-1){formattedValue+=\",\";}\r\nformattedValue+=layout.lineBreak;}\r\nformattedValue+=prefix+\"]\";}else if(valType!==\"number\"&&valType!==\"boolean\"){formattedValue=\"\\\"\"+escapeNewLines(toStr(val).replace(/\\\"/g,\"\\\\\\\"\"))+\"\\\"\";}else{formattedValue=val;}\r\nreturn formattedValue;}\r\nfor(i=0,len=dataValues.length-1;i<=len;i++){str+=this.tab+\"\\\"\"+dataValues[i][0]+\"\\\"\"+this.colon+formatValue(dataValues[i][1],this.tab,true);if(i<len){str+=\",\";}\r\nstr+=this.lineBreak;}\r\nstr+=\"}\"+this.lineBreak;return str;};JsonLayout.prototype.ignoresThrowable=function(){return false;};JsonLayout.prototype.toString=function(){return\"JsonLayout\";};JsonLayout.prototype.getContentType=function(){return\"application/json\";};log4javascript.JsonLayout=JsonLayout;function HttpPostDataLayout(){this.setKeys();this.customFields=[];this.returnsPostData=true;}\r\nHttpPostDataLayout.prototype=new Layout();HttpPostDataLayout.prototype.allowBatching=function(){return false;};HttpPostDataLayout.prototype.format=function(loggingEvent){var dataValues=this.getDataValues(loggingEvent);var queryBits=[];for(var i=0,len=dataValues.length;i<len;i++){var val=(dataValues[i][1]instanceof Date)?String(dataValues[i][1].getTime()):dataValues[i][1];queryBits.push(urlEncode(dataValues[i][0])+\"=\"+urlEncode(val));}\r\nreturn queryBits.join(\"&\");};HttpPostDataLayout.prototype.ignoresThrowable=function(loggingEvent){return false;};HttpPostDataLayout.prototype.toString=function(){return\"HttpPostDataLayout\";};log4javascript.HttpPostDataLayout=HttpPostDataLayout;function formatObjectExpansion(obj,depth,indentation){var objectsExpanded=[];function doFormat(obj,depth,indentation){var i,len,childDepth,childIndentation,childLines,expansion,childExpansion;if(!indentation){indentation=\"\";}\r\nfunction formatString(text){var lines=splitIntoLines(text);for(var j=1,jLen=lines.length;j<jLen;j++){lines[j]=indentation+lines[j];}\r\nreturn lines.join(newLine);}\r\nif(obj===null){return\"null\";}else if(typeof obj==\"undefined\"){return\"undefined\";}else if(typeof obj==\"string\"){return formatString(obj);}else if(typeof obj==\"object\"&&array_contains(objectsExpanded,obj)){try{expansion=toStr(obj);}catch(ex){expansion=\"Error formatting property. Details: \"+getExceptionStringRep(ex);}\r\nreturn expansion+\" [already expanded]\";}else if((obj instanceof Array)&&depth>0){objectsExpanded.push(obj);expansion=\"[\"+newLine;childDepth=depth-1;childIndentation=indentation+\" \";childLines=[];for(i=0,len=obj.length;i<len;i++){try{childExpansion=doFormat(obj[i],childDepth,childIndentation);childLines.push(childIndentation+childExpansion);}catch(ex){childLines.push(childIndentation+\"Error formatting array member. Details: \"+\r\ngetExceptionStringRep(ex)+\"\");}}\r\nexpansion+=childLines.join(\",\"+newLine)+newLine+indentation+\"]\";return expansion;}else if(Object.prototype.toString.call(obj)==\"[object Date]\"){return obj.toString();}else if(typeof obj==\"object\"&&depth>0){objectsExpanded.push(obj);expansion=\"{\"+newLine;childDepth=depth-1;childIndentation=indentation+\" \";childLines=[];for(i in obj){try{childExpansion=doFormat(obj[i],childDepth,childIndentation);childLines.push(childIndentation+i+\": \"+childExpansion);}catch(ex){childLines.push(childIndentation+i+\": Error formatting property. Details: \"+\r\ngetExceptionStringRep(ex));}}\r\nexpansion+=childLines.join(\",\"+newLine)+newLine+indentation+\"}\";return expansion;}else{return formatString(toStr(obj));}}\r\nreturn doFormat(obj,depth,indentation);}\r\nvar SimpleDateFormat;(function(){var regex=/('[^']*')|(G+|y+|M+|w+|W+|D+|d+|F+|E+|a+|H+|k+|K+|h+|m+|s+|S+|Z+)|([a-zA-Z]+)|([^a-zA-Z']+)/;var monthNames=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];var dayNames=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];var TEXT2=0,TEXT3=1,NUMBER=2,YEAR=3,MONTH=4,TIMEZONE=5;var types={G:TEXT2,y:YEAR,M:MONTH,w:NUMBER,W:NUMBER,D:NUMBER,d:NUMBER,F:NUMBER,E:TEXT3,a:TEXT2,H:NUMBER,k:NUMBER,K:NUMBER,h:NUMBER,m:NUMBER,s:NUMBER,S:NUMBER,Z:TIMEZONE};var ONE_DAY=24*60*60*1000;var ONE_WEEK=7*ONE_DAY;var DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK=1;var newDateAtMidnight=function(year,month,day){var d=new Date(year,month,day,0,0,0);d.setMilliseconds(0);return d;};Date.prototype.getDifference=function(date){return this.getTime()-date.getTime();};Date.prototype.isBefore=function(d){return this.getTime()<d.getTime();};Date.prototype.getUTCTime=function(){return Date.UTC(this.getFullYear(),this.getMonth(),this.getDate(),this.getHours(),this.getMinutes(),this.getSeconds(),this.getMilliseconds());};Date.prototype.getTimeSince=function(d){return this.getUTCTime()-d.getUTCTime();};Date.prototype.getPreviousSunday=function(){var midday=new Date(this.getFullYear(),this.getMonth(),this.getDate(),12,0,0);var previousSunday=new Date(midday.getTime()-this.getDay()*ONE_DAY);return newDateAtMidnight(previousSunday.getFullYear(),previousSunday.getMonth(),previousSunday.getDate());};Date.prototype.getWeekInYear=function(minimalDaysInFirstWeek){if(isUndefined(this.minimalDaysInFirstWeek)){minimalDaysInFirstWeek=DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK;}\r\nvar previousSunday=this.getPreviousSunday();var startOfYear=newDateAtMidnight(this.getFullYear(),0,1);var numberOfSundays=previousSunday.isBefore(startOfYear)?0:1+Math.floor(previousSunday.getTimeSince(startOfYear)/ONE_WEEK);var numberOfDaysInFirstWeek=7-startOfYear.getDay();var weekInYear=numberOfSundays;if(numberOfDaysInFirstWeek<minimalDaysInFirstWeek){weekInYear--;}\r\nreturn weekInYear;};Date.prototype.getWeekInMonth=function(minimalDaysInFirstWeek){if(isUndefined(this.minimalDaysInFirstWeek)){minimalDaysInFirstWeek=DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK;}\r\nvar previousSunday=this.getPreviousSunday();var startOfMonth=newDateAtMidnight(this.getFullYear(),this.getMonth(),1);var numberOfSundays=previousSunday.isBefore(startOfMonth)?0:1+Math.floor(previousSunday.getTimeSince(startOfMonth)/ONE_WEEK);var numberOfDaysInFirstWeek=7-startOfMonth.getDay();var weekInMonth=numberOfSundays;if(numberOfDaysInFirstWeek>=minimalDaysInFirstWeek){weekInMonth++;}\r\nreturn weekInMonth;};Date.prototype.getDayInYear=function(){var startOfYear=newDateAtMidnight(this.getFullYear(),0,1);return 1+Math.floor(this.getTimeSince(startOfYear)/ONE_DAY);};SimpleDateFormat=function(formatString){this.formatString=formatString;};SimpleDateFormat.prototype.setMinimalDaysInFirstWeek=function(days){this.minimalDaysInFirstWeek=days;};SimpleDateFormat.prototype.getMinimalDaysInFirstWeek=function(){return isUndefined(this.minimalDaysInFirstWeek)?DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK:this.minimalDaysInFirstWeek;};var padWithZeroes=function(str,len){while(str.length<len){str=\"0\"+str;}\r\nreturn str;};var formatText=function(data,numberOfLetters,minLength){return(numberOfLetters>=4)?data:data.substr(0,Math.max(minLength,numberOfLetters));};var formatNumber=function(data,numberOfLetters){var dataString=\"\"+data;return padWithZeroes(dataString,numberOfLetters);};SimpleDateFormat.prototype.format=function(date){var formattedString=\"\";var result;var searchString=this.formatString;while((result=regex.exec(searchString))){var quotedString=result[1];var patternLetters=result[2];var otherLetters=result[3];var otherCharacters=result[4];if(quotedString){if(quotedString==\"''\"){formattedString+=\"'\";}else{formattedString+=quotedString.substring(1,quotedString.length-1);}}else if(otherLetters){}else if(otherCharacters){formattedString+=otherCharacters;}else if(patternLetters){var patternLetter=patternLetters.charAt(0);var numberOfLetters=patternLetters.length;var rawData=\"\";switch(patternLetter){case\"G\":rawData=\"AD\";break;case\"y\":rawData=date.getFullYear();break;case\"M\":rawData=date.getMonth();break;case\"w\":rawData=date.getWeekInYear(this.getMinimalDaysInFirstWeek());break;case\"W\":rawData=date.getWeekInMonth(this.getMinimalDaysInFirstWeek());break;case\"D\":rawData=date.getDayInYear();break;case\"d\":rawData=date.getDate();break;case\"F\":rawData=1+Math.floor((date.getDate()-1)/7);break;case\"E\":rawData=dayNames[date.getDay()];break;case\"a\":rawData=(date.getHours()>=12)?\"PM\":\"AM\";break;case\"H\":rawData=date.getHours();break;case\"k\":rawData=date.getHours()||24;break;case\"K\":rawData=date.getHours()%12;break;case\"h\":rawData=(date.getHours()%12)||12;break;case\"m\":rawData=date.getMinutes();break;case\"s\":rawData=date.getSeconds();break;case\"S\":rawData=date.getMilliseconds();break;case\"Z\":rawData=date.getTimezoneOffset();break;}\r\nswitch(types[patternLetter]){case TEXT2:formattedString+=formatText(rawData,numberOfLetters,2);break;case TEXT3:formattedString+=formatText(rawData,numberOfLetters,3);break;case NUMBER:formattedString+=formatNumber(rawData,numberOfLetters);break;case YEAR:if(numberOfLetters<=3){var dataString=\"\"+rawData;formattedString+=dataString.substr(2,2);}else{formattedString+=formatNumber(rawData,numberOfLetters);}\r\nbreak;case MONTH:if(numberOfLetters>=3){formattedString+=formatText(monthNames[rawData],numberOfLetters,numberOfLetters);}else{formattedString+=formatNumber(rawData+1,numberOfLetters);}\r\nbreak;case TIMEZONE:var isPositive=(rawData>0);var prefix=isPositive?\"-\":\"+\";var absData=Math.abs(rawData);var hours=\"\"+Math.floor(absData/60);hours=padWithZeroes(hours,2);var minutes=\"\"+(absData%60);minutes=padWithZeroes(minutes,2);formattedString+=prefix+hours+minutes;break;}}\r\nsearchString=searchString.substr(result.index+result[0].length);}\r\nreturn formattedString;};})();log4javascript.SimpleDateFormat=SimpleDateFormat;function PatternLayout(pattern){if(pattern){this.pattern=pattern;}else{this.pattern=PatternLayout.DEFAULT_CONVERSION_PATTERN;}\r\nthis.customFields=[];}\r\nPatternLayout.TTCC_CONVERSION_PATTERN=\"%r %p %c - %m%n\";PatternLayout.DEFAULT_CONVERSION_PATTERN=\"%m%n\";PatternLayout.ISO8601_DATEFORMAT=\"yyyy-MM-dd HH:mm:ss,SSS\";PatternLayout.DATETIME_DATEFORMAT=\"dd MMM yyyy HH:mm:ss,SSS\";PatternLayout.ABSOLUTETIME_DATEFORMAT=\"HH:mm:ss,SSS\";PatternLayout.prototype=new Layout();PatternLayout.prototype.format=function(loggingEvent){var regex=/%(-?[0-9]+)?(\\.?[0-9]+)?([acdfmMnpr%])(\\{([^\\}]+)\\})?|([^%]+)/;var formattedString=\"\";var result;var searchString=this.pattern;while((result=regex.exec(searchString))){var matchedString=result[0];var padding=result[1];var truncation=result[2];var conversionCharacter=result[3];var specifier=result[5];var text=result[6];if(text){formattedString+=\"\"+text;}else{var replacement=\"\";switch(conversionCharacter){case\"a\":case\"m\":var depth=0;if(specifier){depth=parseInt(specifier,10);if(isNaN(depth)){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character '\"+conversionCharacter+\"' - should be a number\");depth=0;}}\r\nvar messages=(conversionCharacter===\"a\")?loggingEvent.messages[0]:loggingEvent.messages;for(var i=0,len=messages.length;i<len;i++){if(i>0&&(replacement.charAt(replacement.length-1)!==\" \")){replacement+=\" \";}\r\nif(depth===0){replacement+=messages[i];}else{replacement+=formatObjectExpansion(messages[i],depth);}}\r\nbreak;case\"c\":var loggerName=loggingEvent.logger.name;if(specifier){var precision=parseInt(specifier,10);var loggerNameBits=loggingEvent.logger.name.split(\".\");if(precision>=loggerNameBits.length){replacement=loggerName;}else{replacement=loggerNameBits.slice(loggerNameBits.length-precision).join(\".\");}}else{replacement=loggerName;}\r\nbreak;case\"d\":var dateFormat=PatternLayout.ISO8601_DATEFORMAT;if(specifier){dateFormat=specifier;if(dateFormat==\"ISO8601\"){dateFormat=PatternLayout.ISO8601_DATEFORMAT;}else if(dateFormat==\"ABSOLUTE\"){dateFormat=PatternLayout.ABSOLUTETIME_DATEFORMAT;}else if(dateFormat==\"DATE\"){dateFormat=PatternLayout.DATETIME_DATEFORMAT;}}\r\nreplacement=(new SimpleDateFormat(dateFormat)).format(loggingEvent.timeStamp);break;case\"f\":if(this.hasCustomFields()){var fieldIndex=0;if(specifier){fieldIndex=parseInt(specifier,10);if(isNaN(fieldIndex)){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character 'f' - should be a number\");}else if(fieldIndex===0){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character 'f' - must be greater than zero\");}else if(fieldIndex>this.customFields.length){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character 'f' - there aren't that many custom fields\");}else{fieldIndex=fieldIndex-1;}}\r\nvar val=this.customFields[fieldIndex].value;if(typeof val==\"function\"){val=val(this,loggingEvent);}\r\nreplacement=val;}\r\nbreak;case\"n\":replacement=newLine;break;case\"p\":replacement=loggingEvent.level.name;break;case\"r\":replacement=\"\"+loggingEvent.timeStamp.getDifference(applicationStartDate);break;case\"%\":replacement=\"%\";break;default:replacement=matchedString;break;}\r\nvar l;if(truncation){l=parseInt(truncation.substr(1),10);var strLen=replacement.length;if(l<strLen){replacement=replacement.substring(strLen-l,strLen);}}\r\nif(padding){if(padding.charAt(0)==\"-\"){l=parseInt(padding.substr(1),10);while(replacement.length<l){replacement+=\" \";}}else{l=parseInt(padding,10);while(replacement.length<l){replacement=\" \"+replacement;}}}\r\nformattedString+=replacement;}\r\nsearchString=searchString.substr(result.index+result[0].length);}\r\nreturn formattedString;};PatternLayout.prototype.ignoresThrowable=function(){return true;};PatternLayout.prototype.toString=function(){return\"PatternLayout\";};log4javascript.PatternLayout=PatternLayout;function AlertAppender(){}\r\nAlertAppender.prototype=new Appender();AlertAppender.prototype.layout=new SimpleLayout();AlertAppender.prototype.append=function(loggingEvent){alert(this.getLayout().formatWithException(loggingEvent));};AlertAppender.prototype.toString=function(){return\"AlertAppender\";};log4javascript.AlertAppender=AlertAppender;function BrowserConsoleAppender(){}\r\nBrowserConsoleAppender.prototype=new log4javascript.Appender();BrowserConsoleAppender.prototype.layout=new NullLayout();BrowserConsoleAppender.prototype.threshold=Level.DEBUG;BrowserConsoleAppender.prototype.append=function(loggingEvent){var appender=this;var getFormattedMessage=function(concatenate){var formattedMessage=appender.getLayout().formatWithException(loggingEvent);return(typeof formattedMessage==\"string\")?(concatenate?formattedMessage:[formattedMessage]):(concatenate?formattedMessage.join(\" \"):formattedMessage);};var console=window.console;if(console&&console.log){var consoleMethodName;if(console.debug&&Level.DEBUG.isGreaterOrEqual(loggingEvent.level)){consoleMethodName=\"debug\";}else if(console.info&&Level.INFO.equals(loggingEvent.level)){consoleMethodName=\"info\";}else if(console.warn&&Level.WARN.equals(loggingEvent.level)){consoleMethodName=\"warn\";}else if(console.error&&loggingEvent.level.isGreaterOrEqual(Level.ERROR)){consoleMethodName=\"error\";}else{consoleMethodName=\"log\";}\r\nif(typeof console[consoleMethodName].apply==\"function\"){console[consoleMethodName].apply(console,getFormattedMessage(false));}else{console[consoleMethodName](getFormattedMessage(true));}}else if((typeof opera!=\"undefined\")&&opera.postError){opera.postError(getFormattedMessage(true));}};BrowserConsoleAppender.prototype.group=function(name){if(window.console&&window.console.group){window.console.group(name);}};BrowserConsoleAppender.prototype.groupEnd=function(){if(window.console&&window.console.groupEnd){window.console.groupEnd();}};BrowserConsoleAppender.prototype.toString=function(){return\"BrowserConsoleAppender\";};log4javascript.BrowserConsoleAppender=BrowserConsoleAppender;var xhrFactory=function(){return new XMLHttpRequest();};var xmlHttpFactories=[xhrFactory,function(){return new ActiveXObject(\"Msxml2.XMLHTTP\");},function(){return new ActiveXObject(\"Microsoft.XMLHTTP\");}];var withCredentialsSupported=false;var getXmlHttp=function(errorHandler){var xmlHttp=null,factory;for(var i=0,len=xmlHttpFactories.length;i<len;i++){factory=xmlHttpFactories[i];try{xmlHttp=factory();withCredentialsSupported=(factory==xhrFactory&&(\"withCredentials\"in xmlHttp));getXmlHttp=factory;return xmlHttp;}catch(e){}}\r\nif(errorHandler){errorHandler();}else{handleError(\"getXmlHttp: unable to obtain XMLHttpRequest object\");}};function isHttpRequestSuccessful(xmlHttp){return isUndefined(xmlHttp.status)||xmlHttp.status===0||(xmlHttp.status>=200&&xmlHttp.status<300)||xmlHttp.status==1223;}\r\nfunction AjaxAppender(url,withCredentials){var appender=this;var isSupported=true;if(!url){handleError(\"AjaxAppender: URL must be specified in constructor\");isSupported=false;}\r\nvar timed=this.defaults.timed;var waitForResponse=this.defaults.waitForResponse;var batchSize=this.defaults.batchSize;var timerInterval=this.defaults.timerInterval;var requestSuccessCallback=this.defaults.requestSuccessCallback;var failCallback=this.defaults.failCallback;var postVarName=this.defaults.postVarName;var sendAllOnUnload=this.defaults.sendAllOnUnload;var contentType=this.defaults.contentType;var sessionId=null;var queuedLoggingEvents=[];var queuedRequests=[];var headers=[];var sending=false;var initialized=false;function checkCanConfigure(configOptionName){if(initialized){handleError(\"AjaxAppender: configuration option '\"+\r\nconfigOptionName+\"' may not be set after the appender has been initialized\");return false;}\r\nreturn true;}\r\nthis.getSessionId=function(){return sessionId;};this.setSessionId=function(sessionIdParam){sessionId=extractStringFromParam(sessionIdParam,null);this.layout.setCustomField(\"sessionid\",sessionId);};this.setLayout=function(layoutParam){if(checkCanConfigure(\"layout\")){this.layout=layoutParam;if(sessionId!==null){this.setSessionId(sessionId);}}};this.isTimed=function(){return timed;};this.setTimed=function(timedParam){if(checkCanConfigure(\"timed\")){timed=bool(timedParam);}};this.getTimerInterval=function(){return timerInterval;};this.setTimerInterval=function(timerIntervalParam){if(checkCanConfigure(\"timerInterval\")){timerInterval=extractIntFromParam(timerIntervalParam,timerInterval);}};this.isWaitForResponse=function(){return waitForResponse;};this.setWaitForResponse=function(waitForResponseParam){if(checkCanConfigure(\"waitForResponse\")){waitForResponse=bool(waitForResponseParam);}};this.getBatchSize=function(){return batchSize;};this.setBatchSize=function(batchSizeParam){if(checkCanConfigure(\"batchSize\")){batchSize=extractIntFromParam(batchSizeParam,batchSize);}};this.isSendAllOnUnload=function(){return sendAllOnUnload;};this.setSendAllOnUnload=function(sendAllOnUnloadParam){if(checkCanConfigure(\"sendAllOnUnload\")){sendAllOnUnload=extractBooleanFromParam(sendAllOnUnloadParam,sendAllOnUnload);}};this.setRequestSuccessCallback=function(requestSuccessCallbackParam){requestSuccessCallback=extractFunctionFromParam(requestSuccessCallbackParam,requestSuccessCallback);};this.setFailCallback=function(failCallbackParam){failCallback=extractFunctionFromParam(failCallbackParam,failCallback);};this.getPostVarName=function(){return postVarName;};this.setPostVarName=function(postVarNameParam){if(checkCanConfigure(\"postVarName\")){postVarName=extractStringFromParam(postVarNameParam,postVarName);}};this.getHeaders=function(){return headers;};this.addHeader=function(name,value){if(name.toLowerCase()==\"content-type\"){contentType=value;}else{headers.push({name:name,value:value});}};function sendAll(){if(isSupported&&enabled){sending=true;var currentRequestBatch;if(waitForResponse){if(queuedRequests.length>0){currentRequestBatch=queuedRequests.shift();sendRequest(preparePostData(currentRequestBatch),sendAll);}else{sending=false;if(timed){scheduleSending();}}}else{while((currentRequestBatch=queuedRequests.shift())){sendRequest(preparePostData(currentRequestBatch));}\r\nsending=false;if(timed){scheduleSending();}}}}\r\nthis.sendAll=sendAll;function sendAllRemaining(){var sendingAnything=false;if(isSupported&&enabled){var actualBatchSize=appender.getLayout().allowBatching()?batchSize:1;var currentLoggingEvent;var batchedLoggingEvents=[];while((currentLoggingEvent=queuedLoggingEvents.shift())){batchedLoggingEvents.push(currentLoggingEvent);if(queuedLoggingEvents.length>=actualBatchSize){queuedRequests.push(batchedLoggingEvents);batchedLoggingEvents=[];}}\r\nif(batchedLoggingEvents.length>0){queuedRequests.push(batchedLoggingEvents);}\r\nsendingAnything=(queuedRequests.length>0);waitForResponse=false;timed=false;sendAll();}\r\nreturn sendingAnything;}\r\nthis.sendAllRemaining=sendAllRemaining;function preparePostData(batchedLoggingEvents){var formattedMessages=[];var currentLoggingEvent;var postData=\"\";while((currentLoggingEvent=batchedLoggingEvents.shift())){formattedMessages.push(appender.getLayout().formatWithException(currentLoggingEvent));}\r\nif(batchedLoggingEvents.length==1){postData=formattedMessages.join(\"\");}else{postData=appender.getLayout().batchHeader+\r\nformattedMessages.join(appender.getLayout().batchSeparator)+\r\nappender.getLayout().batchFooter;}\r\nif(contentType==appender.defaults.contentType){postData=appender.getLayout().returnsPostData?postData:urlEncode(postVarName)+\"=\"+urlEncode(postData);if(postData.length>0){postData+=\"&\";}\r\npostData+=\"layout=\"+urlEncode(appender.getLayout().toString());}\r\nreturn postData;}\r\nfunction scheduleSending(){window.setTimeout(sendAll,timerInterval);}\r\nfunction xmlHttpErrorHandler(){var msg=\"AjaxAppender: could not create XMLHttpRequest object. AjaxAppender disabled\";handleError(msg);isSupported=false;if(failCallback){failCallback(msg);}}\r\nfunction sendRequest(postData,successCallback){try{var xmlHttp=getXmlHttp(xmlHttpErrorHandler);if(isSupported){xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4){if(isHttpRequestSuccessful(xmlHttp)){if(requestSuccessCallback){requestSuccessCallback(xmlHttp);}\r\nif(successCallback){successCallback(xmlHttp);}}else{var msg=\"AjaxAppender.append: XMLHttpRequest request to URL \"+\r\nurl+\" returned status code \"+xmlHttp.status;handleError(msg);if(failCallback){failCallback(msg);}}\r\nxmlHttp.onreadystatechange=emptyFunction;xmlHttp=null;}};xmlHttp.open(\"POST\",url,true);if(withCredentials&&withCredentialsSupported){xmlHttp.withCredentials=true;}\r\ntry{for(var i=0,header;header=headers[i++];){xmlHttp.setRequestHeader(header.name,header.value);}\r\nxmlHttp.setRequestHeader(\"Content-Type\",contentType);}catch(headerEx){var msg=\"AjaxAppender.append: your browser's XMLHttpRequest implementation\"+\" does not support setRequestHeader, therefore cannot post data. AjaxAppender disabled\";handleError(msg);isSupported=false;if(failCallback){failCallback(msg);}\r\nreturn;}\r\nxmlHttp.send(postData);}}catch(ex){var errMsg=\"AjaxAppender.append: error sending log message to \"+url;handleError(errMsg,ex);isSupported=false;if(failCallback){failCallback(errMsg+\". Details: \"+getExceptionStringRep(ex));}}}\r\nthis.append=function(loggingEvent){if(isSupported){if(!initialized){init();}\r\nqueuedLoggingEvents.push(loggingEvent);var actualBatchSize=this.getLayout().allowBatching()?batchSize:1;if(queuedLoggingEvents.length>=actualBatchSize){var currentLoggingEvent;var batchedLoggingEvents=[];while((currentLoggingEvent=queuedLoggingEvents.shift())){batchedLoggingEvents.push(currentLoggingEvent);}\r\nqueuedRequests.push(batchedLoggingEvents);if(!timed&&(!waitForResponse||(waitForResponse&&!sending))){sendAll();}}}};function init(){initialized=true;if(sendAllOnUnload){var oldBeforeUnload=window.onbeforeunload;window.onbeforeunload=function(){if(oldBeforeUnload){oldBeforeUnload();}\r\nsendAllRemaining();};}\r\nif(timed){scheduleSending();}}}\r\nAjaxAppender.prototype=new Appender();AjaxAppender.prototype.defaults={waitForResponse:false,timed:false,timerInterval:1000,batchSize:1,sendAllOnUnload:false,requestSuccessCallback:null,failCallback:null,postVarName:\"data\",contentType:\"application/x-www-form-urlencoded\"};AjaxAppender.prototype.layout=new HttpPostDataLayout();AjaxAppender.prototype.toString=function(){return\"AjaxAppender\";};log4javascript.AjaxAppender=AjaxAppender;function setCookie(name,value,days,path){var expires;path=path?\"; path=\"+path:\"\";if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));expires=\"; expires=\"+date.toGMTString();}else{expires=\"\";}\r\ndocument.cookie=escape(name)+\"=\"+escape(value)+expires+path;}\r\nfunction getCookie(name){var nameEquals=escape(name)+\"=\";var ca=document.cookie.split(\";\");for(var i=0,len=ca.length;i<len;i++){var c=ca[i];while(c.charAt(0)===\" \"){c=c.substring(1,c.length);}\r\nif(c.indexOf(nameEquals)===0){return unescape(c.substring(nameEquals.length,c.length));}}\r\nreturn null;}\r\nfunction getBaseUrl(){var scripts=document.getElementsByTagName(\"script\");for(var i=0,len=scripts.length;i<len;++i){if(scripts[i].src.indexOf(\"log4javascript\")!=-1){var lastSlash=scripts[i].src.lastIndexOf(\"/\");return(lastSlash==-1)?\"\":scripts[i].src.substr(0,lastSlash+1);}}\r\nreturn null;}\r\nfunction isLoaded(win){try{return bool(win.loaded);}catch(ex){return false;}}\r\nvar ConsoleAppender;(function(){var getConsoleHtmlLines=function(){return['<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">','<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\">','<head>','<title>log4javascript</title>','<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />','<!-- Make IE8 behave like IE7, having gone to all the trouble of making IE work -->','<meta http-equiv=\"X-UA-Compatible\" content=\"IE=7\" />','<script type=\"text/javascript\">var isIe = false, isIePre7 = false;</script>','<!--[if IE]><script type=\"text/javascript\">isIe = true</script><![endif]-->','<!--[if lt IE 7]><script type=\"text/javascript\">isIePre7 = true</script><![endif]-->','<script type=\"text/javascript\">','//<![CDATA[','var loggingEnabled=true;var logQueuedEventsTimer=null;var logEntries=[];var logEntriesAndSeparators=[];var logItems=[];var renderDelay=100;var unrenderedLogItemsExist=false;var rootGroup,currentGroup=null;var loaded=false;var currentLogItem=null;var logMainContainer;function copyProperties(obj,props){for(var i in props){obj[i]=props[i];}}','function LogItem(){}','LogItem.prototype={mainContainer:null,wrappedContainer:null,unwrappedContainer:null,group:null,appendToLog:function(){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].appendToLog();}','this.group.update();},doRemove:function(doUpdate,removeFromGroup){if(this.rendered){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].remove();}','this.unwrappedElementContainer=null;this.wrappedElementContainer=null;this.mainElementContainer=null;}','if(this.group&&removeFromGroup){this.group.removeChild(this,doUpdate);}','if(this===currentLogItem){currentLogItem=null;}},remove:function(doUpdate,removeFromGroup){this.doRemove(doUpdate,removeFromGroup);},render:function(){},accept:function(visitor){visitor.visit(this);},getUnwrappedDomContainer:function(){return this.group.unwrappedElementContainer.contentDiv;},getWrappedDomContainer:function(){return this.group.wrappedElementContainer.contentDiv;},getMainDomContainer:function(){return this.group.mainElementContainer.contentDiv;}};LogItem.serializedItemKeys={LOG_ENTRY:0,GROUP_START:1,GROUP_END:2};function LogItemContainerElement(){}','LogItemContainerElement.prototype={appendToLog:function(){var insertBeforeFirst=(newestAtTop&&this.containerDomNode.hasChildNodes());if(insertBeforeFirst){this.containerDomNode.insertBefore(this.mainDiv,this.containerDomNode.firstChild);}else{this.containerDomNode.appendChild(this.mainDiv);}}};function SeparatorElementContainer(containerDomNode){this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"separator\";this.mainDiv.innerHTML=\"&nbsp;\";}','SeparatorElementContainer.prototype=new LogItemContainerElement();SeparatorElementContainer.prototype.remove=function(){this.mainDiv.parentNode.removeChild(this.mainDiv);this.mainDiv=null;};function Separator(){this.rendered=false;}','Separator.prototype=new LogItem();copyProperties(Separator.prototype,{render:function(){var containerDomNode=this.group.contentDiv;if(isIe){this.unwrappedElementContainer=new SeparatorElementContainer(this.getUnwrappedDomContainer());this.wrappedElementContainer=new SeparatorElementContainer(this.getWrappedDomContainer());this.elementContainers=[this.unwrappedElementContainer,this.wrappedElementContainer];}else{this.mainElementContainer=new SeparatorElementContainer(this.getMainDomContainer());this.elementContainers=[this.mainElementContainer];}','this.content=this.formattedMessage;this.rendered=true;}});function GroupElementContainer(group,containerDomNode,isRoot,isWrapped){this.group=group;this.containerDomNode=containerDomNode;this.isRoot=isRoot;this.isWrapped=isWrapped;this.expandable=false;if(this.isRoot){if(isIe){this.contentDiv=logMainContainer.appendChild(document.createElement(\"div\"));this.contentDiv.id=this.isWrapped?\"log_wrapped\":\"log_unwrapped\";}else{this.contentDiv=logMainContainer;}}else{var groupElementContainer=this;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"group\";this.headingDiv=this.mainDiv.appendChild(document.createElement(\"div\"));this.headingDiv.className=\"groupheading\";this.expander=this.headingDiv.appendChild(document.createElement(\"span\"));this.expander.className=\"expander unselectable greyedout\";this.expander.unselectable=true;var expanderText=this.group.expanded?\"-\":\"+\";this.expanderTextNode=this.expander.appendChild(document.createTextNode(expanderText));this.headingDiv.appendChild(document.createTextNode(\" \"+this.group.name));this.contentDiv=this.mainDiv.appendChild(document.createElement(\"div\"));var contentCssClass=this.group.expanded?\"expanded\":\"collapsed\";this.contentDiv.className=\"groupcontent \"+contentCssClass;this.expander.onclick=function(){if(groupElementContainer.group.expandable){groupElementContainer.group.toggleExpanded();}};}}','GroupElementContainer.prototype=new LogItemContainerElement();copyProperties(GroupElementContainer.prototype,{toggleExpanded:function(){if(!this.isRoot){var oldCssClass,newCssClass,expanderText;if(this.group.expanded){newCssClass=\"expanded\";oldCssClass=\"collapsed\";expanderText=\"-\";}else{newCssClass=\"collapsed\";oldCssClass=\"expanded\";expanderText=\"+\";}','replaceClass(this.contentDiv,newCssClass,oldCssClass);this.expanderTextNode.nodeValue=expanderText;}},remove:function(){if(!this.isRoot){this.headingDiv=null;this.expander.onclick=null;this.expander=null;this.expanderTextNode=null;this.contentDiv=null;this.containerDomNode=null;this.mainDiv.parentNode.removeChild(this.mainDiv);this.mainDiv=null;}},reverseChildren:function(){var node=null;var childDomNodes=[];while((node=this.contentDiv.firstChild)){this.contentDiv.removeChild(node);childDomNodes.push(node);}','while((node=childDomNodes.pop())){this.contentDiv.appendChild(node);}},update:function(){if(!this.isRoot){if(this.group.expandable){removeClass(this.expander,\"greyedout\");}else{addClass(this.expander,\"greyedout\");}}},clear:function(){if(this.isRoot){this.contentDiv.innerHTML=\"\";}}});function Group(name,isRoot,initiallyExpanded){this.name=name;this.group=null;this.isRoot=isRoot;this.initiallyExpanded=initiallyExpanded;this.elementContainers=[];this.children=[];this.expanded=initiallyExpanded;this.rendered=false;this.expandable=false;}','Group.prototype=new LogItem();copyProperties(Group.prototype,{addChild:function(logItem){this.children.push(logItem);logItem.group=this;},render:function(){if(isIe){var unwrappedDomContainer,wrappedDomContainer;if(this.isRoot){unwrappedDomContainer=logMainContainer;wrappedDomContainer=logMainContainer;}else{unwrappedDomContainer=this.getUnwrappedDomContainer();wrappedDomContainer=this.getWrappedDomContainer();}','this.unwrappedElementContainer=new GroupElementContainer(this,unwrappedDomContainer,this.isRoot,false);this.wrappedElementContainer=new GroupElementContainer(this,wrappedDomContainer,this.isRoot,true);this.elementContainers=[this.unwrappedElementContainer,this.wrappedElementContainer];}else{var mainDomContainer=this.isRoot?logMainContainer:this.getMainDomContainer();this.mainElementContainer=new GroupElementContainer(this,mainDomContainer,this.isRoot,false);this.elementContainers=[this.mainElementContainer];}','this.rendered=true;},toggleExpanded:function(){this.expanded=!this.expanded;for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].toggleExpanded();}},expand:function(){if(!this.expanded){this.toggleExpanded();}},accept:function(visitor){visitor.visitGroup(this);},reverseChildren:function(){if(this.rendered){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].reverseChildren();}}},update:function(){var previouslyExpandable=this.expandable;this.expandable=(this.children.length!==0);if(this.expandable!==previouslyExpandable){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].update();}}},flatten:function(){var visitor=new GroupFlattener();this.accept(visitor);return visitor.logEntriesAndSeparators;},removeChild:function(child,doUpdate){array_remove(this.children,child);child.group=null;if(doUpdate){this.update();}},remove:function(doUpdate,removeFromGroup){for(var i=0,len=this.children.length;i<len;i++){this.children[i].remove(false,false);}','this.children=[];this.update();if(this===currentGroup){currentGroup=this.group;}','this.doRemove(doUpdate,removeFromGroup);},serialize:function(items){items.push([LogItem.serializedItemKeys.GROUP_START,this.name]);for(var i=0,len=this.children.length;i<len;i++){this.children[i].serialize(items);}','if(this!==currentGroup){items.push([LogItem.serializedItemKeys.GROUP_END]);}},clear:function(){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].clear();}}});function LogEntryElementContainer(){}','LogEntryElementContainer.prototype=new LogItemContainerElement();copyProperties(LogEntryElementContainer.prototype,{remove:function(){this.doRemove();},doRemove:function(){this.mainDiv.parentNode.removeChild(this.mainDiv);this.mainDiv=null;this.contentElement=null;this.containerDomNode=null;},setContent:function(content,wrappedContent){if(content===this.formattedMessage){this.contentElement.innerHTML=\"\";this.contentElement.appendChild(document.createTextNode(this.formattedMessage));}else{this.contentElement.innerHTML=content;}},setSearchMatch:function(isMatch){var oldCssClass=isMatch?\"searchnonmatch\":\"searchmatch\";var newCssClass=isMatch?\"searchmatch\":\"searchnonmatch\";replaceClass(this.mainDiv,newCssClass,oldCssClass);},clearSearch:function(){removeClass(this.mainDiv,\"searchmatch\");removeClass(this.mainDiv,\"searchnonmatch\");}});function LogEntryWrappedElementContainer(logEntry,containerDomNode){this.logEntry=logEntry;this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.appendChild(document.createTextNode(this.logEntry.formattedMessage));this.mainDiv.className=\"logentry wrapped \"+this.logEntry.level;this.contentElement=this.mainDiv;}','LogEntryWrappedElementContainer.prototype=new LogEntryElementContainer();LogEntryWrappedElementContainer.prototype.setContent=function(content,wrappedContent){if(content===this.formattedMessage){this.contentElement.innerHTML=\"\";this.contentElement.appendChild(document.createTextNode(this.formattedMessage));}else{this.contentElement.innerHTML=wrappedContent;}};function LogEntryUnwrappedElementContainer(logEntry,containerDomNode){this.logEntry=logEntry;this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"logentry unwrapped \"+this.logEntry.level;this.pre=this.mainDiv.appendChild(document.createElement(\"pre\"));this.pre.appendChild(document.createTextNode(this.logEntry.formattedMessage));this.pre.className=\"unwrapped\";this.contentElement=this.pre;}','LogEntryUnwrappedElementContainer.prototype=new LogEntryElementContainer();LogEntryUnwrappedElementContainer.prototype.remove=function(){this.doRemove();this.pre=null;};function LogEntryMainElementContainer(logEntry,containerDomNode){this.logEntry=logEntry;this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"logentry nonielogentry \"+this.logEntry.level;this.contentElement=this.mainDiv.appendChild(document.createElement(\"span\"));this.contentElement.appendChild(document.createTextNode(this.logEntry.formattedMessage));}','LogEntryMainElementContainer.prototype=new LogEntryElementContainer();function LogEntry(level,formattedMessage){this.level=level;this.formattedMessage=formattedMessage;this.rendered=false;}','LogEntry.prototype=new LogItem();copyProperties(LogEntry.prototype,{render:function(){var logEntry=this;var containerDomNode=this.group.contentDiv;if(isIe){this.formattedMessage=this.formattedMessage.replace(/\\\\r\\\\n/g,\"\\\\r\");this.unwrappedElementContainer=new LogEntryUnwrappedElementContainer(this,this.getUnwrappedDomContainer());this.wrappedElementContainer=new LogEntryWrappedElementContainer(this,this.getWrappedDomContainer());this.elementContainers=[this.unwrappedElementContainer,this.wrappedElementContainer];}else{this.mainElementContainer=new LogEntryMainElementContainer(this,this.getMainDomContainer());this.elementContainers=[this.mainElementContainer];}','this.content=this.formattedMessage;this.rendered=true;},setContent:function(content,wrappedContent){if(content!=this.content){if(isIe&&(content!==this.formattedMessage)){content=content.replace(/\\\\r\\\\n/g,\"\\\\r\");}','for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].setContent(content,wrappedContent);}','this.content=content;}},getSearchMatches:function(){var matches=[];var i,len;if(isIe){var unwrappedEls=getElementsByClass(this.unwrappedElementContainer.mainDiv,\"searchterm\",\"span\");var wrappedEls=getElementsByClass(this.wrappedElementContainer.mainDiv,\"searchterm\",\"span\");for(i=0,len=unwrappedEls.length;i<len;i++){matches[i]=new Match(this.level,null,unwrappedEls[i],wrappedEls[i]);}}else{var els=getElementsByClass(this.mainElementContainer.mainDiv,\"searchterm\",\"span\");for(i=0,len=els.length;i<len;i++){matches[i]=new Match(this.level,els[i]);}}','return matches;},setSearchMatch:function(isMatch){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].setSearchMatch(isMatch);}},clearSearch:function(){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].clearSearch();}},accept:function(visitor){visitor.visitLogEntry(this);},serialize:function(items){items.push([LogItem.serializedItemKeys.LOG_ENTRY,this.level,this.formattedMessage]);}});function LogItemVisitor(){}','LogItemVisitor.prototype={visit:function(logItem){},visitParent:function(logItem){if(logItem.group){logItem.group.accept(this);}},visitChildren:function(logItem){for(var i=0,len=logItem.children.length;i<len;i++){logItem.children[i].accept(this);}},visitLogEntry:function(logEntry){this.visit(logEntry);},visitSeparator:function(separator){this.visit(separator);},visitGroup:function(group){this.visit(group);}};function GroupFlattener(){this.logEntriesAndSeparators=[];}','GroupFlattener.prototype=new LogItemVisitor();GroupFlattener.prototype.visitGroup=function(group){this.visitChildren(group);};GroupFlattener.prototype.visitLogEntry=function(logEntry){this.logEntriesAndSeparators.push(logEntry);};GroupFlattener.prototype.visitSeparator=function(separator){this.logEntriesAndSeparators.push(separator);};window.onload=function(){if(location.search){var queryBits=unescape(location.search).substr(1).split(\"&\"),nameValueBits;for(var i=0,len=queryBits.length;i<len;i++){nameValueBits=queryBits[i].split(\"=\");if(nameValueBits[0]==\"log4javascript_domain\"){document.domain=nameValueBits[1];break;}}}','logMainContainer=$(\"log\");if(isIePre7){addClass(logMainContainer,\"oldIe\");}','rootGroup=new Group(\"root\",true);rootGroup.render();currentGroup=rootGroup;setCommandInputWidth();setLogContainerHeight();toggleLoggingEnabled();toggleSearchEnabled();toggleSearchFilter();toggleSearchHighlight();applyFilters();checkAllLevels();toggleWrap();toggleNewestAtTop();toggleScrollToLatest();renderQueuedLogItems();loaded=true;$(\"command\").value=\"\";$(\"command\").autocomplete=\"off\";$(\"command\").onkeydown=function(evt){evt=getEvent(evt);if(evt.keyCode==10||evt.keyCode==13){evalCommandLine();stopPropagation(evt);}else if(evt.keyCode==27){this.value=\"\";this.focus();}else if(evt.keyCode==38&&commandHistory.length>0){currentCommandIndex=Math.max(0,currentCommandIndex-1);this.value=commandHistory[currentCommandIndex];moveCaretToEnd(this);}else if(evt.keyCode==40&&commandHistory.length>0){currentCommandIndex=Math.min(commandHistory.length-1,currentCommandIndex+1);this.value=commandHistory[currentCommandIndex];moveCaretToEnd(this);}};$(\"command\").onkeypress=function(evt){evt=getEvent(evt);if(evt.keyCode==38&&commandHistory.length>0&&evt.preventDefault){evt.preventDefault();}};$(\"command\").onkeyup=function(evt){evt=getEvent(evt);if(evt.keyCode==27&&evt.preventDefault){evt.preventDefault();this.focus();}};document.onkeydown=function keyEventHandler(evt){evt=getEvent(evt);switch(evt.keyCode){case 69:if(evt.shiftKey&&(evt.ctrlKey||evt.metaKey)){evalLastCommand();cancelKeyEvent(evt);return false;}','break;case 75:if(evt.shiftKey&&(evt.ctrlKey||evt.metaKey)){focusSearch();cancelKeyEvent(evt);return false;}','break;case 40:case 76:if(evt.shiftKey&&(evt.ctrlKey||evt.metaKey)){focusCommandLine();cancelKeyEvent(evt);return false;}','break;}};setTimeout(setLogContainerHeight,20);setShowCommandLine(showCommandLine);doSearch();};window.onunload=function(){if(mainWindowExists()){appender.unload();}','appender=null;};function toggleLoggingEnabled(){setLoggingEnabled($(\"enableLogging\").checked);}','function setLoggingEnabled(enable){loggingEnabled=enable;}','var appender=null;function setAppender(appenderParam){appender=appenderParam;}','function setShowCloseButton(showCloseButton){$(\"closeButton\").style.display=showCloseButton?\"inline\":\"none\";}','function setShowHideButton(showHideButton){$(\"hideButton\").style.display=showHideButton?\"inline\":\"none\";}','var newestAtTop=false;function LogItemContentReverser(){}','LogItemContentReverser.prototype=new LogItemVisitor();LogItemContentReverser.prototype.visitGroup=function(group){group.reverseChildren();this.visitChildren(group);};function setNewestAtTop(isNewestAtTop){var oldNewestAtTop=newestAtTop;var i,iLen,j,jLen;newestAtTop=Boolean(isNewestAtTop);if(oldNewestAtTop!=newestAtTop){var visitor=new LogItemContentReverser();rootGroup.accept(visitor);if(currentSearch){var currentMatch=currentSearch.matches[currentMatchIndex];var matchIndex=0;var matches=[];var actOnLogEntry=function(logEntry){var logEntryMatches=logEntry.getSearchMatches();for(j=0,jLen=logEntryMatches.length;j<jLen;j++){matches[matchIndex]=logEntryMatches[j];if(currentMatch&&logEntryMatches[j].equals(currentMatch)){currentMatchIndex=matchIndex;}','matchIndex++;}};if(newestAtTop){for(i=logEntries.length-1;i>=0;i--){actOnLogEntry(logEntries[i]);}}else{for(i=0,iLen=logEntries.length;i<iLen;i++){actOnLogEntry(logEntries[i]);}}','currentSearch.matches=matches;if(currentMatch){currentMatch.setCurrent();}}else if(scrollToLatest){doScrollToLatest();}}','$(\"newestAtTop\").checked=isNewestAtTop;}','function toggleNewestAtTop(){var isNewestAtTop=$(\"newestAtTop\").checked;setNewestAtTop(isNewestAtTop);}','var scrollToLatest=true;function setScrollToLatest(isScrollToLatest){scrollToLatest=isScrollToLatest;if(scrollToLatest){doScrollToLatest();}','$(\"scrollToLatest\").checked=isScrollToLatest;}','function toggleScrollToLatest(){var isScrollToLatest=$(\"scrollToLatest\").checked;setScrollToLatest(isScrollToLatest);}','function doScrollToLatest(){var l=logMainContainer;if(typeof l.scrollTop!=\"undefined\"){if(newestAtTop){l.scrollTop=0;}else{var latestLogEntry=l.lastChild;if(latestLogEntry){l.scrollTop=l.scrollHeight;}}}}','var closeIfOpenerCloses=true;function setCloseIfOpenerCloses(isCloseIfOpenerCloses){closeIfOpenerCloses=isCloseIfOpenerCloses;}','var maxMessages=null;function setMaxMessages(max){maxMessages=max;pruneLogEntries();}','var showCommandLine=false;function setShowCommandLine(isShowCommandLine){showCommandLine=isShowCommandLine;if(loaded){$(\"commandLine\").style.display=showCommandLine?\"block\":\"none\";setCommandInputWidth();setLogContainerHeight();}}','function focusCommandLine(){if(loaded){$(\"command\").focus();}}','function focusSearch(){if(loaded){$(\"searchBox\").focus();}}','function getLogItems(){var items=[];for(var i=0,len=logItems.length;i<len;i++){logItems[i].serialize(items);}','return items;}','function setLogItems(items){var loggingReallyEnabled=loggingEnabled;loggingEnabled=true;for(var i=0,len=items.length;i<len;i++){switch(items[i][0]){case LogItem.serializedItemKeys.LOG_ENTRY:log(items[i][1],items[i][2]);break;case LogItem.serializedItemKeys.GROUP_START:group(items[i][1]);break;case LogItem.serializedItemKeys.GROUP_END:groupEnd();break;}}','loggingEnabled=loggingReallyEnabled;}','function log(logLevel,formattedMessage){if(loggingEnabled){var logEntry=new LogEntry(logLevel,formattedMessage);logEntries.push(logEntry);logEntriesAndSeparators.push(logEntry);logItems.push(logEntry);currentGroup.addChild(logEntry);if(loaded){if(logQueuedEventsTimer!==null){clearTimeout(logQueuedEventsTimer);}','logQueuedEventsTimer=setTimeout(renderQueuedLogItems,renderDelay);unrenderedLogItemsExist=true;}}}','function renderQueuedLogItems(){logQueuedEventsTimer=null;var pruned=pruneLogEntries();var initiallyHasMatches=currentSearch?currentSearch.hasMatches():false;for(var i=0,len=logItems.length;i<len;i++){if(!logItems[i].rendered){logItems[i].render();logItems[i].appendToLog();if(currentSearch&&(logItems[i]instanceof LogEntry)){currentSearch.applyTo(logItems[i]);}}}','if(currentSearch){if(pruned){if(currentSearch.hasVisibleMatches()){if(currentMatchIndex===null){setCurrentMatchIndex(0);}','displayMatches();}else{displayNoMatches();}}else if(!initiallyHasMatches&&currentSearch.hasVisibleMatches()){setCurrentMatchIndex(0);displayMatches();}}','if(scrollToLatest){doScrollToLatest();}','unrenderedLogItemsExist=false;}','function pruneLogEntries(){if((maxMessages!==null)&&(logEntriesAndSeparators.length>maxMessages)){var numberToDelete=logEntriesAndSeparators.length-maxMessages;var prunedLogEntries=logEntriesAndSeparators.slice(0,numberToDelete);if(currentSearch){currentSearch.removeMatches(prunedLogEntries);}','var group;for(var i=0;i<numberToDelete;i++){group=logEntriesAndSeparators[i].group;array_remove(logItems,logEntriesAndSeparators[i]);array_remove(logEntries,logEntriesAndSeparators[i]);logEntriesAndSeparators[i].remove(true,true);if(group.children.length===0&&group!==currentGroup&&group!==rootGroup){array_remove(logItems,group);group.remove(true,true);}}','logEntriesAndSeparators=array_removeFromStart(logEntriesAndSeparators,numberToDelete);return true;}','return false;}','function group(name,startExpanded){if(loggingEnabled){initiallyExpanded=(typeof startExpanded===\"undefined\")?true:Boolean(startExpanded);var newGroup=new Group(name,false,initiallyExpanded);currentGroup.addChild(newGroup);currentGroup=newGroup;logItems.push(newGroup);if(loaded){if(logQueuedEventsTimer!==null){clearTimeout(logQueuedEventsTimer);}','logQueuedEventsTimer=setTimeout(renderQueuedLogItems,renderDelay);unrenderedLogItemsExist=true;}}}','function groupEnd(){currentGroup=(currentGroup===rootGroup)?rootGroup:currentGroup.group;}','function mainPageReloaded(){currentGroup=rootGroup;var separator=new Separator();logEntriesAndSeparators.push(separator);logItems.push(separator);currentGroup.addChild(separator);}','function closeWindow(){if(appender&&mainWindowExists()){appender.close(true);}else{window.close();}}','function hide(){if(appender&&mainWindowExists()){appender.hide();}}','var mainWindow=window;var windowId=\"log4javascriptConsoleWindow_\"+new Date().getTime()+\"_\"+(\"\"+Math.random()).substr(2);function setMainWindow(win){mainWindow=win;mainWindow[windowId]=window;if(opener&&closeIfOpenerCloses){pollOpener();}}','function pollOpener(){if(closeIfOpenerCloses){if(mainWindowExists()){setTimeout(pollOpener,500);}else{closeWindow();}}}','function mainWindowExists(){try{return(mainWindow&&!mainWindow.closed&&mainWindow[windowId]==window);}catch(ex){}','return false;}','var logLevels=[\"TRACE\",\"DEBUG\",\"INFO\",\"WARN\",\"ERROR\",\"FATAL\"];function getCheckBox(logLevel){return $(\"switch_\"+logLevel);}','function getIeWrappedLogContainer(){return $(\"log_wrapped\");}','function getIeUnwrappedLogContainer(){return $(\"log_unwrapped\");}','function applyFilters(){for(var i=0;i<logLevels.length;i++){if(getCheckBox(logLevels[i]).checked){addClass(logMainContainer,logLevels[i]);}else{removeClass(logMainContainer,logLevels[i]);}}','updateSearchFromFilters();}','function toggleAllLevels(){var turnOn=$(\"switch_ALL\").checked;for(var i=0;i<logLevels.length;i++){getCheckBox(logLevels[i]).checked=turnOn;if(turnOn){addClass(logMainContainer,logLevels[i]);}else{removeClass(logMainContainer,logLevels[i]);}}}','function checkAllLevels(){for(var i=0;i<logLevels.length;i++){if(!getCheckBox(logLevels[i]).checked){getCheckBox(\"ALL\").checked=false;return;}}','getCheckBox(\"ALL\").checked=true;}','function clearLog(){rootGroup.clear();currentGroup=rootGroup;logEntries=[];logItems=[];logEntriesAndSeparators=[];doSearch();}','function toggleWrap(){var enable=$(\"wrap\").checked;if(enable){addClass(logMainContainer,\"wrap\");}else{removeClass(logMainContainer,\"wrap\");}','refreshCurrentMatch();}','var searchTimer=null;function scheduleSearch(){try{clearTimeout(searchTimer);}catch(ex){}','searchTimer=setTimeout(doSearch,500);}','function Search(searchTerm,isRegex,searchRegex,isCaseSensitive){this.searchTerm=searchTerm;this.isRegex=isRegex;this.searchRegex=searchRegex;this.isCaseSensitive=isCaseSensitive;this.matches=[];}','Search.prototype={hasMatches:function(){return this.matches.length>0;},hasVisibleMatches:function(){if(this.hasMatches()){for(var i=0;i<this.matches.length;i++){if(this.matches[i].isVisible()){return true;}}}','return false;},match:function(logEntry){var entryText=String(logEntry.formattedMessage);var matchesSearch=false;if(this.isRegex){matchesSearch=this.searchRegex.test(entryText);}else if(this.isCaseSensitive){matchesSearch=(entryText.indexOf(this.searchTerm)>-1);}else{matchesSearch=(entryText.toLowerCase().indexOf(this.searchTerm.toLowerCase())>-1);}','return matchesSearch;},getNextVisibleMatchIndex:function(){for(var i=currentMatchIndex+1;i<this.matches.length;i++){if(this.matches[i].isVisible()){return i;}}','for(i=0;i<=currentMatchIndex;i++){if(this.matches[i].isVisible()){return i;}}','return-1;},getPreviousVisibleMatchIndex:function(){for(var i=currentMatchIndex-1;i>=0;i--){if(this.matches[i].isVisible()){return i;}}','for(var i=this.matches.length-1;i>=currentMatchIndex;i--){if(this.matches[i].isVisible()){return i;}}','return-1;},applyTo:function(logEntry){var doesMatch=this.match(logEntry);if(doesMatch){logEntry.group.expand();logEntry.setSearchMatch(true);var logEntryContent;var wrappedLogEntryContent;var searchTermReplacementStartTag=\"<span class=\\\\\\\"searchterm\\\\\\\">\";var searchTermReplacementEndTag=\"<\"+\"/span>\";var preTagName=isIe?\"pre\":\"span\";var preStartTag=\"<\"+preTagName+\" class=\\\\\\\"pre\\\\\\\">\";var preEndTag=\"<\"+\"/\"+preTagName+\">\";var startIndex=0;var searchIndex,matchedText,textBeforeMatch;if(this.isRegex){var flags=this.isCaseSensitive?\"g\":\"gi\";var capturingRegex=new RegExp(\"(\"+this.searchRegex.source+\")\",flags);var rnd=(\"\"+Math.random()).substr(2);var startToken=\"%%s\"+rnd+\"%%\";var endToken=\"%%e\"+rnd+\"%%\";logEntryContent=logEntry.formattedMessage.replace(capturingRegex,startToken+\"$1\"+endToken);logEntryContent=escapeHtml(logEntryContent);var result;var searchString=logEntryContent;logEntryContent=\"\";wrappedLogEntryContent=\"\";while((searchIndex=searchString.indexOf(startToken,startIndex))>-1){var endTokenIndex=searchString.indexOf(endToken,searchIndex);matchedText=searchString.substring(searchIndex+startToken.length,endTokenIndex);textBeforeMatch=searchString.substring(startIndex,searchIndex);logEntryContent+=preStartTag+textBeforeMatch+preEndTag;logEntryContent+=searchTermReplacementStartTag+preStartTag+matchedText+','preEndTag+searchTermReplacementEndTag;if(isIe){wrappedLogEntryContent+=textBeforeMatch+searchTermReplacementStartTag+','matchedText+searchTermReplacementEndTag;}','startIndex=endTokenIndex+endToken.length;}','logEntryContent+=preStartTag+searchString.substr(startIndex)+preEndTag;if(isIe){wrappedLogEntryContent+=searchString.substr(startIndex);}}else{logEntryContent=\"\";wrappedLogEntryContent=\"\";var searchTermReplacementLength=searchTermReplacementStartTag.length+','this.searchTerm.length+searchTermReplacementEndTag.length;var searchTermLength=this.searchTerm.length;var searchTermLowerCase=this.searchTerm.toLowerCase();var logTextLowerCase=logEntry.formattedMessage.toLowerCase();while((searchIndex=logTextLowerCase.indexOf(searchTermLowerCase,startIndex))>-1){matchedText=escapeHtml(logEntry.formattedMessage.substr(searchIndex,this.searchTerm.length));textBeforeMatch=escapeHtml(logEntry.formattedMessage.substring(startIndex,searchIndex));var searchTermReplacement=searchTermReplacementStartTag+','preStartTag+matchedText+preEndTag+searchTermReplacementEndTag;logEntryContent+=preStartTag+textBeforeMatch+preEndTag+searchTermReplacement;if(isIe){wrappedLogEntryContent+=textBeforeMatch+searchTermReplacementStartTag+','matchedText+searchTermReplacementEndTag;}','startIndex=searchIndex+searchTermLength;}','var textAfterLastMatch=escapeHtml(logEntry.formattedMessage.substr(startIndex));logEntryContent+=preStartTag+textAfterLastMatch+preEndTag;if(isIe){wrappedLogEntryContent+=textAfterLastMatch;}}','logEntry.setContent(logEntryContent,wrappedLogEntryContent);var logEntryMatches=logEntry.getSearchMatches();this.matches=this.matches.concat(logEntryMatches);}else{logEntry.setSearchMatch(false);logEntry.setContent(logEntry.formattedMessage,logEntry.formattedMessage);}','return doesMatch;},removeMatches:function(logEntries){var matchesToRemoveCount=0;var currentMatchRemoved=false;var matchesToRemove=[];var i,iLen,j,jLen;for(i=0,iLen=this.matches.length;i<iLen;i++){for(j=0,jLen=logEntries.length;j<jLen;j++){if(this.matches[i].belongsTo(logEntries[j])){matchesToRemove.push(this.matches[i]);if(i===currentMatchIndex){currentMatchRemoved=true;}}}}','var newMatch=currentMatchRemoved?null:this.matches[currentMatchIndex];if(currentMatchRemoved){for(i=currentMatchIndex,iLen=this.matches.length;i<iLen;i++){if(this.matches[i].isVisible()&&!array_contains(matchesToRemove,this.matches[i])){newMatch=this.matches[i];break;}}}','for(i=0,iLen=matchesToRemove.length;i<iLen;i++){array_remove(this.matches,matchesToRemove[i]);matchesToRemove[i].remove();}','if(this.hasVisibleMatches()){if(newMatch===null){setCurrentMatchIndex(0);}else{var newMatchIndex=0;for(i=0,iLen=this.matches.length;i<iLen;i++){if(newMatch===this.matches[i]){newMatchIndex=i;break;}}','setCurrentMatchIndex(newMatchIndex);}}else{currentMatchIndex=null;displayNoMatches();}}};function getPageOffsetTop(el,container){var currentEl=el;var y=0;while(currentEl&&currentEl!=container){y+=currentEl.offsetTop;currentEl=currentEl.offsetParent;}','return y;}','function scrollIntoView(el){var logContainer=logMainContainer;if(!$(\"wrap\").checked){var logContainerLeft=logContainer.scrollLeft;var logContainerRight=logContainerLeft+logContainer.offsetWidth;var elLeft=el.offsetLeft;var elRight=elLeft+el.offsetWidth;if(elLeft<logContainerLeft||elRight>logContainerRight){logContainer.scrollLeft=elLeft-(logContainer.offsetWidth-el.offsetWidth)/2;}}','var logContainerTop=logContainer.scrollTop;var logContainerBottom=logContainerTop+logContainer.offsetHeight;var elTop=getPageOffsetTop(el)-getToolBarsHeight();var elBottom=elTop+el.offsetHeight;if(elTop<logContainerTop||elBottom>logContainerBottom){logContainer.scrollTop=elTop-(logContainer.offsetHeight-el.offsetHeight)/2;}}','function Match(logEntryLevel,spanInMainDiv,spanInUnwrappedPre,spanInWrappedDiv){this.logEntryLevel=logEntryLevel;this.spanInMainDiv=spanInMainDiv;if(isIe){this.spanInUnwrappedPre=spanInUnwrappedPre;this.spanInWrappedDiv=spanInWrappedDiv;}','this.mainSpan=isIe?spanInUnwrappedPre:spanInMainDiv;}','Match.prototype={equals:function(match){return this.mainSpan===match.mainSpan;},setCurrent:function(){if(isIe){addClass(this.spanInUnwrappedPre,\"currentmatch\");addClass(this.spanInWrappedDiv,\"currentmatch\");var elementToScroll=$(\"wrap\").checked?this.spanInWrappedDiv:this.spanInUnwrappedPre;scrollIntoView(elementToScroll);}else{addClass(this.spanInMainDiv,\"currentmatch\");scrollIntoView(this.spanInMainDiv);}},belongsTo:function(logEntry){if(isIe){return isDescendant(this.spanInUnwrappedPre,logEntry.unwrappedPre);}else{return isDescendant(this.spanInMainDiv,logEntry.mainDiv);}},setNotCurrent:function(){if(isIe){removeClass(this.spanInUnwrappedPre,\"currentmatch\");removeClass(this.spanInWrappedDiv,\"currentmatch\");}else{removeClass(this.spanInMainDiv,\"currentmatch\");}},isOrphan:function(){return isOrphan(this.mainSpan);},isVisible:function(){return getCheckBox(this.logEntryLevel).checked;},remove:function(){if(isIe){this.spanInUnwrappedPre=null;this.spanInWrappedDiv=null;}else{this.spanInMainDiv=null;}}};var currentSearch=null;var currentMatchIndex=null;function doSearch(){var searchBox=$(\"searchBox\");var searchTerm=searchBox.value;var isRegex=$(\"searchRegex\").checked;var isCaseSensitive=$(\"searchCaseSensitive\").checked;var i;if(searchTerm===\"\"){$(\"searchReset\").disabled=true;$(\"searchNav\").style.display=\"none\";removeClass(document.body,\"searching\");removeClass(searchBox,\"hasmatches\");removeClass(searchBox,\"nomatches\");for(i=0;i<logEntries.length;i++){logEntries[i].clearSearch();logEntries[i].setContent(logEntries[i].formattedMessage,logEntries[i].formattedMessage);}','currentSearch=null;setLogContainerHeight();}else{$(\"searchReset\").disabled=false;$(\"searchNav\").style.display=\"block\";var searchRegex;var regexValid;if(isRegex){try{searchRegex=isCaseSensitive?new RegExp(searchTerm,\"g\"):new RegExp(searchTerm,\"gi\");regexValid=true;replaceClass(searchBox,\"validregex\",\"invalidregex\");searchBox.title=\"Valid regex\";}catch(ex){regexValid=false;replaceClass(searchBox,\"invalidregex\",\"validregex\");searchBox.title=\"Invalid regex: \"+(ex.message?ex.message:(ex.description?ex.description:\"unknown error\"));return;}}else{searchBox.title=\"\";removeClass(searchBox,\"validregex\");removeClass(searchBox,\"invalidregex\");}','addClass(document.body,\"searching\");currentSearch=new Search(searchTerm,isRegex,searchRegex,isCaseSensitive);for(i=0;i<logEntries.length;i++){currentSearch.applyTo(logEntries[i]);}','setLogContainerHeight();if(currentSearch.hasVisibleMatches()){setCurrentMatchIndex(0);displayMatches();}else{displayNoMatches();}}}','function updateSearchFromFilters(){if(currentSearch){if(currentSearch.hasMatches()){if(currentMatchIndex===null){currentMatchIndex=0;}','var currentMatch=currentSearch.matches[currentMatchIndex];if(currentMatch.isVisible()){displayMatches();setCurrentMatchIndex(currentMatchIndex);}else{currentMatch.setNotCurrent();var nextVisibleMatchIndex=currentSearch.getNextVisibleMatchIndex();if(nextVisibleMatchIndex>-1){setCurrentMatchIndex(nextVisibleMatchIndex);displayMatches();}else{displayNoMatches();}}}else{displayNoMatches();}}}','function refreshCurrentMatch(){if(currentSearch&&currentSearch.hasVisibleMatches()){setCurrentMatchIndex(currentMatchIndex);}}','function displayMatches(){replaceClass($(\"searchBox\"),\"hasmatches\",\"nomatches\");$(\"searchBox\").title=\"\"+currentSearch.matches.length+\" matches found\";$(\"searchNav\").style.display=\"block\";setLogContainerHeight();}','function displayNoMatches(){replaceClass($(\"searchBox\"),\"nomatches\",\"hasmatches\");$(\"searchBox\").title=\"No matches found\";$(\"searchNav\").style.display=\"none\";setLogContainerHeight();}','function toggleSearchEnabled(enable){enable=(typeof enable==\"undefined\")?!$(\"searchDisable\").checked:enable;$(\"searchBox\").disabled=!enable;$(\"searchReset\").disabled=!enable;$(\"searchRegex\").disabled=!enable;$(\"searchNext\").disabled=!enable;$(\"searchPrevious\").disabled=!enable;$(\"searchCaseSensitive\").disabled=!enable;$(\"searchNav\").style.display=(enable&&($(\"searchBox\").value!==\"\")&&currentSearch&&currentSearch.hasVisibleMatches())?\"block\":\"none\";if(enable){removeClass($(\"search\"),\"greyedout\");addClass(document.body,\"searching\");if($(\"searchHighlight\").checked){addClass(logMainContainer,\"searchhighlight\");}else{removeClass(logMainContainer,\"searchhighlight\");}','if($(\"searchFilter\").checked){addClass(logMainContainer,\"searchfilter\");}else{removeClass(logMainContainer,\"searchfilter\");}','$(\"searchDisable\").checked=!enable;}else{addClass($(\"search\"),\"greyedout\");removeClass(document.body,\"searching\");removeClass(logMainContainer,\"searchhighlight\");removeClass(logMainContainer,\"searchfilter\");}','setLogContainerHeight();}','function toggleSearchFilter(){var enable=$(\"searchFilter\").checked;if(enable){addClass(logMainContainer,\"searchfilter\");}else{removeClass(logMainContainer,\"searchfilter\");}','refreshCurrentMatch();}','function toggleSearchHighlight(){var enable=$(\"searchHighlight\").checked;if(enable){addClass(logMainContainer,\"searchhighlight\");}else{removeClass(logMainContainer,\"searchhighlight\");}}','function clearSearch(){$(\"searchBox\").value=\"\";doSearch();}','function searchNext(){if(currentSearch!==null&&currentMatchIndex!==null){currentSearch.matches[currentMatchIndex].setNotCurrent();var nextMatchIndex=currentSearch.getNextVisibleMatchIndex();if(nextMatchIndex>currentMatchIndex||confirm(\"Reached the end of the page. Start from the top?\")){setCurrentMatchIndex(nextMatchIndex);}}}','function searchPrevious(){if(currentSearch!==null&&currentMatchIndex!==null){currentSearch.matches[currentMatchIndex].setNotCurrent();var previousMatchIndex=currentSearch.getPreviousVisibleMatchIndex();if(previousMatchIndex<currentMatchIndex||confirm(\"Reached the start of the page. Continue from the bottom?\")){setCurrentMatchIndex(previousMatchIndex);}}}','function setCurrentMatchIndex(index){currentMatchIndex=index;currentSearch.matches[currentMatchIndex].setCurrent();}','function addClass(el,cssClass){if(!hasClass(el,cssClass)){if(el.className){el.className+=\" \"+cssClass;}else{el.className=cssClass;}}}','function hasClass(el,cssClass){if(el.className){var classNames=el.className.split(\" \");return array_contains(classNames,cssClass);}','return false;}','function removeClass(el,cssClass){if(hasClass(el,cssClass)){var existingClasses=el.className.split(\" \");var newClasses=[];for(var i=0,len=existingClasses.length;i<len;i++){if(existingClasses[i]!=cssClass){newClasses[newClasses.length]=existingClasses[i];}}','el.className=newClasses.join(\" \");}}','function replaceClass(el,newCssClass,oldCssClass){removeClass(el,oldCssClass);addClass(el,newCssClass);}','function getElementsByClass(el,cssClass,tagName){var elements=el.getElementsByTagName(tagName);var matches=[];for(var i=0,len=elements.length;i<len;i++){if(hasClass(elements[i],cssClass)){matches.push(elements[i]);}}','return matches;}','function $(id){return document.getElementById(id);}','function isDescendant(node,ancestorNode){while(node!=null){if(node===ancestorNode){return true;}','node=node.parentNode;}','return false;}','function isOrphan(node){var currentNode=node;while(currentNode){if(currentNode==document.body){return false;}','currentNode=currentNode.parentNode;}','return true;}','function escapeHtml(str){return str.replace(/&/g,\"&amp;\").replace(/[<]/g,\"&lt;\").replace(/>/g,\"&gt;\");}','function getWindowWidth(){if(window.innerWidth){return window.innerWidth;}else if(document.documentElement&&document.documentElement.clientWidth){return document.documentElement.clientWidth;}else if(document.body){return document.body.clientWidth;}','return 0;}','function getWindowHeight(){if(window.innerHeight){return window.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){return document.documentElement.clientHeight;}else if(document.body){return document.body.clientHeight;}','return 0;}','function getToolBarsHeight(){return $(\"switches\").offsetHeight;}','function getChromeHeight(){var height=getToolBarsHeight();if(showCommandLine){height+=$(\"commandLine\").offsetHeight;}','return height;}','function setLogContainerHeight(){if(logMainContainer){var windowHeight=getWindowHeight();$(\"body\").style.height=getWindowHeight()+\"px\";logMainContainer.style.height=\"\"+','Math.max(0,windowHeight-getChromeHeight())+\"px\";}}','function setCommandInputWidth(){if(showCommandLine){$(\"command\").style.width=\"\"+Math.max(0,$(\"commandLineContainer\").offsetWidth-','($(\"evaluateButton\").offsetWidth+13))+\"px\";}}','window.onresize=function(){setCommandInputWidth();setLogContainerHeight();};if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0,len=arguments.length;i<len;i++){this[this.length]=arguments[i];}','return this.length;};}','if(!Array.prototype.pop){Array.prototype.pop=function(){if(this.length>0){var val=this[this.length-1];this.length=this.length-1;return val;}};}','if(!Array.prototype.shift){Array.prototype.shift=function(){if(this.length>0){var firstItem=this[0];for(var i=0,len=this.length-1;i<len;i++){this[i]=this[i+1];}','this.length=this.length-1;return firstItem;}};}','if(!Array.prototype.splice){Array.prototype.splice=function(startIndex,deleteCount){var itemsAfterDeleted=this.slice(startIndex+deleteCount);var itemsDeleted=this.slice(startIndex,startIndex+deleteCount);this.length=startIndex;var argumentsArray=[];for(var i=0,len=arguments.length;i<len;i++){argumentsArray[i]=arguments[i];}','var itemsToAppend=(argumentsArray.length>2)?itemsAfterDeleted=argumentsArray.slice(2).concat(itemsAfterDeleted):itemsAfterDeleted;for(i=0,len=itemsToAppend.length;i<len;i++){this.push(itemsToAppend[i]);}','return itemsDeleted;};}','function array_remove(arr,val){var index=-1;for(var i=0,len=arr.length;i<len;i++){if(arr[i]===val){index=i;break;}}','if(index>=0){arr.splice(index,1);return index;}else{return false;}}','function array_removeFromStart(array,numberToRemove){if(Array.prototype.splice){array.splice(0,numberToRemove);}else{for(var i=numberToRemove,len=array.length;i<len;i++){array[i-numberToRemove]=array[i];}','array.length=array.length-numberToRemove;}','return array;}','function array_contains(arr,val){for(var i=0,len=arr.length;i<len;i++){if(arr[i]==val){return true;}}','return false;}','function getErrorMessage(ex){if(ex.message){return ex.message;}else if(ex.description){return ex.description;}','return\"\"+ex;}','function moveCaretToEnd(input){if(input.setSelectionRange){input.focus();var length=input.value.length;input.setSelectionRange(length,length);}else if(input.createTextRange){var range=input.createTextRange();range.collapse(false);range.select();}','input.focus();}','function stopPropagation(evt){if(evt.stopPropagation){evt.stopPropagation();}else if(typeof evt.cancelBubble!=\"undefined\"){evt.cancelBubble=true;}}','function getEvent(evt){return evt?evt:event;}','function getTarget(evt){return evt.target?evt.target:evt.srcElement;}','function getRelatedTarget(evt){if(evt.relatedTarget){return evt.relatedTarget;}else if(evt.srcElement){switch(evt.type){case\"mouseover\":return evt.fromElement;case\"mouseout\":return evt.toElement;default:return evt.srcElement;}}}','function cancelKeyEvent(evt){evt.returnValue=false;stopPropagation(evt);}','function evalCommandLine(){var expr=$(\"command\").value;evalCommand(expr);$(\"command\").value=\"\";}','function evalLastCommand(){if(lastCommand!=null){evalCommand(lastCommand);}}','var lastCommand=null;var commandHistory=[];var currentCommandIndex=0;function evalCommand(expr){if(appender){appender.evalCommandAndAppend(expr);}else{var prefix=\">>> \"+expr+\"\\\\r\\\\n\";try{log(\"INFO\",prefix+eval(expr));}catch(ex){log(\"ERROR\",prefix+\"Error: \"+getErrorMessage(ex));}}','if(expr!=commandHistory[commandHistory.length-1]){commandHistory.push(expr);if(appender){appender.storeCommandHistory(commandHistory);}}','currentCommandIndex=(expr==commandHistory[currentCommandIndex])?currentCommandIndex+1:commandHistory.length;lastCommand=expr;}','//]]>','</script>','<style type=\"text/css\">','body{background-color:white;color:black;padding:0;margin:0;font-family:tahoma,verdana,arial,helvetica,sans-serif;overflow:hidden}div#switchesContainer input{margin-bottom:0}div.toolbar{border-top:solid #ffffff 1px;border-bottom:solid #aca899 1px;background-color:#f1efe7;padding:3px 5px;font-size:68.75%}div.toolbar,div#search input{font-family:tahoma,verdana,arial,helvetica,sans-serif}div.toolbar input.button{padding:0 5px;font-size:100%}div.toolbar input.hidden{display:none}div#switches input#clearButton{margin-left:20px}div#levels label{font-weight:bold}div#levels label,div#options label{margin-right:5px}div#levels label#wrapLabel{font-weight:normal}div#search label{margin-right:10px}div#search label.searchboxlabel{margin-right:0}div#search input{font-size:100%}div#search input.validregex{color:green}div#search input.invalidregex{color:red}div#search input.nomatches{color:white;background-color:#ff6666}div#search input.nomatches{color:white;background-color:#ff6666}div#searchNav{display:none}div#commandLine{display:none}div#commandLine input#command{font-size:100%;font-family:Courier New,Courier}div#commandLine input#evaluateButton{}*.greyedout{color:gray !important;border-color:gray !important}*.greyedout *.alwaysenabled{color:black}*.unselectable{-khtml-user-select:none;-moz-user-select:none;user-select:none}div#log{font-family:Courier New,Courier;font-size:75%;width:100%;overflow:auto;clear:both;position:relative}div.group{border-color:#cccccc;border-style:solid;border-width:1px 0 1px 1px;overflow:visible}div.oldIe div.group,div.oldIe div.group *,div.oldIe *.logentry{height:1%}div.group div.groupheading span.expander{border:solid black 1px;font-family:Courier New,Courier;font-size:0.833em;background-color:#eeeeee;position:relative;top:-1px;color:black;padding:0 2px;cursor:pointer;cursor:hand;height:1%}div.group div.groupcontent{margin-left:10px;padding-bottom:2px;overflow:visible}div.group div.expanded{display:block}div.group div.collapsed{display:none}*.logentry{overflow:visible;display:none;white-space:pre}span.pre{white-space:pre}pre.unwrapped{display:inline !important}pre.unwrapped pre.pre,div.wrapped pre.pre{display:inline}div.wrapped pre.pre{white-space:normal}div.wrapped{display:none}body.searching *.logentry span.currentmatch{color:white !important;background-color:green !important}body.searching div.searchhighlight *.logentry span.searchterm{color:black;background-color:yellow}div.wrap *.logentry{white-space:normal !important;border-width:0 0 1px 0;border-color:#dddddd;border-style:dotted}div.wrap #log_wrapped,#log_unwrapped{display:block}div.wrap #log_unwrapped,#log_wrapped{display:none}div.wrap *.logentry span.pre{overflow:visible;white-space:normal}div.wrap *.logentry pre.unwrapped{display:none}div.wrap *.logentry span.wrapped{display:inline}div.searchfilter *.searchnonmatch{display:none !important}div#log *.TRACE,label#label_TRACE{color:#666666}div#log *.DEBUG,label#label_DEBUG{color:green}div#log *.INFO,label#label_INFO{color:#000099}div#log *.WARN,label#label_WARN{color:#999900}div#log *.ERROR,label#label_ERROR{color:red}div#log *.FATAL,label#label_FATAL{color:#660066}div.TRACE#log *.TRACE,div.DEBUG#log *.DEBUG,div.INFO#log *.INFO,div.WARN#log *.WARN,div.ERROR#log *.ERROR,div.FATAL#log *.FATAL{display:block}div#log div.separator{background-color:#cccccc;margin:5px 0;line-height:1px}','</style>','</head>','<body id=\"body\">','<div id=\"switchesContainer\">','<div id=\"switches\">','<div id=\"levels\" class=\"toolbar\">','Filters:','<input type=\"checkbox\" id=\"switch_TRACE\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide trace messages\" /><label for=\"switch_TRACE\" id=\"label_TRACE\">trace</label>','<input type=\"checkbox\" id=\"switch_DEBUG\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide debug messages\" /><label for=\"switch_DEBUG\" id=\"label_DEBUG\">debug</label>','<input type=\"checkbox\" id=\"switch_INFO\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide info messages\" /><label for=\"switch_INFO\" id=\"label_INFO\">info</label>','<input type=\"checkbox\" id=\"switch_WARN\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide warn messages\" /><label for=\"switch_WARN\" id=\"label_WARN\">warn</label>','<input type=\"checkbox\" id=\"switch_ERROR\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide error messages\" /><label for=\"switch_ERROR\" id=\"label_ERROR\">error</label>','<input type=\"checkbox\" id=\"switch_FATAL\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide fatal messages\" /><label for=\"switch_FATAL\" id=\"label_FATAL\">fatal</label>','<input type=\"checkbox\" id=\"switch_ALL\" onclick=\"toggleAllLevels(); applyFilters()\" checked=\"checked\" title=\"Show/hide all messages\" /><label for=\"switch_ALL\" id=\"label_ALL\">all</label>','</div>','<div id=\"search\" class=\"toolbar\">','<label for=\"searchBox\" class=\"searchboxlabel\">Search:</label> <input type=\"text\" id=\"searchBox\" onclick=\"toggleSearchEnabled(true)\" onkeyup=\"scheduleSearch()\" size=\"20\" />','<input type=\"button\" id=\"searchReset\" disabled=\"disabled\" value=\"Reset\" onclick=\"clearSearch()\" class=\"button\" title=\"Reset the search\" />','<input type=\"checkbox\" id=\"searchRegex\" onclick=\"doSearch()\" title=\"If checked, search is treated as a regular expression\" /><label for=\"searchRegex\">Regex</label>','<input type=\"checkbox\" id=\"searchCaseSensitive\" onclick=\"doSearch()\" title=\"If checked, search is case sensitive\" /><label for=\"searchCaseSensitive\">Match case</label>','<input type=\"checkbox\" id=\"searchDisable\" onclick=\"toggleSearchEnabled()\" title=\"Enable/disable search\" /><label for=\"searchDisable\" class=\"alwaysenabled\">Disable</label>','<div id=\"searchNav\">','<input type=\"button\" id=\"searchNext\" disabled=\"disabled\" value=\"Next\" onclick=\"searchNext()\" class=\"button\" title=\"Go to the next matching log entry\" />','<input type=\"button\" id=\"searchPrevious\" disabled=\"disabled\" value=\"Previous\" onclick=\"searchPrevious()\" class=\"button\" title=\"Go to the previous matching log entry\" />','<input type=\"checkbox\" id=\"searchFilter\" onclick=\"toggleSearchFilter()\" title=\"If checked, non-matching log entries are filtered out\" /><label for=\"searchFilter\">Filter</label>','<input type=\"checkbox\" id=\"searchHighlight\" onclick=\"toggleSearchHighlight()\" title=\"Highlight matched search terms\" /><label for=\"searchHighlight\" class=\"alwaysenabled\">Highlight all</label>','</div>','</div>','<div id=\"options\" class=\"toolbar\">','Options:','<input type=\"checkbox\" id=\"enableLogging\" onclick=\"toggleLoggingEnabled()\" checked=\"checked\" title=\"Enable/disable logging\" /><label for=\"enableLogging\" id=\"enableLoggingLabel\">Log</label>','<input type=\"checkbox\" id=\"wrap\" onclick=\"toggleWrap()\" title=\"Enable / disable word wrap\" /><label for=\"wrap\" id=\"wrapLabel\">Wrap</label>','<input type=\"checkbox\" id=\"newestAtTop\" onclick=\"toggleNewestAtTop()\" title=\"If checked, causes newest messages to appear at the top\" /><label for=\"newestAtTop\" id=\"newestAtTopLabel\">Newest at the top</label>','<input type=\"checkbox\" id=\"scrollToLatest\" onclick=\"toggleScrollToLatest()\" checked=\"checked\" title=\"If checked, window automatically scrolls to a new message when it is added\" /><label for=\"scrollToLatest\" id=\"scrollToLatestLabel\">Scroll to latest</label>','<input type=\"button\" id=\"clearButton\" value=\"Clear\" onclick=\"clearLog()\" class=\"button\" title=\"Clear all log messages\" />','<input type=\"button\" id=\"hideButton\" value=\"Hide\" onclick=\"hide()\" class=\"hidden button\" title=\"Hide the console\" />','<input type=\"button\" id=\"closeButton\" value=\"Close\" onclick=\"closeWindow()\" class=\"hidden button\" title=\"Close the window\" />','</div>','</div>','</div>','<div id=\"log\" class=\"TRACE DEBUG INFO WARN ERROR FATAL\"></div>','<div id=\"commandLine\" class=\"toolbar\">','<div id=\"commandLineContainer\">','<input type=\"text\" id=\"command\" title=\"Enter a JavaScript command here and hit return or press \\'Evaluate\\'\" />','<input type=\"button\" id=\"evaluateButton\" value=\"Evaluate\" class=\"button\" title=\"Evaluate the command\" onclick=\"evalCommandLine()\" />','</div>','</div>','</body>','</html>',''];};var defaultCommandLineFunctions=[];ConsoleAppender=function(){};var consoleAppenderIdCounter=1;ConsoleAppender.prototype=new Appender();ConsoleAppender.prototype.create=function(inPage,container,lazyInit,initiallyMinimized,useDocumentWrite,width,height,focusConsoleWindow){var appender=this;var initialized=false;var consoleWindowCreated=false;var consoleWindowLoaded=false;var consoleClosed=false;var queuedLoggingEvents=[];var isSupported=true;var consoleAppenderId=consoleAppenderIdCounter++;initiallyMinimized=extractBooleanFromParam(initiallyMinimized,this.defaults.initiallyMinimized);lazyInit=extractBooleanFromParam(lazyInit,this.defaults.lazyInit);useDocumentWrite=extractBooleanFromParam(useDocumentWrite,this.defaults.useDocumentWrite);var newestMessageAtTop=this.defaults.newestMessageAtTop;var scrollToLatestMessage=this.defaults.scrollToLatestMessage;width=width?width:this.defaults.width;height=height?height:this.defaults.height;var maxMessages=this.defaults.maxMessages;var showCommandLine=this.defaults.showCommandLine;var commandLineObjectExpansionDepth=this.defaults.commandLineObjectExpansionDepth;var showHideButton=this.defaults.showHideButton;var showCloseButton=this.defaults.showCloseButton;this.setLayout(this.defaults.layout);var init,createWindow,safeToAppend,getConsoleWindow,open;var appenderName=inPage?\"InPageAppender\":\"PopUpAppender\";var checkCanConfigure=function(configOptionName){if(consoleWindowCreated){handleError(appenderName+\": configuration option '\"+configOptionName+\"' may not be set after the appender has been initialized\");return false;}\r\nreturn true;};var consoleWindowExists=function(){return(consoleWindowLoaded&&isSupported&&!consoleClosed);};this.isNewestMessageAtTop=function(){return newestMessageAtTop;};this.setNewestMessageAtTop=function(newestMessageAtTopParam){newestMessageAtTop=bool(newestMessageAtTopParam);if(consoleWindowExists()){getConsoleWindow().setNewestAtTop(newestMessageAtTop);}};this.isScrollToLatestMessage=function(){return scrollToLatestMessage;};this.setScrollToLatestMessage=function(scrollToLatestMessageParam){scrollToLatestMessage=bool(scrollToLatestMessageParam);if(consoleWindowExists()){getConsoleWindow().setScrollToLatest(scrollToLatestMessage);}};this.getWidth=function(){return width;};this.setWidth=function(widthParam){if(checkCanConfigure(\"width\")){width=extractStringFromParam(widthParam,width);}};this.getHeight=function(){return height;};this.setHeight=function(heightParam){if(checkCanConfigure(\"height\")){height=extractStringFromParam(heightParam,height);}};this.getMaxMessages=function(){return maxMessages;};this.setMaxMessages=function(maxMessagesParam){maxMessages=extractIntFromParam(maxMessagesParam,maxMessages);if(consoleWindowExists()){getConsoleWindow().setMaxMessages(maxMessages);}};this.isShowCommandLine=function(){return showCommandLine;};this.setShowCommandLine=function(showCommandLineParam){showCommandLine=bool(showCommandLineParam);if(consoleWindowExists()){getConsoleWindow().setShowCommandLine(showCommandLine);}};this.isShowHideButton=function(){return showHideButton;};this.setShowHideButton=function(showHideButtonParam){showHideButton=bool(showHideButtonParam);if(consoleWindowExists()){getConsoleWindow().setShowHideButton(showHideButton);}};this.isShowCloseButton=function(){return showCloseButton;};this.setShowCloseButton=function(showCloseButtonParam){showCloseButton=bool(showCloseButtonParam);if(consoleWindowExists()){getConsoleWindow().setShowCloseButton(showCloseButton);}};this.getCommandLineObjectExpansionDepth=function(){return commandLineObjectExpansionDepth;};this.setCommandLineObjectExpansionDepth=function(commandLineObjectExpansionDepthParam){commandLineObjectExpansionDepth=extractIntFromParam(commandLineObjectExpansionDepthParam,commandLineObjectExpansionDepth);};var minimized=initiallyMinimized;this.isInitiallyMinimized=function(){return initiallyMinimized;};this.setInitiallyMinimized=function(initiallyMinimizedParam){if(checkCanConfigure(\"initiallyMinimized\")){initiallyMinimized=bool(initiallyMinimizedParam);minimized=initiallyMinimized;}};this.isUseDocumentWrite=function(){return useDocumentWrite;};this.setUseDocumentWrite=function(useDocumentWriteParam){if(checkCanConfigure(\"useDocumentWrite\")){useDocumentWrite=bool(useDocumentWriteParam);}};function QueuedLoggingEvent(loggingEvent,formattedMessage){this.loggingEvent=loggingEvent;this.levelName=loggingEvent.level.name;this.formattedMessage=formattedMessage;}\r\nQueuedLoggingEvent.prototype.append=function(){getConsoleWindow().log(this.levelName,this.formattedMessage);};function QueuedGroup(name,initiallyExpanded){this.name=name;this.initiallyExpanded=initiallyExpanded;}\r\nQueuedGroup.prototype.append=function(){getConsoleWindow().group(this.name,this.initiallyExpanded);};function QueuedGroupEnd(){}\r\nQueuedGroupEnd.prototype.append=function(){getConsoleWindow().groupEnd();};var checkAndAppend=function(){safeToAppend();if(!initialized){init();}else if(consoleClosed&&reopenWhenClosed){createWindow();}\r\nif(safeToAppend()){appendQueuedLoggingEvents();}};this.append=function(loggingEvent){if(isSupported){var formattedMessage=appender.getLayout().formatWithException(loggingEvent);queuedLoggingEvents.push(new QueuedLoggingEvent(loggingEvent,formattedMessage));checkAndAppend();}};this.group=function(name,initiallyExpanded){if(isSupported){queuedLoggingEvents.push(new QueuedGroup(name,initiallyExpanded));checkAndAppend();}};this.groupEnd=function(){if(isSupported){queuedLoggingEvents.push(new QueuedGroupEnd());checkAndAppend();}};var appendQueuedLoggingEvents=function(){while(queuedLoggingEvents.length>0){queuedLoggingEvents.shift().append();}\r\nif(focusConsoleWindow){getConsoleWindow().focus();}};this.setAddedToLogger=function(logger){this.loggers.push(logger);if(enabled&&!lazyInit){init();}};this.clear=function(){if(consoleWindowExists()){getConsoleWindow().clearLog();}\r\nqueuedLoggingEvents.length=0;};this.focus=function(){if(consoleWindowExists()){getConsoleWindow().focus();}};this.focusCommandLine=function(){if(consoleWindowExists()){getConsoleWindow().focusCommandLine();}};this.focusSearch=function(){if(consoleWindowExists()){getConsoleWindow().focusSearch();}};var commandWindow=window;this.getCommandWindow=function(){return commandWindow;};this.setCommandWindow=function(commandWindowParam){commandWindow=commandWindowParam;};this.executeLastCommand=function(){if(consoleWindowExists()){getConsoleWindow().evalLastCommand();}};var commandLayout=new PatternLayout(\"%m\");this.getCommandLayout=function(){return commandLayout;};this.setCommandLayout=function(commandLayoutParam){commandLayout=commandLayoutParam;};this.evalCommandAndAppend=function(expr){var commandReturnValue={appendResult:true,isError:false};var commandOutput=\"\";try{var result,i;if(!commandWindow.eval&&commandWindow.execScript){commandWindow.execScript(\"null\");}\r\nvar commandLineFunctionsHash={};for(i=0,len=commandLineFunctions.length;i<len;i++){commandLineFunctionsHash[commandLineFunctions[i][0]]=commandLineFunctions[i][1];}\r\nvar objectsToRestore=[];var addObjectToRestore=function(name){objectsToRestore.push([name,commandWindow[name]]);};addObjectToRestore(\"appender\");commandWindow.appender=appender;addObjectToRestore(\"commandReturnValue\");commandWindow.commandReturnValue=commandReturnValue;addObjectToRestore(\"commandLineFunctionsHash\");commandWindow.commandLineFunctionsHash=commandLineFunctionsHash;var addFunctionToWindow=function(name){addObjectToRestore(name);commandWindow[name]=function(){return this.commandLineFunctionsHash[name](appender,arguments,commandReturnValue);};};for(i=0,len=commandLineFunctions.length;i<len;i++){addFunctionToWindow(commandLineFunctions[i][0]);}\r\nif(commandWindow===window&&commandWindow.execScript){addObjectToRestore(\"evalExpr\");addObjectToRestore(\"result\");window.evalExpr=expr;commandWindow.execScript(\"window.result=eval(window.evalExpr);\");result=window.result;}else{result=commandWindow.eval(expr);}\r\ncommandOutput=isUndefined(result)?result:formatObjectExpansion(result,commandLineObjectExpansionDepth);for(i=0,len=objectsToRestore.length;i<len;i++){commandWindow[objectsToRestore[i][0]]=objectsToRestore[i][1];}}catch(ex){commandOutput=\"Error evaluating command: \"+getExceptionStringRep(ex);commandReturnValue.isError=true;}\r\nif(commandReturnValue.appendResult){var message=\">>> \"+expr;if(!isUndefined(commandOutput)){message+=newLine+commandOutput;}\r\nvar level=commandReturnValue.isError?Level.ERROR:Level.INFO;var loggingEvent=new LoggingEvent(null,new Date(),level,[message],null);var mainLayout=this.getLayout();this.setLayout(commandLayout);this.append(loggingEvent);this.setLayout(mainLayout);}};var commandLineFunctions=defaultCommandLineFunctions.concat([]);this.addCommandLineFunction=function(functionName,commandLineFunction){commandLineFunctions.push([functionName,commandLineFunction]);};var commandHistoryCookieName=\"log4javascriptCommandHistory\";this.storeCommandHistory=function(commandHistory){setCookie(commandHistoryCookieName,commandHistory.join(\",\"));};var writeHtml=function(doc){var lines=getConsoleHtmlLines();doc.open();for(var i=0,len=lines.length;i<len;i++){doc.writeln(lines[i]);}\r\ndoc.close();};this.setEventTypes([\"load\",\"unload\"]);var consoleWindowLoadHandler=function(){var win=getConsoleWindow();win.setAppender(appender);win.setNewestAtTop(newestMessageAtTop);win.setScrollToLatest(scrollToLatestMessage);win.setMaxMessages(maxMessages);win.setShowCommandLine(showCommandLine);win.setShowHideButton(showHideButton);win.setShowCloseButton(showCloseButton);win.setMainWindow(window);var storedValue=getCookie(commandHistoryCookieName);if(storedValue){win.commandHistory=storedValue.split(\",\");win.currentCommandIndex=win.commandHistory.length;}\r\nappender.dispatchEvent(\"load\",{\"win\":win});};this.unload=function(){logLog.debug(\"unload \"+this+\", caller: \"+this.unload.caller);if(!consoleClosed){logLog.debug(\"really doing unload \"+this);consoleClosed=true;consoleWindowLoaded=false;consoleWindowCreated=false;appender.dispatchEvent(\"unload\",{});}};var pollConsoleWindow=function(windowTest,interval,successCallback,errorMessage){function doPoll(){try{if(consoleClosed){clearInterval(poll);}\r\nif(windowTest(getConsoleWindow())){clearInterval(poll);successCallback();}}catch(ex){clearInterval(poll);isSupported=false;handleError(errorMessage,ex);}}\r\nvar poll=setInterval(doPoll,interval);};var getConsoleUrl=function(){var documentDomainSet=(document.domain!=location.hostname);return useDocumentWrite?\"\":getBaseUrl()+\"console.html\"+\r\n(documentDomainSet?\"?log4javascript_domain=\"+escape(document.domain):\"\");};if(inPage){var containerElement=null;var cssProperties=[];this.addCssProperty=function(name,value){if(checkCanConfigure(\"cssProperties\")){cssProperties.push([name,value]);}};var windowCreationStarted=false;var iframeContainerDiv;var iframeId=uniqueId+\"_InPageAppender_\"+consoleAppenderId;this.hide=function(){if(initialized&&consoleWindowCreated){if(consoleWindowExists()){getConsoleWindow().$(\"command\").blur();}\r\niframeContainerDiv.style.display=\"none\";minimized=true;}};this.show=function(){if(initialized){if(consoleWindowCreated){iframeContainerDiv.style.display=\"block\";this.setShowCommandLine(showCommandLine);minimized=false;}else if(!windowCreationStarted){createWindow(true);}}};this.isVisible=function(){return!minimized&&!consoleClosed;};this.close=function(fromButton){if(!consoleClosed&&(!fromButton||confirm(\"This will permanently remove the console from the page. No more messages will be logged. Do you wish to continue?\"))){iframeContainerDiv.parentNode.removeChild(iframeContainerDiv);this.unload();}};open=function(){var initErrorMessage=\"InPageAppender.open: unable to create console iframe\";function finalInit(){try{if(!initiallyMinimized){appender.show();}\r\nconsoleWindowLoadHandler();consoleWindowLoaded=true;appendQueuedLoggingEvents();}catch(ex){isSupported=false;handleError(initErrorMessage,ex);}}\r\nfunction writeToDocument(){try{var windowTest=function(win){return isLoaded(win);};if(useDocumentWrite){writeHtml(getConsoleWindow().document);}\r\nif(windowTest(getConsoleWindow())){finalInit();}else{pollConsoleWindow(windowTest,100,finalInit,initErrorMessage);}}catch(ex){isSupported=false;handleError(initErrorMessage,ex);}}\r\nminimized=false;iframeContainerDiv=containerElement.appendChild(document.createElement(\"div\"));iframeContainerDiv.style.width=width;iframeContainerDiv.style.height=height;iframeContainerDiv.style.border=\"solid gray 1px\";for(var i=0,len=cssProperties.length;i<len;i++){iframeContainerDiv.style[cssProperties[i][0]]=cssProperties[i][1];}\r\nvar iframeSrc=useDocumentWrite?\"\":\" src='\"+getConsoleUrl()+\"'\";iframeContainerDiv.innerHTML=\"<iframe id='\"+iframeId+\"' name='\"+iframeId+\"' width='100%' height='100%' frameborder='0'\"+iframeSrc+\" scrolling='no'></iframe>\";consoleClosed=false;var iframeDocumentExistsTest=function(win){try{return bool(win)&&bool(win.document);}catch(ex){return false;}};if(iframeDocumentExistsTest(getConsoleWindow())){writeToDocument();}else{pollConsoleWindow(iframeDocumentExistsTest,100,writeToDocument,initErrorMessage);}\r\nconsoleWindowCreated=true;};createWindow=function(show){if(show||!initiallyMinimized){var pageLoadHandler=function(){if(!container){containerElement=document.createElement(\"div\");containerElement.style.position=\"fixed\";containerElement.style.left=\"0\";containerElement.style.right=\"0\";containerElement.style.bottom=\"0\";document.body.appendChild(containerElement);appender.addCssProperty(\"borderWidth\",\"1px 0 0 0\");appender.addCssProperty(\"zIndex\",1000000);open();}else{try{var el=document.getElementById(container);if(el.nodeType==1){containerElement=el;}\r\nopen();}catch(ex){handleError(\"InPageAppender.init: invalid container element '\"+container+\"' supplied\",ex);}}};if(pageLoaded&&container&&container.appendChild){containerElement=container;open();}else if(pageLoaded){pageLoadHandler();}else{log4javascript.addEventListener(\"load\",pageLoadHandler);}\r\nwindowCreationStarted=true;}};init=function(){createWindow();initialized=true;};getConsoleWindow=function(){var iframe=window.frames[iframeId];if(iframe){return iframe;}};safeToAppend=function(){if(isSupported&&!consoleClosed){if(consoleWindowCreated&&!consoleWindowLoaded&&getConsoleWindow()&&isLoaded(getConsoleWindow())){consoleWindowLoaded=true;}\r\nreturn consoleWindowLoaded;}\r\nreturn false;};}else{var useOldPopUp=appender.defaults.useOldPopUp;var complainAboutPopUpBlocking=appender.defaults.complainAboutPopUpBlocking;var reopenWhenClosed=this.defaults.reopenWhenClosed;this.isUseOldPopUp=function(){return useOldPopUp;};this.setUseOldPopUp=function(useOldPopUpParam){if(checkCanConfigure(\"useOldPopUp\")){useOldPopUp=bool(useOldPopUpParam);}};this.isComplainAboutPopUpBlocking=function(){return complainAboutPopUpBlocking;};this.setComplainAboutPopUpBlocking=function(complainAboutPopUpBlockingParam){if(checkCanConfigure(\"complainAboutPopUpBlocking\")){complainAboutPopUpBlocking=bool(complainAboutPopUpBlockingParam);}};this.isFocusPopUp=function(){return focusConsoleWindow;};this.setFocusPopUp=function(focusPopUpParam){focusConsoleWindow=bool(focusPopUpParam);};this.isReopenWhenClosed=function(){return reopenWhenClosed;};this.setReopenWhenClosed=function(reopenWhenClosedParam){reopenWhenClosed=bool(reopenWhenClosedParam);};this.close=function(){logLog.debug(\"close \"+this);try{popUp.close();this.unload();}catch(ex){}};this.hide=function(){logLog.debug(\"hide \"+this);if(consoleWindowExists()){this.close();}};this.show=function(){logLog.debug(\"show \"+this);if(!consoleWindowCreated){open();}};this.isVisible=function(){return safeToAppend();};var popUp;open=function(){var windowProperties=\"width=\"+width+\",height=\"+height+\",status,resizable\";var frameInfo=\"\";try{var frameEl=window.frameElement;if(frameEl){frameInfo=\"_\"+frameEl.tagName+\"_\"+(frameEl.name||frameEl.id||\"\");}}catch(e){frameInfo=\"_inaccessibleParentFrame\";}\r\nvar windowName=\"PopUp_\"+location.host.replace(/[^a-z0-9]/gi,\"_\")+\"_\"+consoleAppenderId+frameInfo;if(!useOldPopUp||!useDocumentWrite){windowName=windowName+\"_\"+uniqueId;}\r\nvar checkPopUpClosed=function(win){if(consoleClosed){return true;}else{try{return bool(win)&&win.closed;}catch(ex){}}\r\nreturn false;};var popUpClosedCallback=function(){if(!consoleClosed){appender.unload();}};function finalInit(){getConsoleWindow().setCloseIfOpenerCloses(!useOldPopUp||!useDocumentWrite);consoleWindowLoadHandler();consoleWindowLoaded=true;appendQueuedLoggingEvents();pollConsoleWindow(checkPopUpClosed,500,popUpClosedCallback,\"PopUpAppender.checkPopUpClosed: error checking pop-up window\");}\r\ntry{popUp=window.open(getConsoleUrl(),windowName,windowProperties);consoleClosed=false;consoleWindowCreated=true;if(popUp&&popUp.document){if(useDocumentWrite&&useOldPopUp&&isLoaded(popUp)){popUp.mainPageReloaded();finalInit();}else{if(useDocumentWrite){writeHtml(popUp.document);}\r\nvar popUpLoadedTest=function(win){return bool(win)&&isLoaded(win);};if(isLoaded(popUp)){finalInit();}else{pollConsoleWindow(popUpLoadedTest,100,finalInit,\"PopUpAppender.init: unable to create console window\");}}}else{isSupported=false;logLog.warn(\"PopUpAppender.init: pop-ups blocked, please unblock to use PopUpAppender\");if(complainAboutPopUpBlocking){handleError(\"log4javascript: pop-up windows appear to be blocked. Please unblock them to use pop-up logging.\");}}}catch(ex){handleError(\"PopUpAppender.init: error creating pop-up\",ex);}};createWindow=function(){if(!initiallyMinimized){open();}};init=function(){createWindow();initialized=true;};getConsoleWindow=function(){return popUp;};safeToAppend=function(){if(isSupported&&!isUndefined(popUp)&&!consoleClosed){if(popUp.closed||(consoleWindowLoaded&&isUndefined(popUp.closed))){appender.unload();logLog.debug(\"PopUpAppender: pop-up closed\");return false;}\r\nif(!consoleWindowLoaded&&isLoaded(popUp)){consoleWindowLoaded=true;}}\r\nreturn isSupported&&consoleWindowLoaded&&!consoleClosed;};}\r\nthis.getConsoleWindow=getConsoleWindow;};ConsoleAppender.addGlobalCommandLineFunction=function(functionName,commandLineFunction){defaultCommandLineFunctions.push([functionName,commandLineFunction]);};function PopUpAppender(lazyInit,initiallyMinimized,useDocumentWrite,width,height){this.create(false,null,lazyInit,initiallyMinimized,useDocumentWrite,width,height,this.defaults.focusPopUp);}\r\nPopUpAppender.prototype=new ConsoleAppender();PopUpAppender.prototype.defaults={layout:new PatternLayout(\"%d{HH:mm:ss} %-5p - %m{1}%n\"),initiallyMinimized:false,focusPopUp:false,lazyInit:true,useOldPopUp:true,complainAboutPopUpBlocking:true,newestMessageAtTop:false,scrollToLatestMessage:true,width:\"600\",height:\"400\",reopenWhenClosed:false,maxMessages:null,showCommandLine:true,commandLineObjectExpansionDepth:1,showHideButton:false,showCloseButton:true,useDocumentWrite:true};PopUpAppender.prototype.toString=function(){return\"PopUpAppender\";};log4javascript.PopUpAppender=PopUpAppender;function InPageAppender(container,lazyInit,initiallyMinimized,useDocumentWrite,width,height){this.create(true,container,lazyInit,initiallyMinimized,useDocumentWrite,width,height,false);}\r\nInPageAppender.prototype=new ConsoleAppender();InPageAppender.prototype.defaults={layout:new PatternLayout(\"%d{HH:mm:ss} %-5p - %m{1}%n\"),initiallyMinimized:false,lazyInit:true,newestMessageAtTop:false,scrollToLatestMessage:true,width:\"100%\",height:\"220px\",maxMessages:null,showCommandLine:true,commandLineObjectExpansionDepth:1,showHideButton:false,showCloseButton:false,showLogEntryDeleteButtons:true,useDocumentWrite:true};InPageAppender.prototype.toString=function(){return\"InPageAppender\";};log4javascript.InPageAppender=InPageAppender;log4javascript.InlineAppender=InPageAppender;})();function padWithSpaces(str,len){if(str.length<len){var spaces=[];var numberOfSpaces=Math.max(0,len-str.length);for(var i=0;i<numberOfSpaces;i++){spaces[i]=\" \";}\r\nstr+=spaces.join(\"\");}\r\nreturn str;}\r\n(function(){function dir(obj){var maxLen=0;for(var p in obj){maxLen=Math.max(toStr(p).length,maxLen);}\r\nvar propList=[];for(p in obj){var propNameStr=\" \"+padWithSpaces(toStr(p),maxLen+2);var propVal;try{propVal=splitIntoLines(toStr(obj[p])).join(padWithSpaces(newLine,maxLen+6));}catch(ex){propVal=\"[Error obtaining property. Details: \"+getExceptionMessage(ex)+\"]\";}\r\npropList.push(propNameStr+propVal);}\r\nreturn propList.join(newLine);}\r\nvar nodeTypes={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12};var preFormattedElements=[\"script\",\"pre\"];var emptyElements=[\"br\",\"img\",\"hr\",\"param\",\"link\",\"area\",\"input\",\"col\",\"base\",\"meta\"];var indentationUnit=\" \";function getXhtml(rootNode,includeRootNode,indentation,startNewLine,preformatted){includeRootNode=(typeof includeRootNode==\"undefined\")?true:!!includeRootNode;if(typeof indentation!=\"string\"){indentation=\"\";}\r\nstartNewLine=!!startNewLine;preformatted=!!preformatted;var xhtml;function isWhitespace(node){return((node.nodeType==nodeTypes.TEXT_NODE)&&/^[ \\t\\r\\n]*$/.test(node.nodeValue));}\r\nfunction fixAttributeValue(attrValue){return attrValue.toString().replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/\"/g,\"&quot;\");}\r\nfunction getStyleAttributeValue(el){var stylePairs=el.style.cssText.split(\";\");var styleValue=\"\";for(var j=0,len=stylePairs.length;j<len;j++){var nameValueBits=stylePairs[j].split(\":\");var props=[];if(!/^\\s*$/.test(nameValueBits[0])){props.push(trim(nameValueBits[0]).toLowerCase()+\":\"+trim(nameValueBits[1]));}\r\nstyleValue=props.join(\";\");}\r\nreturn styleValue;}\r\nfunction getNamespace(el){if(el.prefix){return el.prefix;}else if(el.outerHTML){var regex=new RegExp(\"<([^:]+):\"+el.tagName+\"[^>]*>\",\"i\");if(regex.test(el.outerHTML)){return RegExp.$1.toLowerCase();}}\r\nreturn\"\";}\r\nvar lt=\"<\";var gt=\">\";var i,len;if(includeRootNode&&rootNode.nodeType!=nodeTypes.DOCUMENT_FRAGMENT_NODE){switch(rootNode.nodeType){case nodeTypes.ELEMENT_NODE:var tagName=rootNode.tagName.toLowerCase();xhtml=startNewLine?newLine+indentation:\"\";xhtml+=lt;var prefix=getNamespace(rootNode);var hasPrefix=!!prefix;if(hasPrefix){xhtml+=prefix+\":\";}\r\nxhtml+=tagName;for(i=0,len=rootNode.attributes.length;i<len;i++){var currentAttr=rootNode.attributes[i];if(!currentAttr.specified||currentAttr.nodeValue===null||currentAttr.nodeName.toLowerCase()===\"style\"||typeof currentAttr.nodeValue!==\"string\"||currentAttr.nodeName.indexOf(\"_moz\")===0){continue;}\r\nxhtml+=\" \"+currentAttr.nodeName.toLowerCase()+\"=\\\"\";xhtml+=fixAttributeValue(currentAttr.nodeValue);xhtml+=\"\\\"\";}\r\nif(rootNode.style.cssText){var styleValue=getStyleAttributeValue(rootNode);if(styleValue!==\"\"){xhtml+=\" style=\\\"\"+getStyleAttributeValue(rootNode)+\"\\\"\";}}\r\nif(array_contains(emptyElements,tagName)||(hasPrefix&&!rootNode.hasChildNodes())){xhtml+=\"/\"+gt;}else{xhtml+=gt;var childStartNewLine=!(rootNode.childNodes.length===1&&rootNode.childNodes[0].nodeType===nodeTypes.TEXT_NODE);var childPreformatted=array_contains(preFormattedElements,tagName);for(i=0,len=rootNode.childNodes.length;i<len;i++){xhtml+=getXhtml(rootNode.childNodes[i],true,indentation+indentationUnit,childStartNewLine,childPreformatted);}\r\nvar endTag=lt+\"/\"+tagName+gt;xhtml+=childStartNewLine?newLine+indentation+endTag:endTag;}\r\nreturn xhtml;case nodeTypes.TEXT_NODE:if(isWhitespace(rootNode)){xhtml=\"\";}else{if(preformatted){xhtml=rootNode.nodeValue;}else{var lines=splitIntoLines(trim(rootNode.nodeValue));var trimmedLines=[];for(i=0,len=lines.length;i<len;i++){trimmedLines[i]=trim(lines[i]);}\r\nxhtml=trimmedLines.join(newLine+indentation);}\r\nif(startNewLine){xhtml=newLine+indentation+xhtml;}}\r\nreturn xhtml;case nodeTypes.CDATA_SECTION_NODE:return\"<![CDA\"+\"TA[\"+rootNode.nodeValue+\"]\"+\"]>\"+newLine;case nodeTypes.DOCUMENT_NODE:xhtml=\"\";for(i=0,len=rootNode.childNodes.length;i<len;i++){xhtml+=getXhtml(rootNode.childNodes[i],true,indentation);}\r\nreturn xhtml;default:return\"\";}}else{xhtml=\"\";for(i=0,len=rootNode.childNodes.length;i<len;i++){xhtml+=getXhtml(rootNode.childNodes[i],true,indentation+indentationUnit);}\r\nreturn xhtml;}}\r\nfunction createCommandLineFunctions(){ConsoleAppender.addGlobalCommandLineFunction(\"$\",function(appender,args,returnValue){return document.getElementById(args[0]);});ConsoleAppender.addGlobalCommandLineFunction(\"dir\",function(appender,args,returnValue){var lines=[];for(var i=0,len=args.length;i<len;i++){lines[i]=dir(args[i]);}\r\nreturn lines.join(newLine+newLine);});ConsoleAppender.addGlobalCommandLineFunction(\"dirxml\",function(appender,args,returnValue){var lines=[];for(var i=0,len=args.length;i<len;i++){lines[i]=getXhtml(args[i]);}\r\nreturn lines.join(newLine+newLine);});ConsoleAppender.addGlobalCommandLineFunction(\"cd\",function(appender,args,returnValue){var win,message;if(args.length===0||args[0]===\"\"){win=window;message=\"Command line set to run in main window\";}else{if(args[0].window==args[0]){win=args[0];message=\"Command line set to run in frame '\"+args[0].name+\"'\";}else{win=window.frames[args[0]];if(win){message=\"Command line set to run in frame '\"+args[0]+\"'\";}else{returnValue.isError=true;message=\"Frame '\"+args[0]+\"' does not exist\";win=appender.getCommandWindow();}}}\r\nappender.setCommandWindow(win);return message;});ConsoleAppender.addGlobalCommandLineFunction(\"clear\",function(appender,args,returnValue){returnValue.appendResult=false;appender.clear();});ConsoleAppender.addGlobalCommandLineFunction(\"keys\",function(appender,args,returnValue){var keys=[];for(var k in args[0]){keys.push(k);}\r\nreturn keys;});ConsoleAppender.addGlobalCommandLineFunction(\"values\",function(appender,args,returnValue){var values=[];for(var k in args[0]){try{values.push(args[0][k]);}catch(ex){logLog.warn(\"values(): Unable to obtain value for key \"+k+\". Details: \"+getExceptionMessage(ex));}}\r\nreturn values;});ConsoleAppender.addGlobalCommandLineFunction(\"expansionDepth\",function(appender,args,returnValue){var expansionDepth=parseInt(args[0],10);if(isNaN(expansionDepth)||expansionDepth<0){returnValue.isError=true;return\"\"+args[0]+\" is not a valid expansion depth\";}else{appender.setCommandLineObjectExpansionDepth(expansionDepth);return\"Object expansion depth set to \"+expansionDepth;}});}\r\nfunction init(){createCommandLineFunctions();}\r\ninit();})();function createDefaultLogger(){var logger=log4javascript.getLogger(defaultLoggerName);var a=new log4javascript.PopUpAppender();logger.addAppender(a);return logger;}\r\nlog4javascript.setDocumentReady=function(){pageLoaded=true;log4javascript.dispatchEvent(\"load\",{});};if(window.addEventListener){window.addEventListener(\"load\",log4javascript.setDocumentReady,false);}else if(window.attachEvent){window.attachEvent(\"onload\",log4javascript.setDocumentReady);}else{var oldOnload=window.onload;if(typeof window.onload!=\"function\"){window.onload=log4javascript.setDocumentReady;}else{window.onload=function(evt){if(oldOnload){oldOnload(evt);}\r\nlog4javascript.setDocumentReady();};}}\r\nreturn log4javascript;},this);\r\n","/**\n * lite-url - Small, JS lib that uses regex for parsing a URL into it's component parts.\n * @version v1.0.5\n * @link https://github.com/sadams/lite-url\n * @license BSD-3-Clause\n */\n(function(){\"use strict\";function r(r,n,t){var e=r.split(n),o=e.shift();return t(o,e.join(n))}function n(n){var t={hash:\"\",host:\"\",hostname:\"\",origin:\"\",pathname:\"\",protocol:\"\",search:\"\",password:\"\",username:\"\",port:\"\"};return r(n,\"#\",function(n,e){e&&(t.hash=e?\"#\"+e:\"\"),r(n,\"?\",function(n,e){e&&(t.search=\"?\"+e),n&&r(n,\"//\",function(n,e){t.protocol=n,r(e,\"/\",function(n,e){t.pathname=\"/\"+(e||\"\"),(t.protocol||n)&&(t.origin=t.protocol+\"//\"+n),r(n,\"@\",function(n,e){if(e){var o=n.split(\":\");t.username=o[0],t.password=o[1]}else e=n;t.host=e,r(e,\":\",function(r,n){t.hostname=r,n&&(t.port=n)})})})})})}),t.href=t.origin+t.pathname+t.search+t.hash,t}function t(r){var n={},t=r.search;if(t){t=t.replace(new RegExp(\"\\\\?\"),\"\");var e=t.split(\"&\");for(var o in e)if(e.hasOwnProperty(o)&&e[o]){var i=e[o].split(\"=\");n[i[0]]=i[1]}}return n}function e(r){var e=i[r];return\"undefined\"!=typeof e?e:(e=n(r),e.params=t(e),i[r]=e,e)}var o=this,i={};return e.changeQueryParser=function(r){t=r},\"undefined\"!=typeof exports?(\"undefined\"!=typeof module&&module.exports&&(exports=module.exports=e),exports.liteURL=e):o.liteURL=e,e}).call(this);\n","/*!\n * Platform.js v1.3.6\n * Copyright 2014-2020 Benjamin Tan\n * Copyright 2011-2013 John-David Dalton\n * Available under MIT license\n */\n;(function() {\n 'use strict';\n\n /** Used to determine if values are of the language type `Object`. */\n var objectTypes = {\n 'function': true,\n 'object': true\n };\n\n /** Used as a reference to the global object. */\n var root = (objectTypes[typeof window] && window) || this;\n\n /** Backup possible global object. */\n var oldRoot = root;\n\n /** Detect free variable `exports`. */\n var freeExports = objectTypes[typeof exports] && exports;\n\n /** Detect free variable `module`. */\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\n root = freeGlobal;\n }\n\n /**\n * Used as the maximum length of an array-like object.\n * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)\n * for more details.\n */\n var maxSafeInteger = Math.pow(2, 53) - 1;\n\n /** Regular expression to detect Opera. */\n var reOpera = /\\bOpera/;\n\n /** Possible global object. */\n var thisBinding = this;\n\n /** Used for native method references. */\n var objectProto = Object.prototype;\n\n /** Used to check for own properties of an object. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to resolve the internal `[[Class]]` of values. */\n var toString = objectProto.toString;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Capitalizes a string value.\n *\n * @private\n * @param {string} string The string to capitalize.\n * @returns {string} The capitalized string.\n */\n function capitalize(string) {\n string = String(string);\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n /**\n * A utility function to clean up the OS name.\n *\n * @private\n * @param {string} os The OS name to clean up.\n * @param {string} [pattern] A `RegExp` pattern matching the OS name.\n * @param {string} [label] A label for the OS.\n */\n function cleanupOS(os, pattern, label) {\n // Platform tokens are defined at:\n // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n var data = {\n '10.0': '10',\n '6.4': '10 Technical Preview',\n '6.3': '8.1',\n '6.2': '8',\n '6.1': 'Server 2008 R2 / 7',\n '6.0': 'Server 2008 / Vista',\n '5.2': 'Server 2003 / XP 64-bit',\n '5.1': 'XP',\n '5.01': '2000 SP1',\n '5.0': '2000',\n '4.0': 'NT',\n '4.90': 'ME'\n };\n // Detect Windows version from platform tokens.\n if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) &&\n (data = data[/[\\d.]+$/.exec(os)])) {\n os = 'Windows ' + data;\n }\n // Correct character case and cleanup string.\n os = String(os);\n\n if (pattern && label) {\n os = os.replace(RegExp(pattern, 'i'), label);\n }\n\n os = format(\n os.replace(/ ce$/i, ' CE')\n .replace(/\\bhpw/i, 'web')\n .replace(/\\bMacintosh\\b/, 'Mac OS')\n .replace(/_PowerPC\\b/i, ' OS')\n .replace(/\\b(OS X) [^ \\d]+/i, '$1')\n .replace(/\\bMac (OS X)\\b/, '$1')\n .replace(/\\/(\\d)/, ' $1')\n .replace(/_/g, '.')\n .replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i, '')\n .replace(/\\bx86\\.64\\b/gi, 'x86_64')\n .replace(/\\b(Windows Phone) OS\\b/, '$1')\n .replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/, '$1')\n .split(' on ')[0]\n );\n\n return os;\n }\n\n /**\n * An iteration utility for arrays and objects.\n *\n * @private\n * @param {Array|Object} object The object to iterate over.\n * @param {Function} callback The function called per iteration.\n */\n function each(object, callback) {\n var index = -1,\n length = object ? object.length : 0;\n\n if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) {\n while (++index < length) {\n callback(object[index], index, object);\n }\n } else {\n forOwn(object, callback);\n }\n }\n\n /**\n * Trim and conditionally capitalize string values.\n *\n * @private\n * @param {string} string The string to format.\n * @returns {string} The formatted string.\n */\n function format(string) {\n string = trim(string);\n return /^(?:webOS|i(?:OS|P))/.test(string)\n ? string\n : capitalize(string);\n }\n\n /**\n * Iterates over an object's own properties, executing the `callback` for each.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} callback The function executed per own property.\n */\n function forOwn(object, callback) {\n for (var key in object) {\n if (hasOwnProperty.call(object, key)) {\n callback(object[key], key, object);\n }\n }\n }\n\n /**\n * Gets the internal `[[Class]]` of a value.\n *\n * @private\n * @param {*} value The value.\n * @returns {string} The `[[Class]]`.\n */\n function getClassOf(value) {\n return value == null\n ? capitalize(value)\n : toString.call(value).slice(8, -1);\n }\n\n /**\n * Host objects can return type values that are different from their actual\n * data type. The objects we are concerned with usually return non-primitive\n * types of \"object\", \"function\", or \"unknown\".\n *\n * @private\n * @param {*} object The owner of the property.\n * @param {string} property The property to check.\n * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.\n */\n function isHostType(object, property) {\n var type = object != null ? typeof object[property] : 'number';\n return !/^(?:boolean|number|string|undefined)$/.test(type) &&\n (type == 'object' ? !!object[property] : true);\n }\n\n /**\n * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.\n *\n * @private\n * @param {string} string The string to qualify.\n * @returns {string} The qualified string.\n */\n function qualify(string) {\n return String(string).replace(/([ -])(?!$)/g, '$1?');\n }\n\n /**\n * A bare-bones `Array#reduce` like utility function.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function called per iteration.\n * @returns {*} The accumulated result.\n */\n function reduce(array, callback) {\n var accumulator = null;\n each(array, function(value, index) {\n accumulator = callback(accumulator, value, index, array);\n });\n return accumulator;\n }\n\n /**\n * Removes leading and trailing whitespace from a string.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} The trimmed string.\n */\n function trim(string) {\n return String(string).replace(/^ +| +$/g, '');\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Creates a new platform object.\n *\n * @memberOf platform\n * @param {Object|string} [ua=navigator.userAgent] The user agent string or\n * context object.\n * @returns {Object} A platform object.\n */\n function parse(ua) {\n\n /** The environment context object. */\n var context = root;\n\n /** Used to flag when a custom context is provided. */\n var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String';\n\n // Juggle arguments.\n if (isCustomContext) {\n context = ua;\n ua = null;\n }\n\n /** Browser navigator object. */\n var nav = context.navigator || {};\n\n /** Browser user agent string. */\n var userAgent = nav.userAgent || '';\n\n ua || (ua = userAgent);\n\n /** Used to flag when `thisBinding` is the [ModuleScope]. */\n var isModuleScope = isCustomContext || thisBinding == oldRoot;\n\n /** Used to detect if browser is like Chrome. */\n var likeChrome = isCustomContext\n ? !!nav.likeChrome\n : /\\bChrome\\b/.test(ua) && !/internal|\\n/i.test(toString.toString());\n\n /** Internal `[[Class]]` value shortcuts. */\n var objectClass = 'Object',\n airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject',\n enviroClass = isCustomContext ? objectClass : 'Environment',\n javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java),\n phantomClass = isCustomContext ? objectClass : 'RuntimeObject';\n\n /** Detect Java environments. */\n var java = /\\bJava/.test(javaClass) && context.java;\n\n /** Detect Rhino. */\n var rhino = java && getClassOf(context.environment) == enviroClass;\n\n /** A character to represent alpha. */\n var alpha = java ? 'a' : '\\u03b1';\n\n /** A character to represent beta. */\n var beta = java ? 'b' : '\\u03b2';\n\n /** Browser document object. */\n var doc = context.document || {};\n\n /**\n * Detect Opera browser (Presto-based).\n * http://www.howtocreate.co.uk/operaStuff/operaObject.html\n * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini\n */\n var opera = context.operamini || context.opera;\n\n /** Opera `[[Class]]`. */\n var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera))\n ? operaClass\n : (opera = null);\n\n /*------------------------------------------------------------------------*/\n\n /** Temporary variable used over the script's lifetime. */\n var data;\n\n /** The CPU architecture. */\n var arch = ua;\n\n /** Platform description array. */\n var description = [];\n\n /** Platform alpha/beta indicator. */\n var prerelease = null;\n\n /** A flag to indicate that environment features should be used to resolve the platform. */\n var useFeatures = ua == userAgent;\n\n /** The browser/environment version. */\n var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();\n\n /** A flag to indicate if the OS ends with \"/ Version\" */\n var isSpecialCasedOS;\n\n /* Detectable layout engines (order is important). */\n var layout = getLayout([\n { 'label': 'EdgeHTML', 'pattern': 'Edge' },\n 'Trident',\n { 'label': 'WebKit', 'pattern': 'AppleWebKit' },\n 'iCab',\n 'Presto',\n 'NetFront',\n 'Tasman',\n 'KHTML',\n 'Gecko'\n ]);\n\n /* Detectable browser names (order is important). */\n var name = getName([\n 'Adobe AIR',\n 'Arora',\n 'Avant Browser',\n 'Breach',\n 'Camino',\n 'Electron',\n 'Epiphany',\n 'Fennec',\n 'Flock',\n 'Galeon',\n 'GreenBrowser',\n 'iCab',\n 'Iceweasel',\n 'K-Meleon',\n 'Konqueror',\n 'Lunascape',\n 'Maxthon',\n { 'label': 'Microsoft Edge', 'pattern': '(?:Edge|Edg|EdgA|EdgiOS)' },\n 'Midori',\n 'Nook Browser',\n 'PaleMoon',\n 'PhantomJS',\n 'Raven',\n 'Rekonq',\n 'RockMelt',\n { 'label': 'Samsung Internet', 'pattern': 'SamsungBrowser' },\n 'SeaMonkey',\n { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Sleipnir',\n 'SlimBrowser',\n { 'label': 'SRWare Iron', 'pattern': 'Iron' },\n 'Sunrise',\n 'Swiftfox',\n 'Vivaldi',\n 'Waterfox',\n 'WebPositive',\n { 'label': 'Yandex Browser', 'pattern': 'YaBrowser' },\n { 'label': 'UC Browser', 'pattern': 'UCBrowser' },\n 'Opera Mini',\n { 'label': 'Opera Mini', 'pattern': 'OPiOS' },\n 'Opera',\n { 'label': 'Opera', 'pattern': 'OPR' },\n 'Chromium',\n 'Chrome',\n { 'label': 'Chrome', 'pattern': '(?:HeadlessChrome)' },\n { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },\n { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },\n { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' },\n { 'label': 'IE', 'pattern': 'IEMobile' },\n { 'label': 'IE', 'pattern': 'MSIE' },\n 'Safari'\n ]);\n\n /* Detectable products (order is important). */\n var product = getProduct([\n { 'label': 'BlackBerry', 'pattern': 'BB10' },\n 'BlackBerry',\n { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },\n { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },\n { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' },\n { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' },\n { 'label': 'Galaxy S5', 'pattern': 'SM-G900' },\n { 'label': 'Galaxy S6', 'pattern': 'SM-G920' },\n { 'label': 'Galaxy S6 Edge', 'pattern': 'SM-G925' },\n { 'label': 'Galaxy S7', 'pattern': 'SM-G930' },\n { 'label': 'Galaxy S7 Edge', 'pattern': 'SM-G935' },\n 'Google TV',\n 'Lumia',\n 'iPad',\n 'iPod',\n 'iPhone',\n 'Kindle',\n { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Nexus',\n 'Nook',\n 'PlayBook',\n 'PlayStation Vita',\n 'PlayStation',\n 'TouchPad',\n 'Transformer',\n { 'label': 'Wii U', 'pattern': 'WiiU' },\n 'Wii',\n 'Xbox One',\n { 'label': 'Xbox 360', 'pattern': 'Xbox' },\n 'Xoom'\n ]);\n\n /* Detectable manufacturers. */\n var manufacturer = getManufacturer({\n 'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },\n 'Alcatel': {},\n 'Archos': {},\n 'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },\n 'Asus': { 'Transformer': 1 },\n 'Barnes & Noble': { 'Nook': 1 },\n 'BlackBerry': { 'PlayBook': 1 },\n 'Google': { 'Google TV': 1, 'Nexus': 1 },\n 'HP': { 'TouchPad': 1 },\n 'HTC': {},\n 'Huawei': {},\n 'Lenovo': {},\n 'LG': {},\n 'Microsoft': { 'Xbox': 1, 'Xbox One': 1 },\n 'Motorola': { 'Xoom': 1 },\n 'Nintendo': { 'Wii U': 1, 'Wii': 1 },\n 'Nokia': { 'Lumia': 1 },\n 'Oppo': {},\n 'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 },\n 'Sony': { 'PlayStation': 1, 'PlayStation Vita': 1 },\n 'Xiaomi': { 'Mi': 1, 'Redmi': 1 }\n });\n\n /* Detectable operating systems (order is important). */\n var os = getOS([\n 'Windows Phone',\n 'KaiOS',\n 'Android',\n 'CentOS',\n { 'label': 'Chrome OS', 'pattern': 'CrOS' },\n 'Debian',\n { 'label': 'DragonFly BSD', 'pattern': 'DragonFly' },\n 'Fedora',\n 'FreeBSD',\n 'Gentoo',\n 'Haiku',\n 'Kubuntu',\n 'Linux Mint',\n 'OpenBSD',\n 'Red Hat',\n 'SuSE',\n 'Ubuntu',\n 'Xubuntu',\n 'Cygwin',\n 'Symbian OS',\n 'hpwOS',\n 'webOS ',\n 'webOS',\n 'Tablet OS',\n 'Tizen',\n 'Linux',\n 'Mac OS X',\n 'Macintosh',\n 'Mac',\n 'Windows 98;',\n 'Windows '\n ]);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Picks the layout engine from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected layout engine.\n */\n function getLayout(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the manufacturer from an array of guesses.\n *\n * @private\n * @param {Array} guesses An object of guesses.\n * @returns {null|string} The detected manufacturer.\n */\n function getManufacturer(guesses) {\n return reduce(guesses, function(result, value, key) {\n // Lookup the manufacturer by product or scan the UA for the manufacturer.\n return result || (\n value[product] ||\n value[/^[a-z]+(?: +[a-z]+\\b)*/i.exec(product)] ||\n RegExp('\\\\b' + qualify(key) + '(?:\\\\b|\\\\w*\\\\d)', 'i').exec(ua)\n ) && key;\n });\n }\n\n /**\n * Picks the browser name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected browser name.\n */\n function getName(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the OS name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected OS name.\n */\n function getOS(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + '(?:/[\\\\d.]+|[ \\\\w.]*)', 'i').exec(ua)\n )) {\n result = cleanupOS(result, pattern, guess.label || guess);\n }\n return result;\n });\n }\n\n /**\n * Picks the product name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected product name.\n */\n function getProduct(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + ' *\\\\d+[.\\\\w_]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + ' *\\\\w+-[\\\\w]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\\\d+|[^ ();-]*)', 'i').exec(ua)\n )) {\n // Split by forward slash and append product version if needed.\n if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\\d.]+/.test(result[0])) {\n result[0] += ' ' + result[1];\n }\n // Correct character case and cleanup string.\n guess = guess.label || guess;\n result = format(result[0]\n .replace(RegExp(pattern, 'i'), guess)\n .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')\n .replace(RegExp('(' + guess + ')[-_.]?(\\\\w)', 'i'), '$1 $2'));\n }\n return result;\n });\n }\n\n /**\n * Resolves the version using an array of UA patterns.\n *\n * @private\n * @param {Array} patterns An array of UA patterns.\n * @returns {null|string} The detected version.\n */\n function getVersion(patterns) {\n return reduce(patterns, function(result, pattern) {\n return result || (RegExp(pattern +\n '(?:-[\\\\d.]+/|(?: for [\\\\w-]+)?[ /-])([\\\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;\n });\n }\n\n /**\n * Returns `platform.description` when the platform object is coerced to a string.\n *\n * @name toString\n * @memberOf platform\n * @returns {string} Returns `platform.description` if available, else an empty string.\n */\n function toStringPlatform() {\n return this.description || '';\n }\n\n /*------------------------------------------------------------------------*/\n\n // Convert layout to an array so we can add extra details.\n layout && (layout = [layout]);\n\n // Detect Android products.\n // Browsers on Android devices typically provide their product IDS after \"Android;\"\n // up to \"Build\" or \") AppleWebKit\".\n // Example:\n // \"Mozilla/5.0 (Linux; Android 8.1.0; Moto G (5) Plus) AppleWebKit/537.36\n // (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36\"\n if (/\\bAndroid\\b/.test(os) && !product &&\n (data = /\\bAndroid[^;]*;(.*?)(?:Build|\\) AppleWebKit)\\b/i.exec(ua))) {\n product = trim(data[1])\n // Replace any language codes (eg. \"en-US\").\n .replace(/^[a-z]{2}-[a-z]{2};\\s*/i, '')\n || null;\n }\n // Detect product names that contain their manufacturer's name.\n if (manufacturer && !product) {\n product = getProduct([manufacturer]);\n } else if (manufacturer && product) {\n product = product\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.\\\\s]', 'i'), manufacturer + ' ')\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.]?(\\\\w)', 'i'), manufacturer + ' $2');\n }\n // Clean up Google TV.\n if ((data = /\\bGoogle TV\\b/.exec(product))) {\n product = data[0];\n }\n // Detect simulators.\n if (/\\bSimulator\\b/i.test(ua)) {\n product = (product ? product + ' ' : '') + 'Simulator';\n }\n // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.\n if (name == 'Opera Mini' && /\\bOPiOS\\b/.test(ua)) {\n description.push('running in Turbo/Uncompressed mode');\n }\n // Detect IE Mobile 11.\n if (name == 'IE' && /\\blike iPhone OS\\b/.test(ua)) {\n data = parse(ua.replace(/like iPhone OS/, ''));\n manufacturer = data.manufacturer;\n product = data.product;\n }\n // Detect iOS.\n else if (/^iP/.test(product)) {\n name || (name = 'Safari');\n os = 'iOS' + ((data = / OS ([\\d_]+)/i.exec(ua))\n ? ' ' + data[1].replace(/_/g, '.')\n : '');\n }\n // Detect Kubuntu.\n else if (name == 'Konqueror' && /^Linux\\b/i.test(os)) {\n os = 'Kubuntu';\n }\n // Detect Android browsers.\n else if ((manufacturer && manufacturer != 'Google' &&\n ((/Chrome/.test(name) && !/\\bMobile Safari\\b/i.test(ua)) || /\\bVita\\b/.test(product))) ||\n (/\\bAndroid\\b/.test(os) && /^Chrome/.test(name) && /\\bVersion\\//i.test(ua))) {\n name = 'Android Browser';\n os = /\\bAndroid\\b/.test(os) ? os : 'Android';\n }\n // Detect Silk desktop/accelerated modes.\n else if (name == 'Silk') {\n if (!/\\bMobi/i.test(ua)) {\n os = 'Android';\n description.unshift('desktop mode');\n }\n if (/Accelerated *= *true/i.test(ua)) {\n description.unshift('accelerated');\n }\n }\n // Detect UC Browser speed mode.\n else if (name == 'UC Browser' && /\\bUCWEB\\b/.test(ua)) {\n description.push('speed mode');\n }\n // Detect PaleMoon identifying as Firefox.\n else if (name == 'PaleMoon' && (data = /\\bFirefox\\/([\\d.]+)\\b/.exec(ua))) {\n description.push('identifying as Firefox ' + data[1]);\n }\n // Detect Firefox OS and products running Firefox.\n else if (name == 'Firefox' && (data = /\\b(Mobile|Tablet|TV)\\b/i.exec(ua))) {\n os || (os = 'Firefox OS');\n product || (product = data[1]);\n }\n // Detect false positives for Firefox/Safari.\n else if (!name || (data = !/\\bMinefield\\b/i.test(ua) && /\\b(?:Firefox|Safari)\\b/.exec(name))) {\n // Escape the `/` for Firefox 1.\n if (name && !product && /[\\/,]|^[^(]+?\\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {\n // Clear name of false positives.\n name = null;\n }\n // Reassign a generic name.\n if ((data = product || manufacturer || os) &&\n (product || manufacturer || /\\b(?:Android|Symbian OS|Tablet OS|webOS)\\b/.test(os))) {\n name = /[a-z]+(?: Hat)?/i.exec(/\\bAndroid\\b/.test(os) ? os : data) + ' Browser';\n }\n }\n // Add Chrome version to description for Electron.\n else if (name == 'Electron' && (data = (/\\bChrome\\/([\\d.]+)\\b/.exec(ua) || 0)[1])) {\n description.push('Chromium ' + data);\n }\n // Detect non-Opera (Presto-based) versions (order is important).\n if (!version) {\n version = getVersion([\n '(?:Cloud9|CriOS|CrMo|Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\\\d.]+$)|UCBrowser|YaBrowser)',\n 'Version',\n qualify(name),\n '(?:Firefox|Minefield|NetFront)'\n ]);\n }\n // Detect stubborn layout engines.\n if ((data =\n layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||\n /\\bOpera\\b/.test(name) && (/\\bOPR\\b/.test(ua) ? 'Blink' : 'Presto') ||\n /\\b(?:Midori|Nook|Safari)\\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||\n !layout && /\\bMSIE\\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||\n layout == 'WebKit' && /\\bPlayStation\\b(?! Vita\\b)/i.test(name) && 'NetFront'\n )) {\n layout = [data];\n }\n // Detect Windows Phone 7 desktop mode.\n if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(ua) || 0)[1])) {\n name += ' Mobile';\n os = 'Windows Phone ' + (/\\+$/.test(data) ? data : data + '.x');\n description.unshift('desktop mode');\n }\n // Detect Windows Phone 8.x desktop mode.\n else if (/\\bWPDesktop\\b/i.test(ua)) {\n name = 'IE Mobile';\n os = 'Windows Phone 8.x';\n description.unshift('desktop mode');\n version || (version = (/\\brv:([\\d.]+)/.exec(ua) || 0)[1]);\n }\n // Detect IE 11 identifying as other browsers.\n else if (name != 'IE' && layout == 'Trident' && (data = /\\brv:([\\d.]+)/.exec(ua))) {\n if (name) {\n description.push('identifying as ' + name + (version ? ' ' + version : ''));\n }\n name = 'IE';\n version = data[1];\n }\n // Leverage environment features.\n if (useFeatures) {\n // Detect server-side environments.\n // Rhino has a global function while others have a global object.\n if (isHostType(context, 'global')) {\n if (java) {\n data = java.lang.System;\n arch = data.getProperty('os.arch');\n os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');\n }\n if (rhino) {\n try {\n version = context.require('ringo/engine').version.join('.');\n name = 'RingoJS';\n } catch(e) {\n if ((data = context.system) && data.global.system == context.system) {\n name = 'Narwhal';\n os || (os = data[0].os || null);\n }\n }\n if (!name) {\n name = 'Rhino';\n }\n }\n else if (\n typeof context.process == 'object' && !context.process.browser &&\n (data = context.process)\n ) {\n if (typeof data.versions == 'object') {\n if (typeof data.versions.electron == 'string') {\n description.push('Node ' + data.versions.node);\n name = 'Electron';\n version = data.versions.electron;\n } else if (typeof data.versions.nw == 'string') {\n description.push('Chromium ' + version, 'Node ' + data.versions.node);\n name = 'NW.js';\n version = data.versions.nw;\n }\n }\n if (!name) {\n name = 'Node.js';\n arch = data.arch;\n os = data.platform;\n version = /[\\d.]+/.exec(data.version);\n version = version ? version[0] : null;\n }\n }\n }\n // Detect Adobe AIR.\n else if (getClassOf((data = context.runtime)) == airRuntimeClass) {\n name = 'Adobe AIR';\n os = data.flash.system.Capabilities.os;\n }\n // Detect PhantomJS.\n else if (getClassOf((data = context.phantom)) == phantomClass) {\n name = 'PhantomJS';\n version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);\n }\n // Detect IE compatibility modes.\n else if (typeof doc.documentMode == 'number' && (data = /\\bTrident\\/(\\d+)/i.exec(ua))) {\n // We're in compatibility mode when the Trident version + 4 doesn't\n // equal the document mode.\n version = [version, doc.documentMode];\n if ((data = +data[1] + 4) != version[1]) {\n description.push('IE ' + version[1] + ' mode');\n layout && (layout[1] = '');\n version[1] = data;\n }\n version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];\n }\n // Detect IE 11 masking as other browsers.\n else if (typeof doc.documentMode == 'number' && /^(?:Chrome|Firefox)\\b/.test(name)) {\n description.push('masking as ' + name + ' ' + version);\n name = 'IE';\n version = '11.0';\n layout = ['Trident'];\n os = 'Windows';\n }\n os = os && format(os);\n }\n // Detect prerelease phases.\n if (version && (data =\n /(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(version) ||\n /(?:alpha|beta)(?: ?\\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||\n /\\bMinefield\\b/i.test(ua) && 'a'\n )) {\n prerelease = /b/i.test(data) ? 'beta' : 'alpha';\n version = version.replace(RegExp(data + '\\\\+?$'), '') +\n (prerelease == 'beta' ? beta : alpha) + (/\\d+\\+?/.exec(data) || '');\n }\n // Detect Firefox Mobile.\n if (name == 'Fennec' || name == 'Firefox' && /\\b(?:Android|Firefox OS|KaiOS)\\b/.test(os)) {\n name = 'Firefox Mobile';\n }\n // Obscure Maxthon's unreliable version.\n else if (name == 'Maxthon' && version) {\n version = version.replace(/\\.[\\d.]+/, '.x');\n }\n // Detect Xbox 360 and Xbox One.\n else if (/\\bXbox\\b/i.test(product)) {\n if (product == 'Xbox 360') {\n os = null;\n }\n if (product == 'Xbox 360' && /\\bIEMobile\\b/.test(ua)) {\n description.unshift('mobile mode');\n }\n }\n // Add mobile postfix.\n else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) &&\n (os == 'Windows CE' || /Mobi/i.test(ua))) {\n name += ' Mobile';\n }\n // Detect IE platform preview.\n else if (name == 'IE' && useFeatures) {\n try {\n if (context.external === null) {\n description.unshift('platform preview');\n }\n } catch(e) {\n description.unshift('embedded');\n }\n }\n // Detect BlackBerry OS version.\n // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp\n else if ((/\\bBlackBerry\\b/.test(product) || /\\bBB10\\b/.test(ua)) && (data =\n (RegExp(product.replace(/ +/g, ' *') + '/([.\\\\d]+)', 'i').exec(ua) || 0)[1] ||\n version\n )) {\n data = [data, /BB10/.test(ua)];\n os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0];\n version = null;\n }\n // Detect Opera identifying/masking itself as another browser.\n // http://www.opera.com/support/kb/view/843/\n else if (this != forOwn && product != 'Wii' && (\n (useFeatures && opera) ||\n (/Opera/.test(name) && /\\b(?:MSIE|Firefox)\\b/i.test(ua)) ||\n (name == 'Firefox' && /\\bOS X (?:\\d+\\.){2,}/.test(os)) ||\n (name == 'IE' && (\n (os && !/^Win/.test(os) && version > 5.5) ||\n /\\bWindows XP\\b/.test(os) && version > 8 ||\n version == 8 && !/\\bTrident\\b/.test(ua)\n ))\n ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {\n // When \"identifying\", the UA contains both Opera and the other browser's name.\n data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');\n if (reOpera.test(name)) {\n if (/\\bIE\\b/.test(data) && os == 'Mac OS') {\n os = null;\n }\n data = 'identify' + data;\n }\n // When \"masking\", the UA contains only the other browser's name.\n else {\n data = 'mask' + data;\n if (operaClass) {\n name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));\n } else {\n name = 'Opera';\n }\n if (/\\bIE\\b/.test(data)) {\n os = null;\n }\n if (!useFeatures) {\n version = null;\n }\n }\n layout = ['Presto'];\n description.push(data);\n }\n // Detect WebKit Nightly and approximate Chrome/Safari versions.\n if ((data = (/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n // Correct build number for numeric comparison.\n // (e.g. \"532.5\" becomes \"532.05\")\n data = [parseFloat(data.replace(/\\.(\\d)$/, '.0$1')), data];\n // Nightly builds are postfixed with a \"+\".\n if (name == 'Safari' && data[1].slice(-1) == '+') {\n name = 'WebKit Nightly';\n prerelease = 'alpha';\n version = data[1].slice(0, -1);\n }\n // Clear incorrect browser versions.\n else if (version == data[1] ||\n version == (data[2] = (/\\bSafari\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n version = null;\n }\n // Use the full Chrome version when available.\n data[1] = (/\\b(?:Headless)?Chrome\\/([\\d.]+)/i.exec(ua) || 0)[1];\n // Detect Blink layout engine.\n if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') {\n layout = ['Blink'];\n }\n // Detect JavaScriptCore.\n // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi\n if (!useFeatures || (!likeChrome && !data[1])) {\n layout && (layout[1] = 'like Safari');\n data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : data < 602 ? 9 : data < 604 ? 10 : data < 606 ? 11 : data < 608 ? 12 : '12');\n } else {\n layout && (layout[1] = 'like Chrome');\n data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28');\n }\n // Add the postfix of \".x\" or \"+\" for approximate versions.\n layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+'));\n // Obscure version for some Safari 1-2 releases.\n if (name == 'Safari' && (!version || parseInt(version) > 45)) {\n version = data;\n } else if (name == 'Chrome' && /\\bHeadlessChrome/i.test(ua)) {\n description.unshift('headless');\n }\n }\n // Detect Opera desktop modes.\n if (name == 'Opera' && (data = /\\bzbov|zvav$/.exec(os))) {\n name += ' ';\n description.unshift('desktop mode');\n if (data == 'zvav') {\n name += 'Mini';\n version = null;\n } else {\n name += 'Mobile';\n }\n os = os.replace(RegExp(' *' + data + '$'), '');\n }\n // Detect Chrome desktop mode.\n else if (name == 'Safari' && /\\bChrome\\b/.exec(layout && layout[1])) {\n description.unshift('desktop mode');\n name = 'Chrome Mobile';\n version = null;\n\n if (/\\bOS X\\b/.test(os)) {\n manufacturer = 'Apple';\n os = 'iOS 4.3+';\n } else {\n os = null;\n }\n }\n // Newer versions of SRWare Iron uses the Chrome tag to indicate its version number.\n else if (/\\bSRWare Iron\\b/.test(name) && !version) {\n version = getVersion('Chrome');\n }\n // Strip incorrect OS versions.\n if (version && version.indexOf((data = /[\\d.]+$/.exec(os))) == 0 &&\n ua.indexOf('/' + data + '-') > -1) {\n os = trim(os.replace(data, ''));\n }\n // Ensure OS does not include the browser name.\n if (os && os.indexOf(name) != -1 && !RegExp(name + ' OS').test(os)) {\n os = os.replace(RegExp(' *' + qualify(name) + ' *'), '');\n }\n // Add layout engine.\n if (layout && !/\\b(?:Avant|Nook)\\b/.test(name) && (\n /Browser|Lunascape|Maxthon/.test(name) ||\n name != 'Safari' && /^iOS/.test(os) && /\\bSafari\\b/.test(layout[1]) ||\n /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(name) && layout[1])) {\n // Don't add layout details to description if they are falsey.\n (data = layout[layout.length - 1]) && description.push(data);\n }\n // Combine contextual information.\n if (description.length) {\n description = ['(' + description.join('; ') + ')'];\n }\n // Append manufacturer to description.\n if (manufacturer && product && product.indexOf(manufacturer) < 0) {\n description.push('on ' + manufacturer);\n }\n // Append product to description.\n if (product) {\n description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product);\n }\n // Parse the OS into an object.\n if (os) {\n data = / ([\\d.+]+)$/.exec(os);\n isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/';\n os = {\n 'architecture': 32,\n 'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os,\n 'version': data ? data[1] : null,\n 'toString': function() {\n var version = this.version;\n return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');\n }\n };\n }\n // Add browser/OS architecture.\n if ((data = /\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(arch)) && !/\\bi686\\b/i.test(arch)) {\n if (os) {\n os.architecture = 64;\n os.family = os.family.replace(RegExp(' *' + data), '');\n }\n if (\n name && (/\\bWOW64\\b/i.test(ua) ||\n (useFeatures && /\\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\\bWin64; x64\\b/i.test(ua)))\n ) {\n description.unshift('32-bit');\n }\n }\n // Chrome 39 and above on OS X is always 64-bit.\n else if (\n os && /^OS X/.test(os.family) &&\n name == 'Chrome' && parseFloat(version) >= 39\n ) {\n os.architecture = 64;\n }\n\n ua || (ua = null);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The platform object.\n *\n * @name platform\n * @type Object\n */\n var platform = {};\n\n /**\n * The platform description.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.description = ua;\n\n /**\n * The name of the browser's layout engine.\n *\n * The list of common layout engines include:\n * \"Blink\", \"EdgeHTML\", \"Gecko\", \"Trident\" and \"WebKit\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.layout = layout && layout[0];\n\n /**\n * The name of the product's manufacturer.\n *\n * The list of manufacturers include:\n * \"Apple\", \"Archos\", \"Amazon\", \"Asus\", \"Barnes & Noble\", \"BlackBerry\",\n * \"Google\", \"HP\", \"HTC\", \"LG\", \"Microsoft\", \"Motorola\", \"Nintendo\",\n * \"Nokia\", \"Samsung\" and \"Sony\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.manufacturer = manufacturer;\n\n /**\n * The name of the browser/environment.\n *\n * The list of common browser names include:\n * \"Chrome\", \"Electron\", \"Firefox\", \"Firefox for iOS\", \"IE\",\n * \"Microsoft Edge\", \"PhantomJS\", \"Safari\", \"SeaMonkey\", \"Silk\",\n * \"Opera Mini\" and \"Opera\"\n *\n * Mobile versions of some browsers have \"Mobile\" appended to their name:\n * eg. \"Chrome Mobile\", \"Firefox Mobile\", \"IE Mobile\" and \"Opera Mobile\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.name = name;\n\n /**\n * The alpha/beta release indicator.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.prerelease = prerelease;\n\n /**\n * The name of the product hosting the browser.\n *\n * The list of common products include:\n *\n * \"BlackBerry\", \"Galaxy S4\", \"Lumia\", \"iPad\", \"iPod\", \"iPhone\", \"Kindle\",\n * \"Kindle Fire\", \"Nexus\", \"Nook\", \"PlayBook\", \"TouchPad\" and \"Transformer\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.product = product;\n\n /**\n * The browser's user agent string.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.ua = ua;\n\n /**\n * The browser/environment version.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.version = name && version;\n\n /**\n * The name of the operating system.\n *\n * @memberOf platform\n * @type Object\n */\n platform.os = os || {\n\n /**\n * The CPU architecture the OS is built for.\n *\n * @memberOf platform.os\n * @type number|null\n */\n 'architecture': null,\n\n /**\n * The family of the OS.\n *\n * Common values include:\n * \"Windows\", \"Windows Server 2008 R2 / 7\", \"Windows Server 2008 / Vista\",\n * \"Windows XP\", \"OS X\", \"Linux\", \"Ubuntu\", \"Debian\", \"Fedora\", \"Red Hat\",\n * \"SuSE\", \"Android\", \"iOS\" and \"Windows Phone\"\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'family': null,\n\n /**\n * The version of the OS.\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'version': null,\n\n /**\n * Returns the OS string.\n *\n * @memberOf platform.os\n * @returns {string} The OS string.\n */\n 'toString': function() { return 'null'; }\n };\n\n platform.parse = parse;\n platform.toString = toStringPlatform;\n\n if (platform.version) {\n description.unshift(version);\n }\n if (platform.name) {\n description.unshift(name);\n }\n if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) {\n description.push(product ? '(' + os + ')' : 'on ' + os);\n }\n if (description.length) {\n platform.description = description.join(' ');\n }\n return platform;\n }\n\n /*--------------------------------------------------------------------------*/\n\n // Export platform.\n var platform = parse();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like the following:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose platform on the global object to prevent errors when platform is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n root.platform = platform;\n\n // Define as an anonymous module so platform can be aliased through path mapping.\n define(function() {\n return platform;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\n else if (freeExports && freeModule) {\n // Export for CommonJS support.\n forOwn(platform, function(value, key) {\n freeExports[key] = value;\n });\n }\n else {\n // Export to the global object.\n root.platform = platform;\n }\n}.call(this));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/adapter/adapter.js\n # Provides an empty object for later loaded adapter objects\n #\n # Product/Info:\n # https://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n'use strict';\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n// -----------------------------------------------------------------------------\n\n/*!\n * J1 Adapter\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = (function ( j1, window ) {\n return {\n\n // -------------------------------------------------------------------------\n // _init_\n // Global initializer for the adapter object\n // -------------------------------------------------------------------------\n _init_: function () {\n return;\n } // END _init_\n\n }; // END return\n\n})( j1, window );\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/j1_template/core.js\n # Provides an empty object for later loaded core objects\n #\n # Product/Info:\n # https://jekyll.one\n # http://getbootstrap.com/\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n'use strict';\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n// -----------------------------------------------------------------------------\n\n// module.exports = function core ( options ) {\n/*!\n * J1 Core\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = (function (options) {\n\n // ---------------------------------------------------------------------------\n // Global variables\n // ---------------------------------------------------------------------------\n // var messageCatalog = {};\n // var state;\n // var logger;\n // var logText;\n\n // ---------------------------------------------------------------------------\n // Default settings\n // ---------------------------------------------------------------------------\n var settings = $.extend({\n foo: 'foo_option',\n bar: 'bar_option'\n }, options );\n\n var state = 'loaded';\n\n return {\n\n // -------------------------------------------------------------------------\n // _init_\n // Global initializer for the core object\n // -------------------------------------------------------------------------\n _init_: function (options) {\n\n //\n // Place handling of options here\n //\n\n return;\n }, // END _init_\n\n // -------------------------------------------------------------------------\n // Returns the current (processing) state of the module\n // -------------------------------------------------------------------------\n getState: function () {\n return state;\n }, // END state\n\n // -------------------------------------------------------------------------\n // isMobile\n // Return true if the current platform is a mobile device\n // -------------------------------------------------------------------------\n isMobile: function (ua_name) {\n var mobile = false;\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm|cell|chtm|cldc|cmd|co(mp|nd)|craw|da(it|ll|ng)|dbte|dcs|devi|dica|dmob|do(c|p)o|ds(12|d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(|_)|g1 u|g560|gene|gf5|gmo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd(m|p|t)|hei|hi(pt|ta)|hp( i|ip)|hsc|ht(c(| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i(20|go|ma)|i230|iac( ||\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|[a-w])|libw|lynx|m1w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|mcr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|([1-8]|c))|phil|pire|pl(ay|uc)|pn2|po(ck|rt|se)|prox|psio|ptg|qaa|qc(07|12|21|32|60|[2-7]|i)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h|oo|p)|sdk\\/|se(c(|0|1)|47|mc|nd|ri)|sgh|shar|sie(|m)|sk0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h|v|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl|tdg|tel(i|m)|tim|tmo|to(pl|sh)|ts(70|m|m3|m5)|tx9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas|your|zeto|zte/i.test(a.substr(0,4))) mobile = true;})(navigator.userAgent||navigator.vendor||window.opera);\n return mobile;\n }, // END isMobile\n\n // -------------------------------------------------------------------------\n // Clear button for input fields (forms)\n // -------------------------------------------------------------------------\n bsFormClearButton: function () {\n// $('.position-relative :input').on('keydown focus', function() {\n $(':input').on('keydown focus change mouseover', function() {\n if ($(this).val().length > 0) {\n $(this).nextAll('.form-clear').removeClass('d-none');\n }\n }).on('keydown keyup blur', function() {\n if ($(this).val().length === 0) {\n $(this).nextAll('.form-clear').addClass('d-none');\n }\n });\n\n // $('.form-clear').on('click', function() {\n // $(this).addClass('d-none').prevAll(':input').val('');\n // // hide|clear results from top search\n // $('#search-results').hide();\n // $('#search-results').html('');\n // });\n }, // END bsFormClearButton\n\n // -------------------------------------------------------------------------\n // Initialize Backdrops on all <p> elements of class \"dropcap\"\n // -------------------------------------------------------------------------\n createDropCap: function () {\n\n // add class dropcap\n $('.paragraph.dropcap').children('p').addClass('dropcap');\n\n //\n if ($('p.dropcap').length) {\n $('p.dropcap').each(function() {\n var $p = $(this);\n var text = $.trim($p.text());\n var firstLetter = text[0];\n var marginalDropCap = '<span class=\"j1-dropcap\">' + firstLetter + '</span>';\n\n $p.html(text.replace(firstLetter, marginalDropCap));\n });\n }\n } // END createDropCap\n\n }; // end return (object)\n\n//})( jQuery, window );\n})(); // END IFFE\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/navigator/navigator.js\n # Provides all JavaScript core functions for J1 Navigator\n #\n # Product/Info:\n # https://jekyll.one\n # https://github.com/adamnurdin01/navigator\n #\n # Copyright (C) 2021 Juergen Adams\n # Copyright (C) 2016 adamnurdin01\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # Bootsnav is licensed under MIT License.\n # See: https://github.com/adamnurdin01/navigator\n #\n # -----------------------------------------------------------------------------\n # NOTE:\n # jadams, 2020-06-21:\n # J1 Navigator needs a general revision on BS4 code and functionalities\n # Current, only base function are tested with BS4 (was coded for BS3)\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n// -----------------------------------------------------------------------------\n\n// -----------------------------------------------------------------------------\n// TODO: Height of dropdowns are to be limited in general\n\n// -----------------------------------------------------------------------------\n// Navigator core registered as 'j1.core.navigator'\n// -----------------------------------------------------------------------------\n\nmodule.exports = function navigator ( options ) {\n\n // ---------------------------------------------------------------------------\n // global vars\n // ---------------------------------------------------------------------------\n var message = {};\n var state;\n var logger;\n var logText;\n\n // -----------------------------------------------------------------------\n // default settings\n // -----------------------------------------------------------------------\n var settings = $.extend ({\n foo: 'bar',\n bar: 'foo',\n }, options );\n\n // ---------------------------------------------------------------------------\n // main object\n // ---------------------------------------------------------------------------\n return {\n\n // -------------------------------------------------------------------------\n // module initializer\n // -------------------------------------------------------------------------\n init: function( defaultOptions, menuOptions ) {\n logger = log4javascript.getLogger('j1.core.navigator');\n logText = 'core is being initialized';\n\n logger.info(logText);\n this.manageDropdownMenu(defaultOptions, menuOptions);\n this.navbarSticky();\n this.eventHandler(defaultOptions); // jadams, 2021-07-03: initialize events early\n\n message.type = 'command';\n message.action = 'core_initialized';\n message.text = 'navigator core initialized';\n j1.sendMessage( 'j1.core.navigator', 'j1.adapter.navigator', message );\n\n return true;\n },\n\n // -------------------------------------------------------------------------\n // event handler\n // -------------------------------------------------------------------------\n eventHandler: function(options) {\n var defaultOptions = options;\n var logger = log4javascript.getLogger('j1.core.navigator.eventHandler');\n var $getNav = $('nav.navbar.navigator');\n var json_data;\n\n // const seeMe = 'https://smee.io/wlNIFNiJN0GClm2';\n // const middleware = 'localhost:5000/state';\n // const web_server_dev = 'http://localhost:41000/status';\n // const utility_server = 'http://localhost:41001/git?request=pull';\n // var sender = seeMe;\n // var payload;\n\n // if (j1.checkUserAgent('IE') || j1.checkUserAgent('Edge')) {\n // logger.warn('HTML5 server side events (SSE) not supported for: ' + userAgent);\n // logger.warn('Middleware messages disabled');\n // } else {\n // const middleware_status = new EventSource(sender);\n //\n // // -----------------------------------------------------------------------\n // // middleware event handler ( SSE currently NOT used)\n // // -----------------------------------------------------------------------\n // middleware_status.onmessage = (event) => {\n // const payload = JSON.parse(event.data);\n //\n // logger.debug('middleware: event received');\n //\n // json_data = JSON.stringify(payload, undefined, 2);\n // logText = 'payload: ' + json_data;\n // logger.debug(logText);\n //\n // message.type = 'command';\n // message.action = 'status';\n // message.text = payload;\n // j1.sendMessage( 'j1.core.navigator', 'j1.adapter.navigator', message );\n //\n // return true;\n // }; // END event onMessage\n // }\n\n // bind click event to all links with \"#\" to suppress default action\n // See: https://stackoverflow.com/questions/134845/which-href-value-should-i-use-for-javascript-links-or-javascriptvoid0\n //\n $('a[href=\"#\"]').click(function(e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n logger.info('bound click event to \"#\", suppress default action');\n });\n\n // -----------------------------------------------------------------------\n // Navbar Sticky\n // -----------------------------------------------------------------------\n var navSticky = $getNav.hasClass('navbar-sticky');\n if( navSticky ){\n // Wraped navigation\n $getNav.wrap('<div class=\\'wrap-sticky\\'></div>');\n }\n\n // -----------------------------------------------------------------------\n // Navbar Center\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('brand-center') ){\n var postsArr = new Array();\n var index = $('nav.brand-center');\n var $postsList = index.find('ul.navbar-nav');\n\n //Create array of all posts in lists\n index.find('ul.navbar-nav > li').each(function(){\n postsArr.push($(this).html());\n });\n\n // Split the array at this point. The original array is altered.\n var firstList = postsArr.splice(0, Math.round(postsArr.length / 2));\n var secondList = postsArr;\n var ListHTML = '';\n\n var createHTML = function(list) {\n ListHTML = '';\n for (var i = 0; i < list.length; i++) {\n ListHTML += '<li>' + list[i] + '</li>';\n }\n };\n\n // Generate HTML for first list\n createHTML(firstList);\n $postsList.html(ListHTML);\n index.find('ul.nav').first().addClass('navbar-left');\n\n // Generate HTML for second list\n createHTML(secondList);\n //Create new list after original one\n $postsList.after('<ul class=\"nav navbar-nav\"></ul>').next().html(ListHTML);\n index.find('ul.nav').last().addClass('navbar-right');\n\n // Wrap navigation menu\n index.find('ul.nav.navbar-left').wrap('<div class=\\'col_half left\\'></div>');\n index.find('ul.nav.navbar-right').wrap('<div class=\\'col_half right\\'></div>');\n\n // Selection Class\n index.find('ul.navbar-nav > li').each(function() {\n var dropDown = $('ul.dropdown-menu', this),\n megaMenu = $('ul.megamenu-content', this);\n dropDown.closest('li').addClass('dropdown');\n megaMenu.closest('li').addClass('megamenu-fw');\n });\n }\n\n // -----------------------------------------------------------------------\n // Menu Center\n // -----------------------------------------------------------------------\n if( $getNav.find('ul.nav').hasClass('navbar-center')) {\n $getNav.addClass('menu-center');\n }\n\n // -----------------------------------------------------------------------\n // Navbar Full\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('navbar-full')) {\n // Add Class to body\n $('nav.navbar.navigator').find('ul.nav').wrap('<div class=\\'wrap-full-menu\\'></div>');\n $('.wrap-full-menu').wrap('<div class=\\'nav-full\\'></div>');\n $('ul.nav.navbar-nav').prepend('<li class=\\'close-full-menu\\'><a href=\\'#\\'><i class=\\'mdi mdi-close\\'></i></a></li>');\n } else if( $getNav.hasClass('navbar-mobile') ) {\n $getNav.removeClass('no-full');\n } else {\n $getNav.addClass('no-full');\n }\n\n // -----------------------------------------------------------------------\n // Navbar Fixed\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('no-background') ) {\n $(window).on('scroll', function() {\n var navbarHeighth = $('nav.navbar').outerHeight();\n var scrollPos = $(window).scrollTop();\n\n if (scrollPos > navbarHeighth) {\n $('.navbar-fixed').removeClass('no-background');\n } else {\n $('.navbar-fixed').addClass('no-background');\n }\n });\n }\n\n if( $getNav.hasClass('navbar-transparent') ) {\n $(window).on('scroll', function() {\n var navbarHeighth = $('nav.navbar').outerHeight();\n var scrollPos = $(window).scrollTop();\n\n if (scrollPos > navbarHeighth) {\n $('.navbar-fixed').removeClass('navbar-transparent');\n $('.navbar-fixed').addClass('navbar-scrolled');\n } else {\n $('.navbar-fixed').removeClass('navbar-scrolled');\n $('.navbar-fixed').addClass('navbar-transparent');\n }\n });\n }\n\n // -----------------------------------------------------------------------\n // Toggle Search\n // https://stackoverflow.com/questions/178325/how-do-i-check-if-an-element-is-hidden-in-jquery\n // https://stackoverflow.com/questions/4770025/how-to-disable-scrolling-temporarily\n // https://stackoverflow.com/questions/5963669/whats-the-difference-between-event-stoppropagation-and-event-preventdefault\n // -----------------------------------------------------------------------\n// $('nav.navbar.navigator .attr-nav').each(function() {\n $('.attr-nav').each(function() {\n logger.debug('register OPEN event|s for QuickSearch');\n $('li.search > a', this).on('click', function(e) {\n // e.preventDefault(); // don't do the default browser action\n logger.debug('manage search action OPEN');\n $('html,body').animate({scrollTop: 0}, 0);\n $('.top-search').slideToggle('slow', 'swing', function() {\n if ( $('.top-search').is(':visible') ) {\n // disable scrolling (desktop)\n $('body').addClass('stop-scrolling');\n // disable scrolling (mobile)\n $('body').bind('touchmove', function(e){e.preventDefault();});\n // disable navbar\n $('#' + defaultOptions.nav_bar.container_id).hide();\n } else {\n // enable scrolling (desktop)\n $('body').removeClass('stop-scrolling');\n // enable scrolling (mobile)\n $('body').unbind('touchmove');\n // enable navbar\n $('#' + defaultOptions.nav_bar.container_id).show();\n }\n });\n // e.stopPropagation(); // don't bubble up the event\n });\n });\n logger.debug('register CLOSE event|s for QuickSearch');\n $('.input-group-addon.close-search').on('click', function(e) {\n e.preventDefault(); // don't do the default browser action\n logger.debug('manage search action CLOSE');\n $('.top-search').slideUp('slow', 'swing');\n $('html,body').animate({scrollTop: 0}, 0);\n // enable scrolling (desktop)\n $('body').removeClass('stop-scrolling');\n // enable scrolling (mobile)\n $('body').unbind('touchmove');\n // enable navbar\n $('#' + defaultOptions.nav_bar.container_id).show();\n e.stopPropagation(); // don't bubble up the event\n });\n\n // -----------------------------------------------------------------------\n // Toggle Translator SHOW|HIDE\n // -----------------------------------------------------------------------\n $('nav.navbar.navigator .attr-nav').each(function() {\n logger.debug('register SHOW|HIDE event|s for J1 Translator');\n $('li.translator > a', this).on('click', function(e) {\n // e.preventDefault(); // don't do the default browser action\n // window.location.reload(true);\n logger.debug('toggle translator icon SHOW|HIDE');\n // See: https://api.jquery.com/toggle/\n // With no parameters, the .toggle() method simply toggles the visibility of elements\n $('#google_translate_element').toggle();\n if ($('#google_translate_element').css('display') !== 'none') {\n $('html,body').animate({scrollTop: 0}, 'slow');\n }\n // e.stopPropagation(); // don't bubble up the event\n });\n });\n\n // -----------------------------------------------------------------------\n // Wrapper\n // -----------------------------------------------------------------------\n $('body').wrapInner( '<div class=\\'wrapper\\'></div>');\n\n }, // end event\n\n // -------------------------------------------------------------------------\n // Manage the Menu Dropdowns for Desktop|Mobile\n // -------------------------------------------------------------------------\n manageDropdownMenu : function( defaultOptions, menuOptions ) {\n\n var navDefaultOptions = defaultOptions;\n var navMenuOptions = menuOptions;\n\n var $getNav = $('nav.navbar.navigator');\n var $windowOrientation = window.matchMedia('(orientation: landscape)').matches ? 'landscape' : 'portrait';\n var $getWindow = $(window).width();\n var $getNavWidth = $('nav').width();\n var $getIn = $getNav.find('ul.nav').data('in');\n var $getOut = $getNav.find('ul.nav').data('out');\n\n var menuSelector = '#' +navMenuOptions.xhr_container_id+ '.collapse';\n var delayMenuOpen = navMenuOptions.delay_menu_open;\n\n var $menu;\n var breakPoint;\n var $dropDown;\n var timeoutHandle;\n\n // BS4 @media MAX breakpoints\n // NOTE: a media query is always a range\n // -----------------------------------------------------------------------\n var gridBreakpoint_lg = 992; // bs-breakpoint-lg\n var gridBreakpoint_md = 768; // bs-breakpoint-md\n var gridBreakpoint_sm = 576; // bs-breakpoint-sm\n\n // BS4 @media MIN breakpoints\n // -----------------------------------------------------------------------\n // NOTE: a media query is always a range\n // var gridBreakpoint_lg = 991;\n // var gridBreakpoint_md = 767;\n // var gridBreakpoint_sm = 575;\n\n // @media ranges\n // -----------------------------------------------------------------------\n var small_range = {min: '0em', max: '40em'}; /* 0, 640px */\n var medium_range = {min: '40.063em', max: '64em'}; /* 641px, 1024px */\n var large_range = {min: '64.063em', max: '90em'}; /* 1025px, 1440px */\n var xlarge_range = {min: '90.063em', max: '120em'}; /* 1441px, 1920px */\n var xxlarge_range = {min: '120.063em'}; /* 1921px */\n\n\n // jadams, 2019-05-01: Set Media Breakpoint for Desktop|Mobile Navigation\n if ( navDefaultOptions.nav_bar.media_breakpoint === 'lg' ) {\n breakPoint = gridBreakpoint_lg;\n } else if ( navDefaultOptions.nav_bar.media_breakpoint === 'md' ) {\n breakPoint = gridBreakpoint_md;\n } else if ( navDefaultOptions.nav_bar.media_breakpoint === 'sm' ) {\n breakPoint = gridBreakpoint_sm;\n } else{\n breakPoint = gridBreakpoint_lg;\n }\n\n // -----------------------------------------------------------------------\n // Tablet or Mobile\n // NOTE:\n // Managing the mobile menu is moved to MMenu Plugin\n // Only base functions like QuickLinks are managed by\n // J1 Navigator\n // -----------------------------------------------------------------------\n // MIN media breakpoint\n if ( $getWindow <= breakPoint ) {\n\n // Collapse Navbar\n $(menuSelector).addClass('navbar-collapse');\n $(menuSelector).removeClass('show'); //\n $('#navigator_nav_quicklinks').addClass('show');\n\n // Enable click Quicklink Navigation\n $('nav.navbar.navigator .attr-nav').each(function() {\n $('.dropdown-menu', this).removeClass('animated');\n $('li.dropdown', this).off('mouseenter');\n $('li.dropdown', this).off('mouseleave');\n $('a.dropdown-toggle', this).off('click');\n $('a.dropdown-toggle', this).on('click', function (e) {\n // e.stopPropagation(); // don't bubble up the event\n $(this).closest('li.dropdown').find('.dropdown-menu').first().stop().fadeToggle();\n $('.navbar-toggle').each(function(){\n $('.mdi', this).removeClass('mdi-close');\n $('.mdi', this).addClass('mdi-menu');\n $('.navbar-collapse').removeClass('in');\n $('.navbar-collapse').removeClass('open');\n });\n });\n\n $(this).on('mouseleave', function(){\n $('.dropdown-menu', this).stop().fadeOut();\n $('li.dropdown', this).removeClass('open');\n // return false;\n });\n });\n\n $('#desktop_menu').hide();\n\n // -----------------------------------------------------------------------\n // Desktop Navigation does NOT work on physical devices like iPad|Pro\n // Config DISABLED\n //\n// } else if ( $getWindow > breakPoint || $getWindow <= 1024 && $windowOrientation == 'portrait' ) {\n } else if ( $getWindow > breakPoint ) {\n // -----------------------------------------------------------------------\n // Desktop\n // -----------------------------------------------------------------------\n $('#navigator_nav_quicklinks').removeClass('show');\n $('#desktop_menu').show();\n\n // jadams, 2021-03-05: manage dropdown menus\n // ---------------------------------------------------------------------\n\n $('.dropdown-menu > li').on('mouseenter', function(){\n if ($('body').hasClass('stop-scrolling')){\n return false;\n } else {\n $('body').addClass('stop-scrolling');\n }\n });\n\n $('.dropdown-menu > li').on('mouseleave', function(){\n // stop scrolling if top search or any (mmenu) drawer is opened\n if ($('body').hasClass('stop-scrolling')){\n $('body').removeClass('stop-scrolling');\n }\n });\n\n // limit the dropdown menu lenght if needed\n $('.dropdown-menu > li').hover(function() {\n var $container = $(this);\n var $list = $container.find('ul');\n\n // limit LAST menu ONLY\n //\n if ( $list.length == 1 ) {\n $list.addClass('scrollable-menu');\n }\n });\n\n // jadams, 2021-03-06: Enable|Show Desktop Menu|s\n //\n $(menuSelector).removeClass('navbar-collapse');\n $(menuSelector).addClass('show');\n\n // Navbar Sidebar\n // jadams, 2021-03-05: Sidebar NOT used anymore\n\n // Open Desktop Menu|s on hover\n //\n $('nav.navbar.navigator ul.nav').each(function() {\n $('a.dropdown-toggle', this).off('click');\n $('a.dropdown-toggle', this).on('click', function (e) {\n // e.stopPropagation(); // don't bubble up the event\n });\n\n $('.megamenu-fw', this).each(function(){\n $('.title', this).off('click');\n $('a.dropdown-toggle', this).off('click');\n $('.content').removeClass('animated');\n });\n $('.dropdown-menu', this).addClass('animated');\n\n $('li.dropdown', this).on('mouseenter', function(){\n $menu = $('.dropdown-menu', this).eq(0);\n $dropDown = $(this);\n\n $menu.removeClass($getOut);\n $menu.removeClass('open');\n $dropDown.addClass('open');\n // Get|Set the timeout object to delay the dropdown open\n timeoutHandle = window.setTimeout(function () {\n if ($dropDown.hasClass('open')){\n $menu.stop().fadeIn().addClass($getIn);\n $menu.addClass('open');\n $dropDown.addClass('open');\n }\n }, delayMenuOpen);\n });\n\n $('li.dropdown', this).on('mouseleave', function(){\n window.clearTimeout(timeoutHandle); // Clear the timeout object\n $(this).removeClass('open').removeClass('open');\n\n $('.dropdown-menu', this).removeClass('open');\n $('.dropdown-menu', this).eq(0).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n });\n\n $(this).on('mouseleave', function(){\n window.clearTimeout(timeoutHandle);\n $('li.dropdown', this).removeClass('open');\n $('.dropdown-menu', this).removeClass('open');\n $('.dropdown-menu', this).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n });\n }); // END Desktop Menu\n\n } // end Desktop\n\n // -----------------------------------------------------------------------\n // Hover Open on Quicklink Navigation\n // -----------------------------------------------------------------------\n $('nav.navbar.navigator .attr-nav').each(function() {\n\n $('a.dropdown-toggle', this).off('click');\n $('a.dropdown-toggle', this).on('click', function (e) {\n // e.stopPropagation(); // don't bubble up the event\n });\n\n $('.dropdown-menu', this).addClass('animated');\n $('li.dropdown', this).on('mouseenter', function(){\n $('.dropdown-menu', this).eq(0).removeClass($getOut);\n $('.dropdown-menu', this).eq(0).stop().fadeIn().addClass($getIn);\n $(this).addClass('open');\n //return false;\n });\n\n $('li.dropdown', this).on('mouseleave', function(){\n $('.dropdown-menu', this).eq(0).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n $(this).removeClass('open');\n });\n\n $(this).on('mouseleave', function(){\n $('.dropdown-menu', this).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n $('li.dropdown', this).removeClass('open');\n //return false;\n });\n });\n\n // -----------------------------------------------------------------------\n // Fullscreen Menu\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('navbar-full')){\n var windowHeight = $(window).height(),\n windowWidth = $(window).width();\n\n $('.nav-full').css('height', windowHeight + 'px');\n $('.wrap-full-menu').css('height', windowHeight + 'px');\n $('.wrap-full-menu').css('width', windowWidth + 'px');\n\n $('.navbar-collapse').addClass('animated');\n $('.navbar-toggle').each(function(){\n var getId = $(this).data('target');\n $(this).off('click');\n $(this).on('click', function(e){\n e.preventDefault();\n $(getId).removeClass($getOut);\n $(getId).addClass('in');\n $(getId).addClass($getIn);\n // e.stopPropagation(); // don't bubble up the event\n // return false;\n });\n\n $('li.close-full-menu').on('click', function(e){\n e.preventDefault();\n $(getId).addClass($getOut);\n setTimeout(function(){\n $(getId).removeClass('in');\n $(getId).removeClass($getIn);\n }, 500);\n //e.stopPropagation(); // don't bubble up the event\n // return false;\n });\n });\n }\n }, // end manageDropdownMenu\n\n // -------------------------------------------------------------------------\n // Sticky Navbar\n // -------------------------------------------------------------------------\n navbarSticky : function() {\n var $getNav = $('nav.navbar.navigator'),\n navSticky = $getNav.hasClass('navbar-sticky');\n\n if (navSticky) {\n // Set Height Navigation\n var $getHeight = $getNav.height();\n $('.wrap-sticky').height($getHeight);\n\n // Windown on scroll\n var getOffset = $('.wrap-sticky').offset().top;\n $(window).on('scroll', function(){\n var scrollTop = $(window).scrollTop();\n if(scrollTop > getOffset){\n $getNav.addClass('sticked');\n }else {\n $getNav.removeClass('sticked');\n }\n });\n }\n }, // end navbarSticky\n\n // -------------------------------------------------------------------------\n // updateSidebar\n // Note:\n // -------------------------------------------------------------------------\n updateSidebar: function (user_data) {\n var logger = log4javascript.getLogger('j1.core.navigator.updateSidebar');\n var json_message;\n\n// json_message = JSON.stringify(user_data, undefined, 2); // multiline\n json_message = JSON.stringify(user_data);\n logText = 'user state data: ' + json_message;\n logger.debug(logText);\n\n // Replace Macro placeholders to values\n j1.resolveMacros(user_data);\n // Replace Macro values only\n j1.updateMacros(user_data);\n\n return true;\n\n }, // END updateSidebar\n\n }; // end return (object)\n}( jQuery );\n","/*\n # -----------------------------------------------------------------------------\n # ~200_template_js/js/asciidoctor/asciidoctor.js\n # Provides JS functions to (dynamically) modify Asciidoctor HTML elements\n #\n # Product/Info:\n # http://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n # NOTE:\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-redeclare: \"off\" */\n/* global window */\n\n// TODO:\n\n// -----------------------------------------------------------------------------\n// J1 Asciidoctor registered as \"asciidoctor\"\n// -----------------------------------------------------------------------------\n/*!\n * J1 Asciidoctor\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = function asciidoctor (options) {\n\n return {\n\n // -------------------------------------------------------------------------\n // module initializer\n // -------------------------------------------------------------------------\n init: function (options) {\n\n var moduleOptions = options;\n var logger = log4javascript.getLogger('j1.core.asciidoctor');\n\n var moduleDefaults = {\n dummyOption: false, // placeholder\n };\n var options = $.extend(moduleDefaults,moduleOptions);\n\n logText = 'J1 Asciidoctor is being initialized';\n logger.info(logText);\n\n this.callouts();\n\n }, // end initializer\n\n // -------------------------------------------------------------------------\n // manage callouts (HTML)\n // -------------------------------------------------------------------------\n // see: https://stackoverflow.com/questions/19393493/add-colgroup-for-each-table-column\n callouts: function( options ) {\n var colgroupList = '';\n\n // If the colist does not have a <colgroup> structure\n //\n \tif($('.colist > table > colgroup').length == 0) {\n colgroupList += '<!-- [INFO ] [j1.core.asciidoctor ] [ place a colgroup dynamically ] -->' + '\\n';\n colgroupList += '<colgroup> <col style=\"width: 5%;\"> <col style=\"width: 95%;\"> </colgroup>';\n \t\t$(\".colist > table\").prepend(colgroupList);\n }\n\n }, // end callouts\n\n // -------------------------------------------------------------------------\n // manage callouts (HTML)\n // -------------------------------------------------------------------------\n conums: function( options ) {\n var dependencies_met_page_finished = setInterval(function() {\n if (j1.getState() == 'finished') {\n // If the colist does not have a <colgroup> structure\n \tif($('.colist > table > colgroup').length == 0) {\n\n \t\tvar colgroupList = '';\n colgroupList += '<colgroup> <col style=\"width: 5%;\"> <col style=\"width: 95%;\"> </colgroup>';\n\n \t\t$(\".colist > table\").prepend(colgroupList);\n clearInterval(dependencies_met_page_finished);\n \t}\n }\n });\n }, // end conums\n\n }; // END return\n}( jQuery );\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/scroll-smooth/scroll-smooth.js\n # Provides Javascript functions for smooth scrolling\n #\n # Product/Info:\n # http://jekyll.one\n #\n # Copyright (C) 2020 Juergen Adams\n #\n # J1 Template is licensed under the MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n'use strict';\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-redeclare: \"off\" */\n/* eslint indent: \"off\" */\n// -----------------------------------------------------------------------------\n\n// -----------------------------------------------------------------------------\n// scrollSmooth core registered as \"scrollSmooth\"\n// -----------------------------------------------------------------------------\nmodule.exports = function scrollSmooth ( options ) {\n\n // Default settings\n var settings = $.extend({\n foo: 'foo_option',\n bar: 'bar_option'\n }, options );\n\n // -----------------------------------------------------------------------\n // Helper functions\n // -----------------------------------------------------------------------\n function stripHash (url) {\n return url.slice(0, url.lastIndexOf('#'));\n }\n\n function isCssSmoothScrollSupported () {\n return 'scrollBehavior' in document.documentElement.style;\n }\n\n return {\n // -------------------------------------------------------------------------\n // Initialize scrollSmooth\n // -------------------------------------------------------------------------\n scroll: function ( target, options ) {\n\n var logger;\n var logText;\n\n logger = log4javascript.getLogger('j1.core.scrollSmooth');\n\n // indicator|check currently NOT used\n // if (isCssSmoothScrollSupported()) { }\n\n logText = 'run module scrollSmooth';\n logger.info(logText);\n\n var duration = options.duration;\n var offset = options.offset;\n\n // var pageUrl = options.location.hash\n // ? stripHash(options.location.href)\n // : options.location.href;\n\n this.scrollTo(target, {\n duration: duration,\n offset: offset,\n callback: null\n });\n\n logText = 'scrollSmooth finished';\n logger.info(logText);\n },\n\n // -------------------------------------------------------------------------\n // scrollTo\n // -------------------------------------------------------------------------\n scrollTo: function ( target, options ) {\n var start = window.pageYOffset;\n var opt = {\n duration: options.duration,\n offset: options.offset || 0,\n callback: options.callback,\n easing: options.easing || easeInOutQuad\n };\n\n // This makes ids that start with a number work: ('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n // DecodeURI for nonASCII hashes, they was encoded, but id was not encoded, it lead to not finding the tgt element by id.\n // And this is for IE: document.body.scrollTop\n var tgt = document.querySelector('[id=\"' + decodeURI(target).split('#').join('') + '\"]');\n var distance = typeof target === 'string'\n ? opt.offset + (\n target\n ? (tgt && tgt.getBoundingClientRect().top) || 0 // handle non-existent links better.\n : -(document.documentElement.scrollTop || document.body.scrollTop))\n : target;\n var duration = typeof opt.duration === 'function'\n ? opt.duration(distance)\n : opt.duration;\n var timeStart;\n var timeElapsed;\n\n requestAnimationFrame(function (time) { timeStart = time; loop(time); });\n function loop (time) {\n timeElapsed = time - timeStart;\n\n window.scrollTo(0, opt.easing(timeElapsed, start, distance, duration));\n\n if (timeElapsed < duration) { requestAnimationFrame(loop); } else { end(); }\n }\n\n function end () {\n window.scrollTo(0, start + distance);\n\n // jadams, 2020-07-04: on (some?) mobile devices, the navbar\n // background is NOT switched (always?) correctly on a\n // page RELOAD.\n //\n // Solution: scroll the page one pixel back and forth (trigger)\n // to get the right position for the Toccer and adjust the\n // Navigator to display the (tranparent) navbar correctly based\n // on their onscroll events registered.\n //\n $(window).scrollTop($(window).scrollTop()+1);\n $(window).scrollTop($(window).scrollTop()-1);\n\n if (typeof opt.callback === 'function') { opt.callback(); }\n }\n\n // Robert Penner's easeInOutQuad - http://robertpenner.com/easing/\n function easeInOutQuad (t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n }\n } // END scrollTo\n\n }; // END return\n}( jQuery );\n","/*\n * anime.js v3.2.0\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n'use strict';\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; }\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (getAttribute(el, prop) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width / viewBox[2],\n h: height / viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n switch (path.property) {\n case 'x': return (p.x - svg.x) * svg.w;\n case 'y': return (p.y - svg.y) * svg.h;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\nvar pausedInstances = [];\nvar raf;\n\nvar engine = (function () {\n function play() { \n raf = requestAnimationFrame(step);\n }\n function step(t) {\n var activeInstancesLength = activeInstances.length;\n if (activeInstancesLength) {\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n } else {\n var instanceIndex = activeInstances.indexOf(activeInstance);\n if (instanceIndex > -1) {\n activeInstances.splice(instanceIndex, 1);\n activeInstancesLength = activeInstances.length;\n }\n }\n i++;\n }\n play();\n } else {\n raf = cancelAnimationFrame(raf);\n }\n }\n return play;\n})();\n\nfunction handleVisibilityChange() {\n if (document.hidden) {\n activeInstances.forEach(function (ins) { return ins.pause(); });\n pausedInstances = activeInstances.slice(0);\n anime.running = activeInstances = [];\n } else {\n pausedInstances.forEach(function (ins) { return ins.play(); });\n }\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n if (!raf) { engine(); }\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargets(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.0';\nanime.speed = 1;\nanime.running = activeInstances;\nanime.remove = removeTargets;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nmodule.exports = anime;\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/tocbot/tocbot.js\n # Tocbot v4.12.0 implementation for J1 template\n #\n # Product/Info:\n # https://jekyll.one\n # https://tscanlin.github.io/tocbot\n # https://github.com/tscanlin/tocbot\n #\n # Copyright (C) 2021 Juergen Adams\n # Copyright (C) 2016 Tim Scanlin\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # Tocbot is licensed under the MIT License.\n # For details, https://github.com/tscanlin/tocbot/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n # rules:\n # \"eslint:tocbot\": \"eslint --ignore-path .eslintignore src/tocbot/js\"\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\n/**\n * Tocbot\n * Tocbot creates a toble of contents based on HTML headings on a page,\n * this allows users to easily jump to different sections of the document.\n * Tocbot was inspired by tocify (http://gregfranko.com/jquery.tocify.js/).\n * The main differences are that it works natively without any need for jquery or jquery UI).\n *\n * @author Tim Scanlin\n */\n\n/* globals define */\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory(root))\n } else if (typeof exports === 'object') {\n module.exports = factory(root)\n } else {\n root.tocbot = factory(root)\n }\n})(typeof global !== 'undefined' ? global : this.window || this.global, function (root) {\n 'use strict'\n\n // Default options.\n var defaultOptions = require('./default-options.js')\n // Object to store current options.\n var options = {}\n // Object for public APIs.\n var tocbot = {}\n\n var BuildHtml = require('./build-html.js')\n var ParseContent = require('./parse-content.js')\n var updateTocScroll = require('./update-toc-scroll.js')\n // Keep these variables at top scope once options are passed in.\n var buildHtml\n var parseContent\n\n // Just return if its not a browser.\n var supports = !!root && !!root.document && !!root.document.querySelector && !!root.addEventListener // Feature test\n if (typeof window === 'undefined' && !supports) {\n return\n }\n var headingsArray\n\n // From: https://github.com/Raynos/xtend\n var hasOwnProperty = Object.prototype.hasOwnProperty\n function extend () {\n var target = {}\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n return target\n }\n\n // From: https://remysharp.com/2010/07/21/throttling-function-calls\n function throttle (fn, threshold, scope) {\n threshold || (threshold = 250)\n var last\n var deferTimer\n return function () {\n var context = scope || this\n var now = +new Date()\n var args = arguments\n if (last && now < last + threshold) {\n // hold on to it\n clearTimeout(deferTimer)\n deferTimer = setTimeout(function () {\n last = now\n fn.apply(context, args)\n }, threshold)\n } else {\n last = now\n fn.apply(context, args)\n }\n }\n }\n\n /**\n * Destroy tocbot.\n */\n tocbot.destroy = function () {\n if (!options.skipRendering) {\n // Clear HTML.\n try {\n document.querySelector(options.tocSelector).innerHTML = ''\n } catch (e) {\n console.warn('Element not found: ' + options.tocSelector); // eslint-disable-line\n }\n }\n\n // Remove event listeners.\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).removeEventListener('scroll', this._scrollListener, false)\n document.querySelector(options.scrollContainer).removeEventListener('resize', this._scrollListener, false)\n if (buildHtml) {\n document.querySelector(options.scrollContainer).removeEventListener('click', this._clickListener, false)\n }\n } else {\n document.removeEventListener('scroll', this._scrollListener, false)\n document.removeEventListener('resize', this._scrollListener, false)\n if (buildHtml) {\n document.removeEventListener('click', this._clickListener, false)\n }\n }\n }\n\n /**\n * Initialize tocbot.\n * @param {object} customOptions\n */\n tocbot.init = function (customOptions) {\n // feature test\n if (!supports) {\n return\n }\n\n // Merge defaults with user options.\n // Set to options variable at the top.\n options = extend(defaultOptions, customOptions || {})\n this.options = options\n this.state = {}\n\n // Init smooth scroll if enabled (default).\n if (options.scrollSmooth) {\n options.duration = options.scrollSmoothDuration\n options.offset = options.scrollSmoothOffset\n tocbot.scrollSmooth = require('./scroll-smooth').initSmoothScrolling(options)\n }\n\n // Pass options to these modules.\n buildHtml = BuildHtml(options)\n parseContent = ParseContent(options)\n\n // For testing purposes.\n this._buildHtml = buildHtml\n this._parseContent = parseContent\n\n // Destroy it if it exists first.\n tocbot.destroy()\n\n // Get headings array.\n headingsArray = parseContent.selectHeadings(options.contentSelector, options.headingSelector)\n // Return if no headings are found.\n if (headingsArray === null) {\n return\n }\n\n // Build nested headings array.\n var nestedHeadingsObj = parseContent.nestHeadingsArray(headingsArray)\n var nestedHeadings = nestedHeadingsObj.nest\n\n // Render.\n if (!options.skipRendering) {\n buildHtml.render(options.tocSelector, nestedHeadings)\n }\n\n // Update Sidebar and bind listeners.\n this._scrollListener = throttle(function (e) {\n buildHtml.updateToc(headingsArray)\n !options.disableTocScrollSync && updateTocScroll(options)\n var isTop = e && e.target && e.target.scrollingElement && e.target.scrollingElement.scrollTop === 0\n if ((e && (e.eventPhase === 0 || e.currentTarget === null)) || isTop) {\n buildHtml.updateToc(headingsArray)\n if (options.scrollEndCallback) {\n options.scrollEndCallback(e)\n }\n }\n }, options.throttleTimeout)\n this._scrollListener()\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).addEventListener('scroll', this._scrollListener, false)\n document.querySelector(options.scrollContainer).addEventListener('resize', this._scrollListener, false)\n } else {\n document.addEventListener('scroll', this._scrollListener, false)\n document.addEventListener('resize', this._scrollListener, false)\n }\n\n // Bind click listeners to disable animation.\n var timeout = null\n this._clickListener = throttle(function (event) {\n if (options.scrollSmooth) {\n buildHtml.disableTocAnimation(event)\n }\n buildHtml.updateToc(headingsArray)\n // Timeout to re-enable the animation.\n timeout && clearTimeout(timeout)\n timeout = setTimeout(function () {\n buildHtml.enableTocAnimation()\n }, options.scrollSmoothDuration)\n }, options.throttleTimeout)\n\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).addEventListener('click', this._clickListener, false)\n } else {\n document.addEventListener('click', this._clickListener, false)\n }\n\n return this\n }\n\n /**\n * Refresh tocbot.\n */\n tocbot.refresh = function (customOptions) {\n tocbot.destroy()\n tocbot.init(customOptions || this.options)\n }\n\n // Make tocbot available globally.\n root.tocbot = tocbot\n\n return tocbot\n})\n","// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = {\n // Where to render the table of contents.\n tocSelector: '.js-toc',\n // Where to grab the headings to build the table of contents.\n contentSelector: '.js-toc-content',\n // Which headings to grab inside of the contentSelector element.\n headingSelector: 'h1, h2, h3',\n // Headings that match the ignoreSelector will be skipped.\n ignoreSelector: '.js-toc-ignore',\n // For headings inside relative or absolute positioned containers within content\n hasInnerContainers: false,\n // Main class to add to links.\n linkClass: 'toc-link',\n // Extra classes to add to links.\n extraLinkClasses: '',\n // Class to add to active links,\n // the link corresponding to the top most heading on the page.\n activeLinkClass: 'is-active-link',\n // Main class to add to lists.\n listClass: 'toc-list',\n // Extra classes to add to lists.\n extraListClasses: '',\n // Class that gets added when a list should be collapsed.\n isCollapsedClass: 'is-collapsed',\n // Class that gets added when a list should be able\n // to be collapsed but isn't necessarily collapsed.\n collapsibleClass: 'is-collapsible',\n // Class to add to list items.\n listItemClass: 'toc-list-item',\n // Class to add to active list items.\n activeListItemClass: 'is-active-li',\n // How many heading levels should not be collapsed.\n // For example, number 6 will show everything since\n // there are only 6 heading levels and number 0 will collapse them all.\n // The sections that are hidden will open\n // and close as you scroll to headings within them.\n collapseDepth: 0,\n // Smooth scrolling enabled.\n scrollSmooth: true,\n // Smooth scroll duration.\n scrollSmoothDuration: 420,\n // Smooth scroll offset.\n scrollSmoothOffset: 0,\n // Callback for scroll end.\n scrollEndCallback: function (e) {},\n // Headings offset between the headings and the top of the document (this is meant for minor adjustments).\n headingsOffset: 1,\n // Timeout between events firing to make sure it's\n // not too rapid (for performance reasons).\n throttleTimeout: 50,\n // Element to add the positionFixedClass to.\n positionFixedSelector: null,\n // Fixed position class to add to make sidebar fixed after scrolling\n // down past the fixedSidebarOffset.\n positionFixedClass: 'is-position-fixed',\n // fixedSidebarOffset can be any number but by default is set\n // to auto which sets the fixedSidebarOffset to the sidebar\n // element's offsetTop from the top of the document on init.\n fixedSidebarOffset: 'auto',\n // includeHtml can be set to true to include the HTML markup from the\n // heading node instead of just including the textContent.\n includeHtml: false,\n // onclick function to apply to all links in toc. will be called with\n // the event as the first parameter, and this can be used to stop,\n // propagation, prevent default or perform action\n onClick: function (e) {},\n // orderedList can be set to false to generate unordered lists (ul)\n // instead of ordered lists (ol)\n orderedList: true,\n // If there is a fixed article scroll container, set to calculate titles' offset\n scrollContainer: null,\n // prevent ToC DOM rendering if it's already rendered by an external system\n skipRendering: false,\n // Optional callback to change heading labels.\n // For example it can be used to cut down and put ellipses on multiline headings you deem too long.\n // Called each time a heading is parsed. Expects a string in return, the modified label to display.\n // function (string) => string\n headingLabelCallback: false,\n // ignore headings that are hidden in DOM\n ignoreHiddenElements: false,\n // Optional callback to modify properties of parsed headings.\n // The heading element is passed in node parameter and information parsed by default parser is provided in obj parameter.\n // Function has to return the same or modified obj.\n // The heading will be excluded from TOC if nothing is returned.\n // function (object, HTMLElement) => object | void\n headingObjectCallback: null,\n // Set the base path, useful if you use a `base` tag in `head`.\n basePath: '',\n // Only takes affect when `tocSelector` is scrolling,\n // keep the toc scroll position in sync with the content.\n disableTocScrollSync: false,\n};\n","/**\n * This file is responsible for building the DOM and updating DOM state.\n *\n * @author Tim Scanlin\n */\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = function (options) {\n var forEach = [].forEach\n var some = [].some\n var body = document.body\n var currentlyHighlighting = true\n var SPACE_CHAR = ' '\n\n /**\n * Create link and list elements.\n * @param {Object} d\n * @param {HTMLElement} container\n * @return {HTMLElement}\n */\n function createEl (d, container) {\n var link = container.appendChild(createLink(d))\n if (d.children.length) {\n var list = createList(d.isCollapsed)\n d.children.forEach(function (child) {\n createEl(child, list)\n })\n link.appendChild(list)\n }\n }\n\n /**\n * Render nested heading array data into a given selector.\n * @param {String} selector\n * @param {Array} data\n * @return {HTMLElement}\n */\n function render (selector, data) {\n var collapsed = false\n var container = createList(collapsed)\n\n data.forEach(function (d) {\n createEl(d, container)\n })\n\n var parent = document.querySelector(selector)\n\n // Return if no parent is found.\n if (parent === null) {\n return\n }\n\n // Remove existing child if it exists.\n if (parent.firstChild) {\n parent.removeChild(parent.firstChild)\n }\n\n // Just return the parent and don't append the list if no links are found.\n if (data.length === 0) {\n return parent\n }\n\n // Append the Elements that have been created\n return parent.appendChild(container)\n }\n\n /**\n * Create link element.\n * @param {Object} data\n * @return {HTMLElement}\n */\n function createLink (data) {\n var item = document.createElement('li')\n var a = document.createElement('a')\n if (options.listItemClass) {\n item.setAttribute('class', options.listItemClass)\n }\n\n if (options.onClick) {\n a.onclick = options.onClick\n }\n\n if (options.includeHtml && data.childNodes.length) {\n forEach.call(data.childNodes, function (node) {\n a.appendChild(node.cloneNode(true))\n })\n } else {\n // Default behavior.\n a.textContent = data.textContent\n }\n a.setAttribute('href', options.basePath + '#' + data.id)\n a.setAttribute('class', options.linkClass +\n SPACE_CHAR + 'node-name--' + data.nodeName +\n SPACE_CHAR + options.extraLinkClasses)\n item.appendChild(a)\n return item\n }\n\n /**\n * Create list element.\n * @param {Boolean} isCollapsed\n * @return {HTMLElement}\n */\n function createList (isCollapsed) {\n var listElement = (options.orderedList) ? 'ol' : 'ul'\n var list = document.createElement(listElement)\n var classes = options.listClass +\n SPACE_CHAR + options.extraListClasses\n if (isCollapsed) {\n classes += SPACE_CHAR + options.collapsibleClass\n classes += SPACE_CHAR + options.isCollapsedClass\n }\n list.setAttribute('class', classes)\n return list\n }\n\n /**\n * Update fixed sidebar class.\n * @return {HTMLElement}\n */\n function updateFixedSidebarClass () {\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n var top\n top = document.querySelector(options.scrollContainer).scrollTop\n } else {\n top = document.documentElement.scrollTop || body.scrollTop\n }\n var posFixedEl = document.querySelector(options.positionFixedSelector)\n\n if (options.fixedSidebarOffset === 'auto') {\n options.fixedSidebarOffset = document.querySelector(options.tocSelector).offsetTop\n }\n\n if (top > options.fixedSidebarOffset) {\n if (posFixedEl.className.indexOf(options.positionFixedClass) === -1) {\n posFixedEl.className += SPACE_CHAR + options.positionFixedClass\n }\n } else {\n posFixedEl.className = posFixedEl.className.split(SPACE_CHAR + options.positionFixedClass).join('')\n }\n }\n\n /**\n * Get top position of heading\n * @param {HTMLElement}\n * @return {integer} position\n */\n function getHeadingTopPos (obj) {\n var position = 0\n if (obj !== document.querySelector(options.contentSelector && obj != null)) {\n position = obj.offsetTop\n if (options.hasInnerContainers) { position += getHeadingTopPos(obj.offsetParent) }\n }\n return position\n }\n\n /**\n * Update TOC highlighting and collapsed groups\n */\n function updateToc (headingsArray) {\n // If a fixed content container was set\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n var top\n top = document.querySelector(options.scrollContainer).scrollTop\n } else {\n top = document.documentElement.scrollTop || body.scrollTop\n }\n\n // Add fixed class at offset\n if (options.positionFixedSelector) {\n updateFixedSidebarClass()\n }\n\n // Get the most TOP heading currently visible on the page to\n // identify what element to be highlighted\n var headings = headingsArray;\n var topHeader;\n var headingTopPos;\n\n // Using some instead of each so that we can escape early\n if (currentlyHighlighting &&\n document.querySelector(options.tocSelector) !== null &&\n headings.length > 0) {\n some.call(headings, function (heading, i) {\n headingTopPos = getHeadingTopPos(heading)\n if (headingTopPos > top + options.headingsOffset + 10) {\n // Don't allow negative index value\n // var index = (i === 0) ? i : i - 1;\n // topHeader = headings[index];\n // jadams, index correction seems NOT needed\n topHeader = headings[i];\n return true\n } else if (i === headings.length - 1) {\n // This allows scrolling for the last heading on the page\n topHeader = headings[headings.length - 1]\n return true\n }\n })\n\n // Remove the active class from the other tocLinks.\n var tocLinks = document.querySelector(options.tocSelector)\n .querySelectorAll('.' + options.linkClass)\n forEach.call(tocLinks, function (tocLink) {\n tocLink.className = tocLink.className.split(SPACE_CHAR + options.activeLinkClass).join('')\n })\n var tocLis = document.querySelector(options.tocSelector)\n .querySelectorAll('.' + options.listItemClass)\n forEach.call(tocLis, function (tocLi) {\n tocLi.className = tocLi.className.split(SPACE_CHAR + options.activeListItemClass).join('')\n })\n\n // Add the active class to the active tocLink.\n var activeTocLink = document.querySelector(options.tocSelector)\n .querySelector('.' + options.linkClass +\n '.node-name--' + topHeader.nodeName +\n '[href=\"' + options.basePath + '#' + topHeader.id.replace(/([ #;&,.+*~':\"!^$[\\]()=>|/@])/g, '\\\\$1') + '\"]')\n if (activeTocLink.className.indexOf(options.activeLinkClass) === -1) {\n activeTocLink.className += SPACE_CHAR + options.activeLinkClass\n }\n var li = activeTocLink.parentNode\n if (li && li.className.indexOf(options.activeListItemClass) === -1) {\n li.className += SPACE_CHAR + options.activeListItemClass\n }\n\n var tocLists = document.querySelector(options.tocSelector)\n .querySelectorAll('.' + options.listClass + '.' + options.collapsibleClass)\n\n // Collapse the other collapsible lists.\n forEach.call(tocLists, function (list) {\n if (list.className.indexOf(options.isCollapsedClass) === -1) {\n list.className += SPACE_CHAR + options.isCollapsedClass\n }\n })\n\n // Expand the active link's collapsible list and its sibling if applicable.\n if (activeTocLink.nextSibling && activeTocLink.nextSibling.className.indexOf(options.isCollapsedClass) !== -1) {\n activeTocLink.nextSibling.className = activeTocLink.nextSibling.className.split(SPACE_CHAR + options.isCollapsedClass).join('')\n }\n removeCollapsedFromParents(activeTocLink.parentNode.parentNode)\n }\n }\n\n /**\n * Remove collpased class from parent elements.\n * @param {HTMLElement} element\n * @return {HTMLElement}\n */\n function removeCollapsedFromParents (element) {\n if (element.className.indexOf(options.collapsibleClass) !== -1 && element.className.indexOf(options.isCollapsedClass) !== -1) {\n element.className = element.className.split(SPACE_CHAR + options.isCollapsedClass).join('')\n return removeCollapsedFromParents(element.parentNode.parentNode)\n }\n return element\n }\n\n /**\n * Disable TOC Animation when a link is clicked.\n * @param {Event} event\n */\n function disableTocAnimation (event) {\n var target = event.target || event.srcElement\n if (typeof target.className !== 'string' || target.className.indexOf(options.linkClass) === -1) {\n return\n }\n // Bind to tocLink clicks to temporarily disable highlighting\n // while smoothScroll is animating.\n currentlyHighlighting = false\n }\n\n /**\n * Enable TOC Animation.\n */\n function enableTocAnimation () {\n currentlyHighlighting = true\n }\n\n return {\n enableTocAnimation: enableTocAnimation,\n disableTocAnimation: disableTocAnimation,\n render: render,\n updateToc: updateToc\n }\n}\n","/**\n * This file is responsible for parsing the content from the DOM and making\n * sure data is nested properly.\n *\n * @author Tim Scanlin\n */\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = function parseContent (options) {\n var reduce = [].reduce\n\n /**\n * Get the last item in an array and return a reference to it.\n * @param {Array} array\n * @return {Object}\n */\n function getLastItem (array) {\n return array[array.length - 1]\n }\n\n /**\n * Get heading level for a heading dom node.\n * @param {HTMLElement} heading\n * @return {Number}\n */\n function getHeadingLevel (heading) {\n return +heading.nodeName.split('H').join('')\n }\n\n /**\n * Get important properties from a heading element and store in a plain object.\n * @param {HTMLElement} heading\n * @return {Object}\n */\n function getHeadingObject (heading) {\n // each node is processed twice by this method because nestHeadingsArray() and addNode() calls it\n // first time heading is real DOM node element, second time it is obj\n // that is causing problem so I am processing only original DOM node\n if (!(heading instanceof window.HTMLElement)) return heading\n\n if (options.ignoreHiddenElements && (!heading.offsetHeight || !heading.offsetParent)) {\n return null\n }\n\n var obj = {\n id: heading.id,\n children: [],\n nodeName: heading.nodeName,\n headingLevel: getHeadingLevel(heading),\n textContent: options.headingLabelCallback ? String(options.headingLabelCallback(heading.textContent)) : heading.textContent.trim()\n }\n\n if (options.includeHtml) {\n obj.childNodes = heading.childNodes\n }\n\n if (options.headingObjectCallback) {\n return options.headingObjectCallback(obj, heading)\n }\n\n return obj\n }\n\n /**\n * Add a node to the nested array.\n * @param {Object} node\n * @param {Array} nest\n * @return {Array}\n */\n function addNode (node, nest) {\n var obj = getHeadingObject(node)\n var level = obj.headingLevel\n var array = nest\n var lastItem = getLastItem(array)\n var lastItemLevel = lastItem\n ? lastItem.headingLevel\n : 0\n var counter = level - lastItemLevel\n\n while (counter > 0) {\n lastItem = getLastItem(array)\n if (lastItem && lastItem.children !== undefined) {\n array = lastItem.children\n }\n counter--\n }\n\n if (level >= options.collapseDepth) {\n obj.isCollapsed = true\n }\n\n array.push(obj)\n return array\n }\n\n /**\n * Select headings in content area, exclude any selector in options.ignoreSelector\n * @param {String} contentSelector\n * @param {Array} headingSelector\n * @return {Array}\n */\n function selectHeadings (contentSelector, headingSelector) {\n var selectors = headingSelector\n if (options.ignoreSelector) {\n selectors = headingSelector.split(',')\n .map(function mapSelectors (selector) {\n return selector.trim() + ':not(' + options.ignoreSelector + ')'\n })\n }\n try {\n return document.querySelector(contentSelector)\n .querySelectorAll(selectors)\n } catch (e) {\n console.warn('Element not found: ' + contentSelector); // eslint-disable-line\n return null\n }\n }\n\n /**\n * Nest headings array into nested arrays with 'children' property.\n * @param {Array} headingsArray\n * @return {Object}\n */\n function nestHeadingsArray (headingsArray) {\n return reduce.call(headingsArray, function reducer (prev, curr) {\n var currentHeading = getHeadingObject(curr)\n if (currentHeading) {\n addNode(currentHeading, prev.nest)\n }\n return prev\n }, {\n nest: []\n })\n }\n\n return {\n nestHeadingsArray: nestHeadingsArray,\n selectHeadings: selectHeadings\n }\n}\n","// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = function updateTocScroll(options) {\n var toc = document.querySelector(options.tocSelector);\n if (toc && toc.scrollHeight > toc.clientHeight) {\n var activeItem = toc.querySelector('.' + options.activeListItemClass);\n if (activeItem) {\n toc.scrollTop = activeItem.offsetTop;\n }\n }\n}\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/tocbot/scroll-smooth/index.js\n # Scroll-Smooth (Tocbot v4.12.0) implementation for J1 template\n #\n # Product/Info:\n # https://jekyll.one\n # https://tscanlin.github.io/tocbot\n # https://github.com/tscanlin/tocbot\n #\n # Copyright (C) 2021 Juergen Adams\n # Copyright (C) 2016 Tim Scanlin\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # Tocbot is licensed under the MIT License.\n # For details, https://github.com/tscanlin/tocbot/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint no-redeclare: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-empty: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n/* globals location, requestAnimationFrame */\n\nexports.initSmoothScrolling = initSmoothScrolling\n\nfunction initSmoothScrolling (options) {\n if (isCssSmoothSCrollSupported()) { }\n\n var duration = options.duration\n var offset = options.offset\n\n var pageUrl = location.hash\n ? stripHash(location.href)\n : location.href\n\n delegatedLinkHijacking()\n\n function delegatedLinkHijacking () {\n document.body.addEventListener('click', onClick, false)\n\n function onClick (e) {\n if (\n !isInPageLink(e.target) ||\n e.target.className.indexOf('no-smooth-scroll') > -1 ||\n (e.target.href.charAt(e.target.href.length - 2) === '#' &&\n e.target.href.charAt(e.target.href.length - 1) === '!') ||\n e.target.className.indexOf(options.linkClass) === -1) {\n return\n }\n\n // Don't prevent default or hash doesn't change.\n // e.preventDefault()\n\n jump(e.target.hash, {\n duration: duration,\n offset: offset,\n callback: function () {\n setFocus(e.target.hash)\n }\n })\n }\n }\n\n function isInPageLink (n) {\n return n.tagName.toLowerCase() === 'a' &&\n (n.hash.length > 0 || n.href.charAt(n.href.length - 1) === '#') &&\n (stripHash(n.href) === pageUrl || stripHash(n.href) + '#' === pageUrl)\n }\n\n function stripHash (url) {\n return url.slice(0, url.lastIndexOf('#'))\n }\n\n function isCssSmoothSCrollSupported () {\n return 'scrollBehavior' in document.documentElement.style\n }\n\n // Adapted from:\n // https://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/\n function setFocus (hash) {\n var element = document.getElementById(hash.substring(1))\n\n if (element) {\n if (!/^(?:a|select|input|button|textarea)$/i.test(element.tagName)) {\n element.tabIndex = -1\n }\n\n element.focus()\n }\n }\n}\n\nfunction jump (target, options) {\n var start = window.pageYOffset\n var opt = {\n duration: options.duration,\n offset: options.offset || 0,\n callback: options.callback,\n easing: options.easing || easeInOutQuad\n }\n // This makes ids that start with a number work: ('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n // DecodeURI for nonASCII hashes, they was encoded, but id was not encoded, it lead to not finding the tgt element by id.\n // And this is for IE: document.body.scrollTop\n var tgt = document.querySelector('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n var distance = typeof target === 'string'\n ? opt.offset + (\n target\n ? (tgt && tgt.getBoundingClientRect().top) || 0 // handle non-existent links better.\n : -(document.documentElement.scrollTop || document.body.scrollTop))\n : target\n var duration = typeof opt.duration === 'function'\n ? opt.duration(distance)\n : opt.duration\n var timeStart\n var timeElapsed\n\n requestAnimationFrame(function (time) { timeStart = time; loop(time) })\n function loop (time) {\n timeElapsed = time - timeStart\n\n window.scrollTo(0, opt.easing(timeElapsed, start, distance, duration))\n\n if (timeElapsed < duration) { requestAnimationFrame(loop) } else { end() }\n }\n\n function end () {\n window.scrollTo(0, start + distance)\n\n if (typeof opt.callback === 'function') { opt.callback() }\n }\n\n // Robert Penner's easeInOutQuad - http://robertpenner.com/easing/\n function easeInOutQuad (t, b, c, d) {\n t /= d / 2\n if (t < 1) return c / 2 * t * t + b\n t--\n return -c / 2 * (t * (t - 2) - 1) + b\n }\n}\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/adoc_result_viewer/view_results.js\n # Provides JavaScript functions displaying results for Asciidoctor\n # example block\n #\n # Product/Info:\n # https://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n # TODO: Improve lanuage settings\n # TODO: Improve auto-hide functionality for the results block\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* global $ */\n// -----------------------------------------------------------------------------\n\nvar timeoutHandle;\n// var language = 'de';\nvar language = document.documentElement.lang;\n\nfunction toggle_result_block(result_block) {\n window.clearTimeout(timeoutHandle); // Clear the timeout object\n result_block.prev().toggleClass('stacked');\n result_block.toggle();\n\n // jadams: Improve auto-hide functionality for the results block\n //\n // timeoutHandle = window.setTimeout(function () {\n // result_block.hide();\n // }, 5000);\n}\n\nfunction insert_result_links() {\n $('.result').each(function(idx, node) {\n var view_result_link;\n var result_block = $(node);\n var title_div = result_block.prev().find('.title');\n\n if (language == 'en') {\n view_result_link = $('<div class=\"view-result j1-viewer\"><span class=\"btn-viewer j1-tooltip\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"toggle results\" data-original-title=\"toggle results\">View</span></div>');\n } else if (language == 'de') {\n view_result_link = $('<div class=\"view-result j1-viewer\"><span class=\"btn-viewer j1-tooltip\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"Anzeige umschalten\" data-original-title=\"toggle results\">Anzeige</span></div>');\n } else {\n view_result_link = $('<div class=\"view-result j1-viewer\"><span class=\"btn-viewer j1-tooltip\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"toggle results\" data-original-title=\"toggle results\">View</span></div>');\n }\n\n title_div.append(view_result_link);\n view_result_link.on('click', function(event) {\n event.preventDefault();\n toggle_result_block(result_block);\n });\n });\n}\n\n$(insert_result_links);\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///(webpack)/buildin/global.js","webpack:///./js/deepl-translator/src/languages.js","webpack:///./template.js","webpack:///./node_modules/js-cookie/src/js.cookie.js","webpack:///./node_modules/log4javascript/log4javascript.js","webpack:///./node_modules/lite-url/dist/lite-url.min.js","webpack:///./node_modules/platform/platform.js","webpack:///(webpack)/buildin/module.js","webpack:///./js/adapter/adapter.js","webpack:///./js/anime/anime.js","webpack:///./js/core/core.js","webpack:///./js/navigator/navigator.js","webpack:///./js/asciidoctor/asciidoctor.js","webpack:///./js/scroll-smooth/scroll-smooth.js","webpack:///./js/deepl-translator/index.js","webpack:///./js/deepl-translator/src/deepl-translator.js","webpack:///./js/deepl-translator/src/validators.js","webpack:///./js/deepl-translator/src/deepl-api-helper.js","webpack:///D:/j1/github/j1-template-2021.2.3/node_modules/buffer/index.js","webpack:///D:/j1/github/j1-template-2021.2.3/node_modules/base64-js/index.js","webpack:///D:/j1/github/j1-template-2021.2.3/node_modules/ieee754/index.js","webpack:///D:/j1/github/j1-template-2021.2.3/node_modules/isarray/index.js","webpack:///./js/deepl-translator/shims/client-request-helper.js","webpack:///D:/j1/github/j1-template-2021.2.3/node_modules/os-browserify/browser.js","webpack:///./js/tocbot/tocbot.js","webpack:///./js/tocbot/default-options.js","webpack:///./js/tocbot/build-html.js","webpack:///./js/tocbot/parse-content.js","webpack:///./js/tocbot/update-toc-scroll.js","webpack:///./js/tocbot/scroll-smooth/index.js","webpack:///./js/adoc_result_viewer/view_results.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","g","this","Function","e","window","EN","DE","FR","ES","IT","NL","PL","Cookies","require","log4javascript","liteURL","platform","j1","adapter","anime","core","navigator","asciidoctor","scrollSmooth","deeplTranslator","factory","OldCookies","api","noConflict","extend","result","arguments","length","attributes","decode","replace","decodeURIComponent","init","converter","set","document","path","defaults","expires","Date","toUTCString","JSON","stringify","test","write","encodeURIComponent","String","escape","stringifiedAttributes","attributeName","split","cookie","json","jar","cookies","parts","slice","join","charAt","read","parse","getJSON","remove","withConverter","isUndefined","obj","EventSupport","Array","push","len","shift","firstItem","splice","startIndex","deleteCount","itemsAfterDeleted","itemsDeleted","argumentsArray","itemsToAppend","concat","eventTypes","eventListeners","setEventTypes","eventTypesParam","handleError","addEventListener","eventType","listener","array_contains","removeEventListener","array_remove","dispatchEvent","eventArgs","listeners","applicationStartDate","uniqueId","getTime","Math","floor","random","emptyFunction","newLine","pageLoaded","Log4JavaScript","toStr","toString","getExceptionMessage","ex","message","description","getUrlFileName","url","lastSlashIndex","max","lastIndexOf","substr","getExceptionStringRep","exStr","lineNumber","fileName","localEx","logLog","warn","showStackTraces","stack","bool","Boolean","trim","str","splitIntoLines","text","version","edition","urlEncode","arr","val","index","extractBooleanFromParam","param","defaultValue","extractStringFromParam","extractIntFromParam","parseInt","isNaN","extractFunctionFromParam","isError","err","Error","apply","args","methodName","argsStrings","script","returnValue","eval","quietMode","debugMessages","setQuietMode","numberOfErrors","alertAllErrors","setAlertAllErrors","debug","displayDebug","alert","exception","error","alertMessage","enabled","log4javascript_disabled","setEnabled","enable","isEnabled","useTimeStampsInMilliseconds","setTimeStampsInMilliseconds","timeStampsInMilliseconds","isTimeStampsInMilliseconds","evalInScope","expr","setShowStackTraces","show","Level","level","Timer","INFO","start","equals","isGreaterOrEqual","ALL","Number","MIN_VALUE","TRACE","DEBUG","WARN","ERROR","FATAL","OFF","MAX_VALUE","getElapsedTime","anonymousLoggerName","defaultLoggerName","nullLoggerName","rootLoggerName","Logger","parent","children","appenders","loggerLevel","isRoot","isNull","appenderCache","appenderCacheInvalidated","addChild","childLogger","invalidateAppenderCache","additive","getAdditivity","setAdditivity","additivity","valueChanged","addAppender","appender","Appender","setAddedToLogger","removeAppender","setRemovedFromLogger","removeAllAppenders","appenderCount","getEffectiveAppenders","parentEffectiveAppenders","log","params","getEffectiveLevel","finalParamIndex","lastParam","messages","loggingEvent","LoggingEvent","callAppenders","effectiveAppenders","doAppend","setLevel","getLevel","logger","group","initiallyExpanded","groupEnd","timers","time","timeEnd","timer","milliseconds","assert","trace","info","fatal","isEnabledFor","isTraceEnabled","isDebugEnabled","isInfoEnabled","isWarnEnabled","isErrorEnabled","isFatalEnabled","isEntryPoint","loggers","loggerNames","ROOT_LOGGER_DEFAULT_LEVEL","rootLogger","getRootLogger","getLogger","loggerName","parentLogger","lastDotIndex","parentLoggerName","substring","defaultLogger","getDefaultLogger","createDefaultLogger","nullLogger","getNullLogger","resetConfiguration","timeStamp","timeStampInMilliseconds","timeStampInSeconds","getMilliseconds","getThrowableStrRep","getCombinedMessages","Layout","loggerKey","timeStampKey","millisecondsKey","levelKey","messageKey","exceptionKey","urlKey","batchHeader","batchFooter","batchSeparator","returnsPostData","overrideTimeStampsSetting","format","ignoresThrowable","getContentType","allowBatching","getTimeStampValue","getDataValues","combineMessages","dataValues","location","href","hasCustomFields","customFields","setKeys","setCustomField","fieldUpdated","formatWithException","formatted","SimpleDateFormat","SimpleLayout","NullLayout","XmlLayout","escapeNewLines","JsonLayout","readable","colon","tab","lineBreak","HttpPostDataLayout","formatObjectExpansion","depth","indentation","objectsExpanded","doFormat","childDepth","childIndentation","childLines","expansion","childExpansion","formatString","lines","j","jLen","PatternLayout","pattern","DEFAULT_CONVERSION_PATTERN","AlertAppender","BrowserConsoleAppender","layout","threshold","append","setLayout","getLayout","setThreshold","getThreshold","isCombinedMessages","escapeCdata","formatMessage","isReadable","formatValue","prefix","expand","formattedValue","valType","childPrefix","queryBits","regex","monthNames","dayNames","types","G","y","M","w","W","D","F","E","a","H","k","K","h","S","Z","newDateAtMidnight","year","month","day","setMilliseconds","getDifference","date","isBefore","getUTCTime","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getTimeSince","getPreviousSunday","midday","previousSunday","getDay","getWeekInYear","minimalDaysInFirstWeek","startOfYear","weekInYear","getWeekInMonth","startOfMonth","weekInMonth","getDayInYear","setMinimalDaysInFirstWeek","days","getMinimalDaysInFirstWeek","padWithZeroes","formatText","data","numberOfLetters","minLength","formatNumber","formattedString","searchString","exec","quotedString","patternLetters","otherLetters","otherCharacters","patternLetter","rawData","getTimezoneOffset","absData","abs","hours","minutes","TTCC_CONVERSION_PATTERN","ISO8601_DATEFORMAT","DATETIME_DATEFORMAT","ABSOLUTETIME_DATEFORMAT","matchedString","padding","truncation","conversionCharacter","specifier","replacement","precision","loggerNameBits","dateFormat","fieldIndex","strLen","consoleMethodName","getFormattedMessage","concatenate","formattedMessage","console","opera","postError","xhrFactory","XMLHttpRequest","xmlHttpFactories","ActiveXObject","withCredentialsSupported","getXmlHttp","errorHandler","xmlHttp","ConsoleAppender","isHttpRequestSuccessful","status","AjaxAppender","withCredentials","isSupported","timed","waitForResponse","batchSize","timerInterval","requestSuccessCallback","failCallback","postVarName","sendAllOnUnload","contentType","sessionId","queuedLoggingEvents","queuedRequests","headers","sending","initialized","checkCanConfigure","configOptionName","sendAll","currentRequestBatch","sendRequest","preparePostData","scheduleSending","sendAllRemaining","sendingAnything","currentLoggingEvent","actualBatchSize","batchedLoggingEvents","formattedMessages","postData","setTimeout","xmlHttpErrorHandler","msg","successCallback","onreadystatechange","readyState","open","header","setRequestHeader","headerEx","send","errMsg","getSessionId","setSessionId","sessionIdParam","layoutParam","isTimed","setTimed","timedParam","getTimerInterval","setTimerInterval","timerIntervalParam","isWaitForResponse","setWaitForResponse","waitForResponseParam","getBatchSize","setBatchSize","batchSizeParam","isSendAllOnUnload","setSendAllOnUnload","sendAllOnUnloadParam","setRequestSuccessCallback","requestSuccessCallbackParam","setFailCallback","failCallbackParam","getPostVarName","setPostVarName","postVarNameParam","getHeaders","addHeader","toLowerCase","oldBeforeUnload","onbeforeunload","setCookie","setTime","toGMTString","getCookie","nameEquals","ca","indexOf","unescape","getBaseUrl","scripts","getElementsByTagName","src","lastSlash","isLoaded","win","loaded","padWithSpaces","spaces","numberOfSpaces","PopUpAppender","defaultCommandLineFunctions","consoleAppenderIdCounter","lazyInit","initiallyMinimized","useDocumentWrite","width","height","focusPopUp","InPageAppender","container","inPage","focusConsoleWindow","consoleWindowCreated","consoleWindowLoaded","consoleClosed","consoleAppenderId","newestMessageAtTop","scrollToLatestMessage","createWindow","safeToAppend","getConsoleWindow","maxMessages","showCommandLine","commandLineObjectExpansionDepth","showHideButton","showCloseButton","appenderName","consoleWindowExists","isNewestMessageAtTop","setNewestMessageAtTop","newestMessageAtTopParam","setNewestAtTop","isScrollToLatestMessage","setScrollToLatestMessage","scrollToLatestMessageParam","setScrollToLatest","getWidth","setWidth","widthParam","getHeight","setHeight","heightParam","getMaxMessages","setMaxMessages","maxMessagesParam","isShowCommandLine","setShowCommandLine","showCommandLineParam","isShowHideButton","setShowHideButton","showHideButtonParam","isShowCloseButton","setShowCloseButton","showCloseButtonParam","getCommandLineObjectExpansionDepth","setCommandLineObjectExpansionDepth","commandLineObjectExpansionDepthParam","minimized","QueuedLoggingEvent","levelName","QueuedGroup","QueuedGroupEnd","isInitiallyMinimized","setInitiallyMinimized","initiallyMinimizedParam","isUseDocumentWrite","setUseDocumentWrite","useDocumentWriteParam","checkAndAppend","reopenWhenClosed","appendQueuedLoggingEvents","focus","clear","clearLog","focusCommandLine","focusSearch","commandWindow","getCommandWindow","setCommandWindow","commandWindowParam","executeLastCommand","evalLastCommand","commandLayout","getCommandLayout","setCommandLayout","commandLayoutParam","evalCommandAndAppend","commandReturnValue","appendResult","commandOutput","execScript","commandLineFunctionsHash","commandLineFunctions","objectsToRestore","addObjectToRestore","addFunctionToWindow","evalExpr","mainLayout","addCommandLineFunction","functionName","commandLineFunction","storeCommandHistory","commandHistory","writeHtml","doc","writeln","close","consoleWindowLoadHandler","setAppender","setMainWindow","storedValue","currentCommandIndex","unload","caller","pollConsoleWindow","windowTest","interval","errorMessage","poll","setInterval","clearInterval","getConsoleUrl","documentDomainSet","domain","hostname","containerElement","cssProperties","addCssProperty","iframeContainerDiv","windowCreationStarted","iframeId","hide","$","blur","style","display","isVisible","fromButton","confirm","parentNode","removeChild","initErrorMessage","finalInit","writeToDocument","appendChild","createElement","border","iframeSrc","innerHTML","iframeDocumentExistsTest","pageLoadHandler","el","getElementById","nodeType","position","left","right","bottom","body","iframe","frames","popUp","useOldPopUp","complainAboutPopUpBlocking","isUseOldPopUp","setUseOldPopUp","useOldPopUpParam","isComplainAboutPopUpBlocking","setComplainAboutPopUpBlocking","complainAboutPopUpBlockingParam","isFocusPopUp","setFocusPopUp","focusPopUpParam","isReopenWhenClosed","setReopenWhenClosed","reopenWhenClosedParam","windowProperties","frameInfo","frameEl","frameElement","tagName","id","windowName","host","checkPopUpClosed","closed","popUpClosedCallback","setCloseIfOpenerCloses","mainPageReloaded","addGlobalCommandLineFunction","showLogEntryDeleteButtons","InlineAppender","dir","maxLen","propList","propVal","propNameStr","nodeTypes","preFormattedElements","emptyElements","getXhtml","rootNode","includeRootNode","startNewLine","preformatted","xhtml","node","getStyleAttributeValue","stylePairs","cssText","styleValue","nameValueBits","props","childNodes","outerHTML","RegExp","$1","hasPrefix","currentAttr","specified","nodeValue","nodeName","hasChildNodes","childStartNewLine","childPreformatted","endTag","lt","trimmedLines","keys","values","expansionDepth","setDocumentReady","attachEvent","oldOnload","onload","evt","hash","origin","pathname","protocol","search","password","username","port","changeQueryParser","objectTypes","root","freeExports","freeModule","freeGlobal","global","self","maxSafeInteger","pow","reOpera","objectProto","capitalize","string","toUpperCase","forOwn","callback","getClassOf","qualify","reduce","array","accumulator","each","ua","context","isCustomContext","nav","userAgent","isSpecialCasedOS","type","likeChrome","airRuntimeClass","enviroClass","javaClass","java","phantomClass","rhino","environment","alpha","beta","operamini","operaClass","arch","prerelease","useFeatures","guess","label","guesses","getName","product","getProduct","manufacturer","getManufacturer","os","cleanupOS","getOS","getVersion","patterns","unshift","parseFloat","runtime","flash","system","Capabilities","phantom","major","minor","patch","documentMode","toFixed","lang","System","getProperty","process","browser","versions","electron","nw","appMinorVersion","external","family","architecture","cpuClass","webpackPolyfill","deprecate","paths","_init_","defaultInstanceSettings","update","begin","loopBegin","changeBegin","change","changeComplete","loopComplete","complete","loop","direction","autoplay","timelineOffset","defaultTweenSettings","duration","delay","endDelay","easing","round","validTransforms","cache","CSS","springs","minMax","min","stringContains","applyArguments","func","is","isArray","pth","svg","SVGElement","inp","HTMLInputElement","dom","fnc","und","hex","rgb","hsl","col","parseEasingParameters","match","map","spring","mass","stiffness","damping","velocity","w0","sqrt","zeta","wd","b","solver","progress","exp","cos","sin","cached","elapsed","rest","steps","ceil","eases","functionEasings","bezier","A","aA1","aA2","B","C","calcBezier","aT","getSlope","mX1","mY1","mX2","mY2","sampleValues","Float32Array","x","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","penner","linear","Sine","PI","Circ","Back","Bounce","pow2","Elastic","amplitude","period","asin","forEach","easeIn","parseEasings","ease","selectString","querySelectorAll","filterArray","thisArg","flattenArray","toArray","NodeList","HTMLCollection","arrayContains","some","cloneObject","clone","replaceObjectProps","o1","o2","mergeObjects","colorToRgb","rgbValue","hexValue","hexToRgba","hslValue","hue2rgb","q","hslToRgba","getUnit","getFunctionValue","animatable","target","total","getAttribute","prop","convertPxToUnit","unit","tempEl","parentEl","factor","offsetWidth","convertedUnit","getCSSValue","uppercasePropName","getComputedStyle","getPropertyValue","getAnimationType","getElementTransforms","transform","reg","transforms","Map","getTransformValue","propName","defaultVal","getTransformUnit","list","getOriginalTargetValue","getRelativeValue","to","from","operator","u","validateValue","originalUnit","unitLess","getDistance","p1","p2","getPolylineLength","previousPos","points","totalLength","numberOfItems","currentPos","getItem","getTotalLength","getCircleLength","getRectLength","getLineLength","getPolygonLength","getParentSvg","pathEl","svgData","parentSvgEl","getParentSvgEl","rect","getBoundingClientRect","viewBoxAttr","viewBox","getPathProgress","point","offset","getPointAtLength","p0","atan2","decomposeValue","rgx","original","numbers","strings","parseTargets","targets","item","pos","getAnimatables","parsed","normalizePropertyTweens","tweenSettings","settings","propArray","v","getProperties","properties","keyframes","propertyNames","newKey","flattenKeyframes","tweens","normalizeTweens","previousTween","tween","normalizeTweenValues","tweenValue","toUnit","originalValue","previousValue","fromUnit","end","isPath","isColor","setProgressValue","css","attribute","setAttribute","manual","last","setTargetsValue","valueUnit","animType","getAnimations","animatables","lastTween","createAnimation","getInstanceTimings","animations","animLength","getTlOffset","anim","timings","instanceID","raf","activeInstances","pausedInstances","engine","play","requestAnimationFrame","step","activeInstancesLength","activeInstance","paused","instanceIndex","tick","cancelAnimationFrame","startTime","lastTime","now","childrenLength","resolve","makePromise","instance","promise","Promise","_resolve","finished","instanceSettings","createNewInstance","toggleInstanceDirection","reversed","child","adjustTime","resetTime","currentTime","speed","seekChild","seek","setAnimationsProgress","insTime","animationsLength","tweenLength","eased","toNumbersLength","toNumber","fromNumber","stringsLength","n$1","currentValue","setCallback","cb","passThrough","setInstanceProgress","engineTime","insDuration","insDelay","insEndDelay","reversePlayback","i$1","syncInstanceChildren","began","loopBegan","changeBegan","changeCompleted","remaining","completed","reset","pause","reverse","restart","removeTargetsFromAnimations","targetsArray","hidden","ins","running","childAnimations","convertPx","percent","setDashoffset","pathLength","stagger","grid","axis","fromIndex","fromFirst","fromCenter","fromLast","isRange","val1","val2","maxValue","fromX","fromY","distanceX","distanceY","timeline","tl","add","instanceParams","tlIndex","insParams","tlDuration","options","foo","bar","getState","isMobile","ua_name","mobile","vendor","bsFormClearButton","on","nextAll","removeClass","addClass","createDropCap","$p","firstLetter","marginalDropCap","html","logText","defaultOptions","menuOptions","manageDropdownMenu","navbarSticky","eventHandler","action","sendMessage","$getNav","click","preventDefault","hasClass","wrap","postsArr","$postsList","find","firstList","secondList","ListHTML","createHTML","first","after","next","dropDown","megaMenu","closest","prepend","navbarHeighth","outerHeight","scrollTop","animate","slideToggle","nav_bar","container_id","unbind","slideUp","stopPropagation","toggle","wrapInner","$menu","breakPoint","$dropDown","timeoutHandle","navDefaultOptions","navMenuOptions","$getWindow","matchMedia","matches","$getIn","$getOut","menuSelector","xhr_container_id","delayMenuOpen","delay_menu_open","media_breakpoint","off","stop","fadeToggle","fadeOut","hover","$list","eq","fadeIn","clearTimeout","windowHeight","windowWidth","getId","$getHeight","getOffset","top","updateSidebar","user_data","json_message","resolveMacros","updateMacros","jQuery","moduleOptions","dummyOption","callouts","colgroupList","conums","dependencies_met_page_finished","scroll","scrollTo","timeStart","timeElapsed","pageYOffset","opt","tgt","querySelector","decodeURI","distance","documentElement","languages","validateText","validateSourceLanguage","validateTargetLanguage","validateSourceTargetLanguage","validateBeginning","splitSentences","getTranslation","getAlternatives","EOL","validateInputs","validationArray","all","then","validationResults","errors","filter","validationResult","reject","translate","targetLanguage","sourceLanguage","valid","transformSplitSentencesResponse","paragraphs","resolvedSourceLanguage","paragraph","transformTranslationResponse","translatedParagraphs","unique","current","translation","response","target_lang","source_lang","translations","beams","postprocessed_sentence","splitted_texts","texts","lang_is_confident","translateWithAlternatives","beginning","translationAlternatives","detectLanguage","languageCode","languageName","code","wordAlternatives","res","alternatives","alt","request","getRequestOptions","postBody","method","Buffer","byteLength","jsonrpc","jobs","kind","raw_en_sentence","de_sentence_beginning","user_preferred_langs","source_lang_user_selected","priority","getHandleJobsBody","lang_user_selected","getSplitSentencesBody","source_lang_computed","getAlternativesBody","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","__proto__","arg","encodingOrOffset","allocUnsafe","TypeError","ArrayBuffer","byteOffset","undefined","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","fromString","isBuffer","checked","copy","buffer","fromObject","assertSize","size","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","found","hexWrite","utf8Write","blitBuffer","asciiWrite","byteArray","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","subarray","typedArraySupport","poolSize","_augment","species","configurable","fill","allocUnsafeSlow","_isBuffer","compare","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","dst","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","num","output","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","xhr","responseText","endianness","loadavg","uptime","freemem","totalmem","cpus","release","appVersion","networkInterfaces","getNetworkInterfaces","tmpdir","tmpDir","homedir","define","buildHtml","parseContent","headingsArray","tocbot","BuildHtml","ParseContent","updateTocScroll","supports","destroy","skipRendering","tocSelector","scrollContainer","_scrollListener","_clickListener","customOptions","source","state","scrollSmoothDuration","scrollSmoothOffset","initSmoothScrolling","_buildHtml","_parseContent","selectHeadings","contentSelector","headingSelector","nestedHeadings","nestHeadingsArray","nest","render","throttle","updateToc","disableTocScrollSync","isTop","scrollingElement","eventPhase","currentTarget","scrollEndCallback","throttleTimeout","timeout","event","disableTocAnimation","enableTocAnimation","refresh","fn","scope","deferTimer","ignoreSelector","hasInnerContainers","linkClass","extraLinkClasses","activeLinkClass","listClass","extraListClasses","isCollapsedClass","collapsibleClass","listItemClass","activeListItemClass","collapseDepth","headingsOffset","positionFixedSelector","positionFixedClass","fixedSidebarOffset","includeHtml","onClick","orderedList","headingLabelCallback","ignoreHiddenElements","headingObjectCallback","basePath","currentlyHighlighting","createEl","link","onclick","cloneNode","textContent","createLink","createList","isCollapsed","listElement","classes","srcElement","className","selector","firstChild","posFixedEl","offsetTop","updateFixedSidebarClass","topHeader","headings","heading","getHeadingTopPos","offsetParent","tocLinks","tocLink","tocLis","tocLi","activeTocLink","li","tocLists","nextSibling","removeCollapsedFromParents","element","getLastItem","getHeadingLevel","getHeadingObject","HTMLElement","offsetHeight","headingLevel","prev","curr","currentHeading","lastItem","counter","addNode","selectors","toc","scrollHeight","clientHeight","activeItem","pageUrl","stripHash","jump","tabIndex","language","idx","view_result_link","result_block","title_div","toggleClass","toggle_result_block"],"mappings":"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","file":"template.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/assets/themes/j1/core/js\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = {\n EN: 'English',\n DE: 'German',\n FR: 'French',\n ES: 'Spanish',\n IT: 'Italian',\n NL: 'Dutch',\n PL: 'Polish',\n};\n","/*\n # -----------------------------------------------------------------------------\n # ~/src/template.js\n # J1 Template Javascript Core library\n #\n # Product/Info:\n # https://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under the MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n #\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint-disable no-unused-vars */\n/* global window */\n\n// -----------------------------------------------------------------------------\n// Import SASS sources for HMR\n// -----------------------------------------------------------------------------\n// import '../100_template_css/scss/theme_uno/components/_footer.scss';\n// import '../100_template_css/theme_uno.css'; // <-- yes, also require (s)css. This is a Webpack thing\n\n// Core Libraries - imported|required from NODE|NPM modules\n// -----------------------------------------------------------------------------\n//\n// Following objects (framework modules) are *conditionaly* forced to be\n// exposed for run-time to the global namespace (window) by WP config\n// file (expose-loader):\n// jQuery\n// Popper ('popper.js/dist/umd/popper', https://github.com/twbs/bootstrap/issues/23381)\n// -----------------------------------------------------------------------------\n\n// Core Utilities (moved to modules)\n// -----------------------------------------------------------------------------\n// Following objects (native node modules) are *explicitely* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\nwindow.Cookies = require('js-cookie');\nwindow.log4javascript = require('log4javascript');\nwindow.liteURL = require('lite-url');\nwindow.platform = require('platform');\n\n// Core Libraries - build|required from SOURCE\n// -----------------------------------------------------------------------------\n\n// Following source objects|modules are *explicitely* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\nwindow.j1.adapter = require('./js/adapter/adapter.js');\nwindow.j1.anime = require('./js/anime/anime.js'); // added for fam\nwindow.j1.core = require('./js/core/core.js');\nwindow.j1.core.navigator = require('./js/navigator/navigator.js');\nwindow.j1.core.asciidoctor = require('./js/asciidoctor/asciidoctor.js');\nwindow.j1.core.scrollSmooth = require('./js/scroll-smooth/scroll-smooth.js');\n\nwindow.deeplTranslator = require('./js/deepl-translator');\n\n// window.j1.fam = require('./js/fam/fam.js'); // cannot used until NOT rewritten to jQuery\n\n// Following source objects|modules are *implicetly* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\n//const Bootstrap = require('./js/bootstrap/bootstrap.js');\n//const J1JekyllSearch = require('./js/jekyll_search/jekyll_search.js');\nconst J1Tocbot = require('./js/tocbot/tocbot.js');\n//const J1ThemeSwitcher = require('./js/bs_theme_switcher/switcher.js');\n// const J1MmenuLight = require('./js/mmenu-light/mmenu.js');\n\n// Passing log data over Internet|SeeMe (currently NOT used)\n// -----------------------------------------------------------------------------\n// window.j1.core.log4javascript = require('./js/logger/client/webhook.js');\n\n// BMD Libraries (moved to modules)\n// -----------------------------------------------------------------------------\n// window.bootstrapMaterialDesign = require('./js/bmd/js/bmd.js');\n\n// Github Webhooks (currently NOT used)\n// -----------------------------------------------------------------------------\n// window.j1.core.webhooks = require('./js/webhooks/octokit/client.js');\n\n\n// Test|Custom modules (currently NOT used)\n// -----------------------------------------------------------------------------\n// window.j1promiseTest = require('./js/custom/test_promises.js');\n// window.j1Example = require('./js/custom/example_module.js');\n\n// BS Libraries (moved to modules)\n// -----------------------------------------------------------------------------\n// Following source objects|modules are *implicetly* forced to be\n// exposed for run-time to the global namespace (window).\n// -----------------------------------------------------------------------------\n// const Bootstrap = require('./js/bootstrap/bootstrap.js');\n\n// const J1JekyllSearch = require('./js/jekyll_search/jekyll_search.js'); // Buffer Kack\n// const J1Tocbot = require('./js/tocbot/tocbot.js');\n\n// Backstretch (moved to modules)\n// -----------------------------------------------------------------------------\n// Following source objects|modules are *implicetly* forced to be\n// exposed for run-time to the namespace of jQuery ($).\n// -----------------------------------------------------------------------------\n// const J1Attics = require('./js/backstretch/backstretch.js');\n\n// Additional Vanilla JS helpers\n// -----------------------------------------------------------------------------\nconst J1AdocResultViewer = require('./js/adoc_result_viewer/view_results.js');\n// const MSIEPolyfills = require('./js/polyfills/ms-ie.js');\n\n// HMR messages (currently NOT used)\n// -----------------------------------------------------------------------------\n// if (module.hot) {\n// var logtext;\n// var stat;\n// var stat=module.hot.status();\n//\n// logtext='[INFO ] [HMR ] [Hot Module Replacement enabled]';\n// console.log(logtext);\n// logtext='[INFO ] [HMR ] [Status: ' + stat + ']';\n// console.log(logtext);\n//\n// module.hot.accept('./template.js', function() {\n// console.log('[HMR] Accepting the updated template.js module!');\n// });\n//\n// module.hot.accept('../100_template_css/theme_uno.scss', function () {\n// console.log('[HMR] Accepting the updated style.css module!');\n// require('../100_template_css/theme_uno.scss')\n// })\n//\n// React to the current status...\n// module.hot.addStatusHandler(status => {\n// stat=module.hot.status();\n// logtext='[INFO ] [HMR ] [Status: ' + stat + ']';\n// console.log(logtext);\n// });\n//}\n\n// -----------------------------------------------------------------------------\n// END\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","/**\r\n * Copyright 2015 Tim Down.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n\r\n(function(factory,root){if(typeof define==\"function\"&&define.amd){define(factory);}else if(typeof module!=\"undefined\"&&typeof exports==\"object\"){module.exports=factory();}else{root.log4javascript=factory();}})(function(){if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0,len=arguments.length;i<len;i++){this[this.length]=arguments[i];}\r\nreturn this.length;};}\r\nif(!Array.prototype.shift){Array.prototype.shift=function(){if(this.length>0){var firstItem=this[0];for(var i=0,len=this.length-1;i<len;i++){this[i]=this[i+1];}\r\nthis.length=this.length-1;return firstItem;}};}\r\nif(!Array.prototype.splice){Array.prototype.splice=function(startIndex,deleteCount){var itemsAfterDeleted=this.slice(startIndex+deleteCount);var itemsDeleted=this.slice(startIndex,startIndex+deleteCount);this.length=startIndex;var argumentsArray=[];for(var i=0,len=arguments.length;i<len;i++){argumentsArray[i]=arguments[i];}\r\nvar itemsToAppend=(argumentsArray.length>2)?itemsAfterDeleted=argumentsArray.slice(2).concat(itemsAfterDeleted):itemsAfterDeleted;for(i=0,len=itemsToAppend.length;i<len;i++){this.push(itemsToAppend[i]);}\r\nreturn itemsDeleted;};}\r\nfunction isUndefined(obj){return typeof obj==\"undefined\";}\r\nfunction EventSupport(){}\r\nEventSupport.prototype={eventTypes:[],eventListeners:{},setEventTypes:function(eventTypesParam){if(eventTypesParam instanceof Array){this.eventTypes=eventTypesParam;this.eventListeners={};for(var i=0,len=this.eventTypes.length;i<len;i++){this.eventListeners[this.eventTypes[i]]=[];}}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: setEventTypes: eventTypes parameter must be an Array\");}},addEventListener:function(eventType,listener){if(typeof listener==\"function\"){if(!array_contains(this.eventTypes,eventType)){handleError(\"log4javascript.EventSupport [\"+this+\"]: addEventListener: no event called '\"+eventType+\"'\");}\r\nthis.eventListeners[eventType].push(listener);}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: addEventListener: listener must be a function\");}},removeEventListener:function(eventType,listener){if(typeof listener==\"function\"){if(!array_contains(this.eventTypes,eventType)){handleError(\"log4javascript.EventSupport [\"+this+\"]: removeEventListener: no event called '\"+eventType+\"'\");}\r\narray_remove(this.eventListeners[eventType],listener);}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: removeEventListener: listener must be a function\");}},dispatchEvent:function(eventType,eventArgs){if(array_contains(this.eventTypes,eventType)){var listeners=this.eventListeners[eventType];for(var i=0,len=listeners.length;i<len;i++){listeners[i](this,eventType,eventArgs);}}else{handleError(\"log4javascript.EventSupport [\"+this+\"]: dispatchEvent: no event called '\"+eventType+\"'\");}}};var applicationStartDate=new Date();var uniqueId=\"log4javascript_\"+applicationStartDate.getTime()+\"_\"+\r\nMath.floor(Math.random()*100000000);var emptyFunction=function(){};var newLine=\"\\r\\n\";var pageLoaded=false;function Log4JavaScript(){}\r\nLog4JavaScript.prototype=new EventSupport();var log4javascript=new Log4JavaScript();log4javascript.version=\"1.4.13\";log4javascript.edition=\"log4javascript\";function toStr(obj){if(obj&&obj.toString){return obj.toString();}else{return String(obj);}}\r\nfunction getExceptionMessage(ex){if(ex.message){return ex.message;}else if(ex.description){return ex.description;}else{return toStr(ex);}}\r\nfunction getUrlFileName(url){var lastSlashIndex=Math.max(url.lastIndexOf(\"/\"),url.lastIndexOf(\"\\\\\"));return url.substr(lastSlashIndex+1);}\r\nfunction getExceptionStringRep(ex){if(ex){var exStr=\"Exception: \"+getExceptionMessage(ex);try{if(ex.lineNumber){exStr+=\" on line number \"+ex.lineNumber;}\r\nif(ex.fileName){exStr+=\" in file \"+getUrlFileName(ex.fileName);}}catch(localEx){logLog.warn(\"Unable to obtain file and line information for error\");}\r\nif(showStackTraces&&ex.stack){exStr+=newLine+\"Stack trace:\"+newLine+ex.stack;}\r\nreturn exStr;}\r\nreturn null;}\r\nfunction bool(obj){return Boolean(obj);}\r\nfunction trim(str){return str.replace(/^\\s+/,\"\").replace(/\\s+$/,\"\");}\r\nfunction splitIntoLines(text){var text2=text.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");return text2.split(\"\\n\");}\r\nvar urlEncode=(typeof window.encodeURIComponent!=\"undefined\")?function(str){return encodeURIComponent(str);}:function(str){return escape(str).replace(/\\+/g,\"%2B\").replace(/\"/g,\"%22\").replace(/'/g,\"%27\").replace(/\\//g,\"%2F\").replace(/=/g,\"%3D\");};function array_remove(arr,val){var index=-1;for(var i=0,len=arr.length;i<len;i++){if(arr[i]===val){index=i;break;}}\r\nif(index>=0){arr.splice(index,1);return true;}else{return false;}}\r\nfunction array_contains(arr,val){for(var i=0,len=arr.length;i<len;i++){if(arr[i]==val){return true;}}\r\nreturn false;}\r\nfunction extractBooleanFromParam(param,defaultValue){if(isUndefined(param)){return defaultValue;}else{return bool(param);}}\r\nfunction extractStringFromParam(param,defaultValue){if(isUndefined(param)){return defaultValue;}else{return String(param);}}\r\nfunction extractIntFromParam(param,defaultValue){if(isUndefined(param)){return defaultValue;}else{try{var value=parseInt(param,10);return isNaN(value)?defaultValue:value;}catch(ex){logLog.warn(\"Invalid int param \"+param,ex);return defaultValue;}}}\r\nfunction extractFunctionFromParam(param,defaultValue){if(typeof param==\"function\"){return param;}else{return defaultValue;}}\r\nfunction isError(err){return(err instanceof Error);}\r\nif(!Function.prototype.apply){Function.prototype.apply=function(obj,args){var methodName=\"__apply__\";if(typeof obj[methodName]!=\"undefined\"){methodName+=String(Math.random()).substr(2);}\r\nobj[methodName]=this;var argsStrings=[];for(var i=0,len=args.length;i<len;i++){argsStrings[i]=\"args[\"+i+\"]\";}\r\nvar script=\"obj.\"+methodName+\"(\"+argsStrings.join(\",\")+\")\";var returnValue=eval(script);delete obj[methodName];return returnValue;};}\r\nif(!Function.prototype.call){Function.prototype.call=function(obj){var args=[];for(var i=1,len=arguments.length;i<len;i++){args[i-1]=arguments[i];}\r\nreturn this.apply(obj,args);};}\r\nvar logLog={quietMode:false,debugMessages:[],setQuietMode:function(quietMode){this.quietMode=bool(quietMode);},numberOfErrors:0,alertAllErrors:false,setAlertAllErrors:function(alertAllErrors){this.alertAllErrors=alertAllErrors;},debug:function(message){this.debugMessages.push(message);},displayDebug:function(){alert(this.debugMessages.join(newLine));},warn:function(message,exception){},error:function(message,exception){if(++this.numberOfErrors==1||this.alertAllErrors){if(!this.quietMode){var alertMessage=\"log4javascript error: \"+message;if(exception){alertMessage+=newLine+newLine+\"Original error: \"+getExceptionStringRep(exception);}\r\nalert(alertMessage);}}}};log4javascript.logLog=logLog;log4javascript.setEventTypes([\"load\",\"error\"]);function handleError(message,exception){logLog.error(message,exception);log4javascript.dispatchEvent(\"error\",{\"message\":message,\"exception\":exception});}\r\nlog4javascript.handleError=handleError;var enabled=!((typeof log4javascript_disabled!=\"undefined\")&&log4javascript_disabled);log4javascript.setEnabled=function(enable){enabled=bool(enable);};log4javascript.isEnabled=function(){return enabled;};var useTimeStampsInMilliseconds=true;log4javascript.setTimeStampsInMilliseconds=function(timeStampsInMilliseconds){useTimeStampsInMilliseconds=bool(timeStampsInMilliseconds);};log4javascript.isTimeStampsInMilliseconds=function(){return useTimeStampsInMilliseconds;};log4javascript.evalInScope=function(expr){return eval(expr);};var showStackTraces=false;log4javascript.setShowStackTraces=function(show){showStackTraces=bool(show);};var Level=function(level,name){this.level=level;this.name=name;};Level.prototype={toString:function(){return this.name;},equals:function(level){return this.level==level.level;},isGreaterOrEqual:function(level){return this.level>=level.level;}};Level.ALL=new Level(Number.MIN_VALUE,\"ALL\");Level.TRACE=new Level(10000,\"TRACE\");Level.DEBUG=new Level(20000,\"DEBUG\");Level.INFO=new Level(30000,\"INFO\");Level.WARN=new Level(40000,\"WARN\");Level.ERROR=new Level(50000,\"ERROR\");Level.FATAL=new Level(60000,\"FATAL\");Level.OFF=new Level(Number.MAX_VALUE,\"OFF\");log4javascript.Level=Level;function Timer(name,level){this.name=name;this.level=isUndefined(level)?Level.INFO:level;this.start=new Date();}\r\nTimer.prototype.getElapsedTime=function(){return new Date().getTime()-this.start.getTime();};var anonymousLoggerName=\"[anonymous]\";var defaultLoggerName=\"[default]\";var nullLoggerName=\"[null]\";var rootLoggerName=\"root\";function Logger(name){this.name=name;this.parent=null;this.children=[];var appenders=[];var loggerLevel=null;var isRoot=(this.name===rootLoggerName);var isNull=(this.name===nullLoggerName);var appenderCache=null;var appenderCacheInvalidated=false;this.addChild=function(childLogger){this.children.push(childLogger);childLogger.parent=this;childLogger.invalidateAppenderCache();};var additive=true;this.getAdditivity=function(){return additive;};this.setAdditivity=function(additivity){var valueChanged=(additive!=additivity);additive=additivity;if(valueChanged){this.invalidateAppenderCache();}};this.addAppender=function(appender){if(isNull){handleError(\"Logger.addAppender: you may not add an appender to the null logger\");}else{if(appender instanceof log4javascript.Appender){if(!array_contains(appenders,appender)){appenders.push(appender);appender.setAddedToLogger(this);this.invalidateAppenderCache();}}else{handleError(\"Logger.addAppender: appender supplied ('\"+\r\ntoStr(appender)+\"') is not a subclass of Appender\");}}};this.removeAppender=function(appender){array_remove(appenders,appender);appender.setRemovedFromLogger(this);this.invalidateAppenderCache();};this.removeAllAppenders=function(){var appenderCount=appenders.length;if(appenderCount>0){for(var i=0;i<appenderCount;i++){appenders[i].setRemovedFromLogger(this);}\r\nappenders.length=0;this.invalidateAppenderCache();}};this.getEffectiveAppenders=function(){if(appenderCache===null||appenderCacheInvalidated){var parentEffectiveAppenders=(isRoot||!this.getAdditivity())?[]:this.parent.getEffectiveAppenders();appenderCache=parentEffectiveAppenders.concat(appenders);appenderCacheInvalidated=false;}\r\nreturn appenderCache;};this.invalidateAppenderCache=function(){appenderCacheInvalidated=true;for(var i=0,len=this.children.length;i<len;i++){this.children[i].invalidateAppenderCache();}};this.log=function(level,params){if(enabled&&level.isGreaterOrEqual(this.getEffectiveLevel())){var exception;var finalParamIndex=params.length-1;var lastParam=params[finalParamIndex];if(params.length>1&&isError(lastParam)){exception=lastParam;finalParamIndex--;}\r\nvar messages=[];for(var i=0;i<=finalParamIndex;i++){messages[i]=params[i];}\r\nvar loggingEvent=new LoggingEvent(this,new Date(),level,messages,exception);this.callAppenders(loggingEvent);}};this.callAppenders=function(loggingEvent){var effectiveAppenders=this.getEffectiveAppenders();for(var i=0,len=effectiveAppenders.length;i<len;i++){effectiveAppenders[i].doAppend(loggingEvent);}};this.setLevel=function(level){if(isRoot&&level===null){handleError(\"Logger.setLevel: you cannot set the level of the root logger to null\");}else if(level instanceof Level){loggerLevel=level;}else{handleError(\"Logger.setLevel: level supplied to logger \"+\r\nthis.name+\" is not an instance of log4javascript.Level\");}};this.getLevel=function(){return loggerLevel;};this.getEffectiveLevel=function(){for(var logger=this;logger!==null;logger=logger.parent){var level=logger.getLevel();if(level!==null){return level;}}};this.group=function(name,initiallyExpanded){if(enabled){var effectiveAppenders=this.getEffectiveAppenders();for(var i=0,len=effectiveAppenders.length;i<len;i++){effectiveAppenders[i].group(name,initiallyExpanded);}}};this.groupEnd=function(){if(enabled){var effectiveAppenders=this.getEffectiveAppenders();for(var i=0,len=effectiveAppenders.length;i<len;i++){effectiveAppenders[i].groupEnd();}}};var timers={};this.time=function(name,level){if(enabled){if(isUndefined(name)){handleError(\"Logger.time: a name for the timer must be supplied\");}else if(level&&!(level instanceof Level)){handleError(\"Logger.time: level supplied to timer \"+\r\nname+\" is not an instance of log4javascript.Level\");}else{timers[name]=new Timer(name,level);}}};this.timeEnd=function(name){if(enabled){if(isUndefined(name)){handleError(\"Logger.timeEnd: a name for the timer must be supplied\");}else if(timers[name]){var timer=timers[name];var milliseconds=timer.getElapsedTime();this.log(timer.level,[\"Timer \"+toStr(name)+\" completed in \"+milliseconds+\"ms\"]);delete timers[name];}else{logLog.warn(\"Logger.timeEnd: no timer found with name \"+name);}}};this.assert=function(expr){if(enabled&&!expr){var args=[];for(var i=1,len=arguments.length;i<len;i++){args.push(arguments[i]);}\r\nargs=(args.length>0)?args:[\"Assertion Failure\"];args.push(newLine);args.push(expr);this.log(Level.ERROR,args);}};this.toString=function(){return\"Logger[\"+this.name+\"]\";};}\r\nLogger.prototype={trace:function(){this.log(Level.TRACE,arguments);},debug:function(){this.log(Level.DEBUG,arguments);},info:function(){this.log(Level.INFO,arguments);},warn:function(){this.log(Level.WARN,arguments);},error:function(){this.log(Level.ERROR,arguments);},fatal:function(){this.log(Level.FATAL,arguments);},isEnabledFor:function(level){return level.isGreaterOrEqual(this.getEffectiveLevel());},isTraceEnabled:function(){return this.isEnabledFor(Level.TRACE);},isDebugEnabled:function(){return this.isEnabledFor(Level.DEBUG);},isInfoEnabled:function(){return this.isEnabledFor(Level.INFO);},isWarnEnabled:function(){return this.isEnabledFor(Level.WARN);},isErrorEnabled:function(){return this.isEnabledFor(Level.ERROR);},isFatalEnabled:function(){return this.isEnabledFor(Level.FATAL);}};Logger.prototype.trace.isEntryPoint=true;Logger.prototype.debug.isEntryPoint=true;Logger.prototype.info.isEntryPoint=true;Logger.prototype.warn.isEntryPoint=true;Logger.prototype.error.isEntryPoint=true;Logger.prototype.fatal.isEntryPoint=true;var loggers={};var loggerNames=[];var ROOT_LOGGER_DEFAULT_LEVEL=Level.DEBUG;var rootLogger=new Logger(rootLoggerName);rootLogger.setLevel(ROOT_LOGGER_DEFAULT_LEVEL);log4javascript.getRootLogger=function(){return rootLogger;};log4javascript.getLogger=function(loggerName){if(typeof loggerName!=\"string\"){loggerName=anonymousLoggerName;logLog.warn(\"log4javascript.getLogger: non-string logger name \"+\r\ntoStr(loggerName)+\" supplied, returning anonymous logger\");}\r\nif(loggerName==rootLoggerName){handleError(\"log4javascript.getLogger: root logger may not be obtained by name\");}\r\nif(!loggers[loggerName]){var logger=new Logger(loggerName);loggers[loggerName]=logger;loggerNames.push(loggerName);var lastDotIndex=loggerName.lastIndexOf(\".\");var parentLogger;if(lastDotIndex>-1){var parentLoggerName=loggerName.substring(0,lastDotIndex);parentLogger=log4javascript.getLogger(parentLoggerName);}else{parentLogger=rootLogger;}\r\nparentLogger.addChild(logger);}\r\nreturn loggers[loggerName];};var defaultLogger=null;log4javascript.getDefaultLogger=function(){if(!defaultLogger){defaultLogger=createDefaultLogger();}\r\nreturn defaultLogger;};var nullLogger=null;log4javascript.getNullLogger=function(){if(!nullLogger){nullLogger=new Logger(nullLoggerName);nullLogger.setLevel(Level.OFF);}\r\nreturn nullLogger;};log4javascript.resetConfiguration=function(){rootLogger.setLevel(ROOT_LOGGER_DEFAULT_LEVEL);loggers={};};var LoggingEvent=function(logger,timeStamp,level,messages,exception){this.logger=logger;this.timeStamp=timeStamp;this.timeStampInMilliseconds=timeStamp.getTime();this.timeStampInSeconds=Math.floor(this.timeStampInMilliseconds/1000);this.milliseconds=this.timeStamp.getMilliseconds();this.level=level;this.messages=messages;this.exception=exception;};LoggingEvent.prototype={getThrowableStrRep:function(){return this.exception?getExceptionStringRep(this.exception):\"\";},getCombinedMessages:function(){return(this.messages.length==1)?this.messages[0]:this.messages.join(newLine);},toString:function(){return\"LoggingEvent[\"+this.level+\"]\";}};log4javascript.LoggingEvent=LoggingEvent;var Layout=function(){};Layout.prototype={defaults:{loggerKey:\"logger\",timeStampKey:\"timestamp\",millisecondsKey:\"milliseconds\",levelKey:\"level\",messageKey:\"message\",exceptionKey:\"exception\",urlKey:\"url\"},loggerKey:\"logger\",timeStampKey:\"timestamp\",millisecondsKey:\"milliseconds\",levelKey:\"level\",messageKey:\"message\",exceptionKey:\"exception\",urlKey:\"url\",batchHeader:\"\",batchFooter:\"\",batchSeparator:\"\",returnsPostData:false,overrideTimeStampsSetting:false,useTimeStampsInMilliseconds:null,format:function(){handleError(\"Layout.format: layout supplied has no format() method\");},ignoresThrowable:function(){handleError(\"Layout.ignoresThrowable: layout supplied has no ignoresThrowable() method\");},getContentType:function(){return\"text/plain\";},allowBatching:function(){return true;},setTimeStampsInMilliseconds:function(timeStampsInMilliseconds){this.overrideTimeStampsSetting=true;this.useTimeStampsInMilliseconds=bool(timeStampsInMilliseconds);},isTimeStampsInMilliseconds:function(){return this.overrideTimeStampsSetting?this.useTimeStampsInMilliseconds:useTimeStampsInMilliseconds;},getTimeStampValue:function(loggingEvent){return this.isTimeStampsInMilliseconds()?loggingEvent.timeStampInMilliseconds:loggingEvent.timeStampInSeconds;},getDataValues:function(loggingEvent,combineMessages){var dataValues=[[this.loggerKey,loggingEvent.logger.name],[this.timeStampKey,this.getTimeStampValue(loggingEvent)],[this.levelKey,loggingEvent.level.name],[this.urlKey,window.location.href],[this.messageKey,combineMessages?loggingEvent.getCombinedMessages():loggingEvent.messages]];if(!this.isTimeStampsInMilliseconds()){dataValues.push([this.millisecondsKey,loggingEvent.milliseconds]);}\r\nif(loggingEvent.exception){dataValues.push([this.exceptionKey,getExceptionStringRep(loggingEvent.exception)]);}\r\nif(this.hasCustomFields()){for(var i=0,len=this.customFields.length;i<len;i++){var val=this.customFields[i].value;if(typeof val===\"function\"){val=val(this,loggingEvent);}\r\ndataValues.push([this.customFields[i].name,val]);}}\r\nreturn dataValues;},setKeys:function(loggerKey,timeStampKey,levelKey,messageKey,exceptionKey,urlKey,millisecondsKey){this.loggerKey=extractStringFromParam(loggerKey,this.defaults.loggerKey);this.timeStampKey=extractStringFromParam(timeStampKey,this.defaults.timeStampKey);this.levelKey=extractStringFromParam(levelKey,this.defaults.levelKey);this.messageKey=extractStringFromParam(messageKey,this.defaults.messageKey);this.exceptionKey=extractStringFromParam(exceptionKey,this.defaults.exceptionKey);this.urlKey=extractStringFromParam(urlKey,this.defaults.urlKey);this.millisecondsKey=extractStringFromParam(millisecondsKey,this.defaults.millisecondsKey);},setCustomField:function(name,value){var fieldUpdated=false;for(var i=0,len=this.customFields.length;i<len;i++){if(this.customFields[i].name===name){this.customFields[i].value=value;fieldUpdated=true;}}\r\nif(!fieldUpdated){this.customFields.push({\"name\":name,\"value\":value});}},hasCustomFields:function(){return(this.customFields.length>0);},formatWithException:function(loggingEvent){var formatted=this.format(loggingEvent);if(loggingEvent.exception&&this.ignoresThrowable()){formatted+=loggingEvent.getThrowableStrRep();}\r\nreturn formatted;},toString:function(){handleError(\"Layout.toString: all layouts must override this method\");}};log4javascript.Layout=Layout;var Appender=function(){};Appender.prototype=new EventSupport();Appender.prototype.layout=new PatternLayout();Appender.prototype.threshold=Level.ALL;Appender.prototype.loggers=[];Appender.prototype.doAppend=function(loggingEvent){if(enabled&&loggingEvent.level.level>=this.threshold.level){this.append(loggingEvent);}};Appender.prototype.append=function(loggingEvent){};Appender.prototype.setLayout=function(layout){if(layout instanceof Layout){this.layout=layout;}else{handleError(\"Appender.setLayout: layout supplied to \"+\r\nthis.toString()+\" is not a subclass of Layout\");}};Appender.prototype.getLayout=function(){return this.layout;};Appender.prototype.setThreshold=function(threshold){if(threshold instanceof Level){this.threshold=threshold;}else{handleError(\"Appender.setThreshold: threshold supplied to \"+\r\nthis.toString()+\" is not a subclass of Level\");}};Appender.prototype.getThreshold=function(){return this.threshold;};Appender.prototype.setAddedToLogger=function(logger){this.loggers.push(logger);};Appender.prototype.setRemovedFromLogger=function(logger){array_remove(this.loggers,logger);};Appender.prototype.group=emptyFunction;Appender.prototype.groupEnd=emptyFunction;Appender.prototype.toString=function(){handleError(\"Appender.toString: all appenders must override this method\");};log4javascript.Appender=Appender;function SimpleLayout(){this.customFields=[];}\r\nSimpleLayout.prototype=new Layout();SimpleLayout.prototype.format=function(loggingEvent){return loggingEvent.level.name+\" - \"+loggingEvent.getCombinedMessages();};SimpleLayout.prototype.ignoresThrowable=function(){return true;};SimpleLayout.prototype.toString=function(){return\"SimpleLayout\";};log4javascript.SimpleLayout=SimpleLayout;function NullLayout(){this.customFields=[];}\r\nNullLayout.prototype=new Layout();NullLayout.prototype.format=function(loggingEvent){return loggingEvent.messages;};NullLayout.prototype.ignoresThrowable=function(){return true;};NullLayout.prototype.formatWithException=function(loggingEvent){var messages=loggingEvent.messages,ex=loggingEvent.exception;return ex?messages.concat([ex]):messages;};NullLayout.prototype.toString=function(){return\"NullLayout\";};log4javascript.NullLayout=NullLayout;function XmlLayout(combineMessages){this.combineMessages=extractBooleanFromParam(combineMessages,true);this.customFields=[];}\r\nXmlLayout.prototype=new Layout();XmlLayout.prototype.isCombinedMessages=function(){return this.combineMessages;};XmlLayout.prototype.getContentType=function(){return\"text/xml\";};XmlLayout.prototype.escapeCdata=function(str){return str.replace(/\\]\\]>/,\"]]>]]&gt;<![CDATA[\");};XmlLayout.prototype.format=function(loggingEvent){var layout=this;var i,len;function formatMessage(message){message=(typeof message===\"string\")?message:toStr(message);return\"<log4javascript:message><![CDATA[\"+\r\nlayout.escapeCdata(message)+\"]]></log4javascript:message>\";}\r\nvar str=\"<log4javascript:event logger=\\\"\"+loggingEvent.logger.name+\"\\\" timestamp=\\\"\"+this.getTimeStampValue(loggingEvent)+\"\\\"\";if(!this.isTimeStampsInMilliseconds()){str+=\" milliseconds=\\\"\"+loggingEvent.milliseconds+\"\\\"\";}\r\nstr+=\" level=\\\"\"+loggingEvent.level.name+\"\\\">\"+newLine;if(this.combineMessages){str+=formatMessage(loggingEvent.getCombinedMessages());}else{str+=\"<log4javascript:messages>\"+newLine;for(i=0,len=loggingEvent.messages.length;i<len;i++){str+=formatMessage(loggingEvent.messages[i])+newLine;}\r\nstr+=\"</log4javascript:messages>\"+newLine;}\r\nif(this.hasCustomFields()){for(i=0,len=this.customFields.length;i<len;i++){str+=\"<log4javascript:customfield name=\\\"\"+\r\nthis.customFields[i].name+\"\\\"><![CDATA[\"+\r\nthis.customFields[i].value.toString()+\"]]></log4javascript:customfield>\"+newLine;}}\r\nif(loggingEvent.exception){str+=\"<log4javascript:exception><![CDATA[\"+\r\ngetExceptionStringRep(loggingEvent.exception)+\"]]></log4javascript:exception>\"+newLine;}\r\nstr+=\"</log4javascript:event>\"+newLine+newLine;return str;};XmlLayout.prototype.ignoresThrowable=function(){return false;};XmlLayout.prototype.toString=function(){return\"XmlLayout\";};log4javascript.XmlLayout=XmlLayout;function escapeNewLines(str){return str.replace(/\\r\\n|\\r|\\n/g,\"\\\\r\\\\n\");}\r\nfunction JsonLayout(readable,combineMessages){this.readable=extractBooleanFromParam(readable,false);this.combineMessages=extractBooleanFromParam(combineMessages,true);this.batchHeader=this.readable?\"[\"+newLine:\"[\";this.batchFooter=this.readable?\"]\"+newLine:\"]\";this.batchSeparator=this.readable?\",\"+newLine:\",\";this.setKeys();this.colon=this.readable?\": \":\":\";this.tab=this.readable?\"\\t\":\"\";this.lineBreak=this.readable?newLine:\"\";this.customFields=[];}\r\nJsonLayout.prototype=new Layout();JsonLayout.prototype.isReadable=function(){return this.readable;};JsonLayout.prototype.isCombinedMessages=function(){return this.combineMessages;};JsonLayout.prototype.format=function(loggingEvent){var layout=this;var dataValues=this.getDataValues(loggingEvent,this.combineMessages);var str=\"{\"+this.lineBreak;var i,len;function formatValue(val,prefix,expand){var formattedValue;var valType=typeof val;if(val instanceof Date){formattedValue=String(val.getTime());}else if(expand&&(val instanceof Array)){formattedValue=\"[\"+layout.lineBreak;for(var i=0,len=val.length;i<len;i++){var childPrefix=prefix+layout.tab;formattedValue+=childPrefix+formatValue(val[i],childPrefix,false);if(i<val.length-1){formattedValue+=\",\";}\r\nformattedValue+=layout.lineBreak;}\r\nformattedValue+=prefix+\"]\";}else if(valType!==\"number\"&&valType!==\"boolean\"){formattedValue=\"\\\"\"+escapeNewLines(toStr(val).replace(/\\\"/g,\"\\\\\\\"\"))+\"\\\"\";}else{formattedValue=val;}\r\nreturn formattedValue;}\r\nfor(i=0,len=dataValues.length-1;i<=len;i++){str+=this.tab+\"\\\"\"+dataValues[i][0]+\"\\\"\"+this.colon+formatValue(dataValues[i][1],this.tab,true);if(i<len){str+=\",\";}\r\nstr+=this.lineBreak;}\r\nstr+=\"}\"+this.lineBreak;return str;};JsonLayout.prototype.ignoresThrowable=function(){return false;};JsonLayout.prototype.toString=function(){return\"JsonLayout\";};JsonLayout.prototype.getContentType=function(){return\"application/json\";};log4javascript.JsonLayout=JsonLayout;function HttpPostDataLayout(){this.setKeys();this.customFields=[];this.returnsPostData=true;}\r\nHttpPostDataLayout.prototype=new Layout();HttpPostDataLayout.prototype.allowBatching=function(){return false;};HttpPostDataLayout.prototype.format=function(loggingEvent){var dataValues=this.getDataValues(loggingEvent);var queryBits=[];for(var i=0,len=dataValues.length;i<len;i++){var val=(dataValues[i][1]instanceof Date)?String(dataValues[i][1].getTime()):dataValues[i][1];queryBits.push(urlEncode(dataValues[i][0])+\"=\"+urlEncode(val));}\r\nreturn queryBits.join(\"&\");};HttpPostDataLayout.prototype.ignoresThrowable=function(loggingEvent){return false;};HttpPostDataLayout.prototype.toString=function(){return\"HttpPostDataLayout\";};log4javascript.HttpPostDataLayout=HttpPostDataLayout;function formatObjectExpansion(obj,depth,indentation){var objectsExpanded=[];function doFormat(obj,depth,indentation){var i,len,childDepth,childIndentation,childLines,expansion,childExpansion;if(!indentation){indentation=\"\";}\r\nfunction formatString(text){var lines=splitIntoLines(text);for(var j=1,jLen=lines.length;j<jLen;j++){lines[j]=indentation+lines[j];}\r\nreturn lines.join(newLine);}\r\nif(obj===null){return\"null\";}else if(typeof obj==\"undefined\"){return\"undefined\";}else if(typeof obj==\"string\"){return formatString(obj);}else if(typeof obj==\"object\"&&array_contains(objectsExpanded,obj)){try{expansion=toStr(obj);}catch(ex){expansion=\"Error formatting property. Details: \"+getExceptionStringRep(ex);}\r\nreturn expansion+\" [already expanded]\";}else if((obj instanceof Array)&&depth>0){objectsExpanded.push(obj);expansion=\"[\"+newLine;childDepth=depth-1;childIndentation=indentation+\" \";childLines=[];for(i=0,len=obj.length;i<len;i++){try{childExpansion=doFormat(obj[i],childDepth,childIndentation);childLines.push(childIndentation+childExpansion);}catch(ex){childLines.push(childIndentation+\"Error formatting array member. Details: \"+\r\ngetExceptionStringRep(ex)+\"\");}}\r\nexpansion+=childLines.join(\",\"+newLine)+newLine+indentation+\"]\";return expansion;}else if(Object.prototype.toString.call(obj)==\"[object Date]\"){return obj.toString();}else if(typeof obj==\"object\"&&depth>0){objectsExpanded.push(obj);expansion=\"{\"+newLine;childDepth=depth-1;childIndentation=indentation+\" \";childLines=[];for(i in obj){try{childExpansion=doFormat(obj[i],childDepth,childIndentation);childLines.push(childIndentation+i+\": \"+childExpansion);}catch(ex){childLines.push(childIndentation+i+\": Error formatting property. Details: \"+\r\ngetExceptionStringRep(ex));}}\r\nexpansion+=childLines.join(\",\"+newLine)+newLine+indentation+\"}\";return expansion;}else{return formatString(toStr(obj));}}\r\nreturn doFormat(obj,depth,indentation);}\r\nvar SimpleDateFormat;(function(){var regex=/('[^']*')|(G+|y+|M+|w+|W+|D+|d+|F+|E+|a+|H+|k+|K+|h+|m+|s+|S+|Z+)|([a-zA-Z]+)|([^a-zA-Z']+)/;var monthNames=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];var dayNames=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];var TEXT2=0,TEXT3=1,NUMBER=2,YEAR=3,MONTH=4,TIMEZONE=5;var types={G:TEXT2,y:YEAR,M:MONTH,w:NUMBER,W:NUMBER,D:NUMBER,d:NUMBER,F:NUMBER,E:TEXT3,a:TEXT2,H:NUMBER,k:NUMBER,K:NUMBER,h:NUMBER,m:NUMBER,s:NUMBER,S:NUMBER,Z:TIMEZONE};var ONE_DAY=24*60*60*1000;var ONE_WEEK=7*ONE_DAY;var DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK=1;var newDateAtMidnight=function(year,month,day){var d=new Date(year,month,day,0,0,0);d.setMilliseconds(0);return d;};Date.prototype.getDifference=function(date){return this.getTime()-date.getTime();};Date.prototype.isBefore=function(d){return this.getTime()<d.getTime();};Date.prototype.getUTCTime=function(){return Date.UTC(this.getFullYear(),this.getMonth(),this.getDate(),this.getHours(),this.getMinutes(),this.getSeconds(),this.getMilliseconds());};Date.prototype.getTimeSince=function(d){return this.getUTCTime()-d.getUTCTime();};Date.prototype.getPreviousSunday=function(){var midday=new Date(this.getFullYear(),this.getMonth(),this.getDate(),12,0,0);var previousSunday=new Date(midday.getTime()-this.getDay()*ONE_DAY);return newDateAtMidnight(previousSunday.getFullYear(),previousSunday.getMonth(),previousSunday.getDate());};Date.prototype.getWeekInYear=function(minimalDaysInFirstWeek){if(isUndefined(this.minimalDaysInFirstWeek)){minimalDaysInFirstWeek=DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK;}\r\nvar previousSunday=this.getPreviousSunday();var startOfYear=newDateAtMidnight(this.getFullYear(),0,1);var numberOfSundays=previousSunday.isBefore(startOfYear)?0:1+Math.floor(previousSunday.getTimeSince(startOfYear)/ONE_WEEK);var numberOfDaysInFirstWeek=7-startOfYear.getDay();var weekInYear=numberOfSundays;if(numberOfDaysInFirstWeek<minimalDaysInFirstWeek){weekInYear--;}\r\nreturn weekInYear;};Date.prototype.getWeekInMonth=function(minimalDaysInFirstWeek){if(isUndefined(this.minimalDaysInFirstWeek)){minimalDaysInFirstWeek=DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK;}\r\nvar previousSunday=this.getPreviousSunday();var startOfMonth=newDateAtMidnight(this.getFullYear(),this.getMonth(),1);var numberOfSundays=previousSunday.isBefore(startOfMonth)?0:1+Math.floor(previousSunday.getTimeSince(startOfMonth)/ONE_WEEK);var numberOfDaysInFirstWeek=7-startOfMonth.getDay();var weekInMonth=numberOfSundays;if(numberOfDaysInFirstWeek>=minimalDaysInFirstWeek){weekInMonth++;}\r\nreturn weekInMonth;};Date.prototype.getDayInYear=function(){var startOfYear=newDateAtMidnight(this.getFullYear(),0,1);return 1+Math.floor(this.getTimeSince(startOfYear)/ONE_DAY);};SimpleDateFormat=function(formatString){this.formatString=formatString;};SimpleDateFormat.prototype.setMinimalDaysInFirstWeek=function(days){this.minimalDaysInFirstWeek=days;};SimpleDateFormat.prototype.getMinimalDaysInFirstWeek=function(){return isUndefined(this.minimalDaysInFirstWeek)?DEFAULT_MINIMAL_DAYS_IN_FIRST_WEEK:this.minimalDaysInFirstWeek;};var padWithZeroes=function(str,len){while(str.length<len){str=\"0\"+str;}\r\nreturn str;};var formatText=function(data,numberOfLetters,minLength){return(numberOfLetters>=4)?data:data.substr(0,Math.max(minLength,numberOfLetters));};var formatNumber=function(data,numberOfLetters){var dataString=\"\"+data;return padWithZeroes(dataString,numberOfLetters);};SimpleDateFormat.prototype.format=function(date){var formattedString=\"\";var result;var searchString=this.formatString;while((result=regex.exec(searchString))){var quotedString=result[1];var patternLetters=result[2];var otherLetters=result[3];var otherCharacters=result[4];if(quotedString){if(quotedString==\"''\"){formattedString+=\"'\";}else{formattedString+=quotedString.substring(1,quotedString.length-1);}}else if(otherLetters){}else if(otherCharacters){formattedString+=otherCharacters;}else if(patternLetters){var patternLetter=patternLetters.charAt(0);var numberOfLetters=patternLetters.length;var rawData=\"\";switch(patternLetter){case\"G\":rawData=\"AD\";break;case\"y\":rawData=date.getFullYear();break;case\"M\":rawData=date.getMonth();break;case\"w\":rawData=date.getWeekInYear(this.getMinimalDaysInFirstWeek());break;case\"W\":rawData=date.getWeekInMonth(this.getMinimalDaysInFirstWeek());break;case\"D\":rawData=date.getDayInYear();break;case\"d\":rawData=date.getDate();break;case\"F\":rawData=1+Math.floor((date.getDate()-1)/7);break;case\"E\":rawData=dayNames[date.getDay()];break;case\"a\":rawData=(date.getHours()>=12)?\"PM\":\"AM\";break;case\"H\":rawData=date.getHours();break;case\"k\":rawData=date.getHours()||24;break;case\"K\":rawData=date.getHours()%12;break;case\"h\":rawData=(date.getHours()%12)||12;break;case\"m\":rawData=date.getMinutes();break;case\"s\":rawData=date.getSeconds();break;case\"S\":rawData=date.getMilliseconds();break;case\"Z\":rawData=date.getTimezoneOffset();break;}\r\nswitch(types[patternLetter]){case TEXT2:formattedString+=formatText(rawData,numberOfLetters,2);break;case TEXT3:formattedString+=formatText(rawData,numberOfLetters,3);break;case NUMBER:formattedString+=formatNumber(rawData,numberOfLetters);break;case YEAR:if(numberOfLetters<=3){var dataString=\"\"+rawData;formattedString+=dataString.substr(2,2);}else{formattedString+=formatNumber(rawData,numberOfLetters);}\r\nbreak;case MONTH:if(numberOfLetters>=3){formattedString+=formatText(monthNames[rawData],numberOfLetters,numberOfLetters);}else{formattedString+=formatNumber(rawData+1,numberOfLetters);}\r\nbreak;case TIMEZONE:var isPositive=(rawData>0);var prefix=isPositive?\"-\":\"+\";var absData=Math.abs(rawData);var hours=\"\"+Math.floor(absData/60);hours=padWithZeroes(hours,2);var minutes=\"\"+(absData%60);minutes=padWithZeroes(minutes,2);formattedString+=prefix+hours+minutes;break;}}\r\nsearchString=searchString.substr(result.index+result[0].length);}\r\nreturn formattedString;};})();log4javascript.SimpleDateFormat=SimpleDateFormat;function PatternLayout(pattern){if(pattern){this.pattern=pattern;}else{this.pattern=PatternLayout.DEFAULT_CONVERSION_PATTERN;}\r\nthis.customFields=[];}\r\nPatternLayout.TTCC_CONVERSION_PATTERN=\"%r %p %c - %m%n\";PatternLayout.DEFAULT_CONVERSION_PATTERN=\"%m%n\";PatternLayout.ISO8601_DATEFORMAT=\"yyyy-MM-dd HH:mm:ss,SSS\";PatternLayout.DATETIME_DATEFORMAT=\"dd MMM yyyy HH:mm:ss,SSS\";PatternLayout.ABSOLUTETIME_DATEFORMAT=\"HH:mm:ss,SSS\";PatternLayout.prototype=new Layout();PatternLayout.prototype.format=function(loggingEvent){var regex=/%(-?[0-9]+)?(\\.?[0-9]+)?([acdfmMnpr%])(\\{([^\\}]+)\\})?|([^%]+)/;var formattedString=\"\";var result;var searchString=this.pattern;while((result=regex.exec(searchString))){var matchedString=result[0];var padding=result[1];var truncation=result[2];var conversionCharacter=result[3];var specifier=result[5];var text=result[6];if(text){formattedString+=\"\"+text;}else{var replacement=\"\";switch(conversionCharacter){case\"a\":case\"m\":var depth=0;if(specifier){depth=parseInt(specifier,10);if(isNaN(depth)){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character '\"+conversionCharacter+\"' - should be a number\");depth=0;}}\r\nvar messages=(conversionCharacter===\"a\")?loggingEvent.messages[0]:loggingEvent.messages;for(var i=0,len=messages.length;i<len;i++){if(i>0&&(replacement.charAt(replacement.length-1)!==\" \")){replacement+=\" \";}\r\nif(depth===0){replacement+=messages[i];}else{replacement+=formatObjectExpansion(messages[i],depth);}}\r\nbreak;case\"c\":var loggerName=loggingEvent.logger.name;if(specifier){var precision=parseInt(specifier,10);var loggerNameBits=loggingEvent.logger.name.split(\".\");if(precision>=loggerNameBits.length){replacement=loggerName;}else{replacement=loggerNameBits.slice(loggerNameBits.length-precision).join(\".\");}}else{replacement=loggerName;}\r\nbreak;case\"d\":var dateFormat=PatternLayout.ISO8601_DATEFORMAT;if(specifier){dateFormat=specifier;if(dateFormat==\"ISO8601\"){dateFormat=PatternLayout.ISO8601_DATEFORMAT;}else if(dateFormat==\"ABSOLUTE\"){dateFormat=PatternLayout.ABSOLUTETIME_DATEFORMAT;}else if(dateFormat==\"DATE\"){dateFormat=PatternLayout.DATETIME_DATEFORMAT;}}\r\nreplacement=(new SimpleDateFormat(dateFormat)).format(loggingEvent.timeStamp);break;case\"f\":if(this.hasCustomFields()){var fieldIndex=0;if(specifier){fieldIndex=parseInt(specifier,10);if(isNaN(fieldIndex)){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character 'f' - should be a number\");}else if(fieldIndex===0){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character 'f' - must be greater than zero\");}else if(fieldIndex>this.customFields.length){handleError(\"PatternLayout.format: invalid specifier '\"+\r\nspecifier+\"' for conversion character 'f' - there aren't that many custom fields\");}else{fieldIndex=fieldIndex-1;}}\r\nvar val=this.customFields[fieldIndex].value;if(typeof val==\"function\"){val=val(this,loggingEvent);}\r\nreplacement=val;}\r\nbreak;case\"n\":replacement=newLine;break;case\"p\":replacement=loggingEvent.level.name;break;case\"r\":replacement=\"\"+loggingEvent.timeStamp.getDifference(applicationStartDate);break;case\"%\":replacement=\"%\";break;default:replacement=matchedString;break;}\r\nvar l;if(truncation){l=parseInt(truncation.substr(1),10);var strLen=replacement.length;if(l<strLen){replacement=replacement.substring(strLen-l,strLen);}}\r\nif(padding){if(padding.charAt(0)==\"-\"){l=parseInt(padding.substr(1),10);while(replacement.length<l){replacement+=\" \";}}else{l=parseInt(padding,10);while(replacement.length<l){replacement=\" \"+replacement;}}}\r\nformattedString+=replacement;}\r\nsearchString=searchString.substr(result.index+result[0].length);}\r\nreturn formattedString;};PatternLayout.prototype.ignoresThrowable=function(){return true;};PatternLayout.prototype.toString=function(){return\"PatternLayout\";};log4javascript.PatternLayout=PatternLayout;function AlertAppender(){}\r\nAlertAppender.prototype=new Appender();AlertAppender.prototype.layout=new SimpleLayout();AlertAppender.prototype.append=function(loggingEvent){alert(this.getLayout().formatWithException(loggingEvent));};AlertAppender.prototype.toString=function(){return\"AlertAppender\";};log4javascript.AlertAppender=AlertAppender;function BrowserConsoleAppender(){}\r\nBrowserConsoleAppender.prototype=new log4javascript.Appender();BrowserConsoleAppender.prototype.layout=new NullLayout();BrowserConsoleAppender.prototype.threshold=Level.DEBUG;BrowserConsoleAppender.prototype.append=function(loggingEvent){var appender=this;var getFormattedMessage=function(concatenate){var formattedMessage=appender.getLayout().formatWithException(loggingEvent);return(typeof formattedMessage==\"string\")?(concatenate?formattedMessage:[formattedMessage]):(concatenate?formattedMessage.join(\" \"):formattedMessage);};var console=window.console;if(console&&console.log){var consoleMethodName;if(console.debug&&Level.DEBUG.isGreaterOrEqual(loggingEvent.level)){consoleMethodName=\"debug\";}else if(console.info&&Level.INFO.equals(loggingEvent.level)){consoleMethodName=\"info\";}else if(console.warn&&Level.WARN.equals(loggingEvent.level)){consoleMethodName=\"warn\";}else if(console.error&&loggingEvent.level.isGreaterOrEqual(Level.ERROR)){consoleMethodName=\"error\";}else{consoleMethodName=\"log\";}\r\nif(typeof console[consoleMethodName].apply==\"function\"){console[consoleMethodName].apply(console,getFormattedMessage(false));}else{console[consoleMethodName](getFormattedMessage(true));}}else if((typeof opera!=\"undefined\")&&opera.postError){opera.postError(getFormattedMessage(true));}};BrowserConsoleAppender.prototype.group=function(name){if(window.console&&window.console.group){window.console.group(name);}};BrowserConsoleAppender.prototype.groupEnd=function(){if(window.console&&window.console.groupEnd){window.console.groupEnd();}};BrowserConsoleAppender.prototype.toString=function(){return\"BrowserConsoleAppender\";};log4javascript.BrowserConsoleAppender=BrowserConsoleAppender;var xhrFactory=function(){return new XMLHttpRequest();};var xmlHttpFactories=[xhrFactory,function(){return new ActiveXObject(\"Msxml2.XMLHTTP\");},function(){return new ActiveXObject(\"Microsoft.XMLHTTP\");}];var withCredentialsSupported=false;var getXmlHttp=function(errorHandler){var xmlHttp=null,factory;for(var i=0,len=xmlHttpFactories.length;i<len;i++){factory=xmlHttpFactories[i];try{xmlHttp=factory();withCredentialsSupported=(factory==xhrFactory&&(\"withCredentials\"in xmlHttp));getXmlHttp=factory;return xmlHttp;}catch(e){}}\r\nif(errorHandler){errorHandler();}else{handleError(\"getXmlHttp: unable to obtain XMLHttpRequest object\");}};function isHttpRequestSuccessful(xmlHttp){return isUndefined(xmlHttp.status)||xmlHttp.status===0||(xmlHttp.status>=200&&xmlHttp.status<300)||xmlHttp.status==1223;}\r\nfunction AjaxAppender(url,withCredentials){var appender=this;var isSupported=true;if(!url){handleError(\"AjaxAppender: URL must be specified in constructor\");isSupported=false;}\r\nvar timed=this.defaults.timed;var waitForResponse=this.defaults.waitForResponse;var batchSize=this.defaults.batchSize;var timerInterval=this.defaults.timerInterval;var requestSuccessCallback=this.defaults.requestSuccessCallback;var failCallback=this.defaults.failCallback;var postVarName=this.defaults.postVarName;var sendAllOnUnload=this.defaults.sendAllOnUnload;var contentType=this.defaults.contentType;var sessionId=null;var queuedLoggingEvents=[];var queuedRequests=[];var headers=[];var sending=false;var initialized=false;function checkCanConfigure(configOptionName){if(initialized){handleError(\"AjaxAppender: configuration option '\"+\r\nconfigOptionName+\"' may not be set after the appender has been initialized\");return false;}\r\nreturn true;}\r\nthis.getSessionId=function(){return sessionId;};this.setSessionId=function(sessionIdParam){sessionId=extractStringFromParam(sessionIdParam,null);this.layout.setCustomField(\"sessionid\",sessionId);};this.setLayout=function(layoutParam){if(checkCanConfigure(\"layout\")){this.layout=layoutParam;if(sessionId!==null){this.setSessionId(sessionId);}}};this.isTimed=function(){return timed;};this.setTimed=function(timedParam){if(checkCanConfigure(\"timed\")){timed=bool(timedParam);}};this.getTimerInterval=function(){return timerInterval;};this.setTimerInterval=function(timerIntervalParam){if(checkCanConfigure(\"timerInterval\")){timerInterval=extractIntFromParam(timerIntervalParam,timerInterval);}};this.isWaitForResponse=function(){return waitForResponse;};this.setWaitForResponse=function(waitForResponseParam){if(checkCanConfigure(\"waitForResponse\")){waitForResponse=bool(waitForResponseParam);}};this.getBatchSize=function(){return batchSize;};this.setBatchSize=function(batchSizeParam){if(checkCanConfigure(\"batchSize\")){batchSize=extractIntFromParam(batchSizeParam,batchSize);}};this.isSendAllOnUnload=function(){return sendAllOnUnload;};this.setSendAllOnUnload=function(sendAllOnUnloadParam){if(checkCanConfigure(\"sendAllOnUnload\")){sendAllOnUnload=extractBooleanFromParam(sendAllOnUnloadParam,sendAllOnUnload);}};this.setRequestSuccessCallback=function(requestSuccessCallbackParam){requestSuccessCallback=extractFunctionFromParam(requestSuccessCallbackParam,requestSuccessCallback);};this.setFailCallback=function(failCallbackParam){failCallback=extractFunctionFromParam(failCallbackParam,failCallback);};this.getPostVarName=function(){return postVarName;};this.setPostVarName=function(postVarNameParam){if(checkCanConfigure(\"postVarName\")){postVarName=extractStringFromParam(postVarNameParam,postVarName);}};this.getHeaders=function(){return headers;};this.addHeader=function(name,value){if(name.toLowerCase()==\"content-type\"){contentType=value;}else{headers.push({name:name,value:value});}};function sendAll(){if(isSupported&&enabled){sending=true;var currentRequestBatch;if(waitForResponse){if(queuedRequests.length>0){currentRequestBatch=queuedRequests.shift();sendRequest(preparePostData(currentRequestBatch),sendAll);}else{sending=false;if(timed){scheduleSending();}}}else{while((currentRequestBatch=queuedRequests.shift())){sendRequest(preparePostData(currentRequestBatch));}\r\nsending=false;if(timed){scheduleSending();}}}}\r\nthis.sendAll=sendAll;function sendAllRemaining(){var sendingAnything=false;if(isSupported&&enabled){var actualBatchSize=appender.getLayout().allowBatching()?batchSize:1;var currentLoggingEvent;var batchedLoggingEvents=[];while((currentLoggingEvent=queuedLoggingEvents.shift())){batchedLoggingEvents.push(currentLoggingEvent);if(queuedLoggingEvents.length>=actualBatchSize){queuedRequests.push(batchedLoggingEvents);batchedLoggingEvents=[];}}\r\nif(batchedLoggingEvents.length>0){queuedRequests.push(batchedLoggingEvents);}\r\nsendingAnything=(queuedRequests.length>0);waitForResponse=false;timed=false;sendAll();}\r\nreturn sendingAnything;}\r\nthis.sendAllRemaining=sendAllRemaining;function preparePostData(batchedLoggingEvents){var formattedMessages=[];var currentLoggingEvent;var postData=\"\";while((currentLoggingEvent=batchedLoggingEvents.shift())){formattedMessages.push(appender.getLayout().formatWithException(currentLoggingEvent));}\r\nif(batchedLoggingEvents.length==1){postData=formattedMessages.join(\"\");}else{postData=appender.getLayout().batchHeader+\r\nformattedMessages.join(appender.getLayout().batchSeparator)+\r\nappender.getLayout().batchFooter;}\r\nif(contentType==appender.defaults.contentType){postData=appender.getLayout().returnsPostData?postData:urlEncode(postVarName)+\"=\"+urlEncode(postData);if(postData.length>0){postData+=\"&\";}\r\npostData+=\"layout=\"+urlEncode(appender.getLayout().toString());}\r\nreturn postData;}\r\nfunction scheduleSending(){window.setTimeout(sendAll,timerInterval);}\r\nfunction xmlHttpErrorHandler(){var msg=\"AjaxAppender: could not create XMLHttpRequest object. AjaxAppender disabled\";handleError(msg);isSupported=false;if(failCallback){failCallback(msg);}}\r\nfunction sendRequest(postData,successCallback){try{var xmlHttp=getXmlHttp(xmlHttpErrorHandler);if(isSupported){xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4){if(isHttpRequestSuccessful(xmlHttp)){if(requestSuccessCallback){requestSuccessCallback(xmlHttp);}\r\nif(successCallback){successCallback(xmlHttp);}}else{var msg=\"AjaxAppender.append: XMLHttpRequest request to URL \"+\r\nurl+\" returned status code \"+xmlHttp.status;handleError(msg);if(failCallback){failCallback(msg);}}\r\nxmlHttp.onreadystatechange=emptyFunction;xmlHttp=null;}};xmlHttp.open(\"POST\",url,true);if(withCredentials&&withCredentialsSupported){xmlHttp.withCredentials=true;}\r\ntry{for(var i=0,header;header=headers[i++];){xmlHttp.setRequestHeader(header.name,header.value);}\r\nxmlHttp.setRequestHeader(\"Content-Type\",contentType);}catch(headerEx){var msg=\"AjaxAppender.append: your browser's XMLHttpRequest implementation\"+\" does not support setRequestHeader, therefore cannot post data. AjaxAppender disabled\";handleError(msg);isSupported=false;if(failCallback){failCallback(msg);}\r\nreturn;}\r\nxmlHttp.send(postData);}}catch(ex){var errMsg=\"AjaxAppender.append: error sending log message to \"+url;handleError(errMsg,ex);isSupported=false;if(failCallback){failCallback(errMsg+\". Details: \"+getExceptionStringRep(ex));}}}\r\nthis.append=function(loggingEvent){if(isSupported){if(!initialized){init();}\r\nqueuedLoggingEvents.push(loggingEvent);var actualBatchSize=this.getLayout().allowBatching()?batchSize:1;if(queuedLoggingEvents.length>=actualBatchSize){var currentLoggingEvent;var batchedLoggingEvents=[];while((currentLoggingEvent=queuedLoggingEvents.shift())){batchedLoggingEvents.push(currentLoggingEvent);}\r\nqueuedRequests.push(batchedLoggingEvents);if(!timed&&(!waitForResponse||(waitForResponse&&!sending))){sendAll();}}}};function init(){initialized=true;if(sendAllOnUnload){var oldBeforeUnload=window.onbeforeunload;window.onbeforeunload=function(){if(oldBeforeUnload){oldBeforeUnload();}\r\nsendAllRemaining();};}\r\nif(timed){scheduleSending();}}}\r\nAjaxAppender.prototype=new Appender();AjaxAppender.prototype.defaults={waitForResponse:false,timed:false,timerInterval:1000,batchSize:1,sendAllOnUnload:false,requestSuccessCallback:null,failCallback:null,postVarName:\"data\",contentType:\"application/x-www-form-urlencoded\"};AjaxAppender.prototype.layout=new HttpPostDataLayout();AjaxAppender.prototype.toString=function(){return\"AjaxAppender\";};log4javascript.AjaxAppender=AjaxAppender;function setCookie(name,value,days,path){var expires;path=path?\"; path=\"+path:\"\";if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));expires=\"; expires=\"+date.toGMTString();}else{expires=\"\";}\r\ndocument.cookie=escape(name)+\"=\"+escape(value)+expires+path;}\r\nfunction getCookie(name){var nameEquals=escape(name)+\"=\";var ca=document.cookie.split(\";\");for(var i=0,len=ca.length;i<len;i++){var c=ca[i];while(c.charAt(0)===\" \"){c=c.substring(1,c.length);}\r\nif(c.indexOf(nameEquals)===0){return unescape(c.substring(nameEquals.length,c.length));}}\r\nreturn null;}\r\nfunction getBaseUrl(){var scripts=document.getElementsByTagName(\"script\");for(var i=0,len=scripts.length;i<len;++i){if(scripts[i].src.indexOf(\"log4javascript\")!=-1){var lastSlash=scripts[i].src.lastIndexOf(\"/\");return(lastSlash==-1)?\"\":scripts[i].src.substr(0,lastSlash+1);}}\r\nreturn null;}\r\nfunction isLoaded(win){try{return bool(win.loaded);}catch(ex){return false;}}\r\nvar ConsoleAppender;(function(){var getConsoleHtmlLines=function(){return['<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">','<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\">','<head>','<title>log4javascript</title>','<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />','<!-- Make IE8 behave like IE7, having gone to all the trouble of making IE work -->','<meta http-equiv=\"X-UA-Compatible\" content=\"IE=7\" />','<script type=\"text/javascript\">var isIe = false, isIePre7 = false;</script>','<!--[if IE]><script type=\"text/javascript\">isIe = true</script><![endif]-->','<!--[if lt IE 7]><script type=\"text/javascript\">isIePre7 = true</script><![endif]-->','<script type=\"text/javascript\">','//<![CDATA[','var loggingEnabled=true;var logQueuedEventsTimer=null;var logEntries=[];var logEntriesAndSeparators=[];var logItems=[];var renderDelay=100;var unrenderedLogItemsExist=false;var rootGroup,currentGroup=null;var loaded=false;var currentLogItem=null;var logMainContainer;function copyProperties(obj,props){for(var i in props){obj[i]=props[i];}}','function LogItem(){}','LogItem.prototype={mainContainer:null,wrappedContainer:null,unwrappedContainer:null,group:null,appendToLog:function(){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].appendToLog();}','this.group.update();},doRemove:function(doUpdate,removeFromGroup){if(this.rendered){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].remove();}','this.unwrappedElementContainer=null;this.wrappedElementContainer=null;this.mainElementContainer=null;}','if(this.group&&removeFromGroup){this.group.removeChild(this,doUpdate);}','if(this===currentLogItem){currentLogItem=null;}},remove:function(doUpdate,removeFromGroup){this.doRemove(doUpdate,removeFromGroup);},render:function(){},accept:function(visitor){visitor.visit(this);},getUnwrappedDomContainer:function(){return this.group.unwrappedElementContainer.contentDiv;},getWrappedDomContainer:function(){return this.group.wrappedElementContainer.contentDiv;},getMainDomContainer:function(){return this.group.mainElementContainer.contentDiv;}};LogItem.serializedItemKeys={LOG_ENTRY:0,GROUP_START:1,GROUP_END:2};function LogItemContainerElement(){}','LogItemContainerElement.prototype={appendToLog:function(){var insertBeforeFirst=(newestAtTop&&this.containerDomNode.hasChildNodes());if(insertBeforeFirst){this.containerDomNode.insertBefore(this.mainDiv,this.containerDomNode.firstChild);}else{this.containerDomNode.appendChild(this.mainDiv);}}};function SeparatorElementContainer(containerDomNode){this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"separator\";this.mainDiv.innerHTML=\"&nbsp;\";}','SeparatorElementContainer.prototype=new LogItemContainerElement();SeparatorElementContainer.prototype.remove=function(){this.mainDiv.parentNode.removeChild(this.mainDiv);this.mainDiv=null;};function Separator(){this.rendered=false;}','Separator.prototype=new LogItem();copyProperties(Separator.prototype,{render:function(){var containerDomNode=this.group.contentDiv;if(isIe){this.unwrappedElementContainer=new SeparatorElementContainer(this.getUnwrappedDomContainer());this.wrappedElementContainer=new SeparatorElementContainer(this.getWrappedDomContainer());this.elementContainers=[this.unwrappedElementContainer,this.wrappedElementContainer];}else{this.mainElementContainer=new SeparatorElementContainer(this.getMainDomContainer());this.elementContainers=[this.mainElementContainer];}','this.content=this.formattedMessage;this.rendered=true;}});function GroupElementContainer(group,containerDomNode,isRoot,isWrapped){this.group=group;this.containerDomNode=containerDomNode;this.isRoot=isRoot;this.isWrapped=isWrapped;this.expandable=false;if(this.isRoot){if(isIe){this.contentDiv=logMainContainer.appendChild(document.createElement(\"div\"));this.contentDiv.id=this.isWrapped?\"log_wrapped\":\"log_unwrapped\";}else{this.contentDiv=logMainContainer;}}else{var groupElementContainer=this;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"group\";this.headingDiv=this.mainDiv.appendChild(document.createElement(\"div\"));this.headingDiv.className=\"groupheading\";this.expander=this.headingDiv.appendChild(document.createElement(\"span\"));this.expander.className=\"expander unselectable greyedout\";this.expander.unselectable=true;var expanderText=this.group.expanded?\"-\":\"+\";this.expanderTextNode=this.expander.appendChild(document.createTextNode(expanderText));this.headingDiv.appendChild(document.createTextNode(\" \"+this.group.name));this.contentDiv=this.mainDiv.appendChild(document.createElement(\"div\"));var contentCssClass=this.group.expanded?\"expanded\":\"collapsed\";this.contentDiv.className=\"groupcontent \"+contentCssClass;this.expander.onclick=function(){if(groupElementContainer.group.expandable){groupElementContainer.group.toggleExpanded();}};}}','GroupElementContainer.prototype=new LogItemContainerElement();copyProperties(GroupElementContainer.prototype,{toggleExpanded:function(){if(!this.isRoot){var oldCssClass,newCssClass,expanderText;if(this.group.expanded){newCssClass=\"expanded\";oldCssClass=\"collapsed\";expanderText=\"-\";}else{newCssClass=\"collapsed\";oldCssClass=\"expanded\";expanderText=\"+\";}','replaceClass(this.contentDiv,newCssClass,oldCssClass);this.expanderTextNode.nodeValue=expanderText;}},remove:function(){if(!this.isRoot){this.headingDiv=null;this.expander.onclick=null;this.expander=null;this.expanderTextNode=null;this.contentDiv=null;this.containerDomNode=null;this.mainDiv.parentNode.removeChild(this.mainDiv);this.mainDiv=null;}},reverseChildren:function(){var node=null;var childDomNodes=[];while((node=this.contentDiv.firstChild)){this.contentDiv.removeChild(node);childDomNodes.push(node);}','while((node=childDomNodes.pop())){this.contentDiv.appendChild(node);}},update:function(){if(!this.isRoot){if(this.group.expandable){removeClass(this.expander,\"greyedout\");}else{addClass(this.expander,\"greyedout\");}}},clear:function(){if(this.isRoot){this.contentDiv.innerHTML=\"\";}}});function Group(name,isRoot,initiallyExpanded){this.name=name;this.group=null;this.isRoot=isRoot;this.initiallyExpanded=initiallyExpanded;this.elementContainers=[];this.children=[];this.expanded=initiallyExpanded;this.rendered=false;this.expandable=false;}','Group.prototype=new LogItem();copyProperties(Group.prototype,{addChild:function(logItem){this.children.push(logItem);logItem.group=this;},render:function(){if(isIe){var unwrappedDomContainer,wrappedDomContainer;if(this.isRoot){unwrappedDomContainer=logMainContainer;wrappedDomContainer=logMainContainer;}else{unwrappedDomContainer=this.getUnwrappedDomContainer();wrappedDomContainer=this.getWrappedDomContainer();}','this.unwrappedElementContainer=new GroupElementContainer(this,unwrappedDomContainer,this.isRoot,false);this.wrappedElementContainer=new GroupElementContainer(this,wrappedDomContainer,this.isRoot,true);this.elementContainers=[this.unwrappedElementContainer,this.wrappedElementContainer];}else{var mainDomContainer=this.isRoot?logMainContainer:this.getMainDomContainer();this.mainElementContainer=new GroupElementContainer(this,mainDomContainer,this.isRoot,false);this.elementContainers=[this.mainElementContainer];}','this.rendered=true;},toggleExpanded:function(){this.expanded=!this.expanded;for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].toggleExpanded();}},expand:function(){if(!this.expanded){this.toggleExpanded();}},accept:function(visitor){visitor.visitGroup(this);},reverseChildren:function(){if(this.rendered){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].reverseChildren();}}},update:function(){var previouslyExpandable=this.expandable;this.expandable=(this.children.length!==0);if(this.expandable!==previouslyExpandable){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].update();}}},flatten:function(){var visitor=new GroupFlattener();this.accept(visitor);return visitor.logEntriesAndSeparators;},removeChild:function(child,doUpdate){array_remove(this.children,child);child.group=null;if(doUpdate){this.update();}},remove:function(doUpdate,removeFromGroup){for(var i=0,len=this.children.length;i<len;i++){this.children[i].remove(false,false);}','this.children=[];this.update();if(this===currentGroup){currentGroup=this.group;}','this.doRemove(doUpdate,removeFromGroup);},serialize:function(items){items.push([LogItem.serializedItemKeys.GROUP_START,this.name]);for(var i=0,len=this.children.length;i<len;i++){this.children[i].serialize(items);}','if(this!==currentGroup){items.push([LogItem.serializedItemKeys.GROUP_END]);}},clear:function(){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].clear();}}});function LogEntryElementContainer(){}','LogEntryElementContainer.prototype=new LogItemContainerElement();copyProperties(LogEntryElementContainer.prototype,{remove:function(){this.doRemove();},doRemove:function(){this.mainDiv.parentNode.removeChild(this.mainDiv);this.mainDiv=null;this.contentElement=null;this.containerDomNode=null;},setContent:function(content,wrappedContent){if(content===this.formattedMessage){this.contentElement.innerHTML=\"\";this.contentElement.appendChild(document.createTextNode(this.formattedMessage));}else{this.contentElement.innerHTML=content;}},setSearchMatch:function(isMatch){var oldCssClass=isMatch?\"searchnonmatch\":\"searchmatch\";var newCssClass=isMatch?\"searchmatch\":\"searchnonmatch\";replaceClass(this.mainDiv,newCssClass,oldCssClass);},clearSearch:function(){removeClass(this.mainDiv,\"searchmatch\");removeClass(this.mainDiv,\"searchnonmatch\");}});function LogEntryWrappedElementContainer(logEntry,containerDomNode){this.logEntry=logEntry;this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.appendChild(document.createTextNode(this.logEntry.formattedMessage));this.mainDiv.className=\"logentry wrapped \"+this.logEntry.level;this.contentElement=this.mainDiv;}','LogEntryWrappedElementContainer.prototype=new LogEntryElementContainer();LogEntryWrappedElementContainer.prototype.setContent=function(content,wrappedContent){if(content===this.formattedMessage){this.contentElement.innerHTML=\"\";this.contentElement.appendChild(document.createTextNode(this.formattedMessage));}else{this.contentElement.innerHTML=wrappedContent;}};function LogEntryUnwrappedElementContainer(logEntry,containerDomNode){this.logEntry=logEntry;this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"logentry unwrapped \"+this.logEntry.level;this.pre=this.mainDiv.appendChild(document.createElement(\"pre\"));this.pre.appendChild(document.createTextNode(this.logEntry.formattedMessage));this.pre.className=\"unwrapped\";this.contentElement=this.pre;}','LogEntryUnwrappedElementContainer.prototype=new LogEntryElementContainer();LogEntryUnwrappedElementContainer.prototype.remove=function(){this.doRemove();this.pre=null;};function LogEntryMainElementContainer(logEntry,containerDomNode){this.logEntry=logEntry;this.containerDomNode=containerDomNode;this.mainDiv=document.createElement(\"div\");this.mainDiv.className=\"logentry nonielogentry \"+this.logEntry.level;this.contentElement=this.mainDiv.appendChild(document.createElement(\"span\"));this.contentElement.appendChild(document.createTextNode(this.logEntry.formattedMessage));}','LogEntryMainElementContainer.prototype=new LogEntryElementContainer();function LogEntry(level,formattedMessage){this.level=level;this.formattedMessage=formattedMessage;this.rendered=false;}','LogEntry.prototype=new LogItem();copyProperties(LogEntry.prototype,{render:function(){var logEntry=this;var containerDomNode=this.group.contentDiv;if(isIe){this.formattedMessage=this.formattedMessage.replace(/\\\\r\\\\n/g,\"\\\\r\");this.unwrappedElementContainer=new LogEntryUnwrappedElementContainer(this,this.getUnwrappedDomContainer());this.wrappedElementContainer=new LogEntryWrappedElementContainer(this,this.getWrappedDomContainer());this.elementContainers=[this.unwrappedElementContainer,this.wrappedElementContainer];}else{this.mainElementContainer=new LogEntryMainElementContainer(this,this.getMainDomContainer());this.elementContainers=[this.mainElementContainer];}','this.content=this.formattedMessage;this.rendered=true;},setContent:function(content,wrappedContent){if(content!=this.content){if(isIe&&(content!==this.formattedMessage)){content=content.replace(/\\\\r\\\\n/g,\"\\\\r\");}','for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].setContent(content,wrappedContent);}','this.content=content;}},getSearchMatches:function(){var matches=[];var i,len;if(isIe){var unwrappedEls=getElementsByClass(this.unwrappedElementContainer.mainDiv,\"searchterm\",\"span\");var wrappedEls=getElementsByClass(this.wrappedElementContainer.mainDiv,\"searchterm\",\"span\");for(i=0,len=unwrappedEls.length;i<len;i++){matches[i]=new Match(this.level,null,unwrappedEls[i],wrappedEls[i]);}}else{var els=getElementsByClass(this.mainElementContainer.mainDiv,\"searchterm\",\"span\");for(i=0,len=els.length;i<len;i++){matches[i]=new Match(this.level,els[i]);}}','return matches;},setSearchMatch:function(isMatch){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].setSearchMatch(isMatch);}},clearSearch:function(){for(var i=0,len=this.elementContainers.length;i<len;i++){this.elementContainers[i].clearSearch();}},accept:function(visitor){visitor.visitLogEntry(this);},serialize:function(items){items.push([LogItem.serializedItemKeys.LOG_ENTRY,this.level,this.formattedMessage]);}});function LogItemVisitor(){}','LogItemVisitor.prototype={visit:function(logItem){},visitParent:function(logItem){if(logItem.group){logItem.group.accept(this);}},visitChildren:function(logItem){for(var i=0,len=logItem.children.length;i<len;i++){logItem.children[i].accept(this);}},visitLogEntry:function(logEntry){this.visit(logEntry);},visitSeparator:function(separator){this.visit(separator);},visitGroup:function(group){this.visit(group);}};function GroupFlattener(){this.logEntriesAndSeparators=[];}','GroupFlattener.prototype=new LogItemVisitor();GroupFlattener.prototype.visitGroup=function(group){this.visitChildren(group);};GroupFlattener.prototype.visitLogEntry=function(logEntry){this.logEntriesAndSeparators.push(logEntry);};GroupFlattener.prototype.visitSeparator=function(separator){this.logEntriesAndSeparators.push(separator);};window.onload=function(){if(location.search){var queryBits=unescape(location.search).substr(1).split(\"&\"),nameValueBits;for(var i=0,len=queryBits.length;i<len;i++){nameValueBits=queryBits[i].split(\"=\");if(nameValueBits[0]==\"log4javascript_domain\"){document.domain=nameValueBits[1];break;}}}','logMainContainer=$(\"log\");if(isIePre7){addClass(logMainContainer,\"oldIe\");}','rootGroup=new Group(\"root\",true);rootGroup.render();currentGroup=rootGroup;setCommandInputWidth();setLogContainerHeight();toggleLoggingEnabled();toggleSearchEnabled();toggleSearchFilter();toggleSearchHighlight();applyFilters();checkAllLevels();toggleWrap();toggleNewestAtTop();toggleScrollToLatest();renderQueuedLogItems();loaded=true;$(\"command\").value=\"\";$(\"command\").autocomplete=\"off\";$(\"command\").onkeydown=function(evt){evt=getEvent(evt);if(evt.keyCode==10||evt.keyCode==13){evalCommandLine();stopPropagation(evt);}else if(evt.keyCode==27){this.value=\"\";this.focus();}else if(evt.keyCode==38&&commandHistory.length>0){currentCommandIndex=Math.max(0,currentCommandIndex-1);this.value=commandHistory[currentCommandIndex];moveCaretToEnd(this);}else if(evt.keyCode==40&&commandHistory.length>0){currentCommandIndex=Math.min(commandHistory.length-1,currentCommandIndex+1);this.value=commandHistory[currentCommandIndex];moveCaretToEnd(this);}};$(\"command\").onkeypress=function(evt){evt=getEvent(evt);if(evt.keyCode==38&&commandHistory.length>0&&evt.preventDefault){evt.preventDefault();}};$(\"command\").onkeyup=function(evt){evt=getEvent(evt);if(evt.keyCode==27&&evt.preventDefault){evt.preventDefault();this.focus();}};document.onkeydown=function keyEventHandler(evt){evt=getEvent(evt);switch(evt.keyCode){case 69:if(evt.shiftKey&&(evt.ctrlKey||evt.metaKey)){evalLastCommand();cancelKeyEvent(evt);return false;}','break;case 75:if(evt.shiftKey&&(evt.ctrlKey||evt.metaKey)){focusSearch();cancelKeyEvent(evt);return false;}','break;case 40:case 76:if(evt.shiftKey&&(evt.ctrlKey||evt.metaKey)){focusCommandLine();cancelKeyEvent(evt);return false;}','break;}};setTimeout(setLogContainerHeight,20);setShowCommandLine(showCommandLine);doSearch();};window.onunload=function(){if(mainWindowExists()){appender.unload();}','appender=null;};function toggleLoggingEnabled(){setLoggingEnabled($(\"enableLogging\").checked);}','function setLoggingEnabled(enable){loggingEnabled=enable;}','var appender=null;function setAppender(appenderParam){appender=appenderParam;}','function setShowCloseButton(showCloseButton){$(\"closeButton\").style.display=showCloseButton?\"inline\":\"none\";}','function setShowHideButton(showHideButton){$(\"hideButton\").style.display=showHideButton?\"inline\":\"none\";}','var newestAtTop=false;function LogItemContentReverser(){}','LogItemContentReverser.prototype=new LogItemVisitor();LogItemContentReverser.prototype.visitGroup=function(group){group.reverseChildren();this.visitChildren(group);};function setNewestAtTop(isNewestAtTop){var oldNewestAtTop=newestAtTop;var i,iLen,j,jLen;newestAtTop=Boolean(isNewestAtTop);if(oldNewestAtTop!=newestAtTop){var visitor=new LogItemContentReverser();rootGroup.accept(visitor);if(currentSearch){var currentMatch=currentSearch.matches[currentMatchIndex];var matchIndex=0;var matches=[];var actOnLogEntry=function(logEntry){var logEntryMatches=logEntry.getSearchMatches();for(j=0,jLen=logEntryMatches.length;j<jLen;j++){matches[matchIndex]=logEntryMatches[j];if(currentMatch&&logEntryMatches[j].equals(currentMatch)){currentMatchIndex=matchIndex;}','matchIndex++;}};if(newestAtTop){for(i=logEntries.length-1;i>=0;i--){actOnLogEntry(logEntries[i]);}}else{for(i=0,iLen=logEntries.length;i<iLen;i++){actOnLogEntry(logEntries[i]);}}','currentSearch.matches=matches;if(currentMatch){currentMatch.setCurrent();}}else if(scrollToLatest){doScrollToLatest();}}','$(\"newestAtTop\").checked=isNewestAtTop;}','function toggleNewestAtTop(){var isNewestAtTop=$(\"newestAtTop\").checked;setNewestAtTop(isNewestAtTop);}','var scrollToLatest=true;function setScrollToLatest(isScrollToLatest){scrollToLatest=isScrollToLatest;if(scrollToLatest){doScrollToLatest();}','$(\"scrollToLatest\").checked=isScrollToLatest;}','function toggleScrollToLatest(){var isScrollToLatest=$(\"scrollToLatest\").checked;setScrollToLatest(isScrollToLatest);}','function doScrollToLatest(){var l=logMainContainer;if(typeof l.scrollTop!=\"undefined\"){if(newestAtTop){l.scrollTop=0;}else{var latestLogEntry=l.lastChild;if(latestLogEntry){l.scrollTop=l.scrollHeight;}}}}','var closeIfOpenerCloses=true;function setCloseIfOpenerCloses(isCloseIfOpenerCloses){closeIfOpenerCloses=isCloseIfOpenerCloses;}','var maxMessages=null;function setMaxMessages(max){maxMessages=max;pruneLogEntries();}','var showCommandLine=false;function setShowCommandLine(isShowCommandLine){showCommandLine=isShowCommandLine;if(loaded){$(\"commandLine\").style.display=showCommandLine?\"block\":\"none\";setCommandInputWidth();setLogContainerHeight();}}','function focusCommandLine(){if(loaded){$(\"command\").focus();}}','function focusSearch(){if(loaded){$(\"searchBox\").focus();}}','function getLogItems(){var items=[];for(var i=0,len=logItems.length;i<len;i++){logItems[i].serialize(items);}','return items;}','function setLogItems(items){var loggingReallyEnabled=loggingEnabled;loggingEnabled=true;for(var i=0,len=items.length;i<len;i++){switch(items[i][0]){case LogItem.serializedItemKeys.LOG_ENTRY:log(items[i][1],items[i][2]);break;case LogItem.serializedItemKeys.GROUP_START:group(items[i][1]);break;case LogItem.serializedItemKeys.GROUP_END:groupEnd();break;}}','loggingEnabled=loggingReallyEnabled;}','function log(logLevel,formattedMessage){if(loggingEnabled){var logEntry=new LogEntry(logLevel,formattedMessage);logEntries.push(logEntry);logEntriesAndSeparators.push(logEntry);logItems.push(logEntry);currentGroup.addChild(logEntry);if(loaded){if(logQueuedEventsTimer!==null){clearTimeout(logQueuedEventsTimer);}','logQueuedEventsTimer=setTimeout(renderQueuedLogItems,renderDelay);unrenderedLogItemsExist=true;}}}','function renderQueuedLogItems(){logQueuedEventsTimer=null;var pruned=pruneLogEntries();var initiallyHasMatches=currentSearch?currentSearch.hasMatches():false;for(var i=0,len=logItems.length;i<len;i++){if(!logItems[i].rendered){logItems[i].render();logItems[i].appendToLog();if(currentSearch&&(logItems[i]instanceof LogEntry)){currentSearch.applyTo(logItems[i]);}}}','if(currentSearch){if(pruned){if(currentSearch.hasVisibleMatches()){if(currentMatchIndex===null){setCurrentMatchIndex(0);}','displayMatches();}else{displayNoMatches();}}else if(!initiallyHasMatches&&currentSearch.hasVisibleMatches()){setCurrentMatchIndex(0);displayMatches();}}','if(scrollToLatest){doScrollToLatest();}','unrenderedLogItemsExist=false;}','function pruneLogEntries(){if((maxMessages!==null)&&(logEntriesAndSeparators.length>maxMessages)){var numberToDelete=logEntriesAndSeparators.length-maxMessages;var prunedLogEntries=logEntriesAndSeparators.slice(0,numberToDelete);if(currentSearch){currentSearch.removeMatches(prunedLogEntries);}','var group;for(var i=0;i<numberToDelete;i++){group=logEntriesAndSeparators[i].group;array_remove(logItems,logEntriesAndSeparators[i]);array_remove(logEntries,logEntriesAndSeparators[i]);logEntriesAndSeparators[i].remove(true,true);if(group.children.length===0&&group!==currentGroup&&group!==rootGroup){array_remove(logItems,group);group.remove(true,true);}}','logEntriesAndSeparators=array_removeFromStart(logEntriesAndSeparators,numberToDelete);return true;}','return false;}','function group(name,startExpanded){if(loggingEnabled){initiallyExpanded=(typeof startExpanded===\"undefined\")?true:Boolean(startExpanded);var newGroup=new Group(name,false,initiallyExpanded);currentGroup.addChild(newGroup);currentGroup=newGroup;logItems.push(newGroup);if(loaded){if(logQueuedEventsTimer!==null){clearTimeout(logQueuedEventsTimer);}','logQueuedEventsTimer=setTimeout(renderQueuedLogItems,renderDelay);unrenderedLogItemsExist=true;}}}','function groupEnd(){currentGroup=(currentGroup===rootGroup)?rootGroup:currentGroup.group;}','function mainPageReloaded(){currentGroup=rootGroup;var separator=new Separator();logEntriesAndSeparators.push(separator);logItems.push(separator);currentGroup.addChild(separator);}','function closeWindow(){if(appender&&mainWindowExists()){appender.close(true);}else{window.close();}}','function hide(){if(appender&&mainWindowExists()){appender.hide();}}','var mainWindow=window;var windowId=\"log4javascriptConsoleWindow_\"+new Date().getTime()+\"_\"+(\"\"+Math.random()).substr(2);function setMainWindow(win){mainWindow=win;mainWindow[windowId]=window;if(opener&&closeIfOpenerCloses){pollOpener();}}','function pollOpener(){if(closeIfOpenerCloses){if(mainWindowExists()){setTimeout(pollOpener,500);}else{closeWindow();}}}','function mainWindowExists(){try{return(mainWindow&&!mainWindow.closed&&mainWindow[windowId]==window);}catch(ex){}','return false;}','var logLevels=[\"TRACE\",\"DEBUG\",\"INFO\",\"WARN\",\"ERROR\",\"FATAL\"];function getCheckBox(logLevel){return $(\"switch_\"+logLevel);}','function getIeWrappedLogContainer(){return $(\"log_wrapped\");}','function getIeUnwrappedLogContainer(){return $(\"log_unwrapped\");}','function applyFilters(){for(var i=0;i<logLevels.length;i++){if(getCheckBox(logLevels[i]).checked){addClass(logMainContainer,logLevels[i]);}else{removeClass(logMainContainer,logLevels[i]);}}','updateSearchFromFilters();}','function toggleAllLevels(){var turnOn=$(\"switch_ALL\").checked;for(var i=0;i<logLevels.length;i++){getCheckBox(logLevels[i]).checked=turnOn;if(turnOn){addClass(logMainContainer,logLevels[i]);}else{removeClass(logMainContainer,logLevels[i]);}}}','function checkAllLevels(){for(var i=0;i<logLevels.length;i++){if(!getCheckBox(logLevels[i]).checked){getCheckBox(\"ALL\").checked=false;return;}}','getCheckBox(\"ALL\").checked=true;}','function clearLog(){rootGroup.clear();currentGroup=rootGroup;logEntries=[];logItems=[];logEntriesAndSeparators=[];doSearch();}','function toggleWrap(){var enable=$(\"wrap\").checked;if(enable){addClass(logMainContainer,\"wrap\");}else{removeClass(logMainContainer,\"wrap\");}','refreshCurrentMatch();}','var searchTimer=null;function scheduleSearch(){try{clearTimeout(searchTimer);}catch(ex){}','searchTimer=setTimeout(doSearch,500);}','function Search(searchTerm,isRegex,searchRegex,isCaseSensitive){this.searchTerm=searchTerm;this.isRegex=isRegex;this.searchRegex=searchRegex;this.isCaseSensitive=isCaseSensitive;this.matches=[];}','Search.prototype={hasMatches:function(){return this.matches.length>0;},hasVisibleMatches:function(){if(this.hasMatches()){for(var i=0;i<this.matches.length;i++){if(this.matches[i].isVisible()){return true;}}}','return false;},match:function(logEntry){var entryText=String(logEntry.formattedMessage);var matchesSearch=false;if(this.isRegex){matchesSearch=this.searchRegex.test(entryText);}else if(this.isCaseSensitive){matchesSearch=(entryText.indexOf(this.searchTerm)>-1);}else{matchesSearch=(entryText.toLowerCase().indexOf(this.searchTerm.toLowerCase())>-1);}','return matchesSearch;},getNextVisibleMatchIndex:function(){for(var i=currentMatchIndex+1;i<this.matches.length;i++){if(this.matches[i].isVisible()){return i;}}','for(i=0;i<=currentMatchIndex;i++){if(this.matches[i].isVisible()){return i;}}','return-1;},getPreviousVisibleMatchIndex:function(){for(var i=currentMatchIndex-1;i>=0;i--){if(this.matches[i].isVisible()){return i;}}','for(var i=this.matches.length-1;i>=currentMatchIndex;i--){if(this.matches[i].isVisible()){return i;}}','return-1;},applyTo:function(logEntry){var doesMatch=this.match(logEntry);if(doesMatch){logEntry.group.expand();logEntry.setSearchMatch(true);var logEntryContent;var wrappedLogEntryContent;var searchTermReplacementStartTag=\"<span class=\\\\\\\"searchterm\\\\\\\">\";var searchTermReplacementEndTag=\"<\"+\"/span>\";var preTagName=isIe?\"pre\":\"span\";var preStartTag=\"<\"+preTagName+\" class=\\\\\\\"pre\\\\\\\">\";var preEndTag=\"<\"+\"/\"+preTagName+\">\";var startIndex=0;var searchIndex,matchedText,textBeforeMatch;if(this.isRegex){var flags=this.isCaseSensitive?\"g\":\"gi\";var capturingRegex=new RegExp(\"(\"+this.searchRegex.source+\")\",flags);var rnd=(\"\"+Math.random()).substr(2);var startToken=\"%%s\"+rnd+\"%%\";var endToken=\"%%e\"+rnd+\"%%\";logEntryContent=logEntry.formattedMessage.replace(capturingRegex,startToken+\"$1\"+endToken);logEntryContent=escapeHtml(logEntryContent);var result;var searchString=logEntryContent;logEntryContent=\"\";wrappedLogEntryContent=\"\";while((searchIndex=searchString.indexOf(startToken,startIndex))>-1){var endTokenIndex=searchString.indexOf(endToken,searchIndex);matchedText=searchString.substring(searchIndex+startToken.length,endTokenIndex);textBeforeMatch=searchString.substring(startIndex,searchIndex);logEntryContent+=preStartTag+textBeforeMatch+preEndTag;logEntryContent+=searchTermReplacementStartTag+preStartTag+matchedText+','preEndTag+searchTermReplacementEndTag;if(isIe){wrappedLogEntryContent+=textBeforeMatch+searchTermReplacementStartTag+','matchedText+searchTermReplacementEndTag;}','startIndex=endTokenIndex+endToken.length;}','logEntryContent+=preStartTag+searchString.substr(startIndex)+preEndTag;if(isIe){wrappedLogEntryContent+=searchString.substr(startIndex);}}else{logEntryContent=\"\";wrappedLogEntryContent=\"\";var searchTermReplacementLength=searchTermReplacementStartTag.length+','this.searchTerm.length+searchTermReplacementEndTag.length;var searchTermLength=this.searchTerm.length;var searchTermLowerCase=this.searchTerm.toLowerCase();var logTextLowerCase=logEntry.formattedMessage.toLowerCase();while((searchIndex=logTextLowerCase.indexOf(searchTermLowerCase,startIndex))>-1){matchedText=escapeHtml(logEntry.formattedMessage.substr(searchIndex,this.searchTerm.length));textBeforeMatch=escapeHtml(logEntry.formattedMessage.substring(startIndex,searchIndex));var searchTermReplacement=searchTermReplacementStartTag+','preStartTag+matchedText+preEndTag+searchTermReplacementEndTag;logEntryContent+=preStartTag+textBeforeMatch+preEndTag+searchTermReplacement;if(isIe){wrappedLogEntryContent+=textBeforeMatch+searchTermReplacementStartTag+','matchedText+searchTermReplacementEndTag;}','startIndex=searchIndex+searchTermLength;}','var textAfterLastMatch=escapeHtml(logEntry.formattedMessage.substr(startIndex));logEntryContent+=preStartTag+textAfterLastMatch+preEndTag;if(isIe){wrappedLogEntryContent+=textAfterLastMatch;}}','logEntry.setContent(logEntryContent,wrappedLogEntryContent);var logEntryMatches=logEntry.getSearchMatches();this.matches=this.matches.concat(logEntryMatches);}else{logEntry.setSearchMatch(false);logEntry.setContent(logEntry.formattedMessage,logEntry.formattedMessage);}','return doesMatch;},removeMatches:function(logEntries){var matchesToRemoveCount=0;var currentMatchRemoved=false;var matchesToRemove=[];var i,iLen,j,jLen;for(i=0,iLen=this.matches.length;i<iLen;i++){for(j=0,jLen=logEntries.length;j<jLen;j++){if(this.matches[i].belongsTo(logEntries[j])){matchesToRemove.push(this.matches[i]);if(i===currentMatchIndex){currentMatchRemoved=true;}}}}','var newMatch=currentMatchRemoved?null:this.matches[currentMatchIndex];if(currentMatchRemoved){for(i=currentMatchIndex,iLen=this.matches.length;i<iLen;i++){if(this.matches[i].isVisible()&&!array_contains(matchesToRemove,this.matches[i])){newMatch=this.matches[i];break;}}}','for(i=0,iLen=matchesToRemove.length;i<iLen;i++){array_remove(this.matches,matchesToRemove[i]);matchesToRemove[i].remove();}','if(this.hasVisibleMatches()){if(newMatch===null){setCurrentMatchIndex(0);}else{var newMatchIndex=0;for(i=0,iLen=this.matches.length;i<iLen;i++){if(newMatch===this.matches[i]){newMatchIndex=i;break;}}','setCurrentMatchIndex(newMatchIndex);}}else{currentMatchIndex=null;displayNoMatches();}}};function getPageOffsetTop(el,container){var currentEl=el;var y=0;while(currentEl&&currentEl!=container){y+=currentEl.offsetTop;currentEl=currentEl.offsetParent;}','return y;}','function scrollIntoView(el){var logContainer=logMainContainer;if(!$(\"wrap\").checked){var logContainerLeft=logContainer.scrollLeft;var logContainerRight=logContainerLeft+logContainer.offsetWidth;var elLeft=el.offsetLeft;var elRight=elLeft+el.offsetWidth;if(elLeft<logContainerLeft||elRight>logContainerRight){logContainer.scrollLeft=elLeft-(logContainer.offsetWidth-el.offsetWidth)/2;}}','var logContainerTop=logContainer.scrollTop;var logContainerBottom=logContainerTop+logContainer.offsetHeight;var elTop=getPageOffsetTop(el)-getToolBarsHeight();var elBottom=elTop+el.offsetHeight;if(elTop<logContainerTop||elBottom>logContainerBottom){logContainer.scrollTop=elTop-(logContainer.offsetHeight-el.offsetHeight)/2;}}','function Match(logEntryLevel,spanInMainDiv,spanInUnwrappedPre,spanInWrappedDiv){this.logEntryLevel=logEntryLevel;this.spanInMainDiv=spanInMainDiv;if(isIe){this.spanInUnwrappedPre=spanInUnwrappedPre;this.spanInWrappedDiv=spanInWrappedDiv;}','this.mainSpan=isIe?spanInUnwrappedPre:spanInMainDiv;}','Match.prototype={equals:function(match){return this.mainSpan===match.mainSpan;},setCurrent:function(){if(isIe){addClass(this.spanInUnwrappedPre,\"currentmatch\");addClass(this.spanInWrappedDiv,\"currentmatch\");var elementToScroll=$(\"wrap\").checked?this.spanInWrappedDiv:this.spanInUnwrappedPre;scrollIntoView(elementToScroll);}else{addClass(this.spanInMainDiv,\"currentmatch\");scrollIntoView(this.spanInMainDiv);}},belongsTo:function(logEntry){if(isIe){return isDescendant(this.spanInUnwrappedPre,logEntry.unwrappedPre);}else{return isDescendant(this.spanInMainDiv,logEntry.mainDiv);}},setNotCurrent:function(){if(isIe){removeClass(this.spanInUnwrappedPre,\"currentmatch\");removeClass(this.spanInWrappedDiv,\"currentmatch\");}else{removeClass(this.spanInMainDiv,\"currentmatch\");}},isOrphan:function(){return isOrphan(this.mainSpan);},isVisible:function(){return getCheckBox(this.logEntryLevel).checked;},remove:function(){if(isIe){this.spanInUnwrappedPre=null;this.spanInWrappedDiv=null;}else{this.spanInMainDiv=null;}}};var currentSearch=null;var currentMatchIndex=null;function doSearch(){var searchBox=$(\"searchBox\");var searchTerm=searchBox.value;var isRegex=$(\"searchRegex\").checked;var isCaseSensitive=$(\"searchCaseSensitive\").checked;var i;if(searchTerm===\"\"){$(\"searchReset\").disabled=true;$(\"searchNav\").style.display=\"none\";removeClass(document.body,\"searching\");removeClass(searchBox,\"hasmatches\");removeClass(searchBox,\"nomatches\");for(i=0;i<logEntries.length;i++){logEntries[i].clearSearch();logEntries[i].setContent(logEntries[i].formattedMessage,logEntries[i].formattedMessage);}','currentSearch=null;setLogContainerHeight();}else{$(\"searchReset\").disabled=false;$(\"searchNav\").style.display=\"block\";var searchRegex;var regexValid;if(isRegex){try{searchRegex=isCaseSensitive?new RegExp(searchTerm,\"g\"):new RegExp(searchTerm,\"gi\");regexValid=true;replaceClass(searchBox,\"validregex\",\"invalidregex\");searchBox.title=\"Valid regex\";}catch(ex){regexValid=false;replaceClass(searchBox,\"invalidregex\",\"validregex\");searchBox.title=\"Invalid regex: \"+(ex.message?ex.message:(ex.description?ex.description:\"unknown error\"));return;}}else{searchBox.title=\"\";removeClass(searchBox,\"validregex\");removeClass(searchBox,\"invalidregex\");}','addClass(document.body,\"searching\");currentSearch=new Search(searchTerm,isRegex,searchRegex,isCaseSensitive);for(i=0;i<logEntries.length;i++){currentSearch.applyTo(logEntries[i]);}','setLogContainerHeight();if(currentSearch.hasVisibleMatches()){setCurrentMatchIndex(0);displayMatches();}else{displayNoMatches();}}}','function updateSearchFromFilters(){if(currentSearch){if(currentSearch.hasMatches()){if(currentMatchIndex===null){currentMatchIndex=0;}','var currentMatch=currentSearch.matches[currentMatchIndex];if(currentMatch.isVisible()){displayMatches();setCurrentMatchIndex(currentMatchIndex);}else{currentMatch.setNotCurrent();var nextVisibleMatchIndex=currentSearch.getNextVisibleMatchIndex();if(nextVisibleMatchIndex>-1){setCurrentMatchIndex(nextVisibleMatchIndex);displayMatches();}else{displayNoMatches();}}}else{displayNoMatches();}}}','function refreshCurrentMatch(){if(currentSearch&&currentSearch.hasVisibleMatches()){setCurrentMatchIndex(currentMatchIndex);}}','function displayMatches(){replaceClass($(\"searchBox\"),\"hasmatches\",\"nomatches\");$(\"searchBox\").title=\"\"+currentSearch.matches.length+\" matches found\";$(\"searchNav\").style.display=\"block\";setLogContainerHeight();}','function displayNoMatches(){replaceClass($(\"searchBox\"),\"nomatches\",\"hasmatches\");$(\"searchBox\").title=\"No matches found\";$(\"searchNav\").style.display=\"none\";setLogContainerHeight();}','function toggleSearchEnabled(enable){enable=(typeof enable==\"undefined\")?!$(\"searchDisable\").checked:enable;$(\"searchBox\").disabled=!enable;$(\"searchReset\").disabled=!enable;$(\"searchRegex\").disabled=!enable;$(\"searchNext\").disabled=!enable;$(\"searchPrevious\").disabled=!enable;$(\"searchCaseSensitive\").disabled=!enable;$(\"searchNav\").style.display=(enable&&($(\"searchBox\").value!==\"\")&&currentSearch&&currentSearch.hasVisibleMatches())?\"block\":\"none\";if(enable){removeClass($(\"search\"),\"greyedout\");addClass(document.body,\"searching\");if($(\"searchHighlight\").checked){addClass(logMainContainer,\"searchhighlight\");}else{removeClass(logMainContainer,\"searchhighlight\");}','if($(\"searchFilter\").checked){addClass(logMainContainer,\"searchfilter\");}else{removeClass(logMainContainer,\"searchfilter\");}','$(\"searchDisable\").checked=!enable;}else{addClass($(\"search\"),\"greyedout\");removeClass(document.body,\"searching\");removeClass(logMainContainer,\"searchhighlight\");removeClass(logMainContainer,\"searchfilter\");}','setLogContainerHeight();}','function toggleSearchFilter(){var enable=$(\"searchFilter\").checked;if(enable){addClass(logMainContainer,\"searchfilter\");}else{removeClass(logMainContainer,\"searchfilter\");}','refreshCurrentMatch();}','function toggleSearchHighlight(){var enable=$(\"searchHighlight\").checked;if(enable){addClass(logMainContainer,\"searchhighlight\");}else{removeClass(logMainContainer,\"searchhighlight\");}}','function clearSearch(){$(\"searchBox\").value=\"\";doSearch();}','function searchNext(){if(currentSearch!==null&&currentMatchIndex!==null){currentSearch.matches[currentMatchIndex].setNotCurrent();var nextMatchIndex=currentSearch.getNextVisibleMatchIndex();if(nextMatchIndex>currentMatchIndex||confirm(\"Reached the end of the page. Start from the top?\")){setCurrentMatchIndex(nextMatchIndex);}}}','function searchPrevious(){if(currentSearch!==null&&currentMatchIndex!==null){currentSearch.matches[currentMatchIndex].setNotCurrent();var previousMatchIndex=currentSearch.getPreviousVisibleMatchIndex();if(previousMatchIndex<currentMatchIndex||confirm(\"Reached the start of the page. Continue from the bottom?\")){setCurrentMatchIndex(previousMatchIndex);}}}','function setCurrentMatchIndex(index){currentMatchIndex=index;currentSearch.matches[currentMatchIndex].setCurrent();}','function addClass(el,cssClass){if(!hasClass(el,cssClass)){if(el.className){el.className+=\" \"+cssClass;}else{el.className=cssClass;}}}','function hasClass(el,cssClass){if(el.className){var classNames=el.className.split(\" \");return array_contains(classNames,cssClass);}','return false;}','function removeClass(el,cssClass){if(hasClass(el,cssClass)){var existingClasses=el.className.split(\" \");var newClasses=[];for(var i=0,len=existingClasses.length;i<len;i++){if(existingClasses[i]!=cssClass){newClasses[newClasses.length]=existingClasses[i];}}','el.className=newClasses.join(\" \");}}','function replaceClass(el,newCssClass,oldCssClass){removeClass(el,oldCssClass);addClass(el,newCssClass);}','function getElementsByClass(el,cssClass,tagName){var elements=el.getElementsByTagName(tagName);var matches=[];for(var i=0,len=elements.length;i<len;i++){if(hasClass(elements[i],cssClass)){matches.push(elements[i]);}}','return matches;}','function $(id){return document.getElementById(id);}','function isDescendant(node,ancestorNode){while(node!=null){if(node===ancestorNode){return true;}','node=node.parentNode;}','return false;}','function isOrphan(node){var currentNode=node;while(currentNode){if(currentNode==document.body){return false;}','currentNode=currentNode.parentNode;}','return true;}','function escapeHtml(str){return str.replace(/&/g,\"&amp;\").replace(/[<]/g,\"&lt;\").replace(/>/g,\"&gt;\");}','function getWindowWidth(){if(window.innerWidth){return window.innerWidth;}else if(document.documentElement&&document.documentElement.clientWidth){return document.documentElement.clientWidth;}else if(document.body){return document.body.clientWidth;}','return 0;}','function getWindowHeight(){if(window.innerHeight){return window.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){return document.documentElement.clientHeight;}else if(document.body){return document.body.clientHeight;}','return 0;}','function getToolBarsHeight(){return $(\"switches\").offsetHeight;}','function getChromeHeight(){var height=getToolBarsHeight();if(showCommandLine){height+=$(\"commandLine\").offsetHeight;}','return height;}','function setLogContainerHeight(){if(logMainContainer){var windowHeight=getWindowHeight();$(\"body\").style.height=getWindowHeight()+\"px\";logMainContainer.style.height=\"\"+','Math.max(0,windowHeight-getChromeHeight())+\"px\";}}','function setCommandInputWidth(){if(showCommandLine){$(\"command\").style.width=\"\"+Math.max(0,$(\"commandLineContainer\").offsetWidth-','($(\"evaluateButton\").offsetWidth+13))+\"px\";}}','window.onresize=function(){setCommandInputWidth();setLogContainerHeight();};if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0,len=arguments.length;i<len;i++){this[this.length]=arguments[i];}','return this.length;};}','if(!Array.prototype.pop){Array.prototype.pop=function(){if(this.length>0){var val=this[this.length-1];this.length=this.length-1;return val;}};}','if(!Array.prototype.shift){Array.prototype.shift=function(){if(this.length>0){var firstItem=this[0];for(var i=0,len=this.length-1;i<len;i++){this[i]=this[i+1];}','this.length=this.length-1;return firstItem;}};}','if(!Array.prototype.splice){Array.prototype.splice=function(startIndex,deleteCount){var itemsAfterDeleted=this.slice(startIndex+deleteCount);var itemsDeleted=this.slice(startIndex,startIndex+deleteCount);this.length=startIndex;var argumentsArray=[];for(var i=0,len=arguments.length;i<len;i++){argumentsArray[i]=arguments[i];}','var itemsToAppend=(argumentsArray.length>2)?itemsAfterDeleted=argumentsArray.slice(2).concat(itemsAfterDeleted):itemsAfterDeleted;for(i=0,len=itemsToAppend.length;i<len;i++){this.push(itemsToAppend[i]);}','return itemsDeleted;};}','function array_remove(arr,val){var index=-1;for(var i=0,len=arr.length;i<len;i++){if(arr[i]===val){index=i;break;}}','if(index>=0){arr.splice(index,1);return index;}else{return false;}}','function array_removeFromStart(array,numberToRemove){if(Array.prototype.splice){array.splice(0,numberToRemove);}else{for(var i=numberToRemove,len=array.length;i<len;i++){array[i-numberToRemove]=array[i];}','array.length=array.length-numberToRemove;}','return array;}','function array_contains(arr,val){for(var i=0,len=arr.length;i<len;i++){if(arr[i]==val){return true;}}','return false;}','function getErrorMessage(ex){if(ex.message){return ex.message;}else if(ex.description){return ex.description;}','return\"\"+ex;}','function moveCaretToEnd(input){if(input.setSelectionRange){input.focus();var length=input.value.length;input.setSelectionRange(length,length);}else if(input.createTextRange){var range=input.createTextRange();range.collapse(false);range.select();}','input.focus();}','function stopPropagation(evt){if(evt.stopPropagation){evt.stopPropagation();}else if(typeof evt.cancelBubble!=\"undefined\"){evt.cancelBubble=true;}}','function getEvent(evt){return evt?evt:event;}','function getTarget(evt){return evt.target?evt.target:evt.srcElement;}','function getRelatedTarget(evt){if(evt.relatedTarget){return evt.relatedTarget;}else if(evt.srcElement){switch(evt.type){case\"mouseover\":return evt.fromElement;case\"mouseout\":return evt.toElement;default:return evt.srcElement;}}}','function cancelKeyEvent(evt){evt.returnValue=false;stopPropagation(evt);}','function evalCommandLine(){var expr=$(\"command\").value;evalCommand(expr);$(\"command\").value=\"\";}','function evalLastCommand(){if(lastCommand!=null){evalCommand(lastCommand);}}','var lastCommand=null;var commandHistory=[];var currentCommandIndex=0;function evalCommand(expr){if(appender){appender.evalCommandAndAppend(expr);}else{var prefix=\">>> \"+expr+\"\\\\r\\\\n\";try{log(\"INFO\",prefix+eval(expr));}catch(ex){log(\"ERROR\",prefix+\"Error: \"+getErrorMessage(ex));}}','if(expr!=commandHistory[commandHistory.length-1]){commandHistory.push(expr);if(appender){appender.storeCommandHistory(commandHistory);}}','currentCommandIndex=(expr==commandHistory[currentCommandIndex])?currentCommandIndex+1:commandHistory.length;lastCommand=expr;}','//]]>','</script>','<style type=\"text/css\">','body{background-color:white;color:black;padding:0;margin:0;font-family:tahoma,verdana,arial,helvetica,sans-serif;overflow:hidden}div#switchesContainer input{margin-bottom:0}div.toolbar{border-top:solid #ffffff 1px;border-bottom:solid #aca899 1px;background-color:#f1efe7;padding:3px 5px;font-size:68.75%}div.toolbar,div#search input{font-family:tahoma,verdana,arial,helvetica,sans-serif}div.toolbar input.button{padding:0 5px;font-size:100%}div.toolbar input.hidden{display:none}div#switches input#clearButton{margin-left:20px}div#levels label{font-weight:bold}div#levels label,div#options label{margin-right:5px}div#levels label#wrapLabel{font-weight:normal}div#search label{margin-right:10px}div#search label.searchboxlabel{margin-right:0}div#search input{font-size:100%}div#search input.validregex{color:green}div#search input.invalidregex{color:red}div#search input.nomatches{color:white;background-color:#ff6666}div#search input.nomatches{color:white;background-color:#ff6666}div#searchNav{display:none}div#commandLine{display:none}div#commandLine input#command{font-size:100%;font-family:Courier New,Courier}div#commandLine input#evaluateButton{}*.greyedout{color:gray !important;border-color:gray !important}*.greyedout *.alwaysenabled{color:black}*.unselectable{-khtml-user-select:none;-moz-user-select:none;user-select:none}div#log{font-family:Courier New,Courier;font-size:75%;width:100%;overflow:auto;clear:both;position:relative}div.group{border-color:#cccccc;border-style:solid;border-width:1px 0 1px 1px;overflow:visible}div.oldIe div.group,div.oldIe div.group *,div.oldIe *.logentry{height:1%}div.group div.groupheading span.expander{border:solid black 1px;font-family:Courier New,Courier;font-size:0.833em;background-color:#eeeeee;position:relative;top:-1px;color:black;padding:0 2px;cursor:pointer;cursor:hand;height:1%}div.group div.groupcontent{margin-left:10px;padding-bottom:2px;overflow:visible}div.group div.expanded{display:block}div.group div.collapsed{display:none}*.logentry{overflow:visible;display:none;white-space:pre}span.pre{white-space:pre}pre.unwrapped{display:inline !important}pre.unwrapped pre.pre,div.wrapped pre.pre{display:inline}div.wrapped pre.pre{white-space:normal}div.wrapped{display:none}body.searching *.logentry span.currentmatch{color:white !important;background-color:green !important}body.searching div.searchhighlight *.logentry span.searchterm{color:black;background-color:yellow}div.wrap *.logentry{white-space:normal !important;border-width:0 0 1px 0;border-color:#dddddd;border-style:dotted}div.wrap #log_wrapped,#log_unwrapped{display:block}div.wrap #log_unwrapped,#log_wrapped{display:none}div.wrap *.logentry span.pre{overflow:visible;white-space:normal}div.wrap *.logentry pre.unwrapped{display:none}div.wrap *.logentry span.wrapped{display:inline}div.searchfilter *.searchnonmatch{display:none !important}div#log *.TRACE,label#label_TRACE{color:#666666}div#log *.DEBUG,label#label_DEBUG{color:green}div#log *.INFO,label#label_INFO{color:#000099}div#log *.WARN,label#label_WARN{color:#999900}div#log *.ERROR,label#label_ERROR{color:red}div#log *.FATAL,label#label_FATAL{color:#660066}div.TRACE#log *.TRACE,div.DEBUG#log *.DEBUG,div.INFO#log *.INFO,div.WARN#log *.WARN,div.ERROR#log *.ERROR,div.FATAL#log *.FATAL{display:block}div#log div.separator{background-color:#cccccc;margin:5px 0;line-height:1px}','</style>','</head>','<body id=\"body\">','<div id=\"switchesContainer\">','<div id=\"switches\">','<div id=\"levels\" class=\"toolbar\">','Filters:','<input type=\"checkbox\" id=\"switch_TRACE\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide trace messages\" /><label for=\"switch_TRACE\" id=\"label_TRACE\">trace</label>','<input type=\"checkbox\" id=\"switch_DEBUG\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide debug messages\" /><label for=\"switch_DEBUG\" id=\"label_DEBUG\">debug</label>','<input type=\"checkbox\" id=\"switch_INFO\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide info messages\" /><label for=\"switch_INFO\" id=\"label_INFO\">info</label>','<input type=\"checkbox\" id=\"switch_WARN\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide warn messages\" /><label for=\"switch_WARN\" id=\"label_WARN\">warn</label>','<input type=\"checkbox\" id=\"switch_ERROR\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide error messages\" /><label for=\"switch_ERROR\" id=\"label_ERROR\">error</label>','<input type=\"checkbox\" id=\"switch_FATAL\" onclick=\"applyFilters(); checkAllLevels()\" checked=\"checked\" title=\"Show/hide fatal messages\" /><label for=\"switch_FATAL\" id=\"label_FATAL\">fatal</label>','<input type=\"checkbox\" id=\"switch_ALL\" onclick=\"toggleAllLevels(); applyFilters()\" checked=\"checked\" title=\"Show/hide all messages\" /><label for=\"switch_ALL\" id=\"label_ALL\">all</label>','</div>','<div id=\"search\" class=\"toolbar\">','<label for=\"searchBox\" class=\"searchboxlabel\">Search:</label> <input type=\"text\" id=\"searchBox\" onclick=\"toggleSearchEnabled(true)\" onkeyup=\"scheduleSearch()\" size=\"20\" />','<input type=\"button\" id=\"searchReset\" disabled=\"disabled\" value=\"Reset\" onclick=\"clearSearch()\" class=\"button\" title=\"Reset the search\" />','<input type=\"checkbox\" id=\"searchRegex\" onclick=\"doSearch()\" title=\"If checked, search is treated as a regular expression\" /><label for=\"searchRegex\">Regex</label>','<input type=\"checkbox\" id=\"searchCaseSensitive\" onclick=\"doSearch()\" title=\"If checked, search is case sensitive\" /><label for=\"searchCaseSensitive\">Match case</label>','<input type=\"checkbox\" id=\"searchDisable\" onclick=\"toggleSearchEnabled()\" title=\"Enable/disable search\" /><label for=\"searchDisable\" class=\"alwaysenabled\">Disable</label>','<div id=\"searchNav\">','<input type=\"button\" id=\"searchNext\" disabled=\"disabled\" value=\"Next\" onclick=\"searchNext()\" class=\"button\" title=\"Go to the next matching log entry\" />','<input type=\"button\" id=\"searchPrevious\" disabled=\"disabled\" value=\"Previous\" onclick=\"searchPrevious()\" class=\"button\" title=\"Go to the previous matching log entry\" />','<input type=\"checkbox\" id=\"searchFilter\" onclick=\"toggleSearchFilter()\" title=\"If checked, non-matching log entries are filtered out\" /><label for=\"searchFilter\">Filter</label>','<input type=\"checkbox\" id=\"searchHighlight\" onclick=\"toggleSearchHighlight()\" title=\"Highlight matched search terms\" /><label for=\"searchHighlight\" class=\"alwaysenabled\">Highlight all</label>','</div>','</div>','<div id=\"options\" class=\"toolbar\">','Options:','<input type=\"checkbox\" id=\"enableLogging\" onclick=\"toggleLoggingEnabled()\" checked=\"checked\" title=\"Enable/disable logging\" /><label for=\"enableLogging\" id=\"enableLoggingLabel\">Log</label>','<input type=\"checkbox\" id=\"wrap\" onclick=\"toggleWrap()\" title=\"Enable / disable word wrap\" /><label for=\"wrap\" id=\"wrapLabel\">Wrap</label>','<input type=\"checkbox\" id=\"newestAtTop\" onclick=\"toggleNewestAtTop()\" title=\"If checked, causes newest messages to appear at the top\" /><label for=\"newestAtTop\" id=\"newestAtTopLabel\">Newest at the top</label>','<input type=\"checkbox\" id=\"scrollToLatest\" onclick=\"toggleScrollToLatest()\" checked=\"checked\" title=\"If checked, window automatically scrolls to a new message when it is added\" /><label for=\"scrollToLatest\" id=\"scrollToLatestLabel\">Scroll to latest</label>','<input type=\"button\" id=\"clearButton\" value=\"Clear\" onclick=\"clearLog()\" class=\"button\" title=\"Clear all log messages\" />','<input type=\"button\" id=\"hideButton\" value=\"Hide\" onclick=\"hide()\" class=\"hidden button\" title=\"Hide the console\" />','<input type=\"button\" id=\"closeButton\" value=\"Close\" onclick=\"closeWindow()\" class=\"hidden button\" title=\"Close the window\" />','</div>','</div>','</div>','<div id=\"log\" class=\"TRACE DEBUG INFO WARN ERROR FATAL\"></div>','<div id=\"commandLine\" class=\"toolbar\">','<div id=\"commandLineContainer\">','<input type=\"text\" id=\"command\" title=\"Enter a JavaScript command here and hit return or press \\'Evaluate\\'\" />','<input type=\"button\" id=\"evaluateButton\" value=\"Evaluate\" class=\"button\" title=\"Evaluate the command\" onclick=\"evalCommandLine()\" />','</div>','</div>','</body>','</html>',''];};var defaultCommandLineFunctions=[];ConsoleAppender=function(){};var consoleAppenderIdCounter=1;ConsoleAppender.prototype=new Appender();ConsoleAppender.prototype.create=function(inPage,container,lazyInit,initiallyMinimized,useDocumentWrite,width,height,focusConsoleWindow){var appender=this;var initialized=false;var consoleWindowCreated=false;var consoleWindowLoaded=false;var consoleClosed=false;var queuedLoggingEvents=[];var isSupported=true;var consoleAppenderId=consoleAppenderIdCounter++;initiallyMinimized=extractBooleanFromParam(initiallyMinimized,this.defaults.initiallyMinimized);lazyInit=extractBooleanFromParam(lazyInit,this.defaults.lazyInit);useDocumentWrite=extractBooleanFromParam(useDocumentWrite,this.defaults.useDocumentWrite);var newestMessageAtTop=this.defaults.newestMessageAtTop;var scrollToLatestMessage=this.defaults.scrollToLatestMessage;width=width?width:this.defaults.width;height=height?height:this.defaults.height;var maxMessages=this.defaults.maxMessages;var showCommandLine=this.defaults.showCommandLine;var commandLineObjectExpansionDepth=this.defaults.commandLineObjectExpansionDepth;var showHideButton=this.defaults.showHideButton;var showCloseButton=this.defaults.showCloseButton;this.setLayout(this.defaults.layout);var init,createWindow,safeToAppend,getConsoleWindow,open;var appenderName=inPage?\"InPageAppender\":\"PopUpAppender\";var checkCanConfigure=function(configOptionName){if(consoleWindowCreated){handleError(appenderName+\": configuration option '\"+configOptionName+\"' may not be set after the appender has been initialized\");return false;}\r\nreturn true;};var consoleWindowExists=function(){return(consoleWindowLoaded&&isSupported&&!consoleClosed);};this.isNewestMessageAtTop=function(){return newestMessageAtTop;};this.setNewestMessageAtTop=function(newestMessageAtTopParam){newestMessageAtTop=bool(newestMessageAtTopParam);if(consoleWindowExists()){getConsoleWindow().setNewestAtTop(newestMessageAtTop);}};this.isScrollToLatestMessage=function(){return scrollToLatestMessage;};this.setScrollToLatestMessage=function(scrollToLatestMessageParam){scrollToLatestMessage=bool(scrollToLatestMessageParam);if(consoleWindowExists()){getConsoleWindow().setScrollToLatest(scrollToLatestMessage);}};this.getWidth=function(){return width;};this.setWidth=function(widthParam){if(checkCanConfigure(\"width\")){width=extractStringFromParam(widthParam,width);}};this.getHeight=function(){return height;};this.setHeight=function(heightParam){if(checkCanConfigure(\"height\")){height=extractStringFromParam(heightParam,height);}};this.getMaxMessages=function(){return maxMessages;};this.setMaxMessages=function(maxMessagesParam){maxMessages=extractIntFromParam(maxMessagesParam,maxMessages);if(consoleWindowExists()){getConsoleWindow().setMaxMessages(maxMessages);}};this.isShowCommandLine=function(){return showCommandLine;};this.setShowCommandLine=function(showCommandLineParam){showCommandLine=bool(showCommandLineParam);if(consoleWindowExists()){getConsoleWindow().setShowCommandLine(showCommandLine);}};this.isShowHideButton=function(){return showHideButton;};this.setShowHideButton=function(showHideButtonParam){showHideButton=bool(showHideButtonParam);if(consoleWindowExists()){getConsoleWindow().setShowHideButton(showHideButton);}};this.isShowCloseButton=function(){return showCloseButton;};this.setShowCloseButton=function(showCloseButtonParam){showCloseButton=bool(showCloseButtonParam);if(consoleWindowExists()){getConsoleWindow().setShowCloseButton(showCloseButton);}};this.getCommandLineObjectExpansionDepth=function(){return commandLineObjectExpansionDepth;};this.setCommandLineObjectExpansionDepth=function(commandLineObjectExpansionDepthParam){commandLineObjectExpansionDepth=extractIntFromParam(commandLineObjectExpansionDepthParam,commandLineObjectExpansionDepth);};var minimized=initiallyMinimized;this.isInitiallyMinimized=function(){return initiallyMinimized;};this.setInitiallyMinimized=function(initiallyMinimizedParam){if(checkCanConfigure(\"initiallyMinimized\")){initiallyMinimized=bool(initiallyMinimizedParam);minimized=initiallyMinimized;}};this.isUseDocumentWrite=function(){return useDocumentWrite;};this.setUseDocumentWrite=function(useDocumentWriteParam){if(checkCanConfigure(\"useDocumentWrite\")){useDocumentWrite=bool(useDocumentWriteParam);}};function QueuedLoggingEvent(loggingEvent,formattedMessage){this.loggingEvent=loggingEvent;this.levelName=loggingEvent.level.name;this.formattedMessage=formattedMessage;}\r\nQueuedLoggingEvent.prototype.append=function(){getConsoleWindow().log(this.levelName,this.formattedMessage);};function QueuedGroup(name,initiallyExpanded){this.name=name;this.initiallyExpanded=initiallyExpanded;}\r\nQueuedGroup.prototype.append=function(){getConsoleWindow().group(this.name,this.initiallyExpanded);};function QueuedGroupEnd(){}\r\nQueuedGroupEnd.prototype.append=function(){getConsoleWindow().groupEnd();};var checkAndAppend=function(){safeToAppend();if(!initialized){init();}else if(consoleClosed&&reopenWhenClosed){createWindow();}\r\nif(safeToAppend()){appendQueuedLoggingEvents();}};this.append=function(loggingEvent){if(isSupported){var formattedMessage=appender.getLayout().formatWithException(loggingEvent);queuedLoggingEvents.push(new QueuedLoggingEvent(loggingEvent,formattedMessage));checkAndAppend();}};this.group=function(name,initiallyExpanded){if(isSupported){queuedLoggingEvents.push(new QueuedGroup(name,initiallyExpanded));checkAndAppend();}};this.groupEnd=function(){if(isSupported){queuedLoggingEvents.push(new QueuedGroupEnd());checkAndAppend();}};var appendQueuedLoggingEvents=function(){while(queuedLoggingEvents.length>0){queuedLoggingEvents.shift().append();}\r\nif(focusConsoleWindow){getConsoleWindow().focus();}};this.setAddedToLogger=function(logger){this.loggers.push(logger);if(enabled&&!lazyInit){init();}};this.clear=function(){if(consoleWindowExists()){getConsoleWindow().clearLog();}\r\nqueuedLoggingEvents.length=0;};this.focus=function(){if(consoleWindowExists()){getConsoleWindow().focus();}};this.focusCommandLine=function(){if(consoleWindowExists()){getConsoleWindow().focusCommandLine();}};this.focusSearch=function(){if(consoleWindowExists()){getConsoleWindow().focusSearch();}};var commandWindow=window;this.getCommandWindow=function(){return commandWindow;};this.setCommandWindow=function(commandWindowParam){commandWindow=commandWindowParam;};this.executeLastCommand=function(){if(consoleWindowExists()){getConsoleWindow().evalLastCommand();}};var commandLayout=new PatternLayout(\"%m\");this.getCommandLayout=function(){return commandLayout;};this.setCommandLayout=function(commandLayoutParam){commandLayout=commandLayoutParam;};this.evalCommandAndAppend=function(expr){var commandReturnValue={appendResult:true,isError:false};var commandOutput=\"\";try{var result,i;if(!commandWindow.eval&&commandWindow.execScript){commandWindow.execScript(\"null\");}\r\nvar commandLineFunctionsHash={};for(i=0,len=commandLineFunctions.length;i<len;i++){commandLineFunctionsHash[commandLineFunctions[i][0]]=commandLineFunctions[i][1];}\r\nvar objectsToRestore=[];var addObjectToRestore=function(name){objectsToRestore.push([name,commandWindow[name]]);};addObjectToRestore(\"appender\");commandWindow.appender=appender;addObjectToRestore(\"commandReturnValue\");commandWindow.commandReturnValue=commandReturnValue;addObjectToRestore(\"commandLineFunctionsHash\");commandWindow.commandLineFunctionsHash=commandLineFunctionsHash;var addFunctionToWindow=function(name){addObjectToRestore(name);commandWindow[name]=function(){return this.commandLineFunctionsHash[name](appender,arguments,commandReturnValue);};};for(i=0,len=commandLineFunctions.length;i<len;i++){addFunctionToWindow(commandLineFunctions[i][0]);}\r\nif(commandWindow===window&&commandWindow.execScript){addObjectToRestore(\"evalExpr\");addObjectToRestore(\"result\");window.evalExpr=expr;commandWindow.execScript(\"window.result=eval(window.evalExpr);\");result=window.result;}else{result=commandWindow.eval(expr);}\r\ncommandOutput=isUndefined(result)?result:formatObjectExpansion(result,commandLineObjectExpansionDepth);for(i=0,len=objectsToRestore.length;i<len;i++){commandWindow[objectsToRestore[i][0]]=objectsToRestore[i][1];}}catch(ex){commandOutput=\"Error evaluating command: \"+getExceptionStringRep(ex);commandReturnValue.isError=true;}\r\nif(commandReturnValue.appendResult){var message=\">>> \"+expr;if(!isUndefined(commandOutput)){message+=newLine+commandOutput;}\r\nvar level=commandReturnValue.isError?Level.ERROR:Level.INFO;var loggingEvent=new LoggingEvent(null,new Date(),level,[message],null);var mainLayout=this.getLayout();this.setLayout(commandLayout);this.append(loggingEvent);this.setLayout(mainLayout);}};var commandLineFunctions=defaultCommandLineFunctions.concat([]);this.addCommandLineFunction=function(functionName,commandLineFunction){commandLineFunctions.push([functionName,commandLineFunction]);};var commandHistoryCookieName=\"log4javascriptCommandHistory\";this.storeCommandHistory=function(commandHistory){setCookie(commandHistoryCookieName,commandHistory.join(\",\"));};var writeHtml=function(doc){var lines=getConsoleHtmlLines();doc.open();for(var i=0,len=lines.length;i<len;i++){doc.writeln(lines[i]);}\r\ndoc.close();};this.setEventTypes([\"load\",\"unload\"]);var consoleWindowLoadHandler=function(){var win=getConsoleWindow();win.setAppender(appender);win.setNewestAtTop(newestMessageAtTop);win.setScrollToLatest(scrollToLatestMessage);win.setMaxMessages(maxMessages);win.setShowCommandLine(showCommandLine);win.setShowHideButton(showHideButton);win.setShowCloseButton(showCloseButton);win.setMainWindow(window);var storedValue=getCookie(commandHistoryCookieName);if(storedValue){win.commandHistory=storedValue.split(\",\");win.currentCommandIndex=win.commandHistory.length;}\r\nappender.dispatchEvent(\"load\",{\"win\":win});};this.unload=function(){logLog.debug(\"unload \"+this+\", caller: \"+this.unload.caller);if(!consoleClosed){logLog.debug(\"really doing unload \"+this);consoleClosed=true;consoleWindowLoaded=false;consoleWindowCreated=false;appender.dispatchEvent(\"unload\",{});}};var pollConsoleWindow=function(windowTest,interval,successCallback,errorMessage){function doPoll(){try{if(consoleClosed){clearInterval(poll);}\r\nif(windowTest(getConsoleWindow())){clearInterval(poll);successCallback();}}catch(ex){clearInterval(poll);isSupported=false;handleError(errorMessage,ex);}}\r\nvar poll=setInterval(doPoll,interval);};var getConsoleUrl=function(){var documentDomainSet=(document.domain!=location.hostname);return useDocumentWrite?\"\":getBaseUrl()+\"console.html\"+\r\n(documentDomainSet?\"?log4javascript_domain=\"+escape(document.domain):\"\");};if(inPage){var containerElement=null;var cssProperties=[];this.addCssProperty=function(name,value){if(checkCanConfigure(\"cssProperties\")){cssProperties.push([name,value]);}};var windowCreationStarted=false;var iframeContainerDiv;var iframeId=uniqueId+\"_InPageAppender_\"+consoleAppenderId;this.hide=function(){if(initialized&&consoleWindowCreated){if(consoleWindowExists()){getConsoleWindow().$(\"command\").blur();}\r\niframeContainerDiv.style.display=\"none\";minimized=true;}};this.show=function(){if(initialized){if(consoleWindowCreated){iframeContainerDiv.style.display=\"block\";this.setShowCommandLine(showCommandLine);minimized=false;}else if(!windowCreationStarted){createWindow(true);}}};this.isVisible=function(){return!minimized&&!consoleClosed;};this.close=function(fromButton){if(!consoleClosed&&(!fromButton||confirm(\"This will permanently remove the console from the page. No more messages will be logged. Do you wish to continue?\"))){iframeContainerDiv.parentNode.removeChild(iframeContainerDiv);this.unload();}};open=function(){var initErrorMessage=\"InPageAppender.open: unable to create console iframe\";function finalInit(){try{if(!initiallyMinimized){appender.show();}\r\nconsoleWindowLoadHandler();consoleWindowLoaded=true;appendQueuedLoggingEvents();}catch(ex){isSupported=false;handleError(initErrorMessage,ex);}}\r\nfunction writeToDocument(){try{var windowTest=function(win){return isLoaded(win);};if(useDocumentWrite){writeHtml(getConsoleWindow().document);}\r\nif(windowTest(getConsoleWindow())){finalInit();}else{pollConsoleWindow(windowTest,100,finalInit,initErrorMessage);}}catch(ex){isSupported=false;handleError(initErrorMessage,ex);}}\r\nminimized=false;iframeContainerDiv=containerElement.appendChild(document.createElement(\"div\"));iframeContainerDiv.style.width=width;iframeContainerDiv.style.height=height;iframeContainerDiv.style.border=\"solid gray 1px\";for(var i=0,len=cssProperties.length;i<len;i++){iframeContainerDiv.style[cssProperties[i][0]]=cssProperties[i][1];}\r\nvar iframeSrc=useDocumentWrite?\"\":\" src='\"+getConsoleUrl()+\"'\";iframeContainerDiv.innerHTML=\"<iframe id='\"+iframeId+\"' name='\"+iframeId+\"' width='100%' height='100%' frameborder='0'\"+iframeSrc+\" scrolling='no'></iframe>\";consoleClosed=false;var iframeDocumentExistsTest=function(win){try{return bool(win)&&bool(win.document);}catch(ex){return false;}};if(iframeDocumentExistsTest(getConsoleWindow())){writeToDocument();}else{pollConsoleWindow(iframeDocumentExistsTest,100,writeToDocument,initErrorMessage);}\r\nconsoleWindowCreated=true;};createWindow=function(show){if(show||!initiallyMinimized){var pageLoadHandler=function(){if(!container){containerElement=document.createElement(\"div\");containerElement.style.position=\"fixed\";containerElement.style.left=\"0\";containerElement.style.right=\"0\";containerElement.style.bottom=\"0\";document.body.appendChild(containerElement);appender.addCssProperty(\"borderWidth\",\"1px 0 0 0\");appender.addCssProperty(\"zIndex\",1000000);open();}else{try{var el=document.getElementById(container);if(el.nodeType==1){containerElement=el;}\r\nopen();}catch(ex){handleError(\"InPageAppender.init: invalid container element '\"+container+\"' supplied\",ex);}}};if(pageLoaded&&container&&container.appendChild){containerElement=container;open();}else if(pageLoaded){pageLoadHandler();}else{log4javascript.addEventListener(\"load\",pageLoadHandler);}\r\nwindowCreationStarted=true;}};init=function(){createWindow();initialized=true;};getConsoleWindow=function(){var iframe=window.frames[iframeId];if(iframe){return iframe;}};safeToAppend=function(){if(isSupported&&!consoleClosed){if(consoleWindowCreated&&!consoleWindowLoaded&&getConsoleWindow()&&isLoaded(getConsoleWindow())){consoleWindowLoaded=true;}\r\nreturn consoleWindowLoaded;}\r\nreturn false;};}else{var useOldPopUp=appender.defaults.useOldPopUp;var complainAboutPopUpBlocking=appender.defaults.complainAboutPopUpBlocking;var reopenWhenClosed=this.defaults.reopenWhenClosed;this.isUseOldPopUp=function(){return useOldPopUp;};this.setUseOldPopUp=function(useOldPopUpParam){if(checkCanConfigure(\"useOldPopUp\")){useOldPopUp=bool(useOldPopUpParam);}};this.isComplainAboutPopUpBlocking=function(){return complainAboutPopUpBlocking;};this.setComplainAboutPopUpBlocking=function(complainAboutPopUpBlockingParam){if(checkCanConfigure(\"complainAboutPopUpBlocking\")){complainAboutPopUpBlocking=bool(complainAboutPopUpBlockingParam);}};this.isFocusPopUp=function(){return focusConsoleWindow;};this.setFocusPopUp=function(focusPopUpParam){focusConsoleWindow=bool(focusPopUpParam);};this.isReopenWhenClosed=function(){return reopenWhenClosed;};this.setReopenWhenClosed=function(reopenWhenClosedParam){reopenWhenClosed=bool(reopenWhenClosedParam);};this.close=function(){logLog.debug(\"close \"+this);try{popUp.close();this.unload();}catch(ex){}};this.hide=function(){logLog.debug(\"hide \"+this);if(consoleWindowExists()){this.close();}};this.show=function(){logLog.debug(\"show \"+this);if(!consoleWindowCreated){open();}};this.isVisible=function(){return safeToAppend();};var popUp;open=function(){var windowProperties=\"width=\"+width+\",height=\"+height+\",status,resizable\";var frameInfo=\"\";try{var frameEl=window.frameElement;if(frameEl){frameInfo=\"_\"+frameEl.tagName+\"_\"+(frameEl.name||frameEl.id||\"\");}}catch(e){frameInfo=\"_inaccessibleParentFrame\";}\r\nvar windowName=\"PopUp_\"+location.host.replace(/[^a-z0-9]/gi,\"_\")+\"_\"+consoleAppenderId+frameInfo;if(!useOldPopUp||!useDocumentWrite){windowName=windowName+\"_\"+uniqueId;}\r\nvar checkPopUpClosed=function(win){if(consoleClosed){return true;}else{try{return bool(win)&&win.closed;}catch(ex){}}\r\nreturn false;};var popUpClosedCallback=function(){if(!consoleClosed){appender.unload();}};function finalInit(){getConsoleWindow().setCloseIfOpenerCloses(!useOldPopUp||!useDocumentWrite);consoleWindowLoadHandler();consoleWindowLoaded=true;appendQueuedLoggingEvents();pollConsoleWindow(checkPopUpClosed,500,popUpClosedCallback,\"PopUpAppender.checkPopUpClosed: error checking pop-up window\");}\r\ntry{popUp=window.open(getConsoleUrl(),windowName,windowProperties);consoleClosed=false;consoleWindowCreated=true;if(popUp&&popUp.document){if(useDocumentWrite&&useOldPopUp&&isLoaded(popUp)){popUp.mainPageReloaded();finalInit();}else{if(useDocumentWrite){writeHtml(popUp.document);}\r\nvar popUpLoadedTest=function(win){return bool(win)&&isLoaded(win);};if(isLoaded(popUp)){finalInit();}else{pollConsoleWindow(popUpLoadedTest,100,finalInit,\"PopUpAppender.init: unable to create console window\");}}}else{isSupported=false;logLog.warn(\"PopUpAppender.init: pop-ups blocked, please unblock to use PopUpAppender\");if(complainAboutPopUpBlocking){handleError(\"log4javascript: pop-up windows appear to be blocked. Please unblock them to use pop-up logging.\");}}}catch(ex){handleError(\"PopUpAppender.init: error creating pop-up\",ex);}};createWindow=function(){if(!initiallyMinimized){open();}};init=function(){createWindow();initialized=true;};getConsoleWindow=function(){return popUp;};safeToAppend=function(){if(isSupported&&!isUndefined(popUp)&&!consoleClosed){if(popUp.closed||(consoleWindowLoaded&&isUndefined(popUp.closed))){appender.unload();logLog.debug(\"PopUpAppender: pop-up closed\");return false;}\r\nif(!consoleWindowLoaded&&isLoaded(popUp)){consoleWindowLoaded=true;}}\r\nreturn isSupported&&consoleWindowLoaded&&!consoleClosed;};}\r\nthis.getConsoleWindow=getConsoleWindow;};ConsoleAppender.addGlobalCommandLineFunction=function(functionName,commandLineFunction){defaultCommandLineFunctions.push([functionName,commandLineFunction]);};function PopUpAppender(lazyInit,initiallyMinimized,useDocumentWrite,width,height){this.create(false,null,lazyInit,initiallyMinimized,useDocumentWrite,width,height,this.defaults.focusPopUp);}\r\nPopUpAppender.prototype=new ConsoleAppender();PopUpAppender.prototype.defaults={layout:new PatternLayout(\"%d{HH:mm:ss} %-5p - %m{1}%n\"),initiallyMinimized:false,focusPopUp:false,lazyInit:true,useOldPopUp:true,complainAboutPopUpBlocking:true,newestMessageAtTop:false,scrollToLatestMessage:true,width:\"600\",height:\"400\",reopenWhenClosed:false,maxMessages:null,showCommandLine:true,commandLineObjectExpansionDepth:1,showHideButton:false,showCloseButton:true,useDocumentWrite:true};PopUpAppender.prototype.toString=function(){return\"PopUpAppender\";};log4javascript.PopUpAppender=PopUpAppender;function InPageAppender(container,lazyInit,initiallyMinimized,useDocumentWrite,width,height){this.create(true,container,lazyInit,initiallyMinimized,useDocumentWrite,width,height,false);}\r\nInPageAppender.prototype=new ConsoleAppender();InPageAppender.prototype.defaults={layout:new PatternLayout(\"%d{HH:mm:ss} %-5p - %m{1}%n\"),initiallyMinimized:false,lazyInit:true,newestMessageAtTop:false,scrollToLatestMessage:true,width:\"100%\",height:\"220px\",maxMessages:null,showCommandLine:true,commandLineObjectExpansionDepth:1,showHideButton:false,showCloseButton:false,showLogEntryDeleteButtons:true,useDocumentWrite:true};InPageAppender.prototype.toString=function(){return\"InPageAppender\";};log4javascript.InPageAppender=InPageAppender;log4javascript.InlineAppender=InPageAppender;})();function padWithSpaces(str,len){if(str.length<len){var spaces=[];var numberOfSpaces=Math.max(0,len-str.length);for(var i=0;i<numberOfSpaces;i++){spaces[i]=\" \";}\r\nstr+=spaces.join(\"\");}\r\nreturn str;}\r\n(function(){function dir(obj){var maxLen=0;for(var p in obj){maxLen=Math.max(toStr(p).length,maxLen);}\r\nvar propList=[];for(p in obj){var propNameStr=\" \"+padWithSpaces(toStr(p),maxLen+2);var propVal;try{propVal=splitIntoLines(toStr(obj[p])).join(padWithSpaces(newLine,maxLen+6));}catch(ex){propVal=\"[Error obtaining property. Details: \"+getExceptionMessage(ex)+\"]\";}\r\npropList.push(propNameStr+propVal);}\r\nreturn propList.join(newLine);}\r\nvar nodeTypes={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12};var preFormattedElements=[\"script\",\"pre\"];var emptyElements=[\"br\",\"img\",\"hr\",\"param\",\"link\",\"area\",\"input\",\"col\",\"base\",\"meta\"];var indentationUnit=\" \";function getXhtml(rootNode,includeRootNode,indentation,startNewLine,preformatted){includeRootNode=(typeof includeRootNode==\"undefined\")?true:!!includeRootNode;if(typeof indentation!=\"string\"){indentation=\"\";}\r\nstartNewLine=!!startNewLine;preformatted=!!preformatted;var xhtml;function isWhitespace(node){return((node.nodeType==nodeTypes.TEXT_NODE)&&/^[ \\t\\r\\n]*$/.test(node.nodeValue));}\r\nfunction fixAttributeValue(attrValue){return attrValue.toString().replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/\"/g,\"&quot;\");}\r\nfunction getStyleAttributeValue(el){var stylePairs=el.style.cssText.split(\";\");var styleValue=\"\";for(var j=0,len=stylePairs.length;j<len;j++){var nameValueBits=stylePairs[j].split(\":\");var props=[];if(!/^\\s*$/.test(nameValueBits[0])){props.push(trim(nameValueBits[0]).toLowerCase()+\":\"+trim(nameValueBits[1]));}\r\nstyleValue=props.join(\";\");}\r\nreturn styleValue;}\r\nfunction getNamespace(el){if(el.prefix){return el.prefix;}else if(el.outerHTML){var regex=new RegExp(\"<([^:]+):\"+el.tagName+\"[^>]*>\",\"i\");if(regex.test(el.outerHTML)){return RegExp.$1.toLowerCase();}}\r\nreturn\"\";}\r\nvar lt=\"<\";var gt=\">\";var i,len;if(includeRootNode&&rootNode.nodeType!=nodeTypes.DOCUMENT_FRAGMENT_NODE){switch(rootNode.nodeType){case nodeTypes.ELEMENT_NODE:var tagName=rootNode.tagName.toLowerCase();xhtml=startNewLine?newLine+indentation:\"\";xhtml+=lt;var prefix=getNamespace(rootNode);var hasPrefix=!!prefix;if(hasPrefix){xhtml+=prefix+\":\";}\r\nxhtml+=tagName;for(i=0,len=rootNode.attributes.length;i<len;i++){var currentAttr=rootNode.attributes[i];if(!currentAttr.specified||currentAttr.nodeValue===null||currentAttr.nodeName.toLowerCase()===\"style\"||typeof currentAttr.nodeValue!==\"string\"||currentAttr.nodeName.indexOf(\"_moz\")===0){continue;}\r\nxhtml+=\" \"+currentAttr.nodeName.toLowerCase()+\"=\\\"\";xhtml+=fixAttributeValue(currentAttr.nodeValue);xhtml+=\"\\\"\";}\r\nif(rootNode.style.cssText){var styleValue=getStyleAttributeValue(rootNode);if(styleValue!==\"\"){xhtml+=\" style=\\\"\"+getStyleAttributeValue(rootNode)+\"\\\"\";}}\r\nif(array_contains(emptyElements,tagName)||(hasPrefix&&!rootNode.hasChildNodes())){xhtml+=\"/\"+gt;}else{xhtml+=gt;var childStartNewLine=!(rootNode.childNodes.length===1&&rootNode.childNodes[0].nodeType===nodeTypes.TEXT_NODE);var childPreformatted=array_contains(preFormattedElements,tagName);for(i=0,len=rootNode.childNodes.length;i<len;i++){xhtml+=getXhtml(rootNode.childNodes[i],true,indentation+indentationUnit,childStartNewLine,childPreformatted);}\r\nvar endTag=lt+\"/\"+tagName+gt;xhtml+=childStartNewLine?newLine+indentation+endTag:endTag;}\r\nreturn xhtml;case nodeTypes.TEXT_NODE:if(isWhitespace(rootNode)){xhtml=\"\";}else{if(preformatted){xhtml=rootNode.nodeValue;}else{var lines=splitIntoLines(trim(rootNode.nodeValue));var trimmedLines=[];for(i=0,len=lines.length;i<len;i++){trimmedLines[i]=trim(lines[i]);}\r\nxhtml=trimmedLines.join(newLine+indentation);}\r\nif(startNewLine){xhtml=newLine+indentation+xhtml;}}\r\nreturn xhtml;case nodeTypes.CDATA_SECTION_NODE:return\"<![CDA\"+\"TA[\"+rootNode.nodeValue+\"]\"+\"]>\"+newLine;case nodeTypes.DOCUMENT_NODE:xhtml=\"\";for(i=0,len=rootNode.childNodes.length;i<len;i++){xhtml+=getXhtml(rootNode.childNodes[i],true,indentation);}\r\nreturn xhtml;default:return\"\";}}else{xhtml=\"\";for(i=0,len=rootNode.childNodes.length;i<len;i++){xhtml+=getXhtml(rootNode.childNodes[i],true,indentation+indentationUnit);}\r\nreturn xhtml;}}\r\nfunction createCommandLineFunctions(){ConsoleAppender.addGlobalCommandLineFunction(\"$\",function(appender,args,returnValue){return document.getElementById(args[0]);});ConsoleAppender.addGlobalCommandLineFunction(\"dir\",function(appender,args,returnValue){var lines=[];for(var i=0,len=args.length;i<len;i++){lines[i]=dir(args[i]);}\r\nreturn lines.join(newLine+newLine);});ConsoleAppender.addGlobalCommandLineFunction(\"dirxml\",function(appender,args,returnValue){var lines=[];for(var i=0,len=args.length;i<len;i++){lines[i]=getXhtml(args[i]);}\r\nreturn lines.join(newLine+newLine);});ConsoleAppender.addGlobalCommandLineFunction(\"cd\",function(appender,args,returnValue){var win,message;if(args.length===0||args[0]===\"\"){win=window;message=\"Command line set to run in main window\";}else{if(args[0].window==args[0]){win=args[0];message=\"Command line set to run in frame '\"+args[0].name+\"'\";}else{win=window.frames[args[0]];if(win){message=\"Command line set to run in frame '\"+args[0]+\"'\";}else{returnValue.isError=true;message=\"Frame '\"+args[0]+\"' does not exist\";win=appender.getCommandWindow();}}}\r\nappender.setCommandWindow(win);return message;});ConsoleAppender.addGlobalCommandLineFunction(\"clear\",function(appender,args,returnValue){returnValue.appendResult=false;appender.clear();});ConsoleAppender.addGlobalCommandLineFunction(\"keys\",function(appender,args,returnValue){var keys=[];for(var k in args[0]){keys.push(k);}\r\nreturn keys;});ConsoleAppender.addGlobalCommandLineFunction(\"values\",function(appender,args,returnValue){var values=[];for(var k in args[0]){try{values.push(args[0][k]);}catch(ex){logLog.warn(\"values(): Unable to obtain value for key \"+k+\". Details: \"+getExceptionMessage(ex));}}\r\nreturn values;});ConsoleAppender.addGlobalCommandLineFunction(\"expansionDepth\",function(appender,args,returnValue){var expansionDepth=parseInt(args[0],10);if(isNaN(expansionDepth)||expansionDepth<0){returnValue.isError=true;return\"\"+args[0]+\" is not a valid expansion depth\";}else{appender.setCommandLineObjectExpansionDepth(expansionDepth);return\"Object expansion depth set to \"+expansionDepth;}});}\r\nfunction init(){createCommandLineFunctions();}\r\ninit();})();function createDefaultLogger(){var logger=log4javascript.getLogger(defaultLoggerName);var a=new log4javascript.PopUpAppender();logger.addAppender(a);return logger;}\r\nlog4javascript.setDocumentReady=function(){pageLoaded=true;log4javascript.dispatchEvent(\"load\",{});};if(window.addEventListener){window.addEventListener(\"load\",log4javascript.setDocumentReady,false);}else if(window.attachEvent){window.attachEvent(\"onload\",log4javascript.setDocumentReady);}else{var oldOnload=window.onload;if(typeof window.onload!=\"function\"){window.onload=log4javascript.setDocumentReady;}else{window.onload=function(evt){if(oldOnload){oldOnload(evt);}\r\nlog4javascript.setDocumentReady();};}}\r\nreturn log4javascript;},this);\r\n","/**\n * lite-url - Small, JS lib that uses regex for parsing a URL into it's component parts.\n * @version v1.0.5\n * @link https://github.com/sadams/lite-url\n * @license BSD-3-Clause\n */\n(function(){\"use strict\";function r(r,n,t){var e=r.split(n),o=e.shift();return t(o,e.join(n))}function n(n){var t={hash:\"\",host:\"\",hostname:\"\",origin:\"\",pathname:\"\",protocol:\"\",search:\"\",password:\"\",username:\"\",port:\"\"};return r(n,\"#\",function(n,e){e&&(t.hash=e?\"#\"+e:\"\"),r(n,\"?\",function(n,e){e&&(t.search=\"?\"+e),n&&r(n,\"//\",function(n,e){t.protocol=n,r(e,\"/\",function(n,e){t.pathname=\"/\"+(e||\"\"),(t.protocol||n)&&(t.origin=t.protocol+\"//\"+n),r(n,\"@\",function(n,e){if(e){var o=n.split(\":\");t.username=o[0],t.password=o[1]}else e=n;t.host=e,r(e,\":\",function(r,n){t.hostname=r,n&&(t.port=n)})})})})})}),t.href=t.origin+t.pathname+t.search+t.hash,t}function t(r){var n={},t=r.search;if(t){t=t.replace(new RegExp(\"\\\\?\"),\"\");var e=t.split(\"&\");for(var o in e)if(e.hasOwnProperty(o)&&e[o]){var i=e[o].split(\"=\");n[i[0]]=i[1]}}return n}function e(r){var e=i[r];return\"undefined\"!=typeof e?e:(e=n(r),e.params=t(e),i[r]=e,e)}var o=this,i={};return e.changeQueryParser=function(r){t=r},\"undefined\"!=typeof exports?(\"undefined\"!=typeof module&&module.exports&&(exports=module.exports=e),exports.liteURL=e):o.liteURL=e,e}).call(this);\n","/*!\n * Platform.js v1.3.6\n * Copyright 2014-2020 Benjamin Tan\n * Copyright 2011-2013 John-David Dalton\n * Available under MIT license\n */\n;(function() {\n 'use strict';\n\n /** Used to determine if values are of the language type `Object`. */\n var objectTypes = {\n 'function': true,\n 'object': true\n };\n\n /** Used as a reference to the global object. */\n var root = (objectTypes[typeof window] && window) || this;\n\n /** Backup possible global object. */\n var oldRoot = root;\n\n /** Detect free variable `exports`. */\n var freeExports = objectTypes[typeof exports] && exports;\n\n /** Detect free variable `module`. */\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\n root = freeGlobal;\n }\n\n /**\n * Used as the maximum length of an array-like object.\n * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)\n * for more details.\n */\n var maxSafeInteger = Math.pow(2, 53) - 1;\n\n /** Regular expression to detect Opera. */\n var reOpera = /\\bOpera/;\n\n /** Possible global object. */\n var thisBinding = this;\n\n /** Used for native method references. */\n var objectProto = Object.prototype;\n\n /** Used to check for own properties of an object. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to resolve the internal `[[Class]]` of values. */\n var toString = objectProto.toString;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Capitalizes a string value.\n *\n * @private\n * @param {string} string The string to capitalize.\n * @returns {string} The capitalized string.\n */\n function capitalize(string) {\n string = String(string);\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n /**\n * A utility function to clean up the OS name.\n *\n * @private\n * @param {string} os The OS name to clean up.\n * @param {string} [pattern] A `RegExp` pattern matching the OS name.\n * @param {string} [label] A label for the OS.\n */\n function cleanupOS(os, pattern, label) {\n // Platform tokens are defined at:\n // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n var data = {\n '10.0': '10',\n '6.4': '10 Technical Preview',\n '6.3': '8.1',\n '6.2': '8',\n '6.1': 'Server 2008 R2 / 7',\n '6.0': 'Server 2008 / Vista',\n '5.2': 'Server 2003 / XP 64-bit',\n '5.1': 'XP',\n '5.01': '2000 SP1',\n '5.0': '2000',\n '4.0': 'NT',\n '4.90': 'ME'\n };\n // Detect Windows version from platform tokens.\n if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) &&\n (data = data[/[\\d.]+$/.exec(os)])) {\n os = 'Windows ' + data;\n }\n // Correct character case and cleanup string.\n os = String(os);\n\n if (pattern && label) {\n os = os.replace(RegExp(pattern, 'i'), label);\n }\n\n os = format(\n os.replace(/ ce$/i, ' CE')\n .replace(/\\bhpw/i, 'web')\n .replace(/\\bMacintosh\\b/, 'Mac OS')\n .replace(/_PowerPC\\b/i, ' OS')\n .replace(/\\b(OS X) [^ \\d]+/i, '$1')\n .replace(/\\bMac (OS X)\\b/, '$1')\n .replace(/\\/(\\d)/, ' $1')\n .replace(/_/g, '.')\n .replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i, '')\n .replace(/\\bx86\\.64\\b/gi, 'x86_64')\n .replace(/\\b(Windows Phone) OS\\b/, '$1')\n .replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/, '$1')\n .split(' on ')[0]\n );\n\n return os;\n }\n\n /**\n * An iteration utility for arrays and objects.\n *\n * @private\n * @param {Array|Object} object The object to iterate over.\n * @param {Function} callback The function called per iteration.\n */\n function each(object, callback) {\n var index = -1,\n length = object ? object.length : 0;\n\n if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) {\n while (++index < length) {\n callback(object[index], index, object);\n }\n } else {\n forOwn(object, callback);\n }\n }\n\n /**\n * Trim and conditionally capitalize string values.\n *\n * @private\n * @param {string} string The string to format.\n * @returns {string} The formatted string.\n */\n function format(string) {\n string = trim(string);\n return /^(?:webOS|i(?:OS|P))/.test(string)\n ? string\n : capitalize(string);\n }\n\n /**\n * Iterates over an object's own properties, executing the `callback` for each.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} callback The function executed per own property.\n */\n function forOwn(object, callback) {\n for (var key in object) {\n if (hasOwnProperty.call(object, key)) {\n callback(object[key], key, object);\n }\n }\n }\n\n /**\n * Gets the internal `[[Class]]` of a value.\n *\n * @private\n * @param {*} value The value.\n * @returns {string} The `[[Class]]`.\n */\n function getClassOf(value) {\n return value == null\n ? capitalize(value)\n : toString.call(value).slice(8, -1);\n }\n\n /**\n * Host objects can return type values that are different from their actual\n * data type. The objects we are concerned with usually return non-primitive\n * types of \"object\", \"function\", or \"unknown\".\n *\n * @private\n * @param {*} object The owner of the property.\n * @param {string} property The property to check.\n * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.\n */\n function isHostType(object, property) {\n var type = object != null ? typeof object[property] : 'number';\n return !/^(?:boolean|number|string|undefined)$/.test(type) &&\n (type == 'object' ? !!object[property] : true);\n }\n\n /**\n * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.\n *\n * @private\n * @param {string} string The string to qualify.\n * @returns {string} The qualified string.\n */\n function qualify(string) {\n return String(string).replace(/([ -])(?!$)/g, '$1?');\n }\n\n /**\n * A bare-bones `Array#reduce` like utility function.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function called per iteration.\n * @returns {*} The accumulated result.\n */\n function reduce(array, callback) {\n var accumulator = null;\n each(array, function(value, index) {\n accumulator = callback(accumulator, value, index, array);\n });\n return accumulator;\n }\n\n /**\n * Removes leading and trailing whitespace from a string.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} The trimmed string.\n */\n function trim(string) {\n return String(string).replace(/^ +| +$/g, '');\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Creates a new platform object.\n *\n * @memberOf platform\n * @param {Object|string} [ua=navigator.userAgent] The user agent string or\n * context object.\n * @returns {Object} A platform object.\n */\n function parse(ua) {\n\n /** The environment context object. */\n var context = root;\n\n /** Used to flag when a custom context is provided. */\n var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String';\n\n // Juggle arguments.\n if (isCustomContext) {\n context = ua;\n ua = null;\n }\n\n /** Browser navigator object. */\n var nav = context.navigator || {};\n\n /** Browser user agent string. */\n var userAgent = nav.userAgent || '';\n\n ua || (ua = userAgent);\n\n /** Used to flag when `thisBinding` is the [ModuleScope]. */\n var isModuleScope = isCustomContext || thisBinding == oldRoot;\n\n /** Used to detect if browser is like Chrome. */\n var likeChrome = isCustomContext\n ? !!nav.likeChrome\n : /\\bChrome\\b/.test(ua) && !/internal|\\n/i.test(toString.toString());\n\n /** Internal `[[Class]]` value shortcuts. */\n var objectClass = 'Object',\n airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject',\n enviroClass = isCustomContext ? objectClass : 'Environment',\n javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java),\n phantomClass = isCustomContext ? objectClass : 'RuntimeObject';\n\n /** Detect Java environments. */\n var java = /\\bJava/.test(javaClass) && context.java;\n\n /** Detect Rhino. */\n var rhino = java && getClassOf(context.environment) == enviroClass;\n\n /** A character to represent alpha. */\n var alpha = java ? 'a' : '\\u03b1';\n\n /** A character to represent beta. */\n var beta = java ? 'b' : '\\u03b2';\n\n /** Browser document object. */\n var doc = context.document || {};\n\n /**\n * Detect Opera browser (Presto-based).\n * http://www.howtocreate.co.uk/operaStuff/operaObject.html\n * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini\n */\n var opera = context.operamini || context.opera;\n\n /** Opera `[[Class]]`. */\n var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera))\n ? operaClass\n : (opera = null);\n\n /*------------------------------------------------------------------------*/\n\n /** Temporary variable used over the script's lifetime. */\n var data;\n\n /** The CPU architecture. */\n var arch = ua;\n\n /** Platform description array. */\n var description = [];\n\n /** Platform alpha/beta indicator. */\n var prerelease = null;\n\n /** A flag to indicate that environment features should be used to resolve the platform. */\n var useFeatures = ua == userAgent;\n\n /** The browser/environment version. */\n var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();\n\n /** A flag to indicate if the OS ends with \"/ Version\" */\n var isSpecialCasedOS;\n\n /* Detectable layout engines (order is important). */\n var layout = getLayout([\n { 'label': 'EdgeHTML', 'pattern': 'Edge' },\n 'Trident',\n { 'label': 'WebKit', 'pattern': 'AppleWebKit' },\n 'iCab',\n 'Presto',\n 'NetFront',\n 'Tasman',\n 'KHTML',\n 'Gecko'\n ]);\n\n /* Detectable browser names (order is important). */\n var name = getName([\n 'Adobe AIR',\n 'Arora',\n 'Avant Browser',\n 'Breach',\n 'Camino',\n 'Electron',\n 'Epiphany',\n 'Fennec',\n 'Flock',\n 'Galeon',\n 'GreenBrowser',\n 'iCab',\n 'Iceweasel',\n 'K-Meleon',\n 'Konqueror',\n 'Lunascape',\n 'Maxthon',\n { 'label': 'Microsoft Edge', 'pattern': '(?:Edge|Edg|EdgA|EdgiOS)' },\n 'Midori',\n 'Nook Browser',\n 'PaleMoon',\n 'PhantomJS',\n 'Raven',\n 'Rekonq',\n 'RockMelt',\n { 'label': 'Samsung Internet', 'pattern': 'SamsungBrowser' },\n 'SeaMonkey',\n { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Sleipnir',\n 'SlimBrowser',\n { 'label': 'SRWare Iron', 'pattern': 'Iron' },\n 'Sunrise',\n 'Swiftfox',\n 'Vivaldi',\n 'Waterfox',\n 'WebPositive',\n { 'label': 'Yandex Browser', 'pattern': 'YaBrowser' },\n { 'label': 'UC Browser', 'pattern': 'UCBrowser' },\n 'Opera Mini',\n { 'label': 'Opera Mini', 'pattern': 'OPiOS' },\n 'Opera',\n { 'label': 'Opera', 'pattern': 'OPR' },\n 'Chromium',\n 'Chrome',\n { 'label': 'Chrome', 'pattern': '(?:HeadlessChrome)' },\n { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },\n { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },\n { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' },\n { 'label': 'IE', 'pattern': 'IEMobile' },\n { 'label': 'IE', 'pattern': 'MSIE' },\n 'Safari'\n ]);\n\n /* Detectable products (order is important). */\n var product = getProduct([\n { 'label': 'BlackBerry', 'pattern': 'BB10' },\n 'BlackBerry',\n { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },\n { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },\n { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' },\n { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' },\n { 'label': 'Galaxy S5', 'pattern': 'SM-G900' },\n { 'label': 'Galaxy S6', 'pattern': 'SM-G920' },\n { 'label': 'Galaxy S6 Edge', 'pattern': 'SM-G925' },\n { 'label': 'Galaxy S7', 'pattern': 'SM-G930' },\n { 'label': 'Galaxy S7 Edge', 'pattern': 'SM-G935' },\n 'Google TV',\n 'Lumia',\n 'iPad',\n 'iPod',\n 'iPhone',\n 'Kindle',\n { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Nexus',\n 'Nook',\n 'PlayBook',\n 'PlayStation Vita',\n 'PlayStation',\n 'TouchPad',\n 'Transformer',\n { 'label': 'Wii U', 'pattern': 'WiiU' },\n 'Wii',\n 'Xbox One',\n { 'label': 'Xbox 360', 'pattern': 'Xbox' },\n 'Xoom'\n ]);\n\n /* Detectable manufacturers. */\n var manufacturer = getManufacturer({\n 'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },\n 'Alcatel': {},\n 'Archos': {},\n 'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },\n 'Asus': { 'Transformer': 1 },\n 'Barnes & Noble': { 'Nook': 1 },\n 'BlackBerry': { 'PlayBook': 1 },\n 'Google': { 'Google TV': 1, 'Nexus': 1 },\n 'HP': { 'TouchPad': 1 },\n 'HTC': {},\n 'Huawei': {},\n 'Lenovo': {},\n 'LG': {},\n 'Microsoft': { 'Xbox': 1, 'Xbox One': 1 },\n 'Motorola': { 'Xoom': 1 },\n 'Nintendo': { 'Wii U': 1, 'Wii': 1 },\n 'Nokia': { 'Lumia': 1 },\n 'Oppo': {},\n 'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 },\n 'Sony': { 'PlayStation': 1, 'PlayStation Vita': 1 },\n 'Xiaomi': { 'Mi': 1, 'Redmi': 1 }\n });\n\n /* Detectable operating systems (order is important). */\n var os = getOS([\n 'Windows Phone',\n 'KaiOS',\n 'Android',\n 'CentOS',\n { 'label': 'Chrome OS', 'pattern': 'CrOS' },\n 'Debian',\n { 'label': 'DragonFly BSD', 'pattern': 'DragonFly' },\n 'Fedora',\n 'FreeBSD',\n 'Gentoo',\n 'Haiku',\n 'Kubuntu',\n 'Linux Mint',\n 'OpenBSD',\n 'Red Hat',\n 'SuSE',\n 'Ubuntu',\n 'Xubuntu',\n 'Cygwin',\n 'Symbian OS',\n 'hpwOS',\n 'webOS ',\n 'webOS',\n 'Tablet OS',\n 'Tizen',\n 'Linux',\n 'Mac OS X',\n 'Macintosh',\n 'Mac',\n 'Windows 98;',\n 'Windows '\n ]);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Picks the layout engine from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected layout engine.\n */\n function getLayout(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the manufacturer from an array of guesses.\n *\n * @private\n * @param {Array} guesses An object of guesses.\n * @returns {null|string} The detected manufacturer.\n */\n function getManufacturer(guesses) {\n return reduce(guesses, function(result, value, key) {\n // Lookup the manufacturer by product or scan the UA for the manufacturer.\n return result || (\n value[product] ||\n value[/^[a-z]+(?: +[a-z]+\\b)*/i.exec(product)] ||\n RegExp('\\\\b' + qualify(key) + '(?:\\\\b|\\\\w*\\\\d)', 'i').exec(ua)\n ) && key;\n });\n }\n\n /**\n * Picks the browser name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected browser name.\n */\n function getName(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the OS name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected OS name.\n */\n function getOS(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + '(?:/[\\\\d.]+|[ \\\\w.]*)', 'i').exec(ua)\n )) {\n result = cleanupOS(result, pattern, guess.label || guess);\n }\n return result;\n });\n }\n\n /**\n * Picks the product name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected product name.\n */\n function getProduct(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + ' *\\\\d+[.\\\\w_]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + ' *\\\\w+-[\\\\w]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\\\d+|[^ ();-]*)', 'i').exec(ua)\n )) {\n // Split by forward slash and append product version if needed.\n if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\\d.]+/.test(result[0])) {\n result[0] += ' ' + result[1];\n }\n // Correct character case and cleanup string.\n guess = guess.label || guess;\n result = format(result[0]\n .replace(RegExp(pattern, 'i'), guess)\n .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')\n .replace(RegExp('(' + guess + ')[-_.]?(\\\\w)', 'i'), '$1 $2'));\n }\n return result;\n });\n }\n\n /**\n * Resolves the version using an array of UA patterns.\n *\n * @private\n * @param {Array} patterns An array of UA patterns.\n * @returns {null|string} The detected version.\n */\n function getVersion(patterns) {\n return reduce(patterns, function(result, pattern) {\n return result || (RegExp(pattern +\n '(?:-[\\\\d.]+/|(?: for [\\\\w-]+)?[ /-])([\\\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;\n });\n }\n\n /**\n * Returns `platform.description` when the platform object is coerced to a string.\n *\n * @name toString\n * @memberOf platform\n * @returns {string} Returns `platform.description` if available, else an empty string.\n */\n function toStringPlatform() {\n return this.description || '';\n }\n\n /*------------------------------------------------------------------------*/\n\n // Convert layout to an array so we can add extra details.\n layout && (layout = [layout]);\n\n // Detect Android products.\n // Browsers on Android devices typically provide their product IDS after \"Android;\"\n // up to \"Build\" or \") AppleWebKit\".\n // Example:\n // \"Mozilla/5.0 (Linux; Android 8.1.0; Moto G (5) Plus) AppleWebKit/537.36\n // (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36\"\n if (/\\bAndroid\\b/.test(os) && !product &&\n (data = /\\bAndroid[^;]*;(.*?)(?:Build|\\) AppleWebKit)\\b/i.exec(ua))) {\n product = trim(data[1])\n // Replace any language codes (eg. \"en-US\").\n .replace(/^[a-z]{2}-[a-z]{2};\\s*/i, '')\n || null;\n }\n // Detect product names that contain their manufacturer's name.\n if (manufacturer && !product) {\n product = getProduct([manufacturer]);\n } else if (manufacturer && product) {\n product = product\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.\\\\s]', 'i'), manufacturer + ' ')\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.]?(\\\\w)', 'i'), manufacturer + ' $2');\n }\n // Clean up Google TV.\n if ((data = /\\bGoogle TV\\b/.exec(product))) {\n product = data[0];\n }\n // Detect simulators.\n if (/\\bSimulator\\b/i.test(ua)) {\n product = (product ? product + ' ' : '') + 'Simulator';\n }\n // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.\n if (name == 'Opera Mini' && /\\bOPiOS\\b/.test(ua)) {\n description.push('running in Turbo/Uncompressed mode');\n }\n // Detect IE Mobile 11.\n if (name == 'IE' && /\\blike iPhone OS\\b/.test(ua)) {\n data = parse(ua.replace(/like iPhone OS/, ''));\n manufacturer = data.manufacturer;\n product = data.product;\n }\n // Detect iOS.\n else if (/^iP/.test(product)) {\n name || (name = 'Safari');\n os = 'iOS' + ((data = / OS ([\\d_]+)/i.exec(ua))\n ? ' ' + data[1].replace(/_/g, '.')\n : '');\n }\n // Detect Kubuntu.\n else if (name == 'Konqueror' && /^Linux\\b/i.test(os)) {\n os = 'Kubuntu';\n }\n // Detect Android browsers.\n else if ((manufacturer && manufacturer != 'Google' &&\n ((/Chrome/.test(name) && !/\\bMobile Safari\\b/i.test(ua)) || /\\bVita\\b/.test(product))) ||\n (/\\bAndroid\\b/.test(os) && /^Chrome/.test(name) && /\\bVersion\\//i.test(ua))) {\n name = 'Android Browser';\n os = /\\bAndroid\\b/.test(os) ? os : 'Android';\n }\n // Detect Silk desktop/accelerated modes.\n else if (name == 'Silk') {\n if (!/\\bMobi/i.test(ua)) {\n os = 'Android';\n description.unshift('desktop mode');\n }\n if (/Accelerated *= *true/i.test(ua)) {\n description.unshift('accelerated');\n }\n }\n // Detect UC Browser speed mode.\n else if (name == 'UC Browser' && /\\bUCWEB\\b/.test(ua)) {\n description.push('speed mode');\n }\n // Detect PaleMoon identifying as Firefox.\n else if (name == 'PaleMoon' && (data = /\\bFirefox\\/([\\d.]+)\\b/.exec(ua))) {\n description.push('identifying as Firefox ' + data[1]);\n }\n // Detect Firefox OS and products running Firefox.\n else if (name == 'Firefox' && (data = /\\b(Mobile|Tablet|TV)\\b/i.exec(ua))) {\n os || (os = 'Firefox OS');\n product || (product = data[1]);\n }\n // Detect false positives for Firefox/Safari.\n else if (!name || (data = !/\\bMinefield\\b/i.test(ua) && /\\b(?:Firefox|Safari)\\b/.exec(name))) {\n // Escape the `/` for Firefox 1.\n if (name && !product && /[\\/,]|^[^(]+?\\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {\n // Clear name of false positives.\n name = null;\n }\n // Reassign a generic name.\n if ((data = product || manufacturer || os) &&\n (product || manufacturer || /\\b(?:Android|Symbian OS|Tablet OS|webOS)\\b/.test(os))) {\n name = /[a-z]+(?: Hat)?/i.exec(/\\bAndroid\\b/.test(os) ? os : data) + ' Browser';\n }\n }\n // Add Chrome version to description for Electron.\n else if (name == 'Electron' && (data = (/\\bChrome\\/([\\d.]+)\\b/.exec(ua) || 0)[1])) {\n description.push('Chromium ' + data);\n }\n // Detect non-Opera (Presto-based) versions (order is important).\n if (!version) {\n version = getVersion([\n '(?:Cloud9|CriOS|CrMo|Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\\\d.]+$)|UCBrowser|YaBrowser)',\n 'Version',\n qualify(name),\n '(?:Firefox|Minefield|NetFront)'\n ]);\n }\n // Detect stubborn layout engines.\n if ((data =\n layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||\n /\\bOpera\\b/.test(name) && (/\\bOPR\\b/.test(ua) ? 'Blink' : 'Presto') ||\n /\\b(?:Midori|Nook|Safari)\\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||\n !layout && /\\bMSIE\\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||\n layout == 'WebKit' && /\\bPlayStation\\b(?! Vita\\b)/i.test(name) && 'NetFront'\n )) {\n layout = [data];\n }\n // Detect Windows Phone 7 desktop mode.\n if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(ua) || 0)[1])) {\n name += ' Mobile';\n os = 'Windows Phone ' + (/\\+$/.test(data) ? data : data + '.x');\n description.unshift('desktop mode');\n }\n // Detect Windows Phone 8.x desktop mode.\n else if (/\\bWPDesktop\\b/i.test(ua)) {\n name = 'IE Mobile';\n os = 'Windows Phone 8.x';\n description.unshift('desktop mode');\n version || (version = (/\\brv:([\\d.]+)/.exec(ua) || 0)[1]);\n }\n // Detect IE 11 identifying as other browsers.\n else if (name != 'IE' && layout == 'Trident' && (data = /\\brv:([\\d.]+)/.exec(ua))) {\n if (name) {\n description.push('identifying as ' + name + (version ? ' ' + version : ''));\n }\n name = 'IE';\n version = data[1];\n }\n // Leverage environment features.\n if (useFeatures) {\n // Detect server-side environments.\n // Rhino has a global function while others have a global object.\n if (isHostType(context, 'global')) {\n if (java) {\n data = java.lang.System;\n arch = data.getProperty('os.arch');\n os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');\n }\n if (rhino) {\n try {\n version = context.require('ringo/engine').version.join('.');\n name = 'RingoJS';\n } catch(e) {\n if ((data = context.system) && data.global.system == context.system) {\n name = 'Narwhal';\n os || (os = data[0].os || null);\n }\n }\n if (!name) {\n name = 'Rhino';\n }\n }\n else if (\n typeof context.process == 'object' && !context.process.browser &&\n (data = context.process)\n ) {\n if (typeof data.versions == 'object') {\n if (typeof data.versions.electron == 'string') {\n description.push('Node ' + data.versions.node);\n name = 'Electron';\n version = data.versions.electron;\n } else if (typeof data.versions.nw == 'string') {\n description.push('Chromium ' + version, 'Node ' + data.versions.node);\n name = 'NW.js';\n version = data.versions.nw;\n }\n }\n if (!name) {\n name = 'Node.js';\n arch = data.arch;\n os = data.platform;\n version = /[\\d.]+/.exec(data.version);\n version = version ? version[0] : null;\n }\n }\n }\n // Detect Adobe AIR.\n else if (getClassOf((data = context.runtime)) == airRuntimeClass) {\n name = 'Adobe AIR';\n os = data.flash.system.Capabilities.os;\n }\n // Detect PhantomJS.\n else if (getClassOf((data = context.phantom)) == phantomClass) {\n name = 'PhantomJS';\n version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);\n }\n // Detect IE compatibility modes.\n else if (typeof doc.documentMode == 'number' && (data = /\\bTrident\\/(\\d+)/i.exec(ua))) {\n // We're in compatibility mode when the Trident version + 4 doesn't\n // equal the document mode.\n version = [version, doc.documentMode];\n if ((data = +data[1] + 4) != version[1]) {\n description.push('IE ' + version[1] + ' mode');\n layout && (layout[1] = '');\n version[1] = data;\n }\n version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];\n }\n // Detect IE 11 masking as other browsers.\n else if (typeof doc.documentMode == 'number' && /^(?:Chrome|Firefox)\\b/.test(name)) {\n description.push('masking as ' + name + ' ' + version);\n name = 'IE';\n version = '11.0';\n layout = ['Trident'];\n os = 'Windows';\n }\n os = os && format(os);\n }\n // Detect prerelease phases.\n if (version && (data =\n /(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(version) ||\n /(?:alpha|beta)(?: ?\\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||\n /\\bMinefield\\b/i.test(ua) && 'a'\n )) {\n prerelease = /b/i.test(data) ? 'beta' : 'alpha';\n version = version.replace(RegExp(data + '\\\\+?$'), '') +\n (prerelease == 'beta' ? beta : alpha) + (/\\d+\\+?/.exec(data) || '');\n }\n // Detect Firefox Mobile.\n if (name == 'Fennec' || name == 'Firefox' && /\\b(?:Android|Firefox OS|KaiOS)\\b/.test(os)) {\n name = 'Firefox Mobile';\n }\n // Obscure Maxthon's unreliable version.\n else if (name == 'Maxthon' && version) {\n version = version.replace(/\\.[\\d.]+/, '.x');\n }\n // Detect Xbox 360 and Xbox One.\n else if (/\\bXbox\\b/i.test(product)) {\n if (product == 'Xbox 360') {\n os = null;\n }\n if (product == 'Xbox 360' && /\\bIEMobile\\b/.test(ua)) {\n description.unshift('mobile mode');\n }\n }\n // Add mobile postfix.\n else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) &&\n (os == 'Windows CE' || /Mobi/i.test(ua))) {\n name += ' Mobile';\n }\n // Detect IE platform preview.\n else if (name == 'IE' && useFeatures) {\n try {\n if (context.external === null) {\n description.unshift('platform preview');\n }\n } catch(e) {\n description.unshift('embedded');\n }\n }\n // Detect BlackBerry OS version.\n // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp\n else if ((/\\bBlackBerry\\b/.test(product) || /\\bBB10\\b/.test(ua)) && (data =\n (RegExp(product.replace(/ +/g, ' *') + '/([.\\\\d]+)', 'i').exec(ua) || 0)[1] ||\n version\n )) {\n data = [data, /BB10/.test(ua)];\n os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0];\n version = null;\n }\n // Detect Opera identifying/masking itself as another browser.\n // http://www.opera.com/support/kb/view/843/\n else if (this != forOwn && product != 'Wii' && (\n (useFeatures && opera) ||\n (/Opera/.test(name) && /\\b(?:MSIE|Firefox)\\b/i.test(ua)) ||\n (name == 'Firefox' && /\\bOS X (?:\\d+\\.){2,}/.test(os)) ||\n (name == 'IE' && (\n (os && !/^Win/.test(os) && version > 5.5) ||\n /\\bWindows XP\\b/.test(os) && version > 8 ||\n version == 8 && !/\\bTrident\\b/.test(ua)\n ))\n ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {\n // When \"identifying\", the UA contains both Opera and the other browser's name.\n data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');\n if (reOpera.test(name)) {\n if (/\\bIE\\b/.test(data) && os == 'Mac OS') {\n os = null;\n }\n data = 'identify' + data;\n }\n // When \"masking\", the UA contains only the other browser's name.\n else {\n data = 'mask' + data;\n if (operaClass) {\n name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));\n } else {\n name = 'Opera';\n }\n if (/\\bIE\\b/.test(data)) {\n os = null;\n }\n if (!useFeatures) {\n version = null;\n }\n }\n layout = ['Presto'];\n description.push(data);\n }\n // Detect WebKit Nightly and approximate Chrome/Safari versions.\n if ((data = (/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n // Correct build number for numeric comparison.\n // (e.g. \"532.5\" becomes \"532.05\")\n data = [parseFloat(data.replace(/\\.(\\d)$/, '.0$1')), data];\n // Nightly builds are postfixed with a \"+\".\n if (name == 'Safari' && data[1].slice(-1) == '+') {\n name = 'WebKit Nightly';\n prerelease = 'alpha';\n version = data[1].slice(0, -1);\n }\n // Clear incorrect browser versions.\n else if (version == data[1] ||\n version == (data[2] = (/\\bSafari\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n version = null;\n }\n // Use the full Chrome version when available.\n data[1] = (/\\b(?:Headless)?Chrome\\/([\\d.]+)/i.exec(ua) || 0)[1];\n // Detect Blink layout engine.\n if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') {\n layout = ['Blink'];\n }\n // Detect JavaScriptCore.\n // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi\n if (!useFeatures || (!likeChrome && !data[1])) {\n layout && (layout[1] = 'like Safari');\n data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : data < 602 ? 9 : data < 604 ? 10 : data < 606 ? 11 : data < 608 ? 12 : '12');\n } else {\n layout && (layout[1] = 'like Chrome');\n data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28');\n }\n // Add the postfix of \".x\" or \"+\" for approximate versions.\n layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+'));\n // Obscure version for some Safari 1-2 releases.\n if (name == 'Safari' && (!version || parseInt(version) > 45)) {\n version = data;\n } else if (name == 'Chrome' && /\\bHeadlessChrome/i.test(ua)) {\n description.unshift('headless');\n }\n }\n // Detect Opera desktop modes.\n if (name == 'Opera' && (data = /\\bzbov|zvav$/.exec(os))) {\n name += ' ';\n description.unshift('desktop mode');\n if (data == 'zvav') {\n name += 'Mini';\n version = null;\n } else {\n name += 'Mobile';\n }\n os = os.replace(RegExp(' *' + data + '$'), '');\n }\n // Detect Chrome desktop mode.\n else if (name == 'Safari' && /\\bChrome\\b/.exec(layout && layout[1])) {\n description.unshift('desktop mode');\n name = 'Chrome Mobile';\n version = null;\n\n if (/\\bOS X\\b/.test(os)) {\n manufacturer = 'Apple';\n os = 'iOS 4.3+';\n } else {\n os = null;\n }\n }\n // Newer versions of SRWare Iron uses the Chrome tag to indicate its version number.\n else if (/\\bSRWare Iron\\b/.test(name) && !version) {\n version = getVersion('Chrome');\n }\n // Strip incorrect OS versions.\n if (version && version.indexOf((data = /[\\d.]+$/.exec(os))) == 0 &&\n ua.indexOf('/' + data + '-') > -1) {\n os = trim(os.replace(data, ''));\n }\n // Ensure OS does not include the browser name.\n if (os && os.indexOf(name) != -1 && !RegExp(name + ' OS').test(os)) {\n os = os.replace(RegExp(' *' + qualify(name) + ' *'), '');\n }\n // Add layout engine.\n if (layout && !/\\b(?:Avant|Nook)\\b/.test(name) && (\n /Browser|Lunascape|Maxthon/.test(name) ||\n name != 'Safari' && /^iOS/.test(os) && /\\bSafari\\b/.test(layout[1]) ||\n /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(name) && layout[1])) {\n // Don't add layout details to description if they are falsey.\n (data = layout[layout.length - 1]) && description.push(data);\n }\n // Combine contextual information.\n if (description.length) {\n description = ['(' + description.join('; ') + ')'];\n }\n // Append manufacturer to description.\n if (manufacturer && product && product.indexOf(manufacturer) < 0) {\n description.push('on ' + manufacturer);\n }\n // Append product to description.\n if (product) {\n description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product);\n }\n // Parse the OS into an object.\n if (os) {\n data = / ([\\d.+]+)$/.exec(os);\n isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/';\n os = {\n 'architecture': 32,\n 'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os,\n 'version': data ? data[1] : null,\n 'toString': function() {\n var version = this.version;\n return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');\n }\n };\n }\n // Add browser/OS architecture.\n if ((data = /\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(arch)) && !/\\bi686\\b/i.test(arch)) {\n if (os) {\n os.architecture = 64;\n os.family = os.family.replace(RegExp(' *' + data), '');\n }\n if (\n name && (/\\bWOW64\\b/i.test(ua) ||\n (useFeatures && /\\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\\bWin64; x64\\b/i.test(ua)))\n ) {\n description.unshift('32-bit');\n }\n }\n // Chrome 39 and above on OS X is always 64-bit.\n else if (\n os && /^OS X/.test(os.family) &&\n name == 'Chrome' && parseFloat(version) >= 39\n ) {\n os.architecture = 64;\n }\n\n ua || (ua = null);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The platform object.\n *\n * @name platform\n * @type Object\n */\n var platform = {};\n\n /**\n * The platform description.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.description = ua;\n\n /**\n * The name of the browser's layout engine.\n *\n * The list of common layout engines include:\n * \"Blink\", \"EdgeHTML\", \"Gecko\", \"Trident\" and \"WebKit\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.layout = layout && layout[0];\n\n /**\n * The name of the product's manufacturer.\n *\n * The list of manufacturers include:\n * \"Apple\", \"Archos\", \"Amazon\", \"Asus\", \"Barnes & Noble\", \"BlackBerry\",\n * \"Google\", \"HP\", \"HTC\", \"LG\", \"Microsoft\", \"Motorola\", \"Nintendo\",\n * \"Nokia\", \"Samsung\" and \"Sony\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.manufacturer = manufacturer;\n\n /**\n * The name of the browser/environment.\n *\n * The list of common browser names include:\n * \"Chrome\", \"Electron\", \"Firefox\", \"Firefox for iOS\", \"IE\",\n * \"Microsoft Edge\", \"PhantomJS\", \"Safari\", \"SeaMonkey\", \"Silk\",\n * \"Opera Mini\" and \"Opera\"\n *\n * Mobile versions of some browsers have \"Mobile\" appended to their name:\n * eg. \"Chrome Mobile\", \"Firefox Mobile\", \"IE Mobile\" and \"Opera Mobile\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.name = name;\n\n /**\n * The alpha/beta release indicator.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.prerelease = prerelease;\n\n /**\n * The name of the product hosting the browser.\n *\n * The list of common products include:\n *\n * \"BlackBerry\", \"Galaxy S4\", \"Lumia\", \"iPad\", \"iPod\", \"iPhone\", \"Kindle\",\n * \"Kindle Fire\", \"Nexus\", \"Nook\", \"PlayBook\", \"TouchPad\" and \"Transformer\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.product = product;\n\n /**\n * The browser's user agent string.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.ua = ua;\n\n /**\n * The browser/environment version.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.version = name && version;\n\n /**\n * The name of the operating system.\n *\n * @memberOf platform\n * @type Object\n */\n platform.os = os || {\n\n /**\n * The CPU architecture the OS is built for.\n *\n * @memberOf platform.os\n * @type number|null\n */\n 'architecture': null,\n\n /**\n * The family of the OS.\n *\n * Common values include:\n * \"Windows\", \"Windows Server 2008 R2 / 7\", \"Windows Server 2008 / Vista\",\n * \"Windows XP\", \"OS X\", \"Linux\", \"Ubuntu\", \"Debian\", \"Fedora\", \"Red Hat\",\n * \"SuSE\", \"Android\", \"iOS\" and \"Windows Phone\"\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'family': null,\n\n /**\n * The version of the OS.\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'version': null,\n\n /**\n * Returns the OS string.\n *\n * @memberOf platform.os\n * @returns {string} The OS string.\n */\n 'toString': function() { return 'null'; }\n };\n\n platform.parse = parse;\n platform.toString = toStringPlatform;\n\n if (platform.version) {\n description.unshift(version);\n }\n if (platform.name) {\n description.unshift(name);\n }\n if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) {\n description.push(product ? '(' + os + ')' : 'on ' + os);\n }\n if (description.length) {\n platform.description = description.join(' ');\n }\n return platform;\n }\n\n /*--------------------------------------------------------------------------*/\n\n // Export platform.\n var platform = parse();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like the following:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose platform on the global object to prevent errors when platform is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n root.platform = platform;\n\n // Define as an anonymous module so platform can be aliased through path mapping.\n define(function() {\n return platform;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\n else if (freeExports && freeModule) {\n // Export for CommonJS support.\n forOwn(platform, function(value, key) {\n freeExports[key] = value;\n });\n }\n else {\n // Export to the global object.\n root.platform = platform;\n }\n}.call(this));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/adapter/adapter.js\n # Provides an empty object for later loaded adapter objects\n #\n # Product/Info:\n # https://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n'use strict';\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n// -----------------------------------------------------------------------------\n\n/*!\n * J1 Adapter\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = (function ( j1, window ) {\n return {\n\n // -------------------------------------------------------------------------\n // _init_\n // Global initializer for the adapter object\n // -------------------------------------------------------------------------\n _init_: function () {\n return;\n } // END _init_\n\n }; // END return\n\n})( j1, window );\n","/*\n * anime.js v3.2.0\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n'use strict';\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; }\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (getAttribute(el, prop) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width / viewBox[2],\n h: height / viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n switch (path.property) {\n case 'x': return (p.x - svg.x) * svg.w;\n case 'y': return (p.y - svg.y) * svg.h;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\nvar pausedInstances = [];\nvar raf;\n\nvar engine = (function () {\n function play() { \n raf = requestAnimationFrame(step);\n }\n function step(t) {\n var activeInstancesLength = activeInstances.length;\n if (activeInstancesLength) {\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n } else {\n var instanceIndex = activeInstances.indexOf(activeInstance);\n if (instanceIndex > -1) {\n activeInstances.splice(instanceIndex, 1);\n activeInstancesLength = activeInstances.length;\n }\n }\n i++;\n }\n play();\n } else {\n raf = cancelAnimationFrame(raf);\n }\n }\n return play;\n})();\n\nfunction handleVisibilityChange() {\n if (document.hidden) {\n activeInstances.forEach(function (ins) { return ins.pause(); });\n pausedInstances = activeInstances.slice(0);\n anime.running = activeInstances = [];\n } else {\n pausedInstances.forEach(function (ins) { return ins.play(); });\n }\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n if (!raf) { engine(); }\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargets(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.0';\nanime.speed = 1;\nanime.running = activeInstances;\nanime.remove = removeTargets;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nmodule.exports = anime;\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/j1_template/core.js\n # Provides an empty object for later loaded core objects\n #\n # Product/Info:\n # https://jekyll.one\n # http://getbootstrap.com/\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n'use strict';\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n// -----------------------------------------------------------------------------\n\n// module.exports = function core ( options ) {\n/*!\n * J1 Core\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = (function (options) {\n\n // ---------------------------------------------------------------------------\n // Global variables\n // ---------------------------------------------------------------------------\n // var messageCatalog = {};\n // var state;\n // var logger;\n // var logText;\n\n // ---------------------------------------------------------------------------\n // Default settings\n // ---------------------------------------------------------------------------\n var settings = $.extend({\n foo: 'foo_option',\n bar: 'bar_option'\n }, options );\n\n var state = 'loaded';\n\n return {\n\n // -------------------------------------------------------------------------\n // _init_\n // Global initializer for the core object\n // -------------------------------------------------------------------------\n _init_: function (options) {\n\n //\n // Place handling of options here\n //\n\n return;\n }, // END _init_\n\n // -------------------------------------------------------------------------\n // Returns the current (processing) state of the module\n // -------------------------------------------------------------------------\n getState: function () {\n return state;\n }, // END state\n\n // -------------------------------------------------------------------------\n // isMobile\n // Return true if the current platform is a mobile device\n // -------------------------------------------------------------------------\n isMobile: function (ua_name) {\n var mobile = false;\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm|cell|chtm|cldc|cmd|co(mp|nd)|craw|da(it|ll|ng)|dbte|dcs|devi|dica|dmob|do(c|p)o|ds(12|d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(|_)|g1 u|g560|gene|gf5|gmo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd(m|p|t)|hei|hi(pt|ta)|hp( i|ip)|hsc|ht(c(| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i(20|go|ma)|i230|iac( ||\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|[a-w])|libw|lynx|m1w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|mcr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|([1-8]|c))|phil|pire|pl(ay|uc)|pn2|po(ck|rt|se)|prox|psio|ptg|qaa|qc(07|12|21|32|60|[2-7]|i)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h|oo|p)|sdk\\/|se(c(|0|1)|47|mc|nd|ri)|sgh|shar|sie(|m)|sk0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h|v|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl|tdg|tel(i|m)|tim|tmo|to(pl|sh)|ts(70|m|m3|m5)|tx9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas|your|zeto|zte/i.test(a.substr(0,4))) mobile = true;})(navigator.userAgent||navigator.vendor||window.opera);\n return mobile;\n }, // END isMobile\n\n // -------------------------------------------------------------------------\n // Clear button for input fields (forms)\n // -------------------------------------------------------------------------\n bsFormClearButton: function () {\n// $('.position-relative :input').on('keydown focus', function() {\n $(':input').on('keydown focus change mouseover', function() {\n if ($(this).val().length > 0) {\n $(this).nextAll('.form-clear').removeClass('d-none');\n }\n }).on('keydown keyup blur', function() {\n if ($(this).val().length === 0) {\n $(this).nextAll('.form-clear').addClass('d-none');\n }\n });\n\n // $('.form-clear').on('click', function() {\n // $(this).addClass('d-none').prevAll(':input').val('');\n // // hide|clear results from top search\n // $('#search-results').hide();\n // $('#search-results').html('');\n // });\n }, // END bsFormClearButton\n\n // -------------------------------------------------------------------------\n // Initialize Backdrops on all <p> elements of class \"dropcap\"\n // -------------------------------------------------------------------------\n createDropCap: function () {\n\n // add class dropcap\n $('.paragraph.dropcap').children('p').addClass('dropcap');\n\n //\n if ($('p.dropcap').length) {\n $('p.dropcap').each(function() {\n var $p = $(this);\n var text = $.trim($p.text());\n var firstLetter = text[0];\n var marginalDropCap = '<span class=\"j1-dropcap\">' + firstLetter + '</span>';\n\n $p.html(text.replace(firstLetter, marginalDropCap));\n });\n }\n } // END createDropCap\n\n }; // end return (object)\n\n//})( jQuery, window );\n})(); // END IFFE\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/navigator/navigator.js\n # Provides all JavaScript core functions for J1 Navigator\n #\n # Product/Info:\n # https://jekyll.one\n # https://github.com/adamnurdin01/navigator\n #\n # Copyright (C) 2021 Juergen Adams\n # Copyright (C) 2016 adamnurdin01\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # Bootsnav is licensed under MIT License.\n # See: https://github.com/adamnurdin01/navigator\n #\n # -----------------------------------------------------------------------------\n # NOTE:\n # jadams, 2020-06-21:\n # J1 Navigator needs a general revision on BS4 code and functionalities\n # Current, only base function are tested with BS4 (was coded for BS3)\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n// -----------------------------------------------------------------------------\n\n// -----------------------------------------------------------------------------\n// TODO: Height of dropdowns are to be limited in general\n\n// -----------------------------------------------------------------------------\n// Navigator core registered as 'j1.core.navigator'\n// -----------------------------------------------------------------------------\n\nmodule.exports = function navigator ( options ) {\n\n // ---------------------------------------------------------------------------\n // global vars\n // ---------------------------------------------------------------------------\n var message = {};\n var state;\n var logger;\n var logText;\n\n // -----------------------------------------------------------------------\n // default settings\n // -----------------------------------------------------------------------\n var settings = $.extend ({\n foo: 'bar',\n bar: 'foo',\n }, options );\n\n // ---------------------------------------------------------------------------\n // main object\n // ---------------------------------------------------------------------------\n return {\n\n // -------------------------------------------------------------------------\n // module initializer\n // -------------------------------------------------------------------------\n init: function( defaultOptions, menuOptions ) {\n logger = log4javascript.getLogger('j1.core.navigator');\n logText = 'core is being initialized';\n\n logger.info(logText);\n this.manageDropdownMenu(defaultOptions, menuOptions);\n this.navbarSticky();\n this.eventHandler(defaultOptions); // jadams, 2021-07-03: initialize events early\n\n message.type = 'command';\n message.action = 'core_initialized';\n message.text = 'navigator core initialized';\n j1.sendMessage( 'j1.core.navigator', 'j1.adapter.navigator', message );\n\n return true;\n },\n\n // -------------------------------------------------------------------------\n // event handler\n // -------------------------------------------------------------------------\n eventHandler: function(options) {\n var defaultOptions = options;\n var logger = log4javascript.getLogger('j1.core.navigator.eventHandler');\n var $getNav = $('nav.navbar.navigator');\n var json_data;\n\n // const seeMe = 'https://smee.io/wlNIFNiJN0GClm2';\n // const middleware = 'localhost:5000/state';\n // const web_server_dev = 'http://localhost:41000/status';\n // const utility_server = 'http://localhost:41001/git?request=pull';\n // var sender = seeMe;\n // var payload;\n\n // if (j1.checkUserAgent('IE') || j1.checkUserAgent('Edge')) {\n // logger.warn('HTML5 server side events (SSE) not supported for: ' + userAgent);\n // logger.warn('Middleware messages disabled');\n // } else {\n // const middleware_status = new EventSource(sender);\n //\n // // -----------------------------------------------------------------------\n // // middleware event handler ( SSE currently NOT used)\n // // -----------------------------------------------------------------------\n // middleware_status.onmessage = (event) => {\n // const payload = JSON.parse(event.data);\n //\n // logger.debug('middleware: event received');\n //\n // json_data = JSON.stringify(payload, undefined, 2);\n // logText = 'payload: ' + json_data;\n // logger.debug(logText);\n //\n // message.type = 'command';\n // message.action = 'status';\n // message.text = payload;\n // j1.sendMessage( 'j1.core.navigator', 'j1.adapter.navigator', message );\n //\n // return true;\n // }; // END event onMessage\n // }\n\n // bind click event to all links with \"#\" to suppress default action\n // See: https://stackoverflow.com/questions/134845/which-href-value-should-i-use-for-javascript-links-or-javascriptvoid0\n //\n $('a[href=\"#\"]').click(function(e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n logger.info('bound click event to \"#\", suppress default action');\n });\n\n // -----------------------------------------------------------------------\n // Navbar Sticky\n // -----------------------------------------------------------------------\n var navSticky = $getNav.hasClass('navbar-sticky');\n if( navSticky ){\n // Wraped navigation\n $getNav.wrap('<div class=\\'wrap-sticky\\'></div>');\n }\n\n // -----------------------------------------------------------------------\n // Navbar Center\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('brand-center') ){\n var postsArr = new Array();\n var index = $('nav.brand-center');\n var $postsList = index.find('ul.navbar-nav');\n\n //Create array of all posts in lists\n index.find('ul.navbar-nav > li').each(function(){\n postsArr.push($(this).html());\n });\n\n // Split the array at this point. The original array is altered.\n var firstList = postsArr.splice(0, Math.round(postsArr.length / 2));\n var secondList = postsArr;\n var ListHTML = '';\n\n var createHTML = function(list) {\n ListHTML = '';\n for (var i = 0; i < list.length; i++) {\n ListHTML += '<li>' + list[i] + '</li>';\n }\n };\n\n // Generate HTML for first list\n createHTML(firstList);\n $postsList.html(ListHTML);\n index.find('ul.nav').first().addClass('navbar-left');\n\n // Generate HTML for second list\n createHTML(secondList);\n //Create new list after original one\n $postsList.after('<ul class=\"nav navbar-nav\"></ul>').next().html(ListHTML);\n index.find('ul.nav').last().addClass('navbar-right');\n\n // Wrap navigation menu\n index.find('ul.nav.navbar-left').wrap('<div class=\\'col_half left\\'></div>');\n index.find('ul.nav.navbar-right').wrap('<div class=\\'col_half right\\'></div>');\n\n // Selection Class\n index.find('ul.navbar-nav > li').each(function() {\n var dropDown = $('ul.dropdown-menu', this),\n megaMenu = $('ul.megamenu-content', this);\n dropDown.closest('li').addClass('dropdown');\n megaMenu.closest('li').addClass('megamenu-fw');\n });\n }\n\n // -----------------------------------------------------------------------\n // Menu Center\n // -----------------------------------------------------------------------\n if( $getNav.find('ul.nav').hasClass('navbar-center')) {\n $getNav.addClass('menu-center');\n }\n\n // -----------------------------------------------------------------------\n // Navbar Full\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('navbar-full')) {\n // Add Class to body\n $('nav.navbar.navigator').find('ul.nav').wrap('<div class=\\'wrap-full-menu\\'></div>');\n $('.wrap-full-menu').wrap('<div class=\\'nav-full\\'></div>');\n $('ul.nav.navbar-nav').prepend('<li class=\\'close-full-menu\\'><a href=\\'#\\'><i class=\\'mdi mdi-close\\'></i></a></li>');\n } else if( $getNav.hasClass('navbar-mobile') ) {\n $getNav.removeClass('no-full');\n } else {\n $getNav.addClass('no-full');\n }\n\n // -----------------------------------------------------------------------\n // Navbar Fixed\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('no-background') ) {\n $(window).on('scroll', function() {\n var navbarHeighth = $('nav.navbar').outerHeight();\n var scrollPos = $(window).scrollTop();\n\n if (scrollPos > navbarHeighth) {\n $('.navbar-fixed').removeClass('no-background');\n } else {\n $('.navbar-fixed').addClass('no-background');\n }\n });\n }\n\n if( $getNav.hasClass('navbar-transparent') ) {\n $(window).on('scroll', function() {\n var navbarHeighth = $('nav.navbar').outerHeight();\n var scrollPos = $(window).scrollTop();\n\n if (scrollPos > navbarHeighth) {\n $('.navbar-fixed').removeClass('navbar-transparent');\n $('.navbar-fixed').addClass('navbar-scrolled');\n } else {\n $('.navbar-fixed').removeClass('navbar-scrolled');\n $('.navbar-fixed').addClass('navbar-transparent');\n }\n });\n }\n\n // -----------------------------------------------------------------------\n // Toggle Search\n // https://stackoverflow.com/questions/178325/how-do-i-check-if-an-element-is-hidden-in-jquery\n // https://stackoverflow.com/questions/4770025/how-to-disable-scrolling-temporarily\n // https://stackoverflow.com/questions/5963669/whats-the-difference-between-event-stoppropagation-and-event-preventdefault\n // -----------------------------------------------------------------------\n// $('nav.navbar.navigator .attr-nav').each(function() {\n $('.attr-nav').each(function() {\n logger.debug('register OPEN event|s for QuickSearch');\n $('li.search > a', this).on('click', function(e) {\n // e.preventDefault(); // don't do the default browser action\n logger.debug('manage search action OPEN');\n $('html,body').animate({scrollTop: 0}, 0);\n $('.top-search').slideToggle('slow', 'swing', function() {\n if ( $('.top-search').is(':visible') ) {\n // disable scrolling (desktop)\n $('body').addClass('stop-scrolling');\n // disable scrolling (mobile)\n $('body').bind('touchmove', function(e){e.preventDefault();});\n // disable navbar\n $('#' + defaultOptions.nav_bar.container_id).hide();\n } else {\n // enable scrolling (desktop)\n $('body').removeClass('stop-scrolling');\n // enable scrolling (mobile)\n $('body').unbind('touchmove');\n // enable navbar\n $('#' + defaultOptions.nav_bar.container_id).show();\n }\n });\n // e.stopPropagation(); // don't bubble up the event\n });\n });\n logger.debug('register CLOSE event|s for QuickSearch');\n $('.input-group-addon.close-search').on('click', function(e) {\n e.preventDefault(); // don't do the default browser action\n logger.debug('manage search action CLOSE');\n $('.top-search').slideUp('slow', 'swing');\n $('html,body').animate({scrollTop: 0}, 0);\n // enable scrolling (desktop)\n $('body').removeClass('stop-scrolling');\n // enable scrolling (mobile)\n $('body').unbind('touchmove');\n // enable navbar\n $('#' + defaultOptions.nav_bar.container_id).show();\n e.stopPropagation(); // don't bubble up the event\n });\n\n // -----------------------------------------------------------------------\n // Toggle Translator SHOW|HIDE\n // -----------------------------------------------------------------------\n $('nav.navbar.navigator .attr-nav').each(function() {\n logger.debug('register SHOW|HIDE event|s for J1 Translator');\n $('li.translator > a', this).on('click', function(e) {\n // e.preventDefault(); // don't do the default browser action\n // window.location.reload(true);\n logger.debug('toggle translator icon SHOW|HIDE');\n // See: https://api.jquery.com/toggle/\n // With no parameters, the .toggle() method simply toggles the visibility of elements\n $('#google_translate_element').toggle();\n if ($('#google_translate_element').css('display') !== 'none') {\n $('html,body').animate({scrollTop: 0}, 'slow');\n }\n // e.stopPropagation(); // don't bubble up the event\n });\n });\n\n // -----------------------------------------------------------------------\n // Wrapper\n // -----------------------------------------------------------------------\n $('body').wrapInner( '<div class=\\'wrapper\\'></div>');\n\n }, // end event\n\n // -------------------------------------------------------------------------\n // Manage the Menu Dropdowns for Desktop|Mobile\n // -------------------------------------------------------------------------\n manageDropdownMenu : function( defaultOptions, menuOptions ) {\n\n var navDefaultOptions = defaultOptions;\n var navMenuOptions = menuOptions;\n\n var $getNav = $('nav.navbar.navigator');\n var $windowOrientation = window.matchMedia('(orientation: landscape)').matches ? 'landscape' : 'portrait';\n var $getWindow = $(window).width();\n var $getNavWidth = $('nav').width();\n var $getIn = $getNav.find('ul.nav').data('in');\n var $getOut = $getNav.find('ul.nav').data('out');\n\n var menuSelector = '#' +navMenuOptions.xhr_container_id+ '.collapse';\n var delayMenuOpen = navMenuOptions.delay_menu_open;\n\n var $menu;\n var breakPoint;\n var $dropDown;\n var timeoutHandle;\n\n // BS4 @media MAX breakpoints\n // NOTE: a media query is always a range\n // -----------------------------------------------------------------------\n var gridBreakpoint_lg = 992; // bs-breakpoint-lg\n var gridBreakpoint_md = 768; // bs-breakpoint-md\n var gridBreakpoint_sm = 576; // bs-breakpoint-sm\n\n // BS4 @media MIN breakpoints\n // -----------------------------------------------------------------------\n // NOTE: a media query is always a range\n // var gridBreakpoint_lg = 991;\n // var gridBreakpoint_md = 767;\n // var gridBreakpoint_sm = 575;\n\n // @media ranges\n // -----------------------------------------------------------------------\n var small_range = {min: '0em', max: '40em'}; /* 0, 640px */\n var medium_range = {min: '40.063em', max: '64em'}; /* 641px, 1024px */\n var large_range = {min: '64.063em', max: '90em'}; /* 1025px, 1440px */\n var xlarge_range = {min: '90.063em', max: '120em'}; /* 1441px, 1920px */\n var xxlarge_range = {min: '120.063em'}; /* 1921px */\n\n\n // jadams, 2019-05-01: Set Media Breakpoint for Desktop|Mobile Navigation\n if ( navDefaultOptions.nav_bar.media_breakpoint === 'lg' ) {\n breakPoint = gridBreakpoint_lg;\n } else if ( navDefaultOptions.nav_bar.media_breakpoint === 'md' ) {\n breakPoint = gridBreakpoint_md;\n } else if ( navDefaultOptions.nav_bar.media_breakpoint === 'sm' ) {\n breakPoint = gridBreakpoint_sm;\n } else{\n breakPoint = gridBreakpoint_lg;\n }\n\n // -----------------------------------------------------------------------\n // Tablet or Mobile\n // NOTE:\n // Managing the mobile menu is moved to MMenu Plugin\n // Only base functions like QuickLinks are managed by\n // J1 Navigator\n // -----------------------------------------------------------------------\n // MIN media breakpoint\n if ( $getWindow <= breakPoint ) {\n\n // Collapse Navbar\n $(menuSelector).addClass('navbar-collapse');\n $(menuSelector).removeClass('show'); //\n $('#navigator_nav_quicklinks').addClass('show');\n\n // Enable click Quicklink Navigation\n $('nav.navbar.navigator .attr-nav').each(function() {\n $('.dropdown-menu', this).removeClass('animated');\n $('li.dropdown', this).off('mouseenter');\n $('li.dropdown', this).off('mouseleave');\n $('a.dropdown-toggle', this).off('click');\n $('a.dropdown-toggle', this).on('click', function (e) {\n // e.stopPropagation(); // don't bubble up the event\n $(this).closest('li.dropdown').find('.dropdown-menu').first().stop().fadeToggle();\n $('.navbar-toggle').each(function(){\n $('.mdi', this).removeClass('mdi-close');\n $('.mdi', this).addClass('mdi-menu');\n $('.navbar-collapse').removeClass('in');\n $('.navbar-collapse').removeClass('open');\n });\n });\n\n $(this).on('mouseleave', function(){\n $('.dropdown-menu', this).stop().fadeOut();\n $('li.dropdown', this).removeClass('open');\n // return false;\n });\n });\n\n $('#desktop_menu').hide();\n\n // -----------------------------------------------------------------------\n // Desktop Navigation does NOT work on physical devices like iPad|Pro\n // Config DISABLED\n //\n// } else if ( $getWindow > breakPoint || $getWindow <= 1024 && $windowOrientation == 'portrait' ) {\n } else if ( $getWindow > breakPoint ) {\n // -----------------------------------------------------------------------\n // Desktop\n // -----------------------------------------------------------------------\n $('#navigator_nav_quicklinks').removeClass('show');\n $('#desktop_menu').show();\n\n // jadams, 2021-03-05: manage dropdown menus\n // ---------------------------------------------------------------------\n\n $('.dropdown-menu > li').on('mouseenter', function(){\n if ($('body').hasClass('stop-scrolling')){\n return false;\n } else {\n $('body').addClass('stop-scrolling');\n }\n });\n\n $('.dropdown-menu > li').on('mouseleave', function(){\n // stop scrolling if top search or any (mmenu) drawer is opened\n if ($('body').hasClass('stop-scrolling')){\n $('body').removeClass('stop-scrolling');\n }\n });\n\n // limit the dropdown menu lenght if needed\n $('.dropdown-menu > li').hover(function() {\n var $container = $(this);\n var $list = $container.find('ul');\n\n // limit LAST menu ONLY\n //\n if ( $list.length == 1 ) {\n $list.addClass('scrollable-menu');\n }\n });\n\n // jadams, 2021-03-06: Enable|Show Desktop Menu|s\n //\n $(menuSelector).removeClass('navbar-collapse');\n $(menuSelector).addClass('show');\n\n // Navbar Sidebar\n // jadams, 2021-03-05: Sidebar NOT used anymore\n\n // Open Desktop Menu|s on hover\n //\n $('nav.navbar.navigator ul.nav').each(function() {\n $('a.dropdown-toggle', this).off('click');\n $('a.dropdown-toggle', this).on('click', function (e) {\n // e.stopPropagation(); // don't bubble up the event\n });\n\n $('.megamenu-fw', this).each(function(){\n $('.title', this).off('click');\n $('a.dropdown-toggle', this).off('click');\n $('.content').removeClass('animated');\n });\n $('.dropdown-menu', this).addClass('animated');\n\n $('li.dropdown', this).on('mouseenter', function(){\n $menu = $('.dropdown-menu', this).eq(0);\n $dropDown = $(this);\n\n $menu.removeClass($getOut);\n $menu.removeClass('open');\n $dropDown.addClass('open');\n // Get|Set the timeout object to delay the dropdown open\n timeoutHandle = window.setTimeout(function () {\n if ($dropDown.hasClass('open')){\n $menu.stop().fadeIn().addClass($getIn);\n $menu.addClass('open');\n $dropDown.addClass('open');\n }\n }, delayMenuOpen);\n });\n\n $('li.dropdown', this).on('mouseleave', function(){\n window.clearTimeout(timeoutHandle); // Clear the timeout object\n $(this).removeClass('open').removeClass('open');\n\n $('.dropdown-menu', this).removeClass('open');\n $('.dropdown-menu', this).eq(0).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n });\n\n $(this).on('mouseleave', function(){\n window.clearTimeout(timeoutHandle);\n $('li.dropdown', this).removeClass('open');\n $('.dropdown-menu', this).removeClass('open');\n $('.dropdown-menu', this).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n });\n }); // END Desktop Menu\n\n } // end Desktop\n\n // -----------------------------------------------------------------------\n // Hover Open on Quicklink Navigation\n // -----------------------------------------------------------------------\n $('nav.navbar.navigator .attr-nav').each(function() {\n\n $('a.dropdown-toggle', this).off('click');\n $('a.dropdown-toggle', this).on('click', function (e) {\n // e.stopPropagation(); // don't bubble up the event\n });\n\n $('.dropdown-menu', this).addClass('animated');\n $('li.dropdown', this).on('mouseenter', function(){\n $('.dropdown-menu', this).eq(0).removeClass($getOut);\n $('.dropdown-menu', this).eq(0).stop().fadeIn().addClass($getIn);\n $(this).addClass('open');\n //return false;\n });\n\n $('li.dropdown', this).on('mouseleave', function(){\n $('.dropdown-menu', this).eq(0).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n $(this).removeClass('open');\n });\n\n $(this).on('mouseleave', function(){\n $('.dropdown-menu', this).removeClass($getIn);\n $('.dropdown-menu', this).eq(0).stop().fadeOut().addClass($getOut);\n $('li.dropdown', this).removeClass('open');\n //return false;\n });\n });\n\n // -----------------------------------------------------------------------\n // Fullscreen Menu\n // -----------------------------------------------------------------------\n if( $getNav.hasClass('navbar-full')){\n var windowHeight = $(window).height(),\n windowWidth = $(window).width();\n\n $('.nav-full').css('height', windowHeight + 'px');\n $('.wrap-full-menu').css('height', windowHeight + 'px');\n $('.wrap-full-menu').css('width', windowWidth + 'px');\n\n $('.navbar-collapse').addClass('animated');\n $('.navbar-toggle').each(function(){\n var getId = $(this).data('target');\n $(this).off('click');\n $(this).on('click', function(e){\n e.preventDefault();\n $(getId).removeClass($getOut);\n $(getId).addClass('in');\n $(getId).addClass($getIn);\n // e.stopPropagation(); // don't bubble up the event\n // return false;\n });\n\n $('li.close-full-menu').on('click', function(e){\n e.preventDefault();\n $(getId).addClass($getOut);\n setTimeout(function(){\n $(getId).removeClass('in');\n $(getId).removeClass($getIn);\n }, 500);\n //e.stopPropagation(); // don't bubble up the event\n // return false;\n });\n });\n }\n }, // end manageDropdownMenu\n\n // -------------------------------------------------------------------------\n // Sticky Navbar\n // -------------------------------------------------------------------------\n navbarSticky : function() {\n var $getNav = $('nav.navbar.navigator'),\n navSticky = $getNav.hasClass('navbar-sticky');\n\n if (navSticky) {\n // Set Height Navigation\n var $getHeight = $getNav.height();\n $('.wrap-sticky').height($getHeight);\n\n // Windown on scroll\n var getOffset = $('.wrap-sticky').offset().top;\n $(window).on('scroll', function(){\n var scrollTop = $(window).scrollTop();\n if(scrollTop > getOffset){\n $getNav.addClass('sticked');\n }else {\n $getNav.removeClass('sticked');\n }\n });\n }\n }, // end navbarSticky\n\n // -------------------------------------------------------------------------\n // updateSidebar\n // Note:\n // -------------------------------------------------------------------------\n updateSidebar: function (user_data) {\n var logger = log4javascript.getLogger('j1.core.navigator.updateSidebar');\n var json_message;\n\n// json_message = JSON.stringify(user_data, undefined, 2); // multiline\n json_message = JSON.stringify(user_data);\n logText = 'user state data: ' + json_message;\n logger.debug(logText);\n\n // Replace Macro placeholders to values\n j1.resolveMacros(user_data);\n // Replace Macro values only\n j1.updateMacros(user_data);\n\n return true;\n\n }, // END updateSidebar\n\n }; // end return (object)\n}( jQuery );\n","/*\n # -----------------------------------------------------------------------------\n # ~200_template_js/js/asciidoctor/asciidoctor.js\n # Provides JS functions to (dynamically) modify Asciidoctor HTML elements\n #\n # Product/Info:\n # http://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n # NOTE:\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-redeclare: \"off\" */\n/* global window */\n\n// TODO:\n\n// -----------------------------------------------------------------------------\n// J1 Asciidoctor registered as \"asciidoctor\"\n// -----------------------------------------------------------------------------\n/*!\n * J1 Asciidoctor\n * Copyright (C) 2021 Juergen Adams\n * Licensed under MIT License.\n */\nmodule.exports = function asciidoctor (options) {\n\n return {\n\n // -------------------------------------------------------------------------\n // module initializer\n // -------------------------------------------------------------------------\n init: function (options) {\n\n var moduleOptions = options;\n var logger = log4javascript.getLogger('j1.core.asciidoctor');\n\n var moduleDefaults = {\n dummyOption: false, // placeholder\n };\n var options = $.extend(moduleDefaults,moduleOptions);\n\n logText = 'J1 Asciidoctor is being initialized';\n logger.info(logText);\n\n this.callouts();\n\n }, // end initializer\n\n // -------------------------------------------------------------------------\n // manage callouts (HTML)\n // -------------------------------------------------------------------------\n // see: https://stackoverflow.com/questions/19393493/add-colgroup-for-each-table-column\n callouts: function( options ) {\n var colgroupList = '';\n\n // If the colist does not have a <colgroup> structure\n //\n \tif($('.colist > table > colgroup').length == 0) {\n colgroupList += '<!-- [INFO ] [j1.core.asciidoctor ] [ place a colgroup dynamically ] -->' + '\\n';\n colgroupList += '<colgroup> <col style=\"width: 5%;\"> <col style=\"width: 95%;\"> </colgroup>';\n \t\t$(\".colist > table\").prepend(colgroupList);\n }\n\n }, // end callouts\n\n // -------------------------------------------------------------------------\n // manage callouts (HTML)\n // -------------------------------------------------------------------------\n conums: function( options ) {\n var dependencies_met_page_finished = setInterval(function() {\n if (j1.getState() == 'finished') {\n // If the colist does not have a <colgroup> structure\n \tif($('.colist > table > colgroup').length == 0) {\n\n \t\tvar colgroupList = '';\n colgroupList += '<colgroup> <col style=\"width: 5%;\"> <col style=\"width: 95%;\"> </colgroup>';\n\n \t\t$(\".colist > table\").prepend(colgroupList);\n clearInterval(dependencies_met_page_finished);\n \t}\n }\n });\n }, // end conums\n\n }; // END return\n}( jQuery );\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/scroll-smooth/scroll-smooth.js\n # Provides Javascript functions for smooth scrolling\n #\n # Product/Info:\n # http://jekyll.one\n #\n # Copyright (C) 2020 Juergen Adams\n #\n # J1 Template is licensed under the MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n'use strict';\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-redeclare: \"off\" */\n/* eslint indent: \"off\" */\n// -----------------------------------------------------------------------------\n\n// -----------------------------------------------------------------------------\n// scrollSmooth core registered as \"scrollSmooth\"\n// -----------------------------------------------------------------------------\nmodule.exports = function scrollSmooth ( options ) {\n\n // Default settings\n var settings = $.extend({\n foo: 'foo_option',\n bar: 'bar_option'\n }, options );\n\n // -----------------------------------------------------------------------\n // Helper functions\n // -----------------------------------------------------------------------\n function stripHash (url) {\n return url.slice(0, url.lastIndexOf('#'));\n }\n\n function isCssSmoothScrollSupported () {\n return 'scrollBehavior' in document.documentElement.style;\n }\n\n return {\n // -------------------------------------------------------------------------\n // Initialize scrollSmooth\n // -------------------------------------------------------------------------\n scroll: function ( target, options ) {\n\n var logger;\n var logText;\n\n logger = log4javascript.getLogger('j1.core.scrollSmooth');\n\n // indicator|check currently NOT used\n // if (isCssSmoothScrollSupported()) { }\n\n logText = 'run module scrollSmooth';\n logger.info(logText);\n\n var duration = options.duration;\n var offset = options.offset;\n\n // var pageUrl = options.location.hash\n // ? stripHash(options.location.href)\n // : options.location.href;\n\n this.scrollTo(target, {\n duration: duration,\n offset: offset,\n callback: null\n });\n\n logText = 'scrollSmooth finished';\n logger.info(logText);\n },\n\n // -------------------------------------------------------------------------\n // scrollTo\n // -------------------------------------------------------------------------\n scrollTo: function ( target, options ) {\n var start = window.pageYOffset;\n var opt = {\n duration: options.duration,\n offset: options.offset || 0,\n callback: options.callback,\n easing: options.easing || easeInOutQuad\n };\n\n // This makes ids that start with a number work: ('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n // DecodeURI for nonASCII hashes, they was encoded, but id was not encoded, it lead to not finding the tgt element by id.\n // And this is for IE: document.body.scrollTop\n var tgt = document.querySelector('[id=\"' + decodeURI(target).split('#').join('') + '\"]');\n var distance = typeof target === 'string'\n ? opt.offset + (\n target\n ? (tgt && tgt.getBoundingClientRect().top) || 0 // handle non-existent links better.\n : -(document.documentElement.scrollTop || document.body.scrollTop))\n : target;\n var duration = typeof opt.duration === 'function'\n ? opt.duration(distance)\n : opt.duration;\n var timeStart;\n var timeElapsed;\n\n requestAnimationFrame(function (time) { timeStart = time; loop(time); });\n function loop (time) {\n timeElapsed = time - timeStart;\n\n window.scrollTo(0, opt.easing(timeElapsed, start, distance, duration));\n\n if (timeElapsed < duration) { requestAnimationFrame(loop); } else { end(); }\n }\n\n function end () {\n window.scrollTo(0, start + distance);\n\n // jadams, 2020-07-04: on (some?) mobile devices, the navbar\n // background is NOT switched (always?) correctly on a\n // page RELOAD.\n //\n // Solution: scroll the page one pixel back and forth (trigger)\n // to get the right position for the Toccer and adjust the\n // Navigator to display the (tranparent) navbar correctly based\n // on their onscroll events registered.\n //\n $(window).scrollTop($(window).scrollTop()+1);\n $(window).scrollTop($(window).scrollTop()-1);\n\n if (typeof opt.callback === 'function') { opt.callback(); }\n }\n\n // Robert Penner's easeInOutQuad - http://robertpenner.com/easing/\n function easeInOutQuad (t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n }\n } // END scrollTo\n\n }; // END return\n}( jQuery );\n","module.exports = require('./src/deepl-translator');\n","const languages = require('./languages');\nconst {\n validateText,\n validateSourceLanguage,\n validateTargetLanguage,\n validateSourceTargetLanguage,\n validateBeginning,\n} = require('./validators');\n\nconst {\n splitSentences,\n getTranslation,\n getAlternatives,\n} = require('./deepl-api-helper');\nconst { EOL } = require('os');\n\nfunction detectLanguage(text) {\n return translate(text, 'EN').then(({ resolvedSourceLanguage }) => {\n return {\n languageCode: resolvedSourceLanguage,\n languageName: resolvedSourceLanguage\n .split(',')\n .map(code => languages[code])\n .join(','),\n };\n });\n}\n\nfunction validateInputs(validationArray) {\n return Promise.all(validationArray).then(validationResults => {\n const errors = validationResults\n .filter(validationResult => validationResult)\n .join('\\n');\n\n return errors.length\n ? Promise.reject(\n new Error(\n `Input parameter validation failed with error(s): ${errors}`\n )\n )\n : Promise.resolve('');\n });\n}\n\nfunction translate(text, targetLanguage, sourceLanguage = 'auto') {\n return validateInputs([\n validateText(text),\n validateSourceLanguage(sourceLanguage),\n validateTargetLanguage(targetLanguage),\n validateSourceTargetLanguage(sourceLanguage, targetLanguage),\n ])\n .then(valid => splitSentences(text.split(EOL), sourceLanguage))\n .then(transformSplitSentencesResponse)\n .then(([paragraphs, resolvedSourceLanguage]) => {\n return Promise.all(\n paragraphs.map(\n paragraph =>\n paragraph.length === 0\n ? []\n : getTranslation(\n paragraph,\n targetLanguage,\n resolvedSourceLanguage || 'auto'\n ).then(transformTranslationResponse)\n )\n ).then(translatedParagraphs => ({\n targetLanguage,\n resolvedSourceLanguage: translatedParagraphs\n .map(paragraph => paragraph[1])\n .reduce(\n (unique, current) => [\n ...unique,\n unique.indexOf(current) < 0 && current,\n ],\n []\n )\n .filter(lang => lang)\n .join(','),\n translation: translatedParagraphs\n .map(([paragraph]) => paragraph || '')\n .join(EOL),\n }));\n });\n}\n\nfunction translateWithAlternatives(\n text,\n targetLanguage,\n sourceLanguage = 'auto',\n beginning\n) {\n return validateInputs([\n validateText(text),\n validateSourceLanguage(sourceLanguage),\n validateTargetLanguage(targetLanguage),\n validateSourceTargetLanguage(sourceLanguage, targetLanguage),\n ])\n .then(valid =>\n getTranslation([text], targetLanguage, sourceLanguage, beginning)\n )\n .then(({ result: { source_lang, translations: [{ beams }] } }) => ({\n targetLanguage,\n resolvedSourceLanguage: source_lang,\n translation: beams[0].postprocessed_sentence,\n translationAlternatives: beams.map(\n ({ postprocessed_sentence }) => postprocessed_sentence\n ),\n }));\n}\n\nfunction wordAlternatives(text, targetLanguage, sourceLanguage, beginning) {\n return validateInputs([\n validateText(text),\n validateSourceLanguage(sourceLanguage),\n validateTargetLanguage(targetLanguage),\n validateSourceTargetLanguage(sourceLanguage, targetLanguage),\n validateBeginning(beginning),\n ])\n .then(valid =>\n getAlternatives(text, targetLanguage, sourceLanguage, beginning)\n )\n .then(res => {\n return {\n targetLanguage: res.result.target_lang,\n resolvedSourceLanguage: res.result.source_lang,\n alternatives: res.result.translations[0].beams.map(alt => {\n return alt.postprocessed_sentence;\n }),\n };\n });\n}\n\nfunction transformTranslationResponse(response) {\n try {\n const {\n result: {\n target_lang: targetLanguage,\n source_lang: resolvedSourceLanguage,\n translations,\n },\n } = response;\n\n const translatedSentences = translations.map(\n ({ beams: [{ postprocessed_sentence: translation }] }) => translation\n );\n\n return [translatedSentences.join(' '), resolvedSourceLanguage];\n } catch (error) {\n throw new Error(\n `Unexpected error when parsing deepl translation response: ${JSON.stringify(\n response\n )}`\n );\n }\n}\n\nfunction transformSplitSentencesResponse(response) {\n try {\n const {\n result: { splitted_texts: texts, lang_is_confident, lang },\n } = response;\n\n return [texts, lang_is_confident && lang];\n } catch (error) {\n throw new Error(\n `Unexpected error when parsing deepl split sentence response: ${JSON.stringify(\n response\n )}`\n );\n }\n}\n\nmodule.exports = {\n translate,\n translateWithAlternatives,\n detectLanguage,\n wordAlternatives,\n};\n","const languages = require('./languages');\n\nmodule.exports = {\n validateText: text =>\n Promise.resolve(\n (typeof text !== 'string' || text.trim().length === 0) &&\n 'Must provide valid text for translation'\n ),\n validateTargetLanguage: targetLanguage =>\n Promise.resolve(\n !languages[targetLanguage] &&\n `Invalid target language code ${targetLanguage}`\n ),\n validateSourceLanguage: sourceLanguage =>\n Promise.resolve(\n sourceLanguage !== 'auto' &&\n !languages[sourceLanguage] &&\n `Invalid source language code ${sourceLanguage}`\n ),\n validateSourceTargetLanguage: (sourceLanguage, targetLanguage) =>\n Promise.resolve(\n targetLanguage === sourceLanguage &&\n `Target and source language codes identical`\n ),\n validateBeginning: beginning =>\n Promise.resolve(\n !beginning && `Must provide valid text for beginning translation override`\n ),\n};\n","const request = require('./request-helper');\n\nconst DEEPL_HOSTNAME = 'www2.deepl.com';\nconst DEEPL_ENDPOINT = '/jsonrpc';\n\nfunction getHandleJobsBody(texts, targetLanguage, sourceLanguage, beginning) {\n return {\n jsonrpc: '2.0',\n method: 'LMT_handle_jobs',\n params: {\n jobs: texts.map(text => {\n return {\n kind: 'default',\n raw_en_sentence: text,\n de_sentence_beginning: beginning,\n };\n }),\n lang: {\n user_preferred_langs: ['EN'],\n source_lang_user_selected: sourceLanguage,\n target_lang: targetLanguage,\n },\n priority: -1,\n },\n id: 1,\n };\n}\n\nfunction getAlternativesBody(text, targetLanguage, sourceLanguage, beginning) {\n return {\n jsonrpc: '2.0',\n method: 'LMT_handle_jobs',\n params: {\n jobs: [\n {\n de_sentence_beginning: beginning,\n kind: 'alternatives_at_position',\n raw_en_sentence: text,\n },\n ],\n lang: {\n source_lang_computed: sourceLanguage,\n target_lang: targetLanguage,\n },\n priority: 1,\n },\n id: 1,\n };\n}\n\nfunction getSplitSentencesBody(texts, sourceLanguage) {\n return {\n jsonrpc: '2.0',\n method: 'LMT_split_into_sentences',\n params: {\n texts,\n lang: {\n lang_user_selected: sourceLanguage,\n user_preferred_langs: ['EN'],\n },\n },\n id: 1,\n };\n}\n\nfunction getRequestOptions(postBody) {\n return {\n hostname: DEEPL_HOSTNAME,\n port: 443,\n protocol: 'https:',\n path: DEEPL_ENDPOINT,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Content-Length': Buffer.byteLength(JSON.stringify(postBody)),\n 'Cache-Control': 'no-cache',\n },\n };\n}\n\nmodule.exports = {\n getTranslation: (texts, targetLanguage, sourceLanguage, beginning) => {\n const postBody = getHandleJobsBody(\n texts,\n targetLanguage,\n sourceLanguage,\n beginning\n );\n const options = getRequestOptions(postBody);\n\n return request(options, postBody);\n },\n splitSentences: (texts, sourceLanguage) => {\n const postBody = getSplitSentencesBody(texts, sourceLanguage);\n const options = getRequestOptions(postBody);\n\n return request(options, postBody);\n },\n getAlternatives: (text, targetLanguage, sourceLanguage, beginning) => {\n const postBody = getAlternativesBody(\n text,\n targetLanguage,\n sourceLanguage,\n beginning\n );\n const options = getRequestOptions(postBody);\n\n return request(options, postBody);\n },\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","module.exports = ({ protocol, hostname, path }, postBody) => {\r\n return new Promise((resolve, reject) => {\r\n let xhr = new XMLHttpRequest();\r\n xhr.open('POST', `${protocol}//${hostname}${path}`, true);\r\n xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\r\n xhr.setRequestHeader('Access-Control-Allow-Origin', '*');\r\n xhr.setRequestHeader(\"Accept\", \"*/*\");\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState == 4) {\r\n xhr.status == 200\r\n ? resolve(JSON.parse(xhr.responseText))\r\n : reject(xhr.status);\r\n }\r\n };\r\n xhr.send(JSON.stringify(postBody));\r\n });\r\n};\r\n","exports.endianness = function () { return 'LE' };\n\nexports.hostname = function () {\n if (typeof location !== 'undefined') {\n return location.hostname\n }\n else return '';\n};\n\nexports.loadavg = function () { return [] };\n\nexports.uptime = function () { return 0 };\n\nexports.freemem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.totalmem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.cpus = function () { return [] };\n\nexports.type = function () { return 'Browser' };\n\nexports.release = function () {\n if (typeof navigator !== 'undefined') {\n return navigator.appVersion;\n }\n return '';\n};\n\nexports.networkInterfaces\n= exports.getNetworkInterfaces\n= function () { return {} };\n\nexports.arch = function () { return 'javascript' };\n\nexports.platform = function () { return 'browser' };\n\nexports.tmpdir = exports.tmpDir = function () {\n return '/tmp';\n};\n\nexports.EOL = '\\n';\n\nexports.homedir = function () {\n\treturn '/'\n};\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/tocbot/tocbot.js\n # Tocbot v4.12.0 implementation for J1 template\n #\n # Product/Info:\n # https://jekyll.one\n # https://tscanlin.github.io/tocbot\n # https://github.com/tscanlin/tocbot\n #\n # Copyright (C) 2021 Juergen Adams\n # Copyright (C) 2016 Tim Scanlin\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # Tocbot is licensed under the MIT License.\n # For details, https://github.com/tscanlin/tocbot/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n # rules:\n # \"eslint:tocbot\": \"eslint --ignore-path .eslintignore src/tocbot/js\"\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\n/**\n * Tocbot\n * Tocbot creates a toble of contents based on HTML headings on a page,\n * this allows users to easily jump to different sections of the document.\n * Tocbot was inspired by tocify (http://gregfranko.com/jquery.tocify.js/).\n * The main differences are that it works natively without any need for jquery or jquery UI).\n *\n * @author Tim Scanlin\n */\n\n/* globals define */\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory(root))\n } else if (typeof exports === 'object') {\n module.exports = factory(root)\n } else {\n root.tocbot = factory(root)\n }\n})(typeof global !== 'undefined' ? global : this.window || this.global, function (root) {\n 'use strict'\n\n // Default options.\n var defaultOptions = require('./default-options.js')\n // Object to store current options.\n var options = {}\n // Object for public APIs.\n var tocbot = {}\n\n var BuildHtml = require('./build-html.js')\n var ParseContent = require('./parse-content.js')\n var updateTocScroll = require('./update-toc-scroll.js')\n // Keep these variables at top scope once options are passed in.\n var buildHtml\n var parseContent\n\n // Just return if its not a browser.\n var supports = !!root && !!root.document && !!root.document.querySelector && !!root.addEventListener // Feature test\n if (typeof window === 'undefined' && !supports) {\n return\n }\n var headingsArray\n\n // From: https://github.com/Raynos/xtend\n var hasOwnProperty = Object.prototype.hasOwnProperty\n function extend () {\n var target = {}\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n return target\n }\n\n // From: https://remysharp.com/2010/07/21/throttling-function-calls\n function throttle (fn, threshold, scope) {\n threshold || (threshold = 250)\n var last\n var deferTimer\n return function () {\n var context = scope || this\n var now = +new Date()\n var args = arguments\n if (last && now < last + threshold) {\n // hold on to it\n clearTimeout(deferTimer)\n deferTimer = setTimeout(function () {\n last = now\n fn.apply(context, args)\n }, threshold)\n } else {\n last = now\n fn.apply(context, args)\n }\n }\n }\n\n /**\n * Destroy tocbot.\n */\n tocbot.destroy = function () {\n if (!options.skipRendering) {\n // Clear HTML.\n try {\n document.querySelector(options.tocSelector).innerHTML = ''\n } catch (e) {\n console.warn('Element not found: ' + options.tocSelector); // eslint-disable-line\n }\n }\n\n // Remove event listeners.\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).removeEventListener('scroll', this._scrollListener, false)\n document.querySelector(options.scrollContainer).removeEventListener('resize', this._scrollListener, false)\n if (buildHtml) {\n document.querySelector(options.scrollContainer).removeEventListener('click', this._clickListener, false)\n }\n } else {\n document.removeEventListener('scroll', this._scrollListener, false)\n document.removeEventListener('resize', this._scrollListener, false)\n if (buildHtml) {\n document.removeEventListener('click', this._clickListener, false)\n }\n }\n }\n\n /**\n * Initialize tocbot.\n * @param {object} customOptions\n */\n tocbot.init = function (customOptions) {\n // feature test\n if (!supports) {\n return\n }\n\n // Merge defaults with user options.\n // Set to options variable at the top.\n options = extend(defaultOptions, customOptions || {})\n this.options = options\n this.state = {}\n\n // Init smooth scroll if enabled (default).\n if (options.scrollSmooth) {\n options.duration = options.scrollSmoothDuration\n options.offset = options.scrollSmoothOffset\n tocbot.scrollSmooth = require('./scroll-smooth').initSmoothScrolling(options)\n }\n\n // Pass options to these modules.\n buildHtml = BuildHtml(options)\n parseContent = ParseContent(options)\n\n // For testing purposes.\n this._buildHtml = buildHtml\n this._parseContent = parseContent\n\n // Destroy it if it exists first.\n tocbot.destroy()\n\n // Get headings array.\n headingsArray = parseContent.selectHeadings(options.contentSelector, options.headingSelector)\n // Return if no headings are found.\n if (headingsArray === null) {\n return\n }\n\n // Build nested headings array.\n var nestedHeadingsObj = parseContent.nestHeadingsArray(headingsArray)\n var nestedHeadings = nestedHeadingsObj.nest\n\n // Render.\n if (!options.skipRendering) {\n buildHtml.render(options.tocSelector, nestedHeadings)\n }\n\n // Update Sidebar and bind listeners.\n this._scrollListener = throttle(function (e) {\n buildHtml.updateToc(headingsArray)\n !options.disableTocScrollSync && updateTocScroll(options)\n var isTop = e && e.target && e.target.scrollingElement && e.target.scrollingElement.scrollTop === 0\n if ((e && (e.eventPhase === 0 || e.currentTarget === null)) || isTop) {\n buildHtml.updateToc(headingsArray)\n if (options.scrollEndCallback) {\n options.scrollEndCallback(e)\n }\n }\n }, options.throttleTimeout)\n this._scrollListener()\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).addEventListener('scroll', this._scrollListener, false)\n document.querySelector(options.scrollContainer).addEventListener('resize', this._scrollListener, false)\n } else {\n document.addEventListener('scroll', this._scrollListener, false)\n document.addEventListener('resize', this._scrollListener, false)\n }\n\n // Bind click listeners to disable animation.\n var timeout = null\n this._clickListener = throttle(function (event) {\n if (options.scrollSmooth) {\n buildHtml.disableTocAnimation(event)\n }\n buildHtml.updateToc(headingsArray)\n // Timeout to re-enable the animation.\n timeout && clearTimeout(timeout)\n timeout = setTimeout(function () {\n buildHtml.enableTocAnimation()\n }, options.scrollSmoothDuration)\n }, options.throttleTimeout)\n\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n document.querySelector(options.scrollContainer).addEventListener('click', this._clickListener, false)\n } else {\n document.addEventListener('click', this._clickListener, false)\n }\n\n return this\n }\n\n /**\n * Refresh tocbot.\n */\n tocbot.refresh = function (customOptions) {\n tocbot.destroy()\n tocbot.init(customOptions || this.options)\n }\n\n // Make tocbot available globally.\n root.tocbot = tocbot\n\n return tocbot\n})\n","// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-unused-vars: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = {\n // Where to render the table of contents.\n tocSelector: '.js-toc',\n // Where to grab the headings to build the table of contents.\n contentSelector: '.js-toc-content',\n // Which headings to grab inside of the contentSelector element.\n headingSelector: 'h1, h2, h3',\n // Headings that match the ignoreSelector will be skipped.\n ignoreSelector: '.js-toc-ignore',\n // For headings inside relative or absolute positioned containers within content\n hasInnerContainers: false,\n // Main class to add to links.\n linkClass: 'toc-link',\n // Extra classes to add to links.\n extraLinkClasses: '',\n // Class to add to active links,\n // the link corresponding to the top most heading on the page.\n activeLinkClass: 'is-active-link',\n // Main class to add to lists.\n listClass: 'toc-list',\n // Extra classes to add to lists.\n extraListClasses: '',\n // Class that gets added when a list should be collapsed.\n isCollapsedClass: 'is-collapsed',\n // Class that gets added when a list should be able\n // to be collapsed but isn't necessarily collapsed.\n collapsibleClass: 'is-collapsible',\n // Class to add to list items.\n listItemClass: 'toc-list-item',\n // Class to add to active list items.\n activeListItemClass: 'is-active-li',\n // How many heading levels should not be collapsed.\n // For example, number 6 will show everything since\n // there are only 6 heading levels and number 0 will collapse them all.\n // The sections that are hidden will open\n // and close as you scroll to headings within them.\n collapseDepth: 0,\n // Smooth scrolling enabled.\n scrollSmooth: true,\n // Smooth scroll duration.\n scrollSmoothDuration: 420,\n // Smooth scroll offset.\n scrollSmoothOffset: 0,\n // Callback for scroll end.\n scrollEndCallback: function (e) {},\n // Headings offset between the headings and the top of the document (this is meant for minor adjustments).\n headingsOffset: 1,\n // Timeout between events firing to make sure it's\n // not too rapid (for performance reasons).\n throttleTimeout: 50,\n // Element to add the positionFixedClass to.\n positionFixedSelector: null,\n // Fixed position class to add to make sidebar fixed after scrolling\n // down past the fixedSidebarOffset.\n positionFixedClass: 'is-position-fixed',\n // fixedSidebarOffset can be any number but by default is set\n // to auto which sets the fixedSidebarOffset to the sidebar\n // element's offsetTop from the top of the document on init.\n fixedSidebarOffset: 'auto',\n // includeHtml can be set to true to include the HTML markup from the\n // heading node instead of just including the textContent.\n includeHtml: false,\n // onclick function to apply to all links in toc. will be called with\n // the event as the first parameter, and this can be used to stop,\n // propagation, prevent default or perform action\n onClick: function (e) {},\n // orderedList can be set to false to generate unordered lists (ul)\n // instead of ordered lists (ol)\n orderedList: true,\n // If there is a fixed article scroll container, set to calculate titles' offset\n scrollContainer: null,\n // prevent ToC DOM rendering if it's already rendered by an external system\n skipRendering: false,\n // Optional callback to change heading labels.\n // For example it can be used to cut down and put ellipses on multiline headings you deem too long.\n // Called each time a heading is parsed. Expects a string in return, the modified label to display.\n // function (string) => string\n headingLabelCallback: false,\n // ignore headings that are hidden in DOM\n ignoreHiddenElements: false,\n // Optional callback to modify properties of parsed headings.\n // The heading element is passed in node parameter and information parsed by default parser is provided in obj parameter.\n // Function has to return the same or modified obj.\n // The heading will be excluded from TOC if nothing is returned.\n // function (object, HTMLElement) => object | void\n headingObjectCallback: null,\n // Set the base path, useful if you use a `base` tag in `head`.\n basePath: '',\n // Only takes affect when `tocSelector` is scrolling,\n // keep the toc scroll position in sync with the content.\n disableTocScrollSync: false,\n};\n","/**\n * This file is responsible for building the DOM and updating DOM state.\n *\n * @author Tim Scanlin\n */\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = function (options) {\n var forEach = [].forEach\n var some = [].some\n var body = document.body\n var currentlyHighlighting = true\n var SPACE_CHAR = ' '\n\n /**\n * Create link and list elements.\n * @param {Object} d\n * @param {HTMLElement} container\n * @return {HTMLElement}\n */\n function createEl (d, container) {\n var link = container.appendChild(createLink(d))\n if (d.children.length) {\n var list = createList(d.isCollapsed)\n d.children.forEach(function (child) {\n createEl(child, list)\n })\n link.appendChild(list)\n }\n }\n\n /**\n * Render nested heading array data into a given selector.\n * @param {String} selector\n * @param {Array} data\n * @return {HTMLElement}\n */\n function render (selector, data) {\n var collapsed = false\n var container = createList(collapsed)\n\n data.forEach(function (d) {\n createEl(d, container)\n })\n\n var parent = document.querySelector(selector)\n\n // Return if no parent is found.\n if (parent === null) {\n return\n }\n\n // Remove existing child if it exists.\n if (parent.firstChild) {\n parent.removeChild(parent.firstChild)\n }\n\n // Just return the parent and don't append the list if no links are found.\n if (data.length === 0) {\n return parent\n }\n\n // Append the Elements that have been created\n return parent.appendChild(container)\n }\n\n /**\n * Create link element.\n * @param {Object} data\n * @return {HTMLElement}\n */\n function createLink (data) {\n var item = document.createElement('li')\n var a = document.createElement('a')\n if (options.listItemClass) {\n item.setAttribute('class', options.listItemClass)\n }\n\n if (options.onClick) {\n a.onclick = options.onClick\n }\n\n if (options.includeHtml && data.childNodes.length) {\n forEach.call(data.childNodes, function (node) {\n a.appendChild(node.cloneNode(true))\n })\n } else {\n // Default behavior.\n a.textContent = data.textContent\n }\n a.setAttribute('href', options.basePath + '#' + data.id)\n a.setAttribute('class', options.linkClass +\n SPACE_CHAR + 'node-name--' + data.nodeName +\n SPACE_CHAR + options.extraLinkClasses)\n item.appendChild(a)\n return item\n }\n\n /**\n * Create list element.\n * @param {Boolean} isCollapsed\n * @return {HTMLElement}\n */\n function createList (isCollapsed) {\n var listElement = (options.orderedList) ? 'ol' : 'ul'\n var list = document.createElement(listElement)\n var classes = options.listClass +\n SPACE_CHAR + options.extraListClasses\n if (isCollapsed) {\n classes += SPACE_CHAR + options.collapsibleClass\n classes += SPACE_CHAR + options.isCollapsedClass\n }\n list.setAttribute('class', classes)\n return list\n }\n\n /**\n * Update fixed sidebar class.\n * @return {HTMLElement}\n */\n function updateFixedSidebarClass () {\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n var top\n top = document.querySelector(options.scrollContainer).scrollTop\n } else {\n top = document.documentElement.scrollTop || body.scrollTop\n }\n var posFixedEl = document.querySelector(options.positionFixedSelector)\n\n if (options.fixedSidebarOffset === 'auto') {\n options.fixedSidebarOffset = document.querySelector(options.tocSelector).offsetTop\n }\n\n if (top > options.fixedSidebarOffset) {\n if (posFixedEl.className.indexOf(options.positionFixedClass) === -1) {\n posFixedEl.className += SPACE_CHAR + options.positionFixedClass\n }\n } else {\n posFixedEl.className = posFixedEl.className.split(SPACE_CHAR + options.positionFixedClass).join('')\n }\n }\n\n /**\n * Get top position of heading\n * @param {HTMLElement}\n * @return {integer} position\n */\n function getHeadingTopPos (obj) {\n var position = 0\n if (obj !== document.querySelector(options.contentSelector && obj != null)) {\n position = obj.offsetTop\n if (options.hasInnerContainers) { position += getHeadingTopPos(obj.offsetParent) }\n }\n return position\n }\n\n /**\n * Update TOC highlighting and collapsed groups\n */\n function updateToc (headingsArray) {\n // If a fixed content container was set\n if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n var top\n top = document.querySelector(options.scrollContainer).scrollTop\n } else {\n top = document.documentElement.scrollTop || body.scrollTop\n }\n\n // Add fixed class at offset\n if (options.positionFixedSelector) {\n updateFixedSidebarClass()\n }\n\n // Get the most TOP heading currently visible on the page to\n // identify what element to be highlighted\n var headings = headingsArray;\n var topHeader;\n var headingTopPos;\n\n // Using some instead of each so that we can escape early\n if (currentlyHighlighting &&\n document.querySelector(options.tocSelector) !== null &&\n headings.length > 0) {\n some.call(headings, function (heading, i) {\n headingTopPos = getHeadingTopPos(heading)\n if (headingTopPos > top + options.headingsOffset + 10) {\n // Don't allow negative index value\n // var index = (i === 0) ? i : i - 1;\n // topHeader = headings[index];\n // jadams, index correction seems NOT needed\n topHeader = headings[i];\n return true\n } else if (i === headings.length - 1) {\n // This allows scrolling for the last heading on the page\n topHeader = headings[headings.length - 1]\n return true\n }\n })\n\n // Remove the active class from the other tocLinks.\n var tocLinks = document.querySelector(options.tocSelector)\n .querySelectorAll('.' + options.linkClass)\n forEach.call(tocLinks, function (tocLink) {\n tocLink.className = tocLink.className.split(SPACE_CHAR + options.activeLinkClass).join('')\n })\n var tocLis = document.querySelector(options.tocSelector)\n .querySelectorAll('.' + options.listItemClass)\n forEach.call(tocLis, function (tocLi) {\n tocLi.className = tocLi.className.split(SPACE_CHAR + options.activeListItemClass).join('')\n })\n\n // Add the active class to the active tocLink.\n var activeTocLink = document.querySelector(options.tocSelector)\n .querySelector('.' + options.linkClass +\n '.node-name--' + topHeader.nodeName +\n '[href=\"' + options.basePath + '#' + topHeader.id.replace(/([ #;&,.+*~':\"!^$[\\]()=>|/@])/g, '\\\\$1') + '\"]')\n if (activeTocLink.className.indexOf(options.activeLinkClass) === -1) {\n activeTocLink.className += SPACE_CHAR + options.activeLinkClass\n }\n var li = activeTocLink.parentNode\n if (li && li.className.indexOf(options.activeListItemClass) === -1) {\n li.className += SPACE_CHAR + options.activeListItemClass\n }\n\n var tocLists = document.querySelector(options.tocSelector)\n .querySelectorAll('.' + options.listClass + '.' + options.collapsibleClass)\n\n // Collapse the other collapsible lists.\n forEach.call(tocLists, function (list) {\n if (list.className.indexOf(options.isCollapsedClass) === -1) {\n list.className += SPACE_CHAR + options.isCollapsedClass\n }\n })\n\n // Expand the active link's collapsible list and its sibling if applicable.\n if (activeTocLink.nextSibling && activeTocLink.nextSibling.className.indexOf(options.isCollapsedClass) !== -1) {\n activeTocLink.nextSibling.className = activeTocLink.nextSibling.className.split(SPACE_CHAR + options.isCollapsedClass).join('')\n }\n removeCollapsedFromParents(activeTocLink.parentNode.parentNode)\n }\n }\n\n /**\n * Remove collpased class from parent elements.\n * @param {HTMLElement} element\n * @return {HTMLElement}\n */\n function removeCollapsedFromParents (element) {\n if (element.className.indexOf(options.collapsibleClass) !== -1 && element.className.indexOf(options.isCollapsedClass) !== -1) {\n element.className = element.className.split(SPACE_CHAR + options.isCollapsedClass).join('')\n return removeCollapsedFromParents(element.parentNode.parentNode)\n }\n return element\n }\n\n /**\n * Disable TOC Animation when a link is clicked.\n * @param {Event} event\n */\n function disableTocAnimation (event) {\n var target = event.target || event.srcElement\n if (typeof target.className !== 'string' || target.className.indexOf(options.linkClass) === -1) {\n return\n }\n // Bind to tocLink clicks to temporarily disable highlighting\n // while smoothScroll is animating.\n currentlyHighlighting = false\n }\n\n /**\n * Enable TOC Animation.\n */\n function enableTocAnimation () {\n currentlyHighlighting = true\n }\n\n return {\n enableTocAnimation: enableTocAnimation,\n disableTocAnimation: disableTocAnimation,\n render: render,\n updateToc: updateToc\n }\n}\n","/**\n * This file is responsible for parsing the content from the DOM and making\n * sure data is nested properly.\n *\n * @author Tim Scanlin\n */\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = function parseContent (options) {\n var reduce = [].reduce\n\n /**\n * Get the last item in an array and return a reference to it.\n * @param {Array} array\n * @return {Object}\n */\n function getLastItem (array) {\n return array[array.length - 1]\n }\n\n /**\n * Get heading level for a heading dom node.\n * @param {HTMLElement} heading\n * @return {Number}\n */\n function getHeadingLevel (heading) {\n return +heading.nodeName.split('H').join('')\n }\n\n /**\n * Get important properties from a heading element and store in a plain object.\n * @param {HTMLElement} heading\n * @return {Object}\n */\n function getHeadingObject (heading) {\n // each node is processed twice by this method because nestHeadingsArray() and addNode() calls it\n // first time heading is real DOM node element, second time it is obj\n // that is causing problem so I am processing only original DOM node\n if (!(heading instanceof window.HTMLElement)) return heading\n\n if (options.ignoreHiddenElements && (!heading.offsetHeight || !heading.offsetParent)) {\n return null\n }\n\n var obj = {\n id: heading.id,\n children: [],\n nodeName: heading.nodeName,\n headingLevel: getHeadingLevel(heading),\n textContent: options.headingLabelCallback ? String(options.headingLabelCallback(heading.textContent)) : heading.textContent.trim()\n }\n\n if (options.includeHtml) {\n obj.childNodes = heading.childNodes\n }\n\n if (options.headingObjectCallback) {\n return options.headingObjectCallback(obj, heading)\n }\n\n return obj\n }\n\n /**\n * Add a node to the nested array.\n * @param {Object} node\n * @param {Array} nest\n * @return {Array}\n */\n function addNode (node, nest) {\n var obj = getHeadingObject(node)\n var level = obj.headingLevel\n var array = nest\n var lastItem = getLastItem(array)\n var lastItemLevel = lastItem\n ? lastItem.headingLevel\n : 0\n var counter = level - lastItemLevel\n\n while (counter > 0) {\n lastItem = getLastItem(array)\n if (lastItem && lastItem.children !== undefined) {\n array = lastItem.children\n }\n counter--\n }\n\n if (level >= options.collapseDepth) {\n obj.isCollapsed = true\n }\n\n array.push(obj)\n return array\n }\n\n /**\n * Select headings in content area, exclude any selector in options.ignoreSelector\n * @param {String} contentSelector\n * @param {Array} headingSelector\n * @return {Array}\n */\n function selectHeadings (contentSelector, headingSelector) {\n var selectors = headingSelector\n if (options.ignoreSelector) {\n selectors = headingSelector.split(',')\n .map(function mapSelectors (selector) {\n return selector.trim() + ':not(' + options.ignoreSelector + ')'\n })\n }\n try {\n return document.querySelector(contentSelector)\n .querySelectorAll(selectors)\n } catch (e) {\n console.warn('Element not found: ' + contentSelector); // eslint-disable-line\n return null\n }\n }\n\n /**\n * Nest headings array into nested arrays with 'children' property.\n * @param {Array} headingsArray\n * @return {Object}\n */\n function nestHeadingsArray (headingsArray) {\n return reduce.call(headingsArray, function reducer (prev, curr) {\n var currentHeading = getHeadingObject(curr)\n if (currentHeading) {\n addNode(currentHeading, prev.nest)\n }\n return prev\n }, {\n nest: []\n })\n }\n\n return {\n nestHeadingsArray: nestHeadingsArray,\n selectHeadings: selectHeadings\n }\n}\n","// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n\nmodule.exports = function updateTocScroll(options) {\n var toc = document.querySelector(options.tocSelector);\n if (toc && toc.scrollHeight > toc.clientHeight) {\n var activeItem = toc.querySelector('.' + options.activeListItemClass);\n if (activeItem) {\n toc.scrollTop = activeItem.offsetTop;\n }\n }\n}\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/tocbot/scroll-smooth/index.js\n # Scroll-Smooth (Tocbot v4.12.0) implementation for J1 template\n #\n # Product/Info:\n # https://jekyll.one\n # https://tscanlin.github.io/tocbot\n # https://github.com/tscanlin/tocbot\n #\n # Copyright (C) 2021 Juergen Adams\n # Copyright (C) 2016 Tim Scanlin\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # Tocbot is licensed under the MIT License.\n # For details, https://github.com/tscanlin/tocbot/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint no-redeclare: \"off\" */\n/* eslint no-undef: \"off\" */\n/* eslint no-empty: \"off\" */\n/* eslint semi: \"off\" */\n// -----------------------------------------------------------------------------\n/* globals location, requestAnimationFrame */\n\nexports.initSmoothScrolling = initSmoothScrolling\n\nfunction initSmoothScrolling (options) {\n if (isCssSmoothSCrollSupported()) { }\n\n var duration = options.duration\n var offset = options.offset\n\n var pageUrl = location.hash\n ? stripHash(location.href)\n : location.href\n\n delegatedLinkHijacking()\n\n function delegatedLinkHijacking () {\n document.body.addEventListener('click', onClick, false)\n\n function onClick (e) {\n if (\n !isInPageLink(e.target) ||\n e.target.className.indexOf('no-smooth-scroll') > -1 ||\n (e.target.href.charAt(e.target.href.length - 2) === '#' &&\n e.target.href.charAt(e.target.href.length - 1) === '!') ||\n e.target.className.indexOf(options.linkClass) === -1) {\n return\n }\n\n // Don't prevent default or hash doesn't change.\n // e.preventDefault()\n\n jump(e.target.hash, {\n duration: duration,\n offset: offset,\n callback: function () {\n setFocus(e.target.hash)\n }\n })\n }\n }\n\n function isInPageLink (n) {\n return n.tagName.toLowerCase() === 'a' &&\n (n.hash.length > 0 || n.href.charAt(n.href.length - 1) === '#') &&\n (stripHash(n.href) === pageUrl || stripHash(n.href) + '#' === pageUrl)\n }\n\n function stripHash (url) {\n return url.slice(0, url.lastIndexOf('#'))\n }\n\n function isCssSmoothSCrollSupported () {\n return 'scrollBehavior' in document.documentElement.style\n }\n\n // Adapted from:\n // https://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/\n function setFocus (hash) {\n var element = document.getElementById(hash.substring(1))\n\n if (element) {\n if (!/^(?:a|select|input|button|textarea)$/i.test(element.tagName)) {\n element.tabIndex = -1\n }\n\n element.focus()\n }\n }\n}\n\nfunction jump (target, options) {\n var start = window.pageYOffset\n var opt = {\n duration: options.duration,\n offset: options.offset || 0,\n callback: options.callback,\n easing: options.easing || easeInOutQuad\n }\n // This makes ids that start with a number work: ('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n // DecodeURI for nonASCII hashes, they was encoded, but id was not encoded, it lead to not finding the tgt element by id.\n // And this is for IE: document.body.scrollTop\n var tgt = document.querySelector('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n var distance = typeof target === 'string'\n ? opt.offset + (\n target\n ? (tgt && tgt.getBoundingClientRect().top) || 0 // handle non-existent links better.\n : -(document.documentElement.scrollTop || document.body.scrollTop))\n : target\n var duration = typeof opt.duration === 'function'\n ? opt.duration(distance)\n : opt.duration\n var timeStart\n var timeElapsed\n\n requestAnimationFrame(function (time) { timeStart = time; loop(time) })\n function loop (time) {\n timeElapsed = time - timeStart\n\n window.scrollTo(0, opt.easing(timeElapsed, start, distance, duration))\n\n if (timeElapsed < duration) { requestAnimationFrame(loop) } else { end() }\n }\n\n function end () {\n window.scrollTo(0, start + distance)\n\n if (typeof opt.callback === 'function') { opt.callback() }\n }\n\n // Robert Penner's easeInOutQuad - http://robertpenner.com/easing/\n function easeInOutQuad (t, b, c, d) {\n t /= d / 2\n if (t < 1) return c / 2 * t * t + b\n t--\n return -c / 2 * (t * (t - 2) - 1) + b\n }\n}\n","/*\n # -----------------------------------------------------------------------------\n # ~/js/adoc_result_viewer/view_results.js\n # Provides JavaScript functions displaying results for Asciidoctor\n # example block\n #\n # Product/Info:\n # https://jekyll.one\n #\n # Copyright (C) 2021 Juergen Adams\n #\n # J1 Template is licensed under MIT License.\n # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE\n # -----------------------------------------------------------------------------\n # TODO: Improve lanuage settings\n # TODO: Improve auto-hide functionality for the results block\n # -----------------------------------------------------------------------------\n*/\n\n// -----------------------------------------------------------------------------\n// ESLint shimming\n// -----------------------------------------------------------------------------\n/* eslint indent: \"off\" */\n/* global $ */\n// -----------------------------------------------------------------------------\n\nvar timeoutHandle;\n// var language = 'de';\nvar language = document.documentElement.lang;\n\nfunction toggle_result_block(result_block) {\n window.clearTimeout(timeoutHandle); // Clear the timeout object\n result_block.prev().toggleClass('stacked');\n result_block.toggle();\n\n // jadams: Improve auto-hide functionality for the results block\n //\n // timeoutHandle = window.setTimeout(function () {\n // result_block.hide();\n // }, 5000);\n}\n\nfunction insert_result_links() {\n $('.result').each(function(idx, node) {\n var view_result_link;\n var result_block = $(node);\n var title_div = result_block.prev().find('.title');\n\n if (language == 'en') {\n view_result_link = $('<div class=\"view-result j1-viewer\"><span class=\"btn-viewer j1-tooltip\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"toggle results\" data-original-title=\"toggle results\">View</span></div>');\n } else if (language == 'de') {\n view_result_link = $('<div class=\"view-result j1-viewer\"><span class=\"btn-viewer j1-tooltip\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"Anzeige umschalten\" data-original-title=\"toggle results\">Anzeige</span></div>');\n } else {\n view_result_link = $('<div class=\"view-result j1-viewer\"><span class=\"btn-viewer j1-tooltip\" data-toggle=\"tooltip\" data-placement=\"left\" title=\"toggle results\" data-original-title=\"toggle results\">View</span></div>');\n }\n\n title_div.append(view_result_link);\n view_result_link.on('click', function(event) {\n event.preventDefault();\n toggle_result_block(result_block);\n });\n });\n}\n\n$(insert_result_links);\n"],"sourceRoot":""}