{"version":3,"sources":["liveball_api.js","ixp-runtime.js","ixp-interactions.js","ixp-components.js"],"names":["_lbapi_XhrFactory","XMLHttpRequest","_lbapi_urlencode","stg","retval","escape","replace","_lbapi_idstg","_lbapi_3id_param","_lbapi_lb3id","_lbapi_rnd_param","parseInt","Math","random","liveballConvert","func","_lbapi_asynchronous","window","ixp","runtime","convert","xhr","open","onreadystatechange","this","readyState","DONE","send","liveballTag","tag","_lbapi_tag_param","liveballData","name","value","liveballDataPost","params","setRequestHeader","length","liveballScriptlet","scriptletId","responseCType","paramList","status","responseText","readystate","document","undefined","_","apply","thisArg","args","call","arrayEach","array","iteratee","index","arrayIncludes","baseIndexOf","baseFindIndex","predicate","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseTimes","n","result","Array","baseUnary","countHolders","placeholder","getValue","object","key","overArg","transform","arg","replaceHolders","resIndex","PLACEHOLDER","lodash","baseLodash","LazyWrapper","__wrapped__","__actions__","__dir__","__filtered__","__iteratees__","__takeCount__","MAX_ARRAY_LENGTH","__views__","arrayLikeKeys","inherited","isArr","isArray","isArg","isArguments","isBuff","isBuffer","isType","isTypedArray","skipIndexes","String","hasOwnProperty","isIndex","push","assignValue","objValue","eq","baseAssignValue","baseAssign","source","copyObject","keys","defineProperty","configurable","enumerable","writable","baseDelay","wait","TypeError","FUNC_ERROR_TEXT","setTimeout","baseGetTag","undefinedTag","nullTag","symToStringTag","Object","getRawTag","objectToString","baseIsArguments","isObjectLike","argsTag","baseIsNative","isObject","isMasked","pattern","isFunction","reIsNative","reIsHostCtor","test","toSource","baseIsTypedArray","isLength","typedArrayTags","baseKeys","isPrototype","nativeKeys","baseKeysIn","nativeKeysIn","isProto","baseRest","start","setToString","overRest","identity","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","nativeMax","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","offset","copyArray","props","customizer","isNew","newValue","createAssigner","assigner","sources","guard","isIterateeCall","createBind","bitmask","wrapper","fn","root","Ctor","isBind","arguments","WRAP_BIND_FLAG","createCtor","thisBinding","baseCreate","prototype","createCurry","arity","getHolder","createRecurry","createHybrid","partialsRight","holdersRight","argPos","ary","holdersCount","newHolders","isBindKey","reorder","isFlip","reverse","isAry","WRAP_ARY_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_FLIP_FLAG","createPartial","wrapFunc","isCurry","newHoldersRight","newPartials","newPartialsRight","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_CURRY_BOUND_FLAG","newData","isLaziable","setData","setWrapToString","createWrap","toInteger","data","getData","mergeData","setter","baseSetData","getFuncName","realNames","otherFunc","getNative","isOwn","unmasked","e","nativeObjectToString","getWrapDetails","match","reWrapDetails","split","reSplitDetails","insertWrapDetails","details","lastIndex","join","reWrapComment","type","MAX_SAFE_INTEGER","reIsUint","isArrayLike","funcName","other","maskSrcKey","constructor","proto","objectProto","srcBitmask","newBitmask","isCommon","isCombo","WRAP_REARG_FLAG","nativeMin","otherArgs","indexes","arrLength","oldArray","reference","updateWrapDetails","shortOut","count","lastCalled","stamp","nativeNow","remaining","HOT_SPAN","HOT_COUNT","funcToString","wrapFlags","pair","sort","debounce","options","invokeFunc","time","lastArgs","lastThis","lastInvokeTime","leadingEdge","timerId","timerExpired","leading","remainingWait","timeSinceLastCall","lastCallTime","timeSinceLastInvoke","timeWaiting","maxing","maxWait","shouldInvoke","now","trailingEdge","trailing","cancel","clearTimeout","flush","debounced","isInvoking","toNumber","throttle","funcTag","genTag","asyncTag","proxyTag","isString","stringTag","isSymbol","symbolTag","toFinite","INFINITY","sign","MAX_INTEGER","remainder","NAN","valueOf","reTrim","isBinary","reIsBinary","reIsOctal","freeParseInt","slice","reIsBadHex","create","properties","keysIn","constant","noop","stubFalse","VERSION","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reRegExpChar","freeGlobal","global","freeSelf","self","Function","freeExports","exports","nodeType","freeModule","module","moduleExports","freeProcess","process","nodeUtil","types","require","binding","nodeIsTypedArray","funcProto","coreJsData","toString","uid","exec","IE_PROTO","RegExp","Buffer","Symbol","objectCreate","propertyIsEnumerable","toStringTag","nativeIsBuffer","max","min","Date","WeakMap","metaMap","set","baseSetToString","string","get","bind","defer","delay","partial","assign","assignIn","defaults","propsIndex","propsLength","extend","methodName","define","amd","$$utils$$objectOrFunction","x","$$utils$$isFunction","$$utils$$isMaybeThenable","$$utils$$F","$$asap$$useNextTick","nextTick","$$asap$$flush","$$asap$$useMutationObserver","iterations","observer","$$asap$$BrowserMutationObserver","node","createTextNode","observe","characterData","$$asap$$useMessageChannel","channel","MessageChannel","port1","onmessage","port2","postMessage","$$asap$$useSetTimeout","i","$$asap$$len","callback","$$asap$$queue","$$$internal$$noop","$$$internal$$selfFullfillment","$$$internal$$cannotReturnOwn","$$$internal$$getThen","promise","then","error","$$$internal$$GET_THEN_ERROR","$$$internal$$tryThen","fulfillmentHandler","rejectionHandler","$$$internal$$handleForeignThenable","thenable","$$asap$$default","sealed","$$$internal$$resolve","$$$internal$$fulfill","reason","$$$internal$$reject","_label","$$$internal$$handleOwnThenable","_state","$$$internal$$FULFILLED","_result","$$$internal$$REJECTED","$$$internal$$subscribe","$$$internal$$handleMaybeThenable","maybeThenable","$$$internal$$publishRejection","_onerror","$$$internal$$publish","$$$internal$$PENDING","_subscribers","parent","child","onFulfillment","onRejection","subscribers","settled","detail","$$$internal$$invokeCallback","$$$internal$$ErrorObject","$$$internal$$tryCatch","$$$internal$$TRY_CATCH_ERROR","succeeded","failed","hasCallback","$$$internal$$initializePromise","resolver","$$$enumerator$$Enumerator","Constructor","input","abortOnReject","label","_instanceConstructor","_abortOnReject","_validateInput","_input","_remaining","_init","_enumerate","_validationError","$$es6$promise$promise$$needsResolver","$$es6$promise$promise$$needsNew","$$es6$promise$promise$$Promise","_id","$$es6$promise$promise$$counter","$$utils$$_isArray","$$asap$$scheduleFlush","$$utils$$isArray","getTime","o","Error","$$asap$$browserGlobal","MutationObserver","WebKitMutationObserver","$$asap$$isWorker","Uint8ClampedArray","importScripts","$$$enumerator$$default","_eachEntry","entry","c","_settledAt","_willSettleAt","resolve","_makeResult","state","enumerator","$$promise$all$$default","entries","$$promise$race$$default","$$promise$resolve$$default","$$promise$reject$$default","$$es6$promise$promise$$default","all","race","reject","catch","$$es6$promise$polyfill$$default","local","es6PromiseSupport","Promise","r","es6$promise$umd$$ES6Promise","polyfill","ES6Promise","consoleOverride","overrideFn","con","assert","clear","debug","dir","dirxml","exception","group","groupCollapsed","groupEnd","info","log","markTimeline","profile","profileEnd","table","timeEnd","timeStamp","trace","warn","console","inStudio","LIVEBALL","inStudioLabs","App","features","labs","interactionsConfig","BULK_SIZE","AJAX_INTERVAL","interactionManager","readyQueue","isReady","ready","context","requestAnimationFrame","constants","screenSizes","xs","maxWidth","sm","minWidth","md","lg","flags","parseQueryString","qs","pl","search","decode","s","decodeURIComponent","ex","query","location","substring","queryString","isHttps","protocol","https","inDebug","studio","app","paths","cdnUrls","http","trimFrontSlash","str","trimEndSlash","trimSlashes","path","len","part","concat","getCdnPath","cdnPath","newPath","dependencies","components","componentDeps","modules","loading","_modules","_loading","compareVersions","v1","v2","v1Split","v2Split","num1","Number","num2","getSortedInstancesInfo","instances","getVersion","infos","instance","version","i1","i2","loadScript","url","script","createElement","head","getElementsByTagName","loaded","load","onload","onerror","src","appendChild","moduleLocator","defineOpts","requireOpts","findInstances","getInstanceVersion","minVer","maxVer","upToVersion","checkVersion","moduleLoader","doneFn","done","sync","found","getInstanceExport","err","fail","toLowerCase","loader","jQueryUrl","jQuery","v1_11","$","noConflict","jquery","$promise","initInteractionManager","events","subscriptions","_subscriptions","triggerEvents","listeners","ev","a1","a2","a3","l","ctx","on","once","me","off","names","namesLen","j","listenersLen","event","trigger","sender","filtered","promiseQueue","getRespondentId","compositeIdParts","id","ajax","config","async","JSON","stringify","dataType","contentType","cache","success","proxy","always","queue","next","cancellationError","$ajax","findElementByIxpAnchor","anchor","querySelectorAll","el","anchorMatch","els","attrSelector","getAttribute","attr","runScriptlet","ee","token","tokenId","runIntegration","integrationId","isScreenSizeXS","innerWidth","isScreenSizeSM","isScreenSizeMD","isScreenSizeLG","isHiddenByCSS","element","hasClass","encodeURIComponent","getParentComponentData","$el","$parents","parents","parentData","each","$parent","getScrollToOffsetTop","scrollAdjustment","stickyStatuses","sendCommand","stickyStatus","sticksTo","isSticking","scrollTop","height","scrollToCore","$target","resolvePromise","onScrolled","visibility","recalculate","top","preventOffset","inViewport","isInViewport","speed","stop","scrollingEl","scrollingElement","documentElement","animate","duration","easing","scrollTo","anchorOrElement","targetEl","updateUrlHash","markAsConverted","getOffsetTop","resolveCompletionPromise","completionPromise","hash","newTarget","promiseChain","preventDefault","parentComponents","promises","results","resultLen","uploadInteractions","interactions","model","setModel","parseDataField","dataField","indexOf","field","parse","separator","triggerDataEvents","instanceId","saving","df","sd","saved","eventName","validation","current","failedValue","updateDataModel","saveDataCore","response","responseStatus","save","submit","dataToSave","requestType","urlSlug","isBulkSave","fields","fieldId","metadata","method","toUpperCase","respondentId","dom","listenerMap","passiveSupported","addEventListener","eventNames","attachEvent","passive","removeEventListener","detachEvent","isSvgElement","nodeName","getClassName","className","baseVal","addClass","removeClass","elementClassName","isSvg","readyBound","callbackQueue","registerOrRunCallback","DOMReadyCallback","shift","DOMContentLoaded","DOMReady","body","bindReady","toplevel","frameElement","doScroll","doScrollCheck","preventAnimations","visStates","visCssMap","scrollPrefix","css","awareness","inOnce","seen","microthemes","states","shown","hidden","entering","leaving","visPrefix","recalculating","change","awarenessDelay","awarenessSelector","parallax","parallaxSelector","getBoundingClientRect","rect","width","left","bottom","right","viewport","scrollLeft","round","ceil","windowHeight","innerHeight","clientHeight","windowWidth","clientWidth","tolerance","getComputedStyle","getPropertyValue","direction","inView","divisor","heightDivided","edge","appRoot","scrollAwareElements","parallaxElements","getScrollAwareElements","getParallaxElements","regex","getElements","inCalculateVisibility","inCalculateParallax","lastScrollTop","animationEndEvents","getScrollTop","isNaN","pageYOffset","clientTop","calculateVisibility","delta","force","vae","currentState","splice","onAnimationEnd","target","backgroundImageRegex","getNormalizedBackgroundPosition","pos","style","backgroundPosition","backgroundPositionX","backgroundPositionY","getParallaxImageDimensions","pe","backgroundImage","img","Image","calculateParallaxWithImageDimensions","y","calculateParallax","bgPos","charAt","parseFloat","calculate","reset","updateScreenResolution","screenResolution","screen","parallaxRegex","scrollAwareRegex","intervalId","setInterval","vent","clearInterval","recalcTimeout","subscribe","classes","interaction","triggerAttrSelector","runAction","action","targetAndName","lastIndexOf","stopPolling","onActionTrigger","$trigger","eventType","actions","$document","evt","scrollToHash","onHasChanging","onHashChange","hashMatch","nativeAnchorSupport","remove","ensureScrollToElement","anchors","sendBeacon","ActiveXObject","withCredentials","responseType","Blob","navigator","initGlobalEvents","GLOBAL_EVENTS","forEach","globalEvent","handlers","registerHandler","getHandler","initAutoSend","interactionsStorage","that","store","isSending","onChange","getAllInteractions","getNotSentInteractions","_handlers","defaultHandler","handlerObj","wrapHandler","handlerFn","eventDefinition","pushInteraction","modernizr","setCss","mStyle","cssText","is","obj","contains","substr","testProps","prefixed","prop","testDOMProps","elem","item","testPropsAll","ucProp","cssomPrefixes","webforms","Modernizr","attrs","inputElem","list","HTMLDataListElement","bool","inputElemType","defaultView","setAttribute","smile","WebkitAppearance","docElement","offsetHeight","removeChild","checkValidity","inputs","featureName","hasOwnProp","enableClasses","mod","modElem","prefixes","omPrefixes","domPrefixes","tests","injectElementWithStyles","rule","nodes","testnames","ret","docOverflow","div","fakeBody","innerHTML","background","overflow","parentNode","testMediaQuery","mq","matchMedia","msMatchMedia","matches","currentStyle","isEventSupported","TAGNAMES","isSupported","removeAttribute","select","abort","_hasOwnProperty","property","bound","F","getContext","DocumentTouch","offsetTop","backgroundColor","offsetLeft","feature","addTest","_version","_prefixes","_domPrefixes","_cssomPrefixes","hasEvent","testProp","testAllProps","testStyles","supports","pointerEvents","isMobileDevice","a","userAgent","vendor","opera","MSStream","merge","extensibility","registry","instancesByType","addInstanceId","getInstance","registerExtensibility","command","LBUI","plugins","ComponentBase","passthrough","reflow","componentRoot","behaviorPrefix","behaviorScopePrefix","behaviorScopeOwner","countTowardsBounced","commands","initializing","initialized","getBuilder","behaviors","builder","PendingContainerChildId","scaffold","elementName","componentsManager","getScaffoldElement","Component","component","getScaffolding","scaffolding","content","customClass","htmlAttributes","scaffoldContainer","scaffoldLink","link","text","isHtml","scaffoldText","getDefaultTheme","groupName","fallbackCssClass","getDefaultThemes","groups","defaultClasses","groupCount","byClass","themes","theme","themeGroup","g","getBehaviorToken","behaviorName","addBehaviors","byAttribute","owner","componentType","eventNamespace","paramMap","parameters","param","val","__initialize","listenToCommands","studioInitialize","paramMapOverrides","getParamMapOverrides","__onDocumentReady","initlizedPromise","triggerExtensibility","any","initialize","clickContextHandler","clickContext","onclick","findCurrentTargetMatch","listToSearch","currentTarget","onBehavior","selector","delegate","getBehaviorSelector","clickContexts","handler","find","isDefaultPrevented","getCommandMap","cmd","onListenToCommand","__getCommandMap","onGetCommandMap","onDocumentReady","destroy","onDestroy","saveData","submitData","behavior","behaviorSelector","behaviorScopeSelector","getBehaviorSelectorWithoutScope","isDirectDescendant","descendantSelector","$parentEl","closest","filterChildren","filter","recalculateVisibility","_visibilityRecalcTimer","sendCommandAsync","_getDataEnvelope","getExtensibilityEnvelope","triggered","onTriggerCustomExtensibility","_getStyleRuleCss","declarations","rules","declaration","addOrUpdateStyleBlock","cssRule","$styleBlock","$block","replaceAll","appendTo","_interaction","ts","isCountTowardsBouncedAllowed","ensureStudioIsLoaded","studioApp","saveParameter","triggerSaveEvent","onCompleted","deleteParameter","triggerDeleteEvent","addChildren","triggerAddChildrenEvent","removeChildren","triggerRemoveChildrenEvent","updateChildrenContent","triggerUpdateChildrenEvent","paramName","onStudioRegistationComplete","newApp","onStudioStateChanged","onListenToStudioEvents","scaffoldingKey","onGetScaffolding","getWrapping","wrapping","onGetWrapping","getCssClassesToPreserve","onGetCssClassesToPreserve","InputComponentBase","formShadowSelector","formSelector","formFieldSelector","validationPrefix","required","validated","inputDataField","inputShadowField","inputType","submitUrl","handled","inputChanged","inputSaved","inputStateChanged","formSubmitting","valid","invalid","incomplete","pending","unknown","focus","cssClassesToPreserve","requiredFn","toggleClass","validate","dataFieldFn","setInStudioDataFieldValidation","dataSet","dataSetFn","onInputSaved","onListenToInputEvents","$form","formInstanceId","dataContext","_updateRuntimeDataModel","dependentDataContext","hasServerPattern","_registerDataField","_onDependentDataSaved","envelope","inputContext","dataId","dataName","defaultValue","hasDefaultValue","onDataSaved","_onDataSaved","$shadowInput","setValue","onDependentDataSaved","hasValue","onRegisterDataField","nameAttr","inputAttrName","inputAttrId","$shadowForm","first","fieldDataAttr","fieldSelector","commandMap","_onCommandFocus","_onCommandValue","_onCommandStatus","setFocus","inIframe","inFullPageSlider","elements","autofocus","onSetValue","validateValue","setValuePromise","onInputChanged","submitting","isValueEmpty","isSaveRequired","validationState","onValidate","setInputState","onValidateValue","maxLength","isIncomplete","_applyInputValidationStateCss","hasServerPatter","saveOptions","requiresSave","saveMethod","requiresDataSet","isStudioValid","cancelable","form","saveMode","getMetadata","triggerInputChanged","deactivateEvents","pointerevents","onDeactivateEvent","stopPropagation","stopImmediatePropagation","blur","opts","register","baseType","_lbapi_nativeXhr"],"mappings":"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","file":"ixp-runtime.bundle.min.js","sourcesContent":["// ion platform (legacy) API (intended for use on ion pages)\r\n// Copyright (c) 2009-2017 ion interactive, inc. All rights reserved.\r\n\r\nfunction _lbapi_XhrFactory() { return new XMLHttpRequest; }\r\nvar _lbapi_nativeXhr = new _lbapi_XhrFactory();\r\n\r\nvar _lbapi_lb3id = _lbapi_lb3id || ''; // lb3id automatically assigned server-side\r\nvar _lbapi_asynchronous = true; // asynchronous requests?\r\n\r\nvar _lbapi_3id_param = 'lb3id';\r\nvar _lbapi_rnd_param = 'rnd';\r\nvar _lbapi_tag_param = 'tag';\r\n\r\nfunction _lbapi_urlencode(stg) {\r\n var retval = ''\r\n if (stg != null && stg != '') {\r\n retval = escape(stg);\r\n retval = retval.replace('+', '%2B');\r\n retval = retval.replace('/', '%2F');\r\n }\r\n return retval;\r\n}\r\n\r\nfunction _lbapi_idstg() {\r\n return '?' + _lbapi_3id_param + '=' + _lbapi_lb3id + '&' + _lbapi_rnd_param + '=' + parseInt(31777 * Math.random());\r\n}\r\n\r\nfunction liveballConvert(func) {\r\n if (_lbapi_asynchronous && typeof func !== 'function' &&\r\n window.ixp && window.ixp.runtime && typeof window.ixp.runtime.convert === 'function') {\r\n window.ixp.runtime.convert();\r\n return;\r\n }\r\n\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', '/Outside/Convert.ashx' + _lbapi_idstg(), _lbapi_asynchronous);\r\n if (typeof func === 'function') {\r\n xhr.onreadystatechange = function () {\r\n if (this.readyState == XMLHttpRequest.DONE) {\r\n func();\r\n }\r\n }\r\n }\r\n xhr.send(null);\r\n}\r\n\r\nfunction liveballTag(tag, func) {\r\n if (tag == null || tag === '') return;\r\n\r\n if (_lbapi_asynchronous && typeof func !== 'function' &&\r\n window.ixp && window.ixp.runtime && typeof window.ixp.runtime.tag === 'function') {\r\n window.ixp.runtime.tag(tag);\r\n return;\r\n }\r\n\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', '/Outside/Tag.ashx' + _lbapi_idstg() + '&' + _lbapi_tag_param + '=' + _lbapi_urlencode(tag), _lbapi_asynchronous);\r\n if (typeof func === 'function') {\r\n xhr.onreadystatechange = function () {\r\n if (this.readyState == XMLHttpRequest.DONE) {\r\n func();\r\n }\r\n }\r\n }\r\n xhr.send(null);\r\n}\r\n\r\nfunction liveballData(name, value, func) {\r\n if (name == null || name === '' || value == null || value === '') return;\r\n\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', '/Outside/Data.ashx' + _lbapi_idstg() + '&' + name + '=' + _lbapi_urlencode(value), _lbapi_asynchronous);\r\n if (typeof func === 'function') {\r\n xhr.onreadystatechange = function () {\r\n if (this.readyState == XMLHttpRequest.DONE) {\r\n func();\r\n }\r\n }\r\n }\r\n xhr.send(null);\r\n}\r\n\r\nfunction liveballDataPost(name, value, func) {\r\n if (name == null || name === '' || value == null || value === '') return;\r\n\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('POST', '/Outside/Data.ashx', _lbapi_asynchronous);\r\n if (typeof func === 'function') {\r\n xhr.onreadystatechange = function () {\r\n if (this.readyState == XMLHttpRequest.DONE) {\r\n func();\r\n }\r\n };\r\n }\r\n\r\n var params = _lbapi_idstg() + '&' + name + '=' + _lbapi_urlencode(value);\r\n xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\r\n xhr.setRequestHeader('Content-length', params.length);\r\n xhr.setRequestHeader('Connection', 'close');\r\n xhr.send(params);\r\n}\r\n\r\nfunction liveballScriptlet(scriptletId, responseCType, paramList) {\r\n if (scriptletId == null) return;\r\n\r\n var xhr = new XMLHttpRequest();\r\n xhr.open('GET', '/Outside/Scriptlet.ashx' + _lbapi_idstg() + '&scrid=' + scriptletId + '&rct=' + responseCType + '&rdata=' + _lbapi_urlencode(paramList), false);\r\n xhr.send(null);\r\n if (xhr.readyState == 4 && xhr.status == 200) {\r\n return xhr.responseText;\r\n }\r\n else {\r\n return ('{RequestState:' + xhr.readystate + ',HttpStatus:' + xhr.status + '}');\r\n }\r\n}","(function(window, document, undefined) {\n /**\n * @license\n * Lodash (Custom Build) \n * Build: `lodash include=\"assign,bind,create,debounce,defaults,defer,delay,keys,partial,throttle,extend,identity,isArguments,isArray,isFunction,isObject,isString,noop,now\" iife=\"var _ = (function() { %output% return lodash; }.call(this));\" --output lodash-1571398373585.build.js --development`\n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n var _ = (function() {\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Error message constants. */\n var FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /*--------------------------------------------------------------------------*/\n\n /** Used for built-in method references. */\n var funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = root['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now;\n\n /* Built-in method references that are verified to be native. */\n var WeakMap = getNative(root, 'WeakMap');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash() {\n // No operation performed.\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.bind = bind;\n lodash.constant = constant;\n lodash.create = create;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.partial = partial;\n lodash.throttle = throttle;\n\n // Add aliases.\n lodash.extend = assignIn;\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.eq = eq;\n lodash.identity = identity;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayLike = isArrayLike;\n lodash.isBuffer = isBuffer;\n lodash.isFunction = isFunction;\n lodash.isLength = isLength;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.stubFalse = stubFalse;\n lodash.noop = noop;\n lodash.now = now;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toNumber = toNumber;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'partial'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash 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 // Use `_.noConflict` to remove Lodash from the global object.\n root._ = lodash;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return lodash;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = lodash)._ = lodash;\n // Export for CommonJS support.\n freeExports._ = lodash;\n }\n else {\n // Export to the global object.\n root._ = lodash;\n }\n return lodash; }.call(this));\n\n /*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE\n * @version 2.0.1\n */\n (function() {\n \"use strict\";\n\n function $$utils$$objectOrFunction(x) {\n return typeof x === 'function' || (typeof x === 'object' && x !== null);\n }\n\n function $$utils$$isFunction(x) {\n return typeof x === 'function';\n }\n\n function $$utils$$isMaybeThenable(x) {\n return typeof x === 'object' && x !== null;\n }\n\n var $$utils$$_isArray;\n\n if (!Array.isArray) {\n $$utils$$_isArray = function(x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n } else {\n $$utils$$_isArray = Array.isArray;\n }\n\n var $$utils$$isArray = $$utils$$_isArray;\n var $$utils$$now = Date.now || function() { return new Date().getTime(); };\n function $$utils$$F() { }\n\n var $$utils$$o_create = (Object.create || function(o) {\n if (arguments.length > 1) {\n throw new Error('Second argument not supported');\n }\n if (typeof o !== 'object') {\n throw new TypeError('Argument must be an object');\n }\n $$utils$$F.prototype = o;\n return new $$utils$$F();\n });\n\n var $$asap$$len = 0;\n\n var $$asap$$default = function asap(callback, arg) {\n $$asap$$queue[$$asap$$len] = callback;\n $$asap$$queue[$$asap$$len + 1] = arg;\n $$asap$$len += 2;\n if ($$asap$$len === 2) {\n // If len is 1, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n $$asap$$scheduleFlush();\n }\n };\n\n var $$asap$$browserGlobal = (typeof window !== 'undefined') ? window : {};\n var $$asap$$BrowserMutationObserver = $$asap$$browserGlobal.MutationObserver || $$asap$$browserGlobal.WebKitMutationObserver;\n\n // test for web worker but not in IE10\n var $$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' &&\n typeof importScripts !== 'undefined' &&\n typeof MessageChannel !== 'undefined';\n\n // node\n function $$asap$$useNextTick() {\n return function() {\n process.nextTick($$asap$$flush);\n };\n }\n\n function $$asap$$useMutationObserver() {\n var iterations = 0;\n var observer = new $$asap$$BrowserMutationObserver($$asap$$flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function() {\n node.data = (iterations = ++iterations % 2);\n };\n }\n\n // web worker\n function $$asap$$useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = $$asap$$flush;\n return function() {\n channel.port2.postMessage(0);\n };\n }\n\n function $$asap$$useSetTimeout() {\n return function() {\n setTimeout($$asap$$flush, 1);\n };\n }\n\n var $$asap$$queue = new Array(1000);\n\n function $$asap$$flush() {\n for (var i = 0; i < $$asap$$len; i += 2) {\n var callback = $$asap$$queue[i];\n var arg = $$asap$$queue[i + 1];\n\n callback(arg);\n\n $$asap$$queue[i] = undefined;\n $$asap$$queue[i + 1] = undefined;\n }\n\n $$asap$$len = 0;\n }\n\n var $$asap$$scheduleFlush;\n\n // Decide what async method to use to triggering processing of queued callbacks:\n if (typeof process !== 'undefined' && {}.toString.call(process) === '[object process]') {\n $$asap$$scheduleFlush = $$asap$$useNextTick();\n } else if ($$asap$$BrowserMutationObserver) {\n $$asap$$scheduleFlush = $$asap$$useMutationObserver();\n } else if ($$asap$$isWorker) {\n $$asap$$scheduleFlush = $$asap$$useMessageChannel();\n } else {\n $$asap$$scheduleFlush = $$asap$$useSetTimeout();\n }\n\n function $$$internal$$noop() { }\n var $$$internal$$PENDING = void 0;\n var $$$internal$$FULFILLED = 1;\n var $$$internal$$REJECTED = 2;\n var $$$internal$$GET_THEN_ERROR = new $$$internal$$ErrorObject();\n\n function $$$internal$$selfFullfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n }\n\n function $$$internal$$cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n }\n\n function $$$internal$$getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n $$$internal$$GET_THEN_ERROR.error = error;\n return $$$internal$$GET_THEN_ERROR;\n }\n }\n\n function $$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n }\n\n function $$$internal$$handleForeignThenable(promise, thenable, then) {\n $$asap$$default(function(promise) {\n var sealed = false;\n var error = $$$internal$$tryThen(then, thenable, function(value) {\n if (sealed) { return; }\n sealed = true;\n if (thenable !== value) {\n $$$internal$$resolve(promise, value);\n } else {\n $$$internal$$fulfill(promise, value);\n }\n }, function(reason) {\n if (sealed) { return; }\n sealed = true;\n\n $$$internal$$reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n $$$internal$$reject(promise, error);\n }\n }, promise);\n }\n\n function $$$internal$$handleOwnThenable(promise, thenable) {\n if (thenable._state === $$$internal$$FULFILLED) {\n $$$internal$$fulfill(promise, thenable._result);\n } else if (promise._state === $$$internal$$REJECTED) {\n $$$internal$$reject(promise, thenable._result);\n } else {\n $$$internal$$subscribe(thenable, undefined, function(value) {\n $$$internal$$resolve(promise, value);\n }, function(reason) {\n $$$internal$$reject(promise, reason);\n });\n }\n }\n\n function $$$internal$$handleMaybeThenable(promise, maybeThenable) {\n if (maybeThenable.constructor === promise.constructor) {\n $$$internal$$handleOwnThenable(promise, maybeThenable);\n } else {\n var then = $$$internal$$getThen(maybeThenable);\n\n if (then === $$$internal$$GET_THEN_ERROR) {\n $$$internal$$reject(promise, $$$internal$$GET_THEN_ERROR.error);\n } else if (then === undefined) {\n $$$internal$$fulfill(promise, maybeThenable);\n } else if ($$utils$$isFunction(then)) {\n $$$internal$$handleForeignThenable(promise, maybeThenable, then);\n } else {\n $$$internal$$fulfill(promise, maybeThenable);\n }\n }\n }\n\n function $$$internal$$resolve(promise, value) {\n if (promise === value) {\n $$$internal$$reject(promise, $$$internal$$selfFullfillment());\n } else if ($$utils$$objectOrFunction(value)) {\n $$$internal$$handleMaybeThenable(promise, value);\n } else {\n $$$internal$$fulfill(promise, value);\n }\n }\n\n function $$$internal$$publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n $$$internal$$publish(promise);\n }\n\n function $$$internal$$fulfill(promise, value) {\n if (promise._state !== $$$internal$$PENDING) { return; }\n\n promise._result = value;\n promise._state = $$$internal$$FULFILLED;\n\n if (promise._subscribers.length === 0) {\n } else {\n $$asap$$default($$$internal$$publish, promise);\n }\n }\n\n function $$$internal$$reject(promise, reason) {\n if (promise._state !== $$$internal$$PENDING) { return; }\n promise._state = $$$internal$$REJECTED;\n promise._result = reason;\n\n $$asap$$default($$$internal$$publishRejection, promise);\n }\n\n function $$$internal$$subscribe(parent, child, onFulfillment, onRejection) {\n var subscribers = parent._subscribers;\n var length = subscribers.length;\n\n parent._onerror = null;\n\n subscribers[length] = child;\n subscribers[length + $$$internal$$FULFILLED] = onFulfillment;\n subscribers[length + $$$internal$$REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n $$asap$$default($$$internal$$publish, parent);\n }\n }\n\n function $$$internal$$publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) { return; }\n\n var child, callback, detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n $$$internal$$invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n }\n\n function $$$internal$$ErrorObject() {\n this.error = null;\n }\n\n var $$$internal$$TRY_CATCH_ERROR = new $$$internal$$ErrorObject();\n\n function $$$internal$$tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n $$$internal$$TRY_CATCH_ERROR.error = e;\n return $$$internal$$TRY_CATCH_ERROR;\n }\n }\n\n function $$$internal$$invokeCallback(settled, promise, callback, detail) {\n var hasCallback = $$utils$$isFunction(callback),\n value, error, succeeded, failed;\n\n if (hasCallback) {\n value = $$$internal$$tryCatch(callback, detail);\n\n if (value === $$$internal$$TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n $$$internal$$reject(promise, $$$internal$$cannotReturnOwn());\n return;\n }\n\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== $$$internal$$PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n $$$internal$$resolve(promise, value);\n } else if (failed) {\n $$$internal$$reject(promise, error);\n } else if (settled === $$$internal$$FULFILLED) {\n $$$internal$$fulfill(promise, value);\n } else if (settled === $$$internal$$REJECTED) {\n $$$internal$$reject(promise, value);\n }\n }\n\n function $$$internal$$initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n $$$internal$$resolve(promise, value);\n }, function rejectPromise(reason) {\n $$$internal$$reject(promise, reason);\n });\n } catch (e) {\n $$$internal$$reject(promise, e);\n }\n }\n\n function $$$enumerator$$makeSettledResult(state, position, value) {\n if (state === $$$internal$$FULFILLED) {\n return {\n state: 'fulfilled',\n value: value\n };\n } else {\n return {\n state: 'rejected',\n reason: value\n };\n }\n }\n\n function $$$enumerator$$Enumerator(Constructor, input, abortOnReject, label) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor($$$internal$$noop, label);\n this._abortOnReject = abortOnReject;\n\n if (this._validateInput(input)) {\n this._input = input;\n this.length = input.length;\n this._remaining = input.length;\n\n this._init();\n\n if (this.length === 0) {\n $$$internal$$fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate();\n if (this._remaining === 0) {\n $$$internal$$fulfill(this.promise, this._result);\n }\n }\n } else {\n $$$internal$$reject(this.promise, this._validationError());\n }\n }\n\n $$$enumerator$$Enumerator.prototype._validateInput = function(input) {\n return $$utils$$isArray(input);\n };\n\n $$$enumerator$$Enumerator.prototype._validationError = function() {\n return new Error('Array Methods must be provided an Array');\n };\n\n $$$enumerator$$Enumerator.prototype._init = function() {\n this._result = new Array(this.length);\n };\n\n var $$$enumerator$$default = $$$enumerator$$Enumerator;\n\n $$$enumerator$$Enumerator.prototype._enumerate = function() {\n var length = this.length;\n var promise = this.promise;\n var input = this._input;\n\n for (var i = 0; promise._state === $$$internal$$PENDING && i < length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n $$$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) {\n var c = this._instanceConstructor;\n if ($$utils$$isMaybeThenable(entry)) {\n if (entry.constructor === c && entry._state !== $$$internal$$PENDING) {\n entry._onerror = null;\n this._settledAt(entry._state, i, entry._result);\n } else {\n this._willSettleAt(c.resolve(entry), i);\n }\n } else {\n this._remaining--;\n this._result[i] = this._makeResult($$$internal$$FULFILLED, i, entry);\n }\n };\n\n $$$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) {\n var promise = this.promise;\n\n if (promise._state === $$$internal$$PENDING) {\n this._remaining--;\n\n if (this._abortOnReject && state === $$$internal$$REJECTED) {\n $$$internal$$reject(promise, value);\n } else {\n this._result[i] = this._makeResult(state, i, value);\n }\n }\n\n if (this._remaining === 0) {\n $$$internal$$fulfill(promise, this._result);\n }\n };\n\n $$$enumerator$$Enumerator.prototype._makeResult = function(state, i, value) {\n return value;\n };\n\n $$$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) {\n var enumerator = this;\n\n $$$internal$$subscribe(promise, undefined, function(value) {\n enumerator._settledAt($$$internal$$FULFILLED, i, value);\n }, function(reason) {\n enumerator._settledAt($$$internal$$REJECTED, i, reason);\n });\n };\n\n var $$promise$all$$default = function all(entries, label) {\n return new $$$enumerator$$default(this, entries, true /* abort on reject */, label).promise;\n };\n\n var $$promise$race$$default = function race(entries, label) {\n /*jshint validthis:true */\n var Constructor = this;\n\n var promise = new Constructor($$$internal$$noop, label);\n\n if (!$$utils$$isArray(entries)) {\n $$$internal$$reject(promise, new TypeError('You must pass an array to race.'));\n return promise;\n }\n\n var length = entries.length;\n\n function onFulfillment(value) {\n $$$internal$$resolve(promise, value);\n }\n\n function onRejection(reason) {\n $$$internal$$reject(promise, reason);\n }\n\n for (var i = 0; promise._state === $$$internal$$PENDING && i < length; i++) {\n $$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection);\n }\n\n return promise;\n };\n\n var $$promise$resolve$$default = function resolve(object, label) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor($$$internal$$noop, label);\n $$$internal$$resolve(promise, object);\n return promise;\n };\n\n var $$promise$reject$$default = function reject(reason, label) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor($$$internal$$noop, label);\n $$$internal$$reject(promise, reason);\n return promise;\n };\n\n var $$es6$promise$promise$$counter = 0;\n\n function $$es6$promise$promise$$needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n }\n\n function $$es6$promise$promise$$needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n }\n\n var $$es6$promise$promise$$default = $$es6$promise$promise$$Promise;\n\n /**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise’s eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n var promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n var xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n */\n function $$es6$promise$promise$$Promise(resolver) {\n this._id = $$es6$promise$promise$$counter++;\n this._state = undefined;\n this._result = undefined;\n this._subscribers = [];\n\n if ($$$internal$$noop !== resolver) {\n if (!$$utils$$isFunction(resolver)) {\n $$es6$promise$promise$$needsResolver();\n }\n\n if (!(this instanceof $$es6$promise$promise$$Promise)) {\n $$es6$promise$promise$$needsNew();\n }\n\n $$$internal$$initializePromise(this, resolver);\n }\n }\n\n $$es6$promise$promise$$Promise.all = $$promise$all$$default;\n $$es6$promise$promise$$Promise.race = $$promise$race$$default;\n $$es6$promise$promise$$Promise.resolve = $$promise$resolve$$default;\n $$es6$promise$promise$$Promise.reject = $$promise$reject$$default;\n\n $$es6$promise$promise$$Promise.prototype = {\n constructor: $$es6$promise$promise$$Promise,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n\n Chaining\n --------\n\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n\n Assimilation\n ------------\n\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n\n If the assimliated promise rejects, then the downstream promise will also reject.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n\n Simple Example\n --------------\n\n Synchronous Example\n\n ```javascript\n var result;\n\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n\n Advanced Example\n --------------\n\n Synchronous Example\n\n ```javascript\n var author, books;\n\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n\n function foundBooks(books) {\n\n }\n\n function failure(reason) {\n\n }\n\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: function(onFulfillment, onRejection) {\n var parent = this;\n var state = parent._state;\n\n if (state === $$$internal$$FULFILLED && !onFulfillment || state === $$$internal$$REJECTED && !onRejection) {\n return this;\n }\n\n var child = new this.constructor($$$internal$$noop);\n var result = parent._result;\n\n if (state) {\n var callback = arguments[state - 1];\n $$asap$$default(function() {\n $$$internal$$invokeCallback(state, child, callback, result);\n });\n } else {\n $$$internal$$subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n },\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function(onRejection) {\n return this.then(null, onRejection);\n }\n };\n\n var $$es6$promise$polyfill$$default = function polyfill() {\n var local;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof window !== 'undefined' && window.document) {\n local = window;\n } else {\n local = self;\n }\n\n var es6PromiseSupport =\n \"Promise\" in local &&\n // Some of these methods are missing from\n // Firefox/Chrome experimental implementations\n \"resolve\" in local.Promise &&\n \"reject\" in local.Promise &&\n \"all\" in local.Promise &&\n \"race\" in local.Promise &&\n // Older version of the spec had a resolver object\n // as the arg rather than a function\n (function() {\n var resolve;\n new local.Promise(function(r) { resolve = r; });\n return $$utils$$isFunction(resolve);\n }());\n\n if (!es6PromiseSupport) {\n local.Promise = $$es6$promise$promise$$default;\n }\n };\n\n var es6$promise$umd$$ES6Promise = {\n 'Promise': $$es6$promise$promise$$default,\n 'polyfill': $$es6$promise$polyfill$$default\n };\n\n /* global define:true module:true window: true */\n if (typeof define === 'function' && define['amd']) {\n define(function() { return es6$promise$umd$$ES6Promise; });\n } else if (typeof module !== 'undefined' && module['exports']) {\n module['exports'] = es6$promise$umd$$ES6Promise;\n } else if (typeof this !== 'undefined') {\n this['ES6Promise'] = es6$promise$umd$$ES6Promise;\n }\n }).call(window);\n\n window.ES6Promise.polyfill();\n\n /**\n * Console polyfill\n */\n var consoleOverride = (function() {\n var overrideFn = function(con) {\n con || (con = {});\n con.assert = con.clear = con.count = con.debug = con.dir = con.dirxml = con.error = con.exception =\n con.group = con.groupCollapsed = con.groupEnd = con.info = con.log = con.markTimeline = con.profile =\n con.profileEnd = con.table = con.time = con.timeEnd = con.timeStamp = con.trace = con.warn = function() { };\n\n return con;\n };\n if (!window.console) {\n window.console = overrideFn();\n }\n return overrideFn;\n }).call(window);\n\n (function() {\n \"use strict\";\n\n var inStudio = !!(window.LIVEBALL && window.LIVEBALL.inStudio);\n if (inStudio) {\n var inStudioLabs;\n if (window.LIVEBALL.App) {\n inStudioLabs = window.LIVEBALL.App.features.labs;\n } else {\n inStudioLabs = window.LIVEBALL.features && window.LIVEBALL.features.labs;\n }\n }\n\n window.ixp = window.ixp || {};\n var runtime = window.ixp.runtime = window.ixp.runtime || {};\n runtime.fn = runtime.fn || {};\n runtime.inStudio = inStudio;\n runtime.inStudioLabs = inStudioLabs;\n\n\n runtime.interactionsConfig = {\n BULK_SIZE: 50,\n AJAX_INTERVAL: 2 * 60 * 60\n };\n\n runtime.interactionManager = {};\n\n // Queue should be scoped if used elsewhere\n var readyQueue = [];\n var isReady = false;\n runtime.ready = function(fn, context) {\n if (typeof fn !== 'function') {\n throw new Error('runtime.ready requires the callback to be a function');\n }\n\n var func = !context ? fn : function() { fn.call(context); };\n\n if (isReady) {\n if (_.isFunction(window.requestAnimationFrame)) {\n window.requestAnimationFrame(func);\n } else {\n setTimeout(func, 0);\n }\n return;\n }\n\n readyQueue.push(func);\n };\n\n var constants = runtime.constants = runtime.constants || {};\n runtime.constants.screenSizes = runtime.constants.screenSizes || {};\n runtime.constants.screenSizes = {\n xs: { maxWidth: 767 }, \n sm: { minWidth: 768, maxWidth: 991 },\n md: { minWidth: 992, maxWidth: 1199 },\n lg: { minWidth: 1200 }\n };\n\n runtime.flags = runtime.flags || {};\n\n var parseQueryString = function() {\n var qs = {};\n var match,\n pl = /\\+/g, // Regex for replacing addition symbol with a space\n search = /([^&=]+)=?([^&]*)/g,\n decode = function(s) {\n try {\n return decodeURIComponent(s.replace(pl, ' '));\n }\n catch (ex) {\n console.error(ex);\n return null;\n }\n },\n query = window.location.search.substring(1);\n\n while (match = search.exec(query)) {\n qs[decode(match[1])] = decode(match[2]);\n }\n return qs;\n };\n\n runtime.queryString = parseQueryString();\n\n var isHttps = (window.location.protocol === 'https:');\n\n runtime.flags.https = isHttps;\n\n if (runtime.queryString['debug'] === 'true' ||\n runtime.queryString['_ion_debug'] === 'true') {\n runtime.flags.debug = true;\n }\n\n var inDebug = !!runtime.flags.debug;\n\n runtime.console = !inDebug ? consoleOverride() : window.console;\n\n runtime.log = function() {\n if (inDebug) {\n if (typeof runtime.console.log === 'function') {\n runtime.console.log.apply(runtime.console, arguments);\n } else {\n runtime.console.log(Array.prototype.slice.call(arguments));\n }\n }\n };\n\n if (inStudio) {\n runtime.studio = {\n app: window.LIVEBALL.App,\n labs: !!inStudioLabs\n };\n }\n\n // runtime URLs\n runtime.paths = runtime.paths || {};\n (function (paths) {\n var cdnUrls = {\n https: 'https://ionfiles.scribblecdn.net/',\n http: 'http://ionfiles.scribblecdn.net/'\n };\n var trimFrontSlash = function(str) {\n return str.replace(/^\\//g, '');\n };\n var trimEndSlash = function(str) {\n return str.replace(/\\/$/g, '');\n };\n var trimSlashes = function(str) {\n return trimFrontSlash(trimEndSlash(str));\n };\n paths.join = function() {\n var args = Array.prototype.slice.call(arguments, 0);\n var path = [];\n for (var i = 0, len = args.length; i < len; i++) {\n var part = args[i];\n if (typeof part !== 'string') {\n throw new Error('Arguments to path.join must be strings');\n }\n if (part === '/') {\n continue;\n }\n if (i === 0) {\n part = trimEndSlash(part);\n } else {\n part = trimSlashes(part);\n }\n path = path.concat(part.split('/'));\n }\n return path.join('/');\n };\n paths.getCdnPath = function() {\n var cdnPath = isHttps ? cdnUrls.https : cdnUrls.http;\n if (!arguments.length) {\n return cdnPath;\n }\n var args = Array.prototype.slice.call(arguments, 0);\n args = [cdnPath].concat(args);\n\n var newPath = paths.join.apply(this, args);\n if (!runtime.flags.debug) {\n return newPath;\n }\n return newPath.replace('.min', '');\n };\n }).call(this, runtime.paths);\n\n // runtime.dependencies\n runtime.dependencies = runtime.dependencies || {};\n var components = runtime.components = runtime.components || {};\n components.dependencies = components.dependencies || {};\n components.dependencies._ = _;\n\n (function(dependencies, componentDeps) {\n var modules = {};\n var loading = {};\n if (runtime.flags.debug) {\n dependencies._modules = modules;\n dependencies._loading = loading;\n }\n\n var compareVersions = function(v1, v2) {\n var v1Split = v1.split('.');\n var v2Split = v2.split('.');\n\n while (v1Split.length < v2Split.length) {\n v1Split.push('0');\n }\n while (v2Split.length < v1Split.length) {\n v2Split.push('0');\n }\n\n for (var i = 0, len = v1Split.length; i < len; i++) {\n var num1 = Number(v1Split[i]);\n var num2 = Number(v2Split[i]);\n\n if (num1 === num2) {\n continue;\n } else if (num1 > num2) {\n return 1;\n } else {\n return -1;\n }\n }\n\n return 0;\n };\n\n var getSortedInstancesInfo = function(instances, getVersion) {\n if (instances instanceof Array) {\n var infos = [];\n for (var i = 0, len = instances.length; i < len; i++) {\n var instance = instances[i];\n infos.push({\n version: getVersion(instance),\n module: instance\n });\n }\n\n if (infos.length > 1) {\n infos.sort(function(i1, i2) {\n return -(compareVersions(i1.version, i2.version));\n });\n }\n\n return infos;\n }\n\n return [];\n };\n\n var loadScript = function(url, options) {\n var script = document.createElement('script');\n var head = document.head || document.getElementsByTagName('head')[0];\n\n var loaded = false;\n var load = options.load;\n options.load = function() {\n if (loaded) {\n return;\n }\n loaded = true;\n\n load.apply(this, arguments);\n };\n\n // This is for IE8/9? support\n script.onreadystatechange = function() {\n // IE8\n if (script.readyState === 'loaded' || script.readyState === 'complete') {\n options.load();\n script.onreadystatechange = null;\n }\n };\n\n script.onload = options.load;\n script.onerror = options.error;\n\n script.src = url;\n head.appendChild(script);\n };\n\n var moduleLocator = function(module, defineOpts, requireOpts) {\n var instances = module.instances;\n\n // Find all available instances if we don't have any\n if (!instances.length && typeof defineOpts.findInstances === 'function') {\n // getInstancesInfo returns [{ version: '1.0', module: }] sorted by descending version\n instances = module.instances = getSortedInstancesInfo(defineOpts.findInstances(), defineOpts.getInstanceVersion);\n }\n\n var minVer = requireOpts.minVer || requireOpts.version;\n var maxVer = requireOpts.maxVer || requireOpts.upToVersion;\n var checkVersion = !!(minVer || maxVer);\n\n // If no version check and we have only 1 instance - return it\n if (!checkVersion && instances.length === 1) {\n return instances[0].module;\n }\n\n if (instances.length) {\n // If no version check return the latest version (descendent sorted so 0 is latest)\n if (!checkVersion) {\n return instances[0].module;\n }\n\n var instance;\n for (var i = 0, len = instances.length; i < len; i++) {\n instance = instances[i];\n if ((!minVer || compareVersions(instance.version, minVer) >= 0) &&\n (!maxVer || compareVersions(instance.version, maxVer) < 0)) {\n return instance.module;\n }\n }\n }\n\n return null;\n };\n\n var moduleLoader = function(name, defineOpts, requireOpts) {\n if (typeof requireOpts === 'function') {\n var doneFn = requireOpts;\n requireOpts = {\n done: doneFn\n };\n } else {\n requireOpts || (requireOpts = {});\n }\n\n var url;\n\n var module = modules[name];\n if (requireOpts.sync === true) {\n return moduleLocator(module, defineOpts, requireOpts);\n }\n\n var promise = new Promise(function(resolve, reject) {\n var instances = module.instances;\n var found = moduleLocator(module, defineOpts, requireOpts);\n if (found) {\n resolve(found);\n return;\n }\n\n // Load module\n url = requireOpts.url || defineOpts.url;\n if (!url) {\n reject(new Error('No module instances found'));\n return;\n }\n\n // Make sure we aren't already trying to load the same module\n if (loading[url]) {\n if (runtime.flags.debug) {\n console.log('queuing module url=' + url, requireOpts);\n }\n\n loading[url].then(resolve)['catch'](reject);\n return;\n }\n\n if (runtime.flags.debug) {\n console.log('loading module url=' + url, requireOpts);\n }\n\n loadScript(url, {\n load: function() {\n delete loading[url];\n\n try {\n var instance = defineOpts.getInstanceExport();\n instances.push({\n version: defineOpts.getInstanceVersion(instance),\n module: instance\n });\n\n if (instances.length > 1) {\n instances.sort(function(i1, i2) {\n return -(compareVersions(i1.version, i2.version));\n });\n }\n\n resolve(instance);\n }\n catch (ex) {\n reject(ex);\n }\n },\n\n error: function(err) {\n delete loading[url];\n\n err = new Error('failed to load script: url=' + url);\n reject(err);\n }\n });\n });\n\n // If we have a url and aren't already loading, then add our promise\n if (url && !loading[url]) {\n loading[url] = promise;\n }\n\n if (typeof requireOpts.done === 'function') {\n promise.then(function(instance) {\n requireOpts.done(instance);\n });\n }\n\n if (typeof requireOpts.fail === 'function') {\n promise['catch'](function(err) {\n requireOpts.fail(err);\n });\n }\n\n return promise;\n };\n\n /**\n * Defines a module\n * @param {string} name\n * @param {object} options\n */\n dependencies.define = function(name, options) {\n if (!name || typeof name !== 'string') {\n throw new Error('(string) module name is required');\n }\n\n options || (options = {});\n if (typeof options.getInstanceExport !== 'function' ||\n typeof options.getInstanceVersion !== 'function') {\n throw new Error('options must contain getInstanceExport and getInstanceVersion functions');\n }\n\n name = name.toLowerCase();\n\n if (modules[name]) {\n throw new Error('module ' + name + ' has already been defined');\n }\n\n modules[name] = {\n loader: function(requireOpts) {\n return moduleLoader(name, options, requireOpts);\n },\n instances: []\n };\n };\n\n /**\n * @callback requireDone\n * @param {object} [module] - desired module if successful\n */\n\n /**\n * @callback requireFail\n * @param {object} [error] - error information if unsuccessful\n */\n\n /**\n * @typedef requireOptions\n * @type {object}\n * @property {requireDone} done - callback\n * @property {requireFail} fail - callback\n * @property {string} [url] - (optional) url of the desired module if loading is required\n * @property {string} [minVer] - (optional) minVer (or minimum version) of the desired module\n * @property {string} [maxVer] - (optional) exclusive maximum version of the desired module\n */\n\n /**\n * Resolves a module\n * @param {string} name\n * @param {requireOptions|function} options\n */\n dependencies.require = function(name, options) {\n if (!name || typeof name !== 'string') {\n throw new Error('(string) module name is required');\n }\n\n name = name.toLowerCase();\n\n var module = modules[name];\n if (!module) {\n throw new Error('module ' + name + ' has not been defined');\n }\n return module.loader(options);\n };\n\n dependencies.define('jQuery', {\n url: runtime.dependencies.jQueryUrl,\n\n findInstances: function() {\n var instances = [];\n\n // in components if loaded\n if (componentDeps && componentDeps.jQuery && componentDeps.jQuery.v1_11) {\n instances.push(componentDeps.jQuery.v1_11);\n }\n\n // in global scope if loaded\n if (window.jQuery) {\n instances.push(window.jQuery);\n }\n\n if (window.$ && (!window.jQuery || window.jQuery && window.jQuery !== window.$)) {\n instances.push(window.$);\n }\n\n return instances;\n },\n\n getInstanceExport: function() {\n return window.jQuery.noConflict(true);\n },\n\n getInstanceVersion: function(instance) {\n return instance.fn.jquery;\n }\n });\n }).call(this, runtime.dependencies, components.dependencies);\n\n // Start loading jquery as soon as possible\n var $promise = runtime.dependencies.require('jQuery', {\n minVer: '1.11.1',\n maxVer: '1.11.2'\n });\n\n // Interactions Manager\n var initInteractionManager = function($) {\n if (window.ixp.runtime.initInteractionManager) {\n window.ixp.runtime.initInteractionManager.call(window.ixp.runtime, $, _);\n } else {\n setTimeout(initInteractionManager, 200, $);\n }\n };\n $promise.then(initInteractionManager);\n\n // runtime.events\n runtime.events = runtime.events || {};\n (function(events) {\n var subscriptions = {};\n if (runtime.flags.debug) {\n events._subscriptions = subscriptions;\n }\n\n var triggerEvents = function(listeners, args) {\n var ev,\n i = -1,\n l = listeners.length,\n a1,\n a2,\n a3;\n\n switch (args.length) {\n case 0:\n while (++i < l) {\n (ev = listeners[i]).fn.call(ev.ctx);\n }\n return;\n case 1:\n a1 = args[0];\n while (++i < l) {\n (ev = listeners[i]).fn.call(ev.ctx, a1);\n }\n return;\n case 2:\n a1 = args[0];\n a2 = args[1];\n while (++i < l) {\n (ev = listeners[i]).fn.call(ev.ctx, a1, a2);\n }\n return;\n case 3:\n a1 = args[0];\n a2 = args[1];\n a3 = args[2];\n while (++i < l) {\n (ev = listeners[i]).fn.call(ev.ctx, a1, a2, a3);\n }\n return;\n default:\n args = args || [];\n while (++i < l) {\n (ev = listeners[i]).fn.apply(ev.ctx, args);\n }\n return;\n }\n };\n\n events.on = function(context, name, callback) {\n if (!context || !name || !callback) {\n throw new Error('context, name, and callback are required');\n }\n\n name = name.toLowerCase();\n\n var listeners = subscriptions[name] || (subscriptions[name] = []);\n listeners.push({ ctx: context, fn: callback });\n return this;\n };\n\n events.once = function(context, name, callback) {\n if (!context || !name || !callback) {\n throw new Error('context, name, and callback are required');\n }\n\n var me = this;\n\n var once = function() {\n me.off(name, once);\n callback.apply(this, arguments);\n };\n return this.on(context, name, once);\n };\n\n events.off = function(context, name, callback) {\n if (!context) {\n throw new Error('context is required');\n }\n\n var names = name ? [name] : _.keys(subscriptions);\n for (var i = 0, namesLen = names.length; i < namesLen; i++) {\n name = names[i];\n name = name.toLowerCase();\n\n // Bail out if there are no listeners stored\n var listeners = subscriptions[name];\n if (!listeners) {\n continue;\n }\n\n // Find any remaining listeners\n var remaining = [];\n for (var j = 0, listenersLen = listeners.length; j < listenersLen; j++) {\n var event = listeners[j];\n if (context !== event.ctx ||\n (callback && callback !== event.fn)) {\n remaining.push(event);\n }\n }\n\n // Replace listeners if there are any remaining. Otherwise, clean up\n if (remaining.length) {\n subscriptions[name] = remaining;\n } else {\n delete subscriptions[name];\n }\n }\n\n return this;\n };\n\n events.trigger = function(sender, name) {\n var args;\n if (typeof sender === 'string') {\n args = Array.prototype.slice.call(arguments, 1);\n name = sender;\n sender = undefined;\n } else {\n args = Array.prototype.slice.call(arguments, 2);\n }\n\n if (!name || !subscriptions) {\n return false;\n }\n\n name = name.toLowerCase();\n\n var listeners = subscriptions[name];\n if (!listeners) {\n return false;\n }\n\n if (sender) {\n var filtered = [];\n var i = -1,\n l = listeners.length,\n e;\n while (++i < l) {\n if ((e = listeners[i]).ctx !== sender) {\n filtered.push(e);\n }\n }\n listeners = filtered;\n }\n\n triggerEvents(listeners, args);\n return true;\n };\n }).call(this, runtime.events);\n\n var getRespondentId = function () {\n const compositeIdParts = (runtime.context.id || '').split('$');\n\n if (compositeIdParts.length === 3) {\n return compositeIdParts[2];\n }\n return 0;\n };\n\n var promiseQueue;\n var ajax = function($, options) {\n var config = {\n url: options.url,\n async: true,\n data: options.type === 'DELETE' ? undefined : JSON.stringify(options.data),\n dataType: 'json',\n contentType: 'application/json; charset=utf-8',\n type: options.type || 'POST',\n cache: false,\n success: options.success && $.proxy(options.success, this),\n error: options.error && $.proxy(options.error, this)\n };\n\n options.always = options.always || $.proxy(options.always || function() { }, this);\n\n var promise;\n if (options.queue === false) {\n promise = Promise.resolve($.ajax(config).always(options.always));\n } else {\n if (promiseQueue) {\n var next = function() {\n return Promise.resolve($.ajax(config).always(options.always));\n };\n promise = promiseQueue.then(next, next);\n } else {\n promise = Promise.resolve($.ajax(config).always(options.always));\n }\n promiseQueue = promise;\n }\n\n // Uncomment to simulate longer ajax times\n //return new Promise(function(resolve) {\n // setTimeout(resolve, 10000);\n //}).then(promise);\n\n return promise;\n };\n\n runtime.constants.promise = runtime.constants.promise || {};\n runtime.constants.promise = {\n cancellationError: 'Promise has been cancelled'\n };\n\n var $ajax = function(options) {\n return $promise.then(function($) {\n return ajax($, options);\n });\n };\n\n var findElementByIxpAnchor = function(anchor) {\n if (!_.isFunction(document.querySelectorAll)) {\n return null;\n }\n\n var anchorMatch = anchor.toLowerCase();\n var els = document.querySelectorAll(runtime.constants.anchor.attrSelector);\n var el;\n for (var i = els.length - 1; i >= 0; i--) {\n el = els[i];\n if (el.getAttribute(runtime.constants.anchor.attr).toLowerCase() === anchorMatch) {\n return el;\n }\n }\n return null;\n };\n\n // runtime apis\n (function() {\n runtime.constants.anchor = runtime.constants.anchor || {};\n runtime.constants.anchor = {\n attr: 'data-ixp-anchor',\n attrSelector: '[data-ixp-anchor]'\n };\n\n runtime.runScriptlet = function(scriptletId, options) {\n options || (options = {});\n\n var ee = { scriptletId: scriptletId, options: options, cancel: false };\n runtime.events.trigger('runtime:runscriptlet:starting', ee);\n if (ee.cancel) return;\n\n options = ee.options || options;\n\n var promise = $ajax({\n url: '/admin/api/v1/scriptlets/' + scriptletId + '/run',\n data: {\n scriptletId: scriptletId,\n token: runtime.context.token,\n tokenId: getRespondentId(),\n wait: !!options.wait\n },\n queue: options.queue\n });\n\n ee = { scriptletId: scriptletId, options: options, promise: promise };\n runtime.events.trigger('runtime:runscriptlet:completed', ee);\n\n return promise;\n };\n\n runtime.runIntegration = function(integrationId, options) {\n options || (options = {});\n\n var ee = { integrationId: integrationId, options: options, cancel: false };\n runtime.events.trigger('runtime:runintegration:starting', ee);\n if (ee.cancel) return;\n\n options = ee.options || options;\n\n var promise = $ajax({\n url: '/admin/api/v1/integrations/' + integrationId + '/run',\n data: {\n integrationId: integrationId,\n token: runtime.context.token,\n tokenId: getRespondentId(),\n wait: !!options.wait\n },\n queue: options.queue\n });\n\n ee = { integrationId: integrationId, options: options, promise: promise };\n runtime.events.trigger('runtime:runintegration:completed', ee);\n\n return promise;\n };\n \n var isScreenSizeXS = function() {\n return window.innerWidth <= constants.screenSizes.xs.maxWidth;\n };\n\n var isScreenSizeSM = function() {\n return window.innerWidth >= constants.screenSizes.sm.minWidth && window.innerWidth <= constants.screenSizes.sm.maxWidth;\n };\n\n var isScreenSizeMD = function() {\n return window.innerWidth >= constants.screenSizes.md.minWidth && window.innerWidth <= constants.screenSizes.md.maxWidth;\n };\n \n var isScreenSizeLG = function() {\n return window.innerWidth >= constants.screenSizes.lg.minWidth;\n };\n\n runtime.isHiddenByCSS = function(element) {\n if (element.hasClass('ixp-grid-hidden-xs') && isScreenSizeXS()) \n return true;\n \n if (element.hasClass('ixp-grid-hidden-sm') && isScreenSizeSM()) \n return true;\n \n if (element.hasClass('ixp-grid-hidden-md') && isScreenSizeMD()) \n return true;\n \n if (element.hasClass('ixp-grid-hidden-lg') && isScreenSizeLG())\n return true;\n\n return false\n };\n\n runtime.convert = function(options) {\n options || (options = {});\n\n var ee = { options: options, cancel: false };\n runtime.events.trigger('runtime:convert:starting', ee);\n if (ee.cancel) return;\n\n options = ee.options || options;\n\n var promise = $ajax({\n url: '/outside/convert.ashx?lb3id=' + runtime.context.id + '&v=1&rnd=' + parseInt(31777 * Math.random()),\n type: 'GET',\n queue: options.queue\n });\n\n ee = { options: options, promise: promise };\n runtime.events.trigger('runtime:convert:completed', ee);\n\n return promise;\n };\n\n runtime.tag = function(tag, options) {\n options || (options = {});\n\n if (!tag) {\n throw new Error('Tag cannot be empty');\n }\n\n var ee = { tag: tag, options: options, cancel: false };\n runtime.events.trigger('runtime:tag:starting', ee);\n if (ee.cancel) return;\n\n tag = ee.tag || tag;\n options = ee.options || options;\n\n var promise = $ajax({\n url: '/outside/tag.ashx?lb3id=' + runtime.context.id + '&tag=' + encodeURIComponent(tag) + '&v=1&rnd=' + parseInt(31777 * Math.random()),\n type: 'GET',\n queue: options.queue\n });\n\n ee = { tag: tag, options: options, promise: promise };\n runtime.events.trigger('runtime:tag:completed', ee);\n\n return promise;\n };\n\n var getParentComponentData = function($el, $) {\n var $parents = $el.parents('[data-ixp-component-root]');\n if (!$parents.length) {\n return [];\n }\n var parentData = [];\n\n $parents.each(function() {\n var $parent = $(this);\n var id = $parent.data('ixp-component-root');\n var data = {\n element: $parent,\n id: id\n };\n\n parentData.push(data);\n });\n\n return parentData.reverse();\n };\n\n var getScrollToOffsetTop = function(location) {\n var scrollAdjustment = 0;\n\n var stickyStatuses = runtime.components.sendCommand && runtime.components.sendCommand('status', 'sticky_container');\n if (stickyStatuses && stickyStatuses.length) {\n for (var i = 0, len = stickyStatuses.length; i < len; i++) {\n var stickyStatus = stickyStatuses[i].data;\n if (stickyStatus.sticksTo === 'top' && (stickyStatus.isSticking || (location && stickyStatus.scrollTop < location))) {\n scrollAdjustment += stickyStatus.offset + stickyStatus.height;\n }\n }\n }\n\n return scrollAdjustment;\n };\n\n var scrollToCore = function($target, data, $) {\n var resolvePromise;\n\n var onScrolled = function() {\n runtime.events.trigger(runtime.constants.visibility.events.recalculate, {});\n runtime.events.trigger('runtime:scrollto:scrolled', data);\n resolvePromise();\n };\n\n var location = $target.offset().top;\n if (data.preventOffset !== true) {\n location -= getScrollToOffsetTop(location);\n }\n\n if (data.inViewport !== undefined) {\n var isInViewport = runtime.fn.isInViewport($target[0], data.inViewport);\n if (isInViewport) {\n return new Promise(function(resolve) {\n resolvePromise = resolve;\n _.defer(onScrolled);\n });\n }\n }\n\n if (data.speed === 0) {\n return new Promise(function(resolve) {\n resolvePromise = resolve;\n $('html, body').stop().scrollTop(location);\n _.defer(onScrolled);\n });\n } else {\n return new Promise(function(resolve) {\n resolvePromise = resolve;\n var scrollingEl = document.scrollingElement || document.documentElement;\n $(scrollingEl).stop().animate({\n 'scrollTop': location\n }, {\n duration: data.speed,\n easing: 'swing',\n always: _.debounce(onScrolled, 17)\n });\n });\n }\n };\n\n runtime.scrollTo = function(anchorOrElement, options) {\n options || (options = {});\n $promise.then(function($) {\n var anchor, $target;\n if (!_.isObject(anchorOrElement)) {\n anchor = anchorOrElement;\n $target = $(findElementByIxpAnchor(anchor));\n } else {\n $target = $(anchorOrElement);\n anchor = $target.attr(runtime.constants.anchor.attr);\n }\n\n if (!$target.length) {\n return;\n }\n\n var targetEl = $target[0];\n var data = {\n anchor: anchor,\n element: targetEl,\n speed: (options.speed && parseInt(options.speed, 10)) || 0,\n updateUrlHash: (anchor !== undefined) && (options.updateUrlHash === undefined ? true : options.updateUrlHash),\n markAsConverted: (anchor !== undefined) && (options.markAsConverted === undefined ? false : options.markAsConverted),\n inViewport: options.inViewport,\n preventOffset: false,\n getOffsetTop: getScrollToOffsetTop\n };\n\n var ee = _.extend(data, { cancel: false });\n runtime.events.trigger('runtime:scrollto:scrolling', ee);\n\n if (ee.cancel) {\n return;\n }\n\n data.speed = ee.speed;\n data.updateUrlHash = ee.updateUrlHash;\n data.markAsConverted = ee.markAsConverted;\n data.inViewport = ee.inViewport;\n\n var resolveCompletionPromise;\n data.completionPromise = new Promise(function(resolve, reject) {\n resolveCompletionPromise = resolve;\n });\n\n if (data.updateUrlHash) {\n runtime.events.trigger('runtime:scrollto:hash:changing', { hash: anchor });\n window.location.hash = '#' + anchor;\n }\n\n if (data.markAsConverted) {\n runtime.convert();\n }\n\n var promiseChain = Promise.resolve();\n var preventDefault = false;\n var newTarget;\n\n var parentComponents = getParentComponentData($target, $);\n if (parentComponents.length && runtime.components.sendCommand) {\n var promises = [];\n\n for (var i = 0, len = parentComponents.length; i < len; i++) {\n var results = runtime.components.sendCommand('scrollto', parentComponents[i].id, data);\n if (results) {\n for (var j = 0, resultLen = results.length; j < resultLen; j++) {\n var result = results[j];\n\n if (result.data.preventDefault) {\n preventDefault = true;\n }\n\n if (result.data.preventOffset) {\n data.preventOffset = true;\n }\n\n if (result.data.element) {\n newTarget = data.element = result.data.element;\n }\n\n data.inViewport = result.data.inViewport;\n\n promises.push(result.data.promise);\n }\n }\n }\n\n if (promises.length) {\n promiseChain = promiseChain.then(function() {\n return Promise.all(promises);\n });\n }\n }\n\n if (!preventDefault) {\n if (newTarget) {\n $target = $(newTarget);\n }\n promiseChain = promiseChain.then(function() {\n return scrollToCore($target, data, $);\n });\n }\n\n if (resolveCompletionPromise) {\n promiseChain.then(resolveCompletionPromise);\n }\n\n return promiseChain;\n });\n };\n\n // var INTERACTION_URL = 'https://ion-interactions.free.beeceptor.com'; // TODO move to constants\n // console url\n // https://beeceptor.com/console/ion-interactions-2\n\n runtime.uploadInteractions = function(interactions, options) {\n if (!interactions.length) {\n return;\n }\n options || (options = {});\n\n var ee = { options: options, cancel: false };\n runtime.events.trigger('runtime:uploadinteractions:starting', ee);\n if (ee.cancel) return;\n\n options = ee.options || options;\n\n // TODO uncomment after interaction feature implementation\n // var promise = $ajax({\n // url: INTERACTION_URL,\n // data: {\n // isBeacon: false,\n // interactions: interactions,\n // token: runtime.context.token,\n // tokenId: getRespondentId()\n // },\n // queue: false\n // });\n\n // Mocked API call\n var promise = Promise.resolve();\n\n ee = { options: options, promise: promise };\n runtime.events.trigger('runtime:uploadinteractions:completed', ee);\n\n return promise;\n };\n }).call(this);\n\n // runtime.data\n runtime.data = runtime.data || {};\n (function(data) {\n // Private respondent model\n var model = {};\n\n /**\n * @typedef setOptions\n * @type {object}\n * @property {bool} [replace] - (optional) to override the entire model\n */\n\n /**\n * Sets all or part of the runtime data-model\n * @param {string} key - key in the model\n * @param {object|string} value - value to set\n * @param {setOptions} [options]\n */\n var setModel = function(key, value, options) {\n if (!key || !value || typeof key !== 'string') {\n throw new Error('(string) key, and value are required');\n }\n\n key = key.toLowerCase();\n\n if (typeof value === 'string') {\n value = { value: value };\n }\n\n options || (options = {});\n\n if (!model[key] || options.replace) {\n model[key] = value;\n } else {\n model[key] = _.extend(model[key], value);\n }\n };\n\n // runtime.data.model - public respondent model\n data.model = data.model || {};\n\n /**\n * Retrieves all or part of the runtime data-model\n * @param {string} [key] - (optional) key to specific data in the model\n */\n data.model.get = function(key) {\n if (!key) {\n return _.extend({}, model);\n }\n\n key = key.toLowerCase();\n\n return model[key];\n };\n\n var parseDataField = function(dataField) {\n if (!dataField) {\n return null;\n }\n\n if (dataField.indexOf('{') > -1) {\n try {\n var field = JSON.parse(dataField);\n return { id: field.id, key: field.name };\n }\n catch (ex) {\n throw new Error('Data field contains invalid JSON');\n }\n }\n\n var separator = dataField.indexOf('\\\\');\n if (separator > -1) {\n return { id: 0, key: dataField.substring(separator + 2) };\n } else {\n return { id: 0, key: dataField };\n }\n };\n\n var triggerDataEvents = function(instanceId, data, saving) {\n data = (data instanceof Array) ? data : [data];\n\n var saved = [];\n var failed = [];\n\n var eventName = (saving ? ':saving' : ':saved');\n\n var df,\n sd;\n for (var i = 0, len = data.length; i < len; i++) {\n df = data[i];\n\n if (saving || df.validation === 'valid') {\n sd = {\n key: df.key,\n value: df.value\n };\n saved.push(sd);\n\n runtime.events.trigger('runtime:data:' + df.key + eventName, { instanceId: instanceId, data: sd });\n } else {\n var current = model[df.key];\n sd = {\n key: df.key,\n value: current && current.value,\n failedValue: df.value,\n validation: df.validation\n };\n failed.push(sd);\n\n runtime.events.trigger('runtime:data:' + df.key + ':failed', { instanceId: instanceId, data: sd });\n }\n }\n\n var ee = {\n instanceId: instanceId,\n data: saved\n };\n if (!saving) {\n ee.failed = failed;\n }\n runtime.events.trigger('runtime:data' + eventName, ee);\n };\n\n var updateDataModel = function(data) {\n if (!data || !data.length) {\n return;\n }\n\n var df;\n for (var i = 0, len = data.length; i < len; i++) {\n df = data[i];\n\n if (df.validation === 'valid') {\n setModel(df.key, { value: df.value });\n }\n }\n };\n\n var saveDataCore = function($, options) {\n var instanceId = options.data.instanceId;\n\n var success = _.isFunction(options.success) && options.success;\n options.success = function(response) {\n var data = response && (response instanceof Array) ? response : [response];\n updateDataModel(data);\n\n if (success) {\n try {\n success.apply(this, arguments);\n } catch (ex) { }\n }\n\n if (data && data.length) {\n triggerDataEvents(instanceId, data);\n }\n };\n\n var error = _.isFunction(options.error) && options.error;\n options.error = function(xhr) {\n var data;\n if (xhr.status === 409) {\n var response = JSON.parse(xhr.responseText);\n data = response && response.responseStatus && response.responseStatus.data;\n if (data) {\n data = (data instanceof Array) ? data : [data];\n updateDataModel(data);\n }\n }\n\n if (error) {\n try {\n error.apply(this, arguments);\n } catch (ex) { }\n }\n\n if (data && data.length) {\n triggerDataEvents(instanceId, data);\n }\n };\n\n return ajax($, options);\n };\n\n data.save = function(options) {\n if (inStudio || (!options.submit && !options.data)) {\n return Promise.resolve();\n }\n\n if (!options.data && options.submit) {\n options.data = [];\n }\n\n var urlSlug = '';\n var dataToSave,\n requestType,\n dataField;\n\n var isBulkSave = options.data instanceof Array;\n if (isBulkSave) {\n urlSlug = options.submit ? '/submit' : '/bulk';\n\n var pair,\n fields = [];\n for (var i = 0, len = options.data.length; i < len; i++) {\n pair = options.data[i];\n dataField = parseDataField(pair.dataField);\n if (dataField) {\n fields.push({\n fieldId: dataField.id,\n key: dataField.key,\n value: pair.value,\n metadata: pair.metadata,\n method: pair.method\n });\n }\n }\n\n if (fields.length || options.submit) {\n dataToSave = {\n data: fields,\n token: runtime.context.token,\n instanceId: options.instanceId\n };\n }\n } else {\n dataField = parseDataField(options.data.dataField);\n if (dataField) {\n dataToSave = {\n key: dataField.key,\n fieldId: dataField.id,\n value: options.data.value,\n metadata: options.data.metadata,\n token: runtime.context.token,\n instanceId: options.instanceId\n };\n\n // NOTE: Passing data using the query string to avoid a DELETE call with a body (which proxy servers can have a problem with as it is undefined by the HTTP spec)\n if (options.data.method && options.data.method.toUpperCase() === 'DELETE') {\n urlSlug += '?token=' + runtime.context.token;\n if (dataField.key) {\n urlSlug += '&key=' + dataField.key;\n }\n if (dataField.id) {\n urlSlug += '&fieldId=' + dataField.id;\n }\n\n requestType = 'DELETE';\n dataToSave.value = undefined;\n }\n\n }\n }\n\n if (!dataToSave && requestType !== 'DELETE') {\n if (typeof options.always === 'function') {\n options.always.call(this);\n }\n return Promise.resolve();\n }\n\n triggerDataEvents(dataToSave.instanceId, dataToSave, true);\n\n var respondentId = getRespondentId();\n var config = {\n url: '/admin/api/v1/respondents/' + respondentId + '/data' + urlSlug,\n data: dataToSave,\n success: options.success,\n error: options.error,\n always: options.always,\n type: requestType\n };\n\n return $promise.then(function($) {\n return saveDataCore.call(data, $, config);\n });\n };\n\n data['delete'] = function(options) {\n if (!options.data) {\n return Promise.resolve();\n }\n\n options.data.method = 'DELETE';\n return data.save(options);\n };\n\n runtime.events.on(data, 'runtime:data:registered', function(e) {\n setModel(e.key, e.value);\n });\n }).call(this, runtime.data);\n\n // dom manipulation/events\n var dom = {};\n (function(dom) {\n var listenerMap = {};\n\n var passiveSupported = false;\n\n try {\n var options = Object.defineProperty({}, \"passive\", {\n get: function() {\n passiveSupported = true;\n }\n });\n\n window.addEventListener(\"test\", null, options);\n } catch (err) { }\n\n dom.on = function(el, eventNames, fn, options) {\n var callback = fn;\n options || (options = {});\n\n if (!el.addEventListener && el.attachEvent) {\n callback = function() {\n fn.call(el);\n };\n\n listenerMap[eventNames] = callback;\n }\n\n var names = eventNames.split(' ');\n for (var i = 0, len = names.length; i < len; i++) {\n if (el.addEventListener) {\n el.addEventListener(names[i], callback, options.passive && passiveSupported ? { passive: true } : false);\n } else if (el.attachEvent) {\n el.attachEvent(\"on\" + names[i], callback);\n }\n }\n };\n\n dom.off = function(el, eventNames, fn) {\n var callback = fn;\n if (!el.addEventListener && el.attachEvent) {\n callback = listenerMap[eventNames] || fn;\n }\n\n var names = eventNames.split(' ');\n for (var i = 0, len = names.length; i < len; i++) {\n if (el.removeEventListener) {\n el.removeEventListener(names[i], callback, false);\n } else if (el.detachEvent) {\n el.detachEvent(\"on\" + names[i], callback);\n }\n }\n };\n\n dom.isSvgElement = function(el) {\n return el.nodeType === 1 && el.nodeName === 'svg';\n };\n\n dom.getClassName = function(el) {\n if (!el.className) {\n return '';\n }\n\n if (this.isSvgElement(el)) {\n return el.className.baseVal;\n }\n\n return el.className;\n };\n\n dom.addClass = function(el, className) {\n if (!this.hasClass(el, className)) {\n if (this.isSvgElement(el)) {\n el.className.baseVal += (' ' + className);\n } else {\n el.className += (' ' + className);\n }\n }\n };\n\n dom.hasClass = function(el, className) {\n className = ' ' + className + ' ';\n return el.nodeType === 1 && (' ' + this.getClassName(el) + ' ').replace(/[\\n\\t]/g, ' ').indexOf(className) >= 0;\n };\n\n dom.removeClass = function(el, className) {\n var elementClassName = this.getClassName(el);\n var current = el.nodeType === 1 && (elementClassName ? (' ' + elementClassName + ' ').replace(/[\\n\\t]/g, ' ') : '');\n var isSvg = this.isSvgElement(el);\n\n if (current) {\n while (current.indexOf(' ' + className + ' ') >= 0) {\n current = current.replace(' ' + className + ' ', ' ');\n }\n\n if (isSvg) {\n el.className.baseVal = current.replace(/^\\s+|\\s+$/g, '');\n } else {\n el.className = current.replace(/^\\s+|\\s+$/g, '');\n }\n }\n };\n\n dom.ready = function(callback) {\n /*\n jQuery's document.ready/$(function(){}) should\n you wish to use a cross-browser DOMReady solution\n without opting for a library.\n\n Demo: http://jsfiddle.net/8j85t/\n\n usage:\n $(function(){\n // your code\n });\n\n Parts: jQuery project, Diego Perini, Lucent M.\n This version: Addy Osmani, David Dallet\n */\n \n var isReady = false,\n readyBound = false,\n callbackQueue = [];\n\n var registerOrRunCallback = function(callback) {\n if (typeof callback === \"function\") {\n callbackQueue.push(callback);\n }\n };\n\n var DOMReadyCallback = function() {\n while (callbackQueue.length) {\n (callbackQueue.shift())();\n }\n registerOrRunCallback = function(callback) {\n callback();\n };\n };\n\n // The ready event handler\n var DOMContentLoaded = function() {\n if (document.addEventListener) {\n document.removeEventListener(\"DOMContentLoaded\", DOMContentLoaded, false);\n } else {\n // we're here because readyState !== \"loading\" in oldIE\n // which is good enough for us to call the dom ready!\n document.detachEvent(\"onreadystatechange\", DOMContentLoaded);\n }\n DOMReady();\n };\n\n var DOMReady = function() {\n // Make sure that the DOM is not already loaded\n if (!isReady) {\n // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n if (!document.body) {\n return setTimeout(DOMReady, 1);\n }\n // Remember that the DOM is ready\n isReady = true;\n // If there are functions bound, to execute\n DOMReadyCallback();\n // Execute all of them\n }\n };\n\n // /ready()\n var bindReady = function() {\n var toplevel = false;\n\n if (readyBound) {\n return;\n }\n readyBound = true;\n\n // Catch cases where ready is called after the\n // browser event has already occurred.\n if (document.readyState !== \"loading\") {\n DOMReady();\n }\n\n // Mozilla, Opera and webkit nightlies currently support this event\n if (document.addEventListener) {\n // Use the handy event callback\n document.addEventListener(\"DOMContentLoaded\", DOMContentLoaded, false);\n // A fallback to window.onload, that will always work\n window.addEventListener(\"load\", DOMContentLoaded, false);\n // If IE event model is used\n } else if (document.attachEvent) {\n // ensure firing before onload,\n // maybe late but safe also for iframes\n document.attachEvent(\"onreadystatechange\", DOMContentLoaded);\n // A fallback to window.onload, that will always work\n window.attachEvent(\"onload\", DOMContentLoaded);\n // If IE and not a frame\n // continually check to see if the document is ready\n try {\n toplevel = window.frameElement == null;\n }\n catch (e) {\n }\n if (document.documentElement.doScroll && toplevel) {\n doScrollCheck();\n }\n }\n };\n\n // Handle when the DOM is ready\n\n // The DOM ready check for Internet Explorer\n var doScrollCheck = function() {\n if (isReady) {\n return;\n }\n try {\n // If IE is used, use the trick by Diego Perini\n // http://javascript.nwbox.com/IEContentLoaded/\n document.documentElement.doScroll(\"left\");\n }\n catch (error) {\n setTimeout(doScrollCheck, 1);\n return;\n }\n // and execute any waiting functions\n DOMReady();\n };\n\n registerOrRunCallback(callback);\n bindReady();\n };\n }).call(this, dom);\n\n if (dom.hasClass(document.documentElement, 'ixp-prevent-animations')) {\n runtime.flags.preventAnimations = true;\n }\n\n // scroll visibility / parallax\n (function(querySelectorAll, dom) {\n var visStates;\n var visCssMap = {};\n\n constants.visibility = (function(visibility) {\n var scrollPrefix = 'ixp-scroll-';\n\n var css = visibility.css = visibility.css || {};\n css.awareness = scrollPrefix + 'aware';\n css.inOnce = scrollPrefix + 'in-once';\n css.seen = scrollPrefix + 'seen';\n\n var microthemes = css.microthemes = css.microthemes || {};\n microthemes.awareness = 'ixp-scroll-aware-util';\n microthemes.inOnce = 'ixp-scroll-in-once-util';\n\n var states = css.states = css.states || {};\n states.shown = scrollPrefix + 'in';\n states.hidden = scrollPrefix + 'out';\n states.entering = scrollPrefix + 'enter';\n states.leaving = scrollPrefix + 'leave';\n\n var events = visibility.events = visibility.events || {};\n var visPrefix = 'visibility:';\n events.recalculate = visPrefix + 'recalculate';\n events.recalculating = visPrefix + 'recalculating';\n events.change = visPrefix + 'change';\n\n states = visibility.states = visibility.states || {};\n states.shown = 'shown';\n states.hidden = 'hidden';\n states.entering = 'entering';\n states.leaving = 'leaving';\n\n visibility.awarenessDelay = 250;\n if (runtime.flags.preventAnimations) {\n visibility.awarenessSelector = '.' + css.awareness + '.' + css.microthemes.awareness + ', .' + css.awareness + '.' + css.microthemes.inOnce;\n } else {\n visibility.awarenessSelector = '.' + css.awareness;\n }\n\n visStates = states;\n\n visCssMap[states.shown] = css.states.shown;\n visCssMap[states.hidden] = css.states.hidden;\n visCssMap[states.entering] = css.states.entering;\n visCssMap[states.leaving] = css.states.leaving;\n\n return visibility;\n }).call(this, constants.visibility || {});\n\n constants.parallax = (function(parallax) {\n var css = parallax.css = parallax.css || {};\n css.parallax = 'ixp-parallax';\n\n parallax.parallaxSelector = '.' + parallax.css.parallax;\n\n return parallax;\n }).call(this, constants.parallax || {});\n\n\n var getBoundingClientRect = function(el, options) {\n options || (options = {});\n\n var rect = el.getBoundingClientRect();\n // Needed to support IE8\n if (rect.height === undefined || rect.width === undefined) {\n rect = {\n top: rect.top,\n left: rect.left,\n bottom: rect.bottom,\n right: rect.right,\n height: rect.bottom - rect.top,\n width: rect.right - rect.left\n };\n }\n if (options.viewport) {\n rect = {\n top: rect.top + (options.viewport.scrollTop || 0),\n left: rect.left + (options.viewport.scrollLeft || 0),\n bottom: rect.bottom + (options.viewport.scrollTop || 0),\n right: rect.right + (options.viewport.scrollLeft || 0),\n height: rect.bottom - rect.top,\n width: rect.right - rect.left\n };\n }\n if (options.round) {\n rect = {\n top: Math.ceil(rect.top),\n left: Math.ceil(rect.left),\n bottom: Math.ceil(rect.bottom),\n right: Math.ceil(rect.right),\n height: Math.ceil(rect.height),\n width: Math.ceil(rect.width)\n };\n }\n\n return rect;\n };\n\n var isInViewport = function(el, options) {\n options || (options = {});\n\n var rect = getBoundingClientRect(el, { round: true, viewport: options.viewport });\n\n // Needed to support IE8\n var windowHeight = Math.ceil((options.viewport && options.viewport.windowHeight) || window.innerHeight || document.documentElement.clientHeight);\n var windowWidth = Math.ceil((options.viewport && options.viewport.windowWidth) || window.innerWidth || document.documentElement.clientWidth);\n\n if (options.tolerance == null) {\n if ((window.getComputedStyle && window.getComputedStyle(el, null).getPropertyValue('visibility')) === 'hidden') {\n return visStates.hidden;\n }\n\n // [MRM] There's a slight chance this could break scroll:always. If so, options needs to know\n // whether we're checking once or always, and only check the second clause if it's scroll:once\n if (rect.height >= windowHeight || ((rect.height * 2) > windowHeight && rect.top > 0)) {\n if ((rect.top > -rect.height) && (rect.top < windowHeight)) {\n return visStates.shown;\n } else {\n return visStates.hidden;\n }\n }\n\n if (((rect.top >= 0) && (rect.bottom < windowHeight)) &&\n ((rect.left >= 0) && (rect.left < windowWidth))) {\n return visStates.shown;\n } else if (rect.top >= windowHeight || rect.bottom <= 0 || rect.left >= windowWidth || rect.right <= 0) {\n return visStates.hidden;\n } else {\n if (options.direction === 'up') {\n if ((rect.top > -(rect.height / 2)) && ((rect.top + (rect.height / 2)) < windowHeight)) {\n return options.element.state == visStates.shown ? visStates.shown : visStates.entering;\n } else if ((rect.top > -rect.height) && (rect.top < windowHeight)) {\n return options.element.state == visStates.hidden ? visStates.hidden : visStates.leaving;\n }\n } else {\n if ((rect.top > -(rect.height / 2)) && ((rect.top + (rect.height / 2)) < windowHeight)) {\n return options.element.state == visStates.shown ? visStates.shown : visStates.entering;\n } else if ((rect.top > -rect.height) && (rect.top < windowHeight)) {\n return !options.element.state || options.element.state == visStates.hidden ? visStates.hidden : visStates.leaving;\n }\n }\n }\n\n return false;\n }\n\n var inView = false;\n if (rect.height >= windowHeight) {\n options.tolerance = 0;\n }\n\n if (options.tolerance === 1) {\n inView = (rect.top >= 0) && (rect.bottom <= windowHeight);\n } else if (options.tolerance < 1 && options.tolerance > 0) {\n var divisor = 1 / options.tolerance;\n var heightDivided = (rect.height / divisor);\n inView = (rect.top > -heightDivided) && ((rect.top + heightDivided) < windowHeight);\n } else {\n inView = (rect.top > -rect.height) && (rect.top < windowHeight);\n }\n\n if (inView && options.edge) {\n if (options.edge === 'top') {\n inView = (rect.top >= 0);\n } else if (options.edge === 'bottom') {\n inView = (rect.bottom < windowHeight);\n }\n }\n\n return inView;\n };\n\n runtime.fn.isInViewport = isInViewport;\n\n if (!querySelectorAll) {\n return;\n }\n\n var appRoot = inStudio ? window.LIVEBALL : undefined;\n\n var scrollAwareElements = [],\n parallaxElements = [];\n\n var getScrollAwareElements = function() {\n var visibility = constants.visibility;\n var els = querySelectorAll.call(document, visibility.awarenessSelector);\n if (!els.length) {\n return [];\n }\n\n var el,\n once,\n results = [];\n\n for (var i = 0, len = els.length; i < len; ++i) {\n el = els[i];\n once = dom.hasClass(el, visibility.css.inOnce);\n if (!once || !dom.hasClass(el, visibility.css.seen)) {\n results.push({ el: el, once: once });\n }\n }\n return results;\n };\n\n var getParallaxElements = function() {\n var parallax = constants.parallax;\n var els = querySelectorAll.call(document, parallax.parallaxSelector);\n if (!els.length) {\n return [];\n }\n\n var regex = new RegExp('\\\\b' + parallax.css.parallax + '-(\\\\d+)');\n\n var el,\n match,\n results = [];\n\n for (var i = 0, len = els.length; i < len; ++i) {\n el = els[i];\n match = el.className.match(regex);\n\n results.push({\n el: el,\n // Linear\n //speed: 1 - ((match && match[1] && parseInt(match[1])) || 400) / 1000,\n // Exponential\n speed: 1 / (((match && match[1] && parseInt(match[1])) || 400) / 100)\n });\n }\n return results;\n };\n\n var getElements = function() {\n scrollAwareElements = getScrollAwareElements();\n parallaxElements = getParallaxElements();\n };\n\n var inCalculateVisibility = null,\n inCalculateParallax = null,\n lastScrollTop = 0;\n\n var animationEndEvents = 'webkitAnimationEnd oanimationend MSAnimationEnd animationend';\n\n var getScrollTop = function(options) {\n if (options != null && options.scrollTop != null && !isNaN(options.scrollTop)) {\n return options.scrollTop;\n }\n return (window.pageYOffset || document.documentElement.scrollTop || 0) - (document.documentElement.clientTop || 0);\n };\n\n var calculateVisibility = function(options) {\n options || (options = {});\n\n var scrollTop = getScrollTop(options.viewport);\n var delta = lastScrollTop - scrollTop;\n if (delta !== 0 || options.force) {\n var vae,\n currentState,\n state;\n\n\n for (var i = 0, len = scrollAwareElements.length; i < len; ++i) {\n vae = scrollAwareElements[i];\n\n currentState = isInViewport(vae.el, { element: vae, direction: delta > 0 ? 'up' : 'down', viewport: options.viewport });\n\n vae.state = currentState;\n\n if (dom.hasClass(vae.el, visCssMap[currentState])) {\n continue;\n }\n\n for (state in visStates) {\n if (visStates.hasOwnProperty(state)) {\n dom.removeClass(vae.el, visCssMap[visStates[state]]);\n }\n }\n\n dom.addClass(vae.el, visCssMap[currentState]);\n\n if (currentState === visStates.shown && !vae.seen) {\n vae.seen = true;\n dom.addClass(vae.el, constants.visibility.css.seen);\n\n if (vae.once) {\n scrollAwareElements.splice(i, 1);\n i--;\n len = scrollAwareElements.length;\n\n if (vae.el.addEventListener) {\n (function(el) {\n var onAnimationEnd = function(e) {\n if (e.target === el) {\n dom.off(el, animationEndEvents, onAnimationEnd);\n dom.removeClass(el, constants.visibility.css.states.shown);\n }\n };\n dom.on(el, animationEndEvents, onAnimationEnd, { passive: true });\n }).call(this, vae.el);\n }\n }\n }\n\n runtime.events.trigger(constants.visibility.events.change, {\n el: vae.el,\n once: vae.once,\n seen: vae.seen,\n state: currentState\n });\n }\n }\n\n lastScrollTop = scrollTop;\n inCalculateVisibility = null;\n };\n\n var backgroundImageRegex = /url\\(\\s*[\"']?([^\"']+)[\"']?\\s*\\)/;\n\n var getNormalizedBackgroundPosition = function(el) {\n var pos = el.style.backgroundPosition.split(' ');\n if (pos.length === 1) {\n pos[0] = el.style.backgroundPositionX;\n pos[1] = el.style.backgroundPositionY;\n }\n\n for (var i = 0, len = pos.length; i < len; i++) {\n switch (pos[i]) {\n case 'left':\n pos[i] = '0%';\n break;\n case 'right':\n pos[i] = '100%';\n break;\n case 'top':\n pos[i] = '0%';\n break;\n case 'bottom':\n pos[i] = '100%';\n break;\n case 'center':\n pos[i] = '50%';\n break;\n }\n }\n\n pos[0] = pos[0] || '0%';\n return pos;\n };\n\n var getParallaxImageDimensions = function(callback, pe, height, delta, divisor) {\n var match = pe.el.style.backgroundImage.match(backgroundImageRegex);\n if (match) {\n var img = new Image();\n\n img.onload = function() {\n callback.call(this, pe, height, delta, divisor);\n };\n\n img.src = match[1];\n }\n return !!match;\n };\n\n var calculateParallaxWithImageDimensions = function(pe, height, delta, divisor) {\n pe.y = (height - this.height) / divisor;\n if (delta) {\n pe.el.style.backgroundPosition = pe.x + ' ' + (pe.y + delta) + 'px';\n }\n };\n\n var calculateParallax = function(options) {\n options || (options = {});\n\n var scrollTop = getScrollTop(options.viewport);\n\n var pe,\n delta,\n rect;\n\n for (var i = 0, len = parallaxElements.length; i < len; ++i) {\n pe = parallaxElements[i];\n\n if (!isInViewport(pe.el, { tolerance: 0, viewport: options.viewport })) {\n continue;\n }\n\n delta = -scrollTop * pe.speed;\n rect = getBoundingClientRect(pe.el);\n\n // Save info about the element the first time it is visible\n if (pe.bgPos === undefined) {\n var backgroundPosition = getNormalizedBackgroundPosition(pe.el);\n pe.bgPos = backgroundPosition;\n pe.x = backgroundPosition[0];\n\n var y = backgroundPosition[1];\n if (y.charAt(y.length - 1) === '%') {\n y = parseInt(y, 10);\n if (y === 0) {\n pe.y = 0;\n } else {\n var divisor = 100 / y;\n pe.y = rect.height / divisor;\n if (getParallaxImageDimensions(calculateParallaxWithImageDimensions, pe, rect.height, delta, divisor)) {\n continue;\n }\n }\n } else {\n pe.y = parseFloat(y);\n }\n\n if (delta) {\n pe.el.style.backgroundPosition = pe.x + ' ' + (pe.y + delta) + 'px';\n }\n\n continue;\n }\n\n pe.el.style.backgroundPosition = pe.x + ' ' + (pe.y + delta) + 'px';\n }\n\n inCalculateParallax = null;\n };\n\n var calculate = function(e, options) {\n if (!scrollAwareElements.length && !parallaxElements.length) {\n return;\n }\n\n options || (options = {});\n\n var ee = {\n options: options,\n cancel: false\n };\n\n runtime.events.trigger(constants.visibility.events.recalculating, ee);\n\n if (ee.cancel) {\n return;\n }\n\n var force = options.force;\n if ((force || !inCalculateVisibility) && scrollAwareElements.length) {\n if (inCalculateVisibility) {\n clearTimeout(inCalculateVisibility);\n }\n\n inCalculateVisibility = setTimeout(function() {\n calculateVisibility({ force: force, viewport: options.viewport });\n }, options.delay || constants.visibility.awarenessDelay);\n }\n\n if ((force || !inCalculateParallax) && parallaxElements.length) {\n if (inCalculateParallax) {\n clearTimeout(inCalculateParallax);\n }\n\n inCalculateParallax = setTimeout(function() {\n calculateParallax({ viewport: options.viewport });\n }, 1);\n }\n };\n\n var recalculate = function(options) {\n options || (options = {});\n\n if (options.reset) {\n getElements();\n }\n calculate(null, { force: true, delay: options.delay || 1, viewport: options.viewport });\n };\n\n var updateScreenResolution = function () {\n\r\n if (inStudio) return;\r\n\r\n var respondentId = getRespondentId();\n\n if (!!parseInt(respondentId, 10)) {\n var screenResolution = window.screen.width + 'X' + window.screen.height;\n\n $ajax({\n url: '/admin/api/v1/respondents/screenresolution/' + respondentId,\n data: { screenResolution: screenResolution },\n type: 'PUT',\n queue: false\n });\n }\r\n } \n\n dom.ready(function() {\n updateScreenResolution();\n getElements();\n\n if (!scrollAwareElements.length && !parallaxElements.length && !appRoot) {\n return;\n }\n\n dom.on(window, 'scroll', calculate, { passive: true });\n\n dom.on(window, 'resize', function(e) {\n calculate(e, { force: true });\n }, { passive: true });\n\n runtime.events.on(window, constants.visibility.events.recalculate, recalculate);\n\n calculate(null, { force: true });\n\n if (appRoot) {\n var parallaxRegex = new RegExp('\\\\b' + constants.parallax.css.parallax + '\\\\b');\n var scrollAwareRegex = new RegExp('\\\\b' + constants.visibility.css.awareness + '\\\\b');\n\n // Wait for the app to finish intialization\n var intervalId = window.setInterval(function() {\n if (appRoot.App && appRoot.App.vent) {\n window.clearInterval(intervalId);\n\n var recalcTimeout;\n\n appRoot.App.vent.subscribe('style:changed:background style:changed:customClass element:microtheme:applied element:microtheme:removed', function(e) {\n if (e && e.classes) {\n if (!e.classes.match(scrollAwareRegex) && !e.classes.match(parallaxRegex)) {\n return;\n }\n }\n\n // Reset any modified background positions\n var pe;\n for (var i = 0, len = parallaxElements.length; i < len; ++i) {\n pe = parallaxElements[i];\n if (pe.bgPos) {\n pe.el.style.backgroundPosition = pe.bgPos.join(' ');\n }\n }\n parallaxElements = [];\n\n if (recalcTimeout) {\n window.clearTimeout(recalcTimeout);\n recalcTimeout = null;\n }\n\n recalcTimeout = setTimeout(function() {\n recalculate({ reset: true });\n }, 250);\n });\n }\n }, 500);\n }\n });\n\n }).call(this, document.querySelectorAll, dom);\n\n // runtime interaction events\n (function() {\n runtime.constants.interaction = runtime.constants.interaction || {};\n runtime.constants.interaction = {\n attrSelector: '[data-ixp-interaction]',\n triggerAttrSelector: '[data-ixp-interaction-trigger]'\n };\n\n var runAction = function(action) {\n var targetAndName = (action.name).toLowerCase();\n var index = targetAndName.lastIndexOf(':');\n var target = targetAndName.substring(0, index);\n var name = targetAndName.substring(index + 1);\n\n try {\n action.data || (action.data = {});\n if (target === 'runtime') {\n switch (name) {\n case 'tag':\n return runtime.tag(action.data.tag, action.data.options);\n case 'convert':\n return runtime.convert(action.data.options);\n case 'scrollto':\n return runtime.scrollTo(action.data.anchor, action.data.options);\n }\n return Promise.reject();\n }\n\n var result = runtime.components.sendCommand && runtime.components.sendCommand(name, target, action.data);\n return Promise.resolve(result);\n\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n var stopPolling = false;\n\n $promise.then(function($) {\n runtime.ready(function() {\n var onActionTrigger = function(e) {\n var $trigger = $(this);\n\n var data = $trigger.attr('data-ixp-interaction');\n if (!data) {\n return;\n }\n data = JSON.parse(data);\n\n var eventType = e.type;\n var actions = data[eventType];\n if (!actions || !actions.length) {\n return;\n }\n\n if (eventType.toLowerCase() === 'click') {\n e.preventDefault();\n }\n\n var promise;\n\n for (var i = 0, len = actions.length; i < len; i++) {\n var action = actions[i];\n if (action.queue === false) {\n runAction(action)['catch'](function(reason) {\n console.warn(reason);\n });\n } else {\n if (promise) {\n promise = promise.then(function() {\n return runAction(action);\n });\n } else {\n promise = runAction(action);\n }\n }\n }\n\n if (promise) {\n promise['catch'](function(reason) {\n console.warn(reason);\n });\n }\n };\n\n var events = ['click', 'hover'];\n var $document = $(document);\n for (var i = 0, len = events.length; i < len; i++) {\n var evt = events[i];\n $document.on(evt + '.ixp-runtime', '[data-ixp-interaction-trigger~=\":' + evt + '\"]', onActionTrigger);\n }\n\n var scrollToHash = {};\n var onHasChanging = function(e) {\n var hash = e.hash && e.hash.toLowerCase();\n if (hash && window.location.hash.toLowerCase() !== ('#' + hash)) {\n scrollToHash[hash] = true;\n }\n };\n\n runtime.events.on(runtime, 'runtime:scrollto:hash:changing', onHasChanging);\n runtime.events.on(runtime, 'runtime:scrollto:ignore:hash:changing', onHasChanging);\n\n var scrollTo = _.debounce(runtime.scrollTo, 100);\n\n var onHashChange = function() {\n var hash = window.location.hash;\n if (hash) {\n if (hash.indexOf('#') === 0) {\n hash = hash.substring(1);\n }\n\n var hashMatch = hash.toLowerCase();\n if (scrollToHash[hashMatch]) {\n scrollToHash[hashMatch] = undefined;\n } else {\n scrollTo(hash);\n }\n }\n };\n\n $(window).on('hashchange.ixp-runtime', onHashChange);\n\n $(function() {\n stopPolling = true;\n if (runtime.flags.nativeAnchorSupport) {\n $('a[data-ixp-hidden-anchor]').remove();\n }\n });\n });\n });\n\n (function() {\n var ensureScrollToElement = function(hash) {\n var target = findElementByIxpAnchor(hash);\n if (target) {\n runtime.scrollTo(target, { updateUrlHash: true });\n return;\n }\n\n if (stopPolling) {\n return;\n }\n\n if (_.isFunction(window.requestAnimationFrame)) {\n window.requestAnimationFrame(function() {\n ensureScrollToElement(hash);\n });\n } else {\n setTimeout(function() {\n ensureScrollToElement(hash);\n }, 10);\n }\n };\n\n var hash = window.location.hash;\n if (hash) {\n if (hash.indexOf('#') === 0) {\n hash = hash.substring(1);\n }\n\n if (runtime.anchors && runtime.anchors[hash.toLowerCase()]) {\n ensureScrollToElement(hash);\n\n window.addEventListener('load', function () {\n ensureScrollToElement(hash);\n });\n }\n }\n }).call(this);\n }).call(this);\n\n (function() {\n isReady = true;\n\n if (readyQueue.length === 0) {\n return;\n }\n\n for (var i = 0, len = readyQueue.length; i < len; i++) {\n try {\n readyQueue[i]();\n } catch (e) {\n console.error(e);\n }\n }\n }).call(this);\n\n // window.navigator.sendBeacon polyfill\n (function () {\n if ('navigator' in this && 'sendBeacon' in this.navigator) {\n return;\n }\n if (!('navigator' in this)) {\n this.navigator = {}\n }\n this.navigator.sendBeacon = sendBeacon.bind(this);\n function sendBeacon (url, data) {\n var xhr = ('XMLHttpRequest' in this)\n ? new XMLHttpRequest()\n : new ActiveXObject('Microsoft.XMLHTTP');\n\n xhr.open('POST', url, false); // Set 'false' for prevent browser canceling when tab closed\n xhr.withCredentials = true;\n xhr.setRequestHeader('Accept', '*/*');\n\n if (_.isString(data)) {\n xhr.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8');\n xhr.responseType = 'text';\n } else if (data instanceof Blob && data.type) {\n xhr.setRequestHeader('Content-Type', data.type);\n }\n\n try {\n xhr.send(data)\n } catch (error) {\n return false\n }\n\n return true\n }\n\n }).call(window);\n })();\n})(window, document);\n","/*\n* Track user interactions\n*/\n(function (window, runtime, config) {\n\n runtime.initInteractionManager = function ($, _) {\n var interactionManager = runtime.interactionManager || {};\n\n var $document = $(document);\n var that = this;\n var interactionsStorage = {\n store: [],\n isSending: false,\n lastIndex: null,\n set: function (interaction) {\n if (that.inStudio) {\n return;\n }\n if (_.isArray(interaction)) {\n this.store.concat(interaction)\n } else {\n this.store.push(interaction);\n }\n this.onChange();\n },\n onChange: function () {\n if (this.store.length >= config.BULK_SIZE) {\n this.uploadInteractions();\n }\n },\n uploadInteractions: function () {\n if (!this.store.length || this.isSending) {\n return;\n }\n this.isSending = true;\n this.lastIndex = this.store.length;\n var self = this;\n runtime\n .uploadInteractions(this.store.slice(0, this.lastIndex))\n .then(\n // _.noop, // TODO uncomment after interaction feature implementation\n function (xhr) {\n // if (xhr.status === 200) {\n // // Clear part of store if success\n // self.store.splice(0, self.lastIndex);\n // }\n self.store.splice(0, self.lastIndex);\n self.isSending = false;\n self.lastIndex = null;\n }\n );\n },\n getAllInteractions: function () {\n return this.store.slice();\n },\n getNotSentInteractions: function () {\n return this.store.slice(this.lastIndex || 0);\n }\n };\n\n config = _.defaults(config || {}, {\n BULK_SIZE: 25,\n AJAX_INTERVAL: 0.5 * 60 * 60,\n GLOBAL_EVENTS: [\n {\n eventName: 'mouseover',\n throttle: 100,\n debounce: false,\n fn: function () {\n // TODO global mouseover handler\n }\n },\n {\n eventName: 'click',\n throttle: false,\n debounce: false,\n fn: function () {\n // TODO global click handler\n }\n }\n ]\n });\n\n interactionManager.handlers = {\n _handlers: {},\n\n defaultHandler: {\n fn: function () {\n if (runtime.flags.debug) {\n console.warn('Default handler was not defined');\n }\n },\n options: {\n throttle: false,\n debounce: false\n }\n },\n\n getHandler: function (eventName) {\n var handlerObj = this._handlers[eventName];\n\n return handlerObj\n ? _.bind(handlerObj.fn, handlerObj.ctx)\n : this.defaultHandler;\n\n },\n\n wrapHandler: function (handlerFn, options) {\n // Wrap handler into throttle, debounce func.\n if (options.throttle) {\n return _.throttle(handlerFn, Number(options.throttle));\n }\n if (options.debounce) {\n return _.debounce(handlerFn, Number(options.debounce));\n }\n return handlerFn;\n },\n\n registerHandler: function (handlerFn, eventDefinition, ctx) {\n // Register handler for specific events or for components\n if (!eventDefinition || !eventDefinition.eventName) {\n throw TypeError('EventDefinition should be an object with eventName fields')\n }\n\n this._handlers[eventDefinition.eventName] = {\n fn: this.wrapHandler(handlerFn, eventDefinition),\n ctx: ctx\n };\n }\n };\n\n interactionManager.pushInteraction = function (interaction) {\n interactionsStorage.set(interaction);\n return interactionManager;\n };\n\n interactionManager.getAllInteractions = function () {\n return interactionsStorage.getAllInteractions();\n };\n interactionManager.getNotSentInteractions = function () {\n return interactionsStorage.getNotSentInteractions();\n };\n\n if (!this.inStudio) {\n initGlobalEvents.call(this);\n initAutoSend.call(this);\n }\n\n function initGlobalEvents() {\n config.GLOBAL_EVENTS.forEach(function (globalEvent) {\n\n interactionManager.handlers.registerHandler(globalEvent.fn, globalEvent, null);\n\n $document.on(globalEvent, interactionManager.handlers.getHandler(globalEvent.eventName))\n })\n }\n\n function initAutoSend() {\n setInterval(_.bind(interactionsStorage.uploadInteractions, interactionsStorage), config.AJAX_INTERVAL);\n }\n }\n\n})(window, window.ixp.runtime, window.ixp.runtime.interactionsConfig);\n","/**\n * Component registry, base-class, and support library\n */\n(function(window, runtime, undefined) {\n\n /* Modernizr 2.8.3 (Custom Build) | MIT & BSD\n * Build: http://modernizr.com/download/#-rgba-cssanimations-csstransforms-csstransforms3d-csstransitions-canvas-input-inputtypes-touch-mq-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-css_calc-css_mediaqueries-css_pointerevents-cssclassprefix:ixp!mzr!\n */\n var modernizr = (function(window, document, undefined) {\n\n var version = '2.8.3',\n\n Modernizr = {},\n\n enableClasses = true,\n\n docElement = document.documentElement,\n\n mod = 'modernizr',\n modElem = document.createElement(mod),\n mStyle = modElem.style,\n\n inputElem = document.createElement('input'),\n\n smile = ':)',\n\n toString = {}.toString,\n\n prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),\n\n\n omPrefixes = 'Webkit Moz O ms',\n\n cssomPrefixes = omPrefixes.split(' '),\n\n domPrefixes = omPrefixes.toLowerCase().split(' '),\n\n\n tests = {},\n inputs = {},\n attrs = {},\n\n classes = [],\n\n slice = classes.slice,\n\n featureName,\n\n\n injectElementWithStyles = function(rule, callback, nodes, testnames) {\n\n var style, ret, node, docOverflow,\n div = document.createElement('div'),\n body = document.body,\n fakeBody = body || document.createElement('body');\n\n if (parseInt(nodes, 10)) {\n while (nodes--) {\n node = document.createElement('div');\n node.id = testnames ? testnames[nodes] : mod + (nodes + 1);\n div.appendChild(node);\n }\n }\n\n style = ['', ''].join('');\n div.id = mod;\n (body ? div : fakeBody).innerHTML += style;\n fakeBody.appendChild(div);\n if (!body) {\n fakeBody.style.background = '';\n fakeBody.style.overflow = 'hidden';\n docOverflow = docElement.style.overflow;\n docElement.style.overflow = 'hidden';\n docElement.appendChild(fakeBody);\n }\n\n ret = callback(div, rule);\n if (!body) {\n fakeBody.parentNode.removeChild(fakeBody);\n docElement.style.overflow = docOverflow;\n } else {\n div.parentNode.removeChild(div);\n }\n\n return !!ret;\n\n },\n\n testMediaQuery = function(mq) {\n\n var matchMedia = window.matchMedia || window.msMatchMedia;\n if (matchMedia) {\n return matchMedia(mq) && matchMedia(mq).matches || false;\n }\n\n var bool;\n\n injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function(node) {\n bool = (window.getComputedStyle ?\n getComputedStyle(node, null) :\n node.currentStyle)['position'] == 'absolute';\n });\n\n return bool;\n\n },\n\n\n isEventSupported = (function() {\n\n var TAGNAMES = {\n 'select': 'input', 'change': 'input',\n 'submit': 'form', 'reset': 'form',\n 'error': 'img', 'load': 'img', 'abort': 'img'\n };\n\n function isEventSupported(eventName, element) {\n\n element = element || document.createElement(TAGNAMES[eventName] || 'div');\n eventName = 'on' + eventName;\n\n var isSupported = eventName in element;\n\n if (!isSupported) {\n if (!element.setAttribute) {\n element = document.createElement('div');\n }\n if (element.setAttribute && element.removeAttribute) {\n element.setAttribute(eventName, '');\n isSupported = is(element[eventName], 'function');\n\n if (!is(element[eventName], 'undefined')) {\n element[eventName] = undefined;\n }\n element.removeAttribute(eventName);\n }\n }\n\n element = null;\n return isSupported;\n }\n return isEventSupported;\n })(),\n\n\n _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;\n\n if (!is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined')) {\n hasOwnProp = function(object, property) {\n return _hasOwnProperty.call(object, property);\n };\n }\n else {\n hasOwnProp = function(object, property) {\n return ((property in object) && is(object.constructor.prototype[property], 'undefined'));\n };\n }\n\n\n if (!Function.prototype.bind) {\n Function.prototype.bind = function bind(that) {\n\n var target = this;\n\n if (typeof target != \"function\") {\n throw new TypeError();\n }\n\n var args = slice.call(arguments, 1),\n bound = function() {\n\n if (this instanceof bound) {\n\n var F = function() { };\n F.prototype = target.prototype;\n var self = new F();\n\n var result = target.apply(\n self,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return self;\n\n } else {\n\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n\n }\n\n };\n\n return bound;\n };\n }\n\n function setCss(str) {\n mStyle.cssText = str;\n }\n\n function setCssAll(str1, str2) {\n return setCss(prefixes.join(str1 + ';') + (str2 || ''));\n }\n\n function is(obj, type) {\n return typeof obj === type;\n }\n\n function contains(str, substr) {\n return !!~('' + str).indexOf(substr);\n }\n\n function testProps(props, prefixed) {\n for (var i in props) {\n var prop = props[i];\n if (!contains(prop, \"-\") && mStyle[prop] !== undefined) {\n return prefixed == 'pfx' ? prop : true;\n }\n }\n return false;\n }\n\n function testDOMProps(props, obj, elem) {\n for (var i in props) {\n var item = obj[props[i]];\n if (item !== undefined) {\n\n if (elem === false) return props[i];\n\n if (is(item, 'function')) {\n return item.bind(elem || obj);\n }\n\n return item;\n }\n }\n return false;\n }\n\n function testPropsAll(prop, prefixed, elem) {\n\n var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),\n props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');\n\n if (is(prefixed, \"string\") || is(prefixed, \"undefined\")) {\n return testProps(props, prefixed);\n\n } else {\n props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');\n return testDOMProps(props, prefixed, elem);\n }\n }\n\n\n\n tests['canvas'] = function() {\n var elem = document.createElement('canvas');\n return !!(elem.getContext && elem.getContext('2d'));\n };\n\n tests['touch'] = function() {\n var bool;\n\n if (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {\n bool = true;\n } else {\n injectElementWithStyles(['@media (', prefixes.join('touch-enabled),('), mod, ')', '{#modernizr{top:9px;position:absolute}}'].join(''), function(node) {\n bool = node.offsetTop === 9;\n });\n }\n\n return bool;\n }; tests['rgba'] = function() {\n setCss('background-color:rgba(150,255,150,.5)');\n\n return contains(mStyle.backgroundColor, 'rgba');\n };\n\n tests['cssanimations'] = function() {\n return testPropsAll('animationName');\n };\n\n\n\n tests['csstransforms'] = function() {\n return !!testPropsAll('transform');\n };\n\n\n tests['csstransforms3d'] = function() {\n\n var ret = !!testPropsAll('perspective');\n\n if (ret && 'webkitPerspective' in docElement.style) {\n\n injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function(node, rule) {\n ret = node.offsetLeft === 9 && node.offsetHeight === 3;\n });\n }\n return ret;\n };\n\n\n tests['csstransitions'] = function() {\n return testPropsAll('transition');\n };\n\n\n\n function webforms() {\n Modernizr['input'] = (function(props) {\n for (var i = 0, len = props.length; i < len; i++) {\n attrs[props[i]] = !!(props[i] in inputElem);\n }\n if (attrs.list) {\n attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);\n }\n return attrs;\n })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));\n Modernizr['inputtypes'] = (function(props) {\n\n for (var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++) {\n\n inputElem.setAttribute('type', inputElemType = props[i]);\n bool = inputElem.type !== 'text';\n\n if (bool) {\n\n inputElem.value = smile;\n inputElem.style.cssText = 'position:absolute;visibility:hidden;';\n\n if (/^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined) {\n\n docElement.appendChild(inputElem);\n defaultView = document.defaultView;\n\n bool = defaultView.getComputedStyle &&\n defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&\n (inputElem.offsetHeight !== 0);\n\n docElement.removeChild(inputElem);\n\n } else if (/^(search|tel)$/.test(inputElemType)) {\n } else if (/^(url|email)$/.test(inputElemType)) {\n bool = inputElem.checkValidity && inputElem.checkValidity() === false;\n\n } else {\n bool = inputElem.value != smile;\n }\n }\n\n inputs[props[i]] = !!bool;\n }\n return inputs;\n })('search tel url email datetime date month week time datetime-local number range color'.split(' '));\n }\n for (var feature in tests) {\n if (hasOwnProp(tests, feature)) {\n featureName = feature.toLowerCase();\n Modernizr[featureName] = tests[feature]();\n\n classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);\n }\n }\n\n Modernizr.input || webforms();\n\n\n Modernizr.addTest = function(feature, test) {\n if (typeof feature == 'object') {\n for (var key in feature) {\n if (hasOwnProp(feature, key)) {\n Modernizr.addTest(key, feature[key]);\n }\n }\n } else {\n\n feature = feature.toLowerCase();\n\n if (Modernizr[feature] !== undefined) {\n return Modernizr;\n }\n\n test = typeof test == 'function' ? test() : test;\n\n if (typeof enableClasses !== \"undefined\" && enableClasses) {\n docElement.className += \" ixp-mzr-\" + (test ? '' : 'no-') + feature;\n }\n Modernizr[feature] = test;\n\n }\n\n return Modernizr;\n };\n\n\n setCss('');\n modElem = inputElem = null;\n\n\n Modernizr._version = version;\n\n Modernizr._prefixes = prefixes;\n Modernizr._domPrefixes = domPrefixes;\n Modernizr._cssomPrefixes = cssomPrefixes;\n\n Modernizr.mq = testMediaQuery;\n\n Modernizr.hasEvent = isEventSupported;\n\n Modernizr.testProp = function(prop) {\n return testProps([prop]);\n };\n\n Modernizr.testAllProps = testPropsAll;\n\n\n Modernizr.testStyles = injectElementWithStyles; docElement.className = docElement.className.replace(/(^|\\s)no-js(\\s|$)/, '$1$2') +\n\n (enableClasses ? \" ixp-mzr-js ixp-mzr-\" + classes.join(\" ixp-mzr-\") : '');\n\n return Modernizr;\n\n })(this, this.document);\n (function(Modernizr) {\n // Method of allowing calculated values for length units, i.e. width: calc(100%-3em) http://caniuse.com/#search=calc\n // By @calvein\n\n Modernizr.addTest('csscalc', function() {\n var prop = 'width:';\n var value = 'calc(10px);';\n var el = document.createElement('div');\n\n el.style.cssText = prop + Modernizr._prefixes.join(value + prop);\n\n return !!el.style.length;\n });\n\n // developer.mozilla.org/en/CSS/pointer-events\n\n // Test and project pages:\n // ausi.github.com/Feature-detection-technique-for-pointer-events/\n // github.com/ausi/Feature-detection-technique-for-pointer-events/wiki\n // github.com/Modernizr/Modernizr/issues/80\n\n\n Modernizr.addTest('pointerevents', function() {\n var element = document.createElement('x'),\n documentElement = document.documentElement,\n getComputedStyle = window.getComputedStyle,\n supports;\n if (!('pointerEvents' in element.style)) {\n return false;\n }\n element.style.pointerEvents = 'auto';\n element.style.pointerEvents = 'x';\n documentElement.appendChild(element);\n supports = getComputedStyle &&\n getComputedStyle(element, '').pointerEvents === 'auto';\n documentElement.removeChild(element);\n return !!supports;\n });\n\n Modernizr.addTest('mediaqueries', Modernizr.mq('only all'));\n\n Modernizr.addTest('mobiledevice', function() {\n var isMobileDevice = (function(a) {\n return (\n /(android|bb\\d+|meego).+mobile|android|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|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) ||\n /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|dc\\-s|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|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|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|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|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)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|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)|sk\\-0|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\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|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))\n );\n })(navigator.userAgent || navigator.vendor || window.opera);\n\n return isMobileDevice;\n });\n\n Modernizr.addTest('ios', function () {\n if (window.MSStream) {\n return false;\n }\n return /iPad|iPhone|iPod/.test(navigator.userAgent);\n });\n })(modernizr);\n\n runtime.components = runtime.components || {};\n var _ = runtime.components.dependencies._;\n\n (function(components) {\n \"use strict\";\n\n components.constants = components.constants || {};\n\n components.constants.merge = function(constants) {\n constants = _.defaults(constants, components.constants);\n constants.extensibility = _.defaults(constants.extensibility || {}, components.constants.extensibility || {});\n return constants;\n };\n\n // Contains all the components instances\n components.instances = components.instances || {};\n\n // Contains all the components ctor functions\n components.registry = components.registry || {};\n\n components.instancesByType = components.instancesByType || {};\n\n components.addInstanceId = function(name, instanceId) {\n var instances = components.instancesByType[name];\n if (!instances) {\n instances = components.instancesByType[name] = {};\n }\n instances[instanceId] = true;\n };\n\n components.getInstance = function(instanceId) {\n return components.instances[instanceId];\n };\n\n components.registerExtensibility = function(type, constants) {\n components.constants.extensibility || (components.constants.extensibility = {});\n components.constants.extensibility[type] = _.extend(components.constants.extensibility[type] || {}, constants);\n };\n\n components.dependencies = components.dependencies || {};\n components.dependencies.jQuery = components.dependencies.jQuery || {};\n components.dependencies.Modernizr = modernizr;\n\n components.sendCommand = function(command, target, options, sender) {\n if (!sender || typeof sender === 'string') {\n sender = undefined;\n }\n\n options = (options && _.extend({}, options)) || {};\n\n var results = [];\n if (!_.isFunction(options.done)) {\n options.done = function(e) {\n results.push(e);\n }\n }\n\n if (command[0] !== ':') {\n command = ':' + command;\n }\n\n runtime.events.trigger(sender, 'command:' + target + command, options);\n\n if (results.length === 0) {\n return undefined;\n }\n return results;\n };\n\n // Keep this for backward compatibility with old components\n window.LBUI = components;\n window.LBUI.plugins = components.registry;\n\n var inStudio = !!runtime.studio;\n var inStudioLabs = runtime.studio && runtime.studio.labs;\n var inDebug = runtime.flags.debug;\n\n /**\n * ComponentBase - base class for all general components\n */\n components.ComponentBase = (function() {\n var constants = components.constants;\n components.constants = _.extend(constants, {\n components: {\n studio: {\n data: {\n hidden: 'data-liveball-is-element-hidden',\n passthrough: 'data-liveball-element-is-passthrough'\n },\n events: {\n reflow: 'component:reflow'\n }\n },\n data: {\n componentRoot: 'data-ixp-component-root',\n behaviorPrefix: 'data-ixp-behavior-',\n behaviorScopePrefix: 'data-ixp-behavior-scope-',\n behaviorScopeOwner: 'data-ixp-behavior-scope-owner'\n }\n },\n params: {\n countTowardsBounced: 'count_interactions_towards_bounced'\n }\n });\n\n runtime.components.registerExtensibility('all', {\n commands: {},\n\n events: {\n initializing: ':initializing',\n initialized: ':initialized'\n }\n });\n\n var getBuilder = function(behaviors) {\n behaviors || (behaviors = {});\n\n var builder = {\n PendingContainerChildId: LIVEBALL.App.constants.PendingContainerChildId,\n\n scaffold: function(type, elementName) {\n var element = LIVEBALL.App.componentsManager.getScaffoldElement(type);\n\n var Component = components.registry[type];\n if (_.isFunction(Component)) {\n var component = Component.prototype;\n if (_.isFunction(component.getScaffolding)) {\n var scaffolding = component.getScaffolding(type, { builder: builder });\n if (scaffolding) {\n element.content.scaffolding = scaffolding.scaffolding;\n if (scaffolding.elementName) {\n element.content.elementName = scaffolding.elementName;\n }\n\n var customClass = scaffolding.style && scaffolding.style.customClass;\n if (customClass) {\n element.style.customClass = customClass;\n }\n\n var htmlAttributes = scaffolding.content && scaffolding.content.htmlAttributes;\n if (htmlAttributes) {\n element.content.htmlAttributes = htmlAttributes;\n }\n }\n }\n }\n if (element && elementName) {\n element.elementName = elementName;\n }\n\n return element;\n },\n\n scaffoldContainer: function(elementName) {\n return builder.scaffold('container', elementName);\n },\n\n scaffoldLink: function(content, elementName) {\n var link = builder.scaffold('link', elementName);\n link.content.text = content;\n link.content.isHtml = true;\n return link;\n },\n\n scaffoldText: function(content, elementName) {\n var text = builder.scaffold('text', elementName);\n text.content.text = content;\n text.content.isHtml = true;\n return text;\n },\n\n getDefaultTheme: function(groupName, fallbackCssClass) {\n var group = {};\n group[groupName] = fallbackCssClass || '';\n return builder.getDefaultThemes(group);\n },\n\n getDefaultThemes: function(groups) {\n var defaultClasses = [];\n\n // Make a copy since we modify it during the loop\n groups = _.extend({}, groups);\n var groupCount = _.keys(groups).length;\n\n var byClass = LIVEBALL.themes.byClass;\n for (var key in byClass) {\n if (byClass.hasOwnProperty(key)) {\n var theme = byClass[key];\n if (theme['default'] && theme.group) {\n var themeGroup = theme.group.toLowerCase();\n\n var group = groups[themeGroup];\n if (group !== undefined) {\n delete groups[themeGroup];\n\n defaultClasses.push(theme.classes);\n if (groupCount === defaultClasses.length) {\n break;\n }\n }\n }\n }\n }\n\n var fallbackCssClass;\n for (var g in groups) {\n if (groups.hasOwnProperty(g)) {\n fallbackCssClass = groups[g];\n if (fallbackCssClass) {\n defaultClasses.push(fallbackCssClass);\n }\n }\n }\n\n return defaultClasses.join(' ');\n },\n\n getBehaviorToken: function(behaviorName) {\n return behaviors[behaviorName];\n },\n\n addBehaviors: function(type, token) {\n var byAttribute = LIVEBALL.behaviors.byAttribute;\n for (var key in byAttribute) {\n if (byAttribute.hasOwnProperty(key)) {\n var value = byAttribute[key];\n if (value.owner && value.owner.key === type) {\n behaviors[key] = token;\n }\n }\n }\n }\n };\n\n return builder;\n };\n\n var ComponentBase = function(type, instanceId, el, $, options) {\n options || (options = {});\n\n this.componentType = type;\n this.instanceId = instanceId;\n this.$ = $;\n this._ = _;\n\n this.eventNamespace = '.' + this.instanceId;\n this.$el = (el instanceof this.$) ? el : this.$(el);\n this.inStudio = inStudio;\n this.inStudioLabs = inStudioLabs;\n\n var me = this;\n\n if (inStudio) {\n this.paramMap = {};\n }\n\n var value;\n var parameters = options.parameters || {};\n delete options.parameters;\n\n for (var param in parameters) {\n if (parameters.hasOwnProperty(param)) {\n value = parameters[param];\n this[param] = value;\n\n if (inStudio) {\n switch (typeof value) {\n case 'boolean':\n this.paramMap[param] = _.bind(function(val) {\n me[this.param] = (val === true || val === 'true');\n }, { param: param });\n break;\n default:\n this.paramMap[param] = _.bind(function(val) {\n me[this.param] = val;\n }, { param: param });\n break;\n }\n }\n }\n }\n\n this.__initialize(options);\n\n this.listenToCommands();\n\n if (inStudio) {\n this.studioInitialize(options);\n\n var paramMapOverrides = this.getParamMapOverrides();\n\n if (paramMapOverrides) {\n this.paramMap = _.extend(this.paramMap, paramMapOverrides);\n }\n }\n\n var initialized;\n this.$(document).ready(function() {\n if (initialized) {\n return;\n }\n\n try {\n me.__onDocumentReady();\n initialized = true;\n\n if (me.initlizedPromise) {\n me.initlizedPromise.then(function() {\n me.triggerExtensibility(constants.extensibility.all.events.initialized, undefined, { any: true });\n });\n } else {\n me.triggerExtensibility(constants.extensibility.all.events.initialized, undefined, { any: true });\n }\n } catch (ex) {\n console.error('Error readying component: ' + me.componentType + ':' + me.instanceId, ex);\n }\n });\n };\n\n ComponentBase.prototype.__initialize = function(options) {\n this.initializing = true;\n try {\n this.initialize(options);\n } catch (ex) {\n console.error('Error initializing component: ' + this.componentType + ':' + this.instanceId, ex);\n }\n finally {\n this.initializing = false;\n }\n };\n\n ComponentBase.prototype.initialize = function(options) {\n };\n\n var clickContextHandler = function(clickContext, e) {\n clickContext.onclick.call(clickContext.el, e);\n };\n\n var findCurrentTargetMatch = function(e, listToSearch) {\n var found;\n for (var i = 0, len = listToSearch.length; i < len; i++) {\n var obj = listToSearch[i];\n if (e.currentTarget == obj.el) {\n found = obj;\n break;\n }\n }\n return found;\n };\n\n ComponentBase.prototype.onBehavior = function($el, selector, callback, eventName, options) {\n eventName || (eventName = 'click' + this.eventNamespace);\n callback = _.bind(callback, this);\n options = _.defaults(options || {}, { delegate: true });\n\n selector = this.getBehaviorSelector(selector);\n\n var clickContexts = [];\n this.$(selector).each(function() {\n if (!this.onclick) {\n return;\n }\n\n clickContexts.push({\n el: this,\n onclick: this.onclick,\n handler: null\n });\n this.onclick = function() { return true; };\n });\n\n if (clickContexts.length === 0) {\n if (options.delegate) {\n $el.on(eventName, selector, function(e) {\n callback(e);\n });\n } else {\n $el.find(selector).on(eventName, function (e) {\n callback(e);\n });\n }\n\n return;\n }\n\n $el.on(eventName, selector, function(e) {\n callback(e);\n if (e.isDefaultPrevented()) {\n return;\n }\n\n var found = findCurrentTargetMatch(e, clickContexts);\n if (!found) {\n return;\n }\n\n if (!found.handler) {\n found.handler = _.debounce(clickContextHandler, 1);\n }\n\n found.handler(found, e);\n });\n };\n\n ComponentBase.prototype.listenToCommands = function() {\n var commands = this.getCommandMap();\n if (!commands) {\n return;\n }\n\n for (var name in commands) {\n if (Object.prototype.hasOwnProperty.call(commands, name)) {\n var cmd = commands[name];\n runtime.events.on(this, 'command:' + this.componentType + name, cmd.fn);\n runtime.events.on(this, 'command:' + this.instanceId + name, cmd.fn);\n if (_.isFunction(this.onListenToCommand)) {\n this.onListenToCommand(name, cmd);\n }\n }\n }\n };\n\n ComponentBase.prototype.getCommandMap = function() {\n return this.__getCommandMap();\n };\n\n ComponentBase.prototype.getBuilder = function (options) {\n options || (options = {});\n\n var builder = options.builder || getBuilder(options.behaviors);\n\n return builder;\n };\n\n ComponentBase.prototype.__getCommandMap = function() {\n return _.isFunction(this.onGetCommandMap) && this.onGetCommandMap();\n };\n\n ComponentBase.prototype.studioInitialize = function(options) {\n };\n\n ComponentBase.prototype.getParamMapOverrides = function() {\n return undefined;\n };\n\n ComponentBase.prototype.__onDocumentReady = function(options) {\n return this.onDocumentReady(options);\n };\n\n ComponentBase.prototype.onDocumentReady = function(options) {\n return true;\n };\n\n ComponentBase.prototype.destroy = function() {\n // Remove namespaced bindings\n if (this.$el && this.$el.length) {\n this.$el.off(this.eventNamespace);\n }\n\n runtime.events.off(this);\n\n try {\n this.onDestroy();\n }\n catch (ex) {\n console.error(ex);\n }\n };\n\n ComponentBase.prototype.onDestroy = function() {\n };\n\n ComponentBase.prototype.saveData = function(options) {\n if (this.inStudio) {\n return;\n }\n\n options.instanceId = this.instanceId;\n options.success = options.success && _.bind(options.success, this);\n options.error = options.error && _.bind(options.error, this);\n options.always = options.always && _.bind(options.always, this);\n runtime.data.save(options);\n };\n\n ComponentBase.prototype.submitData = function(options) {\n options.submit = true;\n this.saveData(options);\n };\n\n ComponentBase.prototype.getBehaviorSelector = function(behavior) {\n var behaviorSelector = '[' + constants.components.data.behaviorPrefix + behavior + ']';\n var behaviorScopeSelector = '[' + constants.components.data.behaviorScopePrefix + behavior + '=\"' + this.instanceId + '\"]';\n return behaviorSelector + behaviorScopeSelector;\n };\n\n ComponentBase.prototype.getBehaviorSelectorWithoutScope = function(behavior) {\n return '[' + constants.components.data.behaviorPrefix + behavior + ']';\n };\n\n ComponentBase.prototype.isDirectDescendant = function(el, descendantSelector) {\n var $el = (el instanceof this.$) ? el : this.$(el);\n var $parentEl = $el.closest(descendantSelector);\n return ($parentEl.length && ($parentEl.attr('data-ixp-component-root') === this.instanceId || $parentEl.attr('data-liveball-rmw-root') === this.instanceId));\n };\n\n ComponentBase.prototype.filterChildren = function(selector, descendantSelector) {\n var me = this;\n return this.$el\n .find(selector)\n .filter(function() {\n return me.isDirectDescendant(this, descendantSelector);\n });\n };\n\n ComponentBase.prototype.recalculateVisibility = function(options) {\n options || (options = {});\n\n if (this._visibilityRecalcTimer) {\n clearInterval(this._visibilityRecalcTimer);\n delete this._visibilityRecalcTimer;\n }\n\n if (options.delay) {\n this._visibilityRecalcTimer = setTimeout(function() {\n runtime.events.trigger(runtime.constants.visibility.events.recalculate, {});\n }, options.delay);\n } else {\n runtime.events.trigger(runtime.constants.visibility.events.recalculate, {});\n }\n };\n\n ComponentBase.prototype.sendCommand = function(command, target, options, sender) {\n if (!sender || typeof sender === 'string') {\n sender = undefined;\n }\n\n runtime.events.trigger(sender, 'command:' + target + command, options);\n };\n\n ComponentBase.prototype.sendCommandAsync = function(command, target, options, sender) {\n _.defer(function(me) {\n me.sendCommand(command, target, options, me);\n }, this);\n };\n\n ComponentBase.prototype._getDataEnvelope = function(data) {\n return {\n type: this.componentType,\n instanceId: this.instanceId,\n element: this.$el[0],\n data: data || {}\n };\n };\n\n ComponentBase.prototype.getExtensibilityEnvelope = function(data) {\n return this._getDataEnvelope(data);\n };\n\n ComponentBase.prototype.triggerExtensibility = function(evt, data, options) {\n options || (options = {});\n\n if (this.inStudio && !_.isFunction(options.done)) {\n return;\n }\n\n var e = this._getDataEnvelope(data);\n\n var triggered = false;\n\n if (_.isFunction(options.done)) {\n try {\n triggered = true;\n options.done.call(this, e);\n }\n catch (ex) {\n console.error(ex);\n }\n }\n\n if (evt && !this.inStudio) {\n try {\n triggered = runtime.events.trigger('all', evt, e);\n }\n catch (ex) {\n console.error(ex);\n }\n\n if (options.any) {\n try {\n triggered = runtime.events.trigger('any' + evt, e) || triggered;\n }\n catch (ex) {\n console.error(ex);\n }\n }\n\n try {\n triggered = runtime.events.trigger(this.componentType + evt, e) || triggered;\n }\n catch (ex) {\n console.error(ex);\n }\n\n try {\n triggered = runtime.events.trigger(this.instanceId + evt, e) || triggered;\n }\n catch (ex) {\n console.error(ex);\n }\n\n if (_.isFunction(this.onTriggerCustomExtensibility)) {\n try {\n triggered = this.onTriggerCustomExtensibility(evt, e) || triggered;\n }\n catch (ex) {\n console.error(ex);\n }\n }\n }\n\n if (triggered && data && e.data) {\n _.extend(data, e.data);\n }\n };\n\n var _getStyleRuleCss = function(selector, declarations) {\n if (!selector || !declarations) {\n return null;\n }\n\n var rules = [];\n\n for (var i = 0, j = declarations.length; i < j; i++) {\n var declaration = declarations[i];\n rules.push(declaration.property + ':' + declaration.value + ';');\n }\n\n if (!rules.length) {\n return null;\n }\n return selector + '{' + rules.join(' ') + '}';\n };\n\n ComponentBase.prototype.addOrUpdateStyleBlock = function(rules) {\n /* [ {\n selector: \"div\",\n declarations: [ { property: \"property\", value: \"value\" } ]\n }\n ]\n */\n\n var css = '';\n\n if (rules) {\n for (var i = 0, j = rules.length; i < j; i++) {\n var cssRule = _getStyleRuleCss(rules[i].selector, rules[i].declarations);\n if (cssRule) {\n css += cssRule;\n }\n }\n }\n\n if (!css && this.$styleBlock) {\n this.$styleBlock.remove();\n this.$styleBlock = null;\n return;\n }\n\n var $block = this.$('');\n if (this.$styleBlock) {\n this.$styleBlock = $block.replaceAll(this.$styleBlock);\n } else {\n this.$styleBlock = $block.appendTo('head');\n }\n };\n\n ComponentBase.prototype.log = function() {\n if (inDebug) {\n var args = [this.componentType + ':' + this.instanceId].concat(Array.prototype.slice.call(arguments));\n runtime.log.apply(runtime, args);\n }\n };\n\n ComponentBase.prototype.pushInteraction = function (interaction) {\n if (this.inStudio) {\n return;\n }\n // Assign common fields to interaction data\n var _interaction = _.assign({\n ts: Date.now(),\n componentType: this.componentType,\n instanceId: this.instanceId,\n params: {\n countTowardsBounced: this.isCountTowardsBouncedAllowed()\n }\n }, interaction);\n\n runtime.interactionManager.pushInteraction(_interaction);\n };\n\n ComponentBase.prototype.isCountTowardsBouncedAllowed = function () {\n // overwrite in component where needed\n if (constants.params.countTowardsBounced in this) {\n return this[constants.params.countTowardsBounced];\n }\n return undefined;\n };\n\n if (inStudio) {\n\n ComponentBase.prototype.ensureStudioIsLoaded = function(callback) {\n if (_.isFunction(callback)) {\n if (this.studioApp) {\n callback.call(this);\n } else {\n runtime.events.once(this, this.instanceId + ':studio:initialized', callback);\n }\n }\n };\n\n ComponentBase.prototype.saveParameter = function(name, value, callback) {\n callback || (callback = function() { });\n\n var triggerSaveEvent = function() {\n this.studioApp.componentsManager.trigger('component:parameter:save', {\n instanceId: this.instanceId,\n name: name,\n value: value,\n onCompleted: callback\n });\n };\n\n this.ensureStudioIsLoaded(triggerSaveEvent);\n };\n\n ComponentBase.prototype.deleteParameter = function(name, callback) {\n callback || (callback = function() { });\n\n var triggerDeleteEvent = function() {\n this.studioApp.componentsManager.trigger('component:parameter:delete', {\n instanceId: this.instanceId,\n name: name,\n onCompleted: callback\n });\n };\n this.ensureStudioIsLoaded(triggerDeleteEvent);\n };\n\n ComponentBase.prototype.addChildren = function (selector, scaffolding, callback) {\n callback || (callback = function () { });\n\n var triggerAddChildrenEvent = function () {\n this.studioApp.componentsManager.trigger('component:element:add', {\n instanceId: this.instanceId,\n selector: selector,\n scaffolding: scaffolding,\n onCompleted: callback\n });\n };\n\n this.ensureStudioIsLoaded(triggerAddChildrenEvent);\n };\n\n ComponentBase.prototype.removeChildren = function (element, callback) {\n callback || (callback = function () { });\n\n var triggerRemoveChildrenEvent = function () {\n this.studioApp.componentsManager.trigger('component:element:remove', {\n instanceId: this.instanceId,\n element: element,\n onCompleted: callback\n });\n };\n\n this.ensureStudioIsLoaded(triggerRemoveChildrenEvent);\n };\n\n ComponentBase.prototype.updateChildrenContent = function (selector, data, callback) {\n callback || (callback = function () { });\n data = data || {};\n\n var triggerUpdateChildrenEvent = function () {\n this.studioApp.componentsManager.trigger('component:element:update', {\n instanceId: this.instanceId,\n selector: selector,\n data: data,\n onCompleted: callback\n });\n };\n\n this.ensureStudioIsLoaded(triggerUpdateChildrenEvent);\n };\n\n ComponentBase.prototype.set = function(paramName, content) {\n var param = this.paramMap[paramName];\n if (param) {\n param.call(this, content);\n return true;\n }\n\n return false;\n };\n\n ComponentBase.prototype.onStudioRegistationComplete = function(app) {\n this.studioApp = app;\n _.defer(function(me) {\n runtime.events.trigger(me.instanceId + ':studio:initialized');\n }, this);\n this.studioApp.componentsManager.on(\"app:state:changed\", function(newApp) {\n this.studioApp = newApp;\n this.onStudioStateChanged();\n }, this);\n\n this.onListenToStudioEvents(this.studioApp.componentsManager);\n };\n\n ComponentBase.prototype.onListenToStudioEvents = function(events) {\n };\n\n ComponentBase.prototype.onStudioStateChanged = function() {\n };\n\n ComponentBase.prototype.getScaffolding = function(scaffoldingKey, options) {\n options || (options = {});\n\n if (arguments.length === 1 && _.isObject(arguments[0])) {\n options = scaffoldingKey;\n scaffoldingKey = '';\n }\n\n var scaffolding = null;\n if (_.isFunction(this.onGetScaffolding)) {\n var builder = options.builder || getBuilder(options.behaviors);\n scaffolding = this.onGetScaffolding(scaffoldingKey, builder, options);\n }\n\n return scaffolding;\n };\n\n ComponentBase.prototype.getWrapping = function(type, options) {\n options || (options = {});\n\n var wrapping = null;\n if (_.isFunction(this.onGetWrapping)) {\n wrapping = this.onGetWrapping(type, getBuilder(options.behaviors), options);\n }\n\n return wrapping;\n };\n\n ComponentBase.prototype.getCssClassesToPreserve = function() {\n return this.onGetCssClassesToPreserve();\n };\n\n ComponentBase.prototype.onGetCssClassesToPreserve = function() {\n return null;\n };\n }\n\n return ComponentBase;\n }).call(this);\n\n /**\n * InputComponentBase - base class for all input components\n */\n components.InputComponentBase = (function() {\n var constants = components.constants;\n components.constants = _.extend(constants, {\n inputs: {\n formShadowSelector: '.ixp-component-form-shadow',\n formSelector: '.ixp-component-form[' + constants.components.data.componentRoot + ']',\n formFieldSelector: '.ixp-component-form-field[' + constants.components.data.componentRoot + ']',\n css: {\n validationPrefix: 'ixp-input-validation-',\n input: 'ixp-input',\n required: 'ixp-input-required',\n validated: 'ixp-input-validated'\n },\n data: {\n inputDataField: 'data-ixp-input-data-field',\n inputShadowField: 'data-ixp-shadow-data-field',\n inputType: 'data-ixp-input-type',\n state: 'data-ixp-input-state',\n submitUrl: 'data-ixp-input-submit-url'\n },\n events: {\n handled: 'ixp-handled:',\n inputChanged: ':input:changed',\n inputSaved: ':input:saved',\n inputStateChanged: ':input:state:changed',\n formSubmitting: ':form:submitting'\n },\n states: {\n valid: 'valid',\n invalid: 'invalid',\n incomplete: 'incomplete',\n pending: 'pending',\n unknown: 'unknown'\n }\n }\n });\n\n runtime.components.registerExtensibility('inputs', {\n commands: {\n focus: ':focus',\n value: ':value',\n status: ':status'\n },\n\n events: {\n saving: ':saving',\n saved: ':saved',\n status: ':status'\n //focused: ':focused' // this would be nice - but requires dom event hooks in each input I think\n }\n });\n\n var cssClassesToPreserve;\n if (inStudio) {\n cssClassesToPreserve = [\n components.constants.inputs.css.required,\n components.constants.inputs.css.validated,\n components.constants.inputs.css.validationPrefix + components.constants.inputs.states.valid,\n components.constants.inputs.css.validationPrefix + components.constants.inputs.states.invalid,\n components.constants.inputs.css.validationPrefix + components.constants.inputs.states.incomplete,\n components.constants.inputs.css.validationPrefix + components.constants.inputs.states.pending,\n components.constants.inputs.css.validationPrefix + components.constants.inputs.states.unknown\n ];\n }\n\n var InputComponentBase = function() {\n components.ComponentBase.prototype.constructor.apply(this, arguments);\n\n if (this.paramMap) {\n if (_.isFunction(this.paramMap.required)) {\n var requiredFn = this.paramMap.required;\n this.paramMap.required = function(val) {\n requiredFn.call(this, val);\n this.$el.toggleClass(constants.inputs.css.required, this.required);\n this.validate(this.state.value);\n }\n }\n\n if (_.isFunction(this.paramMap.dataField)) {\n var dataFieldFn = this.paramMap.dataField;\n this.paramMap.dataField = function(val) {\n dataFieldFn.call(this, val);\n this.setInStudioDataFieldValidation();\n }\n }\n\n if (_.isFunction(this.paramMap.dataSet)) {\n var dataSetFn = this.paramMap.dataSet;\n this.paramMap.dataSet = function(val) {\n dataSetFn.call(this, val);\n this.setInStudioDataFieldValidation();\n }\n }\n }\n\n if (!this.inStudio) {\n runtime.events.on(this, this.instanceId + constants.inputs.events.inputSaved, this.onInputSaved);\n\n this.onListenToInputEvents();\n }\n };\n\n InputComponentBase.prototype = _.create(components.ComponentBase.prototype, { constructor: InputComponentBase });\n\n InputComponentBase.prototype.__initialize = function(options) {\n this.initializing = true;\n\n try {\n this.$form = this.$el.closest(constants.inputs.formSelector);\n this.formInstanceId = this.$form.attr(constants.components.data.componentRoot);\n\n this.dataContext = options.dataContext;\n if (this.dataContext) {\n this._updateRuntimeDataModel(this.dataContext);\n }\n\n this.dependentDataContext = options.dependentDataContext;\n if (this.dependentDataContext) {\n this._updateRuntimeDataModel(this.dependentDataContext);\n }\n\n this.state = {\n instanceId: this.instanceId,\n dataField: this.dataField,\n validation: this.dataContext.validation.hasServerPattern\n ? constants.inputs.states.unknown\n : constants.inputs.states.valid,\n required: !!this.required\n };\n\n this.$el.toggleClass(constants.inputs.css.required, this.required);\n\n components.ComponentBase.prototype.__initialize.apply(this, arguments);\n\n // Since the base resets this flag - set it again to cover the methods below\n this.initializing = true;\n\n if (this.inStudio) {\n this.setInStudioDataFieldValidation();\n } else {\n this._registerDataField();\n if (this.dependentDataContext) {\n runtime.events.on(this, 'runtime:data:' + this.dependentDataContext.name + ':saved', this._onDependentDataSaved);\n }\n }\n }\n finally {\n this.initializing = false;\n }\n };\n\n InputComponentBase.prototype._getDataEnvelope = function(data) {\n var envelope = components.ComponentBase.prototype._getDataEnvelope.apply(this, arguments);\n\n var inputContext = {\n formInstanceId: this.formInstanceId\n };\n\n if (this.dataContext) {\n inputContext.dataId = this.dataContext.id;\n inputContext.dataName = this.dataContext.name;\n\n if (this.defaultValue !== null) {\n inputContext.defaultValue = this.defaultValue;\n inputContext.hasDefaultValue = true;\n } else {\n inputContext.defaultValue = this.dataContext.defaultValue;\n inputContext.hasDefaultValue = this.dataContext.hasDefaultValue;\n }\n }\n\n envelope.inputContext = inputContext;\n return envelope;\n };\n\n InputComponentBase.prototype.onTriggerCustomExtensibility = function(evt, e) {\n var dataName = this.dataContext && this.dataContext.name;\n if (dataName) {\n runtime.events.trigger(this.componentType + '|' + dataName.toLowerCase() + evt, e)\n }\n },\n\n InputComponentBase.prototype.onListenToCommand = function(name, command) {\n var dataName = this.dataContext && this.dataContext.name;\n if (dataName) {\n runtime.events.on(this, 'command:' + this.componentType + '|' + dataName.toLowerCase() + name, command.fn);\n }\n },\n\n InputComponentBase.prototype.onDataSaved = function(e) {\n },\n\n InputComponentBase.prototype._onDataSaved = function(e) {\n if (this.inStudio || !e.data) {\n return;\n }\n\n var value = this.getValue();\n\n if (this.dataContext) {\n this.dataContext.value = e.data.value;\n }\n\n this.$shadowInput.val(e.data.value);\n\n if (e.instanceId !== this.instanceId && (!value || value !== e.data.value)) {\n this.setValue(e.data.value, { save: false, trigger: false });\n }\n\n this.onDataSaved({ key: e.data.key, value: e.data.value });\n };\n\n InputComponentBase.prototype.onDependentDataSaved = function(e) {\n },\n\n InputComponentBase.prototype._onDependentDataSaved = function(e) {\n if (this.inStudio || !e.data) {\n return;\n }\n\n if (this.dependentDataContext) {\n this.dependentDataContext.value = e.data.value;\n }\n\n this.onDependentDataSaved({ key: e.data.key, value: e.data.value });\n },\n\n InputComponentBase.prototype._updateRuntimeDataModel = function(data) {\n if (!data.hasValue) {\n return;\n }\n\n runtime.events.trigger(this, 'runtime:data:registered', {\n key: data.name,\n value: {\n value: data.value\n }\n });\n };\n\n InputComponentBase.prototype.onRegisterDataField = function() {\n var attrs = {};\n\n var nameAttr = this.inputAttrName || this.dataContext.name;\n if (nameAttr) {\n attrs.name = nameAttr;\n }\n\n if (this.inputAttrId) {\n attrs.id = this.inputAttrId;\n }\n\n return attrs;\n };\n\n InputComponentBase.prototype._registerDataField = function() {\n if (this.inStudio || !this.dataContext.name) {\n return;\n }\n\n this.$el.attr(constants.inputs.data.inputDataField, this.dataContext.name);\n\n var $shadowForm = this.$form.find(constants.inputs.formShadowSelector).first();\n\n var fieldDataAttr = constants.inputs.data.inputShadowField + '=\"' + this.dataContext.name + '\"';\n var fieldSelector = '[' + fieldDataAttr + ']';\n var $shadowInput = $shadowForm.find(fieldSelector);\n\n if (!$shadowInput.length) {\n $shadowInput = this.$('').appendTo($shadowForm);\n\n // TODO: [ECA] Seems like this should move and be done all the time\n this._updateRuntimeDataModel(this.dataContext);\n\n $shadowInput.val(this.getValue());\n }\n\n var attrs = this.onRegisterDataField();\n if (attrs) {\n $shadowInput.attr(attrs);\n }\n this.$shadowInput = $shadowInput;\n\n runtime.events.on(this, 'runtime:data:' + this.dataContext.name + ':saved', this._onDataSaved);\n };\n\n InputComponentBase.prototype.getCommandMap = function() {\n var commandMap = {};\n commandMap[constants.extensibility.inputs.commands.focus] = { fn: this._onCommandFocus };\n commandMap[constants.extensibility.inputs.commands.value] = { fn: this._onCommandValue };\n commandMap[constants.extensibility.inputs.commands.status] = { fn: this._onCommandStatus };\n\n return _.extend(commandMap, this.__getCommandMap() || {});\n };\n\n InputComponentBase.prototype._onCommandFocus = function() {\n this.setFocus();\n };\n\n InputComponentBase.prototype._onCommandValue = function(options) {\n var hasValue = false;\n if (options.hasOwnProperty('value')) {\n hasValue = true;\n this.setValue(options.value, { trigger: true });\n }\n\n if (_.isFunction(options.done)) {\n var data = { value: this.getValue() };\n if (hasValue) {\n // Using == here on purpose to coerse the values (string vs ints, etc)\n data.success = data.value == options.value;\n }\n\n var e = this._getDataEnvelope(data);\n try {\n options.done.call(this, e);\n }\n catch (ex) {\n console.error(ex);\n }\n }\n };\n\n InputComponentBase.prototype._onCommandStatus = function(options) {\n var ee = {\n value: this.state.value,\n hasValue: this.state.hasValue,\n required: this.state.required,\n validation: this.state.validation\n };\n this.triggerExtensibility(constants.extensibility.inputs.events.status, ee, { done: options.done });\n };\n\n var inIframe = function() {\n try {\n return window.self !== window.top;\n }\n catch (ex) {\n return true;\n }\n };\n\n var inFullPageSlider = function() {\n var elements = this.$el.closest('.ixp-full-page-slider');\n return elements.length;\n };\n\n InputComponentBase.prototype.__onDocumentReady = function() {\n if (!this.inStudio && this.autofocus) {\n _.delay(function(me) {\n me.setFocus();\n }, inIframe() || inFullPageSlider.call(this) ? 500 : 1, this);\n }\n\n return this.onDocumentReady();\n };\n\n InputComponentBase.prototype.onListenToInputEvents = function() {\n };\n\n\n InputComponentBase.prototype.setFocus = function() {\n };\n\n InputComponentBase.prototype.getValue = function() {\n throw new Error('getValue not implemented');\n };\n\n InputComponentBase.prototype.onSetValue = function(value) {\n throw new Error('onSetValue not implemented');\n };\n\n InputComponentBase.prototype.setValue = function(value, options) {\n options = _.defaults(options || {}, { save: true });\n\n if (!this.validateValue(value)) {\n return;\n }\n\n var setValuePromise = this.onSetValue(value, options);\n\n if (this.initializing) {\n this.initlizedPromise = setValuePromise;\n return;\n }\n\n if (!setValuePromise) {\n this.onInputChanged({}, { save: !!options.save, trigger: !!options.trigger, submitting: options.submitting });\n return;\n }\n\n setValuePromise.then(_.bind(function() {\n this.onInputChanged({}, { save: !!options.save, trigger: !!options.trigger, submitting: options.submitting });\n }, this));\n };\n\n InputComponentBase.prototype.isValueEmpty = function(value) {\n return (value == null || value === '');\n };\n\n InputComponentBase.prototype.isSaveRequired = function(value) {\n // NOTE: [ECA] using coersion == on purpose here to deal with strings vs numbers (since all data fields are stored a strings)\n if (value == this.dataContext.value) {\n return this.state.validation === constants.inputs.states.unknown ||\n this.state.validation === constants.inputs.states.invalid;\n }\n\n return true;\n };\n\n InputComponentBase.prototype.validate = function(value, validationState) {\n if (value === undefined) {\n value = this.getValue();\n }\n validationState = validationState || this.state.validation;\n\n var valid = true;\n if (!this.inStudio) {\n valid = this.onValidate(value, validationState);\n if (!valid) {\n validationState = constants.inputs.states.invalid;\n }\n }\n this.setInputState(value, validationState);\n\n return valid;\n };\n\n InputComponentBase.prototype.onValidate = function(value, validationState) {\n return this.validateValue(value);\n };\n\n InputComponentBase.prototype.validateValue = function(value) {\n var valid = this.onValidateValue(value);\n\n if (valid && this.dataContext.validation.maxLength) {\n if (value != null && value.toString().length > this.dataContext.validation.maxLength) {\n return false;\n }\n }\n\n return valid;\n };\n\n InputComponentBase.prototype.onValidateValue = function(value) {\n return true;\n };\n\n InputComponentBase.prototype.isIncomplete = function(value) {\n return this.state.required && this.isValueEmpty(value);\n };\n\n var _applyInputValidationStateCss = function($el, validation) {\n if (validation === constants.inputs.states.pending) {\n $el.addClass(constants.inputs.css.validationPrefix + validation);\n } else {\n for (var state in constants.inputs.states) {\n if (constants.inputs.states.hasOwnProperty(state)) {\n $el.toggleClass(constants.inputs.css.validationPrefix + state, validation === state);\n }\n }\n }\n };\n\n InputComponentBase.prototype.setInputState = function(value, validationState) {\n if (this.inStudio) {\n this.state.dataField = this.dataField;\n this.state.validation = this.dataContext.validation.hasServerPatter\n ? constants.inputs.states.unknown\n : constants.inputs.states.valid;\n this.state.required = !!this.required;\n } else if (this.isIncomplete(value)) {\n validationState = constants.inputs.states.incomplete;\n }\n\n this.state.value = value;\n this.state.validation = validationState;\n this.state.hasValue = !this.isValueEmpty(value);\n var saveOptions = this.isSaveRequired(value);\n this.state.requiresSave = !!saveOptions;\n this.state.saveMethod = (saveOptions && saveOptions.method) || undefined;\n\n this.$el.attr(constants.inputs.data.state, JSON.stringify(this.state));\n\n _applyInputValidationStateCss(this.$el, this.state.validation);\n\n var initializing = this.inStudio ? false : this.initializing;\n if (!initializing && validationState !== constants.inputs.states.pending) {\n if (this.inStudio) {\n this.$el.toggleClass(constants.inputs.css.validated, validationState === constants.inputs.states.invalid);\n } else {\n this.$el.addClass(constants.inputs.css.validated);\n }\n runtime.events.trigger(this.instanceId + constants.inputs.events.inputStateChanged, { instanceId: this.instanceId });\n }\n };\n\n InputComponentBase.prototype.setInStudioDataFieldValidation = function() {\n if (!this.inStudio) {\n return;\n }\n\n var requiresDataSet = typeof this.dataSet !== 'undefined';\n var isStudioValid = !!(this.dataField && (requiresDataSet ? this.dataSet : true));\n\n this.validate(this.state.value, isStudioValid ? constants.inputs.states.valid : constants.inputs.states.invalid);\n };\n\n InputComponentBase.prototype.onInputSaved = function(e) {\n if (e.validation === constants.inputs.states.valid) {\n this.dataContext.hasValue = e.value != null;\n this.dataContext.value = e.value;\n }\n this.setInputState(e.value, e.validation);\n\n var ee = {\n value: this.state.value,\n hasValue: this.state.hasValue,\n required: this.state.required,\n validation: this.state.validation,\n cancelable: false\n };\n this.triggerExtensibility(constants.extensibility.inputs.events.saving, _.extend({}, ee));\n this.triggerExtensibility(constants.extensibility.inputs.events.saved, _.extend(ee, { success: true }));\n };\n\n InputComponentBase.prototype.onInputChanged = function(e, options) {\n options = _.defaults(options || {}, { save: true, trigger: true });\n\n if (!options.submitting && options.save) {\n var form = components.getInstance(this.formInstanceId);\n if (form && form.instance && form.instance.saveMode === 'onsubmit') {\n options.save = false;\n }\n }\n\n var value = this.getValue();\n var metadata = _.isFunction(this.getMetadata) && this.getMetadata();\n\n if (!options.save || !this.isSaveRequired(value)) {\n if (this.state.validation !== constants.inputs.states.valid &&\n this.state.validation !== constants.inputs.states.unknown) {\n this.validate(value, this.dataContext.validation.hasServerPattern\n ? constants.inputs.states.unknown\n : constants.inputs.states.valid);\n } else {\n // Make sure our internal state is properly up to date\n this.setInputState(value, this.state.validation);\n }\n\n if (options.trigger) {\n this.triggerInputChanged();\n }\n\n return;\n }\n\n if (value === this.state.value &&\n this.state.validation === constants.inputs.states.pending) {\n return;\n }\n\n var validationState = constants.inputs.states.pending;\n if (options.submitting) {\n validationState = this.dataContext.validation.hasServerPattern\n ? constants.inputs.states.unknown\n : constants.inputs.states.valid;\n }\n\n if (!this.validate(value, validationState)) {\n if (options.trigger) {\n this.triggerInputChanged();\n }\n return;\n }\n\n // If the form is in the process of being submitted don't bother saving\n if (options.submitting) {\n return;\n }\n\n var ee = {\n value: value,\n hasValue: !this.isValueEmpty(value),\n required: this.state.required,\n validation: this.state.validation,\n cancelable: true,\n cancel: false\n };\n this.triggerExtensibility(constants.extensibility.inputs.events.saving, ee);\n\n if (ee.cancel) {\n if (this.state.validation !== constants.inputs.states.valid &&\n this.state.validation !== constants.inputs.states.unknown) {\n this.validate(value, this.dataContext.validation.hasServerPattern\n ? constants.inputs.states.unknown\n : constants.inputs.states.valid);\n } else {\n // Make sure our internal state is properly up to date\n this.setInputState(value, this.state.validation);\n }\n\n if (options.trigger) {\n this.triggerInputChanged();\n }\n\n return;\n }\n\n var success = false;\n this.saveData({\n data: {\n value: value,\n metadata: metadata ? JSON.stringify(metadata) : null,\n dataField: this.dataField,\n method: this.state.saveMethod\n },\n type: this.state.saveMethod,\n success: function(response) {\n success = true;\n this.dataContext.hasValue = response.value != null;\n this.dataContext.value = response.value;\n this.setInputState(value, constants.inputs.states.valid);\n },\n error: function(xhr) {\n this.setInputState(value, xhr.status === 409\n ? constants.inputs.states.invalid\n : constants.inputs.states.unknown);\n },\n always: function() {\n this.triggerInputChanged();\n\n ee = {\n value: this.state.value,\n hasValue: this.state.hasValue,\n required: this.state.required,\n validation: this.state.validation,\n success: success\n };\n this.triggerExtensibility(constants.extensibility.inputs.events.saved, ee);\n }\n });\n };\n\n InputComponentBase.prototype.triggerInputChanged = function() {\n var e = {\n value: this.state.value,\n hasValue: this.state.hasValue,\n required: this.state.required,\n state: this.state.validation\n };\n runtime.events.trigger(this.formInstanceId + constants.inputs.events.inputChanged, e);\n runtime.events.trigger(this.instanceId + constants.inputs.events.inputChanged, e);\n };\n\n if (inStudio) {\n InputComponentBase.prototype.deactivateEvents = function($el) {\n $el.attr('tabindex', -1);\n\n if (components.dependencies.Modernizr.pointerevents) {\n return;\n }\n\n $el.on('focus' + this.eventNamespace +\n ' click' + this.eventNamespace +\n ' mousedown' + this.eventNamespace +\n ' mouseup' + this.eventNamespace +\n ' mouseover' + this.eventNamespace +\n ' mouseout' + this.eventNamespace +\n ' mousemove' + this.eventNamespace, _.bind(this.onDeactivateEvent, this));\n $el.css('cursor', 'crosshair');\n };\n\n InputComponentBase.prototype.onDeactivateEvent = function(e) {\n try {\n e.preventDefault();\n if (e.type === 'focus') {\n e.stopPropagation();\n e.stopImmediatePropagation();\n\n this.$(e.target).blur();\n }\n }\n catch (ex) {\n }\n };\n\n InputComponentBase.prototype.getCssClassesToPreserve = function() {\n var classes = components.ComponentBase.prototype.getCssClassesToPreserve.apply(this, arguments);\n return classes\n ? cssClassesToPreserve.concat(classes)\n : cssClassesToPreserve;\n };\n }\n\n return InputComponentBase;\n }).call(this);\n\n /**\n * creates a component instance\n * @param {String} name - name of the component to load\n * @param {String} instanceId - instance id for the component\n * @param {String, jQuery, Object} $ - DOM element or jQuery instance\n * @param {Object} options - component options\n * @returns {Object} returns a new component instance\n */\n components.create = function(name, instanceId, $, options) {\n var component = this.registry[name];\n if (!component) {\n throw new Error(\"Component \" + name + \" could not be found.\");\n }\n\n var opts = _.extend({}, options || {});\n var el = opts.el || ('#ball_' + instanceId);\n delete opts.el;\n\n var instance = new component(name, instanceId, el, $, opts);\n components.instances[instanceId] = { instance: instance, instanceId: instanceId, type: name };\n components.addInstanceId(name, instanceId);\n return instance;\n };\n\n /**\n * registers a component\n * @param {string} name - name of the component to register\n * @param {Object} baseType - the base type\n * @param {Object} props - object to be mixed into the component prototype\n * @returns {Object} returns a component ctor function\n */\n components.register = function(name, baseType, props) {\n if (arguments.length === 2) {\n props = baseType;\n baseType = components.ComponentBase;\n }\n\n var component = function() {\n baseType.apply(this, arguments);\n };\n\n component.prototype = _.create(baseType.prototype, _.extend(props, { constructor: component }));\n\n components.registry[name] = component;\n return component;\n };\n }).call(this, runtime.components);\n})(window, window.ixp.runtime);\n"]}