{"version":3,"sources":["../node_modules/ramda-adjunct/es/stubUndefined.js","../node_modules/ramda-adjunct/es/isUndefined.js","../node_modules/ramda-adjunct/es/isNotUndefined.js","../node_modules/ramda-adjunct/es/isNull.js","../node_modules/ramda-adjunct/es/isNotNull.js","../node_modules/ramda-adjunct/es/isNotNil.js","../node_modules/ramda-adjunct/es/isGeneratorFunction.js","../node_modules/ramda-adjunct/es/isAsyncFunction.js","../node_modules/ramda-adjunct/es/isFunction.js","../node_modules/ramda-adjunct/es/isArray.js","../node_modules/ramda-adjunct/es/isIterable.js","../node_modules/ramda-adjunct/es/isEmptyArray.js","../node_modules/ramda-adjunct/es/isNotArray.js","../node_modules/ramda-adjunct/es/isNotEmpty.js","../node_modules/ramda-adjunct/es/isNonEmptyArray.js","../node_modules/ramda-adjunct/es/isBoolean.js","../node_modules/ramda-adjunct/es/isNotBoolean.js","../node_modules/ramda-adjunct/es/isNilOrEmpty.js","../node_modules/ramda-adjunct/es/isString.js","../node_modules/ramda-adjunct/es/isEmptyString.js","../node_modules/ramda-adjunct/es/isNotString.js","../node_modules/ramda-adjunct/es/internal/isOfTypeObject.js","../node_modules/ramda-adjunct/es/isObj.js","../node_modules/ramda-adjunct/es/isNotObj.js","../node_modules/ramda-adjunct/es/isNonEmptyString.js","../node_modules/ramda-adjunct/es/isArrayLike.js","../node_modules/ramda-adjunct/es/isNotArrayLike.js","../node_modules/ramda-adjunct/es/isNotGeneratorFunction.js","../node_modules/ramda-adjunct/es/isNotAsyncFunction.js","../node_modules/ramda-adjunct/es/isNotFunction.js","../node_modules/ramda-adjunct/es/isObjLike.js","../node_modules/ramda-adjunct/es/isNotObjLike.js","../node_modules/ramda-adjunct/es/isPlainObj.js","../node_modules/ramda-adjunct/es/isNotPlainObj.js","../node_modules/ramda-adjunct/es/isDate.js","../node_modules/ramda-adjunct/es/isNotDate.js","../node_modules/ramda-adjunct/es/isNumber.js","../node_modules/ramda-adjunct/es/internal/ponyfills/Number.isNaN.js","../node_modules/ramda-adjunct/es/isNaN.js","../node_modules/ramda-adjunct/es/isNotNaN.js","../node_modules/ramda-adjunct/es/isValidDate.js","../node_modules/ramda-adjunct/es/isNotValidDate.js","../node_modules/ramda-adjunct/es/isNotNumber.js","../node_modules/ramda-adjunct/es/isPositive.js","../node_modules/ramda-adjunct/es/isNegative.js","../node_modules/ramda-adjunct/es/isPositiveZero.js","../node_modules/ramda-adjunct/es/isNegativeZero.js","../node_modules/ramda-adjunct/es/isNotNilOrEmpty.js","../node_modules/ramda-adjunct/es/isNonPositive.js","../node_modules/ramda-adjunct/es/isNonNegative.js","../node_modules/ramda-adjunct/es/isMap.js","../node_modules/ramda-adjunct/es/isNotMap.js","../node_modules/ramda-adjunct/es/internal/ponyfills/Number.isFinite.js","../node_modules/ramda-adjunct/es/isFinite.js","../node_modules/ramda-adjunct/es/isNotFinite.js","../node_modules/ramda-adjunct/es/internal/ponyfills/Number.isInteger.js","../node_modules/ramda-adjunct/es/isInteger.js","../node_modules/ramda-adjunct/es/toInteger32.js","../node_modules/ramda-adjunct/es/isInteger32.js","../node_modules/ramda-adjunct/es/isNotInteger.js","../node_modules/ramda-adjunct/es/isBigInt.js","../node_modules/ramda-adjunct/es/isFloat.js","../node_modules/ramda-adjunct/es/isNotFloat.js","../node_modules/ramda-adjunct/es/isValidNumber.js","../node_modules/ramda-adjunct/es/isNotValidNumber.js","../node_modules/ramda-adjunct/es/isOdd.js","../node_modules/ramda-adjunct/es/isEven.js","../node_modules/ramda-adjunct/es/isPair.js","../node_modules/ramda-adjunct/es/isNotPair.js","../node_modules/ramda-adjunct/es/isThenable.js","../node_modules/ramda-adjunct/es/isPromise.js","../node_modules/ramda-adjunct/es/isTrue.js","../node_modules/ramda-adjunct/es/isFalse.js","../node_modules/ramda-adjunct/es/isTruthy.js","../node_modules/ramda-adjunct/es/isFalsy.js","../node_modules/ramda-adjunct/es/isRegExp.js","../node_modules/ramda-adjunct/es/isNotRegExp.js","../node_modules/ramda-adjunct/es/isSet.js","../node_modules/ramda-adjunct/es/isNotSet.js","../node_modules/ramda-adjunct/es/isSparseArray.js","../node_modules/ramda-adjunct/es/isSymbol.js","../node_modules/ramda-adjunct/es/internal/ponyfills/Number.MAX_SAFE_INTEGER.js","../node_modules/ramda-adjunct/es/internal/ponyfills/Number.isSafeInteger.js","../node_modules/ramda-adjunct/es/isSafeInteger.js","../node_modules/ramda-adjunct/es/isIndexed.js","../node_modules/ramda-adjunct/es/isError.js","../node_modules/ramda-adjunct/es/isNaturalNumber.js","../node_modules/ramda-adjunct/es/isPrimitive.js","../node_modules/ramda-adjunct/es/isNotPrimitive.js","../node_modules/ramda-adjunct/es/isSentinelValue.js","../node_modules/ramda-adjunct/es/stubNull.js","../node_modules/ramda-adjunct/es/stubObj.js","../node_modules/ramda-adjunct/es/stubString.js","../node_modules/ramda-adjunct/es/stubArray.js","../node_modules/ramda-adjunct/es/noop.js","../node_modules/ramda-adjunct/es/fantasy-land/mapping.js","../node_modules/ramda-adjunct/es/internal/ap.js","../node_modules/ramda-adjunct/es/liftFN.js","../node_modules/ramda-adjunct/es/liftF.js","../node_modules/ramda-adjunct/es/cata.js","../node_modules/ramda-adjunct/es/weave.js","../node_modules/ramda-adjunct/es/weaveLazy.js","../node_modules/ramda-adjunct/es/curryRightN.js","../node_modules/ramda-adjunct/es/curryRight.js","../node_modules/ramda-adjunct/es/allP.js","../node_modules/ramda-adjunct/es/catchP.js","../node_modules/ramda-adjunct/es/rejectP.js","../node_modules/ramda-adjunct/es/resolveP.js","../node_modules/ramda-adjunct/es/noneP.js","../node_modules/ramda-adjunct/es/delayP.js","../node_modules/ramda-adjunct/es/thenP.js","../node_modules/ramda-adjunct/es/thenCatchP.js","../node_modules/ramda-adjunct/es/internal/ponyfills/Promise.allSettled.js","../node_modules/ramda-adjunct/es/allSettledP.js","../node_modules/ramda-adjunct/es/Y.js","../node_modules/ramda-adjunct/es/seq.js","../node_modules/ramda-adjunct/es/dispatch.js","../node_modules/ramda-adjunct/es/async.js","../node_modules/ramda-adjunct/es/internal/ponyfills/Promise.any.js","../node_modules/ramda-adjunct/es/anyP.js","../node_modules/ramda-adjunct/es/internal/compareLength.js","../node_modules/ramda-adjunct/es/lengthEq.js","../node_modules/ramda-adjunct/es/lengthGte.js","../node_modules/ramda-adjunct/es/lastP.js","../node_modules/ramda-adjunct/es/defaultWhen.js","../node_modules/ramda-adjunct/es/mapIndexed.js","../node_modules/ramda-adjunct/es/fnull.js","../node_modules/ramda-adjunct/es/reduceIndexed.js","../node_modules/ramda-adjunct/es/filterIndexed.js","../node_modules/ramda-adjunct/es/pickIndexes.js","../node_modules/ramda-adjunct/es/list.js","../node_modules/ramda-adjunct/es/ensureArray.js","../node_modules/ramda-adjunct/es/concatAll.js","../node_modules/ramda-adjunct/es/concatRight.js","../node_modules/ramda-adjunct/es/reduceP.js","../node_modules/ramda-adjunct/es/reduceRightP.js","../node_modules/ramda-adjunct/es/sliceFrom.js","../node_modules/ramda-adjunct/es/sliceTo.js","../node_modules/ramda-adjunct/es/omitIndexes.js","../node_modules/ramda-adjunct/es/compact.js","../node_modules/ramda-adjunct/es/appendFlipped.js","../node_modules/ramda-adjunct/es/contained.js","../node_modules/ramda-adjunct/es/move.js","../node_modules/ramda-adjunct/es/lengthGt.js","../node_modules/ramda-adjunct/es/lengthLt.js","../node_modules/ramda-adjunct/es/lengthLte.js","../node_modules/ramda-adjunct/es/lengthNotEq.js","../node_modules/ramda-adjunct/es/allEqual.js","../node_modules/ramda-adjunct/es/internal/ponyfills/String.repeat.js","../node_modules/ramda-adjunct/es/repeatStr.js","../node_modules/ramda-adjunct/es/allIdentical.js","../node_modules/ramda-adjunct/es/allIdenticalTo.js","../node_modules/ramda-adjunct/es/allEqualTo.js","../node_modules/ramda-adjunct/es/flattenDepth.js","../node_modules/ramda-adjunct/es/internal/makeFlat.js","../node_modules/ramda-adjunct/es/internal/ponyfills/Array.from.js","../node_modules/ramda-adjunct/es/toArray.js","../node_modules/ramda-adjunct/es/allUnique.js","../node_modules/ramda-adjunct/es/notAllUnique.js","../node_modules/ramda-adjunct/es/sortByProps.js","../node_modules/ramda-adjunct/es/skipTake.js","../node_modules/ramda-adjunct/es/floor.js","../node_modules/ramda-adjunct/es/rangeStep.js","../node_modules/ramda-adjunct/es/findOr.js","../node_modules/ramda-adjunct/es/invokeArgs.js","../node_modules/ramda-adjunct/es/invoke.js","../node_modules/ramda-adjunct/es/paths.js","../node_modules/ramda-adjunct/es/renameKeys.js","../node_modules/ramda-adjunct/es/renameKeyWith.js","../node_modules/ramda-adjunct/es/copyKeys.js","../node_modules/ramda-adjunct/es/mergeRight.js","../node_modules/ramda-adjunct/es/mergeProps.js","../node_modules/ramda-adjunct/es/mergePaths.js","../node_modules/ramda-adjunct/es/mergePath.js","../node_modules/ramda-adjunct/es/mergeProp.js","../node_modules/ramda-adjunct/es/omitBy.js","../node_modules/ramda-adjunct/es/pathOrLazy.js","../node_modules/ramda-adjunct/es/viewOr.js","../node_modules/ramda-adjunct/es/hasPath.js","../node_modules/ramda-adjunct/es/spreadPath.js","../node_modules/ramda-adjunct/es/spreadProp.js","../node_modules/ramda-adjunct/es/flattenPath.js","../node_modules/ramda-adjunct/es/flattenProp.js","../node_modules/ramda-adjunct/es/unzipObjWith.js","../node_modules/ramda-adjunct/es/zipObjWith.js","../node_modules/ramda-adjunct/es/isPrototypeOf.js","../node_modules/ramda-adjunct/es/lensEq.js","../node_modules/ramda-adjunct/es/lensNotEq.js","../node_modules/ramda-adjunct/es/lensSatisfies.js","../node_modules/ramda-adjunct/es/lensNotSatisfy.js","../node_modules/ramda-adjunct/es/fantasy-land/util.js","../node_modules/ramda-adjunct/es/fantasy-land/traits.js","../node_modules/ramda-adjunct/es/fantasy-land/Identity.js","../node_modules/ramda-adjunct/es/lensTraverse.js","../node_modules/ramda-adjunct/es/lensIso.js","../node_modules/ramda-adjunct/es/propNotEq.js","../node_modules/ramda-adjunct/es/pathNotEq.js","../node_modules/ramda-adjunct/es/inRange.js","../node_modules/ramda-adjunct/es/notEqual.js","../node_modules/ramda-adjunct/es/overlaps.js","../node_modules/ramda-adjunct/es/notBoth.js","../node_modules/ramda-adjunct/es/nand.js","../node_modules/ramda-adjunct/es/neither.js","../node_modules/ramda-adjunct/es/nor.js","../node_modules/ramda-adjunct/es/notAllPass.js","../node_modules/ramda-adjunct/es/nonePass.js","../node_modules/ramda-adjunct/es/argsPass.js","../node_modules/ramda-adjunct/es/dropArgs.js","../node_modules/ramda-adjunct/es/round.js","../node_modules/ramda-adjunct/es/ceil.js","../node_modules/ramda-adjunct/es/divideNum.js","../node_modules/ramda-adjunct/es/internal/ponyfills/Math.trunc.js","../node_modules/ramda-adjunct/es/trunc.js","../node_modules/ramda-adjunct/es/internal/ponyfills/Math.sign.js","../node_modules/ramda-adjunct/es/sign.js","../node_modules/ramda-adjunct/es/subtractNum.js","../node_modules/ramda-adjunct/es/toUinteger32.js","../node_modules/ramda-adjunct/es/internal/isCoercible.js","../node_modules/ramda-adjunct/es/toNumber.js","../node_modules/ramda-adjunct/es/escapeRegExp.js","../node_modules/ramda-adjunct/es/internal/ponyfills/String.replaceAll.js","../node_modules/ramda-adjunct/es/replaceAll.js","../node_modules/ramda-adjunct/es/trimStart.js","../node_modules/ramda-adjunct/es/internal/ponyfills/String.trimStart.js","../node_modules/ramda-adjunct/es/trimEnd.js","../node_modules/ramda-adjunct/es/internal/ponyfills/String.trimEnd.js","../node_modules/ramda-adjunct/es/trimCharsEnd.js","../node_modules/ramda-adjunct/es/trimCharsStart.js","../node_modules/ramda-adjunct/es/internal/ponyfills/String.padStart.js","../node_modules/ramda-adjunct/es/padCharsStart.js","../node_modules/ramda-adjunct/es/internal/ponyfills/String.padEnd.js","../node_modules/ramda-adjunct/es/padCharsEnd.js","../node_modules/ramda-adjunct/es/padEnd.js","../node_modules/ramda-adjunct/es/padStart.js","../node_modules/@prospects/cl-prospects/lib/components/DropdownTypeahead.js","../node_modules/@prospects/cl-prospects/lib/hooks/useCourseSearchForm.js","../node_modules/immutable/dist/immutable.es.js"],"names":["stubUndefined","always","isUndefined","equals","isNotUndefined","complement","isNull","isNotNull","isNotNil","isNil","GeneratorFunction","legacyCheck","Function","constructor","is","e","stubFalse","isGeneratorFunction","curryN","either","pipe","type","identical","isAsyncFunction","isFunction","anyPass","isArray","Array","isIterable","val","Symbol","hasIn","iterator","Object","isEmptyArray","both","isEmpty","isNotArray","isNotEmpty","isNonEmptyArray","isBoolean","isNotBoolean","isNilOrEmpty","isString","isEmptyString","isNotString","_typeof","obj","prototype","isOfTypeObject","isObj","isNotObj","isNonEmptyString","allPass","isArrayLike","nodeType","length","has","isNotArrayLike","isNotGeneratorFunction","isNotAsyncFunction","isNotFunction","isObjLike","isNotObjLike","isObject","isObjectConstructor","toString","hasObjectConstructor","pathSatisfies","isPlainObj","proto","getPrototypeOf","isNotPlainObj","isDate","isNotDate","isNumber","isNaNPonyfill","isNaN","ponyfill","_isNaN","Number","isNotNaN","isValidDate","invoker","isNotValidDate","isNotNumber","isPositive","lt","isNegative","gt","isPositiveZero","isNegativeZero","isNotNilOrEmpty","isNonPositive","flip","lte","isNonNegative","gte","isMap","isNotMap","isFinitePonyfill","isFinite","_isFinite","bind","isNotFinite","isIntegerPonyfill","converge","Math","floor","identity","isInteger","toInteger32","isInteger32","isNotInteger","isBigInt","isFloat","isNotFloat","isValidNumber","isNotValidNumber","isOdd","modulo","isEven","isPair","isNotPair","isThenable","isPromise","isTrue","isFalse","isTruthy","Boolean","isFalsy","isRegExp","isNotRegExp","isSet","isNotSet","isSparseArray","values","isSymbol","MAX_SAFE_INTEGER","pow","isSafeIntegerPonyfill","value","abs","isSafeInteger","isIndexed","isError","isNaturalNumber","isPrimitive","isNotPrimitive","isSentinelValue","stubNull","stubObj","stubString","stubArray","noop","concat","empty","map","contramap","ap","of","chain","isFunctor","fl","isApply","applyF","applyX","apR","liftFN","curry","arity","fn","lifted","_len","arguments","args","_key","accumulator","head","apps","slice","Infinity","reduce","liftF","catamorphism","leftFn","rightFn","catamorphicObj","matchWith","Ok","_ref","Error","_ref2","Just","_ref3","Nothing","undefined","Success","_ref4","Failure","_ref5","cata","getOrElse","elseValue","random","weave","config","apply","run","weaveLazy","configAccessor","curryRightN","this","reverse","curryRight","allP","Promise","all","catchP","rejectP","reject","resolveP","resolve","noneP","p","then","makeDelay","settleFnPicker","opts","timeout","propOr","settleFn","setTimeout","partial","delayP","nth","thenP","thenCatchP","_toConsumableArray","arr","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","o","minLen","n","call","name","test","_unsupportedIterableToArray","TypeError","_nonIterableSpread","len","i","arr2","onFulfill","status","onReject","reason","allSettledPonyfill","iterable","array","allSettledPPonyfill","allSettledP","allSettled","Y","le","f","g","x","seq","fns","tap","tx","byArity","comparator","a","b","getMaxArity","sort","prop","iteratorFn","result","reduced","dispatch","ifElse","functions","async","generatorFn","asyncWrapper","handle","resolved","done","next","error","_defineProperties","target","props","descriptor","enumerable","configurable","writable","defineProperty","key","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","Reflect","construct","self","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_wrapNativeSuper","Class","_cache","Map","indexOf","get","set","Wrapper","_construct","create","_setPrototypeOf","Parent","push","instance","sham","Proxy","valueOf","setPrototypeOf","__proto__","AggregatedError","_Error","subClass","superClass","_inherits","Constructor","protoProps","staticProps","_super","_this","errors","message","_classCallCheck","anyPonyfill","exceptions","anyPPonyfill","anyP","any","compareLength","list","compose","lengthEq","lengthGte","lastP","fulfilled","rejected","listOfPromises","last","defaultWhen","predicate","defaultVal","mapIndexed","addIndex","fnull","defaults","argsWithDefaults","idx","reduceIndexed","filterIndexed","filter","containsIndex","indexes","index","contains","pickIndexes","unapply","ensureArray","when","leftIdentitySemigroup","concatAll","concatRight","_slicedToArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","err","_iterableToArrayLimit","_nonIterableRest","reduceP","acc","listLength","accP","currentValueP","previousValue","currentValue","reducer","flipArgs","reduceRight","reduceRightP","arg1","arg2","sliceFrom","__","sliceTo","rejectIndexed","omitIndexes","compact","appendFlipped","append","contained","move","fromIdx","toIdx","insert","remove","lengthGt","lengthLt","lengthLte","lengthNotEq","allEqual","uniq","repeat","count","validCount","RangeError","maxCount","log","substring","repeatStrPonyfill","repeatStrInvoker","repeatStr","String","allIdentical","uniqWith","allIdenticalTo","allEqualTo","flatten1","recursive","flatt","jlen","j","_makeFlat","flattenDepth","depth","currentDept","flatList","fromArray","items","mapFn","thisArg","boundMapFn","copyArray","fromPonyfill","toArray","allUnique","notAllUnique","_toArray","sortByProps","tail","firstTruthy","propName","skipTake","nthArg","rangeStep","step","to","callback","rangeEnd","range","findOr","find","defaultTo","invokeArgs","mpath","method","path","context","init","boundMethod","invoke","paths","ps","renameKeys","keysMap","renameKeysWith","valueOrKey","renameKeyWith","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","copyKeys","mergeRight","merge","mergeProps","mergeAll","mergePaths","mergePath","over","lensPath","mergeProp","subj","omitBy","useWith","pickBy","pathOrLazy","defaultFn","unary","pathOr","viewOr","defaultValue","lens","data","view","hasPath","objPath","spreadPath","dissocPath","spreadProp","flattenPath","flattenProp","unzipObjWith","toPairs","transpose","zipObjWith","zip","fromPairs","isPrototypeOf","lensEq","lensNotEq","lensSatisfies","lensNotSatisfy","isSameType","typeIdent","monad","functorTrait","applyTrait","applyWithFn","setoidTrait","setoid","semigroupTrait","semigroup","concatenatedValue","chainTrait","newChain","ordTrait","ord","Identity","_fl$of","_fl$ap","_fl$map","_fl$equals","_fl$concat","_fl$chain","_fl$lte","_fl$empty","_fl$contramap","_value","emptyR","lensTraverse","toFunctorFn","traverse","isomorphism","lensIso","isomorphic","propNotEq","propEq","pathNotEq","pathEq","inRangeImp","low","high","notEqual","overlaps","list1","list2","intersection","notBoth","nand","and","neither","nor","or","notAllPass","nonePass","argsPass","combiningPredicate","predicates","dropArgs","nAry","round","ceil","divideNum","divide","truncPonyfill","v","numV","trunc","signPonyfill","number","sign","subtractNum","subtract","toUinteger32","isCoercible","toNumber","NaN","escapeRegExp","replace","checkValue","valueName","replaceAll","searchValue","replaceValue","str","checkArguments","RegExp","checkSearchValue","regexp","replaceAllPonyfill","replaceAllInvoker","trimStartPonyfill","trimStartInvoker","trimStart","trimEndPonyfill","trimEndInvoker","trimEnd","trimCharsEnd","chars","split","dropLastWhile","join","trimCharsStart","dropWhile","padStartPonyfill","padString","targetLength","finalLength","finalPadString","lenghtToPad","padStartInvoker","padCharsStart","padStart","padEndPonyfill","remainingLength","padEndInvoker","padCharsEnd","padEnd","require","exports","_react","nodeInterop","__esModule","cache","_getRequireWildcardCache","newObj","hasPropertyDescriptor","hasOwnProperty","desc","_interopRequireWildcard","_downshift","_reactBus","_clCore","_iconCross","_interopRequireDefault","_react2","_ramda","_CustomDropdown","_styled","_useDebounced","_FetchData","_constants","_usePrevious","_jsxRuntime","WeakMap","cacheBabelInterop","cacheNodeInterop","Header","label","selected","handleClearSelected","jsxs","Flex","as","width","justifyContent","alignItems","children","jsx","Paragraph","textColor","id","onClick","tabIndex","onKeyDown","event","role","css","theme","colors","pinkRich","white","SR","color","useTheme","pinkBright","styles","Typeahead","apiUrl","handleSelection","dataTestId","inputId","input","useRef","_useState2","useState","rawData","setRawData","_useState4","inputItems","setInputItems","_useCombobox","useCombobox","onInputValueChange","_ref6","inputValue","isOpen","selectedItem","getMenuProps","getInputProps","getComboboxProps","getItemProps","highlightedIndex","useEffect","_input$current","current","focus","names","text","tnr","item","debouncedInputValue","inputValueLower","toLowerCase","trimRight","Box","padding","ref","veryLightGrey","fonts","sourceSansPro","height","paddingX","backgroundColor","query","getData","createElement","toLocaleLowerCase","substr","DropdownTypeahead","_ref7","_ref7$apiUrl","handleSelected","_ref7$preSelected","preSelected","_ref7$dataTestId","_ref7$typeaheadTestId","typeaheadTestId","formLabel","_useState6","setSelected","_useState8","selectedTnr","setSelectedTnr","bus","useBus","prevPreselected","usePrevious","emit","DROPDOWN_TYPEAHEAD_SELECTION_EVENT","htmlFor","slateDark","HeaderComponent","DropdownComponent","selection","_default","Provider","_camelcase","_kebabCase","_immutable","_ramdaAdjunct","urlsegmentMapping","filters","hasFilters","isSearch","search","console","selectedFilters","qualification","attendance","location","institution","subject","keyword","subjectParam","param","urlSetCallback","memoizedDefaultState","useMemo","filterGroup","_selected$location","_selected$institution","_selected$location2","fromJS","mapKeys","controlArray","selectedIds","control","includes","size","allIndex","findIndex","update","decodeURIComponent","toJS","getFormState","inputs","setInputs","newUrl","setUrl","inputsCheckedCount","mapObjIndexed","inputGroup","checked","omit","handleSubmit","persist","preventDefault","allNotSelected","inputChecked","some","allFiltersArray","slugs","segment","parseInt","filtered","shift","accUrl","encodeURIComponent","extraCriteriaSlug","subjectSlug","handleSubjectChange","prevInputs","handleInputChange","_event$currentTarget","currentTarget","inputSlice","_updated","setIn","currentIndex","updated","handleLocationChange","setNewUrl","DELETE","SHIFT","SIZE","MASK","NOT_SET","SetRef","OwnerID","ensureSize","__iterate","returnTrue","wrapIndex","uint32Index","wholeSlice","begin","end","isNeg","resolveBegin","resolveIndex","resolveEnd","defaultIndex","max","min","IS_COLLECTION_SYMBOL","isCollection","maybeCollection","IS_KEYED_SYMBOL","isKeyed","maybeKeyed","IS_INDEXED_SYMBOL","maybeIndexed","isAssociative","maybeAssociative","Collection","Seq","KeyedCollection","KeyedSeq","IndexedCollection","IndexedSeq","SetCollection","SetSeq","Keyed","Indexed","Set","IS_SEQ_SYMBOL","isSeq","maybeSeq","IS_RECORD_SYMBOL","isRecord","maybeRecord","isImmutable","maybeImmutable","IS_ORDERED_SYMBOL","isOrdered","maybeOrdered","ITERATE_KEYS","ITERATE_VALUES","ITERATE_ENTRIES","REAL_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","k","iteratorResult","iteratorDone","hasIterator","maybeIterable","getIteratorFn","isIterator","maybeIterator","getIterator","KEYS","VALUES","ENTRIES","inspect","toSource","Collection$$1","emptySequence","toSeq","maybeIndexedSeqFromValue","ObjectSeq","seqFromValue","__toString","cacheResult","__iterateUncached","entrySeq","entry","__iterator","__iteratorUncached","toKeyedSeq","fromEntrySeq","keyedSeqFromValue","toIndexedSeq","indexedSeqFromValue","toSetSeq","ArraySeq","_array","notSetValue","ii","_object","_keys","EMPTY_SEQ","CollectionSeq","collection","_collection","iterations","IS_MAP_SYMBOL","maybeMap","isOrderedMap","maybeOrderedMap","isValueObject","maybeValue","hashCode","valueA","valueB","imul","c","d","smi","i32","defaultValueOf","hash","hashNumber","STRING_HASH_CACHE_MIN_STRLEN","string","hashed","stringHashCache","hashString","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","cachedHashString","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","propertyIsEnumerable","node","uniqueID","documentElement","getIENodeHash","objHashUID","isExtensible","hashJSObj","charCodeAt","ToKeyedSequence","KeyedSeq$$1","indexed","useKeys","_iter","_useKeys","valueSeq","this$1","reversedSequence","reverseFactory","mapper","mappedSequence","mapFactory","ToIndexedSequence","IndexedSeq$$1","ToSetSequence","SetSeq$$1","FromEntriesSequence","entries","validateEntry","indexedCollection","flipFactory","flipSequence","makeSequence","cacheResultThrough","filterFactory","filterSequence","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","skipped","isSkipping","skipWhileFactory","skipSequence","skipping","flattenFactory","flatSequence","stopped","flatDeep","currentDepth","stack","pop","sortFactory","defaultComparator","isKeyedCollection","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","iters","zipAll","zipSequence","sizes","iterators","isDone","steps","every","s","reify","collectionClass","arrCopy","offset","newArr","invariant","condition","assertNotInfinite","coerceKeyPath","keyPath","isDataStructure","quoteString","JSON","stringify","_ignoreError","shallowCopy","collectionCopy","splice","updateIn","updater","updatedValue","updateInDeeply","inImmutable","existing","wasNotSet","existingValue","newValue","nextExisting","nextUpdated","emptyMap","setIn$1","removeIn","deleteIn","update$1","updateIn$1","mergeIntoKeyedWith","mergeWith","merger","collections","collection$1","__ownerID","withMutations","mergeIntoCollection","oldVal","merge$1","sources","mergeWithSources","mergeWith$1","mergeDeep","mergeDeepWithSources","mergeDeepWith","deepMerger","oldValue","deepMergerWith","merged","mergeItem","hasVal","nextVal","mergeDeep$1","mergeDeepWith$1","mergeIn","m","mergeDeepIn","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","__altered","KeyedCollection$$1","keyValues","_root","updateMap","deleteAll","clear","__hash","OrderedMap","sortBy","MapIterator","iterate","ownerID","makeMap","MapPrototype","removeAll","ArrayMapNode","keyHash","didChangeSize","didAlter","removed","exists","MAX_ARRAY_MAP_SIZE","ValueNode","createNodes","isEditable","newEntries","BitmapIndexedNode","bitmap","nodes","bit","popCount","keyHashFrag","newNode","updateNode","MAX_BITMAP_INDEXED_SIZE","including","expandedNodes","HashArrayMapNode","expandNodes","isLeafNode","newBitmap","newNodes","setAt","canEdit","newLen","newArray","after","spliceOut","spliceIn","newCount","MIN_HASH_ARRAY_MAP_SIZE","excluding","packedII","packedNodes","packNodes","HashCollisionNode","mergeIntoNode","keyMatch","maxIndex","EMPTY_MAP","Iterator$$1","_type","_reverse","_stack","mapIteratorFrame","mapIteratorValue","subNode","__prev","prev","root","hash$$1","newRoot","newSize","idx1","idx2","IS_LIST_SYMBOL","isList","maybeList","List","IndexedCollection$$1","emptyList","makeList","VNode","setSize","listNodeFor","_origin","setListBounds","newTail","_tail","getTailOffset","_capacity","updateVNode","_level","updateList","oldSize","unshift","arguments$1","seqs","argument","iterateList","DONE","ListPrototype","removeBefore","level","originIndex","newChild","removingFirst","oldChild","editable","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","left","right","tailPos","iterateNodeOrLeaf","iterateLeaf","iterateNode","origin","capacity","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","EMPTY_ORDERED_MAP","Map$$1","emptyOrderedMap","_map","_list","updateOrderedMap","newMap","newList","makeOrderedMap","omap","toMap","IS_STACK_SYMBOL","isStack","maybeStack","Stack","emptyStack","pushAll","_head","peek","makeStack","EMPTY_STACK","StackPrototype","unshiftAll","IS_SET_SYMBOL","maybeSet","isOrderedSet","maybeOrderedSet","deepEqual","notAssociative","flipped","_","bSize","mixin","ctor","methods","keyCopier","result$1","SetCollection$$1","emptySet","add","fromKeys","keySeq","intersect","sets","SetPrototype","union","updateSet","removes","adds","mapped","toRemove","OrderedSet","__make","__empty","EMPTY_SET","makeSet","EMPTY_RANGE","Range","start","_start","_end","_step","possibleIndex","offsetValue","lastIndexOf","other","getIn","searchKeyPath","getIn$1","toObject","useTuples","toOrderedMap","toOrderedSet","toSet","toStack","toList","__toStringMapper","singleton","concatSeq","flatten","sum","concatFactory","returnValue","findEntry","sideEffect","separator","joined","isFirst","initialReduction","not","butLast","countBy","grouper","groups","countByFactory","entriesSequence","entryMapper","filterNot","found","findKey","findLast","findLastEntry","findLastKey","first","flatMap","coerce","flatMapFactory","searchKey","groupBy","isKeyedIter","groupByFactory","isSubset","isSuperset","keyOf","keyMapper","lastKeyOf","maxBy","neg","defaultNegComparator","minBy","rest","skip","amount","skipLast","skipWhile","skipUntil","take","takeLast","takeWhile","takeSequence","iterating","takeWhileFactory","takeUntil","ordered","keyed","h","murmurHashOfSize","hashMerge","hashCollection","CollectionPrototype","toJSON","mapEntries","KeyedCollectionPrototype","removeNum","numArgs","spliced","findLastIndex","interpose","interposedSequence","interposeFactory","interleave","zipped","interleaved","defaultZipper","zipWith","IndexedCollectionPrototype","reduction","useFirst","Set$$1","emptyOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","Record","defaultValues","hasInitialized","RecordType","indices","RecordTypePrototype","_indices","_name","_defaultValues","warn","recordName","setProp","_values","l","RecordPrototype","displayName","recordSeq","newValues","makeRecord","getDescriptiveName","likeRecord","record","EMPTY_REPEAT","Repeat","times","converter","fromJSWith","defaultConverter","parentValue","converted","version","Immutable","Iterable"],"mappings":"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","file":"static/js/3.64ae2eae.chunk.js","sourcesContent":["import { always } from 'ramda';\n/**\n * A function that returns `undefined`.\n *\n * @func stubUndefined\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.0.0|v1.0.0}\n * @category Function\n * @sig ... -> undefined\n * @return {undefined}\n * @example\n *\n * RA.stubUndefined(); //=> undefined\n * RA.stubUndefined(1, 2, 3); //=> undefined\n */\n\nvar stubUndefined = always(void 0); // eslint-disable-line no-void\n\nexport default stubUndefined;","import { equals } from 'ramda';\nimport stubUndefined from './stubUndefined';\n/**\n * Checks if input value is `undefined`.\n *\n * @func isUndefined\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.0.1|v0.0.1}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotUndefined|isNotUndefined}\n * @example\n *\n * RA.isUndefined(1); //=> false\n * RA.isUndefined(undefined); //=> true\n * RA.isUndefined(null); //=> false\n */\n\nvar isUndefined = equals(stubUndefined());\nexport default isUndefined;","import { complement } from 'ramda';\nimport isUndefined from './isUndefined';\n/**\n * Checks if input value is complement `undefined`.\n *\n * @func isNotUndefined\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.0.1|v0.0.1}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isUndefined|isUndefined}\n * @example\n *\n * RA.isNotUndefined(1); //=> true\n * RA.isNotUndefined(undefined); //=> false\n * RA.isNotUndefined(null); //=> true\n */\n\nvar isNotUndefined = complement(isUndefined);\nexport default isNotUndefined;","import { equals } from 'ramda';\n/**\n * Checks if input value is `null`.\n *\n * @func isNull\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.1.0|v0.1.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotNull|isNotNull}\n * @example\n *\n * RA.isNull(1); //=> false\n * RA.isNull(undefined); //=> false\n * RA.isNull(null); //=> true\n */\n\nvar isNull = equals(null);\nexport default isNull;","import { complement } from 'ramda';\nimport isNull from './isNull';\n/**\n * Checks if input value is complement of `null`.\n *\n * @func isNotNull\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.1.0|v0.1.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNull|isNull}\n * @example\n *\n * RA.isNotNull(1); //=> true\n * RA.isNotNull(undefined); //=> true\n * RA.isNotNull(null); //=> false\n */\n\nvar isNotNull = complement(isNull);\nexport default isNotNull;","import { isNil, complement } from 'ramda';\n/**\n * Checks if input value is complement of `null` or `undefined`.\n *\n * @func isNotNil\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.3.0|v0.3.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link http://ramdajs.com/docs/#isNil|R.isNil}\n * @example\n *\n * RA.isNotNil(null); //=> false\n * RA.isNotNil(undefined); //=> false\n * RA.isNotNil(0); //=> true\n * RA.isNotNil([]); //=> true\n */\n\nvar isNotNil = complement(isNil);\nexport default isNotNil;","import { type, is, F as stubFalse, either, identical, pipe, curryN } from 'ramda';\nvar GeneratorFunction = null;\nvar legacyCheck = null;\n\ntry {\n GeneratorFunction = new Function('return function* () {}')().constructor; // eslint-disable-line no-new-func\n\n legacyCheck = is(GeneratorFunction);\n} catch (e) {\n legacyCheck = stubFalse;\n}\n/**\n * Checks if input value is `Generator Function`.\n *\n * @func isGeneratorFunction\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.5.0|v0.5.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isFunction|isFunction}, {@link RA.isAsyncFunction|isAsyncFunction}, {@link RA.isNotGeneratorFunction|isNotGeneratorFunction}\n * @example\n *\n * RA.isGeneratorFunction(function* test() { }); //=> true\n * RA.isGeneratorFunction(null); //=> false\n * RA.isGeneratorFunction(function test() { }); //=> false\n * RA.isGeneratorFunction(() => {}); //=> false\n */\n\n\nvar isGeneratorFunction = curryN(1, either(pipe(type, identical('GeneratorFunction')), legacyCheck));\nexport default isGeneratorFunction;","import { pipe, type, identical, curryN } from 'ramda';\n/**\n * Checks if input value is `Async Function`.\n *\n * @func isAsyncFunction\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.5.0|v0.5.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isFunction|isFunction}, {@link RA.isNotAsyncFunction|isNotAsyncFunction}, {@link RA.isGeneratorFunction|isGeneratorFunction}\n * @example\n *\n * RA.isAsyncFunction(async function test() { }); //=> true\n * RA.isAsyncFunction(null); //=> false\n * RA.isAsyncFunction(function test() { }); //=> false\n * RA.isAsyncFunction(() => {}); //=> false\n */\n\nvar isAsyncFunction = curryN(1, pipe(type, identical('AsyncFunction')));\nexport default isAsyncFunction;","import { anyPass, type, pipe, identical } from 'ramda';\nimport isGeneratorFunction from './isGeneratorFunction';\nimport isAsyncFunction from './isAsyncFunction';\n/**\n * Checks if input value is `Function`.\n *\n * @func isFunction\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.5.0|v0.5.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotFunction|isNotFunction}, {@link RA.isAsyncFunction|isNotAsyncFunction}, {@link RA.isGeneratorFunction|isGeneratorFunction}\n * @example\n *\n * RA.isFunction(function test() { }); //=> true\n * RA.isFunction(function* test() { }); //=> true\n * RA.isFunction(async function test() { }); //=> true\n * RA.isFunction(() => {}); //=> true\n * RA.isFunction(null); //=> false\n * RA.isFunction('abc'); //=> false\n */\n\nvar isFunction = anyPass([pipe(type, identical('Function')), isGeneratorFunction, isAsyncFunction]);\nexport default isFunction;","import { curryN, pipe, type, identical } from 'ramda';\nimport isFunction from './isFunction';\n/**\n * Checks if input value is `Array`.\n *\n * @func isArray\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.3.0|v0.3.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotArray|isNotArray}\n * @example\n *\n * RA.isArray([]); //=> true\n * RA.isArray(null); //=> false\n * RA.isArray({}); //=> false\n */\n\nvar isArray = curryN(1, isFunction(Array.isArray) ? Array.isArray : pipe(type, identical('Array')));\nexport default isArray;","import { hasIn, curryN } from 'ramda';\nimport isFunction from './isFunction';\n/**\n * Checks whether the passed value is iterable.\n *\n * @func isIterable\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.18.0|v2.18.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol}\n * @return {boolean}\n * @example\n *\n * RA.isIterable(['arrays', 'are', 'iterable']); //=> true\n * RA.isIterable('strings are iterable, too'); //=> true\n * RA.isIterable((function* () {})()); //=> true (generator objects are both iterable and iterators)\n *\n * RA.isIterable({}); //=> false\n * RA.isIterable(-0); //=> false\n * RA.isIterable(null); //=> false\n * RA.isIterable(undefined); //=> false\n */\n\nvar isIterable = curryN(1, function (val) {\n if (typeof Symbol === 'undefined') {\n return false;\n }\n\n return hasIn(Symbol.iterator, Object(val)) && isFunction(val[Symbol.iterator]);\n});\nexport default isIterable;","import { both, isEmpty } from 'ramda';\nimport isArray from './isArray';\n/**\n * Checks if input value is an empty `Array`.\n *\n * @func isEmptyArray\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.4.0|v2.4.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotEmptyArray|isNotEmptyArray}\n * @example\n *\n * RA.isEmptyArray([]); // => true\n * RA.isEmptyArray([42]); // => false\n * RA.isEmptyArray({}); // => false\n * RA.isEmptyArray(null); // => false\n * RA.isEmptyArray(undefined); // => false\n * RA.isEmptyArray(42); // => false\n * RA.isEmptyArray('42'); // => false\n */\n\nvar isEmptyArray = both(isArray, isEmpty);\nexport default isEmptyArray;","import { complement } from 'ramda';\nimport isArray from './isArray';\n/**\n * Checks if input value is complement of `Array`\n *\n * @func isNotArray\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.3.0|v0.3.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isArray|isArray}\n * @example\n *\n * RA.isNotArray([]); //=> false\n * RA.isNotArray(null); //=> true\n * RA.isNotArray({}); //=> true\n */\n\nvar isNotArray = complement(isArray);\nexport default isNotArray;","import { complement, isEmpty } from 'ramda';\n/**\n * Returns true if the given value is not its type's empty value; `false` otherwise.\n *\n * @func isNotEmpty\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.4.0|v0.4.0}\n * @category Logic\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link http://ramdajs.com/docs/#isEmpty|R.isEmpty}\n * @example\n *\n * RA.isNotEmpty([1, 2, 3]); //=> true\n * RA.isNotEmpty([]); //=> false\n * RA.isNotEmpty(''); //=> false\n * RA.isNotEmpty(null); //=> true\n * RA.isNotEmpty(undefined): //=> true\n * RA.isNotEmpty({}); //=> false\n * RA.isNotEmpty({length: 0}); //=> true\n */\n\nvar isNotEmpty = complement(isEmpty);\nexport default isNotEmpty;","import { both } from 'ramda';\nimport isNotEmpty from './isNotEmpty';\nimport isArray from './isArray';\n/**\n * Checks if input value is not an empty `Array`.\n *\n * @func isNonEmptyArray\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.4.0|v2.4.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isEmptyArray|isEmptyArray}\n * @example\n *\n * RA.isNonEmptyArray([42]); // => true\n * RA.isNonEmptyArray([]); // => false\n * RA.isNonEmptyArray({}); // => false\n * RA.isNonEmptyArray(null); // => false\n * RA.isNonEmptyArray(undefined); // => false\n * RA.isNonEmptyArray(42); // => false\n * RA.isNonEmptyArray('42'); // => false\n */\n\nvar isNonEmptyArray = both(isArray, isNotEmpty);\nexport default isNonEmptyArray;","import { type, identical, pipe, curryN } from 'ramda';\n/**\n * Checks if input value is `Boolean`.\n *\n * @func isBoolean\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.3.0|v0.3.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotBoolean|isNotBoolean}\n * @example\n *\n * RA.isBoolean(false); //=> true\n * RA.isBoolean(true); //=> true\n * RA.isBoolean(null); //=> false\n */\n\nvar isBoolean = curryN(1, pipe(type, identical('Boolean')));\nexport default isBoolean;","import { complement } from 'ramda';\nimport isBoolean from './isBoolean';\n/**\n * Checks if input value is complement of `Boolean`.\n *\n * @func isNotBoolean\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.3.0|v0.3.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isBoolean|isBoolean}\n * @example\n *\n * RA.isNotBoolean(false); //=> false\n * RA.isNotBoolean(true); //=> false\n * RA.isNotBoolean(null); //=> true\n */\n\nvar isNotBoolean = complement(isBoolean);\nexport default isNotBoolean;","import { either, isEmpty, isNil, curryN } from 'ramda';\n/**\n * Returns `true` if the given value is its type's empty value, `null` or `undefined`.\n *\n * @func isNilOrEmpty\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.4.0|v0.4.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link http://ramdajs.com/docs/#isEmpty|R.isEmpty}, {@link http://ramdajs.com/docs/#isNil|R.isNil}\n * @example\n *\n * RA.isNilOrEmpty([1, 2, 3]); //=> false\n * RA.isNilOrEmpty([]); //=> true\n * RA.isNilOrEmpty(''); //=> true\n * RA.isNilOrEmpty(null); //=> true\n * RA.isNilOrEmpty(undefined): //=> true\n * RA.isNilOrEmpty({}); //=> true\n * RA.isNilOrEmpty({length: 0}); //=> false\n */\n\nvar isNilOrEmpty = curryN(1, either(isNil, isEmpty));\nexport default isNilOrEmpty;","import { curryN, pipe, type, identical } from 'ramda';\n/**\n * Checks if input value is `String`.\n *\n * @func isString\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.4.0|v0.4.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotString|isNotString}\n * @example\n *\n * RA.isString('abc'); //=> true\n * RA.isString(1); //=> false\n */\n\nvar isString = curryN(1, pipe(type, identical('String')));\nexport default isString;","import { equals } from 'ramda';\n/**\n * Checks if input value is an empty `String`.\n *\n * @func isEmptyString\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.4.0|v2.4.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotEmptyString|isNotEmptyString}\n * @example\n *\n * RA.isEmptyString(''); // => true\n * RA.isEmptyString('42'); // => false\n * RA.isEmptyString(new String('42')); // => false\n * RA.isEmptyString(new String('')); // => false\n * RA.isEmptyString([42]); // => false\n * RA.isEmptyString({}); // => false\n * RA.isEmptyString(null); // => false\n * RA.isEmptyString(undefined); // => false\n * RA.isEmptyString(42); // => false\n */\n\nvar isEmptyString = equals('');\nexport default isEmptyString;","import { complement } from 'ramda';\nimport isString from './isString';\n/**\n * Checks if input value is complement of `String`.\n *\n * @func isNotString\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.4.0|v0.4.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isString|isString}\n * @example\n *\n * RA.isNotString('abc'); //=> false\n * RA.isNotString(1); //=> true\n */\n\nvar isNotString = complement(isString);\nexport default isNotString;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar isOfTypeObject = function isOfTypeObject(val) {\n return _typeof(val) === 'object';\n};\n\nexport default isOfTypeObject;","import { both, either, curryN } from 'ramda';\nimport isNotNull from './isNotNull';\nimport isFunction from './isFunction';\nimport isOfTypeObject from './internal/isOfTypeObject';\n/* eslint-disable max-len */\n\n/**\n * Checks if input value is language type of `Object`.\n *\n * @func isObj\n * @aliases isObject\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.5.0|v0.5.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotObj|isNotObj}, {@link RA.isObjLike|isObjLike}, {@link RA.isPlainObj|isPlainObj}\n * @example\n *\n * RA.isObj({}); //=> true\n * RA.isObj([]); //=> true\n * RA.isObj(() => {}); //=> true\n * RA.isObj(null); //=> false\n * RA.isObj(undefined); //=> false\n */\n\n/* eslint-enable max-len */\n\nvar isObj = curryN(1, both(isNotNull, either(isOfTypeObject, isFunction)));\nexport default isObj;","import { complement } from 'ramda';\nimport isObj from './isObj';\n/* eslint-disable max-len */\n\n/**\n * Checks if input value is complement of language type of `Object`.\n *\n * @func isNotObj\n * @aliases isNotObject\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.5.0|v0.5.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isObj|isObj}, {@link RA.isObjLike|isObjLike}, {@link RA.isPlainObj|isPlainObj}\n * @example\n *\n * RA.isNotObj({}); //=> false\n * RA.isNotObj([]); //=> false\n * RA.isNotObj(() => {}); //=> false\n * RA.isNotObj(null); //=> true\n * RA.isNotObj(undefined); //=> true\n */\n\n/* eslint-enable max-len */\n\nvar isNotObj = complement(isObj);\nexport default isNotObj;","import { allPass } from 'ramda';\nimport isString from './isString';\nimport isNotObj from './isNotObj';\nimport isNotEmpty from './isNotEmpty';\n/**\n * Checks if input value is not an empty `String`.\n *\n * @func isNonEmptyString\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.4.0|v2.4.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isEmptyString|isEmptyString}\n * @example\n *\n * RA.isNonEmptyString('42'); // => true\n * RA.isNonEmptyString(''); // => false\n * RA.isNonEmptyString(new String('42')); // => false\n * RA.isNonEmptyString(new String('')); // => false\n * RA.isNonEmptyString([42]); // => false\n * RA.isNonEmptyString({}); // => false\n * RA.isNonEmptyString(null); // => false\n * RA.isNonEmptyString(undefined); // => false\n * RA.isNonEmptyString(42); // => false\n */\n\nvar isNonEmptyString = allPass([isString, isNotObj, isNotEmpty]);\nexport default isNonEmptyString;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport { has, curryN } from 'ramda';\nimport isArray from './isArray';\nimport isString from './isString';\n/* eslint-disable max-len */\n\n/**\n * Tests whether or not an object is similar to an array.\n *\n * @func isArrayLike\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.9.0|v1.9.0}\n * @licence https://github.com/ramda/ramda/blob/master/LICENSE.txt\n * @category List\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @returns {boolean} `true` if `val` has a numeric length property and extreme indices defined; `false` otherwise.\n * @see {@link RA.isNotArrayLike|isNotArrayLike}\n\n * @example\n *\n * RA.isArrayLike([]); //=> true\n * RA.isArrayLike(true); //=> false\n * RA.isArrayLike({}); //=> false\n * RA.isArrayLike({length: 10}); //=> false\n * RA.isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true\n */\n\n/* eslint-enable max-len */\n\nvar isArrayLike = curryN(1, function (val) {\n if (isArray(val)) {\n return true;\n }\n\n if (!val) {\n return false;\n }\n\n if (isString(val)) {\n return false;\n }\n\n if (_typeof(val) !== 'object') {\n return false;\n }\n\n if (val.nodeType === 1) {\n return !!val.length;\n }\n\n if (val.length === 0) {\n return true;\n }\n\n if (val.length > 0) {\n return has(0, val) && has(val.length - 1, val);\n }\n\n return false;\n});\nexport default isArrayLike;\n/**\n The MIT License (MIT)\n\n Copyright (c) 2013-2016 Scott Sauyet and Michael Hurley\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/","import { complement } from 'ramda';\nimport isArrayLike from './isArrayLike';\n/**\n * Tests whether or not an object is similar to an array.\n *\n * @func isNotArrayLike\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.5.0|v0.5.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isArrayLike|isArrayLike}\n * @example\n *\n * RA.isNotArrayLike([]); //=> false\n * RA.isNotArrayLike(true); //=> true\n * RA.isNotArrayLike({}); //=> true\n * RA.isNotArrayLike({length: 10}); //=> true\n * RA.isNotArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> false\n */\n\nvar isNotArrayLike = complement(isArrayLike);\nexport default isNotArrayLike;","import { complement } from 'ramda';\nimport isGeneratorFunction from './isGeneratorFunction';\n/* eslint-disable max-len */\n\n/**\n * Checks if input value is complement of `Generator Function`\n *\n * @func isNotGeneratorFunction\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.5.0|v0.5.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isFunction|isFunction}, {@link RA.isAsyncFunction|isAsyncFunction}, {@link RA.isGeneratorFunction|isGeneratorFunction}\n * @example\n *\n * RA.isNotGeneratorFunction(function* test() { }); //=> false\n * RA.isNotGeneratorFunction(null); //=> true\n * RA.isNotGeneratorFunction(function test() { }); //=> true\n * RA.isNotGeneratorFunction(() => {}); //=> true\n */\n\n/* eslint-enable max-len */\n\nvar isNotGeneratorFunction = complement(isGeneratorFunction);\nexport default isNotGeneratorFunction;","import { complement } from 'ramda';\nimport isAsyncFunction from './isAsyncFunction';\n/* eslint-disable max-len */\n\n/**\n * Checks if input value is complement of `Async Function`\n *\n * @func isNotAsyncFunction\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.5.0|v0.5.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isFunction|isFunction}, {@link RA.isAsyncFunction|isAsyncFunction}, {@link RA.isGeneratorFunction|isGeneratorFunction}\n * @example\n *\n * RA.isNotAsyncFunction(async function test() { }); //=> false\n * RA.isNotAsyncFunction(null); //=> true\n * RA.isNotAsyncFunction(function test() { }); //=> true\n * RA.isNotAsyncFunction(() => {}); //=> true\n */\n\n/* eslint-enable max-len */\n\nvar isNotAsyncFunction = complement(isAsyncFunction);\nexport default isNotAsyncFunction;","import { complement } from 'ramda';\nimport isFunction from './isFunction';\n/* eslint-disable max-len */\n\n/**\n * Checks if input value is complement of `Function`.\n *\n * @func isNotFunction\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.5.0|v0.5.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isFunction|isFunction}, {@link RA.isAsyncFunction|isNotAsyncFunction}, {@link RA.isGeneratorFunction|isGeneratorFunction}\n * @example\n *\n * RA.isNotFunction(function test() { }); //=> false\n * RA.isNotFunction(function* test() { }); //=> false\n * RA.isNotFunction(async function test() { }); //=> false\n * RA.isNotFunction(() => {}); //=> false\n * RA.isNotFunction(null); //=> true\n * RA.isNotFunction('abc'); //=> true\n */\n\n/* eslint-enable max-len */\n\nvar isNotFunction = complement(isFunction);\nexport default isNotFunction;","import { both, curryN } from 'ramda';\nimport isNotNull from './isNotNull';\nimport isOfTypeObject from './internal/isOfTypeObject';\n/* eslint-disable max-len */\n\n/**\n * Checks if value is object-like. A value is object-like if it's not null and has a typeof result of \"object\".\n *\n * @func isObjLike\n * @aliases isObjectLike\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.5.0|v0.5.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotObjLike|isNotObjLike}, {@link RA.isObj|isObj}, {@link RA.isPlainObj|isPlainObj}\n * @example\n *\n * RA.isObjLike({}); //=> true\n * RA.isObjLike([]); //=> true\n * RA.isObjLike(() => {}); //=> false\n * RA.isObjLike(null); //=> false\n * RA.isObjLike(undefined); //=> false\n */\n\n/* eslint-enable max-len */\n\nvar isObjLike = curryN(1, both(isNotNull, isOfTypeObject));\nexport default isObjLike;","import { complement } from 'ramda';\nimport isObjLike from './isObjLike';\n/* eslint-disable max-len */\n\n/**\n * Checks if value is not object-like. A value is object-like if it's not null and has a typeof result of \"object\".\n *\n * @func isNotObjLike\n * @aliases isNotObjectLike\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.5.0|v0.5.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isObjLike|isObjLike}, {@link RA.isObj|isObj}, {@link RA.isPlainObj|isPlainObj}\n * @example\n *\n * RA.isNotObjLike({}); //=> false\n * RA.isNotObjLike([]); //=> false\n * RA.isNotObjLike(() => {}); //=> true\n * RA.isNotObjLike(null); //=> true\n * RA.isNotObjLike(undefined); //=> true\n */\n\n/* eslint-enable max-len */\n\nvar isNotObjLike = complement(isObjLike);\nexport default isNotObjLike;","import { pipe, type, identical, both, equals, toString, pathSatisfies, curryN } from 'ramda';\nimport isNull from './isNull';\nimport isObjLike from './isObjLike';\nimport isFunction from './isFunction';\nvar isObject = pipe(type, identical('Object'));\nvar isObjectConstructor = pipe(toString, equals(toString(Object)));\nvar hasObjectConstructor = pathSatisfies(both(isFunction, isObjectConstructor), ['constructor']);\n/* eslint-disable max-len */\n\n/**\n * Check to see if an object is a plain object (created using `{}`, `new Object()` or `Object.create(null)`).\n *\n * @func isPlainObj\n * @aliases isPlainObject\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.5.0|v0.5.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotPlainObj|isNotPlainObj}, {@link RA.isObjLike|isObjLike}, {@link RA.isObj|isObj}\n * @example\n *\n * class Bar {\n * constructor() {\n * this.prop = 'value';\n * }\n * }\n *\n * RA.isPlainObj(new Bar()); //=> false\n * RA.isPlainObj({ prop: 'value' }); //=> true\n * RA.isPlainObj(['a', 'b', 'c']); //=> false\n * RA.isPlainObj(Object.create(null); //=> true\n * RA.isPlainObj(new Object()); //=> true\n */\n\n/* eslint-enable max-len */\n\nvar isPlainObj = curryN(1, function (val) {\n if (!isObjLike(val) || !isObject(val)) {\n return false;\n }\n\n var proto = Object.getPrototypeOf(val);\n\n if (isNull(proto)) {\n return true;\n }\n\n return hasObjectConstructor(proto);\n});\nexport default isPlainObj;","import { complement } from 'ramda';\nimport isPlainObj from './isPlainObj';\n/* eslint-disable max-len */\n\n/**\n * Check to see if an object is a not plain object (created using `{}`, `new Object()` or `Object.create(null)`).\n *\n * @func isNotPlainObj\n * @aliases isNotPlainObject\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.5.0|v0.5.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isPlainObj|isPlainObj}, {@link RA.isObjLike|isObjLike}, {@link RA.isObj|isObj}\n * @example\n *\n * class Bar {\n * constructor() {\n * this.prop = 'value';\n * }\n * }\n *\n * RA.isNotPlainObj(new Bar()); //=> true\n * RA.isNotPlainObj({ prop: 'value' }); //=> false\n * RA.isNotPlainObj(['a', 'b', 'c']); //=> true\n * RA.isNotPlainObj(Object.create(null); //=> false\n * RA.isNotPlainObj(new Object()); //=> false\n */\n\n/* eslint-enable max-len */\n\nvar isNotPlainObj = complement(isPlainObj);\nexport default isNotPlainObj;","import { type, identical, pipe, curryN } from 'ramda';\n/**\n * Checks if value is `Date` object.\n *\n * @func isDate\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.6.0|v0.6.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotDate|isNotDate}, {@link RA.isValidDate|isValidDate}, {@link RA.isNotValidDate|isNotValidDate}\n * @example\n *\n * RA.isDate(new Date()); //=> true\n * RA.isDate('1997-07-16T19:20+01:00'); //=> false\n */\n\nvar isDate = curryN(1, pipe(type, identical('Date')));\nexport default isDate;","import { complement } from 'ramda';\nimport isDate from './isDate';\n/**\n * Checks if value is complement of `Date` object.\n *\n * @func isNotDate\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.6.0|v0.6.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isDate|isDate}\n * @example\n *\n * RA.isNotDate(new Date()); //=> false\n * RA.isNotDate('1997-07-16T19:20+01:00'); //=> true\n */\n\nvar isNotDate = complement(isDate);\nexport default isNotDate;","import { curryN, pipe, type, identical } from 'ramda';\n/**\n * Checks if value is a `Number` primitive or object.\n *\n * @func isNumber\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.6.0|v0.6.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotNumber|isNotNumber}\n * @example\n *\n * RA.isNumber(5); // => true\n * RA.isNumber(Number.MAX_VALUE); // => true\n * RA.isNumber(-Infinity); // => true\n * RA.isNumber(NaN); // => true\n * RA.isNumber('5'); // => false\n */\n\nvar isNumber = curryN(1, pipe(type, identical('Number')));\nexport default isNumber;","import { both } from 'ramda';\nimport isNumber from '../../isNumber'; // eslint-disable-next-line no-restricted-globals\n\nvar isNaNPonyfill = both(isNumber, isNaN);\nexport default isNaNPonyfill;","import { curryN } from 'ramda';\nimport isFunction from './isFunction';\nimport ponyfill from './internal/ponyfills/Number.isNaN';\nexport var isNaNPonyfill = curryN(1, ponyfill);\n/**\n * Checks whether the passed value is `NaN` and its type is `Number`.\n * It is a more robust version of the original, global isNaN().\n *\n *\n * @func isNaN\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.6.0|v0.6.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotNaN|isNotNaN}\n * @example\n *\n * RA.isNaN(NaN); // => true\n * RA.isNaN(Number.NaN); // => true\n * RA.isNaN(0 / 0); // => true\n *\n * // e.g. these would have been true with global isNaN().\n * RA.isNaN('NaN'); // => false\n * RA.isNaN(undefined); // => false\n * RA.isNaN({}); // => false\n * RA.isNaN('blabla'); // => false\n *\n * RA.isNaN(true); // => false\n * RA.isNaN(null); // => false\n * RA.isNaN(37); // => false\n * RA.isNaN('37'); // => false\n * RA.isNaN('37.37'); // => false\n * RA.isNaN(''); // => false\n * RA.isNaN(' '); // => false\n */\n\nvar _isNaN = isFunction(Number.isNaN) ? curryN(1, Number.isNaN) : isNaNPonyfill;\n\nexport default _isNaN;","import { complement } from 'ramda';\nimport _isNaN from './isNaN';\n/**\n * Checks whether the passed value is complement of `NaN` and its type is not `Number`.\n *\n * @func isNotNaN\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.6.0|v0.6.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNaN|isNaN}\n * @example\n *\n * RA.isNotNaN(NaN); // => false\n * RA.isNotNaN(Number.NaN); // => false\n * RA.isNotNaN(0 / 0); // => false\n *\n * RA.isNotNaN('NaN'); // => true\n * RA.isNotNaN(undefined); // => true\n * RA.isNotNaN({}); // => true\n * RA.isNotNaN('blabla'); // => true\n *\n * RA.isNotNaN(true); // => true\n * RA.isNotNaN(null); // => true\n * RA.isNotNaN(37); // => true\n * RA.isNotNaN('37'); // => true\n * RA.isNotNaN('37.37'); // => true\n * RA.isNotNaN(''); // => true\n * RA.isNotNaN(' '); // => true\n */\n\nvar isNotNaN = complement(_isNaN);\nexport default isNotNaN;","import { invoker, both, pipe, curryN } from 'ramda';\nimport isDate from './isDate';\nimport isNotNaN from './isNotNaN';\n/* eslint-disable max-len */\n\n/**\n * Checks if value is valid `Date` object.\n *\n * @func isValidDate\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.8.0|v1.8.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isDate|isDate}, {@link RA.isNotDate|isNotDate}, {@link RA.isNotValidDate|isNotValidDate}\n * @example\n *\n * RA.isValidDate(new Date()); //=> true\n * RA.isValidDate(new Date('a')); //=> false\n */\n\n/* eslint-enable max-len */\n\nvar isValidDate = curryN(1, both(isDate, pipe(invoker(0, 'getTime'), isNotNaN)));\nexport default isValidDate;","import { complement } from 'ramda';\nimport isValidDate from './isValidDate';\n/**\n * Checks if value is complement of valid `Date` object.\n *\n * @func isNotValidDate\n * @aliases isInvalidDate\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.8.0|v1.8.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isValidDate|isValidDate}, {@link RA.isDate|isDate}, {@link RA.isNotDate|isNotDate}\n * @example\n *\n * RA.isNotValidDate(new Date()); //=> false\n * RA.isNotValidDate(new Date('a')); //=> true\n */\n\nvar isNotValidDate = complement(isValidDate);\nexport default isNotValidDate;","import { complement } from 'ramda';\nimport isNumber from './isNumber';\n/**\n * Checks if value is a complement of `Number` primitive or object.\n *\n * @func isNotNumber\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.6.0|v0.6.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNumber|isNumber}\n * @example\n *\n * RA.isNotNumber(5); // => false\n * RA.isNotNumber(Number.MAX_VALUE); // => false\n * RA.isNotNumber(-Infinity); // => false\n * RA.isNotNumber('5'); // => true\n */\n\nvar isNotNumber = complement(isNumber);\nexport default isNotNumber;","import { both, lt } from 'ramda';\nimport isNumber from './isNumber';\n/**\n * Checks if value is a positive `Number` primitive or object. Zero is not considered positive.\n *\n * @func isPositive\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.15.0|v1.15.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNegative|isNegative}\n * @example\n *\n * RA.isPositive(1); // => true\n * RA.isPositive(Number.MAX_VALUE); // => true\n * RA.isPositive(-Infinity); // => false\n * RA.isPositive(NaN); // => false\n * RA.isPositive('5'); // => false\n */\n\nvar isPositive = both(isNumber, lt(0));\nexport default isPositive;","import { both, gt, curryN } from 'ramda';\nimport isNumber from './isNumber';\n/**\n * Checks if value is a negative `Number` primitive or object. Zero is not considered neither\n * positive or negative.\n *\n * @func isNegative\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.15.0|v1.15.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isPositive|isPositive}\n * @example\n *\n * RA.isNegative(-1); // => true\n * RA.isNegative(Number.MIN_VALUE); // => false\n * RA.isNegative(+Infinity); // => false\n * RA.isNegative(NaN); // => false\n * RA.isNegative('5'); // => false\n */\n\nvar isNegative = curryN(1, both(isNumber, gt(0)));\nexport default isNegative;","import { identical } from 'ramda';\n/**\n * Checks if value is a positive zero (+0).\n *\n * @func isPositiveZero\n * @memberof RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNegativeZero|isNegativeZero}\n * @example\n *\n * RA.isPositiveZero(+0); //=> true\n * RA.isPositiveZero(0); //=> true\n * RA.isPositiveZero(-0); //=> false\n * RA.isPositiveZero(null); //=> false\n */\n\nvar isPositiveZero = identical(+0);\nexport default isPositiveZero;","import { identical } from 'ramda';\n/**\n * Checks if value is a negative zero (-0).\n *\n * @func isNegativeZero\n * @memberof RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see @see {@link RA.isPositiveZero|isPositiveZero}\n * @example\n *\n * RA.isNegativeZero(-0); //=> true\n * RA.isNegativeZero(+0); //=> false\n * RA.isNegativeZero(0); //=> false\n * RA.isNegativeZero(null); //=> false\n */\n\nvar isNegativeZero = identical(-0);\nexport default isNegativeZero;","import { complement } from 'ramda';\nimport isNilOrEmpty from './isNilOrEmpty';\n/**\n * Returns `false` if the given value is its type's empty value, `null` or `undefined`.\n *\n * @func isNotNilOrEmpty\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.18.0|v2.18.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNilOrEmpty|isNilOrEmpty}\n * @example\n *\n * RA.isNotNilOrEmpty([1, 2, 3]); //=> true\n * RA.isNotNilOrEmpty([]); //=> false\n * RA.isNotNilOrEmpty(''); //=> false\n * RA.isNotNilOrEmpty(null); //=> false\n * RA.isNotNilOrEmpty(undefined): //=> false\n * RA.isNotNilOrEmpty({}); //=> false\n * RA.isNotNilOrEmpty({length: 0}); //=> true\n */\n\nvar isNotNilOrEmpty = complement(isNilOrEmpty);\nexport default isNotNilOrEmpty;","import { both, lte, flip, curryN } from 'ramda';\nimport isNumber from './isNumber';\n/**\n * Checks if value is a non-positive `Number` primitive or object. This includes all negative\n * numbers and zero.\n *\n * @func isNonPositive\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.6.0|v2.6.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNegative|isNegative}, {@link RA.isNonNegative|isNonNegative}\n * @example\n *\n * RA.isNonPositive(0); // => true\n * RA.isNonPositive(-1); // => true\n * RA.isNonPositive(-Infinity); // => true\n * RA.isNonPositive(Number.MIN_VALUE); // => true\n *\n * RA.isNonPositive(Infinity); // => false\n * RA.isNonPositive(Number.MAX_VALUE); // => false\n * RA.isNonPositive(NaN); // => false\n */\n\nvar isNonPositive = curryN(1, both(isNumber, flip(lte)(0)));\nexport default isNonPositive;","import { both, gte, flip, curryN } from 'ramda';\nimport isNumber from './isNumber';\n/**\n * Checks if value is a non-negative `Number` primitive or object. This includes all positive\n * numbers and zero.\n *\n * @func isNonNegative\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.6.0|v2.6.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isPositive|isPositive}, {@link RA.isNonPositive|isNonPositive}\n * @example\n *\n * RA.isNonNegative(0); // => true\n * RA.isNonNegative(1); // => true\n * RA.isNonNegative(Infinity); // => true\n * RA.isNonNegative(Number.MAX_VALUE); // => true\n *\n * RA.isNonNegative(-Infinity); // => false\n * RA.isNonNegative(Number.MIN_VALUE); // => false\n * RA.isNonNegative(NaN); // => false\n */\n\nvar isNonNegative = curryN(1, both(isNumber, flip(gte)(0)));\nexport default isNonNegative;","import { type, identical, pipe, curryN } from 'ramda';\n/**\n * Predicate for determining if a provided value is an instance of a Map.\n *\n * @func isMap\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isSet|isSet}}\n * @example\n *\n * RA.isMap(new Map()); //=> true\n * RA.isMap(new Map([[1, 2], [2, 1]])); //=> true\n * RA.isSet(new Set()); //=> false\n * RA.isSet(new Set([1,2]); //=> false\n * RA.isSet(new Object()); //=> false\n */\n\nvar isMap = curryN(1, pipe(type, identical('Map')));\nexport default isMap;","import { complement } from 'ramda';\nimport isMap from './isMap';\n/**\n * Checks if value is complement of `Map` object.\n *\n * @func isNotMap\n * @memberOf RA\n * @category Type\n * @since {@link https://char0n.github.io/ramda-adjunct/2.27.0|v2.27.0}\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isMap|isMap}\n * @example\n *\n * RA.isNotMap(new Map()); //=> false\n * RA.isNotMap(new Map([[1, 2], [2, 1]])); //=> false\n * RA.isNotMap(new Set()); //=> true\n * RA.isNotMap({}); //=> true\n * RA.isNotMap(12); //=> true\n */\n\nvar isNotMap = complement(isMap);\nexport default isNotMap;","import { both } from 'ramda';\nimport isNumber from '../../isNumber'; // eslint-disable-next-line no-restricted-globals\n\nvar isFinitePonyfill = both(isNumber, isFinite);\nexport default isFinitePonyfill;","import { bind, curryN } from 'ramda';\nimport isFunction from './isFunction';\nimport ponyfill from './internal/ponyfills/Number.isFinite';\nexport var isFinitePonyfill = curryN(1, ponyfill);\n/**\n * Checks whether the passed value is a finite `Number`.\n *\n * @func isFinite\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.7.0|v0.7.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotFinite|isNotFinite}\n * @example\n *\n * RA.isFinite(Infinity); //=> false\n * RA.isFinite(NaN); //=> false\n * RA.isFinite(-Infinity); //=> false\n *\n * RA.isFinite(0); // true\n * RA.isFinite(2e64); // true\n *\n * RA.isFinite('0'); // => false\n * // would've been true with global isFinite('0')\n * RA.isFinite(null); // => false\n * // would've been true with global isFinite(null)\n */\n\nvar _isFinite = isFunction(Number.isFinite) ? curryN(1, bind(Number.isFinite, Number)) : isFinitePonyfill;\n\nexport default _isFinite;","import { complement } from 'ramda';\nimport _isFinite from './isFinite';\n/**\n * Checks whether the passed value is complement of finite `Number`.\n *\n *\n * @func isNotFinite\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.7.0|v0.7.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isFinite|isFinite}\n * @example\n *\n * RA.isNotFinite(Infinity); //=> true\n * RA.isNotFinite(NaN); //=> true\n * RA.isNotFinite(-Infinity); //=> true\n *\n * RA.isNotFinite(0); // false\n * RA.isNotFinite(2e64); // false\n *\n * RA.isNotFinite('0'); // => true\n * RA.isNotFinite(null); // => true\n */\n\nvar isNotFinite = complement(_isFinite);\nexport default isNotFinite;","import { both, converge, equals, identity } from 'ramda';\nimport isFinite from '../../isFinite';\nvar isIntegerPonyfill = both(isFinite, converge(equals, [Math.floor, identity]));\nexport default isIntegerPonyfill;","import { bind, curryN } from 'ramda';\nimport isFunction from './isFunction';\nimport ponyfill from './internal/ponyfills/Number.isInteger';\nexport var isIntegerPonyfill = curryN(1, ponyfill);\n/**\n * Checks whether the passed value is an `integer`.\n *\n * @func isInteger\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.7.0|v0.7.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotInteger|isNotInteger}\n * @example\n *\n * RA.isInteger(0); //=> true\n * RA.isInteger(1); //=> true\n * RA.isInteger(-100000); //=> true\n *\n * RA.isInteger(0.1); //=> false\n * RA.isInteger(Math.PI); //=> false\n *\n * RA.isInteger(NaN); //=> false\n * RA.isInteger(Infinity); //=> false\n * RA.isInteger(-Infinity); //=> false\n * RA.isInteger('10'); //=> false\n * RA.isInteger(true); //=> false\n * RA.isInteger(false); //=> false\n * RA.isInteger([1]); //=> false\n */\n\nvar isInteger = isFunction(Number.isInteger) ? curryN(1, bind(Number.isInteger, Number)) : isIntegerPonyfill;\nexport default isInteger;","import { curryN } from 'ramda';\n/**\n * Converts double-precision 64-bit binary format IEEE 754 to signed 32 bit integer number.\n *\n * @func toInteger32\n * @aliases toInt32\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.28.0|v2.28.0}\n * @category Math\n * @sig Number -> Number\n * @param {number} number A number\n * @return {number} A signed 32-bit integer number\n * @see {@link RA.toUInteger32|toUInteger32}, {@link http://speakingjs.com/es5/ch11.html#integers_via_bitwise_operators}\n * @example\n *\n * RA.toInteger32(2 ** 35); // => 0\n * RA.toInteger32(2 ** 30); // => 1073741824\n */\n// eslint-disable-next-line no-bitwise\n\nvar toInteger32 = curryN(1, function (val) {\n return val >> 0;\n});\nexport default toInteger32;","import { curryN } from 'ramda';\nimport toInteger32 from './toInteger32';\n/**\n * Checks whether the passed value is a signed 32 bit integer.\n *\n * @func isInteger32\n * @aliases isInt32\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.32.0|v2.32.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.toInteger32|toInteger32}\n * @example\n *\n * RA.isInteger32(0); //=> true\n * RA.isInteger32((-2) ** 31); //=> true\n *\n * RA.isInteger32(Infinity); //=> false\n * RA.isInteger32(NaN); //=> false\n * RA.isInteger32(2 ** 31); //=> false\n */\n\nvar isInteger32 = curryN(1, function (val) {\n return toInteger32(val) === val;\n});\nexport default isInteger32;","import { complement } from 'ramda';\nimport isInteger from './isInteger';\n/**\n * Checks whether the passed value is complement of an `integer`.\n *\n *\n * @func isNotInteger\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/0.7.0|v0.7.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isInteger|isInteger}\n * @example\n *\n * RA.isNotInteger(0); //=> false\n * RA.isNotInteger(1); //=> false\n * RA.isNotInteger(-100000); //=> false\n *\n * RA.isNotInteger(0.1); //=> true\n * RA.isNotInteger(Math.PI); //=> true\n *\n * RA.isNotInteger(NaN); //=> true\n * RA.isNotInteger(Infinity); //=> true\n * RA.isNotInteger(-Infinity); //=> true\n * RA.isNotInteger('10'); //=> true\n * RA.isNotInteger(true); //=> true\n * RA.isNotInteger(false); //=> true\n * RA.isNotInteger([1]); //=> true\n */\n\nvar isNotInteger = complement(isInteger);\nexport default isNotInteger;","import { type, pipe, identical, curryN } from 'ramda';\n/**\n * Checks if value is a BigInt.\n *\n * @func isBigInt\n * @memberOf RA\n * @category Type\n * @since {@link https://char0n.github.io/ramda-adjunct/2.27.0|v2.27.0}\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @example\n *\n * RA.isBigInt(5); // => false\n * RA.isBigInt(Number.MAX_VALUE); // => false\n * RA.isBigInt(-Infinity); // => false\n * RA.isBigInt(10); // => false\n * RA.isBigInt(10n); // => true\n * RA.isBigInt(BitInt(9007199254740991)); // => true\n */\n\nvar isBigInt = curryN(1, pipe(type, identical('BigInt')));\nexport default isBigInt;","import { complement, both } from 'ramda';\nimport isInteger from './isInteger';\nimport isFinite from './isFinite';\n/**\n * Checks whether the passed value is a `float`.\n *\n * @func isFloat\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.14.0|v1.14.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotFloat|isNotFloat}\n * @example\n *\n * RA.isFloat(0); //=> false\n * RA.isFloat(1); //=> false\n * RA.isFloat(-100000); //=> false\n *\n * RA.isFloat(0.1); //=> true\n * RA.isFloat(Math.PI); //=> true\n *\n * RA.isFloat(NaN); //=> false\n * RA.isFloat(Infinity); //=> false\n * RA.isFloat(-Infinity); //=> false\n * RA.isFloat('10'); //=> false\n * RA.isFloat(true); //=> false\n * RA.isFloat(false); //=> false\n * RA.isFloat([1]); //=> false\n */\n\nvar isFloat = both(isFinite, complement(isInteger));\nexport default isFloat;","import { complement, curryN } from 'ramda';\nimport isFloat from './isFloat';\n/**\n * Checks whether the passed value is complement of a `float`.\n *\n * @func isNotFloat\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.14.0|v1.14.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isFloat|isFloat}\n * @example\n *\n * RA.isNotFloat(0); //=> true\n * RA.isNotFloat(1); //=> true\n * RA.isNotFloat(-100000); //=> true\n *\n * RA.isNotFloat(0.1); //=> false\n * RA.isNotFloat(Math.PI); //=> false\n *\n * RA.isNotFloat(NaN); //=> true\n * RA.isNotFloat(Infinity); //=> true\n * RA.isNotFloat(-Infinity); //=> true\n * RA.isNotFloat('10'); //=> true\n * RA.isNotFloat(true); //=> true\n * RA.isNotFloat(false); //=> true\n * RA.isNotFloat([1]); //=> true\n */\n\nvar isNotFloat = curryN(1, complement(isFloat));\nexport default isNotFloat;","import { either, curryN } from 'ramda';\nimport isFloat from './isFloat';\nimport isInteger from './isInteger';\n/**\n * Checks if value is a valid `Number`. A valid `Number` is a number that is not `NaN`, `Infinity`\n * or `-Infinity`.\n *\n * @func isValidNumber\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.2.0|v2.2.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotValidNumber|isNotValidNumber}\n * @example\n *\n * RA.isValidNumber(1); //=> true\n * RA.isValidNumber(''); //=> false\n * RA.isValidNumber(NaN); //=> false\n * RA.isValidNumber(Infinity); //=> false\n * RA.isValidNumber(-Infinity); //=> false\n */\n\nvar isValidNumber = curryN(1, either(isInteger, isFloat));\nexport default isValidNumber;","import { complement } from 'ramda';\nimport isValidNumber from './isValidNumber';\n/**\n * Checks if value is not a valid `Number`. A valid `Number` is a number that is not `NaN`,\n * `Infinity` or `-Infinity`.\n *\n * @func isNotValidNumber\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.2.0|v2.2.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isValidNumber|isValidNumber}\n * @example\n *\n * RA.isNotValidNumber(1); //=> false\n * RA.isNotValidNumber(''); //=> true\n * RA.isNotValidNumber(NaN); //=> true\n * RA.isNotValidNumber(Infinity); //=> true\n * RA.isNotValidNumber(-Infinity); //=> true\n */\n\nvar isNotValidNumber = complement(isValidNumber);\nexport default isNotValidNumber;","import { both, pipe, modulo, flip, equals, complement, curryN } from 'ramda';\nimport isInteger from './isInteger';\n/**\n * Checks if value is odd integer number.\n * An odd number is an integer which is not a multiple DIVISIBLE of two.\n *\n * @func isOdd\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.18.0|v1.18.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isEven|isEven}\n * @example\n *\n * RA.isOdd(1); // => true\n * RA.isOdd(-Infinity); // => false\n * RA.isOdd(4); // => false\n * RA.isOdd(3); // => true\n */\n\nvar isOdd = curryN(1, both(isInteger, pipe(flip(modulo)(2), complement(equals)(0))));\nexport default isOdd;","import { both, complement, curryN } from 'ramda';\nimport isInteger from './isInteger';\nimport isOdd from './isOdd';\n/**\n * Checks if value is even integer number.\n * An even number is an integer which is \"evenly divisible\" by two.\n * Zero is an even number because zero divided by two equals zero,\n * which despite not being a natural number, is an integer.\n * Even numbers are either positive or negative.\n *\n * @func isEven\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.18.0|v1.18.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isOdd|isOdd}\n * @example\n *\n * RA.isEven(0); // => true\n * RA.isEven(1); // => false\n * RA.isEven(-Infinity); // => false\n * RA.isEven(4); // => true\n * RA.isEven(3); // => false\n */\n\nvar isEven = curryN(1, both(isInteger, complement(isOdd)));\nexport default isEven;","import { both, equals, length, pipe, curryN } from 'ramda';\nimport isArray from './isArray';\n/**\n * Checks if input value is a pair.\n *\n * @func isPair\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.19.0|v1.19.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link http://ramdajs.com/docs/#pair|R.pair}, {@link RA.isNotPair|isNotPair}\n * @example\n *\n * RA.isPair([]); // => false\n * RA.isPair([0]); // => false\n * RA.isPair([0, 1]); // => true\n * RA.isPair([0, 1, 2]); // => false\n * RA.isPair({ 0: 0, 1: 1 }); // => false\n * RA.isPair({ foo: 0, bar: 0 }); // => false\n */\n\nvar isPair = curryN(1, both(isArray, pipe(length, equals(2))));\nexport default isPair;","import { complement } from 'ramda';\nimport isPair from './isPair';\n/**\n * Checks if input value is complement of a pair.\n *\n * @func isNotPair\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.19.0|v1.19.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link http://ramdajs.com/docs/#pair|R.pair}, {@link RA.isPair|isPair}\n * @example\n *\n * RA.isNotPair([]); // => true\n * RA.isNotPair([0]); // => true\n * RA.isNotPair([0, 1]); // => false\n * RA.isNotPair([0, 1, 2]); // => true\n * RA.isNotPair({0: 0, 1: 1}); // => true\n * RA.isNotPair({foo: 0, bar: 0}); // => true\n */\n\nvar isNotPair = complement(isPair);\nexport default isNotPair;","import { pathSatisfies } from 'ramda';\nimport isFunction from './isFunction';\n/**\n * Checks if input value is a `thenable`.\n * `thenable` is an object or function that defines a `then` method.\n *\n * @func isThenable\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.1.0|v2.1.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isPromise|isPromise}\n * @example\n *\n * RA.isThenable(null); // => false\n * RA.isThenable(undefined); // => false\n * RA.isThenable([]); // => false\n * RA.isThenable(Promise.resolve()); // => true\n * RA.isThenable(Promise.reject()); // => true\n * RA.isThenable({ then: () => 1 }); // => true\n */\n\nvar isThenable = pathSatisfies(isFunction, ['then']);\nexport default isThenable;","import { both, pipe, toString, equals, curryN } from 'ramda';\nimport isObj from './isObj';\n/**\n * Checks if input value is a native `Promise`.\n * The Promise object represents the eventual completion (or failure)\n * of an asynchronous operation, and its resulting value.\n *\n * @func isPromise\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.1.0|v2.1.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link https://promisesaplus.com/|Promises/A+}, {@link RA.isThenable|isThenable}\n * @example\n *\n * RA.isPromise(null); // => false\n * RA.isPromise(undefined); // => false\n * RA.isPromise([]); // => false\n * RA.isPromise(Promise.resolve()); // => true\n * RA.isPromise(Promise.reject()); // => true\n * RA.isPromise({ then: () => 1 }); // => false\n */\n\nvar isPromise = curryN(1, both(isObj, pipe(toString, equals('[object Promise]'))));\nexport default isPromise;","import { identical } from 'ramda';\n/**\n * Checks if input value is the Boolean primitive `true`. Will return false for Boolean objects\n * created using the `Boolean` function as a constructor.\n *\n * @func isTrue\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.6.0|v2.6.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isFalse|isFalse}, {@link RA.isTruthy|isTruthy}, {@link RA.isFalsy|isFalsy}\n * @example\n *\n * RA.isTrue(true); // => true\n * RA.isTrue(Boolean(true)); // => true\n * RA.isTrue(false); // => false\n * RA.isTrue(1); // => false\n * RA.isTrue('true'); // => false\n * RA.isTrue(new Boolean(true)); // => false\n */\n\nvar isTrue = identical(true);\nexport default isTrue;","import { identical } from 'ramda';\n/**\n * Checks if input value is the Boolean primitive `false`. Will return false for all values created\n * using the `Boolean` function as a constructor.\n *\n * @func isFalse\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.6.0|v2.6.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isTrue|isTrue}, {@link RA.isTruthy|isTruthy}, {@link RA.isFalsy|isFalsy}\n * @example\n *\n * RA.isFalse(false); // => true\n * RA.isFalse(Boolean(false)); // => true\n * RA.isFalse(true); // => false\n * RA.isFalse(0); // => false\n * RA.isFalse(''); // => false\n * RA.isFalse(null); // => false\n * RA.isFalse(undefined); // => false\n * RA.isFalse(NaN); // => false\n * RA.isFalse([]); // => false\n * RA.isFalse(new Boolean(false)); // => false\n */\n\nvar isFalse = identical(false);\nexport default isFalse;","import { curryN } from 'ramda';\n/**\n * In JavaScript, a `truthy` value is a value that is considered true\n * when evaluated in a Boolean context. All values are truthy unless\n * they are defined as falsy (i.e., except for `false`, `0`, `\"\"`, `null`, `undefined`, and `NaN`).\n *\n * @func isTruthy\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.2.0|v2.2.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link https://developer.mozilla.org/en-US/docs/Glossary/Truthy|truthy}, {@link RA.isFalsy|isFalsy}\n * @example\n *\n * RA.isTruthy({}); // => true\n * RA.isTruthy([]); // => true\n * RA.isTruthy(42); // => true\n * RA.isTruthy(3.14); // => true\n * RA.isTruthy('foo'); // => true\n * RA.isTruthy(new Date()); // => true\n * RA.isTruthy(Infinity); // => true\n */\n\nvar isTruthy = curryN(1, Boolean);\nexport default isTruthy;","import { complement } from 'ramda';\nimport isTruthy from './isTruthy';\n/**\n * A falsy value is a value that translates to false when evaluated in a Boolean context.\n * Falsy values are `false`, `0`, `\"\"`, `null`, `undefined`, and `NaN`.\n *\n * @func isFalsy\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.2.0|v2.2..0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link https://developer.mozilla.org/en-US/docs/Glossary/Falsy|falsy}, {@link RA.isTruthy|isTruthy}\n * @example\n *\n * RA.isFalsy(false); // => true\n * RA.isFalsy(0); // => true\n * RA.isFalsy(''); // => true\n * RA.isFalsy(null); // => true\n * RA.isFalsy(undefined); // => true\n * RA.isFalsy(NaN); // => true\n */\n\nvar isFalsy = complement(isTruthy);\nexport default isFalsy;","import { type, identical, pipe, curryN } from 'ramda';\n/**\n * Checks if value is `RegExp` object.\n *\n * @func isRegExp\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.5.0|v2.5.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotRegExp|isNotRegExp}\n * @example\n *\n * RA.isRegExp(new RegExp()); //=> true\n * RA.isRegExp(/(?:)/); //=> true\n * RA.isRegExp(1); //=> false\n */\n\nvar isRegExp = curryN(1, pipe(type, identical('RegExp')));\nexport default isRegExp;","import { complement } from 'ramda';\nimport isRegExp from './isRegExp';\n/**\n * Checks if value is complement of `RegExp` object.\n *\n * @func isNotRegExp\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.5.0|v2.5.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isRegExp|isRegExp}\n * @example\n *\n * RA.isNotRegExp(1); //=> true\n * RA.isNotRegExp(/(?:)/); //=> false\n * RA.isNotRegExp(new RegExp()); //=> false\n */\n\nvar isNotRegExp = complement(isRegExp);\nexport default isNotRegExp;","import { type, identical, pipe, curryN } from 'ramda';\n/**\n * Predicate for determining if a provided value is an instance of a Set.\n *\n * @func isSet\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isMap|isMap}}\n * @example\n *\n * RA.isSet(new Map()); //=> false\n * RA.isSet(new Set()); //=> true\n * RA.isSet(new Set([1,2]); //=> true\n * RA.isSet(new Object()); //=> false\n */\n\nvar isSet = curryN(1, pipe(type, identical('Set')));\nexport default isSet;","import { complement } from 'ramda';\nimport isSet from './isSet';\n/**\n * Checks if value is complement of `Set` object.\n *\n * @func isNotSet\n * @memberOf RA\n * @category Type\n * @since {@link https://char0n.github.io/ramda-adjunct/2.27.0|v2.27.0}\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isSet|isSet}\n * @example\n *\n * RA.isNotSet(new Map()); //=> true\n * RA.isNotSet(new Set()); //=> false\n * RA.isNotSet(new Set([1,2]); //=> false\n * RA.isNotSet(new Object()); //=> true\n */\n\nvar isNotSet = complement(isSet);\nexport default isNotSet;","import { values, both, complement, pipe, converge, identical, length } from 'ramda';\nimport isArray from './isArray';\n/**\n * Checks if input value is a sparse Array.\n * An array with at least one \"empty slot\" in it is often called a \"sparse array.\"\n * Empty slot doesn't mean that the slot contains `null` or `undefined` values,\n * but rather that the slots don't exist.\n *\n * @func isSparseArray\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.20.0|v2.20.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} list The list to test\n * @return {boolean}\n * @see {@link https://github.com/getify/You-Dont-Know-JS/blob/f0d591b6502c080b92e18fc470432af8144db610/types%20%26%20grammar/ch3.md#array|Sparse Arrays}, {@link RA.isArray|isArray}\n * @example\n *\n * RA.isSparseArray(new Array(3)); // => true\n * RA.isSparseArray([1,,3]); // => true\n *\n * const list = [1, 2, 3];\n * delete list[1];\n * RA.isSparseArray(list); // => true\n *\n * RA.isSparseArray([1, 2, 3]); // => false\n */\n\nvar isSparseArray = both(isArray, converge(complement(identical), [pipe(values, length), length]));\nexport default isSparseArray;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport { type, curryN } from 'ramda';\n/**\n * Checks if input value is a Symbol.\n *\n * @func isSymbol\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol|MDN Symbol}\n * @example\n *\n * RA.isSymbol(Symbol('1')); //=> true\n * RA.isSymbol(Symbol(1)); //=> true\n * RA.isSymbol('string'); //=> false\n * RA.isSymbol(undefined); //=> false\n * RA.isSymbol(null); //=> false\n */\n\nvar isSymbol = curryN(1, function (val) {\n return _typeof(val) === 'symbol' || _typeof(val) === 'object' && type(val) === 'Symbol';\n});\nexport default isSymbol;","var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1;\nexport default MAX_SAFE_INTEGER;","import { both } from 'ramda';\nimport isInteger from '../../isInteger';\nimport MAX_SAFE_INTEGER from './Number.MAX_SAFE_INTEGER';\nvar isSafeIntegerPonyfill = both(isInteger, function (value) {\n return Math.abs(value) <= MAX_SAFE_INTEGER;\n});\nexport default isSafeIntegerPonyfill;","import { bind, curryN } from 'ramda';\nimport isFunction from './isFunction';\nimport ponyfill from './internal/ponyfills/Number.isSafeInteger';\nexport var isSafeIntegerPonyfill = curryN(1, ponyfill);\n/**\n * Checks whether the passed value is a safe `integer`.\n *\n * @func isSafeInteger\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @example\n *\n * RA.isSafeInteger(3); //=> true\n * RA.isSafeInteger(Math.pow(2, 53)) //=> false\n * RA.isSafeInteger(Math.pow(2, 53) - 1); //=> true\n * RA.isSafeInteger(NaN); //=> false\n * RA.isSafeInteger(Infinity); //=> false\n * RA.isSafeInteger('3') //=> false\n * RA.isSafeInteger(3.1); //=> false\n * RA.isSafeInteger(3.0); //=> true\n * RA.isSafeInteger('string'); //=> false\n * RA.isSafeInteger(null); //=> false\n * RA.isSafeInteger(undefined); //=> false\n * RA.isSafeInteger({}); //=> false\n * RA.isSafeInteger(() => { }); //=> false\n * RA.isSafeInteger(true); //=> false\n */\n\nvar isSafeInteger = isFunction(Number.isSafeInteger) ? curryN(1, bind(Number.isSafeInteger, Number)) : isSafeIntegerPonyfill;\nexport default isSafeInteger;","import { either, curryN } from 'ramda';\nimport isArray from './isArray';\nimport isString from './isString';\n/**\n * Determine if input value is an indexed data type.\n *\n * @func isIndexed\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.26.0|v2.26.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @example\n *\n * RA.isIndexed([1]) //=> true\n * RA.isIndexed('test') //=> true\n */\n\nvar isIndexed = curryN(1, either(isString, isArray));\nexport default isIndexed;","import { type, identical, pipe, curryN } from 'ramda';\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, `SyntaxError`, `TypeError` or `URIError` object.\n *\n * @func isError\n * @category Type\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.30.0|v2.30.0}\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean} Returns `true` if value is an error object, `false` otherwise\n * @example\n *\n * RA.isError(new Error()); //=> true\n * RA.isError(Error); //=> false\n * RA.isError(1); // => false\n */\n\nvar isError = curryN(1, pipe(type, identical('Error')));\nexport default isError;","import { both, complement, curryN } from 'ramda';\nimport isInteger from './isInteger';\nimport isNegative from './isNegative';\n/**\n * Checks if value is a natural number.\n * Natural numbers correspond to all non-negative integers and 0.\n *\n * @func isNaturalNumber\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.29.0|v2.29.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @example\n *\n * RA.isNaturalNumber(5); // => true\n * RA.isNaturalNumber(Number.MAX_VALUE); // => true\n * RA.isNaturalNumber(0); // => true\n * RA.isNaturalNumber(-1); // => false\n * RA.isNaturalNumber(0.9); // => false\n */\n\nvar isNaturalNumber = curryN(1, both(isInteger, complement(isNegative)));\nexport default isNaturalNumber;","import { both, anyPass } from 'ramda';\nimport isNotObj from './isNotObj';\nimport isString from './isString';\nimport isNumber from './isNumber';\nimport isBigInt from './isBigInt';\nimport isBoolean from './isBoolean';\nimport isUndefined from './isUndefined';\nimport isNull from './isNull';\nimport isSymbol from './isSymbol';\n/**\n * Checks if value is a primitive data type. There are 6 primitive data types: `string`, `number`, `bigint`, `boolean`, `undefined`, `symbol` and a special case of `null`.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Primitive_values\n * for definition of what sub-types comprise a primitive.\n *\n * @func isPrimitive\n * @category Type\n * @sig * -> Boolean\n * @since {@link https://char0n.github.io/ramda-adjunct/2.32.0|v2.32.0}\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isNotPrimitive|isNotPrimitive}, {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#primitive_values|MDN Primitive values}, {@link https://developer.mozilla.org/en-US/docs/Glossary/Primitive|MDN Primitive}\n * @example\n *\n * RA.isPrimitive(\"string\"); //=> true\n * RA.isPrimitive(1); //=> true\n * RA.isPrimitive(new String(\"string\")); //=> false\n * RA.isPrimitive(new Number(1)); //=> false\n */\n\nvar isPrimitive = both(isNotObj, anyPass([isString, isNumber, isBigInt, isBoolean, isUndefined, isNull, isSymbol]));\nexport default isPrimitive;","import { complement, curryN } from 'ramda';\nimport isPrimitive from './isPrimitive';\n/**\n * Checks if value is not a primitive data type. There are 6 primitive data types: `string`, `number`, `bigint`, `boolean`, `undefined`, `symbol` and a special case of `null`.\n *\n * @func isNotPrimitive\n * @category Type\n * @sig * -> Boolean\n * @since {@link https://char0n.github.io/ramda-adjunct/2.32.0|v2.32.0}\n * @param {*} val The value to test\n * @return {boolean}\n * @see {@link RA.isPrimitive|isPrimitive}, {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#primitive_values|MDN Primitive values}, {@link https://developer.mozilla.org/en-US/docs/Glossary/Primitive|MDN Primitive}\n * @example\n *\n * RA.isNotPrimitive(new String(\"string\")); //=> true\n * RA.isNotPrimitive(new Number(1)); //=> true\n * RA.isNotPrimitive(\"string\"); //=> false\n * RA.isNotPrimitive(1); //=> false\n */\n\nvar isNotPrimitive = curryN(1, complement(isPrimitive));\nexport default isNotPrimitive;","import { curryN } from 'ramda';\nimport isInteger32 from './isInteger32';\n/**\n * Checks whether the passed value is {@link https://github.com/getify/You-Dont-Know-JS/blob/9959fc904d584bbf0b02cf41c192f74ff4238581/types-grammar/ch4.md#the-curious-case-of-the-|a sentinel value}.\n *\n * @func isSentinelValue\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.33.0|v2.33.0}\n * @category Type\n * @sig * -> Boolean\n * @param {*} val The value to test\n * @return {boolean}\n * @example\n *\n * RA.isSentinelValue(-1); //=> true\n *\n * RA.isSentinelValue('-1'); //=> false\n * RA.isSentinelValue(1); //=> false\n * RA.isSentinelValue([-1]); //=> false\n */\n// eslint-disable-next-line no-bitwise\n\nvar isSentinelValue = curryN(1, function (val) {\n return isInteger32(val) && ~val === 0;\n});\nexport default isSentinelValue;","import { always } from 'ramda';\n/**\n * A function that returns `null`.\n *\n * @func stubNull\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.6.0|v1.6.0}\n * @category Function\n * @sig ... -> null\n * @return {null}\n * @example\n *\n * RA.stubNull(); //=> null\n * RA.stubNull(1, 2, 3); //=> null\n */\n\nvar stubNull = always(null);\nexport default stubNull;","/**\n * This function returns a new empty object.\n *\n * @func stubObj\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.1.0|v2.1.0}\n * @category Function\n * @sig ... -> Object\n * @aliases stubObject\n * @return {Object} Returns the new empty object.\n * @example\n *\n * RA.stubObj(); //=> {}\n * RA.stubObj(1, 2, 3); //=> {}\n */\nvar stubObj = function stubObj() {\n return {};\n};\n\nexport default stubObj;","import { always } from 'ramda';\n/**\n * A function that returns empty string.\n *\n * @func stubString\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.1.0|v2.1.0}\n * @category Function\n * @sig ... -> String\n * @return {string} The empty string\n * @example\n *\n * RA.stubString(); //=> ''\n * RA.stubString(1, 2, 3); //=> ''\n */\n\nvar stubString = always('');\nexport default stubString;","/**\n * A function that returns new empty array on every call.\n *\n * @func stubArray\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.1.0|v2.1.0}\n * @category Function\n * @sig ... -> Array\n * @return {Array} New empty array\n * @example\n *\n * RA.stubArray(); //=> []\n * RA.stubArray(1, 2, 3); //=> []\n */\nvar stubArray = function stubArray() {\n return [];\n};\n\nexport default stubArray;","import { always } from 'ramda';\nimport stubUndefined from './stubUndefined';\n/**\n * A function that performs no operations.\n *\n * @func noop\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.0.0|v1.0.0}\n * @category Function\n * @sig ... -> undefined\n * @return {undefined}\n * @example\n *\n * RA.noop(); //=> undefined\n * RA.noop(1, 2, 3); //=> undefined\n */\n\nvar noop = always(stubUndefined());\nexport default noop;","export var equals = 'fantasy-land/equals';\nexport var lte = 'fantasy-land/lte';\nexport var compose = 'fantasy-land/compose';\nexport var id = 'fantasy-land/id';\nexport var concat = 'fantasy-land/concat';\nexport var empty = 'fantasy-land/empty';\nexport var map = 'fantasy-land/map';\nexport var contramap = 'fantasy-land/contramap';\nexport var ap = 'fantasy-land/ap';\nexport var of = 'fantasy-land/of';\nexport var alt = 'fantasy-land/alt';\nexport var zero = 'fantasy-land/zero';\nexport var reduce = 'fantasy-land/reduce';\nexport var traverse = 'fantasy-land/traverse';\nexport var chain = 'fantasy-land/chain';\nexport var chainRec = 'fantasy-land/chainRec';\nexport var extend = 'fantasy-land/extend';\nexport var extract = 'fantasy-land/extract';\nexport var bimap = 'fantasy-land/bimap';\nexport var promap = 'fantasy-land/promap';","import { ap as apR, curryN, pathSatisfies, both, either } from 'ramda';\nimport isFunction from '../isFunction';\nimport * as fl from '../fantasy-land/mapping';\nvar isFunctor = either(pathSatisfies(isFunction, ['map']), pathSatisfies(isFunction, [fl.map]));\nvar isApply = both(isFunctor, either(pathSatisfies(isFunction, ['ap']), pathSatisfies(isFunction, [fl.ap])));\nvar ap = curryN(2, function (applyF, applyX) {\n // return original ramda `ap` if not Apply spec\n if (!isApply(applyF) || !isApply(applyX)) {\n return apR(applyF, applyX);\n }\n\n try {\n // new version of `ap` starting from ramda version > 0.23.0\n return applyF.ap(applyX);\n } catch (e) {\n // old version of `ap` till ramda version <= 0.23.0\n return applyX.ap(applyF);\n }\n});\nexport default ap;","import { curry, head, slice, reduce, curryN, map } from 'ramda';\nimport ap from './internal/ap';\n/**\n * \"lifts\" a function to be the specified arity, so that it may \"map over\" objects that satisfy\n * the fantasy land Apply spec of algebraic structures.\n *\n * Lifting is specific for {@link https://github.com/scalaz/scalaz|scalaz} and {@link http://www.functionaljava.org/|functional java} implementations.\n * Old version of fantasy land spec were not compatible with this approach,\n * but as of fantasy land 1.0.0 Apply spec also adopted this approach.\n *\n * This function acts as interop for ramda <= 0.23.0 and {@link https://monet.github.io/monet.js/|monet.js}.\n *\n * More info {@link https://github.com/fantasyland/fantasy-land/issues/50|here}.\n *\n * @func liftFN\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.2.0|v1.2.0}\n * @category Function\n * @sig Apply a => Number -> (a... -> a) -> (a... -> a)\n * @param {number} arity The arity of the lifter function\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function\n * @see {@link http://ramdajs.com/docs/#lift|R.lift}, {@link http://ramdajs.com/docs/#ap|R.ap}\n * @example\n *\n * const { Maybe } = require('monet');\n *\n * const add3 = (a, b, c) => a + b + c;\n * const madd3 = RA.liftFN(3, add3);\n *\n * madd3(Maybe.Some(10), Maybe.Some(15), Maybe.Some(17)); //=> Maybe.Some(42)\n * madd3(Maybe.Some(10), Maybe.Nothing(), Maybe.Some(17)); //=> Maybe.Nothing()\n */\n\nvar liftFN = curry(function (arity, fn) {\n var lifted = curryN(arity, fn);\n return curryN(arity, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var accumulator = map(lifted, head(args));\n var apps = slice(1, Infinity, args);\n return reduce(ap, accumulator, apps);\n });\n});\nexport default liftFN;","import { curryN } from 'ramda';\nimport liftFN from './liftFN';\n/**\n * \"lifts\" a function to be the specified arity, so that it may \"map over\" objects that satisfy\n * the fantasy land Apply spec of algebraic structures.\n *\n * Lifting is specific for {@link https://github.com/scalaz/scalaz|scalaz} and {@link http://functionaljava.org/|function Java} implementations.\n * Old version of fantasy land spec were not compatible with this approach,\n * but as of fantasy land 1.0.0 Apply spec also adopted this approach.\n *\n * This function acts as interop for ramda <= 0.23.0 and {@link https://monet.github.io/monet.js/|monet.js}.\n *\n * More info {@link https://github.com/fantasyland/fantasy-land/issues/50|here}.\n *\n * @func liftF\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.2.0|v1.2.0}\n * @category Function\n * @sig Apply a => (a... -> a) -> (a... -> a)\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function\n * @see {@link RA.liftFN|liftFN}\n * @example\n *\n * const { Maybe } = require('monet');\n *\n * const add3 = (a, b, c) => a + b + c;\n * const madd3 = RA.liftF(add3);\n *\n * madd3(Maybe.Some(10), Maybe.Some(15), Maybe.Some(17)); //=> Maybe.Some(42)\n * madd3(Maybe.Some(10), Maybe.Nothing(), Maybe.Some(17)); //=> Maybe.Nothing()\n */\n\nvar liftF = curryN(1, function (fn) {\n return liftFN(fn.length, fn);\n});\nexport default liftF;","import { curry } from 'ramda';\nimport isFunction from './isFunction';\n/**\n * The catamorphism is a way of folding a type into a value.\n *\n * **Either**\n *\n * If the either is right then the right function will be executed with\n * the `right` value and the value of the function returned. Otherwise the left function\n * will be called with the `left` value.\n *\n * **Maybe**\n *\n * If the maybe is Some than the right function will be executed with the `some` value and the value of the function\n * returned. Otherwise the left function with be called without an argument.\n *\n * **Result**\n *\n * If the result is Ok than the right function will be executed with the `Ok` value and the value of the function\n * returned. Otherwise the left function will be called with the `Error` value.\n *\n * **Validation**\n *\n * If the validation is Success than the right function will be executed with the `Success` value and the value of the function\n * returned. Otherwise the left function will be called with the `Failure` value.\n *\n * Supported monadic libraries: {@link https://monet.github.io/monet.js/|monet.js}, {@link https://folktale.origamitower.com/|folktale}, {@link https://github.com/ramda/ramda-fantasy|ramda-fantasy}\n *\n * @func cata\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.4.0|v1.4.0}\n * @category Function\n * @sig (a -> b) -> (a -> c) -> Cata a -> b | c\n * @param {Function} leftFn The left function that consumes the left value\n * @param {Function} rightFn The right function that consumes the right value\n * @param {Cata} catamorphicObj Either, Maybe or any other type with catamorphic capabilities (`cata` or `either` method)\n * @return {*}\n * @see {@link https://monet.github.io/monet.js/#cata|cata explained}\n * @example\n *\n * // Either\n * const eitherR = Either.Right(1);\n * const eitherL = Either.Left(2);\n *\n * RA.cata(identity, identity, eitherR); //=> 1\n * RA.cata(identity, identity, eitherL); //=> 2\n *\n * // Maybe\n * const maybeSome = Maybe.Some(1);\n * const maybeNothing = Maybe.Nothing();\n *\n * RA.cata(identity, identity, maybeSome); //=> 1\n * RA.cata(identity, identity, maybeNothing); //=> undefined\n */\n\nvar catamorphism = curry(function (leftFn, rightFn, catamorphicObj) {\n // folktale support\n if (isFunction(catamorphicObj.matchWith)) {\n return catamorphicObj.matchWith({\n // Result type\n Ok: function Ok(_ref) {\n var value = _ref.value;\n return rightFn(value);\n },\n Error: function Error(_ref2) {\n var value = _ref2.value;\n return leftFn(value);\n },\n // Maybe type\n Just: function Just(_ref3) {\n var value = _ref3.value;\n return rightFn(value);\n },\n Nothing: function Nothing() {\n return leftFn(undefined);\n },\n // Validation type\n Success: function Success(_ref4) {\n var value = _ref4.value;\n return rightFn(value);\n },\n Failure: function Failure(_ref5) {\n var value = _ref5.value;\n return leftFn(value);\n }\n });\n }\n\n if (isFunction(catamorphicObj.cata)) {\n return catamorphicObj.cata(leftFn, rightFn);\n }\n\n if (isFunction(catamorphicObj.getOrElse)) {\n var elseValue = \"RA.cata\".concat(Math.random());\n var value = catamorphicObj.getOrElse(elseValue);\n return value === elseValue ? leftFn() : rightFn(value);\n }\n\n return catamorphicObj.either(leftFn, rightFn);\n});\nexport default catamorphism;","import { curryN } from 'ramda';\n/**\n * Weaves a configuration into function returning the runnable monad like `Reader` or `Free`.\n * This allows us to pre-bind the configuration in advance and use the weaved function\n * without need to explicitly pass the configuration on every call.\n *\n * @func weave\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.7.0|v1.7.0}\n * @category Function\n * @sig (*... -> *) -> * -> (*... -> *)\n * @param {Function} fn The function to weave\n * @param {*} config The configuration to weave into fn\n * @return {Function} Auto-curried weaved function\n * @example\n *\n * const { Reader: reader } = require('monet');\n *\n * const log = value => reader(\n * config => config.log(value)\n * );\n *\n * // no weaving\n * log('test').run(console); //=> prints 'test'\n *\n * // weaving\n * const wlog = RA.weave(log, console);\n * wlog('test'); //=> prints 'test'\n */\n\nvar weave = curryN(2, function (fn, config) {\n return curryN(fn.length, function () {\n return fn.apply(void 0, arguments).run(config);\n });\n});\nexport default weave;","import { curryN } from 'ramda';\n/**\n * Weaves a configuration into function returning the runnable monad like `Reader` or `Free`.\n * This allows us to pre-bind the configuration in advance and use the weaved function\n * without need to explicitly pass the configuration on every call.\n *\n * @func weaveLazy\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.10.0|v1.10.0}\n * @category Function\n * @sig (*... -> *) -> (* -> *) -> (*... -> *)\n * @param {Function} fn The function to weave\n * @param {Function} configAccessor The function that returns the configuration object\n * @return {Function} Auto-curried weaved function\n * @example\n *\n * const { Reader: reader } = require('monet');\n *\n * const log = value => reader(\n * config => config.log(value)\n * );\n *\n * const consoleAccessor = R.always(console);\n *\n * // no weaving\n * log('test').run(console); //=> prints 'test'\n *\n * // weaving\n * const wlog = RA.weaveLazy(log, consoleAccessor);\n * wlog('test'); //=> prints 'test'\n */\n\nvar weaveLazy = curryN(2, function (fn, configAccessor) {\n return curryN(fn.length, function () {\n return fn.apply(void 0, arguments).run(configAccessor());\n });\n});\nexport default weaveLazy;","import { curryN, reverse } from 'ramda';\n/**\n * Returns a curried equivalent of the provided function, with the specified arity.\n * This function is like curryN, except that the provided arguments order is reversed.\n *\n * @func curryRightN\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.12.0|v1.12.0}\n * @category Function\n * @sig Number -> (* -> a) -> (* -> a)\n * @param {number} length The arity for the returned function\n * @param {Function} fn The function to curry\n * @return {Function} A new, curried function\n * @see {@link http://ramdajs.com/docs/#curryN|R.curryN}, {@link RA.curryRight|curryRight}\n * @example\n *\n * const concatStrings = (a, b, c) => a + b + c;\n * const concatStringsCurried = RA.curryRightN(3, concatStrings);\n *\n * concatStringCurried('a')('b')('c'); // => 'cba'\n */\n\nvar curryRightN = curryN(2, function (arity, fn) {\n return curryN(arity, function wrapper() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return fn.apply(this, reverse(args));\n });\n});\nexport default curryRightN;","import { converge, length, identity } from 'ramda';\nimport curryRightN from './curryRightN';\n/**\n * Returns a curried equivalent of the provided function.\n * This function is like curry, except that the provided arguments order is reversed.\n *\n * @func curryRight\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.12.0|v1.12.0}\n * @category Function\n * @sig (* -> a) -> (* -> a)\n * @param {Function} fn The function to curry\n * @return {Function} A new, curried function\n * @see {@link http://ramdajs.com/docs/#curry|R.curry}, {@link RA.curryRightN|curryRightN}\n * @example\n *\n * const concatStrings = (a, b, c) => a + b + c;\n * const concatStringsCurried = RA.curryRight(concatStrings);\n *\n * concatStringCurried('a')('b')('c'); // => 'cba'\n */\n\nvar curryRight = converge(curryRightN, [length, identity]);\nexport default curryRight;","import { bind, curryN } from 'ramda';\n/**\n * Composable shortcut for `Promise.all`.\n *\n * The `allP` method returns a single Promise that resolves when all of the promises\n * in the iterable argument have resolved or when the iterable argument contains no promises.\n * It rejects with the reason of the first promise that rejects.\n *\n * @func allP\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.3.0|v2.3.0}\n * @category Function\n * @sig [Promise a] -> Promise [a]\n * @param {Iterable.<*>} iterable An iterable object such as an Array or String\n * @return {Promise} An already resolved Promise if the iterable passed is empty. An asynchronously resolved Promise if the iterable passed contains no promises. Note, Google Chrome 58 returns an already resolved promise in this case. A pending Promise in all other cases. This returned promise is then resolved/rejected asynchronously (as soon as the stack is empty) when all the promises in the given iterable have resolved, or if any of the promises reject. See the example about \"Asynchronicity or synchronicity of allP\" below.\n * @see {@link RA.resolveP|resolveP}, {@link RA.rejectP|rejectP}\n * @example\n *\n * RA.allP([1, 2]); //=> Promise([1, 2])\n * RA.allP([1, Promise.resolve(2)]); //=> Promise([1, 2])\n * RA.allP([Promise.resolve(1), Promise.resolve(2)]); //=> Promise([1, 2])\n * RA.allP([1, Promise.reject(2)]); //=> Promise(2)\n */\n\nvar allP = curryN(1, bind(Promise.all, Promise));\nexport default allP;","import { invoker } from 'ramda';\n/**\n * Composable shortcut for `Promise.catch`.\n * The catchP function returns a Promise. It takes two arguments: a callback function for the failure of the Promise\n * and the promise instance itself.\n *\n * @func catchP\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.29.0|v2.29.0}\n * @category Function\n * @sig (a -> Promise b | b) -> Promise b\n * @param {Function} onRejected A Function called if the Promise is rejected. This function has one argument, the rejection reason.\n * @param {Promise} promise Any Promise\n * @return {Promise} Returns a Promise with dealt rejected cases\n * @see {@link RA.thenP|thenP}, {@link RA.resolveP|resolveP}, {@link RA.rejectP|rejectP}, {@link RA.allP|allP}\n *\n * @example\n *\n * RA.catchP(() => 'b', Promise.resolve('a')); //=> Promise('a')\n * RA.catchP(() => 'b', Promise.reject('a')); //=> Promise('b')\n */\n\nvar catchP = invoker(1, 'catch');\nexport default catchP;","import { bind } from 'ramda';\n/**\n * Composable shortcut for `Promise.reject`.\n *\n * Returns a Promise object that is rejected with the given reason.\n *\n * @func rejectP\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.16.0|v1.16.0}\n * @category Function\n * @sig a -> Promise a\n * @param {*} [reason=undefined] Reason why this Promise rejected\n * @return {Promise} A Promise that is rejected with the given reason\n * @see {@link RA.resolveP|resolveP}\n * @example\n *\n * RA.rejectP(); //=> Promise(undefined)\n * RA.rejectP('a'); //=> Promise('a')\n * RA.rejectP([1, 2, 3]); //=> Promise([1, 2, 3])\n */\n\nvar rejectP = bind(Promise.reject, Promise);\nexport default rejectP;","import { bind } from 'ramda';\n/* eslint-disable max-len */\n\n/**\n * Composable shortcut for `Promise.resolve`.\n *\n * Returns a Promise object that is resolved with the given value.\n * If the value is a thenable (i.e. has a \"then\" method), the returned promise will\n * \"follow\" that thenable, adopting its eventual state.\n *\n * @func resolveP\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.16.0|v1.16.0}\n * @category Function\n * @sig a -> Promise a\n * @param {*} [value=undefined] Argument to be resolved by this Promise. Can also be a Promise or a thenable to resolve\n * @return {Promise} A Promise that is resolved with the given value, or the promise passed as value, if the value was a promise object\n * @see {@link RA.rejectP|rejectP}\n * @example\n *\n * RA.resolveP(); //=> Promise(undefined)\n * RA.resolveP('a'); //=> Promise('a')\n * RA.resolveP([1, 2, 3]); //=> Promise([1, 2, 3])\n */\n\n/* eslint-enable max-len */\n\nvar resolveP = bind(Promise.resolve, Promise);\nexport default resolveP;","import { curryN, map, pipe } from 'ramda';\nimport allP from './allP';\nimport rejectP from './rejectP';\nimport resolveP from './resolveP';\n/**\n * Returns a Promise that is resolved with an array of reasons when all of the provided Promises reject, or rejected when any Promise is resolved.\n * This pattern is like allP, but fulfillments and rejections are transposed - rejections become the fulfillment values and vice versa.\n *\n * @func noneP\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category Function\n * @sig [Promise a] -> Promise [a]\n * @param {Iterable.<*>} iterable An iterable object such as an Array or String\n * @return {Promise} A Promise that is resolved with a list of rejection reasons if all Promises are rejected, or a Promise that is rejected with the fulfillment value of the first Promise that resolves.\n * @see {@link RA.allP|allP}\n * @example\n *\n * RA.noneP([Promise.reject('hello'), Promise.reject('world')]); //=> Promise(['hello', 'world'])\n * RA.noneP([]); //=> Promise([])\n * RA.noneP([Promise.reject(), Promise.resolve('hello world')]); //=> Promise('hello world')\n * RA.noneP([Promise.reject(), 'hello world']); //=> Promise('hello world')\n */\n\nvar noneP = curryN(1, pipe(map(resolveP), map(function (p) {\n return p.then(rejectP, resolveP);\n}), allP));\nexport default noneP;","import { curry, propOr, partial, nth } from 'ramda';\nimport isNonNegative from './isNonNegative';\nimport isInteger from './isInteger';\n/**\n * Creates a promise which resolves/rejects after the specified milliseconds.\n *\n * @func delayP\n * @memberOf RA\n * @category Function\n * @sig Number -> Promise Undefined\n * @sig {timeout: Number, value: a} -> Promise a\n * @param {number|Object} milliseconds number of milliseconds or options object\n * @return {Promise} A Promise that is resolved/rejected with the given value (if provided) after the specified delay\n * @example\n *\n * RA.delayP(200); //=> Promise(undefined)\n * RA.delayP({ timeout: 1000, value: 'hello world' }); //=> Promise('hello world')\n * RA.delayP.reject(100); //=> Promise(undefined)\n * RA.delayP.reject({ timeout: 100, value: new Error('error') }); //=> Promise(Error('error'))\n */\n\nvar makeDelay = curry(function (settleFnPicker, opts) {\n var timeout;\n var value;\n\n if (isInteger(opts) && isNonNegative(opts)) {\n timeout = opts;\n } else {\n timeout = propOr(0, 'timeout', opts);\n value = propOr(value, 'value', opts);\n }\n\n return new Promise(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var settleFn = settleFnPicker(args);\n setTimeout(partial(settleFn, [value]), timeout);\n });\n});\nvar delayP = makeDelay(nth(0));\ndelayP.reject = makeDelay(nth(1));\nexport default delayP;","import { invoker } from 'ramda';\n/**\n * Composable shortcut for `Promise.then`.\n * The thenP function returns a Promise. It takes two arguments: a callback function for the success of the Promise\n * and the promise instance itself.\n *\n * @func thenP\n * @memberOf RA\n * @aliases then\n * @since {@link https://char0n.github.io/ramda-adjunct/2.8.0|v2.8.0}\n * @deprecated since v2.12.0; available in ramda@0.26.0 as R.then\n * @category Function\n * @sig (a -> Promise b | b) -> Promise b\n * @param {Function} onFulfilled A Function called if the Promise is fulfilled. This function has one argument, the fulfillment value\n * @param {Promise} promise Any Promise or Thenable object\n * @return {Promise} A Promise in the pending status\n\n * @see {@link RA.resolveP|resolveP}, {@link RA.rejectP|rejectP}, {@link RA.allP|allP}\n * @example\n *\n * const promise = Promise.resolve(1);\n * const add1 = v => v + 1;\n *\n * RA.thenP(add1, promise); // => Promise(2)\n */\n\nvar thenP = invoker(1, 'then');\nexport default thenP;","import { invoker } from 'ramda';\n/**\n * Composable shortcut for `Promise.then` that allows for success and failure callbacks.\n * The thenCatchP function returns a Promise. It takes three arguments: a callback function for the success of the Promise,\n * a callback function for the failure of the Promise, and the promise instance itself.\n *\n * @func thenCatchP\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.27.0|v2.27.0}\n * @category Function\n * @sig (a -> b) -> (c -> d) -> Promise a -> Promise b | d\n * @param {Function} onFulfilled A Function called if the Promise is fulfilled. This function has one argument, the fulfillment value\n * @param {Function} onRejected A Function called if the Promise is rejected. This function has one argument, the error\n * @param {Promise} promise Any Promise or Thenable object\n * @return {Promise}\n * @see {@link RA.resolveP|resolveP}, {@link RA.rejectP|rejectP}, {@link RA.allP|allP}\n * @example\n *\n * const promise = Promise.resolve(1);\n * const add1 = x => x + 1;\n *\n * RA.thenCatchP(add1, console.error, promise); // => Promise(2)\n */\n\nexport var thenCatchP = invoker(2, 'then');\nexport default thenCatchP;","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { map } from 'ramda';\nimport allP from '../../allP';\nimport resolveP from '../../resolveP';\n\nvar onFulfill = function onFulfill(value) {\n return {\n status: 'fulfilled',\n value: value\n };\n};\n\nvar onReject = function onReject(reason) {\n return {\n status: 'rejected',\n reason: reason\n };\n};\n\nvar allSettledPonyfill = function allSettledPonyfill(iterable) {\n var array = map(function (p) {\n return resolveP(p).then(onFulfill)[\"catch\"](onReject);\n }, _toConsumableArray(iterable));\n return allP(array);\n};\n\nexport default allSettledPonyfill;","import { bind, curryN } from 'ramda';\nimport isFunction from './isFunction';\nimport ponyfill from './internal/ponyfills/Promise.allSettled';\nexport var allSettledPPonyfill = curryN(1, ponyfill);\n/**\n * Returns a promise that is fulfilled with an array of promise state snapshots,\n * but only after all the original promises have settled, i.e. become either fulfilled or rejected.\n * We say that a promise is settled if it is not pending, i.e. if it is either fulfilled or rejected.\n *\n * @func allSettledP\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.18.0|v2.18.0}\n * @category Function\n * @typedef Settlement = { status: String, value: * }\n * @sig [Promise a] -> Promise [Settlement a]\n * @param {Iterable.<*>} iterable An iterable object such as an Array or String\n * @return {Promise} Returns a promise that is fulfilled with an array of promise state snapshots\n * @see {@link RA.allP|allP}\n * @example\n *\n * RA.allSettledP([\n * Promise.resolve(1),\n * 2,\n * Promise.reject(3),\n * ]); //=> Promise([{ status: 'fulfilled', value: 1 }, { status: 'fulfilled', value: 2 }, { status: 'rejected', reason: 3 }])\n */\n\nvar allSettledP = isFunction(Promise.allSettled) ? curryN(1, bind(Promise.allSettled, Promise)) : allSettledPPonyfill;\nexport default allSettledP;","import { curryN } from 'ramda';\n/**\n * Y-combinator\n *\n * The Y combinator is an interesting function which only works with functional languages,\n * showing how recursion can still be done even without any variable or function declarations,\n * only functions and parameters\n *\n * @func Y\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.3.0|v2.3.0}\n * @category Function\n * @sig (a, ... -> b -> b) -> (a, ... -> b)\n * @param {Function} le Recursive function maker\n * @return {Function}\n * @see {@link http://kestas.kuliukas.com/YCombinatorExplained/|Y combinator explained}\n * @example\n *\n * const makeFact = givenFact => (n) => {\n * if (n < 2) { return 1 }\n * return n * givenFact(n - 1);\n * };\n *\n * const factorial = RA.Y(makeFact);\n *\n * factorial(5); //=> 120\n */\n\nvar Y = curryN(1, function (le) {\n return function (f) {\n return f(f);\n }(function (g) {\n return le(function (x) {\n return g(g)(x);\n });\n });\n});\nexport default Y;","import { curry, map, tap } from 'ramda';\n/* eslint-disable max-len */\n\n/**\n * Runs the given list of functions in order with the supplied object, then returns the object.\n * Also known as the normal order sequencing combinator.\n *\n * Acts as a transducer if a transformer is given as second parameter.\n *\n * @func seq\n * @aliases sequencing\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.3.0|v2.3.0}\n * @category Function\n * @sig [(a -> *), (a -> *), ...] -> a -> a\n * @param {Array} fns The list of functions to call in order with `x` whose return values will be thrown away\n * @param {*} x\n * @return {*} `x`\n * @see {@link http://ramdajs.com/docs/#tap|R.tap}, {@link http://www.cs.rpi.edu/academics/courses/spring11/proglang/handouts/lambda-calculus-chapter.pdf|sequencing combinator explained}\n * @example\n *\n * RA.seq([console.info, console.log])('foo'); //=> prints 'foo' via info then log\n *\n * // usage in composition\n * R.pipe(\n * R.concat('prefix '),\n * RA.seq([\n * console.info, //=> prints 'prefix test'\n * console.log //=> prints 'prefix test'\n * ]),\n * R.toUpper\n * )('test'); //=> 'PREFIX TEST'\n */\n\n/* eslint-enable max-len */\n\nvar seq = curry(function (fns, x) {\n return tap(function (tx) {\n return map(function (fn) {\n return fn(tx);\n })(fns);\n })(x);\n});\nexport default seq;","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { sort, comparator, prop, pipe, head, curryN, reduce, reduced, curry, ifElse } from 'ramda';\n/**\n * Can be used as a way to compose multiple invokers together to form polymorphic functions,\n * or functions that exhibit different behaviors based on their argument(s).\n * Consumes dispatching functions and keep trying to invoke each in turn, until a non-nil value is returned.\n *\n * Accepts a list of dispatching functions and returns a new function.\n * When invoked, this new function is applied to some arguments,\n * each dispatching function is applied to those same arguments until one of the\n * dispatching functions returns a non-nil value.\n *\n * @func dispatch\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.6.0|v2.6.0}\n * @category Function\n * @sig [((a, b, ...) -> x1), ((a, b, ...) -> x2), ...] -> x1 | x2 | ...\n * @param {!Array} functions A list of functions\n * @return {*|undefined} Returns the first not-nil value, or undefined if either an empty list is provided or none of the dispatching functions returns a non-nil value\n * @see {@link RA.isNotNil}\n * @example\n *\n * // returns first non-nil value\n * const stubNil = () => null;\n * const stubUndefined = () => undefined;\n * const addOne = v => v + 1;\n * const addTwo = v => v + 2;\n *\n * RA.dispatch([stubNil, stubUndefined, addOne, addTwo])(1); //=> 2\n *\n * // acts as a switch\n * const fnSwitch = RA.dispatch([\n * R.ifElse(RA.isString, s => `${s}-join`, RA.stubUndefined),\n * R.ifElse(RA.isNumber, n => n + 1, RA.stubUndefined),\n * R.ifElse(RA.isDate, R.T, RA.stubUndefined),\n * ]);\n * fnSwitch(1); //=> 2\n */\n\nimport isNotNil from './isNotNil';\nimport isNonEmptyArray from './isNonEmptyArray';\nimport stubUndefined from './stubUndefined';\nvar byArity = comparator(function (a, b) {\n return a.length > b.length;\n});\nvar getMaxArity = pipe(sort(byArity), head, prop('length'));\nvar iteratorFn = curry(function (args, accumulator, fn) {\n var result = fn.apply(void 0, _toConsumableArray(args));\n return isNotNil(result) ? reduced(result) : accumulator;\n});\n\nvar dispatchImpl = function dispatchImpl(functions) {\n var arity = getMaxArity(functions);\n return curryN(arity, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return reduce(iteratorFn(args), undefined, functions);\n });\n};\n\nvar dispatch = ifElse(isNonEmptyArray, dispatchImpl, stubUndefined);\nexport default dispatch;","import { curryN, bind } from 'ramda';\nimport resolveP from './resolveP';\nimport rejectP from './rejectP';\n/**\n * Takes a generator function and returns an async function.\n * The async function returned is a curried function whose arity matches that of the generator function.\n *\n * Note: This function is handy for environments that does support generators but doesn't support async/await.\n *\n * @func async\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.16.0|v2.16.0}\n * @category Function\n * @sig Promise c => (a, b, ...) -> a -> b -> ... -> c\n * @param {Function} generatorFn The generator function\n * @return {Function} Curried async function\n * @see {@link https://www.promisejs.org/generators/}\n * @example\n *\n * const asyncFn = RA.async(function* generator(val1, val2) {\n * const a = yield Promise.resolve(val1);\n * const b = yield Promise.resolve(val2);\n *\n * return a + b;\n * });\n *\n * asyncFn(1, 2); //=> Promise(3)\n *\n */\n\nvar async = curryN(1, function (generatorFn) {\n function asyncWrapper() {\n var iterator = bind(generatorFn, this).apply(void 0, arguments);\n\n var handle = function handle(result) {\n var resolved = resolveP(result.value);\n return result.done ? resolved : resolved.then(function (value) {\n return handle(iterator.next(value));\n }, function (error) {\n return handle(iterator[\"throw\"](error));\n });\n };\n\n try {\n return handle(iterator.next());\n } catch (error) {\n return rejectP(error);\n }\n }\n\n if (generatorFn.length > 0) {\n return curryN(generatorFn.length, asyncWrapper);\n }\n\n return asyncWrapper;\n});\nexport default async;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { map } from 'ramda';\nimport resolveP from '../../resolveP';\nexport var AggregatedError = /*#__PURE__*/function (_Error) {\n _inherits(AggregatedError, _Error);\n\n var _super = _createSuper(AggregatedError);\n\n function AggregatedError() {\n var _this;\n\n var errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n _classCallCheck(this, AggregatedError);\n\n _this = _super.call(this, message);\n _this.errors = errors;\n return _this;\n }\n\n return _createClass(AggregatedError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nvar anyPonyfill = function anyPonyfill(iterable) {\n var exceptions = [];\n return new Promise(function (resolve, reject) {\n var onReject = function onReject(e) {\n exceptions.push(e);\n\n if (exceptions.length === iterable.length) {\n reject(new AggregatedError(exceptions));\n }\n };\n\n map(function (p) {\n return resolveP(p).then(resolve)[\"catch\"](onReject);\n }, _toConsumableArray(iterable));\n });\n};\n\nexport default anyPonyfill;","import { bind, curryN } from 'ramda';\nimport isFunction from './isFunction';\nimport ponyfill, { AggregatedError } from './internal/ponyfills/Promise.any';\nexport var anyPPonyfill = curryN(1, ponyfill);\nexport { AggregatedError };\n/**\n * Returns a promise that is fulfilled by the first given promise to be fulfilled,\n * or rejected with an array of rejection reasons if all of the given promises are rejected.\n *\n * @func anyP\n * @memberOf RA\n * @category Function\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @sig [Promise a] -> Promise a\n * @param {Iterable.<*>} iterable An iterable object such as an Array or String\n * @return {Promise} A promise that is fulfilled by the first given promise to be fulfilled, or rejected with an array of rejection reasons if all of the given promises are rejected\n * @see {@link RA.lastP|lastP}\n * @example\n *\n * RA.anyP([\n * Promise.resolve(1),\n * 2,\n * Promise.reject(3),\n * ]); //=> Promise(1)\n */\n\nvar anyP = isFunction(Promise.any) ? curryN(1, bind(Promise.any, Promise)) : anyPPonyfill;\nexport default anyP;","import { curry, compose, length } from 'ramda';\nvar compareLength = curry(function (comparator, value, list) {\n return compose(comparator(value), length)(list);\n});\nexport default compareLength;","import { equals } from 'ramda';\nimport compareLength from './internal/compareLength';\n/**\n * Returns `true` if the supplied list or string has a length equal to `valueLength`.\n *\n * @func lengthEq\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.8.0|v2.8.0}\n * @category List\n * @sig Number -> [*] -> Boolean\n * @param {number} valueLength The length of the list or string\n * @param {Array|string} value The list or string\n * @return {boolean}\n * @see {@link RA.lengthNotEq|lengthNotEq}, {@link RA.lengthLt|lengthLt}, {@link RA.lengthGt|lengthGt}, {@link RA.lengthLte|lengthLte}, {@link RA.lengthGte|lengthGte},, {@link http://ramdajs.com/docs/#equals|equals}, {@link http://ramdajs.com/docs/#length|length}\n * @example\n *\n * RA.lengthEq(3, [1,2,3]); //=> true\n * RA.lengthEq(3, [1,2,3,4]); //=> false\n */\n\nvar lengthEq = compareLength(equals);\nexport default lengthEq;","import { flip, gte } from 'ramda';\nimport compareLength from './internal/compareLength';\n/**\n * Returns `true` if the supplied list or string has a length greater than or equal to\n * `valueLength`.\n *\n * @func lengthGte\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.8.0|v2.8.0}\n * @category List\n * @sig Number -> [*] -> Boolean\n * @param {number} valueLength The length of the list or string\n * @param {Array|string} value The list or string\n * @return {boolean}\n * @see {@link RA.lengthEq|lengthEq}, {@link RA.lengthNotEq|lengthNotEq}, {@link RA.lengthLt|lengthLt}, {@link RA.lengthGt|lengthGt}, {@link RA.lengthLte|lengthLte}, {@link http://ramdajs.com/docs/#gte|gte}, {@link http://ramdajs.com/docs/#length|length}\n * @example\n *\n * RA.lengthGte(3, [1,2,3,4]); //=> true\n * RA.lengthGte(3, [1,2,3]); //=> true\n * RA.lengthGte(3, [1,2]); //=> false\n */\n\nvar lengthGte = compareLength(flip(gte));\nexport default lengthGte;","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { bind, last, map, curryN } from 'ramda';\nimport allP from './allP';\nimport lengthEq from './lengthEq';\nimport lengthGte from './lengthGte';\nimport rejectP from './rejectP';\nimport resolveP from './resolveP';\n/**\n * Returns a promise that is fulfilled by the last given promise to be fulfilled,\n * or rejected with an array of rejection reasons if all of the given promises are rejected.\n *\n * @func lastP\n * @memberOf RA\n * @category Function\n * @since {@link https://char0n.github.io/ramda-adjunct/2.23.0|v2.23.0}\n * @sig [Promise a] -> Promise a\n * @param {Iterable.<*>} iterable An iterable object such as an Array or String\n * @return {Promise} A promise that is fulfilled by the last given promise to be fulfilled, or rejected with an array of rejection reasons if all of the given promises are rejected.\n * @see {@link RA.anyP|anyP}\n * @example\n *\n * const delayP = timeout => new Promise(resolve => setTimeout(() => resolve(timeout), timeout));\n * delayP.reject = timeout => new Promise((resolve, reject) => setTimeout(() => reject(timeout), timeout));\n * RA.lastP([\n * 1,\n * delayP(10),\n * delayP(100),\n * delayP.reject(1000),\n * ]); //=> Promise(100)\n */\n\nvar lastP = curryN(1, function (iterable) {\n var fulfilled = [];\n var rejected = [];\n var onFulfill = bind(fulfilled.push, fulfilled);\n var onReject = bind(rejected.push, rejected);\n var listOfPromises = map(function (p) {\n return resolveP(p).then(onFulfill)[\"catch\"](onReject);\n }, _toConsumableArray(iterable));\n return allP(listOfPromises).then(function () {\n if (lengthEq(0, fulfilled) && lengthEq(0, rejected)) {\n return undefined;\n }\n\n if (lengthGte(1, fulfilled)) {\n return last(fulfilled);\n }\n\n return rejectP(rejected);\n });\n});\nexport default lastP;","import { curry } from 'ramda';\n/**\n * Returns the second argument if predicate function returns `true`,\n * otherwise the third argument is returned.\n *\n * @func defaultWhen\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.2.0|v2.2.0}\n * @category Logic\n * @sig (a -> Boolean) -> b -> a -> a | b\n * @param {!function} predicate The predicate function\n * @param {*} defaultVal The default value\n * @param {*} val `val` will be returned instead of `defaultVal` if predicate returns false\n * @return {*} The `val` if predicate returns `false`, otherwise the default value\n * @see {@link http://ramdajs.com/docs/#defaultTo|R.defaultTo}\n * @example\n *\n * RA.defaultWhen(RA.isNull, 1, null); // => 1\n * RA.defaultWhen(RA.isNull, 1, 2); // => 2\n */\n\nvar defaultWhen = curry(function (predicate, defaultVal, val) {\n return predicate(val) ? defaultVal : val;\n});\nexport default defaultWhen;","import { addIndex, map } from 'ramda';\n/**\n * {@link http://ramdajs.com/docs/#map|R.map} function that more closely resembles Array.prototype.map.\n * It takes two new parameters to its callback function: the current index, and the entire list.\n *\n * `mapIndexed` implementation is simple : `\n * const mapIndexed = R.addIndex(R.map);\n * `\n * @func mapIndexed\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.5.0|v2.5.0}\n * @category List\n * @typedef Idx = Number\n * @sig Functor f => ((a, Idx, f a) => b) => f a -> f b\n * @param {Function} fn The function to be called on every element of the input `list`\n * @param {Array} list The list to be iterated over\n * @return {Array} The new list\n * @see {@link http://ramdajs.com/docs/#addIndex|R.addIndex}, {@link http://ramdajs.com/docs/#map|R.map}\n * @example\n *\n * RA.mapIndexed((val, idx, list) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']);\n * //=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r']\n */\n\nvar mapIndexed = addIndex(map);\nexport default mapIndexed;","import { isNil, curryN, curry, apply } from 'ramda';\nimport defaultWhen from './defaultWhen';\nimport mapIndexed from './mapIndexed';\n/**\n * Returns a function which is called with the given arguments. If any of the given arguments are null or undefined,\n * the corresponding default value for that argument is used instead.\n *\n * @func fnull\n * @memberOf RA\n * @category Function\n * @sig (a ... -> b) -> [c] -> a ... | c -> b\n * @param {Function} function to be executed\n * @param {Array} defaults default arguments\n * @return {Function} will apply provided arguments or default ones\n * @example\n *\n * const addDefaults = RA.fnull((a, b) => a + b, [4, 5])\n *\n * addDefaults(1, 2); // => 3\n * addDefaults(null, 2); // => 6\n * addDefaults(2, null); // => 7\n * addDefaults(undefined, undefined); // => 9\n */\n\nvar fnull = curry(function (fn, defaults) {\n return curryN(fn.length, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var argsWithDefaults = mapIndexed(function (val, idx) {\n return defaultWhen(isNil, defaults[idx], val);\n }, args);\n return apply(fn, argsWithDefaults);\n });\n});\nexport default fnull;","import { addIndex, reduce } from 'ramda';\n/**\n * {@link http://ramdajs.com/docs/#reduce|R.reduce} function that more closely resembles Array.prototype.reduce.\n * It takes two new parameters to its callback function: the current index, and the entire list.\n *\n * `reduceIndexed` implementation is simple : `\n * const reduceIndexed = R.addIndex(R.reduce);\n * `\n * @func reduceIndexed\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.5.0|v2.5.0}\n * @category List\n * @typedef Idx = Number\n * @sig ((a, b, Idx, [b]) => a) -> a -> [b] -> a\n * @param {Function} fn The iterator function. Receives four values,\n * the accumulator, the current element from the array, index and the entire list\n * @param {*} acc The accumulator value\n * @param {Array} list The list to iterate over\n * @return {*} The final, accumulated value\n * @see {@link http://ramdajs.com/docs/#addIndex|R.addIndex}, {@link http://ramdajs.com/docs/#reduce|R.reduce}\n * @example\n *\n * const initialList = ['f', 'o', 'o', 'b', 'a', 'r'];\n *\n * reduceIndexed((acc, val, idx, list) => acc + '-' + val + idx, '', initialList);\n * //=> \"-f0-o1-o2-b3-a4-r5\"\n */\n\nvar reduceIndexed = addIndex(reduce);\nexport default reduceIndexed;","import { addIndex, filter } from 'ramda';\n/**\n * {@link http://ramdajs.com/docs/#filter|R.filter} function that more closely resembles `Array.prototype.filter`.\n * It takes two new parameters to its callback function: the current index, and the entire list.\n *\n * `filterIndexed` implementation is simple: `\n * const filterIndexed = R.addIndex(R.filter);\n * `\n *\n * @func filterIndexed\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.31.0|v2.31.0}\n * @category List\n * @typedef Idx = Number\n * @sig Filterable f => ((a, Idx, f a) -> Boolean) -> f a -> f a\n * @param {Function} pred The predicate function\n * @param {Array} list The collection to filter\n * @return {Array} Filterable\n * @see {@link http://ramdajs.com/docs/#addIndex|R.addIndex}, {@link http://ramdajs.com/docs/#filter|R.filter}\n * @example\n *\n * const isValueGtIndex = (val, idx) => val > idx;\n * RA.filterIndexed(isValueGtIndex, [5, 4, 3, 2, 1, 0]); //=> [5, 4, 3]\n */\n\nvar filterIndexed = addIndex(filter);\nexport default filterIndexed;","import { filter, addIndex, curry, contains } from 'ramda'; // helpers\n\nvar filterIndexed = addIndex(filter);\nvar containsIndex = curry(function (indexes, val, index) {\n return contains(index, indexes);\n});\n/**\n * Picks values from list by indexes.\n *\n * Note: pickIndexes will skip non existing indexes. If you want to include them\n * use ramda's `props` function.\n *\n * @func pickIndexes\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.1.0|v1.1.0}\n * @category List\n * @sig [Number] -> [a] -> [a]\n * @param {Array} indexes The indexes to pick\n * @param {Array} list The list to pick values from\n * @return {Array} New array containing only values at `indexes`\n * @see {@link http://ramdajs.com/docs/#pick|R.pick}, {@link RA.omitIndexes|omitIndexes}\n * @example\n *\n * RA.pickIndexes([0, 2], ['a', 'b', 'c']); //=> ['a', 'c']\n */\n\nvar pickIndexes = curry(function (indexes, list) {\n return filterIndexed(containsIndex(indexes), list);\n});\nexport default pickIndexes;","import { unapply, identity } from 'ramda';\n/**\n * Creates a list from arguments.\n *\n * @func list\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.1.0|v1.1.0}\n * @category List\n * @sig a... -> [a...]\n * @param {...*} items The items of the feature list\n * @return {Array} New list created from items\n * @see {@link https://github.com/ramda/ramda/wiki/Cookbook#create-a-list-function|Ramda Cookbook}\n * @example\n *\n * RA.list('a', 'b', 'c'); //=> ['a', 'b', 'c']\n */\n\nvar list = unapply(identity);\nexport default list;","import { when, of } from 'ramda';\nimport isNotArray from './isNotArray';\n/**\n * Returns a singleton array containing the value provided.\n * If value is already an array, it is returned as is.\n *\n * @func ensureArray\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.6.0|v2.6.0}\n * @category List\n * @sig a | [a] -> [a]\n * @param {*|Array} val the value ensure as Array\n * @return {Array}\n * @see {@link http://ramdajs.com/docs/#of|R.of}\n * @example\n *\n * RA.ensureArray(42); //=> [42]\n * RA.ensureArray([42]); //=> [42]\n */\n\nvar ensureArray = when(isNotArray, of);\nexport default ensureArray;","import { concat, identical, identity, pipe, reduce, when } from 'ramda';\nimport stubUndefined from './stubUndefined';\nvar leftIdentitySemigroup = {\n concat: identity\n};\n/**\n * Returns the result of concatenating the given lists or strings.\n * Note: RA.concatAll expects all elements to be of the same type. It will throw an error if you concat an Array with a non-Array value.\n * Dispatches to the concat method of the preceding element, if present. Can also concatenate multiple elements of a [fantasy-land compatible semigroup](https://github.com/fantasyland/fantasy-land#semigroup).\n * Returns undefined if empty array was passed.\n *\n * @func concatAll\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.6.0|v2.6.0}\n * @category List\n * @sig [[a]] -> [a] | Undefined\n * @sig [String] -> String | Undefined\n * @sig Semigroup s => Foldable s f => f -> s | Undefined\n * @param {Array.} list List containing elements that will be concatenated\n * @return {Array|string|undefined} Concatenated elements\n * @see {@link http://ramdajs.com/docs/#concat|R.concat}, {@link RA.concatRight|concatRight}, {@link http://ramdajs.com/docs/#unnest|R.unnest}, {@link http://ramdajs.com/docs/#join|R.join}\n * @example\n *\n * concatAll([[1], [2], [3]]); //=> [1, 2, 3]\n * concatAll(['1', '2', '3']); //=> '123'\n * concatAll([]); //=> undefined;\n */\n\nvar concatAll = pipe(reduce(concat, leftIdentitySemigroup), when(identical(leftIdentitySemigroup), stubUndefined));\nexport default concatAll;","import { concat, flip } from 'ramda';\n/**\n * Returns the result of concatenating the given lists or strings.\n *\n * Note: R.concat expects both arguments to be of the same type, unlike\n * the native Array.prototype.concat method.\n * It will throw an error if you concat an Array with a non-Array value.\n * Dispatches to the concat method of the second argument, if present.\n *\n * @func concatRight\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.11.0|v1.11.0}\n * @category List\n * @sig [a] -> [a] -> [a]\n * @sig String -> String -> String\n * @param {Array|String} firstList The first list\n * @param {Array|String} secondList The second list\n * @return {Array|String} A list consisting of the elements of `secondList`\n * followed by the elements of `firstList`.\n * @see {@link http://ramdajs.com/docs/#concat|R.concat}\n * @example\n *\n * RA.concatRight('ABC', 'DEF'); //=> 'DEFABC'\n * RA.concatRight([4, 5, 6], [1, 2, 3]); //=> [1, 2, 3, 4, 5, 6]\n * RA.concatRight([], []); //=> []\n */\n\nvar concatRight = flip(concat);\nexport default concatRight;","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { curryN, reduce, length } from 'ramda';\nimport isUndefined from './isUndefined';\nimport resolveP from './resolveP';\nimport allP from './allP';\n/* eslint-disable max-len */\n\n/**\n * Given an `Iterable`(arrays are `Iterable`), or a promise of an `Iterable`,\n * which produces promises (or a mix of promises and values),\n * iterate over all the values in the `Iterable` into an array and\n * reduce the array to a value using the given iterator function.\n *\n * If the iterator function returns a promise, then the result of the promise is awaited,\n * before continuing with next iteration. If any promise in the array is rejected or a promise\n * returned by the iterator function is rejected, the result is rejected as well.\n *\n * If `initialValue` is `undefined` (or a promise that resolves to `undefined`) and\n * the `Iterable` contains only 1 item, the callback will not be called and\n * the `Iterable's` single item is returned. If the `Iterable` is empty, the callback\n * will not be called and `initialValue` is returned (which may be undefined).\n *\n * This function is basically equivalent to {@link http://bluebirdjs.com/docs/api/promise.reduce.html|bluebird.reduce}.\n *\n * @func reduceP\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.13.0|v1.13.0}\n * @category List\n * @typedef MaybePromise = Promise.<*> | *\n * @sig ((Promise a, MaybePromise b) -> Promise a) -> MaybePromise a -> MaybePromise [MaybePromise b] -> Promise a\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the current element from the list\n * @param {*|Promise.<*>} acc The accumulator value\n * @param {Array.<*>|Promise.>>} list The list to iterate over\n * @return {Promise} The final, accumulated value\n * @see {@link http://ramdajs.com/docs/#reduce|R.reduce}, {@link RA.reduceRightP|reduceRightP}, {@link http://bluebirdjs.com/docs/api/promise.reduce.html|bluebird.reduce}\n * @example\n *\n * RA.reduceP(\n * (total, fileName) => fs\n * .readFileAsync(fileName, 'utf8')\n * .then(contents => total + parseInt(contents, 10)),\n * 0,\n * ['file1.txt', 'file2.txt', 'file3.txt']\n * ); // => Promise(10)\n *\n * RA.reduceP(\n * (total, fileName) => fs\n * .readFileAsync(fileName, 'utf8')\n * .then(contents => total + parseInt(contents, 10)),\n * Promise.resolve(0),\n * ['file1.txt', 'file2.txt', 'file3.txt']\n * ); // => Promise(10)\n *\n * RA.reduceP(\n * (total, fileName) => fs\n * .readFileAsync(fileName, 'utf8')\n * .then(contents => total + parseInt(contents, 10)),\n * 0,\n * [Promise.resolve('file1.txt'), 'file2.txt', 'file3.txt']\n * ); // => Promise(10)\n *\n * RA.reduceP(\n * (total, fileName) => fs\n * .readFileAsync(fileName, 'utf8')\n * .then(contents => total + parseInt(contents, 10)),\n * 0,\n * Promise.resolve([Promise.resolve('file1.txt'), 'file2.txt', 'file3.txt'])\n * ); // => Promise(10)\n *\n */\n\n/* esline-enable max-len */\n\nvar reduceP = curryN(3, function (fn, acc, list) {\n return resolveP(list).then(function (iterable) {\n var listLength = length(iterable);\n\n if (listLength === 0) {\n return acc;\n }\n\n var reducer = reduce(function (accP, currentValueP) {\n return accP.then(function (previousValue) {\n return allP([previousValue, currentValueP]);\n }).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n previousValue = _ref2[0],\n currentValue = _ref2[1];\n\n if (isUndefined(previousValue) && listLength === 1) {\n return currentValue;\n }\n\n return fn(previousValue, currentValue);\n });\n });\n return reducer(resolveP(acc), iterable);\n });\n});\nexport default reduceP;","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { curryN, pipe, equals, reduceRight, length, concat } from 'ramda';\nimport isUndefined from './isUndefined';\nimport resolveP from './resolveP';\nimport allP from './allP'; // in older ramda versions the order of the arguments is flipped\n\nvar flipArgs = pipe(reduceRight(concat, ''), equals('ba'))(['a', 'b']);\n/* eslint-disable max-len */\n\n/**\n * Given an `Iterable`(arrays are `Iterable`), or a promise of an `Iterable`,\n * which produces promises (or a mix of promises and values),\n * iterate over all the values in the `Iterable` into an array and\n * reduce the array to a value using the given iterator function.\n *\n * Similar to {@link RA.reduceP|reduceP} except moves through the input list from the right to the left.\n * The iterator function receives two values: (value, acc),\n * while the arguments' order of reduceP's iterator function is (acc, value).\n *\n * @func reduceRightP\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.13.0|v1.13.0}\n * @category List\n * @typedef MaybePromise = Promise.<*> | *\n * @sig ((MaybePromise b, Promise a) -> Promise a) -> MaybePromise a -> MaybePromise [MaybePromise b] -> Promise a\n * @param {Function} fn The iterator function. Receives two values, the current element from the list and the accumulator\n * @param {*|Promise.<*>} acc The accumulator value\n * @param {Array.<*>|Promise.>>} list The list to iterate over\n * @return {Promise} The final, accumulated value\n * @see {@link RA.reduceP|reduceP}, {@link http://bluebirdjs.com/docs/api/promise.reduce.html|bluebird.reduce}\n * @example\n *\n * RA.reduceRightP(\n * (fileName, total) => fs\n * .readFileAsync(fileName, 'utf8')\n * .then(contents => total + parseInt(contents, 10)),\n * 0,\n * ['file1.txt', 'file2.txt', 'file3.txt']\n * ); // => Promise(10)\n *\n * RA.reduceRightP(\n * (fileName, total) => fs\n * .readFileAsync(fileName, 'utf8')\n * .then(contents => total + parseInt(contents, 10)),\n * Promise.resolve(0),\n * ['file1.txt', 'file2.txt', 'file3.txt']\n * ); // => Promise(10)\n *\n * RA.reduceRightP(\n * (fileName, total) => fs\n * .readFileAsync(fileName, 'utf8')\n * .then(contents => total + parseInt(contents, 10)),\n * 0,\n * [Promise.resolve('file1.txt'), 'file2.txt', 'file3.txt']\n * ); // => Promise(10)\n *\n * RA.reduceRightP(\n * (fileName, total) => fs\n * .readFileAsync(fileName, 'utf8')\n * .then(contents => total + parseInt(contents, 10)),\n * 0,\n * Promise.resolve([Promise.resolve('file1.txt'), 'file2.txt', 'file3.txt'])\n * ); // => Promise(10)\n *\n */\n\n/* esline-enable max-len */\n\nvar reduceRightP = curryN(3, function (fn, acc, list) {\n return resolveP(list).then(function (iterable) {\n var listLength = length(iterable);\n\n if (listLength === 0) {\n return acc;\n }\n\n var reducer = reduceRight(function (arg1, arg2) {\n var accP;\n var currentValueP;\n\n if (flipArgs) {\n accP = arg1;\n currentValueP = arg2;\n } else {\n accP = arg2;\n currentValueP = arg1;\n }\n\n return accP.then(function (previousValue) {\n return allP([previousValue, currentValueP]);\n }).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n previousValue = _ref2[0],\n currentValue = _ref2[1];\n\n if (isUndefined(previousValue) && listLength === 1) {\n return currentValue;\n }\n\n return fn(currentValue, previousValue);\n });\n });\n return reducer(resolveP(acc), iterable);\n });\n});\nexport default reduceRightP;","import { __, slice } from 'ramda';\n/**\n * Returns the elements of the given list or string (or object with a slice method)\n * from fromIndex (inclusive).\n * Dispatches to the slice method of the second argument, if present.\n *\n * @func sliceFrom\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.16.0|v1.16.0}\n * @category List\n * @sig Number -> [a] -> [a]\n * @param {number} fromIndex The start index (inclusive)\n * @param {Array|string} list The list or string to slice\n * @return {Array|string} The sliced list or string\n * @see {@link http://ramdajs.com/docs/#slice|R.slice}, {@link RA.sliceTo|sliceTo}\n * @example\n *\n * RA.sliceFrom(1, [1, 2, 3]); //=> [2, 3]\n */\n\nvar sliceFrom = slice(__, Infinity);\nexport default sliceFrom;","import { slice } from 'ramda';\n/**\n * Returns the elements of the given list or string (or object with a slice method)\n * to toIndex (exclusive).\n * Dispatches to the slice method of the second argument, if present.\n *\n * @func sliceTo\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.16.0|v1.16.0}\n * @category List\n * @sig Number -> [a] -> [a]\n * @param {number} toIndex The end index (exclusive)\n * @param {Array|string} list The list or string to slice\n * @return {Array|string} The sliced list or string\n * @see {@link http://ramdajs.com/docs/#slice|R.slice}, {@link RA.sliceFrom|sliceFrom}\n * @example\n *\n * RA.sliceTo(2, [1, 2, 3]); //=> [1, 2]\n */\n\nvar sliceTo = slice(0);\nexport default sliceTo;","import { contains, curry, addIndex, reject } from 'ramda'; // helpers\n\nvar rejectIndexed = addIndex(reject);\nvar containsIndex = curry(function (indexes, val, index) {\n return contains(index, indexes);\n});\n/**\n * Returns a partial copy of an array omitting the indexes specified.\n *\n * @func omitIndexes\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.19.0|v1.19.0}\n * @category List\n * @sig [Int] -> [a] -> [a]\n * @see {@link http://ramdajs.com/docs/#omit|R.omit}, {@link RA.pickIndexes|pickIndexes}\n * @param {!Array} indexes The array of indexes to omit from the new array\n * @param {!Array} list The array to copy from\n * @return {!Array} The new array with omitted indexes\n * @example\n *\n * RA.omitIndexes([-1, 1, 3], ['a', 'b', 'c', 'd']); //=> ['a', 'c']\n */\n\nvar omitIndexes = curry(function (indexes, list) {\n return rejectIndexed(containsIndex(indexes), list);\n});\nexport default omitIndexes;","import { reject } from 'ramda';\nimport isFalsy from './isFalsy';\n/**\n * Creates an array with all falsy values removed.\n * The values false, null, 0, \"\", undefined, and NaN are falsy.\n *\n * @func compact\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.5.0|v2.5.0}\n * @category List\n * @sig Filterable f => f a -> f a\n * @param {Array} list The array to compact\n * @return {Array} Returns the new array of filtered values\n * @see {@link RA.isFalsy|isFalsy}\n * @example\n *\n * RA.compact([0, 1, false, 2, '', 3]); //=> [1, 2, 3]\n */\n\nvar compact = reject(isFalsy);\nexport default compact;","import { append, flip } from 'ramda';\n/**\n * Returns a new list containing the contents of the given list, followed by the given element.\n * Like {@link http://ramdajs.com/docs/#append|R.append} but with argument order reversed.\n *\n * @func appendFlipped\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.5.0|v2.5.0}\n * @category List\n * @sig [a] -> a -> [a]\n * @param {Array} list The list of elements to add a new item to\n * @param {*} el The element to add to the end of the new list\n * @return {Array} A new list containing the elements of the old list followed by `el`\n * @see {@link http://ramdajs.com/docs/#append|R.append}\n * @example\n *\n * RA.appendFlipped(['write', 'more'], 'tests'); //=> ['write', 'more', 'tests']\n * RA.appendFlipped([], 'tests'); //=> ['tests']\n * RA.appendFlipped(['write', 'more'], ['tests']); //=> ['write', 'more', ['tests']]\n */\n\nvar appendFlipped = flip(append);\nexport default appendFlipped;","import { flip, contains } from 'ramda';\n/**\n * Returns true if the specified value is equal, in R.equals terms,\n * to at least one element of the given list or false otherwise.\n * Given list can be a string.\n *\n * Like {@link http://ramdajs.com/docs/#contains|R.contains} but with argument order reversed.\n *\n * @func contained\n * @aliases included\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.8.0|v2.8.0}\n * @deprecated since v2.12.0; please use RA.included alias\n * @category List\n * @sig [a] -> a -> Boolean\n * @param {Array|String} list The list to consider\n * @param {*} a The item to compare against\n * @return {boolean} Returns Boolean `true` if an equivalent item is in the list or `false` otherwise\n * @see {@link http://ramdajs.com/docs/#contains|R.contains}\n * @example\n *\n * RA.contained([1, 2, 3], 3); //=> true\n * RA.contained([1, 2, 3], 4); //=> false\n * RA.contained([{ name: 'Fred' }], { name: 'Fred' }); //=> true\n * RA.contained([[42]], [42]); //=> true\n */\n\nvar contained = flip(contains);\nexport default contained;","import { compose, curry, insert, nth, remove } from 'ramda';\n/**\n * Returns a new list with the item at the position `fromIdx` moved to the position `toIdx`. If the\n * `toIdx` is out of the `list` range, the item will be placed at the last position of the `list`.\n * When negative indices are provided, the behavior of the move is unspecified.\n *\n * @func move\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.8.0|v2.8.0}\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @param {number} fromIdx The position of item to be moved\n * @param {number} toIdx The position of item after move\n * @param {Array} list The list containing the item to be moved\n * @return {Array}\n * @example\n *\n * const list = ['a', 'b', 'c', 'd', 'e'];\n * RA.move(1, 3, list) //=> ['a', 'c', 'd', 'b', 'e']\n */\n\nvar move = curry(function (fromIdx, toIdx, list) {\n return compose(insert(toIdx, nth(fromIdx, list)), remove(fromIdx, 1))(list);\n});\nexport default move;","import { flip, gt } from 'ramda';\nimport compareLength from './internal/compareLength';\n/**\n * Returns `true` if the supplied list or string has a length greater than `valueLength`.\n *\n * @func lengthGt\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.8.0|v2.8.0}\n * @category List\n * @sig Number -> [*] -> Boolean\n * @param {number} valueLength The length of the list or string\n * @param {Array|string} value The list or string\n * @return {boolean}\n * @see {@link RA.lengthEq|lengthEq}, {@link RA.lengthNotEq|lengthNotEq}, {@link RA.lengthLt|lengthLt}, {@link RA.lengthLte|lengthLte}, {@link RA.lengthGte|lengthGte}, {@link http://ramdajs.com/docs/#gt|gt}, {@link http://ramdajs.com/docs/#length|length}\n * @example\n *\n * RA.lengthGt(3, [1,2,3,4]); //=> true\n * RA.lengthGt(3, [1,2,3]); //=> false\n */\n\nvar lengthGt = compareLength(flip(gt));\nexport default lengthGt;","import { flip, lt } from 'ramda';\nimport compareLength from './internal/compareLength';\n/**\n * Returns `true` if the supplied list or string has a length less than `valueLength`.\n *\n * @func lengthLt\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.8.0|v2.8.0}\n * @category List\n * @sig Number -> [*] -> Boolean\n * @param {number} valueLength The length of the list or string\n * @param {Array|string} value The list or string\n * @return {boolean}\n * @see {@link RA.lengthEq|lengthEq}, {@link RA.lengthNotEq|lengthNotEq}, {@link RA.lengthGt|lengthGt}, {@link RA.lengthLte|lengthLte}, {@link RA.lengthGte|lengthGte}, {@link http://ramdajs.com/docs/#lt|lt}, {@link http://ramdajs.com/docs/#length|length}\n * @example\n *\n * RA.lengthLt(3, [1,2]); //=> true\n * RA.lengthLt(3, [1,2,3]); //=> false\n */\n\nvar lengthLt = compareLength(flip(lt));\nexport default lengthLt;","import { flip, lte } from 'ramda';\nimport compareLength from './internal/compareLength';\n/**\n * Returns `true` if the supplied list or string has a length less than or equal to `valueLength`.\n *\n * @func lengthLte\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.8.0|v2.8.0}\n * @category List\n * @sig Number -> [*] -> Boolean\n * @param {number} valueLength The length of the list or string\n * @param {Array|string} value The list or string\n * @return {boolean}\n * @see {@link RA.lengthEq|lengthEq}, {@link RA.lengthNotEq|lengthNotEq}, {@link RA.lengthLt|lengthLt}, {@link RA.lengthGt|lengthGt}, {@link RA.lengthGte|lengthGte}, {@link http://ramdajs.com/docs/#lte|lte}, {@link http://ramdajs.com/docs/#length|length}\n * @example\n *\n * RA.lengthLte(3, [1,2]); //=> true\n * RA.lengthLte(3, [1,2,3]); //=> true\n * RA.lengthLte(3, [1,2,3,4]); //=> false\n */\n\nvar lengthLte = compareLength(flip(lte));\nexport default lengthLte;","import { complement, equals } from 'ramda';\nimport compareLength from './internal/compareLength';\n/**\n * Returns `true` if the supplied list or string has a length not equal to `valueLength`.\n *\n * @func lengthNotEq\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.8.0|v2.8.0}\n * @category List\n * @sig Number -> [*] -> Boolean\n * @param {number} valueLength The length of the list or string\n * @param {Array|string} value The list or string\n * @return {boolean}\n * @see {@link RA.lengthEq|lengthEq}, {@link RA.lengthLt|lengthLt}, {@link RA.lengthGt|lengthGt}, {@link RA.lengthLte|lengthLte}, {@link RA.lengthGte|lengthGte}, {@link http://ramdajs.com/docs/#equals|equals}, {@link http://ramdajs.com/docs/#length|length}\n * @example\n *\n * RA.lengthNotEq(3, [1,2,3,4]); //=> true\n * RA.lengthNotEq(3, [1,2,3]); //=> false\n */\n\nvar lengthNotEq = compareLength(complement(equals));\nexport default lengthNotEq;","import { pipe, uniq, curryN } from 'ramda';\nimport lengthLte from './lengthLte'; // Original idea for this function was conceived by https://github.com/jackmellis\n// in https://github.com/char0n/ramda-adjunct/pull/513.\n\n/**\n * Returns true if all items in the list are equivalent using `R.equals` for equality comparisons.\n *\n * @func allEqual\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.9.0|v2.9.0}\n * @category List\n * @sig [a] -> Boolean\n * @param {Array} list The list of values\n * @return {boolean}\n * @see {@link https://ramdajs.com/docs/#equals|equals}\n * @example\n *\n * RA.allEqual([ 1, 2, 3, 4 ]); //=> false\n * RA.allEqual([ 1, 1, 1, 1 ]); //=> true\n * RA.allEqual([]); //=> true\n *\n */\n\nvar allEqual = curryN(1, pipe(uniq, lengthLte(1)));\nexport default allEqual;","import isNotFinite from '../../isNotFinite';\nimport isNegative from '../../isNegative';\n\nvar repeat = function repeat(value, count) {\n var validCount = Number(count);\n\n if (validCount !== count) {\n validCount = 0;\n }\n\n if (isNegative(validCount)) {\n throw new RangeError('repeat count must be non-negative');\n }\n\n if (isNotFinite(validCount)) {\n throw new RangeError('repeat count must be less than infinity');\n }\n\n validCount = Math.floor(validCount);\n\n if (value.length === 0 || validCount === 0) {\n return '';\n } // Ensuring validCount is a 31-bit integer allows us to heavily optimize the\n // main part. But anyway, most current (August 2014) browsers can't handle\n // strings 1 << 28 chars or longer, so:\n // eslint-disable-next-line no-bitwise\n\n\n if (value.length * validCount >= 1 << 28) {\n throw new RangeError('repeat count must not overflow maximum string size');\n }\n\n var maxCount = value.length * validCount;\n validCount = Math.floor(Math.log(validCount) / Math.log(2));\n var result = value;\n\n while (validCount) {\n result += value;\n validCount -= 1;\n }\n\n result += result.substring(0, maxCount - result.length);\n return result;\n};\n\nexport default repeat;","import { curry, invoker, flip } from 'ramda';\nimport ponyfill from './internal/ponyfills/String.repeat';\nimport isFunction from './isFunction';\nexport var repeatStrPonyfill = curry(ponyfill);\nexport var repeatStrInvoker = flip(invoker(1, 'repeat'));\n/**\n * Constructs and returns a new string which contains the specified\n * number of copies of the string on which it was called, concatenated together.\n *\n * @func repeatStr\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.11.0|v2.11.0}\n * @category List\n * @sig String -> Number -> String\n * @param {string} value String value to be repeated\n * @param {number} count An integer between 0 and +鈭�: [0, +鈭�), indicating the number of times to repeat the string in the newly-created string that is to be returned\n * @return {string} A new string containing the specified number of copies of the given string\n * @example\n *\n * RA.repeatStr('a', 3); //=> 'aaa'\n */\n\nvar repeatStr = isFunction(String.prototype.repeat) ? repeatStrInvoker : repeatStrPonyfill;\nexport default repeatStr;","import { uniqWith, identical, pipe, curryN } from 'ramda';\nimport lengthLte from './lengthLte';\n/**\n * Returns true if all items in the list are equivalent using `R.identical` for equality comparisons.\n *\n * @func allIdentical\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.11.0|v2.11.0}\n * @category List\n * @sig [a] -> Boolean\n * @param {Array} list The list of values\n * @return {boolean}\n * @see {@link https://ramdajs.com/docs/#identical|identical}\n * @example\n *\n * RA.allIdentical([ 1, 2, 3, 4 ]); //=> false\n * RA.allIdentical([ 1, 1, 1, 1 ]); //=> true\n * RA.allIdentical([]); //=> true\n * RA.allIdentical([ {}, {} ]); //=> false\n * RA.allIdentical([ () => {}, () => {} ]); //=> false\n */\n\nvar allIdentical = curryN(1, pipe(uniqWith(identical), lengthLte(1)));\nexport default allIdentical;","import { curry, identical, all } from 'ramda';\n/**\n * Returns true if all items in the list are equivalent to user provided value using `R.identical` for equality comparisons.\n *\n * @func allIdenticalTo\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.11.0|v2.11.0}\n * @category List\n * @sig a -> [b] -> Boolean\n * @param {*} val User provided value to check the `list` against\n * @param {Array} list The list of values\n * @return {boolean}\n * @see {@link RA.allIdentical|allIdentical}, {@link http://ramdajs.com/docs/#identical|R.identical}\n * @example\n *\n * RA.allIdenticalTo(1, [ 1, 2, 3, 4 ]); //=> false\n * RA.allIdenticalTo(1, [ 1, 1, 1, 1 ]); //=> true\n * RA.allIdenticalTo(1, []); //=> true\n * RA.allIdenticalTo({}, [ {}, {} ]); //=> false\n *\n */\n\nvar allIdenticalTo = curry(function (val, list) {\n return all(identical(val), list);\n});\nexport default allIdenticalTo;","import { all, equals, curry } from 'ramda';\n/**\n * Returns true if all items in the list are equivalent to user provided value using `R.equals` for equality comparisons.\n *\n * @func allEqualTo\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.11.0|v2.11.0}\n * @category List\n * @sig a -> [b] -> Boolean\n * @param {*} val User provided value to check the `list` against\n * @param {Array} list The list of values\n * @return {boolean}\n * @see {@link RA.allEqual|allEqual}, {@link https://ramdajs.com/docs/#equals|equals}\n * @example\n *\n * RA.allEqualTo(1, [ 1, 2, 3, 4 ]); //=> false\n * RA.allEqualTo(1, [ 1, 1, 1, 1 ]); //=> true\n * RA.allEqualTo({}, [ {}, {} ]); //=> true\n * RA.allEqualTo(1, []); //=> true\n *\n */\n\nvar allEqualTo = curry(function (val, list) {\n return all(equals(val), list);\n});\nexport default allEqualTo;","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { curry } from 'ramda';\nimport _makeFlat from './internal/makeFlat';\n\nvar flatten1 = _makeFlat(false);\n/**\n * Flattens the list to the specified depth.\n *\n * @func flattenDepth\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.19.0|v2.19.0}\n * @category List\n * @sig Number -> [a] -> [b]\n * @param {!number} depth The maximum recursion depth\n * @param {!Array} list The array to flatten\n * @return {!Array} Returns the new flattened array\n * @see {@link http://ramdajs.com/docs/#flatten|R.flatten}, {@link http://ramdajs.com/docs/#unnest|R.unnest}\n * @example\n *\n * RA.flattenDepth(\n * 2,\n * [1, [2], [3, [4, 5], 6, [[[7], 8]]], 9, 10]\n * ); //=> [1, 2, 3, 4, 5, 6, [[7], 8], 9, 10];\n */\n\n\nvar flattenDepth = curry(function (depth, list) {\n var currentDept = depth;\n\n var flatList = _toConsumableArray(list);\n\n while (currentDept > 0) {\n flatList = flatten1(flatList);\n currentDept -= 1;\n }\n\n return flatList;\n});\nexport default flattenDepth;","import isArrayLike from '../isArrayLike';\n/**\n * `makeFlat` is a helper function that returns a one-level or fully recursive\n * function based on the flag passed in.\n *\n * @func makeFlat\n * @memberOf RA\n *\n * @category List\n * @param {!bool} = should recursively flatten\n * @param {!Array} = the nested list to be flattened\n * @return {!Array} = the flattened list\n * @sig Bool -> List -> List\n *\n */\n\nvar makeFlat = function makeFlat(recursive) {\n return function flatt(list) {\n var value;\n var jlen;\n var j;\n var result = [];\n var idx = 0;\n\n while (idx < list.length) {\n if (isArrayLike(list[idx])) {\n value = recursive ? flatt(list[idx]) : list[idx];\n j = 0;\n jlen = value.length;\n\n while (j < jlen) {\n result[result.length] = value[j];\n j += 1;\n }\n } else {\n result[result.length] = list[idx];\n }\n\n idx += 1;\n }\n\n return result;\n };\n};\n\nexport default makeFlat;","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { bind } from 'ramda';\nimport isIterable from '../../isIterable';\nimport isNotUndefined from '../../isNotUndefined';\nimport isNotNil from '../../isNotNil';\nimport isNotFunction from '../../isNotFunction';\n\nvar copyArray = function copyArray(items, mapFn, thisArg) {\n var boundMapFn = isNotUndefined(thisArg) ? bind(mapFn, thisArg) : mapFn;\n return isNotUndefined(mapFn) ? _toConsumableArray(items).map(boundMapFn) : _toConsumableArray(items);\n};\n\nvar fromArray = function fromArray(items, mapFn, thisArg) {\n if (items == null) {\n throw new TypeError('Array.from requires an array-like object - not null or undefined');\n }\n\n if (isNotNil(mapFn) && isNotFunction(mapFn)) {\n throw new TypeError('Array.from: when provided, the second argument must be a function');\n }\n\n if (isIterable(items)) {\n return copyArray(items, mapFn, thisArg);\n }\n\n return [];\n};\n\nexport default fromArray;","import { ifElse, values, curryN } from 'ramda';\nimport isIterable from './isIterable';\nimport isFunction from './isFunction';\nimport ponyfill from './internal/ponyfills/Array.from';\nexport var fromPonyfill = curryN(1, ponyfill);\nvar fromArray = isFunction(Array.from) ? curryN(1, Array.from) : fromPonyfill;\n/**\n * Converts value to an array.\n *\n * @func toArray\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category List\n * @sig * -> [a]\n * @param {*} val The value to convert\n * @return {Array}\n * @example\n *\n * RA.toArray([1, 2]); //=> [1, 2]\n * RA.toArray({'foo': 1, 'bar': 2}); //=> [1, 2]\n * RA.toArray('abc'); //=> ['a', 'b', 'c']\n * RA.toArray(1); //=> []\n * RA.toArray(null); //=> []\n */\n\nvar toArray = ifElse(isIterable, fromArray, values);\nexport default toArray;","import { converge, length, uniq } from 'ramda';\nimport lengthEq from './lengthEq';\n/**\n * Returns true if all items in the list are unique. `R.equals` is used to determine equality.\n *\n * @func allUnique\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category List\n * @sig [a] -> Boolean\n * @param {Array} list The list of values\n * @return {boolean}\n * @see {@link RA.notAllUnique|notAllUnique}, {@link https://ramdajs.com/docs/#equals|equals}\n * @example\n *\n * RA.allUnique([ 1, 2, 3, 4 ]); //=> true\n * RA.allUnique([ 1, 1, 2, 3 ]); //=> false\n * RA.allUnique([]); //=> true\n *\n */\n\nvar allUnique = converge(lengthEq, [length, uniq]);\nexport default allUnique;","import { complement } from 'ramda';\nimport allUnique from './allUnique';\n/**\n * Returns true if at least one item of the list is repeated. `R.equals` is used to determine equality.\n *\n * @func notAllUnique\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category List\n * @sig [a] -> Boolean\n * @param {Array} list The list of values\n * @return {boolean}\n * @see {@link RA.allUnique|allUnique}, {@link https://ramdajs.com/docs/#equals|equals}\n * @example\n *\n * RA.notAllUnique([ 1, 1, 2, 3 ]); //=> true\n * RA.notAllUnique([ 1, 2, 3, 4 ]); //=> false\n * RA.notAllUnique([]); //=> false\n *\n */\n\nvar notAllUnique = complement(allUnique);\nexport default notAllUnique;","function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { reduce, either, curry, prop, sort, comparator, map, lt } from 'ramda';\n/**\n * Sort a list of objects by a list of props (if first prop value is equivalent, sort by second, etc).\n *\n * @func sortByProps\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.26.0|v2.26.0}\n * @category List\n * @sig [k] -> [{k: v}] -> [{k: v}]\n * @param {Array.} props A list of properties in the list param to sort by\n * @param {Array.} list A list of objects to be sorted\n * @return {Array.} A new list sorted by the properties in the props param\n * @example\n *\n * sortByProps(['num'], [{num: 3}, {num: 2}, {num: 1}])\n * //=> [{num: 1}, {num: 2} {num: 3}]\n * sortByProps(['letter', 'num'], [{num: 3, letter: 'a'}, {num: 2, letter: 'a'} {num: 1, letter: 'z'}])\n * //=> [ {num: 2, letter: 'a'}, {num: 3, letter: 'a'}, {num: 1, letter: 'z'}]\n * sortByProps(['name', 'num'], [{num: 3}, {num: 2}, {num: 1}])\n * //=> [{num: 1}, {num: 2}, {num: 3}]\n */\n\nvar sortByProps = curry(function (props, list) {\n var firstTruthy = function firstTruthy(_ref) {\n var _ref2 = _toArray(_ref),\n head = _ref2[0],\n tail = _ref2.slice(1);\n\n return reduce(either, head, tail);\n };\n\n var makeComparator = function makeComparator(propName) {\n return comparator(function (a, b) {\n return lt(prop(propName, a), prop(propName, b));\n });\n };\n\n return sort(firstTruthy(map(makeComparator, props)), list);\n});\nexport default sortByProps;","import { curry, addIndex, filter, pipe, modulo, identical, nthArg, __ } from 'ramda';\n/**\n * When given a number n and an array, returns an array containing every nth element.\n *\n * @func skipTake\n * @memberOf RA\n * @category List\n * @since {@link https://char0n.github.io/ramda-adjunct/2.26.0|v2.26.0}\n * @sig Number -> [a] -> [a]\n * @param {number} the nth element to extract\n * @param {Array} value the input array\n * @return {Array} An array containing every nth element\n * @example\n *\n * RA.skipTake(2, [1,2,3,4]) //=> [1, 3]\n * RA.skipTake(3, R.range(0, 20)); //=> [0, 3, 6, 9, 12, 15, 18]\n */\n\nvar skipTake = curry(function (n, list) {\n return addIndex(filter)(pipe(nthArg(1), modulo(__, n), identical(0)))(list);\n});\nexport default skipTake;","import { bind, curryN } from 'ramda';\n/**\n * Returns the largest integer less than or equal to a given number.\n *\n * Note: floor(null) returns integer 0 and do not give a NaN error.\n *\n * @func floor\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.15.0|v2.15.0}\n * @category Math\n * @sig Number -> Number\n * @param {number} number The number to floor\n * @return {number} A number representing the largest integer less than or equal to the specified number\n * @example\n *\n * RA.floor(45.95); //=> 45\n * RA.floor(45.05); //=> 45\n * RA.floor(4); //=> 4\n * RA.floor(-45.05); //=> -46\n * RA.floor(-45.95); //=> -46\n * RA.floor(null); //=> 0\n */\n\nvar floor = curryN(1, bind(Math.floor, Math));\nexport default floor;","import { curryN, map, range, always } from 'ramda';\nimport floor from './floor';\n/**\n * Creates an array of numbers (positive and/or negative) progressing from start up to, but not including, end.\n *\n * `Note`: JavaScript follows the IEEE-754 standard for resolving floating-point values which can produce unexpected results.\n *\n * @func rangeStep\n * @memberOf RA\n * @category List\n * @since {@link https://char0n.github.io/ramda-adjunct/2.30.0|v2.30.0}\n * @sig Number -> Number -> Number -> [Number]\n * @param {number} step The value to increment or decrement by\n * @param {number} from The start of the range\n * @param {number} to The end of the range\n * @return {number[]} Returns the range of numbers\n * @see {@link http://ramdajs.com/docs/#range|R.range}\n * @example\n *\n * RA.rangeStep(1, 0, 4); // => [0, 1 ,2, 3]\n * RA.rangeStep(-1, 0, -4); // => [0, -1, -2, -3]\n * RA.rangeStep(1, 1, 5); // => [1, 2, 3, 4]\n * RA.rangeStep(5, 0, 20); // => [0, 5, 10, 15]\n * RA.rangeStep(-1, 0, -4); // => [0, -1, -2, -3]\n * RA.rangeStep(0, 1, 4); // => [1, 1, 1]\n * RA.rangeStep(1, 0, 0); // => []\n */\n\nvar rangeStep = curryN(3, function (step, from, to) {\n var callback = step === 0 ? always(from) : function (n) {\n return from + step * n;\n };\n var rangeEnd = step === 0 ? to - from : floor((to - from) / step);\n return map(callback, range(0, rangeEnd));\n});\nexport default rangeStep;","import { pipe, curry, find, defaultTo } from 'ramda';\n/**\n * Returns the first element of the list which matches the predicate.\n * Returns default value if no element matches or matched element is `null`, `undefined` or `NaN`.\n * Dispatches to the find method of the second argument, if present.\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func findOr\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.32.0|v2.32.0}\n * @category List\n * @sig a -> (b -> Boolean) -> [b] -> b | a\n * @param {*} defaultValue The default value\n * @param {Function} fn The predicate function used to determine if the element is the desired one.\n * @param {Array} list The array to consider.\n * @return {*} The element found, or the default value.\n * @see {@link http://ramdajs.com/docs/#defaultTo|R.defaultTo}, {@link http://ramdajs.com/docs/#find|R.find}\n * @example\n *\n * RA.findOr(1, isUndefined, [1, 2, undefined]); // => 1\n * RA.findOr(1, val => val === 2, [1, 2, undefined]); // => 2\n * RA.findOr(1, val => val === 3, [1, 2, undefined]); // => 1\n */\n\nvar findOr = curry(function (defaultVal, fn, list) {\n return pipe(find(fn), defaultTo(defaultVal))(list);\n});\nexport default findOr;","import { curryN, path, apply, init, bind } from 'ramda';\nimport isNotFunction from './isNotFunction';\nimport isEmptyArray from './isEmptyArray';\n/**\n * Invokes the method at path of object with given arguments.\n *\n * @func invokeArgs\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.27.0|v2.27.0}\n * @category Object\n * @sig Array -> Array -> Object -> *\n * @param {Array.} path The path of the method to invoke\n * @param {Array} args The arguments to invoke the method with\n * @param {Object} obj The object to query\n * @return {*}\n * @example\n *\n * RA.invokeArgs(['abs'], [-1], Math); //=> 1\n * RA.invokeArgs(['path', 'to', 'non-existent', 'method'], [-1], Math); //=> undefined\n */\n\nvar invokeArgs = curryN(3, function (mpath, args, obj) {\n var method = path(mpath, obj);\n var context = path(init(mpath), obj);\n if (isNotFunction(method)) return undefined;\n if (isEmptyArray(mpath)) return undefined;\n var boundMethod = bind(method, context);\n return apply(boundMethod, args);\n});\nexport default invokeArgs;","import { __ } from 'ramda';\nimport invokeArgs from './invokeArgs';\n/**\n * Invokes the method at path of object.\n *\n * @func invoke\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.31.0|v2.31.0}\n * @category Object\n * @sig Array -> Object -> *\n * @param {Array.} path The path of the method to invoke\n * @param {Object} obj The object to query\n * @return {*}\n * @example\n *\n * RA.invoke(['random'], Math); //=> 0.5113253820009047\n */\n\nvar invoke = invokeArgs(__, [], __);\nexport default invoke;","import { curry, ap, path, __ } from 'ramda';\n/**\n * Acts as multiple path: arrays of paths in, array of values out. Preserves order.\n *\n * @func paths\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.2.0|v1.2.0}\n * @category List\n * @sig [[k]] -> {k: v} - [v]\n * @param {Array} ps The property paths to fetch\n * @param {Object} obj The object to query\n * @return {Array} The corresponding values or partially applied function\n * @see {@link https://github.com/ramda/ramda/wiki/Cookbook#derivative-of-rprops-for-deep-fields|Ramda Cookbook}, {@link http://ramdajs.com/docs/#props|R.props}\n * @example\n *\n * const obj = {\n * a: { b: { c: 1 } },\n * x: 2,\n * };\n *\n * RA.paths([['a', 'b', 'c'], ['x']], obj); //=> [1, 2]\n */\n\nvar paths = curry(function (ps, obj) {\n return ap([path(__, obj)], ps);\n});\nexport default paths;","import { curry, has } from 'ramda';\nimport renameKeysWith from './renameKeysWith';\n\nvar valueOrKey = function valueOrKey(keysMap) {\n return function (key) {\n if (has(key, keysMap)) {\n return keysMap[key];\n }\n\n return key;\n };\n};\n/**\n * Creates a new object with the own properties of the provided object, but the\n * keys renamed according to the keysMap object as `{oldKey: newKey}`.\n * When some key is not found in the keysMap, then it's passed as-is.\n *\n * Keep in mind that in the case of keys conflict is behaviour undefined and\n * the result may vary between various JS engines!\n *\n * @func renameKeys\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.5.0|v1.5.0}\n * @category Object\n * @sig {a: b} -> {a: *} -> {b: *}\n * @param {!Object} keysMap\n * @param {!Object} obj\n * @return {!Object} New object with renamed keys\n * @see {@link https://github.com/ramda/ramda/wiki/Cookbook#rename-keys-of-an-object|Ramda Cookbook}, {@link RA.renameKeysWith|renameKeysWith}\n * @example\n *\n * const input = { firstName: 'Elisia', age: 22, type: 'human' };\n *\n * RA.renameKeys({ firstName: 'name', type: 'kind', foo: 'bar' })(input);\n * //=> { name: 'Elisia', age: 22, kind: 'human' }\n */\n\n\nvar renameKeys = curry(function (keysMap, obj) {\n return renameKeysWith(valueOrKey(keysMap), obj);\n});\nexport default renameKeys;","import { curry, equals, when } from 'ramda';\nimport renameKeysWith from './renameKeysWith';\n/**\n * Creates a new object with the own properties of the provided object, but the\n * key `key` renamed according to logic of renaming function.\n *\n * Keep in mind that in case the new key name already existed on the object,\n * the behaviour is undefined and the result may vary between various JS engines!\n *\n * @func renameKeyWith\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.29.0|v2.29.0}\n * @category Object\n * @sig (k -> k) -> k -> {k: v} -> {k: v}\n * @param {Function} fn Function that renames the keys\n * @param {!string} key Key to rename\n * @param {!Object} obj Provided object\n * @return {!Object} New object with renamed key\n * @see {@link RA.renameKeysWith|renameKeysWith}\n * @example\n *\n * RA.renameKeyWith(R.concat('a'), 'A', { A: 1 }) //=> { aA: 1 }\n */\n\nvar renameKeyWith = curry(function (fn, key, obj) {\n return renameKeysWith(when(equals(key), fn), obj);\n});\nexport default renameKeyWith;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { curryN } from 'ramda';\nimport renameKeys from './renameKeys';\n/**\n * Creates a new object with the own properties of the provided object, and the\n * keys copied according to the keysMap object as `{oldKey: newKey}`.\n * When no key from the keysMap is found, then a shallow clone of an object is returned.\n *\n * Keep in mind that in the case of keys conflict is behaviour undefined and\n * the result may vary between various JS engines!\n *\n * @func copyKeys\n * @memberOf RA\n * @category Object\n * @sig {a: b} -> {a: *} -> {b: *}\n * @param {!Object} keysMap\n * @param {!Object} obj\n * @return {!Object} New object with copied keys\n * @see {@link RA.renameKeys|renameKeys}\n * @example\n *\n * copyKeys({ a: 'b' }, { a: true }); //=> { a: true, b: true }\n * copyKeys({ a: 'b' }, { a: true, b: false }); //=> { a: true, b: true }\n */\n\nvar copyKeys = curryN(2, function (keysMap, obj) {\n return _objectSpread(_objectSpread({}, obj), renameKeys(keysMap, obj));\n});\nexport default copyKeys;","import { merge, flip } from 'ramda';\n/**\n * Create a new object with the own properties of the second object merged with\n * the own properties of the first object. If a key exists in both objects,\n * the value from the first object will be used. *\n * Putting it simply: it sets properties only if they don't exist.\n *\n * @func mergeRight\n * @deprecated since v2.12.0; available in ramda@0.26.0 as R.mergeLeft\n * @aliases mergeLeft, resetToDefault\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.6.0|v1.6.0}\n * @category Object\n * @sig {k: v} -> {k: v} -> {k: v}\n * @param {Object} r Destination\n * @param {Object} l Source\n * @return {Object}\n * @see {@link http://ramdajs.com/docs/#merge|R.merge}, {@link https://github.com/ramda/ramda/wiki/Cookbook#set-properties-only-if-they-dont-exist|Ramda Cookbook}\n * @example\n *\n * RA.mergeRight({ 'age': 40 }, { 'name': 'fred', 'age': 10 });\n * //=> { 'name': 'fred', 'age': 40 }\n */\n\nvar mergeRight = flip(merge);\nexport default mergeRight;","import { curryN, pipe, mergeAll, props } from 'ramda';\n/**\n * Functional equivalent of merging object properties with object spread operator.\n *\n * @func mergeProps\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.17.0|v1.17.0}\n * @category Object\n * @sig [k] -> {k: {a}} -> {a}\n * @see {@link RA.mergePaths|mergePaths}\n * @param {!Array} ps The property names to merge\n * @param {!Object} obj The object to query\n * @return {!Object} The object composed of merged properties of obj\n * @example\n *\n * const obj = {\n * foo: { fooInner: 1 },\n * bar: { barInner: 2 }\n * };\n *\n * { ...obj.foo, ...obj.bar }; //=> { fooInner: 1, barInner: 2 }\n * RA.mergeProps(['foo', 'bar'], obj); //=> { fooInner: 1, barInner: 2 }\n */\n\nvar mergeProps = curryN(2, pipe(props, mergeAll));\nexport default mergeProps;","import { curryN, pipe, mergeAll } from 'ramda';\nimport paths from './paths';\n/**\n * Merge objects under corresponding paths.\n *\n * @func mergePaths\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.17.0|v1.17.0}\n * @category Object\n * @sig [[k]] -> {k: {a}} -> {a}\n * @see {@link RA.mergeProps|mergeProps}\n * @param {!Array} paths The property paths to merge\n * @param {!Object} obj The object to query\n * @return {!Object} The object composed of merged property paths of obj\n * @example\n *\n * const obj = {\n * foo: { fooInner: { fooInner2: 1 } },\n * bar: { barInner: 2 }\n * };\n *\n * { ...obj.foo.fooInner, ...obj.bar }; //=> { fooInner2: 1, barInner: 2 }\n * RA.mergePaths([['foo', 'fooInner'], ['bar']], obj); //=> { fooInner2: 1, barInner: 2 }\n */\n\nvar mergePaths = curryN(2, pipe(paths, mergeAll));\nexport default mergePaths;","import { curry, over, lensPath } from 'ramda';\nimport mergeRight from './mergeRight';\n/**\n * Create a new object with the own properties of the object under the `path`\n * merged with the own properties of the provided `source`.\n * If a key exists in both objects, the value from the `source` object will be used.\n *\n * @func mergePath\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.18.0|v1.18.0}\n * @category Object\n * @sig [k] -> {a} -> {k: {a}} -> {k: {a}}\n * @see {@link RA.mergeProp|mergeProp}\n * @param {!Array} path The property path of the destination object\n * @param {!Object} source The source object\n * @param {!Object} obj The object that has destination object under corresponding property path\n * @return {!Object} The new version of object\n * @example\n *\n * RA.mergePath(\n * ['outer', 'inner'],\n * { foo: 3, bar: 4 },\n * { outer: { inner: { foo: 2 } } }\n * ); //=> { outer: { inner: { foo: 3, bar: 4 } }\n */\n\nvar mergePath = curry(function (path, source, obj) {\n return over(lensPath(path), mergeRight(source), obj);\n});\nexport default mergePath;","import { curry, of } from 'ramda';\nimport mergePath from './mergePath';\n/**\n * Create a new object with the own properties of the object under the `p`\n * merged with the own properties of the provided `source`.\n * If a key exists in both objects, the value from the `source` object will be used.\n *\n * @func mergeProp\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.18.0|v1.18.0}\n * @category Object\n * @sig [k] -> {a} -> {k: {a}} -> {k: {a}}\n * @see {@link RA.mergePath|mergePath}\n * @param {!Array} p The property of the destination object\n * @param {!Object} source The source object\n * @param {!Object} obj The object that has destination object under corresponding property\n * @return {!Object} The new version of object\n * @example\n *\n * RA.mergeProp(\n * 'outer',\n * { foo: 3, bar: 4 },\n * { outer: { foo: 2 } }\n * ); //=> { outer: { foo: 3, bar: 4 } };\n */\n\nvar mergeProp = curry(function (p, subj, obj) {\n return mergePath(of(p), subj, obj);\n});\nexport default mergeProp;","import { complement, identity, pickBy, useWith } from 'ramda';\n/* eslint-disable max-len */\n\n/**\n * Returns a partial copy of an object containing only the keys\n * that don't satisfy the supplied predicate.\n *\n * @func omitBy\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.6.0|v2.6.0}\n * @category Object\n * @sig ((v, k) -> Boolean) -> {k: v} -> {k: v}\n * @param {!Function} pred A predicate to determine whether or not a key should be included on the output object\n * @param {!Object} obj The object to copy from\n * @return {!Object} A new object only with properties that don't satisfy `pred`\n *\n * @example\n *\n * const isLowerCase = (val, key) => key.toLowerCase() === key;\n * RA.omitBy(isLowerCase, {a: 1, b: 2, A: 3, B: 4}); //=> {A: 3, B: 4}\n */\n\n/* eslint-enable max-len */\n\nvar omitBy = useWith(pickBy, [complement, identity]);\nexport default omitBy;","import { curryN, identical, partial, pathOr, unary, when } from 'ramda';\n/**\n * If the given, non-null object has a value at the given path, returns the value at that path.\n * Otherwise returns the result of invoking the provided function with the object.\n *\n * @func pathOrLazy\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category Object\n * @typedef Idx = String | Int\n * @sig ({a} -> a) -> [Idx] -> {a} -> a\n * @param {Function} defaultFn The function that will return the default value.\n * @param {Array} path The path to use.\n * @param {Object} obj The object to retrieve the nested property from.\n * @return {*} The data at `path` of the supplied object or the default value.\n * @example\n *\n * RA.pathOrLazy(() => 'N/A', ['a', 'b'], {a: {b: 2}}); //=> 2\n * RA.pathOrLazy(() => 'N/A', ['a', 'b'], {c: {b: 2}}); //=> \"N/A\"\n */\n\nvar pathOrLazy = curryN(3, function (defaultFn, path, obj) {\n return when(identical(defaultFn), partial(unary(defaultFn), [obj]), pathOr(defaultFn, path, obj));\n});\nexport default pathOrLazy;","import { view, defaultTo, curryN } from 'ramda';\n/**\n * Returns a \"view\" of the given data structure, determined by the given lens.\n * The lens's focus determines which portion of the data structure is visible.\n * Returns the defaultValue if \"view\" is null, undefined or NaN; otherwise the \"view\" is returned.\n *\n * @func viewOr\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.13.0|1.13.0}\n * @category Object\n * @typedef Lens s b = Functor f => (b -> f b) -> s -> f s\n * @sig a -> Lens s b -> s -> b | a\n * @see {@link http://ramdajs.com/docs/#view|R.view}\n * @param {*} defaultValue The default value\n * @param {Function} lens Van Laarhoven lens\n * @param {*} data The data structure\n * @returns {*} \"view\" or defaultValue\n *\n * @example\n *\n * RA.viewOr('N/A', R.lensProp('x'), {}); // => 'N/A'\n * RA.viewOr('N/A', R.lensProp('x'), { x: 1 }); // => 1\n * RA.viewOr('some', R.lensProp('y'), { y: null }); // => 'some'\n * RA.viewOr('some', R.lensProp('y'), { y: false }); // => false\n */\n\nvar viewOr = curryN(3, function (defaultValue, lens, data) {\n return defaultTo(defaultValue, view(lens, data));\n});\nexport default viewOr;","import { length, has, path, head, tail, curryN } from 'ramda';\nimport isObj from './isObj';\n/**\n * Returns whether or not an object has an own property with the specified name at a given path.\n *\n * @func hasPath\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.14.0|v1.14.0}\n * @deprecated since v2.12.0; ramda@0.26.0 contains hasPath\n * @category Object\n * @typedef Idx = String | Int\n * @sig [Idx] -> {a} -> Boolean\n * @param {Array.} path The path of the nested property\n * @param {Object} obj The object to test\n * @return {boolean}\n * @see {@link http://ramdajs.com/docs/#has|R.has}\n * @example\n *\n * RA.hasPath(['a', 'b'], { a: { b: 1 } }); //=> true\n * RA.hasPath(['a', 'b', 'c'], { a: { b: 1 } }); //=> false\n * RA.hasPath(['a', 'b'], { a: { } }); //=> false\n * RA.hasPath([0], [1, 2]); //=> true\n */\n\nvar hasPath = curryN(2, function (objPath, obj) {\n var prop = head(objPath); // termination conditions\n\n if (length(objPath) === 0 || !isObj(obj)) {\n return false;\n }\n\n if (length(objPath) === 1) {\n return has(prop, obj);\n }\n\n return hasPath(tail(objPath), path([prop], obj)); // base case\n});\nexport default hasPath;","import { curryN, converge, merge, dissocPath, pathOr } from 'ramda';\n/**\n * Spreads object under property path onto provided object.\n * It's like {@link RA.flattenPath|flattenPath}, but removes object under the property path.\n *\n * @func spreadPath\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.19.0|v1.19.0}\n * @category Object\n * @typedef Idx = String | Int\n * @sig [Idx] -> {k: v} -> {k: v}\n * @param {!Array.} path The property path to spread\n * @param {!Object} obj The provided object\n * @return {!Object} The result of the spread\n * @see {@link RA.spreadProp|spreadProp}, {@link RA.flattenPath|flattenPath}\n * @example\n *\n * RA.spreadPath(\n * ['b1', 'b2'],\n * { a: 1, b1: { b2: { c: 3, d: 4 } } }\n * ); // => { a: 1, c: 3, d: 4, b1: {} };\n */\n\nvar spreadPath = curryN(2, converge(merge, [dissocPath, pathOr({})]));\nexport default spreadPath;","import { of, curry } from 'ramda';\nimport spreadPath from './spreadPath';\n/**\n * Spreads object under property onto provided object.\n * It's like {@link RA.flattenProp|flattenProp}, but removes object under the property.\n *\n * @func spreadProp\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.19.0|v1.19.0}\n * @category Object\n * @typedef Idx = String | Int\n * @sig Idx -> {k: v} -> {k: v}\n * @param {!string|number} prop The property to spread\n * @param {!Object} obj The provided object\n * @return {!Object} The result of the spread\n * @see {@link RA.spreadPath|spreadPath}, {@link RA.flattenProp|flattenProp}\n * @example\n *\n * RA.spreadProp('b', { a: 1, b: { c: 3, d: 4 } }); // => { a: 1, c: 3, d: 4 };\n */\n\nvar spreadProp = curry(function (prop, obj) {\n return spreadPath(of(prop), obj);\n});\nexport default spreadProp;","import { pathOr, curry, merge } from 'ramda';\n/**\n * Flattens a property path so that its fields are spread out into the provided object.\n * It's like {@link RA.spreadPath|spreadPath}, but preserves object under the property path.\n *\n * @func flattenPath\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.19.0|v1.19.0}\n * @category Object\n * @typedef Idx = String | Int\n * @sig [Idx] -> {k: v} -> {k: v}\n * @param {!Array.} path The property path to flatten\n * @param {!Object} obj The provided object\n * @return {!Object} The flattened object\n * @see {@link RA.flattenProp|flattenProp}, {@link RA.spreadPath|spreadPath}\n * @example\n *\n * RA.flattenPath(\n * ['b1', 'b2'],\n * { a: 1, b1: { b2: { c: 3, d: 4 } } }\n * ); // => { a: 1, c: 3, d: 4, b1: { b2: { c: 3, d: 4 } } };\n */\n\nvar flattenPath = curry(function (path, obj) {\n return merge(obj, pathOr({}, path, obj));\n});\nexport default flattenPath;","import { of, curry } from 'ramda';\nimport flattenPath from './flattenPath';\n/**\n * Flattens a property so that its fields are spread out into the provided object.\n * It's like {@link RA.spreadProp|spreadProp}, but preserves object under the property path.\n *\n * @func flattenProp\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.19.0|v1.19.0}\n * @category Object\n * @typedef Idx = String | Int\n * @sig [Idx] -> {k: v} -> {k: v}\n * @param {!string|number} prop The property to flatten\n * @param {!Object} obj The provided object\n * @return {!Object} The flattened object\n * @see {@link RA.flattenPath|flattenPath}, {@link RA.spreadProp|spreadProp}\n * @example\n *\n * RA.flattenProp(\n * 'b',\n * { a: 1, b: { c: 3, d: 4 } }\n * ); // => { a: 1, c: 3, d: 4, b: { c: 3, d: 4 } };\n */\n\nvar flattenProp = curry(function (prop, obj) {\n return flattenPath(of(prop), obj);\n});\nexport default flattenProp;","import { apply, curryN, flip, map, pipe, toPairs, transpose, when } from 'ramda';\nimport lengthEq from './lengthEq';\n/**\n * Creates a new list out of the supplied object by applying the function to each key/value pairing.\n *\n * @func unzipObjWith\n * @memberOf RA\n * @category Object\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @sig (v, k) => [k, v] -> { k: v } -> [[k], [v]]\n * @param {Function} fn The function to transform each value-key pair\n * @param {Object} obj Object to unzip\n * @return {Array} A pair of tw lists: a list of keys and a list of values\n * @see {@link https://ramdajs.com/docs/#zipObj|zipObj}, {@link RA.zipObjWith|zipObjWith}\n * @example\n *\n * RA.unzipObjWith((v, k) => [`new${k.toUpperCase()}`, 2 * v], { a: 1, b: 2, c: 3 });\n * //=> [['newA', 'newB', 'newC'], [2, 4, 6]]\n */\n\nvar unzipObjWith = curryN(2, function (fn, obj) {\n return pipe(toPairs, map(pipe(flip, apply)(fn)), transpose, when(lengthEq(0), function () {\n return [[], []];\n }))(obj);\n});\nexport default unzipObjWith;","import { apply, curryN, fromPairs, map, pipe, zip } from 'ramda';\n/**\n * Creates a new object out of a list of keys and a list of values by applying the function\n * to each equally-positioned pair in the lists.\n * Key/value pairing is truncated to the length of the shorter of the two lists.\n *\n * @func zipObjWith\n * @memberOf RA\n * @category Object\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @sig (b, a) -> [k, v] -> [a] -> [b] -> { k: v }\n * @param {Function} fn The function to transform each value-key pair\n * @param {Array} keys Array to transform into the properties on the output object\n * @param {Array} values Array to transform into the values on the output object\n * @return {Object} The object made by pairing up and transforming same-indexed elements of `keys` and `values`.\n * @see {@link https://ramdajs.com/docs/#zipObj|zipObj}, {@link RA.unzipObjWith|unzipObjWith}\n * @example\n *\n * RA.zipObjWith((value, key) => [key, `${key}${value + 1}`]), ['a', 'b', 'c'], [1, 2, 3]);\n * // => { a: 'a2', b: 'b3', c: 'c4' }\n */\n\nvar zipObjWith = curryN(3, function (fn, keys, values) {\n return pipe(zip, map(apply(fn)), fromPairs)(values, keys);\n});\nexport default zipObjWith;","import { curry } from 'ramda';\nimport invokeArgs from './invokeArgs';\n/**\n * Checks if an object exists in another object's prototype chain.\n *\n * @func isPrototypeOf\n * @category Object\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.31.0|v2.31.0}\n * @sig * -> Boolean\n * @param {Object} type The prototype that we're searching for\n * @param {Object} object The object whose prototype chain will be searched\n * @return {boolean}\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf|Object.prorotype.isPrototypeOf}\n * @example\n * function Foo() {}\n * function Bar() {}\n * function Baz() {}\n *\n * Bar.prototype = Object.create(Foo.prototype);\n * Baz.prototype = Object.create(Bar.prototype);\n *\n * const baz = new Baz();\n *\n * RA.isPrototypeOf(Baz, baz); // => true\n * RA.isPrototypeOf(Bar, baz); // => true\n * RA.isPrototypeOf(Foo, baz); // => true\n * RA.isPrototypeOf(Object, baz); // => true\n */\n\nvar isPrototypeOf = curry(function (type, object) {\n return Boolean(invokeArgs(['prototype', 'isPrototypeOf'], [object], type));\n});\nexport default isPrototypeOf;","import { view, curryN, equals, pipe } from 'ramda';\n/**\n * Returns `true` if data structure focused by the given lens equals provided value.\n *\n * @func lensEq\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.13.0|1.13.0}\n * @category Relation\n * @typedef Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Lens s a -> b -> s -> Boolean\n * @see {@link RA.lensNotEq|lensNotEq}\n * @param {function} lens Van Laarhoven lens\n * @param {*} value The value to compare the focused data structure with\n * @param {*} data The data structure\n * @return {boolean} `true` if the focused data structure equals value, `false` otherwise\n *\n * @example\n *\n * RA.lensEq(R.lensIndex(0), 1, [0, 1, 2]); // => false\n * RA.lensEq(R.lensIndex(1), 1, [0, 1, 2]); // => true\n * RA.lensEq(R.lensPath(['a', 'b']), 'foo', { a: { b: 'foo' } }) // => true\n */\n\nvar lensEq = curryN(3, function (lens, val, data) {\n return pipe(view(lens), equals(val))(data);\n});\nexport default lensEq;","import { complement } from 'ramda';\nimport lensEq from './lensEq';\n/**\n * Returns `true` if data structure focused by the given lens doesn't equal provided value.\n *\n * @func lensNotEq\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.13.0|1.13.0}\n * @category Relation\n * @typedef Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Lens s a -> b -> s -> Boolean\n * @see {@link RA.lensEq|lensEq}\n * @param {function} lens Van Laarhoven lens\n * @param {*} value The value to compare the focused data structure with\n * @param {*} data The data structure\n * @return {boolean} `false` if the focused data structure equals value, `true` otherwise\n *\n * @example\n *\n * RA.lensNotEq(R.lensIndex(0), 1, [0, 1, 2]); // => true\n * RA.lensNotEq(R.lensIndex(1), 1, [0, 1, 2]); // => false\n * RA.lensNotEq(R.lensPath(['a', 'b']), 'foo', { a: { b: 'foo' } }) // => false\n */\n\nvar lensNotEq = complement(lensEq);\nexport default lensNotEq;","import { view, curryN, pipe } from 'ramda';\nimport isTrue from './isTrue';\n/**\n * Returns `true` if data structure focused by the given lens satisfies the predicate.\n * Note that the predicate is expected to return boolean value and will be evaluated\n * as `false` unless the predicate returns `true`.\n *\n * @func lensSatisfies\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.13.0|1.13.0}\n * @category Relation\n * @typedef Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Boolean b => (a -> b) -> Lens s a -> s -> b\n * @see {@link RA.lensNotSatisfy|lensNotSatisfy}\n * @param {Function} predicate The predicate function\n * @param {Function} lens Van Laarhoven lens\n * @param {*} data The data structure\n * @return {boolean} `true` if the focused data structure satisfies the predicate, `false` otherwise\n *\n * @example\n *\n * RA.lensSatisfies(RA.isTrue, R.lensIndex(0), [false, true, 1]); // => false\n * RA.lensSatisfies(RA.isTrue, R.lensIndex(1), [false, true, 1]); // => true\n * RA.lensSatisfies(RA.isTrue, R.lensIndex(2), [false, true, 1]); // => false\n * RA.lensSatisfies(R.identity, R.lensProp('x'), { x: 1 }); // => false\n */\n\nvar lensSatisfies = curryN(3, function (predicate, lens, data) {\n return pipe(view(lens), predicate, isTrue)(data);\n});\nexport default lensSatisfies;","import { complement } from 'ramda';\nimport lensSatisfies from './lensSatisfies';\n/**\n * Returns `true` if data structure focused by the given lens doesn't satisfy the predicate.\n * Note that the predicate is expected to return boolean value.\n *\n * @func lensNotSatisfy\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.13.0|1.13.0}\n * @category Relation\n * @typedef Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Boolean b => (a -> b) -> Lens s a -> s -> b\n * @see {@link RA.lensSatisfies|lensSatisfies}\n * @param {Function} predicate The predicate function\n * @param {Function} lens Van Laarhoven lens\n * @param {*} data The data structure\n * @return {boolean} `false` if the focused data structure satisfies the predicate, `true` otherwise\n *\n * @example\n *\n * RA.lensNotSatisfy(RA.isTrue, R.lensIndex(0), [false, true, 1]); // => true\n * RA.lensNotSatisfy(RA.isTrue, R.lensIndex(1), [false, true, 1]); // => false\n * RA.lensNotSatisfy(RA.isTrue, R.lensIndex(2), [false, true, 1]); // => true\n * RA.lensNotSatisfy(R.identity, R.lensProp('x'), { x: 1 }); // => true\n */\n\nvar lensNotSatisfy = complement(lensSatisfies);\nexport default lensNotSatisfy;","import { useWith, curry, curryN, equals, path, either, complement } from 'ramda'; // type :: Monad a => a -> String\n\nexport var type = either(path(['@@type']), path(['constructor', '@@type'])); // typeEquals :: Monad a => String -> a -> Boolean\n\nexport var typeEquals = curry(function (typeIdent, monad) {\n return type(monad) === typeIdent;\n}); // isSameType :: (Monad a, Monad b) => a -> b -> Boolean\n\nexport var isSameType = curryN(2, useWith(equals, [type, type])); // isNotSameType :: (Monad a, Monad b) => a -> b -> Boolean\n\nexport var isNotSameType = complement(isSameType);","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { equals, pathSatisfies } from 'ramda';\nimport isString from '../isString';\nimport isNumber from '../isNumber';\nimport isFunction from '../isFunction';\nimport { isSameType } from './util';\nimport * as fl from './mapping';\nexport var functorTrait = _defineProperty({}, fl.map, function (fn) {\n return this.constructor[fl.of](fn(this.value));\n});\nexport var applyTrait = _defineProperty({}, fl.ap, function (applyWithFn) {\n var _this = this;\n\n return applyWithFn.map(function (fn) {\n return fn(_this.value);\n });\n});\nexport var setoidTrait = _defineProperty({}, fl.equals, function (setoid) {\n return isSameType(this, setoid) && equals(this.value, setoid.value);\n});\nexport var semigroupTrait = _defineProperty({}, fl.concat, function (semigroup) {\n var concatenatedValue = this.value;\n\n if (isString(this.value) || isNumber(this.value)) {\n concatenatedValue = this.value + semigroup.value;\n } else if (pathSatisfies(isFunction, ['value', fl.concat], this)) {\n concatenatedValue = this.value[fl.concat](semigroup.value);\n } else if (pathSatisfies(isFunction, ['value', 'concat'], this)) {\n concatenatedValue = this.value.concat(semigroup.value);\n }\n\n return this.constructor[fl.of](concatenatedValue);\n});\nexport var chainTrait = _defineProperty({}, fl.chain, function (fn) {\n var newChain = fn(this.value);\n return isSameType(this, newChain) ? newChain : this;\n});\nexport var ordTrait = _defineProperty({}, fl.lte, function (ord) {\n return isSameType(this, ord) && (this.value < ord.value || this[fl.equals](ord));\n});","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { empty as emptyR } from 'ramda';\nimport * as fl from './mapping';\nimport { applyTrait, functorTrait, setoidTrait, semigroupTrait, chainTrait, ordTrait } from './traits';\n/**\n * The simplest {@link https://github.com/fantasyland/fantasy-land|fantasy-land}\n * compatible monad which attaches no information to values.\n *\n * The Identity type is a very simple type that has no interesting side effects and\n * is effectively just a container of some value. So why does it exist ?\n * The Identity type is often used as the base monad of a monad\n * transformer when no other behaviour is required.\n *\n * @memberOf RA\n * @implements\n * {@link https://github.com/fantasyland/fantasy-land#apply|Apply},\n * {@link https://github.com/fantasyland/fantasy-land#applicative|Applicative},\n * {@link https://github.com/fantasyland/fantasy-land#functor|Functor},\n * {@link https://github.com/fantasyland/fantasy-land#setoid|Setoid},\n * {@link https://github.com/fantasyland/fantasy-land#semigroup|Semigroup},\n * {@link https://github.com/fantasyland/fantasy-land#chain|Chain},\n * {@link https://github.com/fantasyland/fantasy-land#monad|Monad},\n * {@link https://github.com/fantasyland/fantasy-land#ord|Ord},\n * {@link https://github.com/fantasyland/fantasy-land#monoid|Monoid*},\n * {@link https://github.com/fantasyland/fantasy-land#contravariant|Contravariant}\n * @since {@link https://char0n.github.io/ramda-adjunct/1.8.0|v1.8.0}\n */\n\nvar Identity = /*#__PURE__*/function (_fl$of, _fl$ap, _fl$map, _fl$equals, _fl$concat, _fl$chain, _fl$lte, _fl$empty, _fl$contramap) {\n /**\n * Private constructor. Use {@link RA.Identity.of|Identity.of} instead.\n *\n * @param {*} value\n * @return {RA.Identity}\n */\n function Identity(value) {\n _classCallCheck(this, Identity);\n\n this.value = value;\n }\n /**\n * Catamorphism for a value.\n * @returns {*}\n * @example\n *\n * const a = Identity.of(1);\n * a.get(); //=> 1\n */\n\n\n _createClass(Identity, [{\n key: \"get\",\n value: function get() {\n return this.value;\n }\n /**\n * Fantasy land {@link https://github.com/fantasyland/fantasy-land#apply|Apply} specification.\n *\n * @sig ap :: Apply f => f a ~> f (a -> b) -> f b\n * @param {RA.Identity} applyWithFn\n * @return {RA.Identity}\n * @example\n *\n * const a = Identity.of(1);\n * const b = Identity.of(1).map(a => b => a + b);\n *\n * a.ap(b); //=> Identity(2)\n */\n\n }, {\n key: _fl$ap,\n value: function value(applyWithFn) {\n return applyTrait[fl.ap].call(this, applyWithFn);\n }\n }, {\n key: \"ap\",\n value: function ap(applyWithFn) {\n return this[fl.ap](applyWithFn);\n }\n /**\n * Fantasy land {@link https://github.com/fantasyland/fantasy-land#functor|Functor} specification.\n *\n * @sig map :: Functor f => f a ~> (a -> b) -> f b\n * @param {Function} fn\n * @return {RA.Identity}\n * @example\n *\n * const a = Identity.of(1);\n * a.map(a => a + 1); //=> Identity(2)\n */\n\n }, {\n key: _fl$map,\n value: function value(fn) {\n return functorTrait[fl.map].call(this, fn);\n }\n }, {\n key: \"map\",\n value: function map(fn) {\n return this[fl.map](fn);\n }\n /**\n * Fantasy land {@link https://github.com/fantasyland/fantasy-land#setoid|Setoid} specification.\n *\n * @sig equals :: Setoid a => a ~> a -> Boolean\n * @param {RA.Identity} setoid\n * @return {boolean}\n * @example\n *\n * const a = Identity.of(1);\n * const b = Identity.of(1);\n * const c = Identity.of(2);\n *\n * a.equals(b); //=> true\n * a.equals(c); //=> false\n */\n\n }, {\n key: _fl$equals,\n value: function value(setoid) {\n return setoidTrait[fl.equals].call(this, setoid);\n }\n }, {\n key: \"equals\",\n value: function equals(setoid) {\n return this[fl.equals](setoid);\n }\n /**\n * Fantasy land {@link https://github.com/fantasyland/fantasy-land#semigroup|Semigroup} specification.\n *\n * @sig concat :: Semigroup a => a ~> a -> a\n * @param {RA.Identity} semigroup\n * @return {RA.Identity}\n * @example\n *\n * const a = Identity.of(1);\n * const b = Identity.of(1);\n * a.concat(b); //=> 2\n *\n * const c = Identity.of('c');\n * const d = Identity.of('d');\n * c.concat(d); //=> 'cd'\n *\n * const e = Identity.of(['e']);\n * const f = Identity.of(['f']);\n * e.concat(f); //=> ['e', 'f']\n */\n\n }, {\n key: _fl$concat,\n value: function value(semigroup) {\n return semigroupTrait[fl.concat].call(this, semigroup);\n }\n }, {\n key: \"concat\",\n value: function concat(semigroup) {\n return this[fl.concat](semigroup);\n }\n /**\n * Fantasy land {@link https://github.com/fantasyland/fantasy-land#chain|Chain} specification.\n *\n * @sig chain :: Chain m => m a ~> (a -> m b) -> m b\n * @param {Function} fn Function returning the value of the same {@link https://github.com/fantasyland/fantasy-land#semigroup|Chain}\n * @return {RA.Identity}\n * @example\n *\n * const a = Identity.of(1);\n * const fn = val => Identity.of(val + 1);\n *\n * a.chain(fn).chain(fn); //=> Identity(3)\n */\n\n }, {\n key: _fl$chain,\n value: function value(fn) {\n return chainTrait[fl.chain].call(this, fn);\n }\n }, {\n key: \"chain\",\n value: function chain(fn) {\n return this[fl.chain](fn);\n }\n /**\n * Fantasy land {@link https://github.com/fantasyland/fantasy-land#ord|Ord} specification.\n *\n * @sig lte :: Ord a => a ~> a -> Boolean\n * @param {RA.Identity} ord\n * @return {boolean}\n * @example\n *\n * const a = Identity.of(1);\n * const b = Identity.of(1);\n * const c = Identity.of(2);\n *\n * a.lte(b); //=> true\n * a.lte(c); //=> true\n * c.lte(a); //=> false\n */\n\n }, {\n key: _fl$lte,\n value: function value(ord) {\n return ordTrait[fl.lte].call(this, ord);\n }\n }, {\n key: \"lte\",\n value: function lte(ord) {\n return this[fl.lte](ord);\n }\n /**\n * Fantasy land {@link https://github.com/fantasyland/fantasy-land#monoid|Monoid*} specification.\n * Partial implementation of Monoid specification. `empty` method on instance only, returning\n * identity value of the wrapped type. Using `R.empty` under the hood.\n *\n *\n * @sig empty :: Monoid m => () -> m\n * @return {RA.Identity}\n * @example\n *\n * const a = Identity.of('test');\n * const i = a.empty();\n *\n * a.concat(i); //=> Identity('string');\n * i.concat(a); //=> Identity('string');\n */\n\n }, {\n key: _fl$empty,\n value: function value() {\n return this.constructor.of(emptyR(this.value));\n }\n }, {\n key: \"empty\",\n value: function empty() {\n return this[fl.empty]();\n }\n /**\n * Fantasy land {@link https://github.com/fantasyland/fantasy-land#contravariant|Contravariant} specification.\n *\n * @sig contramap :: Contravariant f => f a ~> (b -> a) -> f b\n * @param {Function} fn\n * @return {RA.Identity}\n * @example\n *\n * const identity = a => a;\n * const add1 = a => a + 1;\n * const divide2 = a => a / 2;\n *\n * Identity.of(divide2).contramap(add1).get()(3); //=> 2\n * Identity.of(identity).contramap(divide2).contramap(add1).get()(3); //=> 2\n * Identity.of(identity).contramap(a => divide2(add1(a))).get()(3); //=> 2\n */\n\n }, {\n key: _fl$contramap,\n value: function value(fn) {\n var _this = this;\n\n return this.constructor.of(function (value) {\n return _this.value(fn(value));\n });\n }\n }, {\n key: \"contramap\",\n value: function contramap(fn) {\n return this[fl.contramap](fn);\n }\n }], [{\n key: _fl$of,\n value:\n /**\n * Fantasy land {@link https://github.com/fantasyland/fantasy-land#applicative|Applicative} specification.\n *\n * @static\n * @sig of :: Applicative f => a -> f a\n * @param {*} value\n * @returns {RA.Identity}\n * @example\n *\n * const a = Identity.of(1); //=> Identity(1)\n */\n function value(_value) {\n return new Identity(_value);\n }\n }, {\n key: \"of\",\n value: function of(value) {\n return new Identity(value);\n }\n /**\n * @static\n */\n\n }, {\n key: '@@type',\n get: function get() {\n return 'RA/Identity';\n }\n }]);\n\n return Identity;\n}(fl.of, fl.ap, fl.map, fl.equals, fl.concat, fl.chain, fl.lte, fl.empty, fl.contramap);\n\nexport default Identity;","import { traverse, curry, pipe, prop, curryN } from 'ramda';\nimport Identity from './fantasy-land/Identity';\n/**\n * Creates a [Traversable](https://github.com/fantasyland/fantasy-land#traversable) lens\n * from an [Applicative](https://github.com/fantasyland/fantasy-land#applicative)-returning function.\n *\n * When executed, it maps an [Applicative](https://github.com/fantasyland/fantasy-land#applicative)-returning\n * function over a [Traversable](https://github.com/fantasyland/fantasy-land#traversable),\n * then uses [`sequence`](https://ramdajs.com/docs/#sequence) to transform the resulting Traversable of Applicative\n * into an Applicative of Traversable.\n *\n * Dispatches to the `traverse` method of the third argument, if present.\n *\n * @func lensTraverse\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.7.0|2.7.0}\n * @category Relation\n * @typedef Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Applicative f => (a -> f a) -> Lens s a\n * @param {!function} of The Applicative-returning function\n * @return {!function} The Traversable lens\n * @see {@link http://ramdajs.com/docs/#lens|R.lens}, {@link http://ramdajs.com/docs/#traverse|R.traverse}\n *\n * @example\n *\n * const maybeLens = RA.lensTraverse(Maybe.of);\n * const safeDiv = n => d => d === 0 ? Maybe.Nothing() : Maybe.Just(n / d)\n *\n * R.over(maybeLens, safeDiv(10), [2, 4, 5]); // => Just([5, 2.5, 2])\n * R.over(maybeLens, safeDiv(10), [2, 0, 5]); // => Nothing\n *\n * R.view(maybeLens, [Maybe.Just(2), Maybe.Just(3)]); // => Maybe.Just([2, 3])\n *\n * R.set(maybeLens, Maybe.Just(1), [Maybe.just(2), Maybe.Just(3)]); // => Maybe.Just([1, 1])\n */\n\nvar lensTraverse = curryN(1, function (of) {\n return curry(function (toFunctorFn, target) {\n return Identity.of(traverse(of, pipe(toFunctorFn, prop('value')), target));\n });\n});\nexport default lensTraverse;","import { curry, map } from 'ramda'; // This implementation was highly inspired by the implementations\n// in ramda-lens library.\n//\n// https://github.com/ramda/ramda-lens\n// isomorphic :: ((a -> b), (b -> a)) -> Isomorphism\n// Isomorphism = x -> y\n\nvar isomorphic = function isomorphic(to, from) {\n var isomorphism = function isomorphism(x) {\n return to(x);\n };\n\n isomorphism.from = from;\n return isomorphism;\n}; // isomorphisms :: ((a -> b), (b -> a)) -> (a -> b)\n\n\nvar isomorphisms = function isomorphisms(to, from) {\n return isomorphic(curry(function (toFunctorFn, target) {\n return map(from, toFunctorFn(to(target)));\n }), curry(function (toFunctorFn, target) {\n return map(to, toFunctorFn(from(target)));\n }));\n}; // from :: Isomorphism -> a -> b\n\n\nvar from = curry(function (isomorphism, x) {\n return isomorphism.from(x);\n});\n/**\n * Defines an isomorphism that will work like a lens. It takes two functions.\n * The function that converts and the function that recovers.\n *\n * @func lensIso\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/1.19.0|1.19.0}\n * @category Relation\n * @typedef Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig (s -> a) -> (a -> s) -> Lens s a\n * @param {!function} to The function that converts\n * @param {!function} from The function that recovers\n * @return {!function} The isomorphic lens\n * @see {@link http://ramdajs.com/docs/#lens|R.lens}\n *\n * @example\n *\n * const lensJSON = RA.lensIso(JSON.parse, JSON.stringify);\n *\n * R.over(lensJSON, assoc('b', 2), '{\"a\":1}'); //=> '{\"a\":1,\"b\":2}'\n * R.over(RA.lensIso.from(lensJSON), R.replace('}', ',\"b\":2}'), { a: 1 }); // => { a: 1, b: 2 }\n */\n\nvar lensIso = curry(isomorphisms);\nlensIso.from = from;\nexport default lensIso;","import { propEq, complement } from 'ramda';\n/**\n * Returns true if the specified object property is not equal,\n * in R.equals terms, to the given value; false otherwise.\n *\n * @func propNotEq\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.3.0|v2.3.0}\n * @category Relation\n * @sig String -> a -> Object -> Boolean\n * @param {String} name The property to pick\n * @param {a} val The value to compare to\n * @param {Object} object The object, that presumably contains value under the property\n * @return {boolean} Comparison result\n * @see {@link http://ramdajs.com/docs/#propEq|R.propEq}\n * @example\n *\n * const abby = { name: 'Abby', age: 7, hair: 'blond' };\n * const fred = { name: 'Fred', age: 12, hair: 'brown' };\n * const rusty = { name: 'Rusty', age: 10, hair: 'brown' };\n * const alois = { name: 'Alois', age: 15, disposition: 'surly' };\n * const kids = [abby, fred, rusty, alois];\n * const hasNotBrownHair = RA.propNotEq('hair', 'brown');\n *\n * R.filter(hasNotBrownHair, kids); //=> [abby, alois]\n */\n\nvar propNotEq = complement(propEq);\nexport default propNotEq;","import { pathEq, complement } from 'ramda';\n/* eslint-disable max-len */\n\n/**\n * Determines whether a nested path on an object doesn't have a specific value,\n * in R.equals terms. Most likely used to filter a list.\n *\n * @func pathNotEq\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.4.0|v2.4.0}\n * @category Relation\n * @sig [Idx] => a => {a} => Boolean\n * @sig Idx = String | Int\n * @param {Array} path The path of the nested property to use\n * @param {a} val The value to compare the nested property with\n * @param {Object} object The object to check the nested property in\n * @return {boolean} Returns Boolean `false` if the value equals the nested object property, `true` otherwise\n * @see {@link http://ramdajs.com/docs/#pathEq|R.pathEq}\n * @example\n *\n * const user1 = { address: { zipCode: 90210 } };\n * const user2 = { address: { zipCode: 55555 } };\n * const user3 = { name: 'Bob' };\n * const users = [ user1, user2, user3 ];\n * const isFamous = R.pathNotEq(['address', 'zipCode'], 90210);\n * R.filter(isFamous, users); //=> [ user2, user3 ]\n */\n\n/* eslint-enable max-len */\n\nvar pathNotEq = complement(pathEq);\nexport default pathNotEq;","import { ifElse, curry, useWith, both, gte, lte, gt } from 'ramda';\nvar inRangeImp = ifElse(gte, function () {\n throw new Error('low must not be greater than high in inRange(low, high, value)');\n}, useWith(both, [lte, gt]));\n/**\n * Checks if `value` is between `low` and up to but not including `high`.\n *\n * @func inRange\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.7.0|v2.7.0}\n * @category Relation\n * @sig Number -> Number -> Number -> Boolean\n * @param {number} low Start of the range\n * @param {number} high The end of the range\n * @param {number} value The value to test\n * @return {boolean}\n * @throws {Error} When `low` is greater than or equal to `high`\n * @example\n *\n * RA.inRange(0, 5, 3); //=> true\n * RA.inRange(0, 5, 0); //=> true\n * RA.inRange(0, 5, 4); //=> true\n * RA.inRange(0, 5, 5); //=> false\n * RA.inRange(0, 5, -1); //=> false\n */\n\nexport default curry(function (low, high, value) {\n return inRangeImp(low, high)(value);\n});","import { complement, equals } from 'ramda';\n/**\n * Returns `true` if its arguments are not equivalent, `false` otherwise. Handles\n * cyclical data structures.\n *\n * Dispatches symmetrically to the `equals` methods of both arguments, if\n * present.\n *\n * @func notEqual\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.29.0|v2.29.0}\n * @category Relation\n * @sig a -> b -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @see {@link https://ramdajs.com/docs/#equals|equals}\n * @example\n *\n * RA.notEqual(1, 1); //=> false\n * RA.notEqual(1, '1'); //=> true\n * RA.notEqual([1, 2, 3], [1, 2, 3]); //=> false\n *\n * const a = {}; a.v = a;\n * const b = {}; b.v = b;\n * RA.notEqual(a, b); //=> false\n */\n\nvar notEqual = complement(equals);\nexport default notEqual;","import { pipe, intersection, isEmpty, curryN } from 'ramda';\nimport isNotEmpty from './isNotEmpty';\n/**\n * Returns true if two lists have at least one element common to both lists.\n *\n * @func overlaps\n * @memberOf RA\n * @category Relation\n * @since {@link https://char0n.github.io/ramda-adjunct/2.30.0|v2.30.0}\n * @sig [a] -> [a] -> Boolean\n * @param {Array} list1 The first list\n * @param {Array} list2 The second list\n * @return {boolean} True if two lists have at least one element common to both lists\n * @example\n *\n * RA.overlaps(['-v', '--verbose'], ['node', 'script.js', '-v']); //=> true\n * RA.overlaps(['-v', '--verbose'], []); //=> false\n * RA.overlaps([1, 2, 3], [3, 4, 5]); //=> true\n * RA.overlaps([1, 2, 3], [4, 5]); //=> false\n */\n\nvar overlaps = curryN(2, function (list1, list2) {\n if (isEmpty(list1)) {\n return true;\n }\n\n return pipe(intersection, isNotEmpty)(list1, list2);\n});\nexport default overlaps;","import { curry, compose, complement, both } from 'ramda';\n/* eslint-disable max-len */\n\n/**\n * A function which calls the two provided functions and returns the complement of `&&`ing the\n * results.\n * It returns true if the first function is false-y and the complement of the second function\n * otherwise. Note that this is short-circuited, meaning that the second function will not be\n * invoked if the first returns a false-y value. In short it will return true unless both predicates\n * return true.\n *\n * In addition to functions, `RA.notBoth` also accepts any fantasy-land compatible\n * applicative functor.\n *\n * @func notBoth\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.3.0|v2.3.0}\n * @category Logic\n * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean)\n * @param {Function} f A predicate\n * @param {Function} g Another predicate\n * @return {Function} Returns a function that applies its arguments to `f` and `g` and returns the complement of `&&`ing their outputs together.\n * @see {@link http://ramdajs.com/docs/#both|R.both}\n * @example\n *\n * const gt10 = R.gt(R.__, 10)\n * const even = (x) => x % 2 === 0;\n * const f = RA.notBoth(gt10, even);\n *\n * f(12); //=> false\n * f(8); //=> true\n * f(11); //=> true\n * f(9); //=> true\n */\n\n/* eslint-enable max-len */\n\nvar notBoth = curry(compose(complement, both));\nexport default notBoth;","import { and, complement } from 'ramda';\n/**\n * Returns false if both arguments are truthy; true otherwise.\n *\n * @func nand\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.19.0|v2.19.0}\n * @category Logic\n * @sig a -> b -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean} false if both arguments are truesy\n * @example\n *\n * RA.nand(true, true); //=> false\n * RA.nand(false, true); //=> true\n * RA.nand(true, false); //=> true\n * RA.nand(false, false); //=> true\n * RA.nand(1.0, 1.0); //=> false\n * RA.nand(1.0, 0); //=> true\n * RA.nand(0, 1.0); //=> true\n * RA.nand(0, 0); //=> true\n */\n\nvar nand = complement(and); // eslint-disable-line ramda/complement-simplification\n\nexport default nand;","import { curry, compose, complement, either } from 'ramda';\n/* eslint-disable max-len */\n\n/**\n * A function which calls the two provided functions and returns the complement of `||`ing the\n * results.\n * It returns false if the first function is truth-y and the complement of the second function\n * otherwise. Note that this is short-circuited, meaning that the second function will not be\n * invoked if the first returns a truth-y value. In short it will return true if neither predicate\n * returns true.\n *\n * In addition to functions, `RA.neither` also accepts any fantasy-land compatible\n * applicative functor.\n *\n * @func neither\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.3.0|v2.3.0}\n * @category Logic\n * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean)\n * @param {Function} f A predicate\n * @param {Function} g Another predicate\n * @return {Function} Returns a function that applies its arguments to `f` and `g` and returns the complement of `||`ing their outputs together.\n * @see {@link http://ramdajs.com/docs/#either|R.either}, {@link http://ramdajs.com/docs/#or|R.or}\n * @example\n *\n * const gt10 = R.gt(R.__, 10)\n * const even = (x) => x % 2 === 0;\n * const f = RA.neither(gt10, even);\n *\n * f(12); //=> false\n * f(8); //=> false\n * f(11); //=> false\n * f(9); //=> true\n */\n\n/* eslint-enable max-len */\n\nvar neither = curry(compose(complement, either));\nexport default neither;","import { or, complement } from 'ramda';\n/**\n * Returns true if both arguments are falsy; false otherwise.\n *\n * @func nor\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.20.0|v2.20.0}\n * @category Logic\n * @sig a -> b -> a 鈯� b\n * @param {*} a\n * @param {*} b\n * @return {boolean} true if both arguments are falsy\n * @see {@link RA.neither|neither}\n * @example\n *\n * RA.nor(true, true); //=> false\n * RA.nor(false, true); //=> false\n * RA.nor(true, false); //=> false\n * RA.nor(false, false); //=> true\n * RA.nor(1, 1); //=> false\n * RA.nor(1, 0); //=> false\n * RA.nor(0, 1); //=> false\n * RA.nor(0, 0); //=> true\n */\n\nvar nor = complement(or); // eslint-disable-line ramda/complement-simplification\n\nexport default nor;","import { curry, complement, compose, allPass } from 'ramda';\n/**\n * Takes a list of predicates and returns a predicate that returns true for a given list of\n * arguments if one or more of the provided predicates is not satisfied by those arguments. It is\n * the complement of Ramda's allPass.\n *\n * The function returned is a curried function whose arity matches that of the\n * highest-arity predicate.\n *\n * @func notAllPass\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.4.0|v2.4.0}\n * @category Logic\n * @sig [(*... -> Boolean)] -> (*... -> Boolean)\n * @param {Array} predicates An array of predicates to check\n * @return {Function} The combined predicate\n * @see {@link http://ramdajs.com/docs/#allPass|R.allPass}\n * @example\n *\n * const gt10 = R.gt(R.__, 10)\n * const even = (x) => x % 2 === 0;\n * const f = RA.notAllPass([gt10, even]);\n *\n * f(12); //=> false\n * f(8); //=> true\n * f(11); //=> true\n * f(9); //=> true\n */\n\nvar notAllPass = curry(compose(complement, allPass));\nexport default notAllPass;","import { complement, compose, anyPass, curryN } from 'ramda';\n/**\n * Takes a list of predicates and returns a predicate that returns true for a given list of\n * arguments if none of the provided predicates are satisfied by those arguments. It is the\n * complement of Ramda's anyPass.\n *\n * The function returned is a curried function whose arity matches that of the\n * highest-arity predicate.\n *\n * @func nonePass\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.5.0|v2.5.0}\n * @category Logic\n * @sig [(*... -> Boolean)] -> (*... -> Boolean)\n * @param {Array} predicates An array of predicates to check\n * @return {Function} The combined predicate\n * @see {@link http://ramdajs.com/docs/#anyPass|R.anyPass}\n * @example\n *\n * const gt10 = R.gt(R.__, 10)\n * const even = (x) => x % 2 === 0;\n * const f = RA.nonePass([gt10, even]);\n *\n * f(12); //=> false\n * f(8); //=> false\n * f(11); //=> false\n * f(9); //=> true\n */\n\nvar nonePass = curryN(1, compose(complement, anyPass));\nexport default nonePass;","import { useWith, curry, compose } from 'ramda';\nimport list from './list';\nimport isTruthy from './isTruthy';\n/**\n * Takes a combining predicate and a list of functions and returns a function which will map the\n * arguments it receives to the list of functions and returns the result of passing the values\n * returned from each function to the combining predicate. A combining predicate is a function that\n * combines a list of Boolean values into a single Boolean value, such as `R.any` or `R.all`. It\n * will test each value using `RA.isTruthy`, meaning the functions don't necessarily have to be\n * predicates.\n *\n * The function returned is curried to the number of functions supplied, and if called with more\n * arguments than functions, any remaining arguments are passed in to the combining predicate\n * untouched.\n *\n * @func argsPass\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.7.0|v2.7.0}\n * @category Logic\n * @sig ((* -> Boolean) -> [*] -> Boolean) -> [(* -> Boolean), ...] -> (*...) -> Boolean\n * @param {Function} combiningPredicate The predicate used to combine the values returned from the\n * list of functions\n * @param {Array} functions List of functions\n * @return {boolean} Returns the combined result of mapping arguments to functions\n * @example\n *\n * RA.argsPass(R.all, [RA.isArray, RA.isBoolean, RA.isString])([], false, 'abc') //=> true\n * RA.argsPass(R.all, [RA.isArray, RA.isBoolean, RA.isString])([], false, 1) //=> false\n * RA.argsPass(R.any, [RA.isArray, RA.isBoolean, RA.isString])({}, 1, 'abc') //=> true\n * RA.argsPass(R.any, [RA.isArray, RA.isBoolean, RA.isString])({}, 1, false) //=> false\n * RA.argsPass(R.none, [RA.isArray, RA.isBoolean, RA.isString])({}, 1, false) //=> true\n * RA.argsPass(R.none, [RA.isArray, RA.isBoolean, RA.isString])({}, 1, 'abc') //=> false\n */\n\nvar argsPass = curry(function (combiningPredicate, predicates) {\n return useWith(compose(combiningPredicate(isTruthy), list), predicates);\n});\nexport default argsPass;","import { nAry } from 'ramda';\n/**\n * Accepts a function with any arity and returns a function with arity of zero.\n * The returned function ignores any arguments supplied to it.\n *\n * @func dropArgs\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.10.0|v2.10.0}\n * @category Logic\n * @sig (...a -> b)-> () -> b\n * @param {Function} fn The function with any arity\n * @return {Function} Returns function with arity of zero\n * @see {@link http://ramdajs.com/docs/#nAry|R.nAry}\n * @example\n *\n * const fn = (a = 1, b = 2) => a + b;\n *\n * RA.dropArgs(fn)('ignore1', 'ignore2'); //=> 3\n */\n\nvar dropArgs = nAry(0);\nexport default dropArgs;","import { bind, curryN } from 'ramda';\n/**\n * Returns the value of a number rounded to the nearest integer.\n *\n * @func round\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.15.0|v2.15.0}\n * @category Math\n * @sig Number -> Number\n * @param {number} number The number to round\n * @return {number} The value of the given number rounded to the nearest integer\n * @example\n *\n * RA.round(0.9); //=> 1\n * RA.round(5.95); //=> 6\n * RA.round(5.5); //=> 6\n * RA.round(5.05); //=> 5\n * RA.round(-5.05); //=> -5\n * RA.round(-5.5); //=> -5\n * RA.round(-5.95); //=> -6\n */\n\nvar round = curryN(1, bind(Math.round, Math));\nexport default round;","import { bind, curryN } from 'ramda';\n/**\n * Returns the smallest integer greater than or equal to a given number.\n *\n * Note: ceil(null) returns integer 0 and does not give a NaN error.\n *\n * @func ceil\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.15.0|v2.15.0}\n * @category Math\n * @sig Number -> Number\n * @param {number} number The number to ceil\n * @return {number} The smallest integer greater than or equal to the given number\n * @example\n *\n * RA.ceil(.95); //=> 1\n * RA.ceil(4); //=> 4\n * RA.ceil(7.004); //=> 8\n * RA.ceil(-0.95); //=> -0\n * RA.ceil(-4); //=> -4\n * RA.ceil(-7.004); //=> -7\n * RA.ceil(null); //=> 0\n */\n\nvar ceil = curryN(1, bind(Math.ceil, Math));\nexport default ceil;","import { divide, flip } from 'ramda';\n/**\n * Divides two numbers, where the second number is divided by the first number.\n *\n * @func divideNum\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category Math\n * @sig Number -> Number -> Number\n * @param {number} divisor the number to divide by\n * @param {number} dividend the number to divide\n * @return {number} A number representing the quotient of dividing the dividend by the divisor\n * @example\n *\n * RA.divideNum(2, 1); //=> 0.5\n */\n\nvar divideNum = flip(divide);\nexport default divideNum;","import isFinite from '../../isFinite';\n\nvar truncPonyfill = function truncPonyfill(v) {\n var numV = Number(v);\n\n if (!isFinite(numV)) {\n return numV;\n } // eslint-disable-next-line no-nested-ternary\n\n\n return numV - numV % 1 || (numV < 0 ? -0 : numV === 0 ? numV : 0);\n};\n\nexport default truncPonyfill;","import { bind, curryN } from 'ramda';\nimport ponyfill from './internal/ponyfills/Math.trunc';\nimport isFunction from './isFunction';\nexport var truncPonyfill = curryN(1, ponyfill);\n/**\n * Returns the integer part of a number by removing any fractional digits.\n *\n * @func trunc\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.15.0|v2.15.0}\n * @category Math\n * @sig Number | String -> Number\n * @param {number|string} number The number to trunc\n * @return {number} The integer part of the given number\n * @example\n *\n * RA.trunc(13.37); //=> 13\n * RA.trunc(42.84); //=> 42\n * RA.trunc(0.123); //=> 0\n * RA.trunc(-0.123); //=> -0\n * RA.trunc('-1.123'); //=> -1\n * RA.trunc(NaN); //=> NaN\n * RA.trunc('foo'); //=> NaN\n */\n\nvar trunc = isFunction(Math.trunc) ? curryN(1, bind(Math.trunc, Math)) : truncPonyfill;\nexport default trunc;","var signPonyfill = function signPonyfill(number) {\n return (number > 0) - (number < 0) || +number;\n};\n\nexport default signPonyfill;","import { bind, curryN } from 'ramda';\nimport isFunction from './isFunction';\nimport ponyfill from './internal/ponyfills/Math.sign';\nexport var signPonyfill = curryN(1, ponyfill);\n/**\n * Returns the sign of a number, indicating whether the number is positive, negative or zero.\n *\n * @func sign\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.15.0|v2.15.0}\n * @category Math\n * @sig Number | String -> Number\n * @param {number} number A number\n * @return {number} A number representing the sign of the given argument. If the argument is a positive number, negative number, positive zero or negative zero, the function will return 1, -1, 0 or -0 respectively. Otherwise, NaN is returned\n * @example\n *\n * RA.sign(3); // 1\n * RA.sign(-3); // -1\n * RA.sign('-3'); // -1\n * RA.sign(0); // 0\n * RA.sign(-0); // -0\n * RA.sign(NaN); // NaN\n * RA.sign('foo'); // NaN\n */\n\nvar sign = isFunction(Math.sign) ? curryN(1, bind(Math.sign, Math)) : signPonyfill;\nexport default sign;","import { flip, subtract } from 'ramda';\n/**\n * Subtracts its first argument from its second argument.\n *\n * @func subtractNum\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category Math\n * @sig Number -> Number -> Number\n * @param {number} subtrahend the number to subtract\n * @param {number} minuend the number to subtract from\n * @return {number} A number representing the difference of subtracting the subtrahend from the minuend\n * @example\n *\n * RA.subtractNum(3, 5); //=> 2\n */\n\nvar subtractNum = flip(subtract);\nexport default subtractNum;","import { curryN } from 'ramda';\n/**\n * Converts double-precision 64-bit binary format IEEE 754 to unsigned 32 bit integer number.\n *\n * @func toUinteger32\n * @aliases toUint32\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.28.0|v2.28.0}\n * @category Math\n * @sig Number -> Number\n * @param {number} val Value to be converted.\n * @return {number}\n * @see {@link RA.toInteger32|toInteger32}, {@link http://speakingjs.com/es5/ch11.html#integers_via_bitwise_operators}\n * @example\n *\n * RA.toUinteger32(1.5); //=> 1\n * RA.toInteger32(2 ** 35); // => 0\n * RA.toInteger32(2 ** 31); // => 2147483648\n * RA.toInteger32(2 ** 30); // => 1073741824\n */\n// eslint-disable-next-line no-bitwise\n\nvar toUinteger32 = curryN(1, function (val) {\n return val >>> 0;\n});\nexport default toUinteger32;","import { both, hasIn } from 'ramda';\nimport isObj from '../isObj';\nimport isSymbol from '../isSymbol';\nimport neither from '../neither';\nvar isCoercible = neither(isSymbol, both(isObj, neither(hasIn('toString'), hasIn('valueOf'))));\nexport default isCoercible;","import { ifElse, always } from 'ramda';\nimport isCoercible from './internal/isCoercible';\n/**\n * Converts value to a number.\n *\n * @func toNumber\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.36.0|v2.36.0}\n * @category Type\n * @param {*} val The value to convert\n * @return {Number}\n * @example\n *\n * RA.toNumber(3.2); //=> 3.2\n * RA.toNumber(Number.MIN_VALUE); //=> 5e-324\n * RA.toNumber(Infinity); //=> Infinity\n * RA.toNumber('3.2'); //=> 3.2\n * RA.toNumber(Symbol('3.2')); //=> NaN\n */\n\nvar toNumber = ifElse(isCoercible, Number, always(NaN));\nexport default toNumber;","import { when, replace } from 'ramda';\nimport isString from './isString';\n/**\n * Escapes the RegExp special characters.\n *\n * @func escapeRegExp\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.21.0|v2.21.0}\n * @category String\n * @sig String -> String\n * @param {string} val the value to escape\n * @return {string}\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping|MDN Regular Expressions Escaping}\n * @example\n *\n * RA.escapeRegExp('[ramda-adjunct](https://github.com/char0n/ramda-adjunct)'); //=> '\\[ramda\\-adjunct\\]\\(https://github\\.com/char0n/ramda\\-adjunct\\)'\n */\n\nvar escapeRegExp = when(isString, replace(/[.*+?^${}()|[\\]\\\\-]/g, '\\\\$&'));\nexport default escapeRegExp;","import { replace } from 'ramda';\nimport isRegExp from '../../isRegExp';\nimport escapeRegExp from '../../escapeRegExp';\n\nvar checkArguments = function checkArguments(searchValue, replaceValue, str) {\n if (str == null || searchValue == null || replaceValue == null) {\n throw TypeError('Input values must not be `null` or `undefined`');\n }\n};\n\nvar checkValue = function checkValue(value, valueName) {\n if (typeof value !== 'string') {\n if (!(value instanceof String)) {\n throw TypeError(\"`\".concat(valueName, \"` must be a string\"));\n }\n }\n};\n\nvar checkSearchValue = function checkSearchValue(searchValue) {\n if (typeof searchValue !== 'string' && !(searchValue instanceof String) && !(searchValue instanceof RegExp)) {\n throw TypeError('`searchValue` must be a string or an regexp');\n }\n};\n\nvar replaceAll = function replaceAll(searchValue, replaceValue, str) {\n checkArguments(searchValue, replaceValue, str);\n checkValue(str, 'str');\n checkValue(replaceValue, 'replaceValue');\n checkSearchValue(searchValue);\n var regexp = new RegExp(isRegExp(searchValue) ? searchValue : escapeRegExp(searchValue), 'g');\n return replace(regexp, replaceValue, str);\n};\n\nexport default replaceAll;","import { curryN, invoker } from 'ramda';\nimport isFunction from './isFunction';\nimport ponyfill from './internal/ponyfills/String.replaceAll';\nexport var replaceAllPonyfill = curryN(3, ponyfill);\nexport var replaceAllInvoker = invoker(2, 'replaceAll');\n/**\n * Replaces all substring matches in a string with a replacement.\n *\n * @func replaceAll\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.17.0|v2.17.0}\n * @category String\n * @sig String -> String -> String -> String\n * @param {string} searchValue The substring or a global RegExp to match\n * @param {string} replaceValue The string to replace the matches with\n * @param {string} str The String to do the search and replacement in\n * @return {string} A new string containing all the `searchValue` replaced with the `replaceValue`\n * @throws {TypeError} When invalid arguments provided\n * @see {@link http://ramdajs.com/docs/#replace|R.replace}, {@link https://github.com/tc39/proposal-string-replaceall|TC39 proposal}\n * @example\n *\n * RA.replaceAll('ac', 'ef', 'ac ab ac ab'); //=> 'ef ab ef ab'\n * RA.replaceAll('', '_', 'xxx'); //=> '_x_x_x_'\n * RA.replaceAll(/x/g, 'v', 'xxx'); //=> 'vvv'\n * RA.replaceAll(/x/, 'v', 'xxx'); //=> TypeError\n */\n\nvar replaceAll = isFunction(String.prototype.replaceAll) ? replaceAllInvoker : replaceAllPonyfill;\nexport default replaceAll;","import { invoker } from 'ramda';\nimport ponyfill from './internal/ponyfills/String.trimStart';\nimport isFunction from './isFunction';\nexport var trimStartPonyfill = ponyfill;\nexport var trimStartInvoker = invoker(0, 'trimStart');\n/**\n * Removes whitespace from the beginning of a string.\n *\n * @func trimStart\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category String\n * @sig String -> String\n * @param {string} value String value to have the whitespace removed from the beginning\n * @return {string} A new string representing the calling string stripped of whitespace from its beginning (left end).\n * @example\n *\n * RA.trimStart(' abc'); //=> 'abc'\n */\n\nvar trimStart = isFunction(String.prototype.trimStart) ? trimStartInvoker : trimStartPonyfill;\nexport default trimStart;","import { replace } from 'ramda';\nvar trimStart = replace(/^[\\s\\uFEFF\\xA0]+/, '');\nexport default trimStart;","import { invoker } from 'ramda';\nimport ponyfill from './internal/ponyfills/String.trimEnd';\nimport isFunction from './isFunction';\nexport var trimEndPonyfill = ponyfill;\nexport var trimEndInvoker = invoker(0, 'trimEnd');\n/**\n * Removes whitespace from the end of a string.\n *\n * @func trimEnd\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category String\n * @sig String -> String\n * @param {string} value String value to have the whitespace removed from the end\n * @return {string} A new string representing the calling string stripped of whitespace from its end (right end).\n * @see {@link RA.trimEnd|trimEnd}\n * @example\n *\n * RA.trimEnd('abc '); //=> 'abc'\n */\n\nvar trimEnd = isFunction(String.prototype.trimEnd) ? trimEndInvoker : trimEndPonyfill;\nexport default trimEnd;","import { replace } from 'ramda';\nvar trimStart = replace(/[\\s\\uFEFF\\xA0]+$/, '');\nexport default trimStart;","import { curry, dropLastWhile, join, pipe, split } from 'ramda';\nimport contained from './contained';\n/**\n * Removes specified characters from the end of a string.\n *\n * @func trimCharsEnd\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.25.0|v2.25.0}\n * @category String\n * @sig String -> String\n * @param {string} chars The characters to trim\n * @param {string} value The string to trim\n * @return {string} Returns the trimmed string.\n * @example\n *\n * RA.trimCharsEnd('_-', '-_-abc-_-'); //=> '-_-abc'\n */\n\nvar trimCharsEnd = curry(function (chars, value) {\n return pipe(split(''), dropLastWhile(contained(chars)), join(''))(value);\n});\nexport default trimCharsEnd;","import { curry, dropWhile, join, pipe, split } from 'ramda';\nimport contained from './contained';\n/**\n * Removes specified characters from the beginning of a string.\n *\n * @func trimCharsStart\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.24.0|v2.24.0}\n * @category String\n * @sig String -> String\n * @param {string} chars The characters to trim\n * @param {string} value The string to trim\n * @return {string} Returns the trimmed string.\n * @example\n *\n * RA.trimCharsStart('_-', '-_-abc-_-'); //=> 'abc-_-'\n */\n\nvar trimCharsStart = curry(function (chars, value) {\n return pipe(split(''), dropWhile(contained(chars)), join(''))(value);\n});\nexport default trimCharsStart;","import isFunction from '../../isFunction';\nimport isNotUndefined from '../../isNotUndefined';\nimport repeat from './String.repeat';\n\nvar padStartPonyfill = function padStartPonyfill(padString, targetLength, value) {\n // eslint-disable-next-line no-bitwise\n var finalLength = targetLength >> 0; // truncate if number, or convert non-number to 0;\n\n var finalPadString = String(isNotUndefined(padString) ? padString : ' '); // return the original string, if targeted length is less than original strings length\n\n if (value.length >= finalLength) {\n return String(value);\n }\n\n finalLength -= value.length;\n\n if (finalLength > finalPadString.length) {\n var lenghtToPad = finalLength / finalPadString.length; // append to original to ensure we are longer than needed\n\n finalPadString += isFunction(String.prototype.repeat) ? finalPadString.repeat(lenghtToPad) : repeat(finalPadString, lenghtToPad);\n }\n\n return finalPadString.slice(0, finalLength) + String(value);\n};\n\nexport default padStartPonyfill;","import { flip, invoker, curry } from 'ramda';\nimport isFunction from './isFunction';\nimport ponyfill from './internal/ponyfills/String.padStart';\nexport var padStartInvoker = flip(invoker(2, 'padStart'));\nexport var padStartPonyfill = curry(ponyfill);\n/**\n * The function pads the current string with a given string\n * (repeated, if needed) so that the resulting string reaches a given length.\n * The padding is applied from the start of the current string.\n *\n * @func padCharsStart\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category String\n * @sig String -> Number -> String -> String\n * @param {string} padString The string to pad the current string with\n * @param {number} targetLength The length of the resulting string once the current string has been padded\n * @param {string} value String value to be padded\n * @return {string} A new string of the specified length with the pad string on the start of current string\n * @see {@link RA.padStart|padStart}, {@link RA.padEnd|padEnd}, {@link RA.padCharsEnd|padCharsEnd}\n * @example\n *\n * RA.padCharsStart('-', 3, 'a'); // => '--a'\n * RA.padCharsStart('foo', 10, 'abc'); // => 'foofoofabc'\n * RA.padCharsStart('123456', 6, 'abc'); // => '123abc'\n */\n\nvar padCharsStart = isFunction(String.prototype.padStart) ? padStartInvoker : padStartPonyfill;\nexport default padCharsStart;","import isFunction from '../../isFunction';\nimport isNotUndefined from '../../isNotUndefined';\nimport repeat from './String.repeat';\n\nvar padEndPonyfill = function padEndPonyfill(padString, targetLength, value) {\n // eslint-disable-next-line no-bitwise\n var finalLength = targetLength >> 0;\n var finalPadString = String(isNotUndefined(padString) ? padString : ' ');\n\n if (value.length > finalLength) {\n return String(value);\n }\n\n finalLength -= value.length;\n\n if (finalLength > finalPadString.length) {\n var remainingLength = finalLength / finalPadString.length;\n finalPadString += isFunction(String.prototype.repeat) ? finalPadString.repeat(remainingLength) : repeat(finalPadString, remainingLength);\n }\n\n return String(value) + finalPadString.slice(0, finalLength);\n};\n\nexport default padEndPonyfill;","import { curry, invoker, flip } from 'ramda';\nimport ponyfill from './internal/ponyfills/String.padEnd';\nimport isFunction from './isFunction';\nexport var padEndPonyfill = curry(ponyfill);\nexport var padEndInvoker = flip(invoker(2, 'padEnd'));\n/**\n * The function pads the current string with a given string\n * (repeated, if needed) so that the resulting string reaches a given length.\n * The padding is applied from the end of the current string.\n *\n * @func padCharsEnd\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category String\n * @sig String -> Number -> String -> String\n * @param {string} padString The string to pad the current string with\n * @param {number} targetLength The length of the resulting string once\n * the current string has been padded\n * @param {string} value String value to be padded\n * @return {string} A new string of the specified length with the pad string\n * applied at the end of the current string\n * @see {@link RA.padEnd|padEnd}, {@link RA.padCharsStart|padCharsStart}, {@link RA.padStart|padStart}\n * @example\n *\n * RA.padCharsEnd('-', 3, 'a'); // => 'a--'\n * RA.padCharsEnd('foo', 10, 'abc'); // => 'abcfoofoof'\n * RA.padCharsEnd('123456', 6, 'abc'); // => 'abc123'\n */\n\nvar padCharsEnd = isFunction(String.prototype.padEnd) ? padEndInvoker : padEndPonyfill;\nexport default padCharsEnd;","import padCharsEnd from './padCharsEnd';\n/**\n * The function pads the current string with an empty string\n * so that the resulting string reaches a given length.\n * The padding is applied from the end of the current string.\n *\n * @func padEnd\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}\n * @category String\n * @sig Number -> String -> String\n * @param {number} targetLength The length of the resulting string once\n * the current string has been padded\n * @param {string} value String value to be padded\n * @return {string} A new string of the specified length with the pad string\n * applied at the end of the current string\n * @see {@link RA.padCharsEnd|padCharsEnd}, {@link RA.padCharsStart|padCharsStart}, {@link RA.padStart|padStart}\n * @example\n *\n * RA.padEnd(3, 'a'); // => 'a '\n */\n\nvar padEnd = padCharsEnd(' ');\nexport default padEnd;","import padCharsStart from './padCharsStart';\n/**\n * Pads string on the left side if it's shorter than length.\n *\n * @func padStart\n * @memberOf RA\n * @since {@link https://char0n.github.io/ramda-adjunct/2.25.0|v2.25.0}\n * @category String\n * @sig Number -> String -> String\n * @param {number} targetLength The length of the resulting string once\n * the current string has been padded\n * @param {string} value String value to be padded\n * @return {string} A new string of the specified length with the empty string\n * applied to the beginning of the current string\n * @see {@link RA.padCharsEnd|padCharsEnd}, {@link RA.padCharsStart|padCharsStart}, {@link RA.padEnd|padEnd}\n * @example\n *\n * RA.padStart(3, 'a'); // => ' a'\n */\n\nvar padStart = padCharsStart(' ');\nexport default padStart;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nrequire(\"core-js/modules/es.array.is-array.js\");\n\nrequire(\"core-js/modules/es.symbol.js\");\n\nrequire(\"core-js/modules/es.symbol.description.js\");\n\nrequire(\"core-js/modules/es.symbol.iterator.js\");\n\nrequire(\"core-js/modules/es.array.iterator.js\");\n\nrequire(\"core-js/modules/es.string.iterator.js\");\n\nrequire(\"core-js/modules/web.dom-collections.iterator.js\");\n\nrequire(\"core-js/modules/es.array.from.js\");\n\nrequire(\"core-js/modules/es.regexp.exec.js\");\n\nrequire(\"core-js/modules/es.object.define-property.js\");\n\nrequire(\"core-js/modules/es.object.keys.js\");\n\nrequire(\"core-js/modules/es.object.get-own-property-descriptor.js\");\n\nrequire(\"core-js/modules/es.array.for-each.js\");\n\nrequire(\"core-js/modules/web.dom-collections.for-each.js\");\n\nrequire(\"core-js/modules/es.object.get-own-property-descriptors.js\");\n\nrequire(\"core-js/modules/es.object.define-properties.js\");\n\nrequire(\"core-js/modules/es.weak-map.js\");\n\nrequire(\"core-js/modules/esnext.weak-map.delete-all.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nrequire(\"core-js/modules/es.function.name.js\");\n\nrequire(\"core-js/modules/es.array.concat.js\");\n\nrequire(\"core-js/modules/es.array.map.js\");\n\nrequire(\"core-js/modules/es.array.filter.js\");\n\nrequire(\"core-js/modules/es.object.to-string.js\");\n\nrequire(\"core-js/modules/es.string.trim-end.js\");\n\nrequire(\"core-js/modules/es.array.index-of.js\");\n\nrequire(\"core-js/modules/es.array.slice.js\");\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _downshift = require(\"downshift\");\n\nvar _reactBus = require(\"react-bus\");\n\nvar _clCore = require(\"@prospects/cl-core\");\n\nvar _iconCross = _interopRequireDefault(require(\"@prospects/cl-icons/lib/system/function/icon-cross\"));\n\nvar _react2 = require(\"@emotion/react\");\n\nvar _ramda = require(\"ramda\");\n\nvar _CustomDropdown = _interopRequireDefault(require(\"./CustomDropdown\"));\n\nvar _styled = require(\"./styled\");\n\nvar _useDebounced = _interopRequireDefault(require(\"../hooks/useDebounced\"));\n\nvar _FetchData = _interopRequireDefault(require(\"./FetchData\"));\n\nvar _constants = require(\"../constants\");\n\nvar _usePrevious = require(\"../hooks/usePrevious\");\n\nvar _jsxRuntime = require(\"@emotion/react/jsx-runtime\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _EMOTION_STRINGIFIED_CSS_ERROR__() { return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\"; }\n\nvar Header = function Header(_ref4) {\n var label = _ref4.label,\n selected = _ref4.selected,\n handleClearSelected = _ref4.handleClearSelected,\n name = _ref4.name;\n\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === '13') {\n handleClearSelected();\n }\n };\n\n return (0, _jsxRuntime.jsxs)(_clCore.Flex, {\n as: \"span\",\n width: \"100%\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n children: [(0, _jsxRuntime.jsx)(_clCore.Paragraph, {\n as: \"span\",\n textColor: \"slateDark\",\n id: label,\n children: selected || label\n }), selected && (0, _jsxRuntime.jsxs)(\"span\", {\n onClick: handleClearSelected,\n tabIndex: 0,\n onKeyDown: handleKeyDown,\n \"data-testid\": \"remove-selection\",\n role: \"button\",\n css: function css(theme) {\n return \"\\n position: relative;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n width: 30px;\\n height: 30px;\\n border: 0;\\n border-radius: 50%;\\n background-color: transparent;\\n transition: 0.3s ease-in-out;\\n z-index: 10;\\n\\n &:hover,\\n &:focus {\\n background-color: \".concat(theme.colors.pinkRich, \";\\n\\n svg path {\\n fill: \").concat(theme.colors.white, \";\\n }\\n }\\n\\n &:hover {\\n cursor: pointer;\\n }\\n\\n &:focus {\\n outline: 0;\\n }\\n \");\n },\n children: [(0, _jsxRuntime.jsxs)(_styled.SR, {\n children: [\"Remove selected \", name]\n }), (0, _jsxRuntime.jsx)(_iconCross[\"default\"], {\n color: (0, _clCore.useTheme)().colors.pinkBright,\n width: \"10px\"\n })]\n }), (0, _jsxRuntime.jsx)(\"input\", {\n type: \"hidden\",\n name: name,\n value: selected\n })]\n });\n};\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n name: \"lugakg\",\n styles: \"font-weight:normal\"\n} : {\n name: \"yqocda-Typeahead\",\n styles: \"font-weight:normal;label:Typeahead;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0Ryb3Bkb3duVHlwZWFoZWFkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpUzBEIiwiZmlsZSI6Ii4uLy4uL3NyYy9jb21wb25lbnRzL0Ryb3Bkb3duVHlwZWFoZWFkLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCBSZWFjdCwgeyBGQywgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29tYm9ib3ggfSBmcm9tICdkb3duc2hpZnQnO1xuaW1wb3J0IHsgUHJvdmlkZXIgYXMgQnVzUHJvdmlkZXIsIHVzZUJ1cyB9IGZyb20gJ3JlYWN0LWJ1cyc7XG5pbXBvcnQgeyBGbGV4LCBQYXJhZ3JhcGgsIEJveCwgdXNlVGhlbWUgfSBmcm9tICdAcHJvc3BlY3RzL2NsLWNvcmUnO1xuaW1wb3J0IHsgQ29sb3VyS2V5cyB9IGZyb20gJ0Bwcm9zcGVjdHMvY2wtY29yZS9saWIvdGhlbWUnO1xuaW1wb3J0IEljb25Dcm9zcyBmcm9tICdAcHJvc3BlY3RzL2NsLWljb25zL2xpYi9zeXN0ZW0vZnVuY3Rpb24vaWNvbi1jcm9zcyc7XG5pbXBvcnQgeyBjc3MsIFRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgcHJvcCB9IGZyb20gJ3JhbWRhJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tbmFtZWQtYXMtZGVmYXVsdFxuaW1wb3J0IEN1c3RvbURyb3Bkb3duIGZyb20gJy4vQ3VzdG9tRHJvcGRvd24nO1xuaW1wb3J0IHsgU1IgfSBmcm9tICcuL3N0eWxlZCc7XG5pbXBvcnQgdXNlRGVib3VuY2UgZnJvbSAnLi4vaG9va3MvdXNlRGVib3VuY2VkJztcbmltcG9ydCBGZXRjaERhdGEgZnJvbSAnLi9GZXRjaERhdGEnO1xuaW1wb3J0IHsgRFJPUERPV05fVFlQRUFIRUFEX1NFTEVDVElPTl9FVkVOVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VQcmV2aW91cyB9IGZyb20gJy4uL2hvb2tzL3VzZVByZXZpb3VzJztcblxuaW50ZXJmYWNlIEhlYWRlclByb3BzIHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHNlbGVjdGVkOiBzdHJpbmc7XG4gICAgaGFuZGxlQ2xlYXJTZWxlY3RlZDogKCkgPT4gdm9pZDtcbiAgICBuYW1lOiBzdHJpbmc7XG59XG5cbmNvbnN0IEhlYWRlcjogRkM8SGVhZGVyUHJvcHM+ID0gKHtcbiAgICBsYWJlbCxcbiAgICBzZWxlY3RlZCxcbiAgICBoYW5kbGVDbGVhclNlbGVjdGVkLFxuICAgIG5hbWUsXG59KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnMTMnKSB7XG4gICAgICAgICAgICBoYW5kbGVDbGVhclNlbGVjdGVkKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEZsZXhcbiAgICAgICAgICAgIGFzPVwic3BhblwiXG4gICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8UGFyYWdyYXBoIGFzPVwic3BhblwiIHRleHRDb2xvcj1cInNsYXRlRGFya1wiIGlkPXtsYWJlbH0+XG4gICAgICAgICAgICAgICAge3NlbGVjdGVkIHx8IGxhYmVsfVxuICAgICAgICAgICAgPC9QYXJhZ3JhcGg+XG4gICAgICAgICAgICB7c2VsZWN0ZWQgJiYgKFxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsZWFyU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicmVtb3ZlLXNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjc3M9eyh0aGVtZTogVGhlbWUpOiBzdHJpbmcgPT4gYFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiAwLjNzIGVhc2UtaW4tb3V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgei1pbmRleDogMTA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLmNvbG9ycy5waW5rUmljaH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmcgcGF0aCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICR7dGhlbWUuY29sb3JzLndoaXRlfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTUj5SZW1vdmUgc2VsZWN0ZWQge25hbWV9PC9TUj5cbiAgICAgICAgICAgICAgICAgICAgPEljb25Dcm9zc1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e3VzZVRoZW1lKCkuY29sb3JzLnBpbmtCcmlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwcHhcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9e25hbWV9IHZhbHVlPXtzZWxlY3RlZH0gLz5cbiAgICAgICAgPC9GbGV4PlxuICAgICk7XG59O1xuXG50eXBlIFJlc3VsdCA9IFtcbiAgICB7XG4gICAgICAgIGlkOiBudW1iZXI7XG4gICAgICAgIHRleHQ6IHN0cmluZztcbiAgICB9XG5dO1xuXG5pbnRlcmZhY2UgVHlwZWFoZWFkUHJvcHMge1xuICAgIHR5cGVhaGVhZERhdGE/OiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcbiAgICBhcGlVcmw6IHN0cmluZztcbiAgICBoYW5kbGVTZWxlY3Rpb24oc2VsZWN0ZWQ6IHsgdG5yOiBudW1iZXI7IHRleHQ6IHN0cmluZyB9KTogdm9pZDtcbiAgICBzZWxlY3RlZDogc3RyaW5nO1xuICAgIGRhdGFUZXN0SWQ6IHN0cmluZztcbiAgICBpbnB1dElkOiBzdHJpbmc7XG59XG5cbmNvbnN0IFR5cGVhaGVhZDogRkM8VHlwZWFoZWFkUHJvcHM+ID0gKHtcbiAgICBhcGlVcmwsXG4gICAgaGFuZGxlU2VsZWN0aW9uLFxuICAgIHNlbGVjdGVkLFxuICAgIGRhdGFUZXN0SWQsXG4gICAgaW5wdXRJZCxcbn0pID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IFtyYXdEYXRhLCBzZXRSYXdEYXRhXSA9IHVzZVN0YXRlPFJlc3VsdD4oKTtcbiAgICBjb25zdCBbaW5wdXRJdGVtcywgc2V0SW5wdXRJdGVtc10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oW10pO1xuICAgIGNvbnN0IHtcbiAgICAgICAgaXNPcGVuLFxuICAgICAgICBzZWxlY3RlZEl0ZW0sXG4gICAgICAgIC8vIGdldExhYmVsUHJvcHMsXG4gICAgICAgIGdldE1lbnVQcm9wcyxcbiAgICAgICAgZ2V0SW5wdXRQcm9wcyxcbiAgICAgICAgZ2V0Q29tYm9ib3hQcm9wcyxcbiAgICAgICAgZ2V0SXRlbVByb3BzLFxuICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICBoaWdobGlnaHRlZEluZGV4LFxuICAgIH0gPSB1c2VDb21ib2JveCh7XG4gICAgICAgIGl0ZW1zOiBpbnB1dEl0ZW1zLFxuICAgICAgICBvbklucHV0VmFsdWVDaGFuZ2U6ICh7IGlucHV0VmFsdWU6IHZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgIGlmICghdmFsdWUgfHwgIXJhd0RhdGE/Lmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgICAgICAvLyBjb25zdCBsb2NhdGlvbnM6IHN0cmluZ1tdID0gcmF3RGF0YS5tYXAocHJvcCgndGV4dCcpKTtcblxuICAgICAgICAgICAgc2V0SW5wdXRJdGVtcyhbXSk7XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIXNlbGVjdGVkKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpbnB1dD8uY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghcmF3RGF0YSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG5hbWVzOiBzdHJpbmdbXSA9IHJhd0RhdGEubWFwKHByb3AoJ3RleHQnKSk7XG5cbiAgICAgICAgc2V0SW5wdXRJdGVtcyhuYW1lcyk7XG4gICAgfSwgW3Jhd0RhdGFdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW0gJiYgcmF3RGF0YSkge1xuICAgICAgICAgICAgaGFuZGxlU2VsZWN0aW9uKHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBzZWxlY3RlZEl0ZW0sXG4gICAgICAgICAgICAgICAgdG5yOiByYXdEYXRhLmZpbHRlcihpdGVtID0+IGl0ZW0udGV4dCA9PT0gc2VsZWN0ZWRJdGVtKVswXS5pZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwgW3NlbGVjdGVkSXRlbV0pO1xuXG4gICAgY29uc3QgZGVib3VuY2VkSW5wdXRWYWx1ZSA9IHVzZURlYm91bmNlKGlucHV0VmFsdWUsIDMwMCk7XG4gICAgY29uc3QgaW5wdXRWYWx1ZUxvd2VyID0gaW5wdXRWYWx1ZS50b0xvd2VyQ2FzZSgpLnRyaW1SaWdodCgpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEJveCBwYWRkaW5nPVwiNHB4XCI+XG4gICAgICAgICAgICA8ZGl2IHsuLi5nZXRDb21ib2JveFByb3BzKCl9PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0SW5wdXRQcm9wcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWY6IGlucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlucHV0SWQsXG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICAgICAgICAgICAgICAgICAgY3NzPXsodGhlbWU6IFRoZW1lKTogc3RyaW5nID0+IGBcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogNXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA1cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHt0aGVtZS5jb2xvcnMudmVyeUxpZ2h0R3JleX07XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJHt0aGVtZS5mb250cy5zb3VyY2VTYW5zUHJvfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZS1jb2xvcjogJHt0aGVtZS5jb2xvcnMucGlua0JyaWdodH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge2lucHV0VmFsdWU/Lmxlbmd0aCA8IDIgJiYgKFxuICAgICAgICAgICAgICAgIDxGbGV4XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjM2cHhcIlxuICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1g9XCI1cHhcIlxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9XCJicmlkYWxIZWFsdGhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFBhcmFncmFwaCB0ZXh0Q29sb3I9XCJydXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2UgZW50ZXIgMiBvciBtb3JlIGNoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgPC9QYXJhZ3JhcGg+XG4gICAgICAgICAgICAgICAgPC9GbGV4PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtpc09wZW4gJiYgIWlucHV0SXRlbXMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIDxGbGV4XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjM2cHhcIlxuICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1g9XCI1cHhcIlxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9XCJzbXVkZ2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFBhcmFncmFwaD5TZWFyY2hpbmc8L1BhcmFncmFwaD5cbiAgICAgICAgICAgICAgICA8L0ZsZXg+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICAgIHsuLi5nZXRNZW51UHJvcHMoKX1cbiAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMTgwcHg7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2lzT3BlbiAmJiBpbnB1dFZhbHVlPy5sZW5ndGggPj0gMiAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxGZXRjaERhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5PXtkZWJvdW5jZWRJbnB1dFZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgYXBpVXJsPXthcGlVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXREYXRhPXtzZXRSYXdEYXRhfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aW5wdXRJdGVtcy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGlucHV0SXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0SXRlbVByb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17KHRoZW1lOiBUaGVtZSk6IHN0cmluZyA9PiBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNnB4IDVweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZEluZGV4ID09PSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGVtZS5jb2xvcnMucGlua0JyaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndHJhbnNwYXJlbnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWUuY29sb3JzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleCA9PT0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnd2hpdGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3NsYXRlTGlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9YCBhcyBDb2xvdXJLZXlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZS5mb250cy5zb3VyY2VTYW5zUHJvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpdGVtfSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2l0ZW0udG9Mb3dlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbnB1dFZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZihpbnB1dFZhbHVlTG93ZXIpID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbS5zbGljZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZihpbnB1dFZhbHVlTG93ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lucHV0VmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmRleE9mKGlucHV0VmFsdWVMb3dlcikgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY291cnNlLXN1YmplY3QtaXRlbS1saXN0LWhpZ2hsaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5zdWJzdHIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRWYWx1ZUxvd2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0VmFsdWVMb3dlci5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW5wdXRWYWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluZGV4T2YoaW5wdXRWYWx1ZUxvd2VyKSA+IC0xICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnN1YnN0cihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmRleE9mKGlucHV0VmFsdWVMb3dlcikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFZhbHVlTG93ZXIubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9GZXRjaERhdGE+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvQm94PlxuICAgICk7XG59O1xuXG5jb25zdCBiYXNlRW5kcG9pbnQgPSAnaHR0cDovLzE5Mi4xNjguOC44OjYwMDQvbG9jYXRpb25zP3E9JztcblxuZXhwb3J0IGludGVyZmFjZSBEcm9wZG93blR5cGVhaGVhZFByb3BzIHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHByZVNlbGVjdGVkPzogc3RyaW5nO1xuICAgIGhhbmRsZVNlbGVjdGVkPzogKFxuICAgICAgICBzZWxlY3RlZDogeyB0bnI6IG51bWJlcjsgdGV4dDogc3RyaW5nIH0gfCB1bmRlZmluZWRcbiAgICApID0+IHZvaWQ7XG4gICAgYXBpVXJsPzogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkYXRhVGVzdElkPzogc3RyaW5nO1xuICAgIHR5cGVhaGVhZFRlc3RJZD86IHN0cmluZztcbiAgICBmb3JtTGFiZWw/OiBzdHJpbmc7XG59XG5cbmNvbnN0IERyb3Bkb3duVHlwZWFoZWFkOiBGQzxEcm9wZG93blR5cGVhaGVhZFByb3BzPiA9ICh7XG4gICAgbGFiZWwsXG4gICAgYXBpVXJsID0gYmFzZUVuZHBvaW50LFxuICAgIG5hbWUsXG4gICAgaGFuZGxlU2VsZWN0ZWQsXG4gICAgcHJlU2VsZWN0ZWQgPSAnJyxcbiAgICBkYXRhVGVzdElkID0gJ2Ryb3Bkb3duVHlwZWFoZWFkJyxcbiAgICB0eXBlYWhlYWRUZXN0SWQgPSAndHlwZWFoZWFkSW5wdXQnLFxuICAgIGZvcm1MYWJlbCxcbn0pID0+IHtcbiAgICBjb25zdCBbc2VsZWN0ZWQsIHNldFNlbGVjdGVkXSA9IHVzZVN0YXRlPHN0cmluZz4ocHJlU2VsZWN0ZWQpO1xuICAgIGNvbnN0IFtzZWxlY3RlZFRuciwgc2V0U2VsZWN0ZWRUbnJdID0gdXNlU3RhdGU8bnVtYmVyPigpO1xuICAgIGNvbnN0IGJ1cyA9IHVzZUJ1cygpO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdGlvbiA9IChzZWxlY3Rpb246IHtcbiAgICAgICAgdG5yOiBudW1iZXI7XG4gICAgICAgIHRleHQ6IHN0cmluZztcbiAgICB9KTogdm9pZCA9PiB7XG4gICAgICAgIHNldFNlbGVjdGVkKHNlbGVjdGlvbi50ZXh0KTtcbiAgICAgICAgc2V0U2VsZWN0ZWRUbnIoc2VsZWN0aW9uLnRucik7XG4gICAgfTtcbiAgICBjb25zdCBoYW5kbGVDbGVhclNlbGVjdGVkID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBzZXRTZWxlY3RlZCgnJyk7XG4gICAgICAgIGlmIChoYW5kbGVTZWxlY3RlZCkge1xuICAgICAgICAgICAgaGFuZGxlU2VsZWN0ZWQodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgcHJldlByZXNlbGVjdGVkID0gdXNlUHJldmlvdXMocHJlU2VsZWN0ZWQpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHByZVNlbGVjdGVkICE9PSBwcmV2UHJlc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkKHByZVNlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcmVTZWxlY3RlZCwgcHJldlByZXNlbGVjdGVkXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWQgJiYgc2VsZWN0ZWRUbnIpIHtcbiAgICAgICAgICAgIGJ1cy5lbWl0KERST1BET1dOX1RZUEVBSEVBRF9TRUxFQ1RJT05fRVZFTlQpO1xuXG4gICAgICAgICAgICBpZiAoaGFuZGxlU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RlZCh7IHRleHQ6IHNlbGVjdGVkLCB0bnI6IHNlbGVjdGVkVG5yIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW3NlbGVjdGVkLCBzZWxlY3RlZFRucl0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIGB9XG4gICAgICAgID5cbiAgICAgICAgICAgIHtmb3JtTGFiZWwgJiYgKFxuICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBodG1sRm9yPXtuYW1lfVxuICAgICAgICAgICAgICAgICAgICBjc3M9eyh0aGVtZTogVGhlbWUpOiBzdHJpbmcgPT4gYFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAke3RoZW1lLmNvbG9ycy5zbGF0ZURhcmt9O1xuICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJHt0aGVtZS5mb250cy5zb3VyY2VTYW5zUHJvfTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7Zm9ybUxhYmVsfVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPEN1c3RvbURyb3Bkb3duXG4gICAgICAgICAgICAgICAgZGF0YVRlc3RJZD17ZGF0YVRlc3RJZH1cbiAgICAgICAgICAgICAgICBIZWFkZXJDb21wb25lbnQ9e1xuICAgICAgICAgICAgICAgICAgICA8SGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGVhclNlbGVjdGVkPXtoYW5kbGVDbGVhclNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgRHJvcGRvd25Db21wb25lbnQ9e1xuICAgICAgICAgICAgICAgICAgICA8VHlwZWFoZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICBhcGlVcmw9e2FwaVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGlvbj17aGFuZGxlU2VsZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVRlc3RJZD17dHlwZWFoZWFkVGVzdElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRJZD17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufTtcblxuY29uc3QgRHJvcHdEb3duVHlwZWFoZWFkQ29ubmVjdGVkOiBGQzxEcm9wZG93blR5cGVhaGVhZFByb3BzPiA9IHByb3BzID0+IChcbiAgICA8QnVzUHJvdmlkZXI+XG4gICAgICAgIDxEcm9wZG93blR5cGVhaGVhZCB7Li4ucHJvcHN9IC8+XG4gICAgPC9CdXNQcm92aWRlcj5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IERyb3B3RG93blR5cGVhaGVhZENvbm5lY3RlZDtcbiJdfQ== */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\n\nvar _ref3 = process.env.NODE_ENV === \"production\" ? {\n name: \"1c8oagx\",\n styles: \"max-height:180px;overflow:auto\"\n} : {\n name: \"1qtd8so-Typeahead\",\n styles: \"max-height:180px;overflow:auto;label:Typeahead;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0Ryb3Bkb3duVHlwZWFoZWFkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnT3dCIiwiZmlsZSI6Ii4uLy4uL3NyYy9jb21wb25lbnRzL0Ryb3Bkb3duVHlwZWFoZWFkLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCBSZWFjdCwgeyBGQywgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29tYm9ib3ggfSBmcm9tICdkb3duc2hpZnQnO1xuaW1wb3J0IHsgUHJvdmlkZXIgYXMgQnVzUHJvdmlkZXIsIHVzZUJ1cyB9IGZyb20gJ3JlYWN0LWJ1cyc7XG5pbXBvcnQgeyBGbGV4LCBQYXJhZ3JhcGgsIEJveCwgdXNlVGhlbWUgfSBmcm9tICdAcHJvc3BlY3RzL2NsLWNvcmUnO1xuaW1wb3J0IHsgQ29sb3VyS2V5cyB9IGZyb20gJ0Bwcm9zcGVjdHMvY2wtY29yZS9saWIvdGhlbWUnO1xuaW1wb3J0IEljb25Dcm9zcyBmcm9tICdAcHJvc3BlY3RzL2NsLWljb25zL2xpYi9zeXN0ZW0vZnVuY3Rpb24vaWNvbi1jcm9zcyc7XG5pbXBvcnQgeyBjc3MsIFRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgcHJvcCB9IGZyb20gJ3JhbWRhJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tbmFtZWQtYXMtZGVmYXVsdFxuaW1wb3J0IEN1c3RvbURyb3Bkb3duIGZyb20gJy4vQ3VzdG9tRHJvcGRvd24nO1xuaW1wb3J0IHsgU1IgfSBmcm9tICcuL3N0eWxlZCc7XG5pbXBvcnQgdXNlRGVib3VuY2UgZnJvbSAnLi4vaG9va3MvdXNlRGVib3VuY2VkJztcbmltcG9ydCBGZXRjaERhdGEgZnJvbSAnLi9GZXRjaERhdGEnO1xuaW1wb3J0IHsgRFJPUERPV05fVFlQRUFIRUFEX1NFTEVDVElPTl9FVkVOVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VQcmV2aW91cyB9IGZyb20gJy4uL2hvb2tzL3VzZVByZXZpb3VzJztcblxuaW50ZXJmYWNlIEhlYWRlclByb3BzIHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHNlbGVjdGVkOiBzdHJpbmc7XG4gICAgaGFuZGxlQ2xlYXJTZWxlY3RlZDogKCkgPT4gdm9pZDtcbiAgICBuYW1lOiBzdHJpbmc7XG59XG5cbmNvbnN0IEhlYWRlcjogRkM8SGVhZGVyUHJvcHM+ID0gKHtcbiAgICBsYWJlbCxcbiAgICBzZWxlY3RlZCxcbiAgICBoYW5kbGVDbGVhclNlbGVjdGVkLFxuICAgIG5hbWUsXG59KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnMTMnKSB7XG4gICAgICAgICAgICBoYW5kbGVDbGVhclNlbGVjdGVkKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEZsZXhcbiAgICAgICAgICAgIGFzPVwic3BhblwiXG4gICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8UGFyYWdyYXBoIGFzPVwic3BhblwiIHRleHRDb2xvcj1cInNsYXRlRGFya1wiIGlkPXtsYWJlbH0+XG4gICAgICAgICAgICAgICAge3NlbGVjdGVkIHx8IGxhYmVsfVxuICAgICAgICAgICAgPC9QYXJhZ3JhcGg+XG4gICAgICAgICAgICB7c2VsZWN0ZWQgJiYgKFxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsZWFyU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicmVtb3ZlLXNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjc3M9eyh0aGVtZTogVGhlbWUpOiBzdHJpbmcgPT4gYFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiAwLjNzIGVhc2UtaW4tb3V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgei1pbmRleDogMTA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLmNvbG9ycy5waW5rUmljaH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmcgcGF0aCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICR7dGhlbWUuY29sb3JzLndoaXRlfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTUj5SZW1vdmUgc2VsZWN0ZWQge25hbWV9PC9TUj5cbiAgICAgICAgICAgICAgICAgICAgPEljb25Dcm9zc1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e3VzZVRoZW1lKCkuY29sb3JzLnBpbmtCcmlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwcHhcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9e25hbWV9IHZhbHVlPXtzZWxlY3RlZH0gLz5cbiAgICAgICAgPC9GbGV4PlxuICAgICk7XG59O1xuXG50eXBlIFJlc3VsdCA9IFtcbiAgICB7XG4gICAgICAgIGlkOiBudW1iZXI7XG4gICAgICAgIHRleHQ6IHN0cmluZztcbiAgICB9XG5dO1xuXG5pbnRlcmZhY2UgVHlwZWFoZWFkUHJvcHMge1xuICAgIHR5cGVhaGVhZERhdGE/OiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcbiAgICBhcGlVcmw6IHN0cmluZztcbiAgICBoYW5kbGVTZWxlY3Rpb24oc2VsZWN0ZWQ6IHsgdG5yOiBudW1iZXI7IHRleHQ6IHN0cmluZyB9KTogdm9pZDtcbiAgICBzZWxlY3RlZDogc3RyaW5nO1xuICAgIGRhdGFUZXN0SWQ6IHN0cmluZztcbiAgICBpbnB1dElkOiBzdHJpbmc7XG59XG5cbmNvbnN0IFR5cGVhaGVhZDogRkM8VHlwZWFoZWFkUHJvcHM+ID0gKHtcbiAgICBhcGlVcmwsXG4gICAgaGFuZGxlU2VsZWN0aW9uLFxuICAgIHNlbGVjdGVkLFxuICAgIGRhdGFUZXN0SWQsXG4gICAgaW5wdXRJZCxcbn0pID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IFtyYXdEYXRhLCBzZXRSYXdEYXRhXSA9IHVzZVN0YXRlPFJlc3VsdD4oKTtcbiAgICBjb25zdCBbaW5wdXRJdGVtcywgc2V0SW5wdXRJdGVtc10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oW10pO1xuICAgIGNvbnN0IHtcbiAgICAgICAgaXNPcGVuLFxuICAgICAgICBzZWxlY3RlZEl0ZW0sXG4gICAgICAgIC8vIGdldExhYmVsUHJvcHMsXG4gICAgICAgIGdldE1lbnVQcm9wcyxcbiAgICAgICAgZ2V0SW5wdXRQcm9wcyxcbiAgICAgICAgZ2V0Q29tYm9ib3hQcm9wcyxcbiAgICAgICAgZ2V0SXRlbVByb3BzLFxuICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICBoaWdobGlnaHRlZEluZGV4LFxuICAgIH0gPSB1c2VDb21ib2JveCh7XG4gICAgICAgIGl0ZW1zOiBpbnB1dEl0ZW1zLFxuICAgICAgICBvbklucHV0VmFsdWVDaGFuZ2U6ICh7IGlucHV0VmFsdWU6IHZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgIGlmICghdmFsdWUgfHwgIXJhd0RhdGE/Lmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgICAgICAvLyBjb25zdCBsb2NhdGlvbnM6IHN0cmluZ1tdID0gcmF3RGF0YS5tYXAocHJvcCgndGV4dCcpKTtcblxuICAgICAgICAgICAgc2V0SW5wdXRJdGVtcyhbXSk7XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIXNlbGVjdGVkKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpbnB1dD8uY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghcmF3RGF0YSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG5hbWVzOiBzdHJpbmdbXSA9IHJhd0RhdGEubWFwKHByb3AoJ3RleHQnKSk7XG5cbiAgICAgICAgc2V0SW5wdXRJdGVtcyhuYW1lcyk7XG4gICAgfSwgW3Jhd0RhdGFdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW0gJiYgcmF3RGF0YSkge1xuICAgICAgICAgICAgaGFuZGxlU2VsZWN0aW9uKHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBzZWxlY3RlZEl0ZW0sXG4gICAgICAgICAgICAgICAgdG5yOiByYXdEYXRhLmZpbHRlcihpdGVtID0+IGl0ZW0udGV4dCA9PT0gc2VsZWN0ZWRJdGVtKVswXS5pZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwgW3NlbGVjdGVkSXRlbV0pO1xuXG4gICAgY29uc3QgZGVib3VuY2VkSW5wdXRWYWx1ZSA9IHVzZURlYm91bmNlKGlucHV0VmFsdWUsIDMwMCk7XG4gICAgY29uc3QgaW5wdXRWYWx1ZUxvd2VyID0gaW5wdXRWYWx1ZS50b0xvd2VyQ2FzZSgpLnRyaW1SaWdodCgpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEJveCBwYWRkaW5nPVwiNHB4XCI+XG4gICAgICAgICAgICA8ZGl2IHsuLi5nZXRDb21ib2JveFByb3BzKCl9PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0SW5wdXRQcm9wcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWY6IGlucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlucHV0SWQsXG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICAgICAgICAgICAgICAgICAgY3NzPXsodGhlbWU6IFRoZW1lKTogc3RyaW5nID0+IGBcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogNXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA1cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHt0aGVtZS5jb2xvcnMudmVyeUxpZ2h0R3JleX07XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJHt0aGVtZS5mb250cy5zb3VyY2VTYW5zUHJvfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZS1jb2xvcjogJHt0aGVtZS5jb2xvcnMucGlua0JyaWdodH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge2lucHV0VmFsdWU/Lmxlbmd0aCA8IDIgJiYgKFxuICAgICAgICAgICAgICAgIDxGbGV4XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjM2cHhcIlxuICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1g9XCI1cHhcIlxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9XCJicmlkYWxIZWFsdGhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFBhcmFncmFwaCB0ZXh0Q29sb3I9XCJydXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2UgZW50ZXIgMiBvciBtb3JlIGNoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgPC9QYXJhZ3JhcGg+XG4gICAgICAgICAgICAgICAgPC9GbGV4PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtpc09wZW4gJiYgIWlucHV0SXRlbXMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIDxGbGV4XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjM2cHhcIlxuICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1g9XCI1cHhcIlxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9XCJzbXVkZ2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFBhcmFncmFwaD5TZWFyY2hpbmc8L1BhcmFncmFwaD5cbiAgICAgICAgICAgICAgICA8L0ZsZXg+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICAgIHsuLi5nZXRNZW51UHJvcHMoKX1cbiAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMTgwcHg7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2lzT3BlbiAmJiBpbnB1dFZhbHVlPy5sZW5ndGggPj0gMiAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxGZXRjaERhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5PXtkZWJvdW5jZWRJbnB1dFZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgYXBpVXJsPXthcGlVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXREYXRhPXtzZXRSYXdEYXRhfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aW5wdXRJdGVtcy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGlucHV0SXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0SXRlbVByb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17KHRoZW1lOiBUaGVtZSk6IHN0cmluZyA9PiBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNnB4IDVweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZEluZGV4ID09PSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGVtZS5jb2xvcnMucGlua0JyaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndHJhbnNwYXJlbnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWUuY29sb3JzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleCA9PT0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnd2hpdGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3NsYXRlTGlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9YCBhcyBDb2xvdXJLZXlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZS5mb250cy5zb3VyY2VTYW5zUHJvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpdGVtfSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2l0ZW0udG9Mb3dlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbnB1dFZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZihpbnB1dFZhbHVlTG93ZXIpID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbS5zbGljZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZihpbnB1dFZhbHVlTG93ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lucHV0VmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmRleE9mKGlucHV0VmFsdWVMb3dlcikgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY291cnNlLXN1YmplY3QtaXRlbS1saXN0LWhpZ2hsaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5zdWJzdHIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRWYWx1ZUxvd2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0VmFsdWVMb3dlci5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW5wdXRWYWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluZGV4T2YoaW5wdXRWYWx1ZUxvd2VyKSA+IC0xICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnN1YnN0cihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmRleE9mKGlucHV0VmFsdWVMb3dlcikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFZhbHVlTG93ZXIubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9GZXRjaERhdGE+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvQm94PlxuICAgICk7XG59O1xuXG5jb25zdCBiYXNlRW5kcG9pbnQgPSAnaHR0cDovLzE5Mi4xNjguOC44OjYwMDQvbG9jYXRpb25zP3E9JztcblxuZXhwb3J0IGludGVyZmFjZSBEcm9wZG93blR5cGVhaGVhZFByb3BzIHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHByZVNlbGVjdGVkPzogc3RyaW5nO1xuICAgIGhhbmRsZVNlbGVjdGVkPzogKFxuICAgICAgICBzZWxlY3RlZDogeyB0bnI6IG51bWJlcjsgdGV4dDogc3RyaW5nIH0gfCB1bmRlZmluZWRcbiAgICApID0+IHZvaWQ7XG4gICAgYXBpVXJsPzogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkYXRhVGVzdElkPzogc3RyaW5nO1xuICAgIHR5cGVhaGVhZFRlc3RJZD86IHN0cmluZztcbiAgICBmb3JtTGFiZWw/OiBzdHJpbmc7XG59XG5cbmNvbnN0IERyb3Bkb3duVHlwZWFoZWFkOiBGQzxEcm9wZG93blR5cGVhaGVhZFByb3BzPiA9ICh7XG4gICAgbGFiZWwsXG4gICAgYXBpVXJsID0gYmFzZUVuZHBvaW50LFxuICAgIG5hbWUsXG4gICAgaGFuZGxlU2VsZWN0ZWQsXG4gICAgcHJlU2VsZWN0ZWQgPSAnJyxcbiAgICBkYXRhVGVzdElkID0gJ2Ryb3Bkb3duVHlwZWFoZWFkJyxcbiAgICB0eXBlYWhlYWRUZXN0SWQgPSAndHlwZWFoZWFkSW5wdXQnLFxuICAgIGZvcm1MYWJlbCxcbn0pID0+IHtcbiAgICBjb25zdCBbc2VsZWN0ZWQsIHNldFNlbGVjdGVkXSA9IHVzZVN0YXRlPHN0cmluZz4ocHJlU2VsZWN0ZWQpO1xuICAgIGNvbnN0IFtzZWxlY3RlZFRuciwgc2V0U2VsZWN0ZWRUbnJdID0gdXNlU3RhdGU8bnVtYmVyPigpO1xuICAgIGNvbnN0IGJ1cyA9IHVzZUJ1cygpO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdGlvbiA9IChzZWxlY3Rpb246IHtcbiAgICAgICAgdG5yOiBudW1iZXI7XG4gICAgICAgIHRleHQ6IHN0cmluZztcbiAgICB9KTogdm9pZCA9PiB7XG4gICAgICAgIHNldFNlbGVjdGVkKHNlbGVjdGlvbi50ZXh0KTtcbiAgICAgICAgc2V0U2VsZWN0ZWRUbnIoc2VsZWN0aW9uLnRucik7XG4gICAgfTtcbiAgICBjb25zdCBoYW5kbGVDbGVhclNlbGVjdGVkID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBzZXRTZWxlY3RlZCgnJyk7XG4gICAgICAgIGlmIChoYW5kbGVTZWxlY3RlZCkge1xuICAgICAgICAgICAgaGFuZGxlU2VsZWN0ZWQodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgcHJldlByZXNlbGVjdGVkID0gdXNlUHJldmlvdXMocHJlU2VsZWN0ZWQpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHByZVNlbGVjdGVkICE9PSBwcmV2UHJlc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkKHByZVNlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcmVTZWxlY3RlZCwgcHJldlByZXNlbGVjdGVkXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWQgJiYgc2VsZWN0ZWRUbnIpIHtcbiAgICAgICAgICAgIGJ1cy5lbWl0KERST1BET1dOX1RZUEVBSEVBRF9TRUxFQ1RJT05fRVZFTlQpO1xuXG4gICAgICAgICAgICBpZiAoaGFuZGxlU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RlZCh7IHRleHQ6IHNlbGVjdGVkLCB0bnI6IHNlbGVjdGVkVG5yIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW3NlbGVjdGVkLCBzZWxlY3RlZFRucl0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIGB9XG4gICAgICAgID5cbiAgICAgICAgICAgIHtmb3JtTGFiZWwgJiYgKFxuICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBodG1sRm9yPXtuYW1lfVxuICAgICAgICAgICAgICAgICAgICBjc3M9eyh0aGVtZTogVGhlbWUpOiBzdHJpbmcgPT4gYFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAke3RoZW1lLmNvbG9ycy5zbGF0ZURhcmt9O1xuICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJHt0aGVtZS5mb250cy5zb3VyY2VTYW5zUHJvfTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7Zm9ybUxhYmVsfVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPEN1c3RvbURyb3Bkb3duXG4gICAgICAgICAgICAgICAgZGF0YVRlc3RJZD17ZGF0YVRlc3RJZH1cbiAgICAgICAgICAgICAgICBIZWFkZXJDb21wb25lbnQ9e1xuICAgICAgICAgICAgICAgICAgICA8SGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGVhclNlbGVjdGVkPXtoYW5kbGVDbGVhclNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgRHJvcGRvd25Db21wb25lbnQ9e1xuICAgICAgICAgICAgICAgICAgICA8VHlwZWFoZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICBhcGlVcmw9e2FwaVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGlvbj17aGFuZGxlU2VsZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVRlc3RJZD17dHlwZWFoZWFkVGVzdElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRJZD17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufTtcblxuY29uc3QgRHJvcHdEb3duVHlwZWFoZWFkQ29ubmVjdGVkOiBGQzxEcm9wZG93blR5cGVhaGVhZFByb3BzPiA9IHByb3BzID0+IChcbiAgICA8QnVzUHJvdmlkZXI+XG4gICAgICAgIDxEcm9wZG93blR5cGVhaGVhZCB7Li4ucHJvcHN9IC8+XG4gICAgPC9CdXNQcm92aWRlcj5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IERyb3B3RG93blR5cGVhaGVhZENvbm5lY3RlZDtcbiJdfQ== */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\n\nvar Typeahead = function Typeahead(_ref5) {\n var apiUrl = _ref5.apiUrl,\n handleSelection = _ref5.handleSelection,\n selected = _ref5.selected,\n dataTestId = _ref5.dataTestId,\n inputId = _ref5.inputId;\n var input = (0, _react.useRef)(null); // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n var _useState = (0, _react.useState)(),\n _useState2 = _slicedToArray(_useState, 2),\n rawData = _useState2[0],\n setRawData = _useState2[1];\n\n var _useState3 = (0, _react.useState)([]),\n _useState4 = _slicedToArray(_useState3, 2),\n inputItems = _useState4[0],\n setInputItems = _useState4[1];\n\n var _useCombobox = (0, _downshift.useCombobox)({\n items: inputItems,\n onInputValueChange: function onInputValueChange(_ref6) {\n var value = _ref6.inputValue;\n if (!value || !(rawData !== null && rawData !== void 0 && rawData.length)) return; // const locations: string[] = rawData.map(prop('text'));\n\n setInputItems([]);\n }\n }),\n isOpen = _useCombobox.isOpen,\n selectedItem = _useCombobox.selectedItem,\n getMenuProps = _useCombobox.getMenuProps,\n getInputProps = _useCombobox.getInputProps,\n getComboboxProps = _useCombobox.getComboboxProps,\n getItemProps = _useCombobox.getItemProps,\n inputValue = _useCombobox.inputValue,\n highlightedIndex = _useCombobox.highlightedIndex;\n\n (0, _react.useEffect)(function () {\n if (!selected) {\n var _input$current;\n\n // eslint-disable-next-line no-unused-expressions\n input === null || input === void 0 ? void 0 : (_input$current = input.current) === null || _input$current === void 0 ? void 0 : _input$current.focus();\n }\n }, []);\n (0, _react.useEffect)(function () {\n if (!rawData) return;\n var names = rawData.map((0, _ramda.prop)('text'));\n setInputItems(names);\n }, [rawData]);\n (0, _react.useEffect)(function () {\n if (selectedItem && rawData) {\n handleSelection({\n text: selectedItem,\n tnr: rawData.filter(function (item) {\n return item.text === selectedItem;\n })[0].id\n });\n }\n }, [selectedItem]);\n var debouncedInputValue = (0, _useDebounced[\"default\"])(inputValue, 300);\n var inputValueLower = inputValue.toLowerCase().trimRight();\n return (0, _jsxRuntime.jsxs)(_clCore.Box, {\n padding: \"4px\",\n children: [(0, _jsxRuntime.jsx)(\"div\", _objectSpread(_objectSpread({}, getComboboxProps()), {}, {\n children: (0, _jsxRuntime.jsx)(\"input\", _objectSpread(_objectSpread({}, getInputProps({\n ref: input,\n type: 'text',\n id: inputId\n })), {}, {\n \"data-testid\": dataTestId,\n css: function css(theme) {\n return \"\\n display: block;\\n margin-bottom: 4px;\\n padding-right: 5px;\\n padding-left: 5px;\\n width: 100%;\\n height: 34px;\\n appearance: none;\\n box-shadow: none;\\n border: 1px solid \".concat(theme.colors.veryLightGrey, \";\\n font-family: \").concat(theme.fonts.sourceSansPro, \";\\n font-size: 16px;\\n\\n &:focus {\\n outline-color: \").concat(theme.colors.pinkBright, \";\\n }\\n \");\n }\n }))\n })), (inputValue === null || inputValue === void 0 ? void 0 : inputValue.length) < 2 && (0, _jsxRuntime.jsx)(_clCore.Flex, {\n height: \"36px\",\n alignItems: \"center\",\n paddingX: \"5px\",\n backgroundColor: \"bridalHealth\",\n children: (0, _jsxRuntime.jsx)(_clCore.Paragraph, {\n textColor: \"rust\",\n children: \"Please enter 2 or more characters\"\n })\n }), isOpen && !inputItems.length ? (0, _jsxRuntime.jsx)(_clCore.Flex, {\n height: \"36px\",\n alignItems: \"center\",\n paddingX: \"5px\",\n backgroundColor: \"smudge\",\n children: (0, _jsxRuntime.jsx)(_clCore.Paragraph, {\n children: \"Searching\"\n })\n }) : null, (0, _jsxRuntime.jsx)(\"ul\", _objectSpread(_objectSpread({}, getMenuProps()), {}, {\n css: _ref3,\n children: isOpen && (inputValue === null || inputValue === void 0 ? void 0 : inputValue.length) >= 2 && (0, _jsxRuntime.jsx)(_FetchData[\"default\"], {\n query: debouncedInputValue,\n apiUrl: apiUrl,\n getData: setRawData,\n children: inputItems.length ? inputItems.map(function (item, index) {\n return (0, _react2.createElement)(\"li\", _objectSpread(_objectSpread({}, getItemProps({\n item: item,\n index: index\n })), {}, {\n css: function css(theme) {\n return \"\\n width: 100%;\\n padding: 6px 5px;\\n background-color: \".concat(highlightedIndex === index ? theme.colors.pinkBright : 'transparent', \";\\n color: \").concat(theme.colors[\"\".concat(highlightedIndex === index ? 'white' : 'slateLight')], \";\\n font-family: \").concat(theme.fonts.sourceSansPro, \";\\n font-weight: bold;\\n font-size: 16px;\\n line-height: 1.5;\\n cursor: pointer;\\n text-align: left;\\n \");\n } // eslint-disable-next-line react/no-array-index-key\n ,\n key: \"\".concat(item).concat(index),\n \"data-testid\": item.toLowerCase()\n }), inputValue && item.toLocaleLowerCase().indexOf(inputValueLower) > -1 ? item.slice(0, item.toLocaleLowerCase().indexOf(inputValueLower)) : item, inputValue && item.toLocaleLowerCase().indexOf(inputValueLower) > -1 && (0, _jsxRuntime.jsx)(\"span\", {\n css: _ref2,\n \"data-testid\": \"course-subject-item-list-highlight\",\n children: item.substr(item.toLocaleLowerCase().indexOf(inputValueLower), inputValueLower.length)\n }), inputValue && item.toLocaleLowerCase().indexOf(inputValueLower) > -1 && item.substr(item.toLocaleLowerCase().indexOf(inputValueLower) + inputValueLower.length, item.length));\n }) : null\n })\n }))]\n });\n};\n\nvar baseEndpoint = 'http://192.168.8.8:6004/locations?q=';\n\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n name: \"1flj9lk\",\n styles: \"text-align:left\"\n} : {\n name: \"ml2esn-DropdownTypeahead\",\n styles: \"text-align:left;label:DropdownTypeahead;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0Ryb3Bkb3duVHlwZWFoZWFkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrWW9CIiwiZmlsZSI6Ii4uLy4uL3NyYy9jb21wb25lbnRzL0Ryb3Bkb3duVHlwZWFoZWFkLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCBSZWFjdCwgeyBGQywgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29tYm9ib3ggfSBmcm9tICdkb3duc2hpZnQnO1xuaW1wb3J0IHsgUHJvdmlkZXIgYXMgQnVzUHJvdmlkZXIsIHVzZUJ1cyB9IGZyb20gJ3JlYWN0LWJ1cyc7XG5pbXBvcnQgeyBGbGV4LCBQYXJhZ3JhcGgsIEJveCwgdXNlVGhlbWUgfSBmcm9tICdAcHJvc3BlY3RzL2NsLWNvcmUnO1xuaW1wb3J0IHsgQ29sb3VyS2V5cyB9IGZyb20gJ0Bwcm9zcGVjdHMvY2wtY29yZS9saWIvdGhlbWUnO1xuaW1wb3J0IEljb25Dcm9zcyBmcm9tICdAcHJvc3BlY3RzL2NsLWljb25zL2xpYi9zeXN0ZW0vZnVuY3Rpb24vaWNvbi1jcm9zcyc7XG5pbXBvcnQgeyBjc3MsIFRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgcHJvcCB9IGZyb20gJ3JhbWRhJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tbmFtZWQtYXMtZGVmYXVsdFxuaW1wb3J0IEN1c3RvbURyb3Bkb3duIGZyb20gJy4vQ3VzdG9tRHJvcGRvd24nO1xuaW1wb3J0IHsgU1IgfSBmcm9tICcuL3N0eWxlZCc7XG5pbXBvcnQgdXNlRGVib3VuY2UgZnJvbSAnLi4vaG9va3MvdXNlRGVib3VuY2VkJztcbmltcG9ydCBGZXRjaERhdGEgZnJvbSAnLi9GZXRjaERhdGEnO1xuaW1wb3J0IHsgRFJPUERPV05fVFlQRUFIRUFEX1NFTEVDVElPTl9FVkVOVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VQcmV2aW91cyB9IGZyb20gJy4uL2hvb2tzL3VzZVByZXZpb3VzJztcblxuaW50ZXJmYWNlIEhlYWRlclByb3BzIHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHNlbGVjdGVkOiBzdHJpbmc7XG4gICAgaGFuZGxlQ2xlYXJTZWxlY3RlZDogKCkgPT4gdm9pZDtcbiAgICBuYW1lOiBzdHJpbmc7XG59XG5cbmNvbnN0IEhlYWRlcjogRkM8SGVhZGVyUHJvcHM+ID0gKHtcbiAgICBsYWJlbCxcbiAgICBzZWxlY3RlZCxcbiAgICBoYW5kbGVDbGVhclNlbGVjdGVkLFxuICAgIG5hbWUsXG59KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnMTMnKSB7XG4gICAgICAgICAgICBoYW5kbGVDbGVhclNlbGVjdGVkKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEZsZXhcbiAgICAgICAgICAgIGFzPVwic3BhblwiXG4gICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8UGFyYWdyYXBoIGFzPVwic3BhblwiIHRleHRDb2xvcj1cInNsYXRlRGFya1wiIGlkPXtsYWJlbH0+XG4gICAgICAgICAgICAgICAge3NlbGVjdGVkIHx8IGxhYmVsfVxuICAgICAgICAgICAgPC9QYXJhZ3JhcGg+XG4gICAgICAgICAgICB7c2VsZWN0ZWQgJiYgKFxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsZWFyU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicmVtb3ZlLXNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjc3M9eyh0aGVtZTogVGhlbWUpOiBzdHJpbmcgPT4gYFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiAwLjNzIGVhc2UtaW4tb3V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgei1pbmRleDogMTA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3RoZW1lLmNvbG9ycy5waW5rUmljaH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmcgcGF0aCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICR7dGhlbWUuY29sb3JzLndoaXRlfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTUj5SZW1vdmUgc2VsZWN0ZWQge25hbWV9PC9TUj5cbiAgICAgICAgICAgICAgICAgICAgPEljb25Dcm9zc1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e3VzZVRoZW1lKCkuY29sb3JzLnBpbmtCcmlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwcHhcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9e25hbWV9IHZhbHVlPXtzZWxlY3RlZH0gLz5cbiAgICAgICAgPC9GbGV4PlxuICAgICk7XG59O1xuXG50eXBlIFJlc3VsdCA9IFtcbiAgICB7XG4gICAgICAgIGlkOiBudW1iZXI7XG4gICAgICAgIHRleHQ6IHN0cmluZztcbiAgICB9XG5dO1xuXG5pbnRlcmZhY2UgVHlwZWFoZWFkUHJvcHMge1xuICAgIHR5cGVhaGVhZERhdGE/OiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcbiAgICBhcGlVcmw6IHN0cmluZztcbiAgICBoYW5kbGVTZWxlY3Rpb24oc2VsZWN0ZWQ6IHsgdG5yOiBudW1iZXI7IHRleHQ6IHN0cmluZyB9KTogdm9pZDtcbiAgICBzZWxlY3RlZDogc3RyaW5nO1xuICAgIGRhdGFUZXN0SWQ6IHN0cmluZztcbiAgICBpbnB1dElkOiBzdHJpbmc7XG59XG5cbmNvbnN0IFR5cGVhaGVhZDogRkM8VHlwZWFoZWFkUHJvcHM+ID0gKHtcbiAgICBhcGlVcmwsXG4gICAgaGFuZGxlU2VsZWN0aW9uLFxuICAgIHNlbGVjdGVkLFxuICAgIGRhdGFUZXN0SWQsXG4gICAgaW5wdXRJZCxcbn0pID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IFtyYXdEYXRhLCBzZXRSYXdEYXRhXSA9IHVzZVN0YXRlPFJlc3VsdD4oKTtcbiAgICBjb25zdCBbaW5wdXRJdGVtcywgc2V0SW5wdXRJdGVtc10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oW10pO1xuICAgIGNvbnN0IHtcbiAgICAgICAgaXNPcGVuLFxuICAgICAgICBzZWxlY3RlZEl0ZW0sXG4gICAgICAgIC8vIGdldExhYmVsUHJvcHMsXG4gICAgICAgIGdldE1lbnVQcm9wcyxcbiAgICAgICAgZ2V0SW5wdXRQcm9wcyxcbiAgICAgICAgZ2V0Q29tYm9ib3hQcm9wcyxcbiAgICAgICAgZ2V0SXRlbVByb3BzLFxuICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICBoaWdobGlnaHRlZEluZGV4LFxuICAgIH0gPSB1c2VDb21ib2JveCh7XG4gICAgICAgIGl0ZW1zOiBpbnB1dEl0ZW1zLFxuICAgICAgICBvbklucHV0VmFsdWVDaGFuZ2U6ICh7IGlucHV0VmFsdWU6IHZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgIGlmICghdmFsdWUgfHwgIXJhd0RhdGE/Lmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgICAgICAvLyBjb25zdCBsb2NhdGlvbnM6IHN0cmluZ1tdID0gcmF3RGF0YS5tYXAocHJvcCgndGV4dCcpKTtcblxuICAgICAgICAgICAgc2V0SW5wdXRJdGVtcyhbXSk7XG4gICAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIXNlbGVjdGVkKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpbnB1dD8uY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghcmF3RGF0YSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG5hbWVzOiBzdHJpbmdbXSA9IHJhd0RhdGEubWFwKHByb3AoJ3RleHQnKSk7XG5cbiAgICAgICAgc2V0SW5wdXRJdGVtcyhuYW1lcyk7XG4gICAgfSwgW3Jhd0RhdGFdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW0gJiYgcmF3RGF0YSkge1xuICAgICAgICAgICAgaGFuZGxlU2VsZWN0aW9uKHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBzZWxlY3RlZEl0ZW0sXG4gICAgICAgICAgICAgICAgdG5yOiByYXdEYXRhLmZpbHRlcihpdGVtID0+IGl0ZW0udGV4dCA9PT0gc2VsZWN0ZWRJdGVtKVswXS5pZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwgW3NlbGVjdGVkSXRlbV0pO1xuXG4gICAgY29uc3QgZGVib3VuY2VkSW5wdXRWYWx1ZSA9IHVzZURlYm91bmNlKGlucHV0VmFsdWUsIDMwMCk7XG4gICAgY29uc3QgaW5wdXRWYWx1ZUxvd2VyID0gaW5wdXRWYWx1ZS50b0xvd2VyQ2FzZSgpLnRyaW1SaWdodCgpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPEJveCBwYWRkaW5nPVwiNHB4XCI+XG4gICAgICAgICAgICA8ZGl2IHsuLi5nZXRDb21ib2JveFByb3BzKCl9PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0SW5wdXRQcm9wcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWY6IGlucHV0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlucHV0SWQsXG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICAgICAgICAgICAgICAgICAgY3NzPXsodGhlbWU6IFRoZW1lKTogc3RyaW5nID0+IGBcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogNXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA1cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHt0aGVtZS5jb2xvcnMudmVyeUxpZ2h0R3JleX07XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJHt0aGVtZS5mb250cy5zb3VyY2VTYW5zUHJvfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZS1jb2xvcjogJHt0aGVtZS5jb2xvcnMucGlua0JyaWdodH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge2lucHV0VmFsdWU/Lmxlbmd0aCA8IDIgJiYgKFxuICAgICAgICAgICAgICAgIDxGbGV4XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjM2cHhcIlxuICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1g9XCI1cHhcIlxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9XCJicmlkYWxIZWFsdGhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFBhcmFncmFwaCB0ZXh0Q29sb3I9XCJydXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2UgZW50ZXIgMiBvciBtb3JlIGNoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgPC9QYXJhZ3JhcGg+XG4gICAgICAgICAgICAgICAgPC9GbGV4PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtpc09wZW4gJiYgIWlucHV0SXRlbXMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIDxGbGV4XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjM2cHhcIlxuICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1g9XCI1cHhcIlxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9XCJzbXVkZ2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFBhcmFncmFwaD5TZWFyY2hpbmc8L1BhcmFncmFwaD5cbiAgICAgICAgICAgICAgICA8L0ZsZXg+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICAgIHsuLi5nZXRNZW51UHJvcHMoKX1cbiAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMTgwcHg7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2lzT3BlbiAmJiBpbnB1dFZhbHVlPy5sZW5ndGggPj0gMiAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxGZXRjaERhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5PXtkZWJvdW5jZWRJbnB1dFZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgYXBpVXJsPXthcGlVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXREYXRhPXtzZXRSYXdEYXRhfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aW5wdXRJdGVtcy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGlucHV0SXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0SXRlbVByb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17KHRoZW1lOiBUaGVtZSk6IHN0cmluZyA9PiBgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNnB4IDVweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZEluZGV4ID09PSBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGVtZS5jb2xvcnMucGlua0JyaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndHJhbnNwYXJlbnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWUuY29sb3JzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleCA9PT0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnd2hpdGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3NsYXRlTGlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9YCBhcyBDb2xvdXJLZXlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZS5mb250cy5zb3VyY2VTYW5zUHJvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpdGVtfSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2l0ZW0udG9Mb3dlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbnB1dFZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZihpbnB1dFZhbHVlTG93ZXIpID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbS5zbGljZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZihpbnB1dFZhbHVlTG93ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lucHV0VmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmRleE9mKGlucHV0VmFsdWVMb3dlcikgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY291cnNlLXN1YmplY3QtaXRlbS1saXN0LWhpZ2hsaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5zdWJzdHIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRWYWx1ZUxvd2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0VmFsdWVMb3dlci5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW5wdXRWYWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluZGV4T2YoaW5wdXRWYWx1ZUxvd2VyKSA+IC0xICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnN1YnN0cihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmRleE9mKGlucHV0VmFsdWVMb3dlcikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFZhbHVlTG93ZXIubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9GZXRjaERhdGE+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvQm94PlxuICAgICk7XG59O1xuXG5jb25zdCBiYXNlRW5kcG9pbnQgPSAnaHR0cDovLzE5Mi4xNjguOC44OjYwMDQvbG9jYXRpb25zP3E9JztcblxuZXhwb3J0IGludGVyZmFjZSBEcm9wZG93blR5cGVhaGVhZFByb3BzIHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHByZVNlbGVjdGVkPzogc3RyaW5nO1xuICAgIGhhbmRsZVNlbGVjdGVkPzogKFxuICAgICAgICBzZWxlY3RlZDogeyB0bnI6IG51bWJlcjsgdGV4dDogc3RyaW5nIH0gfCB1bmRlZmluZWRcbiAgICApID0+IHZvaWQ7XG4gICAgYXBpVXJsPzogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkYXRhVGVzdElkPzogc3RyaW5nO1xuICAgIHR5cGVhaGVhZFRlc3RJZD86IHN0cmluZztcbiAgICBmb3JtTGFiZWw/OiBzdHJpbmc7XG59XG5cbmNvbnN0IERyb3Bkb3duVHlwZWFoZWFkOiBGQzxEcm9wZG93blR5cGVhaGVhZFByb3BzPiA9ICh7XG4gICAgbGFiZWwsXG4gICAgYXBpVXJsID0gYmFzZUVuZHBvaW50LFxuICAgIG5hbWUsXG4gICAgaGFuZGxlU2VsZWN0ZWQsXG4gICAgcHJlU2VsZWN0ZWQgPSAnJyxcbiAgICBkYXRhVGVzdElkID0gJ2Ryb3Bkb3duVHlwZWFoZWFkJyxcbiAgICB0eXBlYWhlYWRUZXN0SWQgPSAndHlwZWFoZWFkSW5wdXQnLFxuICAgIGZvcm1MYWJlbCxcbn0pID0+IHtcbiAgICBjb25zdCBbc2VsZWN0ZWQsIHNldFNlbGVjdGVkXSA9IHVzZVN0YXRlPHN0cmluZz4ocHJlU2VsZWN0ZWQpO1xuICAgIGNvbnN0IFtzZWxlY3RlZFRuciwgc2V0U2VsZWN0ZWRUbnJdID0gdXNlU3RhdGU8bnVtYmVyPigpO1xuICAgIGNvbnN0IGJ1cyA9IHVzZUJ1cygpO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdGlvbiA9IChzZWxlY3Rpb246IHtcbiAgICAgICAgdG5yOiBudW1iZXI7XG4gICAgICAgIHRleHQ6IHN0cmluZztcbiAgICB9KTogdm9pZCA9PiB7XG4gICAgICAgIHNldFNlbGVjdGVkKHNlbGVjdGlvbi50ZXh0KTtcbiAgICAgICAgc2V0U2VsZWN0ZWRUbnIoc2VsZWN0aW9uLnRucik7XG4gICAgfTtcbiAgICBjb25zdCBoYW5kbGVDbGVhclNlbGVjdGVkID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBzZXRTZWxlY3RlZCgnJyk7XG4gICAgICAgIGlmIChoYW5kbGVTZWxlY3RlZCkge1xuICAgICAgICAgICAgaGFuZGxlU2VsZWN0ZWQodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgcHJldlByZXNlbGVjdGVkID0gdXNlUHJldmlvdXMocHJlU2VsZWN0ZWQpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHByZVNlbGVjdGVkICE9PSBwcmV2UHJlc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkKHByZVNlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcmVTZWxlY3RlZCwgcHJldlByZXNlbGVjdGVkXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWQgJiYgc2VsZWN0ZWRUbnIpIHtcbiAgICAgICAgICAgIGJ1cy5lbWl0KERST1BET1dOX1RZUEVBSEVBRF9TRUxFQ1RJT05fRVZFTlQpO1xuXG4gICAgICAgICAgICBpZiAoaGFuZGxlU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RlZCh7IHRleHQ6IHNlbGVjdGVkLCB0bnI6IHNlbGVjdGVkVG5yIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW3NlbGVjdGVkLCBzZWxlY3RlZFRucl0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIGB9XG4gICAgICAgID5cbiAgICAgICAgICAgIHtmb3JtTGFiZWwgJiYgKFxuICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBodG1sRm9yPXtuYW1lfVxuICAgICAgICAgICAgICAgICAgICBjc3M9eyh0aGVtZTogVGhlbWUpOiBzdHJpbmcgPT4gYFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAke3RoZW1lLmNvbG9ycy5zbGF0ZURhcmt9O1xuICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJHt0aGVtZS5mb250cy5zb3VyY2VTYW5zUHJvfTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7Zm9ybUxhYmVsfVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPEN1c3RvbURyb3Bkb3duXG4gICAgICAgICAgICAgICAgZGF0YVRlc3RJZD17ZGF0YVRlc3RJZH1cbiAgICAgICAgICAgICAgICBIZWFkZXJDb21wb25lbnQ9e1xuICAgICAgICAgICAgICAgICAgICA8SGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGVhclNlbGVjdGVkPXtoYW5kbGVDbGVhclNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgRHJvcGRvd25Db21wb25lbnQ9e1xuICAgICAgICAgICAgICAgICAgICA8VHlwZWFoZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICBhcGlVcmw9e2FwaVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGlvbj17aGFuZGxlU2VsZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVRlc3RJZD17dHlwZWFoZWFkVGVzdElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRJZD17bmFtZX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufTtcblxuY29uc3QgRHJvcHdEb3duVHlwZWFoZWFkQ29ubmVjdGVkOiBGQzxEcm9wZG93blR5cGVhaGVhZFByb3BzPiA9IHByb3BzID0+IChcbiAgICA8QnVzUHJvdmlkZXI+XG4gICAgICAgIDxEcm9wZG93blR5cGVhaGVhZCB7Li4ucHJvcHN9IC8+XG4gICAgPC9CdXNQcm92aWRlcj5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IERyb3B3RG93blR5cGVhaGVhZENvbm5lY3RlZDtcbiJdfQ== */\",\n toString: _EMOTION_STRINGIFIED_CSS_ERROR__\n};\n\nvar DropdownTypeahead = function DropdownTypeahead(_ref7) {\n var label = _ref7.label,\n _ref7$apiUrl = _ref7.apiUrl,\n apiUrl = _ref7$apiUrl === void 0 ? baseEndpoint : _ref7$apiUrl,\n name = _ref7.name,\n handleSelected = _ref7.handleSelected,\n _ref7$preSelected = _ref7.preSelected,\n preSelected = _ref7$preSelected === void 0 ? '' : _ref7$preSelected,\n _ref7$dataTestId = _ref7.dataTestId,\n dataTestId = _ref7$dataTestId === void 0 ? 'dropdownTypeahead' : _ref7$dataTestId,\n _ref7$typeaheadTestId = _ref7.typeaheadTestId,\n typeaheadTestId = _ref7$typeaheadTestId === void 0 ? 'typeaheadInput' : _ref7$typeaheadTestId,\n formLabel = _ref7.formLabel;\n\n var _useState5 = (0, _react.useState)(preSelected),\n _useState6 = _slicedToArray(_useState5, 2),\n selected = _useState6[0],\n setSelected = _useState6[1];\n\n var _useState7 = (0, _react.useState)(),\n _useState8 = _slicedToArray(_useState7, 2),\n selectedTnr = _useState8[0],\n setSelectedTnr = _useState8[1];\n\n var bus = (0, _reactBus.useBus)();\n\n var handleSelection = function handleSelection(selection) {\n setSelected(selection.text);\n setSelectedTnr(selection.tnr);\n };\n\n var handleClearSelected = function handleClearSelected() {\n setSelected('');\n\n if (handleSelected) {\n handleSelected(undefined);\n }\n };\n\n var prevPreselected = (0, _usePrevious.usePrevious)(preSelected);\n (0, _react.useEffect)(function () {\n if (preSelected !== prevPreselected) {\n setSelected(preSelected);\n }\n }, [preSelected, prevPreselected]);\n (0, _react.useEffect)(function () {\n if (selected && selectedTnr) {\n bus.emit(_constants.DROPDOWN_TYPEAHEAD_SELECTION_EVENT);\n\n if (handleSelected) {\n handleSelected({\n text: selected,\n tnr: selectedTnr\n });\n }\n }\n }, [selected, selectedTnr]);\n return (0, _jsxRuntime.jsxs)(\"div\", {\n css: _ref,\n children: [formLabel && (0, _jsxRuntime.jsx)(\"label\", {\n htmlFor: name,\n css: function css(theme) {\n return \"\\n margin-bottom: 5px;\\n color: \".concat(theme.colors.slateDark, \";\\n font-family: \").concat(theme.fonts.sourceSansPro, \";\\n font-size: 16px;\\n line-height: 1.5;\\n \");\n },\n children: formLabel\n }), (0, _jsxRuntime.jsx)(_CustomDropdown[\"default\"], {\n dataTestId: dataTestId,\n HeaderComponent: (0, _jsxRuntime.jsx)(Header, {\n label: label,\n selected: selected,\n handleClearSelected: handleClearSelected,\n name: name\n }),\n DropdownComponent: (0, _jsxRuntime.jsx)(Typeahead, {\n apiUrl: apiUrl,\n handleSelection: handleSelection,\n selected: selected,\n dataTestId: typeaheadTestId,\n inputId: name\n })\n })]\n });\n};\n\nvar DropwDownTypeaheadConnected = function DropwDownTypeaheadConnected(props) {\n return (0, _jsxRuntime.jsx)(_reactBus.Provider, {\n children: (0, _jsxRuntime.jsx)(DropdownTypeahead, _objectSpread({}, props))\n });\n};\n\nvar _default = DropwDownTypeaheadConnected;\nexports[\"default\"] = _default;","\"use strict\";\n\nrequire(\"core-js/modules/es.array.is-array.js\");\n\nrequire(\"core-js/modules/es.symbol.js\");\n\nrequire(\"core-js/modules/es.symbol.description.js\");\n\nrequire(\"core-js/modules/es.symbol.iterator.js\");\n\nrequire(\"core-js/modules/es.array.iterator.js\");\n\nrequire(\"core-js/modules/es.string.iterator.js\");\n\nrequire(\"core-js/modules/web.dom-collections.iterator.js\");\n\nrequire(\"core-js/modules/es.array.from.js\");\n\nrequire(\"core-js/modules/es.object.define-property.js\");\n\nrequire(\"core-js/modules/es.object.keys.js\");\n\nrequire(\"core-js/modules/es.object.get-own-property-descriptor.js\");\n\nrequire(\"core-js/modules/es.object.get-own-property-descriptors.js\");\n\nrequire(\"core-js/modules/es.object.define-properties.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nrequire(\"core-js/modules/es.array.map.js\");\n\nrequire(\"core-js/modules/es.array.filter.js\");\n\nrequire(\"core-js/modules/es.object.to-string.js\");\n\nrequire(\"core-js/modules/es.array.includes.js\");\n\nrequire(\"core-js/modules/es.string.includes.js\");\n\nrequire(\"core-js/modules/es.regexp.exec.js\");\n\nrequire(\"core-js/modules/es.string.replace.js\");\n\nrequire(\"core-js/modules/es.date.to-string.js\");\n\nrequire(\"core-js/modules/es.regexp.to-string.js\");\n\nrequire(\"core-js/modules/es.array.find-index.js\");\n\nrequire(\"core-js/modules/es.array.some.js\");\n\nrequire(\"core-js/modules/es.array.for-each.js\");\n\nrequire(\"core-js/modules/web.dom-collections.for-each.js\");\n\nrequire(\"core-js/modules/es.array.slice.js\");\n\nrequire(\"core-js/modules/es.parse-int.js\");\n\nrequire(\"core-js/modules/es.array.reduce.js\");\n\nrequire(\"core-js/modules/es.array.concat.js\");\n\nrequire(\"core-js/modules/es.array.join.js\");\n\nrequire(\"core-js/modules/es.function.name.js\");\n\nvar _react = require(\"react\");\n\nvar _camelcase = _interopRequireDefault(require(\"camelcase\"));\n\nvar _kebabCase = _interopRequireDefault(require(\"@queso/kebab-case\"));\n\nvar _immutable = require(\"immutable\");\n\nvar _ramda = require(\"ramda\");\n\nvar _ramdaAdjunct = require(\"ramda-adjunct\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar urlsegmentMapping = ['attendance[]', 'qualification[]', 'location'];\n\nvar useCourseSearchForm = function useCourseSearchForm(filters, hasFilters) {\n var isSearch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (search) {\n return console.log(search);\n };\n var selectedFilters = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n qualification: [{\n tnr: 21366,\n text: 'Masters degrees'\n }],\n attendance: [{\n tnr: 16510,\n text: 'full time'\n }],\n location: [],\n institution: [],\n subject: [],\n keyword: ''\n };\n var subjectParam = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (param) {\n return console.log(param);\n };\n var urlSetCallback = arguments.length > 5 ? arguments[5] : undefined;\n\n var getFormState = function getFormState(filterGroup, selected) {\n var _selected$location, _selected$institution, _selected$location2;\n\n return (0, _immutable.fromJS)(filterGroup).mapKeys(function (key) {\n return \"\".concat((0, _camelcase[\"default\"])(key), \"[]\");\n }).map(function (controlArray, key) {\n var selectedIds = controlArray.filter(function (control) {\n return selected[\"\".concat(key.replace('[]', ''))].map(function (tnr) {\n return tnr.tnr.toString();\n }).includes(control.get('id'));\n }).map(function (control) {\n return control.get('id');\n });\n\n if (selectedIds.size > 0) {\n var allIndex = controlArray.findIndex(function (item) {\n return item.get('value') === 'all';\n });\n var updatedControlArray = controlArray.update(allIndex, function (item) {\n return item.set('checked', false);\n });\n return updatedControlArray.map(function (control) {\n if (selectedIds.includes(control.get('id'))) {\n return control.set('checked', true);\n }\n\n return control;\n });\n }\n\n return controlArray;\n }).set('location', (_selected$location = selected.location) !== null && _selected$location !== void 0 && _selected$location.length || (_selected$institution = selected.institution) !== null && _selected$institution !== void 0 && _selected$institution.length ? (_selected$location2 = selected.location) !== null && _selected$location2 !== void 0 && _selected$location2.length ? {\n tnr: selected.location[0].tnr,\n text: selected.location[0].text\n } : {\n tnr: selected.institution[0].tnr,\n text: selected.institution[0].text\n } : undefined).set('subject', selected.subject.length || selected.keyword ? selected.keyword ? selected.keyword : decodeURIComponent(selected.subject[0].text) : undefined).toJS();\n };\n\n var memoizedDefaultState = (0, _react.useMemo)(function () {\n return getFormState(filters, selectedFilters);\n }, [filters, selectedFilters]);\n\n var _useState = (0, _react.useState)(memoizedDefaultState),\n _useState2 = _slicedToArray(_useState, 2),\n inputs = _useState2[0],\n setInputs = _useState2[1];\n\n var _useState3 = (0, _react.useState)(),\n _useState4 = _slicedToArray(_useState3, 2),\n newUrl = _useState4[0],\n setUrl = _useState4[1];\n\n (0, _react.useEffect)(function () {\n setInputs(memoizedDefaultState);\n }, [memoizedDefaultState]);\n\n var handleSubmit = function handleSubmit(event) {\n if (event) {\n event.persist();\n event.preventDefault();\n }\n\n var allNotSelected = (0, _ramdaAdjunct.propNotEq)('value', 'all');\n var inputChecked = (0, _ramda.propEq)('checked', true);\n hasFilters(inputs['attendance[]'].filter(allNotSelected).some(inputChecked) || inputs['qualification[]'].filter(allNotSelected).some(inputChecked) || !!inputs.institution || !!inputs.location || !!inputs.subject);\n var allFiltersArray = [];\n var orderedSlugs = urlsegmentMapping.map(function (segment) {\n if (segment === 'attendance[]' || segment === 'qualification[]') {\n inputs[segment].filter(function (input) {\n return input.checked && input.value !== 'all';\n }).slice(1).forEach(function (input) {\n return allFiltersArray.push(parseInt(input.id, 10));\n });\n var filtered = inputs[segment].filter(function (input) {\n return input.checked && input.value !== 'all';\n }).shift();\n return filtered === null || filtered === void 0 ? void 0 : filtered.value;\n }\n\n if (segment === 'location' && inputs.location) {\n return inputs.location ? (0, _kebabCase[\"default\"])(inputs.location.text) : '';\n }\n\n return '';\n }).filter(Boolean);\n var slugs = orderedSlugs.reduce(function (currentValue, accUrl) {\n return \"\".concat(currentValue, \"/\").concat(encodeURIComponent(accUrl));\n }, '');\n var extraCriteriaSlug = allFiltersArray.length !== 0 ? \"?extra-criteria=\".concat(encodeURIComponent(allFiltersArray.join(','))) : '';\n var subjectSlug = inputs.subject ? allFiltersArray.length !== 0 ? \"&keyword=\".concat(encodeURIComponent(inputs.subject)) : \"?keyword=\".concat(encodeURIComponent(inputs.subject)) : '';\n setUrl(\"\".concat(slugs).concat(extraCriteriaSlug).concat(subjectSlug) || '/all');\n\n if (urlSetCallback && urlSetCallback instanceof Function) {\n urlSetCallback(\"\".concat(slugs).concat(extraCriteriaSlug).concat(subjectSlug) || '/all');\n }\n\n isSearch(true);\n subjectParam(inputs.subject);\n };\n\n var handleInputChange = function handleInputChange(event) {\n var _event$currentTarget = event.currentTarget,\n name = _event$currentTarget.name,\n checked = _event$currentTarget.checked,\n value = _event$currentTarget.value;\n setInputs(function (prevInputs) {\n var inputSlice = (0, _immutable.fromJS)(prevInputs[name]);\n\n if (value === 'all') {\n var _updated = inputSlice.map(function (input) {\n return input.set('checked', false);\n }).setIn([0, 'checked'], checked);\n\n return _objectSpread(_objectSpread({}, prevInputs), {}, _defineProperty({}, name, _updated.toJS()));\n }\n\n var currentIndex = inputSlice.findIndex(function (item) {\n return item.get('value') === value;\n });\n var updated = inputSlice.setIn([currentIndex, 'checked'], checked).setIn([0, 'checked'], false);\n var ifAnyChecked = updated.findIndex(function (item) {\n return item.get('checked');\n });\n\n if (ifAnyChecked === -1) {\n updated = inputSlice.setIn([currentIndex, 'checked'], checked).setIn([0, 'checked'], true);\n }\n\n return _objectSpread(_objectSpread({}, prevInputs), {}, _defineProperty({}, name, updated.toJS()));\n });\n };\n\n var handleLocationChange = function handleLocationChange(selected) {\n return setInputs(function (prevInputs) {\n return _objectSpread(_objectSpread({}, prevInputs), {}, {\n location: selected\n });\n });\n };\n\n var handleSubjectChange = function handleSubjectChange(param) {\n return setInputs(function (prevInputs) {\n return _objectSpread(_objectSpread({}, prevInputs), {}, {\n subject: param\n });\n });\n };\n\n var getCheckedCount = function getCheckedCount(inputGroup) {\n return inputGroup.filter(function (input) {\n return input.checked && input.value !== 'all';\n }).length;\n };\n\n var inputsCheckedCount = (0, _ramda.mapObjIndexed)(getCheckedCount, (0, _ramda.omit)(['location', 'subject'], inputs));\n return {\n handleSubmit: handleSubmit,\n handleSubjectChange: handleSubjectChange,\n handleInputChange: handleInputChange,\n handleLocationChange: handleLocationChange,\n inputs: inputs,\n newUrl: newUrl,\n setNewUrl: setUrl,\n inputsCheckedCount: inputsCheckedCount\n };\n};\n\nvar _default = useCourseSearchForm;\nexports[\"default\"] = _default;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Used for setting prototype methods that IE8 chokes on.\nvar DELETE = 'delete';\n\n// Constants describing the size of trie nodes.\nvar SHIFT = 5; // Resulted in best performance after ______?\nvar SIZE = 1 << SHIFT;\nvar MASK = SIZE - 1;\n\n// A consistent shared value representing \"not set\" which equals nothing other\n// than itself, and nothing that could be provided externally.\nvar NOT_SET = {};\n\n// Boolean references, Rough equivalent of `bool &`.\nfunction MakeRef() {\n return { value: false };\n}\n\nfunction SetRef(ref) {\n if (ref) {\n ref.value = true;\n }\n}\n\n// A function which returns a value representing an \"owner\" for transient writes\n// to tries. The return value will only ever equal itself, and will not equal\n// the return of any subsequent call of this function.\nfunction OwnerID() {}\n\nfunction ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n}\n\nfunction wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32鈭�1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n}\n\nfunction returnTrue() {\n return true;\n}\n\nfunction wholeSlice(begin, end, size) {\n return (\n ((begin === 0 && !isNeg(begin)) ||\n (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size))\n );\n}\n\nfunction resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n}\n\nfunction resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n}\n\nfunction resolveIndex(index, size, defaultIndex) {\n // Sanitize indices using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n return index === undefined\n ? defaultIndex\n : isNeg(index)\n ? size === Infinity\n ? size\n : Math.max(0, size + index) | 0\n : size === undefined || size === index\n ? index\n : Math.min(size, index) | 0;\n}\n\nfunction isNeg(value) {\n // Account for -0 which is negative, but not less than 0.\n return value < 0 || (value === 0 && 1 / value === -Infinity);\n}\n\n// Note: value is unchanged to not break immutable-devtools.\nvar IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n\nfunction isCollection(maybeCollection) {\n return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n}\n\nvar IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n\nfunction isKeyed(maybeKeyed) {\n return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n}\n\nvar IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n\nfunction isIndexed(maybeIndexed) {\n return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n}\n\nfunction isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n}\n\nvar Collection = function Collection(value) {\n return isCollection(value) ? value : Seq(value);\n};\n\nvar KeyedCollection = /*@__PURE__*/(function (Collection) {\n function KeyedCollection(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n if ( Collection ) KeyedCollection.__proto__ = Collection;\n KeyedCollection.prototype = Object.create( Collection && Collection.prototype );\n KeyedCollection.prototype.constructor = KeyedCollection;\n\n return KeyedCollection;\n}(Collection));\n\nvar IndexedCollection = /*@__PURE__*/(function (Collection) {\n function IndexedCollection(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n if ( Collection ) IndexedCollection.__proto__ = Collection;\n IndexedCollection.prototype = Object.create( Collection && Collection.prototype );\n IndexedCollection.prototype.constructor = IndexedCollection;\n\n return IndexedCollection;\n}(Collection));\n\nvar SetCollection = /*@__PURE__*/(function (Collection) {\n function SetCollection(value) {\n return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n if ( Collection ) SetCollection.__proto__ = Collection;\n SetCollection.prototype = Object.create( Collection && Collection.prototype );\n SetCollection.prototype.constructor = SetCollection;\n\n return SetCollection;\n}(Collection));\n\nCollection.Keyed = KeyedCollection;\nCollection.Indexed = IndexedCollection;\nCollection.Set = SetCollection;\n\nvar IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n\nfunction isSeq(maybeSeq) {\n return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n}\n\nvar IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n\nfunction isRecord(maybeRecord) {\n return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n}\n\nfunction isImmutable(maybeImmutable) {\n return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n}\n\nvar IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\n\nfunction isOrdered(maybeOrdered) {\n return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n}\n\nvar ITERATE_KEYS = 0;\nvar ITERATE_VALUES = 1;\nvar ITERATE_ENTRIES = 2;\n\nvar REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nvar ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\nvar Iterator = function Iterator(next) {\n this.next = next;\n};\n\nIterator.prototype.toString = function toString () {\n return '[Iterator]';\n};\n\nIterator.KEYS = ITERATE_KEYS;\nIterator.VALUES = ITERATE_VALUES;\nIterator.ENTRIES = ITERATE_ENTRIES;\n\nIterator.prototype.inspect = Iterator.prototype.toSource = function() {\n return this.toString();\n};\nIterator.prototype[ITERATOR_SYMBOL] = function() {\n return this;\n};\n\nfunction iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult\n ? (iteratorResult.value = value)\n : (iteratorResult = {\n value: value,\n done: false,\n });\n return iteratorResult;\n}\n\nfunction iteratorDone() {\n return { value: undefined, done: true };\n}\n\nfunction hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n}\n\nfunction isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n}\n\nfunction getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n}\n\nfunction getIteratorFn(iterable) {\n var iteratorFn =\n iterable &&\n ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isArrayLike(value) {\n if (Array.isArray(value) || typeof value === 'string') {\n return true;\n }\n\n return (\n value &&\n typeof value === 'object' &&\n Number.isInteger(value.length) &&\n value.length >= 0 &&\n (value.length === 0\n ? // Only {length: 0} is considered Array-like.\n Object.keys(value).length === 1\n : // An object is only Array-like if it has a property where the last value\n // in the array-like may be found (which could be undefined).\n value.hasOwnProperty(value.length - 1))\n );\n}\n\nvar Seq = /*@__PURE__*/(function (Collection$$1) {\n function Seq(value) {\n return value === null || value === undefined\n ? emptySequence()\n : isImmutable(value)\n ? value.toSeq()\n : seqFromValue(value);\n }\n\n if ( Collection$$1 ) Seq.__proto__ = Collection$$1;\n Seq.prototype = Object.create( Collection$$1 && Collection$$1.prototype );\n Seq.prototype.constructor = Seq;\n\n Seq.prototype.toSeq = function toSeq () {\n return this;\n };\n\n Seq.prototype.toString = function toString () {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function cacheResult () {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function __iterate (fn, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n while (i !== size) {\n var entry = cache[reverse ? size - ++i : i++];\n if (fn(entry[1], entry[0], this) === false) {\n break;\n }\n }\n return i;\n }\n return this.__iterateUncached(fn, reverse);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function __iterator (type, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var entry = cache[reverse ? size - ++i : i++];\n return iteratorValue(type, entry[0], entry[1]);\n });\n }\n return this.__iteratorUncached(type, reverse);\n };\n\n return Seq;\n}(Collection));\n\nvar KeyedSeq = /*@__PURE__*/(function (Seq) {\n function KeyedSeq(value) {\n return value === null || value === undefined\n ? emptySequence().toKeyedSeq()\n : isCollection(value)\n ? isKeyed(value)\n ? value.toSeq()\n : value.fromEntrySeq()\n : isRecord(value)\n ? value.toSeq()\n : keyedSeqFromValue(value);\n }\n\n if ( Seq ) KeyedSeq.__proto__ = Seq;\n KeyedSeq.prototype = Object.create( Seq && Seq.prototype );\n KeyedSeq.prototype.constructor = KeyedSeq;\n\n KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {\n return this;\n };\n\n return KeyedSeq;\n}(Seq));\n\nvar IndexedSeq = /*@__PURE__*/(function (Seq) {\n function IndexedSeq(value) {\n return value === null || value === undefined\n ? emptySequence()\n : isCollection(value)\n ? isKeyed(value)\n ? value.entrySeq()\n : value.toIndexedSeq()\n : isRecord(value)\n ? value.toSeq().entrySeq()\n : indexedSeqFromValue(value);\n }\n\n if ( Seq ) IndexedSeq.__proto__ = Seq;\n IndexedSeq.prototype = Object.create( Seq && Seq.prototype );\n IndexedSeq.prototype.constructor = IndexedSeq;\n\n IndexedSeq.of = function of (/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {\n return this;\n };\n\n IndexedSeq.prototype.toString = function toString () {\n return this.__toString('Seq [', ']');\n };\n\n return IndexedSeq;\n}(Seq));\n\nvar SetSeq = /*@__PURE__*/(function (Seq) {\n function SetSeq(value) {\n return (isCollection(value) && !isAssociative(value)\n ? value\n : IndexedSeq(value)\n ).toSetSeq();\n }\n\n if ( Seq ) SetSeq.__proto__ = Seq;\n SetSeq.prototype = Object.create( Seq && Seq.prototype );\n SetSeq.prototype.constructor = SetSeq;\n\n SetSeq.of = function of (/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function toSetSeq () {\n return this;\n };\n\n return SetSeq;\n}(Seq));\n\nSeq.isSeq = isSeq;\nSeq.Keyed = KeyedSeq;\nSeq.Set = SetSeq;\nSeq.Indexed = IndexedSeq;\n\nSeq.prototype[IS_SEQ_SYMBOL] = true;\n\n// #pragma Root Sequences\n\nvar ArraySeq = /*@__PURE__*/(function (IndexedSeq) {\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;\n ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ArraySeq.prototype.constructor = ArraySeq;\n\n ArraySeq.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n while (i !== size) {\n var ii = reverse ? size - ++i : i++;\n if (fn(array[ii], ii, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ArraySeq.prototype.__iterator = function __iterator (type, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var ii = reverse ? size - ++i : i++;\n return iteratorValue(type, ii, array[ii]);\n });\n };\n\n return ArraySeq;\n}(IndexedSeq));\n\nvar ObjectSeq = /*@__PURE__*/(function (KeyedSeq) {\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;\n ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ObjectSeq.prototype.constructor = ObjectSeq;\n\n ObjectSeq.prototype.get = function get (key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function has (key) {\n return hasOwnProperty.call(this._object, key);\n };\n\n ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n while (i !== size) {\n var key = keys[reverse ? size - ++i : i++];\n if (fn(object[key], key, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var key = keys[reverse ? size - ++i : i++];\n return iteratorValue(type, key, object[key]);\n });\n };\n\n return ObjectSeq;\n}(KeyedSeq));\nObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {\n function CollectionSeq(collection) {\n this._collection = collection;\n this.size = collection.length || collection.size;\n }\n\n if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;\n CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n CollectionSeq.prototype.constructor = CollectionSeq;\n\n CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n return CollectionSeq;\n}(IndexedSeq));\n\n// # pragma Helper functions\n\nvar EMPTY_SEQ;\n\nfunction emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n}\n\nfunction keyedSeqFromValue(value) {\n var seq = Array.isArray(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n if (seq) {\n return seq.fromEntrySeq();\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of [k, v] entries, or keyed object: ' +\n value\n );\n}\n\nfunction indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n throw new TypeError(\n 'Expected Array or collection object of values: ' + value\n );\n}\n\nfunction seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of values, or keyed object: ' + value\n );\n}\n\nfunction maybeIndexedSeqFromValue(value) {\n return isArrayLike(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n}\n\nvar IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n\nfunction isMap(maybeMap) {\n return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n}\n\nfunction isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n}\n\nfunction isValueObject(maybeValue) {\n return Boolean(\n maybeValue &&\n typeof maybeValue.equals === 'function' &&\n typeof maybeValue.hashCode === 'function'\n );\n}\n\n/**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\nfunction is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (\n typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function'\n ) {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n return !!(\n isValueObject(valueA) &&\n isValueObject(valueB) &&\n valueA.equals(valueB)\n );\n}\n\nvar imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2\n ? Math.imul\n : function imul(a, b) {\n a |= 0; // int\n b |= 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0)) | 0; // int\n };\n\n// v8 has an optimization for storing 31-bit signed numbers.\n// Values which have either 00 or 11 as the high order bits qualify.\n// This function drops the highest order bit in a signed number, maintaining\n// the sign bit.\nfunction smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff);\n}\n\nvar defaultValueOf = Object.prototype.valueOf;\n\nfunction hash(o) {\n switch (typeof o) {\n case 'boolean':\n // The hash values for built-in constants are a 1 value for each 5-byte\n // shift region expect for the first, which encodes the value. This\n // reduces the odds of a hash collision for these common values.\n return o ? 0x42108421 : 0x42108420;\n case 'number':\n return hashNumber(o);\n case 'string':\n return o.length > STRING_HASH_CACHE_MIN_STRLEN\n ? cachedHashString(o)\n : hashString(o);\n case 'object':\n case 'function':\n if (o === null) {\n return 0x42108422;\n }\n if (typeof o.hashCode === 'function') {\n // Drop any high bits from accidentally long hash codes.\n return smi(o.hashCode(o));\n }\n if (o.valueOf !== defaultValueOf && typeof o.valueOf === 'function') {\n o = o.valueOf(o);\n }\n return hashJSObj(o);\n case 'undefined':\n return 0x42108423;\n default:\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + typeof o + ' cannot be hashed.');\n }\n}\n\n// Compress arbitrarily large numbers into smi hashes.\nfunction hashNumber(n) {\n if (n !== n || n === Infinity) {\n return 0;\n }\n var hash = n | 0;\n if (hash !== n) {\n hash ^= n * 0xffffffff;\n }\n while (n > 0xffffffff) {\n n /= 0xffffffff;\n hash ^= n;\n }\n return smi(hash);\n}\n\nfunction cachedHashString(string) {\n var hashed = stringHashCache[string];\n if (hashed === undefined) {\n hashed = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hashed;\n }\n return hashed;\n}\n\n// http://jsperf.com/hashing-strings\nfunction hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hashed = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hashed = (31 * hashed + string.charCodeAt(ii)) | 0;\n }\n return smi(hashed);\n}\n\nfunction hashJSObj(obj) {\n var hashed;\n if (usingWeakMap) {\n hashed = weakMap.get(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = obj[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n if (!canDefineProperty) {\n hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = getIENodeHash(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hashed);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: hashed,\n });\n } else if (\n obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable\n ) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(\n this,\n arguments\n );\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hashed;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hashed;\n}\n\n// Get references to ES5 object methods.\nvar isExtensible = Object.isExtensible;\n\n// True if Object.defineProperty works as expected. IE8 fails this test.\nvar canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n})();\n\n// IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n// and avoid memory leaks from the IE cloneNode bug.\nfunction getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n}\n\n// If possible, use a WeakMap.\nvar usingWeakMap = typeof WeakMap === 'function';\nvar weakMap;\nif (usingWeakMap) {\n weakMap = new WeakMap();\n}\n\nvar objHashUID = 0;\n\nvar UID_HASH_KEY = '__immutablehash__';\nif (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n}\n\nvar STRING_HASH_CACHE_MIN_STRLEN = 16;\nvar STRING_HASH_CACHE_MAX_SIZE = 255;\nvar STRING_HASH_CACHE_SIZE = 0;\nvar stringHashCache = {};\n\nvar ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq$$1) {\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n if ( KeyedSeq$$1 ) ToKeyedSequence.__proto__ = KeyedSeq$$1;\n ToKeyedSequence.prototype = Object.create( KeyedSeq$$1 && KeyedSeq$$1.prototype );\n ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n ToKeyedSequence.prototype.get = function get (key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function has (key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function valueSeq () {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function reverse () {\n var this$1 = this;\n\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function () { return this$1._iter.toSeq().reverse(); };\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function map (mapper, context) {\n var this$1 = this;\n\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function () { return this$1._iter.toSeq().map(mapper, context); };\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._iter.__iterate(function (v, k) { return fn(v, k, this$1); }, reverse);\n };\n\n ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {\n return this._iter.__iterator(type, reverse);\n };\n\n return ToKeyedSequence;\n}(KeyedSeq));\nToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq$$1) {\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( IndexedSeq$$1 ) ToIndexedSequence.__proto__ = IndexedSeq$$1;\n ToIndexedSequence.prototype = Object.create( IndexedSeq$$1 && IndexedSeq$$1.prototype );\n ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n ToIndexedSequence.prototype.includes = function includes (value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n var i = 0;\n reverse && ensureSize(this);\n return this._iter.__iterate(\n function (v) { return fn(v, reverse ? this$1.size - ++i : i++, this$1); },\n reverse\n );\n };\n\n ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {\n var this$1 = this;\n\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var i = 0;\n reverse && ensureSize(this);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(\n type,\n reverse ? this$1.size - ++i : i++,\n step.value,\n step\n );\n });\n };\n\n return ToIndexedSequence;\n}(IndexedSeq));\n\nvar ToSetSequence = /*@__PURE__*/(function (SetSeq$$1) {\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( SetSeq$$1 ) ToSetSequence.__proto__ = SetSeq$$1;\n ToSetSequence.prototype = Object.create( SetSeq$$1 && SetSeq$$1.prototype );\n ToSetSequence.prototype.constructor = ToSetSequence;\n\n ToSetSequence.prototype.has = function has (key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._iter.__iterate(function (v) { return fn(v, v, this$1); }, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(type, step.value, step.value, step);\n });\n };\n\n return ToSetSequence;\n}(SetSeq));\n\nvar FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq$$1) {\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n if ( KeyedSeq$$1 ) FromEntriesSequence.__proto__ = KeyedSeq$$1;\n FromEntriesSequence.prototype = Object.create( KeyedSeq$$1 && KeyedSeq$$1.prototype );\n FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n FromEntriesSequence.prototype.entrySeq = function entrySeq () {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._iter.__iterate(function (entry) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return fn(\n indexedCollection ? entry.get(1) : entry[1],\n indexedCollection ? entry.get(0) : entry[0],\n this$1\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return iteratorValue(\n type,\n indexedCollection ? entry.get(0) : entry[0],\n indexedCollection ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n return FromEntriesSequence;\n}(KeyedSeq));\n\nToIndexedSequence.prototype.cacheResult = ToKeyedSequence.prototype.cacheResult = ToSetSequence.prototype.cacheResult = FromEntriesSequence.prototype.cacheResult = cacheResultThrough;\n\nfunction flipFactory(collection) {\n var flipSequence = makeSequence(collection);\n flipSequence._iter = collection;\n flipSequence.size = collection.size;\n flipSequence.flip = function () { return collection; };\n flipSequence.reverse = function() {\n var reversedSequence = collection.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function () { return collection.reverse(); };\n return reversedSequence;\n };\n flipSequence.has = function (key) { return collection.includes(key); };\n flipSequence.includes = function (key) { return collection.has(key); };\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n return collection.__iterate(function (v, k) { return fn(k, v, this$1) !== false; }, reverse);\n };\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = collection.__iterator(type, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return collection.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n };\n return flipSequence;\n}\n\nfunction mapFactory(collection, mapper, context) {\n var mappedSequence = makeSequence(collection);\n mappedSequence.size = collection.size;\n mappedSequence.has = function (key) { return collection.has(key); };\n mappedSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v === NOT_SET\n ? notSetValue\n : mapper.call(context, v, key, collection);\n };\n mappedSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n return collection.__iterate(\n function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1) !== false; },\n reverse\n );\n };\n mappedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, collection),\n step\n );\n });\n };\n return mappedSequence;\n}\n\nfunction reverseFactory(collection, useKeys) {\n var this$1 = this;\n\n var reversedSequence = makeSequence(collection);\n reversedSequence._iter = collection;\n reversedSequence.size = collection.size;\n reversedSequence.reverse = function () { return collection; };\n if (collection.flip) {\n reversedSequence.flip = function() {\n var flipSequence = flipFactory(collection);\n flipSequence.reverse = function () { return collection.flip(); };\n return flipSequence;\n };\n }\n reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };\n reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };\n reversedSequence.includes = function (value) { return collection.includes(value); };\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function(fn, reverse) {\n var this$1 = this;\n\n var i = 0;\n reverse && ensureSize(collection);\n return collection.__iterate(\n function (v, k) { return fn(v, useKeys ? k : reverse ? this$1.size - ++i : i++, this$1); },\n !reverse\n );\n };\n reversedSequence.__iterator = function (type, reverse) {\n var i = 0;\n reverse && ensureSize(collection);\n var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n return iteratorValue(\n type,\n useKeys ? entry[0] : reverse ? this$1.size - ++i : i++,\n entry[1],\n step\n );\n });\n };\n return reversedSequence;\n}\n\nfunction filterFactory(collection, predicate, context, useKeys) {\n var filterSequence = makeSequence(collection);\n if (useKeys) {\n filterSequence.has = function (key) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n };\n filterSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, collection)\n ? v\n : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function(type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, collection)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n };\n return filterSequence;\n}\n\nfunction countByFactory(collection, grouper, context) {\n var groups = Map().asMutable();\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });\n });\n return groups.asImmutable();\n}\n\nfunction groupByFactory(collection, grouper, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n collection.__iterate(function (v, k) {\n groups.update(\n grouper.call(context, v, k, collection),\n function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();\n}\n\nfunction sliceFactory(collection, begin, end, useKeys) {\n var originalSize = collection.size;\n\n if (wholeSlice(begin, end, originalSize)) {\n return collection;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this collection's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(collection);\n\n // If collection.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size =\n sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;\n\n if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n sliceSeq.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize\n ? collection.get(index + resolvedBegin, notSetValue)\n : notSetValue;\n };\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return (\n fn(v, useKeys ? k : iterations - 1, this$1) !== false &&\n iterations !== sliceSize\n );\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n if (sliceSize === 0) {\n return new Iterator(iteratorDone);\n }\n var iterator = collection.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function () {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES || step.done) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n }\n return iteratorValue(type, iterations - 1, step.value[1], step);\n });\n };\n\n return sliceSeq;\n}\n\nfunction takeWhileFactory(collection, predicate, context) {\n var takeSequence = makeSequence(collection);\n takeSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n collection.__iterate(\n function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1); }\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function () {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$1)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n}\n\nfunction skipWhileFactory(collection, predicate, context, useKeys) {\n var skipSequence = makeSequence(collection);\n skipSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function () {\n var step;\n var k;\n var v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n }\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$1));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n}\n\nfunction concatFactory(collection, values) {\n var isKeyedCollection = isKeyed(collection);\n var iters = [collection]\n .concat(values)\n .map(function (v) {\n if (!isCollection(v)) {\n v = isKeyedCollection\n ? keyedSeqFromValue(v)\n : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedCollection) {\n v = KeyedCollection(v);\n }\n return v;\n })\n .filter(function (v) { return v.size !== 0; });\n\n if (iters.length === 0) {\n return collection;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (\n singleton === collection ||\n (isKeyedCollection && isKeyed(singleton)) ||\n (isIndexed(collection) && isIndexed(singleton))\n ) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedCollection) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(collection)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(function (sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n }, 0);\n return concatSeq;\n}\n\nfunction flattenFactory(collection, depth, useKeys) {\n var flatSequence = makeSequence(collection);\n flatSequence.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {\n iter.__iterate(function (v, k) {\n if ((!depth || currentDepth < depth) && isCollection(v)) {\n flatDeep(v, currentDepth + 1);\n } else {\n iterations++;\n if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n stopped = true;\n }\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(collection, 0);\n return iterations;\n };\n flatSequence.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function () {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isCollection(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n };\n return flatSequence;\n}\n\nfunction flatMapFactory(collection, mapper, context) {\n var coerce = collectionClass(collection);\n return collection\n .toSeq()\n .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })\n .flatten(true);\n}\n\nfunction interposeFactory(collection, separator) {\n var interposedSequence = makeSequence(collection);\n interposedSequence.size = collection.size && collection.size * 2 - 1;\n interposedSequence.__iterateUncached = function(fn, reverse) {\n var this$1 = this;\n\n var iterations = 0;\n collection.__iterate(\n function (v) { return (!iterations || fn(separator, iterations++, this$1) !== false) &&\n fn(v, iterations++, this$1) !== false; },\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function () {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2\n ? iteratorValue(type, iterations++, separator)\n : iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n}\n\nfunction sortFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedCollection = isKeyed(collection);\n var index = 0;\n var entries = collection\n .toSeq()\n .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })\n .valueSeq()\n .toArray();\n entries.sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; }).forEach(\n isKeyedCollection\n ? function (v, i) {\n entries[i].length = 2;\n }\n : function (v, i) {\n entries[i] = v[1];\n }\n );\n return isKeyedCollection\n ? KeyedSeq(entries)\n : isIndexed(collection)\n ? IndexedSeq(entries)\n : SetSeq(entries);\n}\n\nfunction maxFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = collection\n .toSeq()\n .map(function (v, k) { return [v, mapper(v, k, collection)]; })\n .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });\n return entry && entry[0];\n }\n return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });\n}\n\nfunction maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (\n (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||\n comp > 0\n );\n}\n\nfunction zipWithFactory(keyIter, zipper, iters, zipAll) {\n var zipSequence = makeSequence(keyIter);\n var sizes = new ArraySeq(iters).map(function (i) { return i.size; });\n zipSequence.size = zipAll ? sizes.max() : sizes.min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(\n function (i) { return ((i = Collection(i)), getIterator(reverse ? i.reverse() : i)); }\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function () {\n var steps;\n if (!isDone) {\n steps = iterators.map(function (i) { return i.next(); });\n isDone = zipAll ? steps.every(function (s) { return s.done; }) : steps.some(function (s) { return s.done; });\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function (s) { return s.value; }))\n );\n });\n };\n return zipSequence;\n}\n\n// #pragma Helper Functions\n\nfunction reify(iter, seq) {\n return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n}\n\nfunction validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n}\n\nfunction collectionClass(collection) {\n return isKeyed(collection)\n ? KeyedCollection\n : isIndexed(collection)\n ? IndexedCollection\n : SetCollection;\n}\n\nfunction makeSequence(collection) {\n return Object.create(\n (isKeyed(collection)\n ? KeyedSeq\n : isIndexed(collection)\n ? IndexedSeq\n : SetSeq\n ).prototype\n );\n}\n\nfunction cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n }\n return Seq.prototype.cacheResult.call(this);\n}\n\nfunction defaultComparator(a, b) {\n if (a === undefined && b === undefined) {\n return 0;\n }\n\n if (a === undefined) {\n return 1;\n }\n\n if (b === undefined) {\n return -1;\n }\n\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\n// http://jsperf.com/copy-array-inline\nfunction arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n}\n\nfunction invariant(condition, error) {\n if (!condition) { throw new Error(error); }\n}\n\nfunction assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n}\n\nfunction coerceKeyPath(keyPath) {\n if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n return keyPath;\n }\n if (isOrdered(keyPath)) {\n return keyPath.toArray();\n }\n throw new TypeError(\n 'Invalid keyPath: expected Ordered Collection or Array: ' + keyPath\n );\n}\n\nfunction isPlainObj(value) {\n return (\n value &&\n (typeof value.constructor !== 'function' ||\n value.constructor.name === 'Object')\n );\n}\n\n/**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\nfunction isDataStructure(value) {\n return (\n typeof value === 'object' &&\n (isImmutable(value) || Array.isArray(value) || isPlainObj(value))\n );\n}\n\n/**\n * Converts a value to a string, adding quotes if a string was provided.\n */\nfunction quoteString(value) {\n try {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n } catch (_ignoreError) {\n return JSON.stringify(value);\n }\n}\n\nfunction has(collection, key) {\n return isImmutable(collection)\n ? collection.has(key)\n : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n}\n\nfunction get(collection, key, notSetValue) {\n return isImmutable(collection)\n ? collection.get(key, notSetValue)\n : !has(collection, key)\n ? notSetValue\n : typeof collection.get === 'function'\n ? collection.get(key)\n : collection[key];\n}\n\nfunction shallowCopy(from) {\n if (Array.isArray(from)) {\n return arrCopy(from);\n }\n var to = {};\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n return to;\n}\n\nfunction remove(collection, key) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.remove) {\n throw new TypeError(\n 'Cannot update immutable value without .remove() method: ' + collection\n );\n }\n return collection.remove(key);\n }\n if (!hasOwnProperty.call(collection, key)) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n if (Array.isArray(collectionCopy)) {\n collectionCopy.splice(key, 1);\n } else {\n delete collectionCopy[key];\n }\n return collectionCopy;\n}\n\nfunction set(collection, key, value) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.set) {\n throw new TypeError(\n 'Cannot update immutable value without .set() method: ' + collection\n );\n }\n return collection.set(key, value);\n }\n if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n collectionCopy[key] = value;\n return collectionCopy;\n}\n\nfunction updateIn(collection, keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeeply(\n isImmutable(collection),\n collection,\n coerceKeyPath(keyPath),\n 0,\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? notSetValue : updatedValue;\n}\n\nfunction updateInDeeply(\n inImmutable,\n existing,\n keyPath,\n i,\n notSetValue,\n updater\n) {\n var wasNotSet = existing === NOT_SET;\n if (i === keyPath.length) {\n var existingValue = wasNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n if (!wasNotSet && !isDataStructure(existing)) {\n throw new TypeError(\n 'Cannot update within non-data-structure value in path [' +\n keyPath.slice(0, i).map(quoteString) +\n ']: ' +\n existing\n );\n }\n var key = keyPath[i];\n var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n var nextUpdated = updateInDeeply(\n nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting),\n nextExisting,\n keyPath,\n i + 1,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting\n ? existing\n : nextUpdated === NOT_SET\n ? remove(existing, key)\n : set(\n wasNotSet ? (inImmutable ? emptyMap() : {}) : existing,\n key,\n nextUpdated\n );\n}\n\nfunction setIn(collection, keyPath, value) {\n return updateIn(collection, keyPath, NOT_SET, function () { return value; });\n}\n\nfunction setIn$1(keyPath, v) {\n return setIn(this, keyPath, v);\n}\n\nfunction removeIn(collection, keyPath) {\n return updateIn(collection, keyPath, function () { return NOT_SET; });\n}\n\nfunction deleteIn(keyPath) {\n return removeIn(this, keyPath);\n}\n\nfunction update(collection, key, notSetValue, updater) {\n return updateIn(collection, [key], notSetValue, updater);\n}\n\nfunction update$1(key, notSetValue, updater) {\n return arguments.length === 1\n ? key(this)\n : update(this, key, notSetValue, updater);\n}\n\nfunction updateIn$1(keyPath, notSetValue, updater) {\n return updateIn(this, keyPath, notSetValue, updater);\n}\n\nfunction merge() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeIntoKeyedWith(this, iters);\n}\n\nfunction mergeWith(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n if (typeof merger !== 'function') {\n throw new TypeError('Invalid merger function: ' + merger);\n }\n return mergeIntoKeyedWith(this, iters, merger);\n}\n\nfunction mergeIntoKeyedWith(collection, collections, merger) {\n var iters = [];\n for (var ii = 0; ii < collections.length; ii++) {\n var collection$1 = KeyedCollection(collections[ii]);\n if (collection$1.size !== 0) {\n iters.push(collection$1);\n }\n }\n if (iters.length === 0) {\n return collection;\n }\n if (\n collection.toSeq().size === 0 &&\n !collection.__ownerID &&\n iters.length === 1\n ) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function (collection) {\n var mergeIntoCollection = merger\n ? function (value, key) {\n update(\n collection,\n key,\n NOT_SET,\n function (oldVal) { return (oldVal === NOT_SET ? value : merger(oldVal, value, key)); }\n );\n }\n : function (value, key) {\n collection.set(key, value);\n };\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoCollection);\n }\n });\n}\n\nfunction merge$1(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeWithSources(collection, sources);\n}\n\nfunction mergeWith$1(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeWithSources(collection, sources, merger);\n}\n\nfunction mergeDeep(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(collection, sources);\n}\n\nfunction mergeDeepWith(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeDeepWithSources(collection, sources, merger);\n}\n\nfunction mergeDeepWithSources(collection, sources, merger) {\n return mergeWithSources(collection, sources, deepMergerWith(merger));\n}\n\nfunction mergeWithSources(collection, sources, merger) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot merge into non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n return typeof merger === 'function' && collection.mergeWith\n ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))\n : collection.merge\n ? collection.merge.apply(collection, sources)\n : collection.concat.apply(collection, sources);\n }\n var isArray = Array.isArray(collection);\n var merged = collection;\n var Collection$$1 = isArray ? IndexedCollection : KeyedCollection;\n var mergeItem = isArray\n ? function (value) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged.push(value);\n }\n : function (value, key) {\n var hasVal = hasOwnProperty.call(merged, key);\n var nextVal =\n hasVal && merger ? merger(merged[key], value, key) : value;\n if (!hasVal || nextVal !== merged[key]) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged[key] = nextVal;\n }\n };\n for (var i = 0; i < sources.length; i++) {\n Collection$$1(sources[i]).forEach(mergeItem);\n }\n return merged;\n}\n\nfunction deepMergerWith(merger) {\n function deepMerger(oldValue, newValue, key) {\n return isDataStructure(oldValue) && isDataStructure(newValue)\n ? mergeWithSources(oldValue, [newValue], deepMerger)\n : merger\n ? merger(oldValue, newValue, key)\n : newValue;\n }\n return deepMerger;\n}\n\nfunction mergeDeep$1() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeDeepWithSources(this, iters);\n}\n\nfunction mergeDeepWith$1(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(this, iters, merger);\n}\n\nfunction mergeIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });\n}\n\nfunction mergeDeepIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }\n );\n}\n\nfunction withMutations(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n}\n\nfunction asMutable() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n}\n\nfunction asImmutable() {\n return this.__ensureOwner();\n}\n\nfunction wasAltered() {\n return this.__altered;\n}\n\nvar Map = /*@__PURE__*/(function (KeyedCollection$$1) {\n function Map(value) {\n return value === null || value === undefined\n ? emptyMap()\n : isMap(value) && !isOrdered(value)\n ? value\n : emptyMap().withMutations(function (map) {\n var iter = KeyedCollection$$1(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( KeyedCollection$$1 ) Map.__proto__ = KeyedCollection$$1;\n Map.prototype = Object.create( KeyedCollection$$1 && KeyedCollection$$1.prototype );\n Map.prototype.constructor = Map;\n\n Map.of = function of () {\n var keyValues = [], len = arguments.length;\n while ( len-- ) keyValues[ len ] = arguments[ len ];\n\n return emptyMap().withMutations(function (map) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function toString () {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function get (k, notSetValue) {\n return this._root\n ? this._root.get(0, undefined, k, notSetValue)\n : notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function set (k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.remove = function remove (k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteAll = function deleteAll (keys) {\n var collection = Collection(keys);\n\n if (collection.size === 0) {\n return this;\n }\n\n return this.withMutations(function (map) {\n collection.forEach(function (key) { return map.remove(key); });\n });\n };\n\n Map.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n Map.prototype.map = function map (mapper, context) {\n return this.withMutations(function (map) {\n map.forEach(function (value, key) {\n map.set(key, mapper.call(context, value, key, map));\n });\n });\n };\n\n // @pragma Mutability\n\n Map.prototype.__iterator = function __iterator (type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n var iterations = 0;\n this._root &&\n this._root.iterate(function (entry) {\n iterations++;\n return fn(entry[1], entry[0], this$1);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n return Map;\n}(KeyedCollection));\n\nMap.isMap = isMap;\n\nvar MapPrototype = Map.prototype;\nMapPrototype[IS_MAP_SYMBOL] = true;\nMapPrototype[DELETE] = MapPrototype.remove;\nMapPrototype.removeAll = MapPrototype.deleteAll;\nMapPrototype.setIn = setIn$1;\nMapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\nMapPrototype.update = update$1;\nMapPrototype.updateIn = updateIn$1;\nMapPrototype.merge = MapPrototype.concat = merge;\nMapPrototype.mergeWith = mergeWith;\nMapPrototype.mergeDeep = mergeDeep$1;\nMapPrototype.mergeDeepWith = mergeDeepWith$1;\nMapPrototype.mergeIn = mergeIn;\nMapPrototype.mergeDeepIn = mergeDeepIn;\nMapPrototype.withMutations = withMutations;\nMapPrototype.wasAltered = wasAltered;\nMapPrototype.asImmutable = asImmutable;\nMapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\nMapPrototype['@@transducer/step'] = function(result, arr) {\n return result.set(arr[0], arr[1]);\n};\nMapPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\n};\n\n// #pragma Trie Nodes\n\nvar ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n};\n\nArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n};\n\nvar BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n};\n\nBitmapIndexedNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0\n ? notSetValue\n : this.nodes[popCount(bitmap & (bit - 1))].get(\n shift + SHIFT,\n keyHash,\n key,\n notSetValue\n );\n};\n\nBitmapIndexedNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (\n exists &&\n !newNode &&\n nodes.length === 2 &&\n isLeafNode(nodes[idx ^ 1])\n ) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? (newNode ? bitmap : bitmap ^ bit) : bitmap | bit;\n var newNodes = exists\n ? newNode\n ? setAt(nodes, idx, newNode, isEditable)\n : spliceOut(nodes, idx, isEditable)\n : spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n};\n\nvar HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n};\n\nHashArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node\n ? node.get(shift + SHIFT, keyHash, key, notSetValue)\n : notSetValue;\n};\n\nHashArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setAt(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n};\n\nvar HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n};\n\nHashCollisionNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nHashCollisionNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n};\n\nvar ValueNode = function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n};\n\nValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n};\n\nValueNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n};\n\n// #pragma Iterators\n\nArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate = function(\n fn,\n reverse\n) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n};\n\nBitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate = function(\n fn,\n reverse\n) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n};\n\n// eslint-disable-next-line no-unused-vars\nValueNode.prototype.iterate = function(fn, reverse) {\n return fn(this.entry);\n};\n\nvar MapIterator = /*@__PURE__*/(function (Iterator$$1) {\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n if ( Iterator$$1 ) MapIterator.__proto__ = Iterator$$1;\n MapIterator.prototype = Object.create( Iterator$$1 && Iterator$$1.prototype );\n MapIterator.prototype.constructor = MapIterator;\n\n MapIterator.prototype.next = function next () {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex = (void 0);\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(\n type,\n node.entries[this._reverse ? maxIndex - index : index]\n );\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n return MapIterator;\n}(Iterator));\n\nfunction mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n}\n\nfunction mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev,\n };\n}\n\nfunction makeMap(size, root, ownerID, hash$$1) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash$$1;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_MAP;\nfunction emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n}\n\nfunction updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef();\n var didAlter = MakeRef();\n newRoot = updateNode(\n map._root,\n map.__ownerID,\n 0,\n undefined,\n k,\n v,\n didChangeSize,\n didAlter\n );\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n}\n\nfunction updateNode(\n node,\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n}\n\nfunction isLeafNode(node) {\n return (\n node.constructor === ValueNode || node.constructor === HashCollisionNode\n );\n}\n\nfunction mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes =\n idx1 === idx2\n ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]\n : ((newNode = new ValueNode(ownerID, keyHash, entry)),\n idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n}\n\nfunction createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n}\n\nfunction packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n}\n\nfunction expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n}\n\nfunction popCount(x) {\n x -= (x >> 1) & 0x55555555;\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n}\n\nfunction setAt(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n}\n\nfunction spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n}\n\nfunction spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n}\n\nvar MAX_ARRAY_MAP_SIZE = SIZE / 4;\nvar MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\nvar MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\nvar IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n\nfunction isList(maybeList) {\n return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n}\n\nvar List = /*@__PURE__*/(function (IndexedCollection$$1) {\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedCollection$$1(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function (list) {\n list.setSize(size);\n iter.forEach(function (v, i) { return list.set(i, v); });\n });\n }\n\n if ( IndexedCollection$$1 ) List.__proto__ = IndexedCollection$$1;\n List.prototype = Object.create( IndexedCollection$$1 && IndexedCollection$$1.prototype );\n List.prototype.constructor = List;\n\n List.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function toString () {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function get (index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function set (index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function remove (index) {\n return !this.has(index)\n ? this\n : index === 0\n ? this.shift()\n : index === this.size - 1\n ? this.pop()\n : this.splice(index, 1);\n };\n\n List.prototype.insert = function insert (index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function push (/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function (list) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function pop () {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function unshift (/*...values*/) {\n var values = arguments;\n return this.withMutations(function (list) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function shift () {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.concat = function concat (/*...collections*/) {\n var arguments$1 = arguments;\n\n var seqs = [];\n for (var i = 0; i < arguments.length; i++) {\n var argument = arguments$1[i];\n var seq = IndexedCollection$$1(\n typeof argument !== 'string' && hasIterator(argument)\n ? argument\n : [argument]\n );\n if (seq.size !== 0) {\n seqs.push(seq);\n }\n }\n if (seqs.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n return this.constructor(seqs[0]);\n }\n return this.withMutations(function (list) {\n seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });\n });\n };\n\n List.prototype.setSize = function setSize (size) {\n return setListBounds(this, 0, size);\n };\n\n List.prototype.map = function map (mapper, context) {\n var this$1 = this;\n\n return this.withMutations(function (list) {\n for (var i = 0; i < this$1.size; i++) {\n list.set(i, mapper.call(context, list.get(i), i, list));\n }\n });\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function slice (begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function __iterator (type, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n return new Iterator(function () {\n var value = values();\n return value === DONE\n ? iteratorDone()\n : iteratorValue(type, reverse ? --index : index++, value);\n });\n };\n\n List.prototype.__iterate = function __iterate (fn, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, reverse ? --index : index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyList();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeList(\n this._origin,\n this._capacity,\n this._level,\n this._root,\n this._tail,\n ownerID,\n this.__hash\n );\n };\n\n return List;\n}(IndexedCollection));\n\nList.isList = isList;\n\nvar ListPrototype = List.prototype;\nListPrototype[IS_LIST_SYMBOL] = true;\nListPrototype[DELETE] = ListPrototype.remove;\nListPrototype.merge = ListPrototype.concat;\nListPrototype.setIn = setIn$1;\nListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\nListPrototype.update = update$1;\nListPrototype.updateIn = updateIn$1;\nListPrototype.mergeIn = mergeIn;\nListPrototype.mergeDeepIn = mergeDeepIn;\nListPrototype.withMutations = withMutations;\nListPrototype.wasAltered = wasAltered;\nListPrototype.asImmutable = asImmutable;\nListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\nListPrototype['@@transducer/step'] = function(result, arr) {\n return result.push(arr);\n};\nListPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\n};\n\nvar VNode = function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n};\n\n// TODO: seems like these methods are very similar\n\nVNode.prototype.removeBefore = function removeBefore (ownerID, level, index) {\n if (index === level ? 1 << level : this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild =\n oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n};\n\nVNode.prototype.removeAfter = function removeAfter (ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild =\n oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n};\n\nvar DONE = {};\n\nfunction iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0\n ? iterateLeaf(node, offset)\n : iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n while (true) {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx],\n level - SHIFT,\n offset + (idx << level)\n );\n }\n };\n }\n}\n\nfunction makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n}\n\nvar EMPTY_LIST;\nfunction emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n}\n\nfunction updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function (list) {\n index < 0\n ? setListBounds(list, index).set(0, value)\n : setListBounds(list, 0, index + 1).set(index, value);\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef();\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(\n newRoot,\n list.__ownerID,\n list._level,\n index,\n value,\n didAlter\n );\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n}\n\nfunction updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(\n lowerNode,\n ownerID,\n level - SHIFT,\n index,\n value,\n didAlter\n );\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n if (didAlter) {\n SetRef(didAlter);\n }\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n}\n\nfunction editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n}\n\nfunction listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n}\n\nfunction setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin |= 0;\n }\n if (end !== undefined) {\n end |= 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity =\n end === undefined\n ? oldCapacity\n : end < 0\n ? oldCapacity + end\n : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [undefined, newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail =\n newTailOffset < oldTailOffset\n ? listNodeFor(list, newCapacity - 1)\n : newTailOffset > oldTailOffset\n ? new VNode([], owner)\n : oldTail;\n\n // Merge Tail into tree.\n if (\n oldTail &&\n newTailOffset > oldTailOffset &&\n newOrigin < oldCapacity &&\n oldTail.array.length\n ) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if ((beginIndex !== newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(\n owner,\n newLevel,\n newTailOffset - offsetShift\n );\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n}\n\nfunction getTailOffset(size) {\n return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;\n}\n\nvar OrderedMap = /*@__PURE__*/(function (Map$$1) {\n function OrderedMap(value) {\n return value === null || value === undefined\n ? emptyOrderedMap()\n : isOrderedMap(value)\n ? value\n : emptyOrderedMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( Map$$1 ) OrderedMap.__proto__ = Map$$1;\n OrderedMap.prototype = Object.create( Map$$1 && Map$$1.prototype );\n OrderedMap.prototype.constructor = OrderedMap;\n\n OrderedMap.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function toString () {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function get (k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function set (k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function remove (k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._list.__iterate(\n function (entry) { return entry && fn(entry[1], entry[0], this$1); },\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function __iterator (type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return emptyOrderedMap();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n return OrderedMap;\n}(Map));\n\nOrderedMap.isOrderedMap = isOrderedMap;\n\nOrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\nOrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\nfunction makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n}\n\nvar EMPTY_ORDERED_MAP;\nfunction emptyOrderedMap() {\n return (\n EMPTY_ORDERED_MAP ||\n (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))\n );\n}\n\nfunction updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) {\n // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function (entry, idx) { return entry !== undefined && i !== idx; });\n newMap = newList\n .toKeyedSeq()\n .map(function (entry) { return entry[0]; })\n .flip()\n .toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n}\n\nvar IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n\nfunction isStack(maybeStack) {\n return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n}\n\nvar Stack = /*@__PURE__*/(function (IndexedCollection$$1) {\n function Stack(value) {\n return value === null || value === undefined\n ? emptyStack()\n : isStack(value)\n ? value\n : emptyStack().pushAll(value);\n }\n\n if ( IndexedCollection$$1 ) Stack.__proto__ = IndexedCollection$$1;\n Stack.prototype = Object.create( IndexedCollection$$1 && IndexedCollection$$1.prototype );\n Stack.prototype.constructor = Stack;\n\n Stack.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function toString () {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function get (index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function peek () {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function push (/*...values*/) {\n var arguments$1 = arguments;\n\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments$1[ii],\n next: head,\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function pushAll (iter) {\n iter = IndexedCollection$$1(iter);\n if (iter.size === 0) {\n return this;\n }\n if (this.size === 0 && isStack(iter)) {\n return iter;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.__iterate(function (value) {\n newSize++;\n head = {\n value: value,\n next: head,\n };\n }, /* reverse */ true);\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function pop () {\n return this.slice(1);\n };\n\n Stack.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection$$1.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyStack();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterate(\n function (v, k) { return fn(v, k, this$1); },\n reverse\n );\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function __iterator (type, reverse) {\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterator(type, reverse);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function () {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n return Stack;\n}(IndexedCollection));\n\nStack.isStack = isStack;\n\nvar StackPrototype = Stack.prototype;\nStackPrototype[IS_STACK_SYMBOL] = true;\nStackPrototype.shift = StackPrototype.pop;\nStackPrototype.unshift = StackPrototype.push;\nStackPrototype.unshiftAll = StackPrototype.pushAll;\nStackPrototype.withMutations = withMutations;\nStackPrototype.wasAltered = wasAltered;\nStackPrototype.asImmutable = asImmutable;\nStackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\nStackPrototype['@@transducer/step'] = function(result, arr) {\n return result.unshift(arr);\n};\nStackPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\n};\n\nfunction makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_STACK;\nfunction emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n}\n\nvar IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n\nfunction isSet(maybeSet) {\n return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n}\n\nfunction isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n}\n\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isCollection(b) ||\n (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||\n (a.__hash !== undefined &&\n b.__hash !== undefined &&\n a.__hash !== b.__hash) ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return (\n b.every(function (v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done\n );\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function (v, k) {\n if (\n notAssociative\n ? !a.has(v)\n : flipped\n ? !is(v, a.get(k, NOT_SET))\n : !is(a.get(k, NOT_SET), v)\n ) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n}\n\n/**\n * Contributes additional methods to a constructor\n */\nfunction mixin(ctor, methods) {\n var keyCopier = function (key) {\n ctor.prototype[key] = methods[key];\n };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n}\n\nfunction toJS(value) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n if (!isCollection(value)) {\n if (!isDataStructure(value)) {\n return value;\n }\n value = Seq(value);\n }\n if (isKeyed(value)) {\n var result$1 = {};\n value.__iterate(function (v, k) {\n result$1[k] = toJS(v);\n });\n return result$1;\n }\n var result = [];\n value.__iterate(function (v) {\n result.push(toJS(v));\n });\n return result;\n}\n\nvar Set = /*@__PURE__*/(function (SetCollection$$1) {\n function Set(value) {\n return value === null || value === undefined\n ? emptySet()\n : isSet(value) && !isOrdered(value)\n ? value\n : emptySet().withMutations(function (set) {\n var iter = SetCollection$$1(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( SetCollection$$1 ) Set.__proto__ = SetCollection$$1;\n Set.prototype = Object.create( SetCollection$$1 && SetCollection$$1.prototype );\n Set.prototype.constructor = Set;\n\n Set.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n Set.intersect = function intersect (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.intersect.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.union = function union (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.union.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.prototype.toString = function toString () {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function has (value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function add (value) {\n return updateSet(this, this._map.set(value, value));\n };\n\n Set.prototype.remove = function remove (value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function clear () {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.map = function map (mapper, context) {\n var this$1 = this;\n\n var removes = [];\n var adds = [];\n this.forEach(function (value) {\n var mapped = mapper.call(context, value, value, this$1);\n if (mapped !== value) {\n removes.push(value);\n adds.push(mapped);\n }\n });\n return this.withMutations(function (set) {\n removes.forEach(function (value) { return set.remove(value); });\n adds.forEach(function (value) { return set.add(value); });\n });\n };\n\n Set.prototype.union = function union () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n iters = iters.filter(function (x) { return x.size !== 0; });\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function (set) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetCollection$$1(iters[ii]).forEach(function (value) { return set.add(value); });\n }\n });\n };\n\n Set.prototype.intersect = function intersect () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection$$1(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (!iters.every(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.subtract = function subtract () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection$$1(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (iters.some(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1 = this;\n\n return this._map.__iterate(function (k) { return fn(k, k, this$1); }, reverse);\n };\n\n Set.prototype.__iterator = function __iterator (type, reverse) {\n return this._map.__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return this.__empty();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n return Set;\n}(SetCollection));\n\nSet.isSet = isSet;\n\nvar SetPrototype = Set.prototype;\nSetPrototype[IS_SET_SYMBOL] = true;\nSetPrototype[DELETE] = SetPrototype.remove;\nSetPrototype.merge = SetPrototype.concat = SetPrototype.union;\nSetPrototype.withMutations = withMutations;\nSetPrototype.asImmutable = asImmutable;\nSetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\nSetPrototype['@@transducer/step'] = function(result, arr) {\n return result.add(arr);\n};\nSetPrototype['@@transducer/result'] = function(obj) {\n return obj.asImmutable();\n};\n\nSetPrototype.__empty = emptySet;\nSetPrototype.__make = makeSet;\n\nfunction updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map\n ? set\n : newMap.size === 0\n ? set.__empty()\n : set.__make(newMap);\n}\n\nfunction makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_SET;\nfunction emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n}\n\n/**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\nvar Range = /*@__PURE__*/(function (IndexedSeq$$1) {\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n if ( IndexedSeq$$1 ) Range.__proto__ = IndexedSeq$$1;\n Range.prototype = Object.create( IndexedSeq$$1 && IndexedSeq$$1.prototype );\n Range.prototype.constructor = Range;\n\n Range.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Range []';\n }\n return (\n 'Range [ ' +\n this._start +\n '...' +\n this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]'\n );\n };\n\n Range.prototype.get = function get (index, notSetValue) {\n return this.has(index)\n ? this._start + wrapIndex(this, index) * this._step\n : notSetValue;\n };\n\n Range.prototype.includes = function includes (searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return (\n possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex)\n );\n };\n\n Range.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(\n this.get(begin, this._end),\n this.get(end, this._end),\n this._step\n );\n };\n\n Range.prototype.indexOf = function indexOf (searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index;\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n while (i !== size) {\n if (fn(value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n value += reverse ? -step : step;\n }\n return i;\n };\n\n Range.prototype.__iterator = function __iterator (type, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var v = value;\n value += reverse ? -step : step;\n return iteratorValue(type, reverse ? size - ++i : i++, v);\n });\n };\n\n Range.prototype.equals = function equals (other) {\n return other instanceof Range\n ? this._start === other._start &&\n this._end === other._end &&\n this._step === other._step\n : deepEqual(this, other);\n };\n\n return Range;\n}(IndexedSeq));\n\nvar EMPTY_RANGE;\n\nfunction getIn(collection, searchKeyPath, notSetValue) {\n var keyPath = coerceKeyPath(searchKeyPath);\n var i = 0;\n while (i !== keyPath.length) {\n collection = get(collection, keyPath[i++], NOT_SET);\n if (collection === NOT_SET) {\n return notSetValue;\n }\n }\n return collection;\n}\n\nfunction getIn$1(searchKeyPath, notSetValue) {\n return getIn(this, searchKeyPath, notSetValue);\n}\n\nfunction hasIn(collection, keyPath) {\n return getIn(collection, keyPath, NOT_SET) !== NOT_SET;\n}\n\nfunction hasIn$1(searchKeyPath) {\n return hasIn(this, searchKeyPath);\n}\n\nfunction toObject() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function (v, k) {\n object[k] = v;\n });\n return object;\n}\n\n// Note: all of these methods are deprecated.\nCollection.isIterable = isCollection;\nCollection.isKeyed = isKeyed;\nCollection.isIndexed = isIndexed;\nCollection.isAssociative = isAssociative;\nCollection.isOrdered = isOrdered;\n\nCollection.Iterator = Iterator;\n\nmixin(Collection, {\n // ### Conversion to other types\n\n toArray: function toArray() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n var useTuples = isKeyed(this);\n var i = 0;\n this.__iterate(function (v, k) {\n // Keyed collections produce an array of tuples.\n array[i++] = useTuples ? [k, v] : v;\n });\n return array;\n },\n\n toIndexedSeq: function toIndexedSeq() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function toJS$1() {\n return toJS(this);\n },\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function toMap() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: toObject,\n\n toOrderedMap: function toOrderedMap() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function toOrderedSet() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function toSet() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function toSetSeq() {\n return new ToSetSequence(this);\n },\n\n toSeq: function toSeq() {\n return isIndexed(this)\n ? this.toIndexedSeq()\n : isKeyed(this)\n ? this.toKeyedSeq()\n : this.toSetSeq();\n },\n\n toStack: function toStack() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function toList() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n // ### Common JavaScript methods and properties\n\n toString: function toString() {\n return '[Collection]';\n },\n\n __toString: function __toString(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return (\n head +\n ' ' +\n this.toSeq()\n .map(this.__toStringMapper)\n .join(', ') +\n ' ' +\n tail\n );\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function concat() {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return reify(this, concatFactory(this, values));\n },\n\n includes: function includes(searchValue) {\n return this.some(function (value) { return is(value, searchValue); });\n },\n\n entries: function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function every(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function (v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function find(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function forEach(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function join(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function (v) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function keys() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function map(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function reduce$1(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n false\n );\n },\n\n reduceRight: function reduceRight(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n true\n );\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function some(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function sort(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function values() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n // ### More sequential methods\n\n butLast: function butLast() {\n return this.slice(0, -1);\n },\n\n isEmpty: function isEmpty() {\n return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });\n },\n\n count: function count(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function countBy(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function equals(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function entrySeq() {\n var collection = this;\n if (collection._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(collection._cache);\n }\n var entriesSequence = collection\n .toSeq()\n .map(entryMapper)\n .toIndexedSeq();\n entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };\n return entriesSequence;\n },\n\n filterNot: function filterNot(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function findEntry(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function findKey(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function findLast(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .find(predicate, context, notSetValue);\n },\n\n findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function findLastKey(predicate, context) {\n return this.toKeyedSeq()\n .reverse()\n .findKey(predicate, context);\n },\n\n first: function first(notSetValue) {\n return this.find(returnTrue, null, notSetValue);\n },\n\n flatMap: function flatMap(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function fromEntrySeq() {\n return new FromEntriesSequence(this);\n },\n\n get: function get(searchKey, notSetValue) {\n return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);\n },\n\n getIn: getIn$1,\n\n groupBy: function groupBy(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function has(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: hasIn$1,\n\n isSubset: function isSubset(iter) {\n iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n return this.every(function (value) { return iter.includes(value); });\n },\n\n isSuperset: function isSuperset(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function keyOf(searchValue) {\n return this.findKey(function (value) { return is(value, searchValue); });\n },\n\n keySeq: function keySeq() {\n return this.toSeq()\n .map(keyMapper)\n .toIndexedSeq();\n },\n\n last: function last(notSetValue) {\n return this.toSeq()\n .reverse()\n .first(notSetValue);\n },\n\n lastKeyOf: function lastKeyOf(searchValue) {\n return this.toKeyedSeq()\n .reverse()\n .keyOf(searchValue);\n },\n\n max: function max(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function maxBy(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function min(comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator\n );\n },\n\n minBy: function minBy(mapper, comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator,\n mapper\n );\n },\n\n rest: function rest() {\n return this.slice(1);\n },\n\n skip: function skip(amount) {\n return amount === 0 ? this : this.slice(Math.max(0, amount));\n },\n\n skipLast: function skipLast(amount) {\n return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function skipUntil(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function sortBy(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function take(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function takeLast(amount) {\n return this.slice(-Math.max(0, amount));\n },\n\n takeWhile: function takeWhile(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function takeUntil(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n update: function update(fn) {\n return fn(this);\n },\n\n valueSeq: function valueSeq() {\n return this.toIndexedSeq();\n },\n\n // ### Hashable Object\n\n hashCode: function hashCode() {\n return this.__hash || (this.__hash = hashCollection(this));\n },\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n});\n\nvar CollectionPrototype = Collection.prototype;\nCollectionPrototype[IS_COLLECTION_SYMBOL] = true;\nCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\nCollectionPrototype.toJSON = CollectionPrototype.toArray;\nCollectionPrototype.__toStringMapper = quoteString;\nCollectionPrototype.inspect = CollectionPrototype.toSource = function() {\n return this.toString();\n};\nCollectionPrototype.chain = CollectionPrototype.flatMap;\nCollectionPrototype.contains = CollectionPrototype.includes;\n\nmixin(KeyedCollection, {\n // ### More sequential methods\n\n flip: function flip() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function mapEntries(mapper, context) {\n var this$1 = this;\n\n var iterations = 0;\n return reify(\n this,\n this.toSeq()\n .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1); })\n .fromEntrySeq()\n );\n },\n\n mapKeys: function mapKeys(mapper, context) {\n var this$1 = this;\n\n return reify(\n this,\n this.toSeq()\n .flip()\n .map(function (k, v) { return mapper.call(context, k, v, this$1); })\n .flip()\n );\n },\n});\n\nvar KeyedCollectionPrototype = KeyedCollection.prototype;\nKeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\nKeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\nKeyedCollectionPrototype.toJSON = toObject;\nKeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };\n\nmixin(IndexedCollection, {\n // ### Conversion to other types\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, false);\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function findIndex(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function indexOf(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function lastIndexOf(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function splice(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum || 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1\n ? spliced\n : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n // ### More collection methods\n\n findLastIndex: function findLastIndex(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function first(notSetValue) {\n return this.get(0, notSetValue);\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function get(index, notSetValue) {\n index = wrapIndex(this, index);\n return index < 0 ||\n (this.size === Infinity || (this.size !== undefined && index > this.size))\n ? notSetValue\n : this.find(function (_, key) { return key === index; }, undefined, notSetValue);\n },\n\n has: function has(index) {\n index = wrapIndex(this, index);\n return (\n index >= 0 &&\n (this.size !== undefined\n ? this.size === Infinity || index < this.size\n : this.indexOf(index) !== -1)\n );\n },\n\n interpose: function interpose(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function interleave(/*...collections*/) {\n var collections = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * collections.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function keySeq() {\n return Range(0, this.size);\n },\n\n last: function last(notSetValue) {\n return this.get(-1, notSetValue);\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function zip(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections));\n },\n\n zipAll: function zipAll(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n },\n\n zipWith: function zipWith(zipper /*, ...collections */) {\n var collections = arrCopy(arguments);\n collections[0] = this;\n return reify(this, zipWithFactory(this, zipper, collections));\n },\n});\n\nvar IndexedCollectionPrototype = IndexedCollection.prototype;\nIndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\nIndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\n\nmixin(SetCollection, {\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function get(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function includes(value) {\n return this.has(value);\n },\n\n // ### More sequential methods\n\n keySeq: function keySeq() {\n return this.valueSeq();\n },\n});\n\nSetCollection.prototype.has = CollectionPrototype.includes;\nSetCollection.prototype.contains = SetCollection.prototype.includes;\n\n// Mixin subclasses\n\nmixin(KeyedSeq, KeyedCollection.prototype);\nmixin(IndexedSeq, IndexedCollection.prototype);\nmixin(SetSeq, SetCollection.prototype);\n\n// #pragma Helper functions\n\nfunction reduce(collection, reducer, reduction, context, useFirst, reverse) {\n assertNotInfinite(collection.size);\n collection.__iterate(function (v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n }, reverse);\n return reduction;\n}\n\nfunction keyMapper(v, k) {\n return k;\n}\n\nfunction entryMapper(v, k) {\n return [k, v];\n}\n\nfunction not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n\nfunction neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n };\n}\n\nfunction defaultZipper() {\n return arrCopy(arguments);\n}\n\nfunction defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n}\n\nfunction hashCollection(collection) {\n if (collection.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(collection);\n var keyed = isKeyed(collection);\n var h = ordered ? 1 : 0;\n var size = collection.__iterate(\n keyed\n ? ordered\n ? function (v, k) {\n h = (31 * h + hashMerge(hash(v), hash(k))) | 0;\n }\n : function (v, k) {\n h = (h + hashMerge(hash(v), hash(k))) | 0;\n }\n : ordered\n ? function (v) {\n h = (31 * h + hash(v)) | 0;\n }\n : function (v) {\n h = (h + hash(v)) | 0;\n }\n );\n return murmurHashOfSize(size, h);\n}\n\nfunction murmurHashOfSize(size, h) {\n h = imul(h, 0xcc9e2d51);\n h = imul((h << 15) | (h >>> -15), 0x1b873593);\n h = imul((h << 13) | (h >>> -13), 5);\n h = ((h + 0xe6546b64) | 0) ^ size;\n h = imul(h ^ (h >>> 16), 0x85ebca6b);\n h = imul(h ^ (h >>> 13), 0xc2b2ae35);\n h = smi(h ^ (h >>> 16));\n return h;\n}\n\nfunction hashMerge(a, b) {\n return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; // int\n}\n\nvar OrderedSet = /*@__PURE__*/(function (Set$$1) {\n function OrderedSet(value) {\n return value === null || value === undefined\n ? emptyOrderedSet()\n : isOrderedSet(value)\n ? value\n : emptyOrderedSet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( Set$$1 ) OrderedSet.__proto__ = Set$$1;\n OrderedSet.prototype = Object.create( Set$$1 && Set$$1.prototype );\n OrderedSet.prototype.constructor = OrderedSet;\n\n OrderedSet.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function toString () {\n return this.__toString('OrderedSet {', '}');\n };\n\n return OrderedSet;\n}(Set));\n\nOrderedSet.isOrderedSet = isOrderedSet;\n\nvar OrderedSetPrototype = OrderedSet.prototype;\nOrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\nOrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\nOrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\n\nOrderedSetPrototype.__empty = emptyOrderedSet;\nOrderedSetPrototype.__make = makeOrderedSet;\n\nfunction makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_ORDERED_SET;\nfunction emptyOrderedSet() {\n return (\n EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))\n );\n}\n\nvar Record = function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n var this$1 = this;\n\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n var indices = (RecordTypePrototype._indices = {});\n // Deprecated: left to attempt not to break any external code which\n // relies on a ._name property existing on record instances.\n // Use Record.getDescriptiveName() instead\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n for (var i = 0; i < keys.length; i++) {\n var propName = keys[i];\n indices[propName] = i;\n if (RecordTypePrototype[propName]) {\n /* eslint-disable no-console */\n typeof console === 'object' &&\n console.warn &&\n console.warn(\n 'Cannot define ' +\n recordName(this) +\n ' with property \"' +\n propName +\n '\" since that property name is part of the Record API.'\n );\n /* eslint-enable no-console */\n } else {\n setProp(RecordTypePrototype, propName);\n }\n }\n }\n this.__ownerID = undefined;\n this._values = List().withMutations(function (l) {\n l.setSize(this$1._keys.length);\n KeyedCollection(values).forEach(function (v, k) {\n l.set(this$1._indices[k], v === this$1._defaultValues[k] ? undefined : v);\n });\n });\n };\n\n var RecordTypePrototype = (RecordType.prototype = Object.create(\n RecordPrototype\n ));\n RecordTypePrototype.constructor = RecordType;\n\n if (name) {\n RecordType.displayName = name;\n }\n\n return RecordType;\n};\n\nRecord.prototype.toString = function toString () {\n var str = recordName(this) + ' { ';\n var keys = this._keys;\n var k;\n for (var i = 0, l = keys.length; i !== l; i++) {\n k = keys[i];\n str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n }\n return str + ' }';\n};\n\nRecord.prototype.equals = function equals (other) {\n return (\n this === other ||\n (other &&\n this._keys === other._keys &&\n recordSeq(this).equals(recordSeq(other)))\n );\n};\n\nRecord.prototype.hashCode = function hashCode () {\n return recordSeq(this).hashCode();\n};\n\n// @pragma Access\n\nRecord.prototype.has = function has (k) {\n return this._indices.hasOwnProperty(k);\n};\n\nRecord.prototype.get = function get (k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var index = this._indices[k];\n var value = this._values.get(index);\n return value === undefined ? this._defaultValues[k] : value;\n};\n\n// @pragma Modification\n\nRecord.prototype.set = function set (k, v) {\n if (this.has(k)) {\n var newValues = this._values.set(\n this._indices[k],\n v === this._defaultValues[k] ? undefined : v\n );\n if (newValues !== this._values && !this.__ownerID) {\n return makeRecord(this, newValues);\n }\n }\n return this;\n};\n\nRecord.prototype.remove = function remove (k) {\n return this.set(k);\n};\n\nRecord.prototype.clear = function clear () {\n var newValues = this._values.clear().setSize(this._keys.length);\n return this.__ownerID ? this : makeRecord(this, newValues);\n};\n\nRecord.prototype.wasAltered = function wasAltered () {\n return this._values.wasAltered();\n};\n\nRecord.prototype.toSeq = function toSeq () {\n return recordSeq(this);\n};\n\nRecord.prototype.toJS = function toJS$1 () {\n return toJS(this);\n};\n\nRecord.prototype.entries = function entries () {\n return this.__iterator(ITERATE_ENTRIES);\n};\n\nRecord.prototype.__iterator = function __iterator (type, reverse) {\n return recordSeq(this).__iterator(type, reverse);\n};\n\nRecord.prototype.__iterate = function __iterate (fn, reverse) {\n return recordSeq(this).__iterate(fn, reverse);\n};\n\nRecord.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newValues = this._values.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._values = newValues;\n return this;\n }\n return makeRecord(this, newValues, ownerID);\n};\n\nRecord.isRecord = isRecord;\nRecord.getDescriptiveName = recordName;\nvar RecordPrototype = Record.prototype;\nRecordPrototype[IS_RECORD_SYMBOL] = true;\nRecordPrototype[DELETE] = RecordPrototype.remove;\nRecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\nRecordPrototype.getIn = getIn$1;\nRecordPrototype.hasIn = CollectionPrototype.hasIn;\nRecordPrototype.merge = merge;\nRecordPrototype.mergeWith = mergeWith;\nRecordPrototype.mergeIn = mergeIn;\nRecordPrototype.mergeDeep = mergeDeep$1;\nRecordPrototype.mergeDeepWith = mergeDeepWith$1;\nRecordPrototype.mergeDeepIn = mergeDeepIn;\nRecordPrototype.setIn = setIn$1;\nRecordPrototype.update = update$1;\nRecordPrototype.updateIn = updateIn$1;\nRecordPrototype.withMutations = withMutations;\nRecordPrototype.asMutable = asMutable;\nRecordPrototype.asImmutable = asImmutable;\nRecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\nRecordPrototype.toJSON = RecordPrototype.toObject =\n CollectionPrototype.toObject;\nRecordPrototype.inspect = RecordPrototype.toSource = function() {\n return this.toString();\n};\n\nfunction makeRecord(likeRecord, values, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._values = values;\n record.__ownerID = ownerID;\n return record;\n}\n\nfunction recordName(record) {\n return record.constructor.displayName || record.constructor.name || 'Record';\n}\n\nfunction recordSeq(record) {\n return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));\n}\n\nfunction setProp(prototype, name) {\n try {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n },\n });\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n}\n\n/**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\nvar Repeat = /*@__PURE__*/(function (IndexedSeq$$1) {\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n if ( IndexedSeq$$1 ) Repeat.__proto__ = IndexedSeq$$1;\n Repeat.prototype = Object.create( IndexedSeq$$1 && IndexedSeq$$1.prototype );\n Repeat.prototype.constructor = Repeat;\n\n Repeat.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function includes (searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function slice (begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size)\n ? this\n : new Repeat(\n this._value,\n resolveEnd(end, size) - resolveBegin(begin, size)\n );\n };\n\n Repeat.prototype.reverse = function reverse () {\n return this;\n };\n\n Repeat.prototype.indexOf = function indexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var i = 0;\n while (i !== size) {\n if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n }\n return i;\n };\n\n Repeat.prototype.__iterator = function __iterator (type, reverse) {\n var this$1 = this;\n\n var size = this.size;\n var i = 0;\n return new Iterator(\n function () { return i === size\n ? iteratorDone()\n : iteratorValue(type, reverse ? size - ++i : i++, this$1._value); }\n );\n };\n\n Repeat.prototype.equals = function equals (other) {\n return other instanceof Repeat\n ? is(this._value, other._value)\n : deepEqual(other);\n };\n\n return Repeat;\n}(IndexedSeq));\n\nvar EMPTY_REPEAT;\n\nfunction fromJS(value, converter) {\n return fromJSWith(\n [],\n converter || defaultConverter,\n value,\n '',\n converter && converter.length > 2 ? [] : undefined,\n { '': value }\n );\n}\n\nfunction fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n var toSeq = Array.isArray(value)\n ? IndexedSeq\n : isPlainObj(value)\n ? KeyedSeq\n : null;\n if (toSeq) {\n if (~stack.indexOf(value)) {\n throw new TypeError('Cannot convert circular structure to Immutable');\n }\n stack.push(value);\n keyPath && key !== '' && keyPath.push(key);\n var converted = converter.call(\n parentValue,\n key,\n toSeq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }\n ),\n keyPath && keyPath.slice()\n );\n stack.pop();\n keyPath && keyPath.pop();\n return converted;\n }\n return value;\n}\n\nfunction defaultConverter(k, v) {\n return isKeyed(v) ? v.toMap() : v.toList();\n}\n\nvar version = \"4.0.0-rc.11\";\n\nvar Immutable = {\n version: version,\n\n Collection: Collection,\n // Note: Iterable is deprecated\n Iterable: Collection,\n\n Seq: Seq,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS,\n hash: hash,\n\n isImmutable: isImmutable,\n isCollection: isCollection,\n isKeyed: isKeyed,\n isIndexed: isIndexed,\n isAssociative: isAssociative,\n isOrdered: isOrdered,\n isValueObject: isValueObject,\n isSeq: isSeq,\n isList: isList,\n isMap: isMap,\n isOrderedMap: isOrderedMap,\n isStack: isStack,\n isSet: isSet,\n isOrderedSet: isOrderedSet,\n isRecord: isRecord,\n\n get: get,\n getIn: getIn,\n has: has,\n hasIn: hasIn,\n merge: merge$1,\n mergeDeep: mergeDeep,\n mergeWith: mergeWith$1,\n mergeDeepWith: mergeDeepWith,\n remove: remove,\n removeIn: removeIn,\n set: set,\n setIn: setIn,\n update: update,\n updateIn: updateIn,\n};\n\n// Note: Iterable is deprecated\nvar Iterable = Collection;\n\nexport default Immutable;\nexport { version, Collection, Iterable, Seq, Map, OrderedMap, List, Stack, Set, OrderedSet, Record, Range, Repeat, is, fromJS, hash, isImmutable, isCollection, isKeyed, isIndexed, isAssociative, isOrdered, isValueObject, get, getIn, has, hasIn, merge$1 as merge, mergeDeep, mergeWith$1 as mergeWith, mergeDeepWith, remove, removeIn, set, setIn, update, updateIn };\n"],"sourceRoot":""}