{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/function-to-string.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/sloppy-array-method.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/bind-context.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/internals/wrapped-well-known-symbol.js","webpack:///./node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/modules/es.date.to-string.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/modules/es.parse-float.js","webpack:///./node_modules/core-js/modules/es.string.match.js","webpack:///./src/js/pro/material-select/material-select-view-renderer.js","webpack:///external \"jQuery\"","webpack:///./node_modules/core-js/modules/es.array.includes.js","webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/core-js/internals/forced-string-trim-method.js","webpack:///./node_modules/core-js/modules/es.parse-int.js","webpack:///./src/js/pro/material-select/material-select-view.js","webpack:///./node_modules/core-js/internals/parse-float.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./node_modules/core-js/internals/array-last-index-of.js","webpack:///./node_modules/core-js/modules/es.object.values.js","webpack:///./node_modules/core-js/internals/object-to-array.js","webpack:///./node_modules/core-js/internals/array-fill.js","webpack:///./node_modules/core-js/modules/es.array.reverse.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/core-js/internals/parse-int.js","webpack:///./node_modules/core-js/internals/array-buffer.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/to-index.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./src/js/free/forms-free.js","webpack:///./src/js/free/scrolling-navbar.js","webpack:///./src/js/free/treeview.js","webpack:///./src/js/free/wow.js","webpack:///./src/js/pro/buttons.js","webpack:///./src/js/pro/cards.js","webpack:///./src/js/pro/character-counter.js","webpack:///./src/js/pro/collapsible.js","webpack:///./src/js/pro/file-input.js","webpack:///./src/js/pro/mdb-autocomplete.js","webpack:///./src/js/pro/preloading.js","webpack:///./src/js/pro/range-input.js","webpack:///./src/js/pro/sidenav.js","webpack:///./src/js/pro/smooth-scroll.js","webpack:///./src/js/pro/dropdown/dropdown.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./src/js/pro/dropdown/dropdown-searchable.js","webpack:///./src/js/pro/material-select/material-select.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/core-js/modules/es.array.fill.js","webpack:///./src/js/vendor/free/enhanced-modals.js","webpack:///./src/js/vendor/free/jquery.easing.js","webpack:///./src/js/vendor/free/velocity.js","webpack:///./node_modules/core-js/modules/es.array-buffer.slice.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/modules/es.typed-array.float32-array.js","webpack:///./node_modules/core-js/internals/typed-array-constructor.js","webpack:///./node_modules/core-js/internals/typed-arrays-constructors-requires-wrappers.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js","webpack:///./node_modules/core-js/internals/typed-array-from.js","webpack:///./node_modules/core-js/modules/es.typed-array.copy-within.js","webpack:///./node_modules/core-js/internals/array-copy-within.js","webpack:///./node_modules/core-js/modules/es.typed-array.every.js","webpack:///./node_modules/core-js/modules/es.typed-array.fill.js","webpack:///./node_modules/core-js/modules/es.typed-array.filter.js","webpack:///./node_modules/core-js/modules/es.typed-array.find.js","webpack:///./node_modules/core-js/modules/es.typed-array.find-index.js","webpack:///./node_modules/core-js/modules/es.typed-array.for-each.js","webpack:///./node_modules/core-js/modules/es.typed-array.includes.js","webpack:///./node_modules/core-js/modules/es.typed-array.index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.iterator.js","webpack:///./node_modules/core-js/modules/es.typed-array.join.js","webpack:///./node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.map.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack:///./node_modules/core-js/modules/es.typed-array.reverse.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/core-js/modules/es.typed-array.slice.js","webpack:///./node_modules/core-js/modules/es.typed-array.some.js","webpack:///./node_modules/core-js/modules/es.typed-array.sort.js","webpack:///./node_modules/core-js/modules/es.typed-array.subarray.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-string.js","webpack:///./src/js/vendor/free/waves.js","webpack:///./src/js/vendor/pro/jquery.sticky.js","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./src/js/vendor/pro/scrollbar.js","webpack:///./node_modules/core-js/modules/es.array.every.js","webpack:///./src/js/vendor/pro/toastr.js","webpack:///./src/js/pro/chips.js","webpack:///./node_modules/core-js/modules/es.array.some.js","webpack:///./node_modules/core-js/modules/es.object.assign.js","webpack:///./node_modules/core-js/internals/object-assign.js","webpack:///./src/js/pro/sticky.js","webpack:///./node_modules/core-js/modules/es.number.max-safe-integer.js","webpack:///./node_modules/core-js/modules/es.number.min-safe-integer.js","webpack:///./node_modules/core-js/modules/es.symbol.to-string-tag.js","webpack:///./node_modules/core-js/modules/es.json.to-string-tag.js","webpack:///./node_modules/core-js/modules/es.math.to-string-tag.js","webpack:///./src/js/vendor/pro/picker.js","webpack:///./src/js/vendor/free/bs-custom-file-input.js","webpack:///./src/js/vendor/free/chart.js","webpack:///./node_modules/core-js/modules/es.array.find-index.js","webpack:///./node_modules/core-js/modules/es.math.log10.js","webpack:///./node_modules/core-js/modules/es.math.sign.js","webpack:///./node_modules/core-js/internals/math-sign.js","webpack:///./node_modules/core-js/modules/es.number.epsilon.js","webpack:///./src/js/vendor/free/chartjs-datalabels.js","webpack:///./node_modules/core-js/modules/es.string.anchor.js","webpack:///./node_modules/core-js/internals/create-html.js","webpack:///./node_modules/core-js/internals/forced-string-html-method.js","webpack:///external \"chart\"","webpack:///./src/js/vendor/pro/lightbox.js","webpack:///./src/js/vendor/pro/picker-date.js","webpack:///./src/js/vendor/pro/vector-map.js","webpack:///./src/js/vendor/pro/vector-map-world-mill.js","webpack:///./src/js/vendor/pro/jarallax.js","webpack:///./src/js/vendor/pro/jarallax-video.js","webpack:///./src/js/vendor/pro/ofi.js","webpack:///./src/js/vendor/pro/picker-time.js","webpack:///./src/js/vendor/pro/picker-date-time.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","it","Math","check","globalThis","window","self","global","Function","exec","error","shared","uid","NATIVE_SYMBOL","store","getOwnPropertyDescriptor","f","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","options","source","target","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","undefined","sham","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","fails","a","isObject","TypeError","String","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","IndexedObject","requireObjectCoercible","toInteger","min","argument","IS_PURE","push","version","copyright","has","nativeFunctionToString","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","split","unsafe","simple","join","this","ceil","floor","isNaN","toString","slice","bitmap","configurable","writable","input","PREFERRED_STRING","fn","val","valueOf","propertyIsEnumerableModule","toIndexedObject","nativeGetOwnPropertyDescriptor","toObject","toLength","arraySpeciesCreate","createMethod","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","that","specificCreate","result","boundFunction","length","index","forEach","map","filter","some","every","find","findIndex","keys","id","postfix","random","classof","propertyIsEnumerable","set","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","STATE","getterFor","state","type","internalObjectKeys","concat","getOwnPropertyNames","Array","isArray","arg","path","aFunction","variable","namespace","method","arguments","createElement","defineProperties","enumBugKeys","html","documentCreateElement","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","document","open","write","lt","close","F","Properties","EXISTS","indexOf","names","max","integer","toAbsoluteIndex","IS_INCLUDES","el","fromIndex","includes","nativePropertyIsEnumerable","NASHORN_BUG","1","V","SPECIES","wellKnownSymbol","originalArray","C","constructor","$","$find","addToUnscopables","SKIPS_HOLES","proto","getOwnPropertySymbols","ownKeys","getOwnPropertyDescriptorModule","replacement","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","METHOD_NAME","array","foo","Boolean","UNSCOPABLES","ArrayPrototype","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","g","e","test","b","apply","Iterators","defineIterator","setInternalState","iterated","kind","done","Arguments","NAME","getPrototypeOf","setPrototypeOf","DataView","DataViewPrototype","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","isPrototypeOf","TO_STRING_TAG","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER","ArrayBuffer","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","isTypedArray","aTypedArray","aTypedArrayConstructor","ARRAY","TypedArrayConstructor","exportProto","KEY","exportStatic","isView","klass","TAG","re1","re2","regexpFlags","nativeExec","RegExp","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","NPCG_INCLUDED","str","reCopy","match","re","objectKeys","$indexOf","sloppyArrayMethod","nativeIndexOf","NEGATIVE_ZERO","SLOPPY_METHOD","searchElement","propertyKey","nativeObjectCreate","getOwnPropertyNamesExternal","wrappedWellKnownSymbolModule","defineWellKnownSymbol","setToStringTag","$forEach","HIDDEN","TO_PRIMITIVE","$Symbol","JSON","nativeJSONStringify","stringify","nativeGetOwnPropertyNames","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","WellKnownSymbolsStore","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","wrap","tag","description","symbol","isSymbol","iterator","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","setter","keyFor","sym","useSetter","useSimple","replacer","$replacer","args","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","regexp","desc","charAt","point","DOMIterables","ArrayIteratorMethods","ITERATOR","ArrayValues","values","COLLECTION_NAME","Collection","CollectionPrototype","nativeJoin","ES3_STRINGS","separator","createProperty","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","k","len","E","A","CONVERT_TO_STRING","pos","first","second","S","position","size","charCodeAt","codeAt","__webpack_amd_options__","CORRECT_PROTOTYPE_GETTER","aPossiblePrototype","CORRECT_SETTER","__proto__","ignoreCase","multiline","dotAll","unicode","sticky","DatePrototype","Date","nativeDateToString","getTime","NaN","whitespace","ltrim","rtrim","start","end","trim","fixRegExpWellKnownSymbolLogic","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","maybeCallNative","searchValue","replaceValue","res","rx","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","matched","captures","j","namedCaptures","groups","replacerArgs","getSubstitution","tailPos","symbols","ch","capture","createIteratorConstructor","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","IteratorConstructor","next","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","PrototypeOfArrayIteratorPrototype","arrayIterator","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","R","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","$filter","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","flags","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","originalModule","webpackPolyfill","children","$map","isRegExp","speciesConstructor","callRegExpExec","arrayPush","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","q","z","nativeSlice","Constructor","fin","MATCH","windowNames","getWindowNames","defaultConstructor","splice","deleteCount","insertCount","actualDeleteCount","from","to","actualStart","argumentsLength","inheritIfRequired","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","radix","maxCode","digits","code","parseInt","NumberWrapper","dummy","nativeKeys","$trim","forcedStringTrimMethod","Wrapper","NewTarget","NewTargetPrototype","parseFloatImplementation","parseFloat","nativeMatch","matcher","matchStr","MaterialSelectViewRenderer","view","currentUuid","$nativeSelect","removeClass","parent","remove","hasClass","unwrap","setWrapperClasses","setMaterialSelectInitialValue","before","$selectWrapper","showResetButton","appendResetButton","appendDropdownIcon","appendMaterialSelect","appendMaterialOptionsList","appendNativeSelect","appendSelectLabel","appendCustomTemplateParts","shouldValidate","appendValidationFeedbackElements","isRequired","enableValidation","isDisabled","setMaterialOptionsListMaxHeight","dropdown","$materialSelect","hover","closeOnClick","resetScroll","shouldInheritTabindex","attr","isDefaultMaterialInput","$mainLabel","css","isCustomSelect","width","height","padding","fontSize","lineHeight","backgroundColor","border","addAccessibilityAttributes","markInitialized","addClass","marginTop","marginBottom","placeholder","prepend","sanitizedLabelHtml","$materialSelectInitialOption","$dropdownIcon","append","$btnReset","selectedIndex","hide","isSearchable","appendSearchInputOption","isEditable","appendAddOptionBtn","buildMaterialOptions","isMultiple","appendToggleAllCheckbox","$materialOptionsList","appendTo","$customTemplateParts","each","_","element","$btnSave","clone","$validFeedback","insertAfter","$invalidFeedback","top","left","opacity","$tempWrapper","visibility","show","$optionsListClone","multiplier","visibleOptions","additionalHeight","$materialOptions","not","optionHeight","text","eq","optionsCount","$searchInput","$toggleAll","maxHeight","role","divClass","inputClass","on","stopPropagation","$addOptionBtn","$nativeSelectChildren","option","is","buildSingleOption","$materialOptgroup","optgroupOption","firstOption","prop","after","$newOption","$nativeSelectChild","disabled","active","optgroupClass","iconUrl","fas","fasClasses","far","farClasses","fab","fabClasses","classes","iconHtml","checkboxHtml","secondaryText","copyClassesOption","validate","defaultMaterialInput","jQuery","$includes","notARegExp","correctIsRegExpLogic","searchString","FunctionPrototype","FunctionPrototypeToString","nameRE","whitespaces","parseIntImplementation","MaterialSelectView","_copyOptions","$noSearchResultsInfo","labels","noSearchResults","selectAll","_jQueryFallback","nextUntil","validFeedback","invalidFeedback","keyCodes","tab","enter","shift","alt","esc","space","home","arrowUp","arrowDown","renderer","navigator","userAgent","destroy","render","handler","_isPlaceholderPresent","$preselectedOption","indexOfPreselectedOption","preventDefault","_toggleResetButton","trigger","addNewOption","label","$selectedOption","_selectSingleOption","which","_updateDropdownScrollTop","isTab","isArrowUp","isArrowDown","isEnter","isEsc","isAltWithArrowDown","altKey","isAltWithArrowUp","isHome","isEnd","isSpace","isDropdownExpanded","_handleTabKey","_handleClosedArrowUpDownKey","_handleArrowUpDownKey","_handleHomeKey","_handleEndKey","_handleEnterKey","_handleLetterKey","checkbox","currentState","isToggleChecked","materialOptionIndex","materialOption","$materialOption","$optionCheckbox","toggleClass","_selectOption","_triggerChangeOnNativeSelect","removeData","scrollHeight","offsetHeight","selected","oldPropertyValue","hasOptgroup","thisIndex","_isToggleAllPresent","prevAll","_updateToggleAllOption","last","childNodes","ariaSelected","selectedOptionIndex","isEnterWithShift","shiftKey","focus","$ul","closest","$options","isOptionInList","$option","outerHTML","liValue","textContent","_handleEnterWithShiftKey","updatePosition","siblings","isMobileDevice","clientX","clientWidth","clientY","clientHeight","previousValue","$allOptionsButToggleAll","$checkedOptionsButToggleAll","isToggleAllChecked","_handleEscKey","_removeKeyboardActiveClass","keyCode","_getArrowMatchedActiveOptions","$matchedMaterialOption","$activeOption","keyboardActiveClass","scrollTop","closedDropdown","visible","$availableOptions","$firstOption","$lastOption","anySelected","$currentOption","$prevOption","prev","$nextOption","_selectBoundaryOption","firstOrLast","$boundaryOption","isLetter","isNumber","isBackspace","filterQueryString","letter","fromCharCode","nonLetters","keyboardEvt","KeyboardEvent","bubbles","cancelable","dispatchEvent","newOption","$preselected","scrollTo","extend","$lastElem","nativeParseFloat","Infinity","trimmedString","IS_RIGHT","memo","right","getFlags","setSpecies","NativeRegExp","CORRECT_NEW","RegExpWrapper","pattern","thisIsRegExp","patternIsRegExp","flagsAreUndefined","proxy","CONSTRUCTOR_NAME","nativeSort","sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","comparefn","nativeLastIndexOf","lastIndexOf","$values","TO_ENTRIES","endPos","nativeReverse","reverse","thisNumberValue","repeat","nativeToFixed","toFixed","pow","x","acc","fractionDigits","number","fractDigits","sign","multiply","c2","divide","dataToString","RangeError","x2","log","count","nativeParseInt","hex","redefineAll","anInstance","toIndex","arrayFill","NativeArrayBuffer","$ArrayBuffer","$DataView","abs","LN2","packIEEE754","mantissaLength","bytes","exponent","mantissa","buffer","exponentLength","eMax","eBias","rt","unpackIEEE754","nBits","unpackInt32","packInt8","packInt16","packInt32","packFloat32","packFloat64","addGetter","isLittleEndian","intIndex","byteLength","byteOffset","pack","conversion","ArrayBufferPrototype","testView","nativeSetInt8","setInt8","getInt8","setUint8","bufferLength","offset","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","toPositiveInteger","BYTES","inputSelector","selector","textAreaSelector","$text","$body","$document","observe","toggleActiveClass","attachEvent","event","addEventListener","resize","delayedResize","setTimeout","isNotValid","validity","badInput","updateTextFields","addOnFocusEvent","addOnBlurEvent","addOnChangeEvent","addOnResetEvent","appendHiddenDiv","ChangeDateInputType","textAreaAutoResize","action","noValue","isValid","noPlaceholder","validateField","$formReset","noDefaultValue","select","$select","$visibleInput","defaultValue","$hiddenDiv","$input","hasValue","hasPlaceholder","addOrRemove","valid","Number","$dateInputs","$item","$textarea","fontFamily","content","init","$navbar","mdbTreeview","off","treeviewToggle","$elements","$closed","$target","$pointer","slideUp","slideDown","treeviewAnimated","$header","$pointerPlus","$pointerMinus","treeviewColorful","WOW","wow","MDBWow","$wowElement","customization","animated","assignElementCustomization","scroll","mdbWow","appear","animationName","iteration","fallback","or","duration","delay","shouldElementBeVisible","countRemoveTime","thisElementOffset","getOffset","thisElementHeight","documentHeight","windowHeight","innerHeight","scrollY","isElementTopVisible","isElementBottomVisible","isScrolledToTop","isScrolledToBottom","isDocumentHeightEqual","isOffsetHigherThanDocument","isElementBottomHidden","isScrolledOverTop","isNotScrolledToTop","isScrolledOverElement","defaultAnimationTime","removeTime","checkOptionsStringFormat","valueToReturn","console","box","getBoundingClientRect","body","docEl","documentElement","pageYOffset","clientTop","round","_value","isTouchDevice","toggleOpen","btn","querySelectorAll","classList","$btn","currentTarget","openFAB","closeFAB","$reveal","$clickedElem","isTitleClicked","isTitleIconClicked","isActivatorClicked","isActivatorIconClicked","takeRevealDown","takeRevealUp","revealElem","velocity","translateY","queue","easing","complete","$cardWrapper","$front","$back","$frontHeight","outerHeight","$backHeight","updateCounter","maxLength","actualLength","isValidLength","inputHasInvalidClass","addInputStyle","removeCounterElement","characterCounter","$counterElement","ready","accordionOpen","$collapsible","$panelHeaders","expandableOpen","stop","isChildOfPanelHeader","getPanelHeader","collapsible","defaults","accordion","collapsibleType","$pathInput","files","fileNames","file","MdbAutocomplete","dataColor","closeColor","closeBlurColor","inputFocus","inputBlur","inputFocusShadow","inputBlurShadow","enterCharCode","homeCharCode","endCharCode","arrowUpCharCode","arrowDownCharCode","nextScrollHeight","assignOptions","$clearButton","$autocompleteWrap","handleEvents","setData","inputKeyupData","inputLiClick","clearAutocomplete","setAutocompleteWrapHeight","changeSVGcolors","empty","$inputValue","appendOptions","$ulList","$ulItems","nextItemHeight","previousItemHeight","homeHandler","endHandler","arrowDownHandler","arrowUpHandler","item","fillSVG","color","mdbAutocomplete","windowLoaded","preloaderFading","fadeOut","removeAttr","load","rangeType","thumbHtml","rangeMousedown","updateThumbPosition","$thumb","minValue","maxValue","widthThumb","oneStep","leftPosition","thumbAnimation","tHeight","tWidth","tTop","tMarginLeft","tDuration","tEasing","marginLeft","showThumb","hideThumb","noThumb","isRightClick","addThumb","SideNav","settings","menuLeftMinBorder","menuLeftMaxBorder","menuRightMinBorder","menuRightMaxBorder","menuVelocityOffset","menuWidth","edge","breakpoint","timeDurationOpen","timeDurationClose","timeDurationOverlayOpen","timeDurationOverlayClose","easingOpen","easingClose","showOverlay","showCloseButton","slim","$element","$elementCloned","menuOut","lastTouchVelocity","startPosition","startTime","endPosition","endTime","$menu","$sidenavOverlay","$dragTarget","newOptions","setMenuWidth","setMenuTranslation","openOnClick","bindTouchEvents","inputOnClick","handleSlim","$sidenavBg","innerWidth","removeMenu","xValue","translateX","touchmoveEventHandler","touches","now","touchendEventHandler","borderTop","restoreMenu","overflow","hideSidenavOverlay","transition","touch","touchX","disableScrolling","buildSidenavOverlay","translateSidenavX","updateOverlayOpacity","changedTouches","velocityX","calculateTouchVelocityX","leftPos","rightPos","translateMenuX","showSidenavOverlay","enableScrolling","oldWidth","fromTo","isRightDirection","isLeftDirection","overlayPercentage","sideNav","elAttr","animate","setHash","parentsUntil","history","replaceState","Dropdown","$activator","$activates","inDuration","outDuration","easingEffectIn","easingEffectOut","constrainWidth","gutter","belowOrigin","alignment","isFocused","bindMultiLevelDropdownEvents","bindBootstrapEvents","submenu","$dropdown","effects","_getDropdownEffects","_dropdownEffectStart","effectIn","effectOut","_dropdownEffectEnd","defaultInEffect","defaultOutEffect","$dropdownMenu","$parentUl","parents","effectToStart","callback","one","appendDropdownToActivator","handleHoverableDropdown","handleClickableDropdown","bindEvents","opened","unbind","placeDropdown","toEl","toElement","relatedTarget","hideDropdown","activatorClicked","activatorActive","dropdownContentClicked","eventType","outerWidth","showDropdown","durations","originHeight","offsetTop","currAlignment","_getHorizontalAlignment","gutterSpacing","$wrapper","verticalOffset","scrollOffset","doesNotFitFromBottom","doesNotFitFromTop","adjustedHeight","offsetLeft","elem","instances","returnPublicInterface","mdbDropdownAutoInit","FAILS_ON_PRIMITIVES","getOwnPropertyDescriptors","DropdownSearchable","$searchWrappers","fontWeight","borderRadius","borderColor","margin","bindSearchEvents","mdbDropSearch","originalVal","MaterialSelect","selectId","optionsSelected","maxSelectedOptions","uuid","_randomUUID","selectedOptionsIndexes","mutationObservers","observer","disconnect","customStatus","materialSelect","isInitialized","selectPreselectedOptions","optionIndex","_toggleSelectedValue","bindMutationObserverChange","bindResetButtonClick","_resetSelection","bindAddNewOptionClick","bindMaterialSelectFocus","bindMaterialSelectClick","bindMaterialSelectBlur","bindMaterialOptionsListTouchstart","bindMaterialSelectKeydown","bindMaterialSelectDropdownToggle","bindToggleAllClick","bindMaterialOptionMousedown","bindMaterialOptionClick","bindSingleMaterialOptionClick","bindSearchInputKeyup","bindHtmlClick","bindMobileDevicesMousedown","bindSaveBtnClick","MutationObserver","_onMutationObserverChange","attributes","childList","characterData","subtree","customId","clearMutationObservers","mutationsList","mutation","selectedValueIndex","isSelected","_setValueToMaterialSelect","selectedValuesCount","substring","ret","mdbSelectAutoInit","$reduce","reduce","fill","$modal_dialog","def","swing","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","PI","easeOutSine","sin","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","sqrt","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","Velocity","isWindow","nodeType","isPlainObject","expando","u","dequeue","unshift","Error","pageXOffset","scrollLeft","clientLeft","offsetParent","nodeName","borderTopWidth","borderLeftWidth","Utilities","isWrapped","isNode","h","v","w","y","isFinite","getControlPoints","T","isString","Easings","State","calls","setPropertyValue","endValue","startValue","currentValue","Hooks","registered","H","getRoot","N","rootPropertyValueCache","rootPropertyValue","L","unitType","scrollData","Normalizations","mobileHA","transformCache","translate3d","flushTransformCache","progress","isTicking","loop","isAnimating","Lists","transforms3D","Values","tweensContainer","documentMode","innerHTML","getElementsByTagName","webkitRequestAnimationFrame","mozRequestAnimationFrame","isFunction","isNodeList","jquery","Zepto","zepto","isZ","isSVG","SVGElement","isEmptyObject","isMobile","isAndroid","isGingerbread","isChrome","chrome","isFirefox","prefixElement","prefixMatches","scrollAnchor","scrollPropertyLeft","scrollPropertyTop","CSS","Redirects","Promise","begin","_cacheValues","computedStyle","hook","mock","major","minor","patch","debug","parentNode","tension","friction","dx","dv","linear","spring","exp","RegEx","isHex","valueUnwrap","wrappedValueAlreadyExtracted","valueSplit","colors","transformsBase","templates","textShadow","boxShadow","clip","backgroundPosition","transformOrigin","perspectiveOrigin","register","cleanRootPropertyValue","isCSSNullValue","extractValue","injectValue","blur","zoom","substr","black","blue","gray","green","red","white","hexToRgb","Names","camelCase","toUpperCase","SVGAttribute","prefixCheck","getUnitType","getDisplayType","tagName","add","className","getPropertyValue","offsetWidth","getComputedStyle","getBBox","getAttribute","container","direction","alternateValue","setAttribute","translate","skewX","skewY","scale","rotate","promise","myParent","lastPosition","lastParent","lastFontSize","emToPx","lastEmToPx","percentToPxWidth","lastPercentToPxWidth","percentToPxHeight","lastPercentToPxHeight","createElementNS","removeChild","remToPx","vwToPx","vhToPx","axis","opts","M","I","B","W","G","Y","D","Q","resolver","velocityQueueEntryFlag","delayTimer","elements","rejecter","clearTimeout","backwards","stagger","drag","requestAnimationFrame","hidden","paddingTop","paddingBottom","define","ArrayBufferModule","nativeArrayBufferSlice","viewSource","viewTarget","typedArrayConstructor","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","toOffset","typedArrayFrom","fromList","list","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","wrapper","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","typedArrayOffset","$length","$len","checkCorrectnessOfIteration","iterable","getIteratorMethod","isArrayIteratorMethod","step","mapfn","mapping","iteratorMethod","$copyWithin","copyWithin","inc","$every","$fill","predicate","$findIndex","ArrayIterators","arrayValues","arrayKeys","arrayEntries","nativeTypedArrayIterator","CORRECT_ITER_NAME","typedArrayValues","$join","$lastIndexOf","$reduceRight","middle","arrayLike","$slice","$some","$sort","beginIndex","BYTES_PER_ELEMENT","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","arrayJoin","factory","Waves","$$","isTouchAvailable","getWavesElements","nodes","obj","stringRepr","docElem","win","doc","ownerDocument","defaultView","getWindow","convertStyle","styleObj","Effect","button","ripple","relativeY","relativeX","pageY","pageX","rippleStyle","transform","ripples","getElementsByClassName","removeRipple","removeEventListener","TagWrapper","contains","replaceChild","img","TouchHandler","allowEvent","allow","registerEvent","eType","showEffect","srcElement","parentElement","getWavesEffectElement","timer","hideEffect","hideEvent","removeListeners","touchMove","moveEvent","attach","elementsLen","wait","centre","mousedown","hideRipple","mouseup","calm","displayEffect","topSpacing","zIndex","stopper","stickyClass","hasIndex","hasStopper","thisHeight","thisWidth","pushPoint","$window","stickyScroll","windowTop","stopPoint","parentWidth","diff","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","div","elMatches","Element","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","query","queryChildren","child","cls","main","rtl","thumb","rail","consuming","clicking","scrolling","scrollingClassTimeout","addScrollingClass","removeScrollingClass","isAlive","scrollingThreshold","EventElement","handlers","prototypeAccessors","isEmpty","eventName","this$1","unbindAll","EventManager","eventElements","createEvent","CustomEvent","evt","initCustomEvent","processScrollDiff","useScrollingClass","forceFireReachEvent","fields","ref","contentHeight","containerHeight","up","down","reach","setScrollingClassInstantly","processScrollDiff$1","toInt","eventElement","ee","once","onceHandler","env","isWebKit","supportsTouch","maxTouchPoints","DocumentTouch","supportsIePointer","msMaxTouchPoints","updateGeometry","roundedScrollTop","rect","containerWidth","contentWidth","scrollWidth","scrollbarXRail","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","xRailOffset","isRtl","isScrollbarXUsingBottom","bottom","scrollbarXBottom","scrollbarXTop","yRailOffset","isScrollbarYUsingRight","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","updateCss","thumbSize","minScrollbarLength","maxScrollbarLength","bindMouseScrollHandler","startingScrollTop","startingMousePageY","scrollBy","mouseMoveHandler","mouseUpHandler","bindMoves","touchMode","keyboard","isDefaultPrevented","defaultPrevented","activeElement","contentDocument","shadowRoot","deltaX","deltaY","metaKey","wheelPropagation","shouldPreventDefault","wheel","mousewheelHandler","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","getDeltaFromEvent","querySelector","cursor","overflowY","maxScrollTop","overflowX","maxScrollLeft","shouldBeConsumedByChild","shouldPrevent","useBothWheelAxes","wheelSpeed","isTop","isBottom","isLeft","isRight","ctrlKey","onwheel","onmousewheel","startOffset","speed","easingLoop","touchStart","touchEnd","PointerEvent","MSPointerEvent","applyTouchMove","differenceX","differenceY","getTouch","targetTouches","shouldHandle","pointerType","buttons","MSPOINTER_TYPE_MOUSE","clearInterval","currentOffset","currentTime","timeGap","magnitudeX","magnitudeY","swipeEasing","setInterval","PerfectScrollbar","userSettings","originalScrollLeft","isNegativeScroll","railXStyle","borderRightWidth","marginRight","railYStyle","styles","paddingLeft","paddingRight","borderBottomWidth","handlerName","lastScrollTop","lastScrollLeft","onScroll","update","removePsClasses","$container","listener","previousToast","toastId","toastType","info","success","warning","toastr","clear","$toastElement","clearOptions","getOptions","getContainer","clearToast","toastsToClear","clearContainer","removeToast","message","title","optionsOverride","notify","iconClass","iconClasses","subscribe","containerId","positionClass","createContainer","force","hideMethod","hideDuration","hideEasing","publish","preventDuplicates","shouldExit","intervalId","$titleElement","$messageElement","$progressElement","$closeElement","closeHtml","progressBar","hideEta","maxHideTime","response","toastClass","titleClass","messageClass","closeButton","newestOnTop","showMethod","showDuration","showEasing","onShown","timeOut","hideToast","updateProgress","stickAround","delayedHideToast","onclick","tapToDismiss","click","cancelBubble","override","onHidden","extendedTimeOut","percentage","deps","require","MaterialChips","$chipsWrapper","dataChip","secondaryPlaceholder","sortAutocompleteData","autocompleteDataCompareFn","$autocompleteList","backspace","arrowLeft","arrowRight","delete","comma","isPublicInterfaceCall","chips","initialized","renderChips","assign","bindChipsWrapperClick","bindChipsWrapperBlur","bindSingleChipClick","bindChipsWrapperKeydown","bindChipsInputClick","bindChipsInputFocusout","bindChipsInputKeydown","bindDeleteButtonClick","bindAutocompleteInputKeyup","bindAutocompleteOptionClick","getSelectedChip","chipIndex","selectChip","backspacePressed","deletePressed","leftArrowPressed","rightArrowPressed","nextIndex","deleteSelectedChip","selectLeftChip","selectRightChip","$chipsInput","enterPressed","commaPressed","addChip","lastChipIndex","deleteChip","lastChipText","$li","$selectedChip","siblingsLength","selectIndex","selectLeftRightChip","currentIndex","getSingleChipTemplate","setPlaceholder","chip","image","$newChip","insertBefore","$chip","materialChip","materialChips","nativeAssign","chr","Sticky","startScrolling","minWidth","elementWidth","elementHeight","initialScrollTop","$placeholder","setPushPoint","setStopperPosition","isScreenHeightEnough","$pushPoint","handleResize","$parent","appendPlaceholder","stickyStart","stickyEnd","hasZIndex","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","$html","supportsTransitions","PickerConstructor","ELEMENT","COMPONENT","OPTIONS","IS_DEFAULT_THEME","handlingOpen","SETTINGS","CLASSES","klasses","$ELEMENT","OPENCOUNTER","PickerInstance","$node","autofocus","getActiveElement","readOnly","editable","component","$root","picker","aria","$holder","createWrappedComponent","prepareElementHolder","formatSubmit","hiddenName","hiddenPrefix","hiddenSuffix","_hidden","format","func","context","later","timeout","immediate","callNow","handleKeydownEvent","haspopup","expanded","readonly","owns","containerHidden","onStart","onRender","onStop","onOpen","onClose","onSet","currentStyle","theme","entireComponent","dontGiveFocus","getScrollbarWidth","frame","getRealEventTarget","isSimulated","keycode","keycodeToMove","go","highlighted","highlight","closeOnSelect","giveFocus","handleFocusToOpenEvent","focused","thing","thingItem","thingValue","thingIsObject","thingObject","updateInput","muted","formats","internal","thingName","thingMethod","namesCount","_trigger","methodList","node","holder","keydown","focusin","targetData","targetDisabled","navDisabled","href","nav","pick","closeOnClear","isKeycodeDelete","$outer","widthWithoutScroll","widthWithScroll","originalEvent","attribute","ariaSet","err","prefix","group","groupObject","loopObjectScope","nodesList","counter","lead","scope","isDate","isInteger","getDate","ariaAttr","attrVal","Component","componentData","Picker","Selector","CUSTOMFILE","CUSTOMFILELABEL","FORM","INPUT","getDefaultText","defaultText","findFirstChildNode","restoreDefaultText","bsCustomFileInput","fileApi","File","getSelectedFiles","hasAttribute","splittedValue","handleInputChange","inputValue","handleFormReset","customFileList","Event","formSelector","customFileInputList","formList","_i","_len","form","_i2","_len2","Chart","2","colorNames","getRgba","rgb","getHsla","alpha","getHwb","rgbaString","rgba","percentaString","hslaString","hsla","num","hexDouble","getRgb","getHsl","getAlpha","vals","hexString","rgbString","percentString","hslString","hwbString","hwb","keyword","reverseNames","3","convert","Color","hsl","hsv","cmyk","setValues","lightness","whiteness","cyan","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","hue","saturation","saturationv","blackness","magenta","yellow","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","light","negate","lighten","ratio","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","degrees","mix","mixinColor","weight","w1","w2","toJSON","spaces","maxes","getValues","capped","chans","sname","svalues","4","rgb2hsl","delta","rgb2hsv","rgb2hwb","rgb2cmyk","rgb2keyword","reverseKeywords","rgb2xyz","rgb2lab","xyz","hsl2rgb","t1","t2","t3","hsv2rgb","hi","hwb2rgb","wh","bl","cmyk2rgb","xyz2rgb","xyz2lab","lab2xyz","lab","y2","lab2lch","atan2","lab2rgb","lch2lab","lch","hr","keyword2rgb","cssKeywords","rgb2lch","hsl2hsv","hsl2hwb","hsl2cmyk","hsl2keyword","hsv2hsl","sl","hsv2hwb","hsv2cmyk","hsv2keyword","hwb2hsl","hwb2hsv","hwb2cmyk","hwb2keyword","cmyk2hsl","cmyk2hsv","cmyk2hwb","cmyk2keyword","keyword2hsl","keyword2hsv","keyword2hwb","keyword2cmyk","keyword2lab","keyword2xyz","xyz2lch","lch2xyz","lch2rgb","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","5","conversions","Converter","pair","convs","routeSpace","fspace","6","7","helpers","Animation","animationService","Interaction","layouts","platform","plugins","Scale","scaleService","Ticks","Tooltip","initialize","Legend","legend","_element","Title","pluginService","PluginBase","canvasHelpers","canvas","layoutService","8","Bar","config","9","Bubble","10","Doughnut","11","Line","12","PolarArea","13","Radar","14","Scatter","15","_set","scales","xAxes","categoryPercentage","barPercentage","gridLines","offsetGridLines","yAxes","rectangle","borderSkipped","tooltips","callbacks","yLabel","datasets","datasetIndex","xLabel","controllers","bar","DatasetController","dataElementType","Rectangle","meta","me","getMeta","stack","getDataset","reset","ilen","rects","_ruler","getRuler","updateElement","chart","dataset","custom","rectangleOptions","_xScale","getScaleForId","xAxisID","_yScale","yAxisID","_datasetIndex","_index","_model","datasetLabel","valueAtIndexOrDefault","borderWidth","updateElementGeometry","pivot","model","vscale","getValueScale","base","getBasePixel","horizontal","isHorizontal","ruler","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","getValueScaleId","getIndexScaleId","getIndexScale","_getStacks","stacked","stacks","getDatasetMeta","isDatasetVisible","getStackCount","getStackIndex","stackCount","pixels","getPixelForValue","isNullOrUndef","barThickness","curr","ticks","getTicks","getPixelForTick","computeMinSampleSize","imeta","ivalue","getRightValue","controller","range","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","valueOrDefault","maxBarThickness","draw","clipArea","ctx","chartArea","unclipArea","horizontalBar","16","dataPoint","bubble","Point","points","xScale","yScale","_resolveElementOptions","dsIndex","getPixelForDecimal","_options","hitRadius","pointStyle","rotation","radius","skip","setHoverStyle","$previousStyle","hoverBackgroundColor","getHoverColor","hoverBorderColor","hoverBorderWidth","hoverRadius","resolve","dataIndex","17","animation","animateRotate","animateScale","legendCallback","generateLabels","ds","arc","arcOpts","fillStyle","strokeStyle","lineWidth","onClick","legendItem","cutoutPercentage","circumference","tooltipItem","dataLabel","doughnut","pie","Arc","linkScales","noop","getRingIndex","ringIndex","availableWidth","availableHeight","minSize","startAngle","endAngle","contains0","contains90","contains180","contains270","cutout","getMaxBorderWidth","outerRadius","innerRadius","radiusLength","getVisibleDatasetCount","offsetX","offsetY","total","calculateTotal","animationOpts","centerX","centerY","calculateCircumference","elementOpts","arcs","hoverWidth","_chart","18","showLines","spanGaps","lineEnabled","showLine","line","datasetElementType","lineElementOptions","lineTension","_scale","_children","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","steppedLine","stepped","cubicInterpolationMode","updateBezierControlPoints","getPointBackgroundColor","pointBackgroundColor","getPointBorderColor","pointBorderColor","getPointBorderWidth","pointBorderWidth","getPointRotation","pointRotation","pointOptions","pointRadius","pointHitRadius","calculatePointY","dsMeta","sumPos","sumNeg","stackedRightValue","rightValue","controlPoints","area","capControlPoint","pt","splineCurveMonotone","splineCurve","previousItem","nextItem","controlPointPreviousX","previous","controlPointPreviousY","controlPointNextX","controlPointNextY","capBezierPoints","halfBorderWidth","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointHoverRadius","19","angleLines","circular","pointLabels","beginAtZero","polarArea","angle","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","xCenter","yCenter","datasetStartAngle","distance","getDistanceFromCenterForValue","resetRadius","20","radar","_loop","pointElementOptions","pointPosition","getPointPositionForValue","21","scatter","22","currentStep","numSteps","onAnimationProgress","onAnimationComplete","23","onProgress","onComplete","frameDuration","animations","dropFrames","request","addAnimation","lazy","animating","cancelAnimation","requestAnimFrame","startDigest","framesToDrop","advance","24","updateConfig","removeBox","configMerge","ensureScalesHaveIDs","buildOrUpdateScales","tooltip","positionIsHorizontal","types","construct","initConfig","acquireContext","aspectRatio","_bufferedRender","retinaScale","devicePixelRatio","responsive","initToolTip","silent","maintainAspectRatio","newWidth","getMaximumWidth","newHeight","getMaximumHeight","newSize","onResize","responsiveAnimationDuration","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","items","updated","dtype","dposition","isDefault","scaleType","scaleClass","getScaleConstructor","mergeTicksOptions","hasUpdated","addScalesToLayout","buildOrUpdateControllers","newControllers","destroyDatasetMeta","updateIndex","ControllerClass","resetElements","_invalidate","_data","buildOrUpdateElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","easingValue","boxes","drawDatasets","_drawTooltip","drawDataset","getElementAtEvent","modes","single","getElementsAtEvent","intersect","getElementsAtXAxis","getElementsAtEventForMode","getDatasetAtEvent","_meta","generateLegend","unbindEvents","releaseContext","toBase64Image","toDataURL","_chartInstance","listeners","_listeners","eventHandler","events","updateHoverStyle","enabled","changed","handleEvent","_start","bufferedRequest","animationDuration","hoverOptions","onHover","arrayEquals","Controller","25","arrayEvents","unlistenArrayEvents","stub","_chartjs","addElements","scaleID","createMetaDataset","createMetaData","metaData","addElementAndReset","resyncElements","removeHoverStyle","merge","numMeta","numData","insertElements","onDataPush","onDataPop","pop","onDataShift","onDataSplice","onDataUnshift","inherits","26","27","configuration","_view","ease","actual","origin","c0","c1","interpolate","tooltipPosition","28","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","_getParentNode","constrainedNode","constrainedContainer","hasCNode","hasCContainer","infinity","POSITIVE_INFINITY","merger","tval","sval","scaleMerge","getScaleDefaults","_merger","slen","where","collection","filterCallback","filtered","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","epsilon","almostWhole","rounded","NEGATIVE_INFINITY","log10","LOG10E","powerOf10","toRadians","toDegrees","radians","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","pt1","pt2","aliasPixel","pixelWidth","firstPoint","middlePoint","afterPoint","current","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","niceNum","fraction","oRequestAnimationFrame","msRequestAnimationFrame","getRelativePosition","mouseX","mouseY","boundingRect","getStyle","currentDevicePixelRatio","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","host","cw","forceRatio","pixelRatio","fontString","pixelSize","fontStyle","longestText","font","arrayOfThings","cache","gc","garbageCollect","longest","measureText","nestedThing","gcLen","textWidth","numberOfLabelLines","numberOfLines","CanvasGradient","defaultColor","colorValue","CanvasPattern","29","parseVisibleItems","jlen","getIntersectItems","inRange","getNearestItems","distanceMetric","minDistance","nearestItems","getCenterPoint","getDistanceMetricForAxis","useX","useY","indexMode","nearest","getArea","intersectsItem","inXRange","inYRange","30","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","layout","31","filterByPosition","sortByWeight","_tmpIndex_","v0","v1","addBox","fullWidth","layoutItem","configure","props","layoutOptions","toPadding","leftPadding","rightPadding","topPadding","bottomPadding","leftBoxes","rightBoxes","topBoxes","bottomBoxes","chartAreaBoxes","chartWidth","chartHeight","chartAreaHeight","verticalBoxWidth","horizontalBoxHeight","maxChartAreaWidth","maxChartAreaHeight","minBoxSizes","maxHorizontalLeftPadding","maxHorizontalRightPadding","maxVerticalTopPadding","maxVerticalBottomPadding","horizontalBox","getPadding","boxPadding","verticalBox","totalLeftBoxesWidth","totalRightBoxesWidth","totalTopBoxesHeight","totalBottomBoxesHeight","fitBox","minBoxSize","scaleMargin","leftPaddingAddition","topPaddingAddition","newMaxChartAreaHeight","newMaxChartAreaWidth","placeBox","minBox","32","_plugins","_cacheId","plugin","unregister","idx","getAll","params","descriptors","$plugins","33","labelsFromTicks","getLineValue","lineValue","computeTextSize","tick","parseFontOptions","globalDefaults","family","parseLineHeight","toLineHeight","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","formatters","_ticks","beforeUpdate","maxWidth","margins","longestTextCache","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","beforeTickToLabelConversion","convertTicksToLabels","afterTickToLabelConversion","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","afterUpdate","tickOpts","userCallback","tickFont","labelRotation","cosRotation","originalLabelWidth","labelWidth","tickWidth","angleRadians","scaleLabelOpts","gridLineOpts","isFullWidth","deltaHeight","largestTextWidth","tallestLabelHeightInLines","lineSpace","tickPadding","longestLabelWidth","labelHeight","firstLabelWidth","lastLabelWidth","handleMargins","rawValue","getLabelForIndex","getValueForPixel","pixel","finalVal","decimal","valueOffset","getBaseValue","_autoSkip","skipRatio","maxTicks","optionTicks","tickCount","labelRotationRadians","longestRotatedLabel","maxTicksLimit","optionMajorTicks","isRotated","tickFontColor","fontColor","majorTickFontColor","majorTickFont","tl","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","itemsToDraw","axisWidth","xTickStart","xTickEnd","yTickStart","yTickEnd","lineColor","tx1","ty1","tx2","ty2","x1","y1","labelX","labelY","zeroLineIndex","textAlign","textBaseline","labelYOffset","xLineValue","labelXOffset","yLineValue","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","save","setLineDash","lineDashOffset","beginPath","moveTo","lineTo","stroke","restore","lineCount","fillText","scaleLabelX","scaleLabelY","halfLineHeight","34","constructors","registerScaleType","scaleConstructor","scaleDefaults","updateScaleDefaults","additions","35","tickValue","logDelta","tickString","logTick","toExponential","numDecimal","logarithmic","remain","36","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","cornerRadius","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","tp","mergeOpacity","colorString","pushOrConcat","toPush","splitNewlines","getBaseModel","tooltipOpts","xAlign","yAlign","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getBeforeAfterBodyLines","_lastActive","getTitle","lines","getBeforeBody","getBody","bodyItems","bodyItem","getAfterBody","getFooter","existingModel","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","combinedBodyLength","titleLineCount","footerLineCount","widthPadding","maxLineWidth","getTooltipSize","vm","paddingAndSize","radiusAndPadding","getBackgroundPoint","lf","olf","orf","yf","midX","midY","determineAlignment","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","drawBody","xLinePadding","fillLineOfText","drawColorBoxes","textColor","fillRect","strokeRect","drawFooter","drawBackground","quadraticCurveTo","closePath","hasTooltipContent","37","inLabelRange","chartX","chartY","pointRelativePosition","betweenAngles","withinRadius","halfAngle","halfRadius","centreAngle","rangeFromCentre","sA","eA","lineJoin","38","currentVM","globalOptionLineElements","lastDrawnIndex","lineCap","39","xRange","drawPoint","40","isVertical","getBarBounds","halfWidth","halfHeight","signX","signY","barSize","halfStroke","borderLeft","borderRight","borderBottom","corners","startCorner","cornerAt","corner","bounds","41","42","clearRect","roundedRect","arcTo","edgeLength","xOffset","yOffset","SQRT2","leftX","topY","sideSize","drawImage","flip","bezierCurveTo","drawRoundedRectangle","43","thisArg","loopable","a0","a1","klen","_mergerIf","mergeIf","sources","setFn","extensions","ChartElement","Surrogate","__super__","callCallback","getValueOrDefault","getValueAtIndexOrDefault","44","easingEffects","45","inputs","46","47","getContext","48","EXPANDO_KEY","CSS_PREFIX","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","eventListenerOptions","supports","passive","nativeEvent","addResizeListener","ticking","resizer","cssText","expand","shrink","_reset","createResizer","renderProxy","reflow","watchForRender","firstChild","removeResizeListener","unwatchForRender","_enabled","keyframes","_style","createTextNode","getElementById","renderHeight","renderWidth","initial","displayWidth","displayHeight","initCanvas","removeAttribute","proxies","fromNativeEvent","addEvent","removeEvent","49","basic","dom","implementation","50","filler","51","propagate","mappers","boundary","decodeFill","computeBoundary","scaleBottom","scaleTop","scaleZero","getBasePosition","resolveTarget","visited","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","afterDatasetsUpdate","$filler","mapper","beforeDatasetDraw","p0","p1","d0","d1","span","doFill","52","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","lineDash","legendHitBoxes","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","globalDefault","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","totalWidth","currentColWidth","currentColHeight","itemHeight","itemWidth","lineDefault","legendWidth","isLineWidthZero","offSet","drawLegendBox","halfFontSize","xLeft","yMiddle","lh","hitBox","createNewLegendAndAttach","legendOpts","beforeInit","afterEvent","53","textSize","titleX","titleY","titleFont","createNewTitleBlockAndAttach","titleOpts","titleBlock","54","DatasetScale","getLabels","xLabels","yLabels","minIndex","maxIndex","valueCategory","offsetAmt","valueWidth","widthOffset","valueHeight","heightOffset","horz","valueDimension","55","defaultConfig","LinearScale","LinearScaleBase","IDMatches","hasStacks","valuesPerStack","positiveValues","negativeValues","relativePoints","valuesForType","minVal","maxVal","handleTickRangeOptions","getTickLimit","tickFontSize","handleDirectionalChanges","innerDimension","ticksAsNumbers","56","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","numericGeneratorOptions","precision","stepSize","fixedStepSize","generationOptions","dataRange","factor","spacing","niceRange","niceMin","niceMax","numSpaces","generateTicks","57","LogarithmicScale","minNotZero","significand","tickVal","endExp","endSignificand","lastTick","tickValues","_getFirstTickValue","firstTickValue","58","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getValueCount","getPointLabelFontOptions","pointLabelOptions","determineLimits","getTextAlignForAngle","adjustPointPositionForLabelHeight","numberOrZero","param","LinearRadialScale","drawingArea","largestPossibleRadius","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","getIndexAngle","hLimits","vLimits","setReductions","fitWithPointLabels","setCenterPoint","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","tickFontStyle","tickFontFamily","tickLabelFont","yCenterOffset","drawRadiusLine","angleLineOpts","pointLabelOpts","outerDistance","outerPosition","pointLabelPosition","pointLabelFontColor","drawPointLabels","59","moment","MIN_INTEGER","MAX_INTEGER","INTERVALS","millisecond","common","steps","minute","hour","day","week","month","quarter","year","UNITS","sorter","arrayUnique","hash","out","table","skey","tkey","mid","i0","i1","lo","lookup","momentify","parser","parse","time","startOf","determineMajorUnit","unit","generate","capacity","timeOpts","minUnit","interval","determineUnitForAutoTicks","unitStepSize","weekday","isoWeekday","majorTicksEnabled","milliseconds","determineStepSize","TimeScale","warn","timestamp","timestamps","endOf","_horizontal","_table","_timestamps","getLabelCapacity","_unit","as","determineUnitForFormatting","_majorUnit","distribution","buildLookupTable","_offsets","upper","lower","computeOffsets","_labelFormat","momentDate","hasTime","determineLabelFormat","majorUnit","ticksFromTimestamps","tooltipFormat","tickFormatFunction","formatOverride","displayFormats","minorFormat","majorFormat","majorTime","majorTickOpts","formatter","getPixelForOffset","getLabelWidth","ticksOpts","tickLabelWidth","sinRotation","exampleTime","exampleLabel","displayFormat","screen","deviceXDPI","logicalXDPI","utils","toTextLines","toFontString","parseFont","bound","arrayDiff","updates","rasterize","orient","x0","y0","dy","ln","R_INSIDE","R_LEFT","R_RIGHT","R_BOTTOM","R_TOP","region","compute","anchor","segment","clamp","r0","r1","clipped","vx","vy","align","aligned","ry","sx","sy","helpers$1","getScaleOrigin","drawTextLine","cfg","shadow","shadowBlur","stroked","strokeText","filled","Label","_config","_rects","_ctx","_el","_modelize","positioner","textShadowBlur","textShadowColor","textStrokeColor","textStrokeWidth","th","tw","tx","ty","boundingRects","geometry","globalAlpha","bgColor","drawFrame","strokeColor","strokeWidth","textGeometry","shadowColor","drawText","helpers$2","rotated","cx","cy","projected","dp","toAxis","HitBox","_rotation","_rect","coordinates","vs","intersects","other","pr0","pr1","_points","axes","prepare","$layout","_box","_hidable","_visible","_idx","sa","sb","dirty","collider","s0","s1","collide","h0","h1","compute$1","helpers$3","helpers$4","DEFAULT_KEY","$context","$groups","_key","_dirty","handleMoveEvents","leave","_labels","_hovered","dispatchMoveEvents","datalabels","_actives","_listened","_datasets","afterDatasetUpdate","configs","afterDatasetsDraw","beforeEvent","handleClickEvents","actives","invalidate","ChartDataLabels","createHTML","forcedStringHTMLMethod","quot","PhotoSwipe","features","createEl","getScrollY","getChildByClass","nextSibling","arraySearch","sine","inOut","cubic","detectFeatures","oldIE","all","raf","caf","cancelAnimationFrame","pointerEvent","pointerEnabled","msPointerEnabled","appVersion","isOldIOSPhone","isOldAndroid","androidVersion","isMobileOpera","svg","createSVGRect","allowPanToNext","bgOpacity","mouseUsed","pinchToClose","closeOnScroll","closeOnVerticalDrag","verticalDragRange","hideAnimationDuration","showAnimationDuration","showHideOpacity","escKey","arrowKeys","mainScrollEndFriction","panEndFriction","isClickableElement","getDoubleTapZoom","initialZoomLevel","maxSpreadZoom","modal","scaleMode","J","K","U","X","Z","ba","ca","da","ea","ga","ha","ia","ja","ka","ma","na","oa","pa","qa","ra","ta","ua","va","wa","xa","ya","publicMethods","za","_b","Aa","Ba","Ca","Da","Ea","bg","Fa","currItem","fitRatio","Ga","lc","Ha","initialPosition","Ia","Ja","Ka","tb","La","Ma","Na","Oa","Ra","hc","Sa","Ta","Ua","Wa","returnValue","Xa","Ya","setScrollOffset","Za","$a","_a","ab","bb","cb","db","shout","listen","viewportSize","isMainScrollAnimating","getZoomLevel","getCurrentIndex","isDragging","isZooming","applyZoomPan","framework","template","scrollWrap","itemHolders","perspective","Va","updateSize","ui","$b","mainClass","setContent","updateCurrItem","bc","Wb","yb","panTo","goTo","updateCurrZoomItem","invalidateCurrItems","needsUpdate","cleanSlide","zoomTo","gb","hb","ib","jb","kb","lb","mb","nb","ob","pb","qb","rb","ub","xb","Cb","Db","prevent","Bb","Eb","identifier","Fb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Zb","pointerId","zb","Pb","Ob","vb","Ub","Gb","Qb","Rb","calculateSwipeSpeed","Tb","Vb","Sb","lastFlickOffset","lastFlickDist","lastFlickSpeed","slowDownRatio","slowDownRatioReverse","speedDecelerationRatio","speedDecelerationRatioAbs","distanceOffset","backAnimDestination","backAnimStarted","calculateOverBoundsAnimOffset","calculateAnimOffset","timeDiff","panAnimLoop","zoomPan","lastNow","initGestures","likelyTouchDevice","mousemove","Xb","Yb","initialLayout","getThumbBoundsFn","loadError","miniImg","webkitBackfaceVisibility","cc","dc","ec","errorMsg","forceProgressiveLoading","preload","getNumItemsFn","vGap","ic","imageAppended","loaded","jc","loading","loadComplete","onload","onerror","kc","lastChild","mc","baseDiv","clearPlaceholder","lazyLoadItem","initController","getItemAt","preloader","allowProgressiveImg","msrc","nc","qc","oc","pc","origEvent","releasePoint","initTap","onTapStart","onTapRelease","wb","initDesktopZoom","setupDesktopZoom","handleMouseWheel","mouseZoomedIn","detail","toggleDesktopZoom","rc","sc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","galleryUID","Ec","Fc","Gc","galleryPIDs","pid","Hc","location","initHistory","updateURL","onHashChange","back","pushState","pathname","search","PhotoSwipeUI_Default","barsSize","closeElClasses","timeToIdle","timeToIdleOutside","loadingIndicatorDelay","addCaptionHTMLFn","closeEl","captionEl","fullscreenEl","zoomEl","shareEl","counterEl","arrowEl","preloaderEl","tapToClose","tapToToggleControls","clickToCloseNonZoomable","shareButtons","url","download","getImageURLForShare","getPageURLForShare","getTextForShare","indexIndicatorSep","fitControlsWidth","onTap","encodeURIComponent","parseShareButtonOut","setIdle","onInit","isFullscreen","exit","hideControls","showControls","onGlobalTap","onMouseOver","eventK","updateFullscreen","getFullscreenAPI","naturalWidth","updateIndexIndicator","supportsFullscreen","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","requestFullscreen","enterK","exitK","elementK","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","ALLOW_KEYBOARD_INPUT","gallerySelector","onThumbnailsClick","clickedListItem","clickedGallery","numChildNodes","nodeIndex","openPhotoSwipe","galleryElement","disableAnimation","fromURL","pswpElement","figureEl","linkEl","thumbElements","numNodes","parseThumbnailElements","thumbnail","pageYScroll","galleryElements","hashData","vars","gid","photoswipeParseHash","initPhotoSwipeFromDOM","DatePicker","collectionDisabled","calendar","elementValue","elementDataValue","valueString","formatString","isRTL","disable","enable","timeChange","highlightedObject","targetDate","date","selectMonth","selectYear","includeToday","buttonToday","calendarItem","isInfiniteValue","getFullYear","getMonth","getDay","createRange","createDate","withinRange","dateUnit","overlapRanges","two","rel","setDate","navigate","targetDateObject","targetYear","targetMonth","isTargetArray","isTargetObject","viewsetObject","setHours","measure","viewset","dateObject","hasEnabledBeforeTarget","hasEnabledAfterTarget","reachedMin","reachedMax","originalDateObject","isFlippedBase","minLimitObject","maxLimitObject","hasEnabledWeekdays","dateTime","dateToVerify","isDisabledMatch","dateToDisable","firstDay","inverted","parsingObject","toArray","formattingLabel","formatLength","yyyy","yy","mm","dd","getWordLengthFromCollection","word","getFirstWordLength","ddd","weekdaysShort","dddd","weekdaysFull","mmm","monthsShort","mmmm","monthsFull","itemObject","isDateExact","isDateOverlap","flipEnable","deactivate","datesToDisable","disabledItems","unitToDisable","matchFound","activate","datesToEnable","disabledItemsCount","unitToEnable","disabledUnit","isExactRange","isOpen","fullCollection","nowObject","selectedObject","disabledCollection","tableHead","showWeekdaysFull","DAYS_IN_WEEK","weekdays","createMonthNav","controls","labelMonthNext","labelMonthPrev","createMonthLabel","monthsCollection","showMonthsShort","selectMonths","loopedMonth","labelMonthSelect","createYearLabel","focusedYear","numberYears","selectYears","minYear","maxYear","lowestYear","highestYear","availableYears","neededYears","loopedYear","labelYearSelect","header","WEEKS_IN_CALENDAR","rowCounter","shiftDateBy","isHighlighted","formattedDate","infocus","outfocus","activedescendant","today","buttonClear","buttonClose","navPrev","navNext","pickadate","$pickerInstance","labeldayFirstThreeLetters","monthFirstUC","elementOpenData","apiParams","scaleColors","normalizeFunction","selectedRegions","selectedMarkers","mapObject","regionName","vectorMap","jvm","Map","maps","orgEvent","absDelta","fix","HORIZONTAL_AXIS","pageHeight","lowestDelta","shouldAdjustOldDeltas","deltaFactor","nullLowestDeltaTimeout","nullLowestDelta","dispatch","handle","special","adjustOldDeltas","toFix","toBind","fixHooks","mouseHooks","mousewheel","setup","getLineHeight","getPageHeight","teardown","unmousewheel","temp","parentClass","mixin","MAX_VALUE","MIN_VALUE","whenImageLoaded","deferred","Deferred","reject","isImageUrl","AbstractElement","applyAttr","AbstractCanvasElement","setSize","rootElement","classPrefix","addPath","addCircle","addImage","addText","addGroup","parentGroup","AbstractShapeElement","isHovered","updateStyle","setStyle","attrs","mergeStyles","selectedHover","newStyles","svgns","getElementCtr","ctr","SVGGroupElement","SVGCanvasElement","defsElement","applyTransformParams","transX","transY","SVGShapeElement","patternEl","imageEl","images","then","setAttributeNS","imageCounter","SVGPathElement","SVGCircleElement","SVGImageElement","SVGTextElement","VMLElement","VMLInitialized","initializeVML","namespaces","rvml","createStyleSheet","addRule","VMLGroupElement","coordorigin","VMLCanvasElement","paths","coordsize","VMLShapeElement","fillElement","strokeElement","fillcolor","strokecolor","strokeweight","VMLPathElement","pathSvgToVml","matrix","ctrlx","ctrly","coords","VMLCircleElement","VectorCanvas","SVGAngle","impl","SimpleScale","getValue","OrdinalScale","NumericScale","setScale","setNormalizeFunction","clearMinValue","clearMaxValue","lengthes","fullLength","vectorLength","vectorSubtract","vectorToNum","vectorAdd","vectorMult","vector","vector1","vector2","extent","LN10","ColorScale","rgbToArray","numToRgb","arrayToRgb","ar","series","cssClass","vertical","legendCntVertical","legendCntHorizontal","sample","inner","markerStyle","background","labelRender","DataSeries","setAttributes","shape","Proj","degRad","radDeg","sgn","mill","lat","lng","mill_inv","atan","merc","merc_inv","aea","lambda0","fi1","fi2","fi","lambda","theta","ro","ro0","aea_inv","xCoord","yCoord","lcc","fi0","lcc_inv","MapObject","getLabelText","getLabelOffsets","offsets","setHovered","setSelected","Region","bbox","labelStyle","labelsGroup","updateLabelPosition","Marker","isImage","createShape","defaultParams","mapData","markers","regions","regionsColors","regionsData","defaultWidth","defaultHeight","setBackgroundColor","apiEvents","bindContainerTouchEvents","MSGesture","bindContainerPointerEvents","bindContainerEvents","bindElementEvents","createTip","zoomButtons","bindZoomButtons","createRegions","createMarkers","focusOn","setFocus","setSelectedRegions","setSelectedMarkers","createSeries","baseTransX","baseTransY","baseScale","curBaseScale","applyTransform","maxTransX","maxTransY","minTransX","minTransY","repositionMarkers","repositionLabels","oldPageX","oldPageY","mouseDown","panOnDrag","onContainerMouseUp","zoomOnScroll","zoomStep","zoomOnScrollSpeed","tip","touchStartScale","touchStartDistance","touchY","centerTouchX","centerTouchY","lastTouchesLength","handleTouchEvent","transXOld","transYOld","gesture","translationX","translationY","addPointer","mouseMoved","delegate","baseVal","tipText","tipShowEvent","overEvent","tipWidth","tipHeight","clickEvent","regionsSelectable","markersSelectable","clearSelected","zoomAnimate","anchorX","anchorY","isCentered","scaleStart","scaleDiff","transXStart","transXDiff","transYStart","transYDiff","viewportChangeEvent","zoomMax","zoomMin","itemBbox","codes","latLngToPoint","getSelected","getSelectedRegions","getSelectedMarkers","clearSelectedRegions","clearSelectedMarkers","getMapObject","getRegionName","regionLabelsGroup","regionStyle","regionLabelStyle","marker","markerConfig","markersArray","markersGroup","markerLabelsGroup","latLng","getMarkerPosition","markerLabelStyle","removeMarkers","projection","addMarker","seriesData","addMarkers","removeAllMarkers","inset","proj","centralMeridian","getInsetForPoint","pointToLatLng","nx","ny","insets","onRegionTipShow","onRegionOver","onRegionOut","onRegionClick","onRegionSelected","onMarkerTipShow","onMarkerOver","onMarkerOut","onMarkerClick","onMarkerSelected","onViewportChange","MultiMap","maxLevel","multiMapLevel","addMap","defaultProjection","mapsLoaded","backButton","goBack","spinner","cnt","multimap","mapName","mapNameByCode","drillDownPromise","drillDown","downloadMap","mapUrlByCode","currentMap","focusPromise","downloadPromise","always","when","prevMap","multiMap","readyState","_typeof","eval","_liteReady2","_interopRequireDefault","_global","_jarallax2","default","oldPlugin","jarallax","noConflict","jQueryPlugin","oldJqPlugin","_slicedToArray","arr","_arr","_n","_d","_e","_s","sliceIterator","_createClass","protoProps","staticProps","_rafl2","isIE","supportTransform","prefixes","wndW","wndH","wndY","forceResizeParallax","forceScrollParallax","updateWndVars","jarallaxList","oldPageData","updateParallax","isResized","isScrolled","resizeObserver","ResizeObserver","entry","instanceID","Jarallax","userOptions","instance","_classCallCheck","imgSrc","imgElement","imgSize","imgPosition","imgRepeat","keepImg","elementInViewport","disableParallax","disableVideo","automaticResize","videoSrc","videoStartTime","videoEndTime","videoVolume","videoPlayOnlyVisible","onDestroy","onCoverImage","deprecatedDataAttribute","oldDataOptions","dataOptions","pureDataOptions","loweCaseOption","pureOptions","noAndroid","noIos","disableParallaxRegexp","disableVideoRegexp","elementInVP","useImgTag","initImg","canInitParallax","_arguments","$imgElement","cloneNode","$itemParent","containerStyles","pointerEvents","imageStyles","curStyle","curImgStyle","parentWithTransform","$itemParents","parentTransform","addToParallaxList","removeFromParallaxList","originalStylesTag","originalStylesImgTag","$clipStyles","styleSheet","contH","isScroll","scrollDist","resultH","resultMT","parallaxScrollDistance","isElementInViewport","contT","viewportRect","beforeTop","beforeTopEnd","afterTop","beforeBottom","beforeBottomEnd","afterBottom","fromViewportCenter","visiblePercent","positionY","section","coverImage","clipContainer","HTMLElement","ms","req","cancel","webkitCancelAnimationFrame","mozCancelAnimationFrame","_videoWorker2","_global2","_jarallaxVideo2","VideoWorker","_done","_fail","execute","fail","ID","YoutubeAPIadded","VimeoAPIadded","loadingYoutubePlayer","loadingVimeoPlayer","loadingYoutubeDefer","loadingVimeoDefer","options_default","autoplay","mute","volume","showContols","videoID","parseURL","loadAPI","videoFormats","Youtube","Vimeo","vmUrl","getVimeoID","Local","userEventsList","_this","_this2","player","playVideo","seekTo","YT","PlayerState","PLAYING","getPlayerState","setCurrentTime","getPaused","paused","play","pauseVideo","pause","setVolume","$video","unMute","getVolume","isMuted","videoImage","availableSizes","tempImg","Image","XMLHttpRequest","onreadystatechange","status","responseText","thumbnail_large","send","getVideo","onAPIready","hiddenDiv","playerOptions","videoId","playerVars","autohide","playsinline","iv_load_policy","modestbranding","showinfo","disablekb","ytStarted","ytProgressInterval","onReady","fire","onStateChange","ENDED","PAUSED","getCurrentTime","firstInit","playerID","Player","videoWidth","videoHeight","getVideoWidth","getVideoHeight","vmStarted","seconds","locStarted","onYouTubeIframeAPIReady","vimeoInterval","defInit","video","defCoverImage","imageData","ml","mt","defInitImg","defaultResult","defaultInitImgResult","defCanInitParallax","oldOnScroll","isVisible","$default_item","imgWidth","imgHeight","getImageURL","defDestroy","OFI","propRegex","testImg","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","nativeSetAttribute","autoModeEnabled","onImageReady","fixOne","parsed","ofi","skipTest","srcset","naturalHeight","ss","keepSrcUsable","picturefill","pf","evaled","fillImg","reselect","curSrc","supported","polyfillCurrentSrc","backgroundImage","backgroundRepeat","backgroundOrigin","backgroundSize","imgs","startAutoMode","watchMQ","getOfiImageMaybe","HTMLImageElement","hijackAttributes","$win","$doc","svgNS","svgSupported","namespaceURI","transitionSupported","touchSupported","mousedownEvent","mousemoveEvent","mouseupEvent","vibrate","webkitVibrate","createSvgElement","debounce","leadingZero","idCounter","dialRadius","tickRadius","diameter","tpl","ClockPicker","popover","plate","hoursView","minutesView","amPmBlock","isInput","isAppended","isShown","currentView","spanHours","spanMinutes","spanAmPm","amOrPm","isTwelvehour","twelvehour","minTime","maxTime","minMinutes","maxMinutes","minHours","maxHours","isInvalidTimeScope","parseTimeOptions","period","amPmButtonsTemplate","togglePeriod","previsiousPeriod","disableOutOfRangeElements","ampmclickable","darktheme","donetext","cleartext","clearInput","toggleView","radian","tickTpl","hourstep","incrementValue","minutestep","isTouch","moved","movingTimer","setHand","hours","minutes","autoclose","currentHours","bearing","hand","fg","raiseCallback","callbackFunction","DEFAULTS","fromnow","ampmSubmit","toggle","locate","parseInputValue","getHours","getMinutes","beforeShow","afterShow","beforeHide","afterHide","$hoursTick","$minutesTick","$amBtn","$pmBtn","$doneBtn","raiseAfterHourSelect","beforeHourSelect","isHours","nextView","hideView","resetClock","toggleViewTimer","afterHourSelect","roundBy5","dragging","vibrateTimer","afterDone","selectedTime","setMinutes","setSeconds","beforeDone","outHours","isHTML5","pickatime","handleClockPickerRequest","openElementData","dateTimePicker","delimiter","$timePicker","$datePicker","timeValue","dateValue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;gBACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,K,mBClFrD,8BACE,OAAOC,GAAMA,EAAGC,MAAQA,MAAQD,GAIlCjC,EAAOD,QAELoC,EAA2B,iBAAdC,YAA0BA,aACvCD,EAAuB,iBAAVE,QAAsBA,SACnCF,EAAqB,iBAARG,MAAoBA,OACjCH,EAAuB,iBAAVI,GAAsBA,IAEnCC,SAAS,cAATA,K,gCCZFxC,EAAOD,QAAU,SAAU0C,GACzB,IACE,QAASA,IACT,MAAOC,GACP,OAAO,K,gBCJX,IAAIH,EAAS,EAAQ,GACjBI,EAAS,EAAQ,IACjBC,EAAM,EAAQ,IACdC,EAAgB,EAAQ,IAExB7B,EAASuB,EAAOvB,OAChB8B,EAAQH,EAAO,OAEnB3C,EAAOD,QAAU,SAAUS,GACzB,OAAOsC,EAAMtC,KAAUsC,EAAMtC,GAAQqC,GAAiB7B,EAAOR,KACvDqC,EAAgB7B,EAAS4B,GAAK,UAAYpC,M,cCVlD,IAAIsB,EAAiB,GAAGA,eAExB9B,EAAOD,QAAU,SAAUkC,EAAIT,GAC7B,OAAOM,EAAe1B,KAAK6B,EAAIT,K,gBCHjC,IAAIe,EAAS,EAAQ,GACjBQ,EAA2B,EAAQ,IAAmDC,EACtFC,EAA8B,EAAQ,GACtCC,EAAW,EAAQ,IACnBC,EAAY,EAAQ,IACpBC,EAA4B,EAAQ,IACpCC,EAAW,EAAQ,IAgBvBrD,EAAOD,QAAU,SAAUuD,EAASC,GAClC,IAGYC,EAAQhC,EAAKiC,EAAgBC,EAAgBC,EAHrDC,EAASN,EAAQE,OACjBK,EAASP,EAAQf,OACjBuB,EAASR,EAAQS,KASrB,GANEP,EADEK,EACOtB,EACAuB,EACAvB,EAAOqB,IAAWT,EAAUS,EAAQ,KAEnCrB,EAAOqB,IAAW,IAAI/B,UAEtB,IAAKL,KAAO+B,EAAQ,CAQ9B,GAPAG,EAAiBH,EAAO/B,GAGtBiC,EAFEH,EAAQU,aACVL,EAAaZ,EAAyBS,EAAQhC,KACfmC,EAAWzC,MACpBsC,EAAOhC,IACtB6B,EAASQ,EAASrC,EAAMoC,GAAUE,EAAS,IAAM,KAAOtC,EAAK8B,EAAQW,cAE5CC,IAAnBT,EAA8B,CAC3C,UAAWC,UAA0BD,EAAgB,SACrDL,EAA0BM,EAAgBD,IAGxCH,EAAQa,MAASV,GAAkBA,EAAeU,OACpDlB,EAA4BS,EAAgB,QAAQ,GAGtDR,EAASM,EAAQhC,EAAKkC,EAAgBJ,M,cCnD1CtD,EAAOD,QAAU,SAAUkC,GACzB,MAAqB,iBAAPA,EAAyB,OAAPA,EAA4B,mBAAPA,I,gBCDvD,IAAImC,EAAc,EAAQ,GACtBC,EAAuB,EAAQ,GAC/BC,EAA2B,EAAQ,IAEvCtE,EAAOD,QAAUqE,EAAc,SAAUzC,EAAQH,EAAKN,GACpD,OAAOmD,EAAqBrB,EAAErB,EAAQH,EAAK8C,EAAyB,EAAGpD,KACrE,SAAUS,EAAQH,EAAKN,GAEzB,OADAS,EAAOH,GAAON,EACPS,I,gBCRT,IAAI4C,EAAQ,EAAQ,GAGpBvE,EAAOD,SAAWwE,GAAM,WACtB,OAA+E,GAAxE5D,OAAOC,eAAe,GAAI,IAAK,CAAEE,IAAK,WAAc,OAAO,KAAQ0D,M,gBCJ5E,IAAIC,EAAW,EAAQ,GAEvBzE,EAAOD,QAAU,SAAUkC,GACzB,IAAKwC,EAASxC,GACZ,MAAMyC,UAAUC,OAAO1C,GAAM,qBAC7B,OAAOA,I,gBCLX,IAAImC,EAAc,EAAQ,GACtBQ,EAAiB,EAAQ,IACzBC,EAAW,EAAQ,GACnBC,EAAc,EAAQ,IAEtBC,EAAuBpE,OAAOC,eAIlCb,EAAQiD,EAAIoB,EAAcW,EAAuB,SAAwBC,EAAGC,EAAGC,GAI7E,GAHAL,EAASG,GACTC,EAAIH,EAAYG,GAAG,GACnBJ,EAASK,GACLN,EAAgB,IAClB,OAAOG,EAAqBC,EAAGC,EAAGC,GAClC,MAAOxC,IACT,GAAI,QAASwC,GAAc,QAASA,EAAY,MAAMR,UAAU,2BAEhE,MADI,UAAWQ,IAAYF,EAAEC,GAAKC,EAAWhE,OACtC8D,I,gBCjBT,IAAIG,EAAgB,EAAQ,IACxBC,EAAyB,EAAQ,IAErCpF,EAAOD,QAAU,SAAUkC,GACzB,OAAOkD,EAAcC,EAAuBnD,M,gBCL9C,IAAIoD,EAAY,EAAQ,IAEpBC,EAAMpD,KAAKoD,IAIftF,EAAOD,QAAU,SAAUwF,GACzB,OAAOA,EAAW,EAAID,EAAID,EAAUE,GAAW,kBAAoB,I,gBCPrE,IAAIC,EAAU,EAAQ,IAClB1C,EAAQ,EAAQ,KAEnB9C,EAAOD,QAAU,SAAUyB,EAAKN,GAC/B,OAAO4B,EAAMtB,KAASsB,EAAMtB,QAAiB0C,IAAVhD,EAAsBA,EAAQ,MAChE,WAAY,IAAIuE,KAAK,CACtBC,QAAS,QACTtE,KAAMoE,EAAU,OAAS,SACzBG,UAAW,0C,cCNb3F,EAAOD,QAAU,SAAUkC,GACzB,GAAUiC,MAANjC,EAAiB,MAAMyC,UAAU,wBAA0BzC,GAC/D,OAAOA,I,gBCJT,IAAIM,EAAS,EAAQ,GACjBI,EAAS,EAAQ,IACjBM,EAA8B,EAAQ,GACtC2C,EAAM,EAAQ,GACdzC,EAAY,EAAQ,IACpB0C,EAAyB,EAAQ,IACjCC,EAAsB,EAAQ,IAE9BC,EAAmBD,EAAoBhF,IACvCkF,EAAuBF,EAAoBG,QAC3CC,EAAWvB,OAAOkB,GAAwBM,MAAM,YAEpDxD,EAAO,iBAAiB,SAAUV,GAChC,OAAO4D,EAAuBzF,KAAK6B,OAGpCjC,EAAOD,QAAU,SAAUiF,EAAGxD,EAAKN,EAAOoC,GACzC,IAAI8C,IAAS9C,KAAYA,EAAQ8C,OAC7BC,IAAS/C,KAAYA,EAAQzC,WAC7BmD,IAAcV,KAAYA,EAAQU,YAClB,mBAAT9C,IACS,iBAAPM,GAAoBoE,EAAI1E,EAAO,SAAS+B,EAA4B/B,EAAO,OAAQM,GAC9FwE,EAAqB9E,GAAOqC,OAAS2C,EAASI,KAAmB,iBAAP9E,EAAkBA,EAAM,KAEhFwD,IAAMzC,GAIE6D,GAEApC,GAAegB,EAAExD,KAC3B6E,GAAS,UAFFrB,EAAExD,GAIP6E,EAAQrB,EAAExD,GAAON,EAChB+B,EAA4B+B,EAAGxD,EAAKN,IATnCmF,EAAQrB,EAAExD,GAAON,EAChBiC,EAAU3B,EAAKN,KAUrBsB,SAASX,UAAW,YAAY,WACjC,MAAsB,mBAAR0E,MAAsBR,EAAiBQ,MAAMhD,QAAUsC,EAAuBzF,KAAKmG,U,cCrCnG,IAAIC,EAAOtE,KAAKsE,KACZC,EAAQvE,KAAKuE,MAIjBzG,EAAOD,QAAU,SAAUwF,GACzB,OAAOmB,MAAMnB,GAAYA,GAAY,GAAKA,EAAW,EAAIkB,EAAQD,GAAMjB,K,gBCNzE,IAAIH,EAAyB,EAAQ,IAIrCpF,EAAOD,QAAU,SAAUwF,GACzB,OAAO5E,OAAOyE,EAAuBG,M,cCLvC,IAAIoB,EAAW,GAAGA,SAElB3G,EAAOD,QAAU,SAAUkC,GACzB,OAAO0E,EAASvG,KAAK6B,GAAI2E,MAAM,GAAI,K,cCHrC5G,EAAOD,QAAU,SAAU8G,EAAQ3F,GACjC,MAAO,CACLL,aAAuB,EAATgG,GACdC,eAAyB,EAATD,GAChBE,WAAqB,EAATF,GACZ3F,MAAOA,K,cCLXlB,EAAOD,QAAU,I,gBCAjB,IAAI0E,EAAW,EAAQ,GAMvBzE,EAAOD,QAAU,SAAUiH,EAAOC,GAChC,IAAKxC,EAASuC,GAAQ,OAAOA,EAC7B,IAAIE,EAAIC,EACR,GAAIF,GAAoD,mBAAxBC,EAAKF,EAAML,YAA4BlC,EAAS0C,EAAMD,EAAG9G,KAAK4G,IAAS,OAAOG,EAC9G,GAAmC,mBAAvBD,EAAKF,EAAMI,WAA2B3C,EAAS0C,EAAMD,EAAG9G,KAAK4G,IAAS,OAAOG,EACzF,IAAKF,GAAoD,mBAAxBC,EAAKF,EAAML,YAA4BlC,EAAS0C,EAAMD,EAAG9G,KAAK4G,IAAS,OAAOG,EAC/G,MAAMzC,UAAU,6C,gBCZlB,IAAInC,EAAS,EAAQ,GACjBU,EAA8B,EAAQ,GAE1CjD,EAAOD,QAAU,SAAUyB,EAAKN,GAC9B,IACE+B,EAA4BV,EAAQf,EAAKN,GACzC,MAAOwB,GACPH,EAAOf,GAAON,EACd,OAAOA,I,gBCRX,IAAIkD,EAAc,EAAQ,GACtBiD,EAA6B,EAAQ,IACrC/C,EAA2B,EAAQ,IACnCgD,EAAkB,EAAQ,IAC1BxC,EAAc,EAAQ,IACtBc,EAAM,EAAQ,GACdhB,EAAiB,EAAQ,IAEzB2C,EAAiC5G,OAAOoC,yBAI5ChD,EAAQiD,EAAIoB,EAAcmD,EAAiC,SAAkCvC,EAAGC,GAG9F,GAFAD,EAAIsC,EAAgBtC,GACpBC,EAAIH,EAAYG,GAAG,GACfL,EAAgB,IAClB,OAAO2C,EAA+BvC,EAAGC,GACzC,MAAOvC,IACT,GAAIkD,EAAIZ,EAAGC,GAAI,OAAOX,GAA0B+C,EAA2BrE,EAAE5C,KAAK4E,EAAGC,GAAID,EAAEC,M,cCjB7FjF,EAAOD,QAAU,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,Y,gBCRF,IAAI0B,EAAO,EAAQ,IACf0D,EAAgB,EAAQ,IACxBqC,EAAW,EAAQ,IACnBC,EAAW,EAAQ,IACnBC,EAAqB,EAAQ,IAE7BjC,EAAO,GAAGA,KAGVkC,EAAe,SAAUC,GAC3B,IAAIC,EAAiB,GAARD,EACTE,EAAoB,GAARF,EACZG,EAAkB,GAARH,EACVI,EAAmB,GAARJ,EACXK,EAAwB,GAARL,EAChBM,EAAmB,GAARN,GAAaK,EAC5B,OAAO,SAAUE,EAAOC,EAAYC,EAAMC,GASxC,IARA,IAOIpH,EAAOqH,EAPPvD,EAAIwC,EAASW,GACb7F,EAAO6C,EAAcH,GACrBwD,EAAgB/G,EAAK2G,EAAYC,EAAM,GACvCI,EAAShB,EAASnF,EAAKmG,QACvBC,EAAQ,EACRnH,EAAS+G,GAAkBZ,EAC3BlE,EAASqE,EAAStG,EAAO4G,EAAOM,GAAUX,EAAYvG,EAAO4G,EAAO,QAAKjE,EAEvEuE,EAASC,EAAOA,IAAS,IAAIR,GAAYQ,KAASpG,KAEtDiG,EAASC,EADTtH,EAAQoB,EAAKoG,GACiBA,EAAO1D,GACjC4C,GACF,GAAIC,EAAQrE,EAAOkF,GAASH,OACvB,GAAIA,EAAQ,OAAQX,GACvB,KAAK,EAAG,OAAO,EACf,KAAK,EAAG,OAAO1G,EACf,KAAK,EAAG,OAAOwH,EACf,KAAK,EAAGjD,EAAKrF,KAAKoD,EAAQtC,QACrB,GAAI8G,EAAU,OAAO,EAGhC,OAAOC,GAAiB,EAAIF,GAAWC,EAAWA,EAAWxE,IAIjExD,EAAOD,QAAU,CAGf4I,QAAShB,EAAa,GAGtBiB,IAAKjB,EAAa,GAGlBkB,OAAQlB,EAAa,GAGrBmB,KAAMnB,EAAa,GAGnBoB,MAAOpB,EAAa,GAGpBqB,KAAMrB,EAAa,GAGnBsB,UAAWtB,EAAa,K,gBC/D1B,IAAIhF,EAAS,EAAQ,IACjBC,EAAM,EAAQ,IAEdsG,EAAOvG,EAAO,QAElB3C,EAAOD,QAAU,SAAUyB,GACzB,OAAO0H,EAAK1H,KAAS0H,EAAK1H,GAAOoB,EAAIpB,M,cCNvC,IAAI2H,EAAK,EACLC,EAAUlH,KAAKmH,SAEnBrJ,EAAOD,QAAU,SAAUyB,GACzB,MAAO,UAAYmD,YAAeT,IAAR1C,EAAoB,GAAKA,GAAO,QAAU2H,EAAKC,GAASzC,SAAS,M,gBCJ7F,IAAIpC,EAAQ,EAAQ,GAChB+E,EAAU,EAAQ,IAElBnD,EAAQ,GAAGA,MAGfnG,EAAOD,QAAUwE,GAAM,WAGrB,OAAQ5D,OAAO,KAAK4I,qBAAqB,MACtC,SAAUtH,GACb,MAAsB,UAAfqH,EAAQrH,GAAkBkE,EAAM/F,KAAK6B,EAAI,IAAMtB,OAAOsB,IAC3DtB,Q,gBCZJ,IASI6I,EAAK1I,EAAK8E,EATV6D,EAAkB,EAAQ,IAC1BlH,EAAS,EAAQ,GACjBkC,EAAW,EAAQ,GACnBxB,EAA8B,EAAQ,GACtCyG,EAAY,EAAQ,GACpBC,EAAY,EAAQ,IACpBC,EAAa,EAAQ,IAErBC,EAAUtH,EAAOsH,QAgBrB,GAAIJ,EAAiB,CACnB,IAAI3G,EAAQ,IAAI+G,EACZC,EAAQhH,EAAMhC,IACdiJ,EAAQjH,EAAM8C,IACdoE,EAAQlH,EAAM0G,IAClBA,EAAM,SAAUvH,EAAIgI,GAElB,OADAD,EAAM5J,KAAK0C,EAAOb,EAAIgI,GACfA,GAETnJ,EAAM,SAAUmB,GACd,OAAO6H,EAAM1J,KAAK0C,EAAOb,IAAO,IAElC2D,EAAM,SAAU3D,GACd,OAAO8H,EAAM3J,KAAK0C,EAAOb,QAEtB,CACL,IAAIiI,EAAQP,EAAU,SACtBC,EAAWM,IAAS,EACpBV,EAAM,SAAUvH,EAAIgI,GAElB,OADAhH,EAA4BhB,EAAIiI,EAAOD,GAChCA,GAETnJ,EAAM,SAAUmB,GACd,OAAOyH,EAAUzH,EAAIiI,GAASjI,EAAGiI,GAAS,IAE5CtE,EAAM,SAAU3D,GACd,OAAOyH,EAAUzH,EAAIiI,IAIzBlK,EAAOD,QAAU,CACfyJ,IAAKA,EACL1I,IAAKA,EACL8E,IAAKA,EACLK,QA/CY,SAAUhE,GACtB,OAAO2D,EAAI3D,GAAMnB,EAAImB,GAAMuH,EAAIvH,EAAI,KA+CnCkI,UA5Cc,SAAUvC,GACxB,OAAO,SAAU3F,GACf,IAAImI,EACJ,IAAK3F,EAASxC,KAAQmI,EAAQtJ,EAAImB,IAAKoI,OAASzC,EAC9C,MAAMlD,UAAU,0BAA4BkD,EAAO,aACnD,OAAOwC,M,gBCpBb,IAAIE,EAAqB,EAAQ,IAG7BV,EAFc,EAAQ,IAEGW,OAAO,SAAU,aAI9CxK,EAAQiD,EAAIrC,OAAO6J,qBAAuB,SAA6BxF,GACrE,OAAOsF,EAAmBtF,EAAG4E,K,cCR/B5J,EAAOD,SAAU,G,gBCAjB,IAAIuJ,EAAU,EAAQ,IAItBtJ,EAAOD,QAAU0K,MAAMC,SAAW,SAAiBC,GACjD,MAAuB,SAAhBrB,EAAQqB,K,gBCLjB,IAAIC,EAAO,EAAQ,IACfrI,EAAS,EAAQ,GAEjBsI,EAAY,SAAUC,GACxB,MAA0B,mBAAZA,EAAyBA,OAAW5G,GAGpDlE,EAAOD,QAAU,SAAUgL,EAAWC,GACpC,OAAOC,UAAUxC,OAAS,EAAIoC,EAAUD,EAAKG,KAAeF,EAAUtI,EAAOwI,IACzEH,EAAKG,IAAcH,EAAKG,GAAWC,IAAWzI,EAAOwI,IAAcxI,EAAOwI,GAAWC,K,gBCT3F,IAAI5G,EAAc,EAAQ,GACtBG,EAAQ,EAAQ,GAChB2G,EAAgB,EAAQ,IAG5BlL,EAAOD,SAAWqE,IAAgBG,GAAM,WACtC,OAEQ,GAFD5D,OAAOC,eAAesK,EAAc,OAAQ,IAAK,CACtDpK,IAAK,WAAc,OAAO,KACzB0D,M,gBCRL,IAAI7B,EAAS,EAAQ,IAErB3C,EAAOD,QAAU4C,EAAO,4BAA6BH,SAASmE,W,gBCF9D,IAAI9B,EAAW,EAAQ,GACnBsG,EAAmB,EAAQ,IAC3BC,EAAc,EAAQ,IACtBxB,EAAa,EAAQ,IACrByB,EAAO,EAAQ,IACfC,EAAwB,EAAQ,IAEhCC,EADY,EAAQ,GACT5B,CAAU,YAGrB6B,EAAQ,aAGRC,EAAa,WAEf,IAMIC,EANAC,EAASL,EAAsB,UAC/B7C,EAAS2C,EAAY3C,OAczB,IARAkD,EAAOC,MAAMC,QAAU,OACvBR,EAAKS,YAAYH,GACjBA,EAAOI,IAAMpH,OAJJ,gBAKT+G,EAAiBC,EAAOK,cAAcC,UACvBC,OACfR,EAAeS,MAAMC,uCACrBV,EAAeW,QACfZ,EAAaC,EAAeY,EACrB7D,YAAiBgD,EAAoB,UAAEL,EAAY3C,IAC1D,OAAOgD,KAKTzL,EAAOD,QAAUY,OAAOY,QAAU,SAAgByD,EAAGuH,GACnD,IAAIhE,EAQJ,OAPU,OAANvD,GACFwG,EAAe,UAAI3G,EAASG,GAC5BuD,EAAS,IAAIiD,EACbA,EAAe,UAAI,KAEnBjD,EAAOgD,GAAYvG,GACduD,EAASkD,SACMvH,IAAfqI,EAA2BhE,EAAS4C,EAAiB5C,EAAQgE,IAGtE3C,EAAW2B,IAAY,G,gBChDvB,IAAIhJ,EAAS,EAAQ,GACjBkC,EAAW,EAAQ,GAEnBwH,EAAW1J,EAAO0J,SAElBO,EAAS/H,EAASwH,IAAaxH,EAASwH,EAASf,eAErDlL,EAAOD,QAAU,SAAUkC,GACzB,OAAOuK,EAASP,EAASf,cAAcjJ,GAAM,K,gBCR/C,IAAI2D,EAAM,EAAQ,GACd0B,EAAkB,EAAQ,IAC1BmF,EAAU,EAAQ,IAA+BA,QACjD7C,EAAa,EAAQ,IAEzB5J,EAAOD,QAAU,SAAU4B,EAAQ+K,GACjC,IAGIlL,EAHAwD,EAAIsC,EAAgB3F,GACpB1B,EAAI,EACJsI,EAAS,GAEb,IAAK/G,KAAOwD,GAAIY,EAAIgE,EAAYpI,IAAQoE,EAAIZ,EAAGxD,IAAQ+G,EAAO9C,KAAKjE,GAEnE,KAAOkL,EAAMjE,OAASxI,GAAO2F,EAAIZ,EAAGxD,EAAMkL,EAAMzM,SAC7CwM,EAAQlE,EAAQ/G,IAAQ+G,EAAO9C,KAAKjE,IAEvC,OAAO+G,I,gBCfT,IAAIlD,EAAY,EAAQ,IAEpBsH,EAAMzK,KAAKyK,IACXrH,EAAMpD,KAAKoD,IAKftF,EAAOD,QAAU,SAAU2I,EAAOD,GAChC,IAAImE,EAAUvH,EAAUqD,GACxB,OAAOkE,EAAU,EAAID,EAAIC,EAAUnE,EAAQ,GAAKnD,EAAIsH,EAASnE,K,gBCV/D,IAAInB,EAAkB,EAAQ,IAC1BG,EAAW,EAAQ,IACnBoF,EAAkB,EAAQ,IAG1BlF,EAAe,SAAUmF,GAC3B,OAAO,SAAU3E,EAAO4E,EAAIC,GAC1B,IAGI9L,EAHA8D,EAAIsC,EAAgBa,GACpBM,EAAShB,EAASzC,EAAEyD,QACpBC,EAAQmE,EAAgBG,EAAWvE,GAIvC,GAAIqE,GAAeC,GAAMA,GAAI,KAAOtE,EAASC,GAG3C,IAFAxH,EAAQ8D,EAAE0D,OAEGxH,EAAO,OAAO,OAEtB,KAAMuH,EAASC,EAAOA,IAC3B,IAAKoE,GAAepE,KAAS1D,IAAMA,EAAE0D,KAAWqE,EAAI,OAAOD,GAAepE,GAAS,EACnF,OAAQoE,IAAgB,IAI9B9M,EAAOD,QAAU,CAGfkN,SAAUtF,GAAa,GAGvB8E,QAAS9E,GAAa,K,6BC7BxB,IAAIuF,EAA6B,GAAG3D,qBAChCxG,EAA2BpC,OAAOoC,yBAGlCoK,EAAcpK,IAA6BmK,EAA2B9M,KAAK,CAAEgN,EAAG,GAAK,GAIzFrN,EAAQiD,EAAImK,EAAc,SAA8BE,GACtD,IAAI1J,EAAaZ,EAAyBwD,KAAM8G,GAChD,QAAS1J,GAAcA,EAAW9C,YAChCqM,G,gBCZJ,IAAI5C,EAAqB,EAAQ,IAC7Bc,EAAc,EAAQ,IAI1BpL,EAAOD,QAAUY,OAAOuI,MAAQ,SAAclE,GAC5C,OAAOsF,EAAmBtF,EAAGoG,K,gBCN/B,IAAI3G,EAAW,EAAQ,GACnBiG,EAAU,EAAQ,IAGlB4C,EAFkB,EAAQ,EAEhBC,CAAgB,WAI9BvN,EAAOD,QAAU,SAAUyN,EAAe/E,GACxC,IAAIgF,EASF,OARE/C,EAAQ8C,KAGM,mBAFhBC,EAAID,EAAcE,cAEaD,IAAMhD,QAASC,EAAQ+C,EAAE5L,WAC/C4C,EAASgJ,IAEN,QADVA,EAAIA,EAAEH,MACUG,OAAIvJ,GAH+CuJ,OAAIvJ,GAKlE,SAAWA,IAANuJ,EAAkBhD,MAAQgD,GAAc,IAAXhF,EAAe,EAAIA,K,6BCjBhE,IAAIkF,EAAI,EAAQ,GACZC,EAAQ,EAAQ,IAAgC5E,KAChD6E,EAAmB,EAAQ,IAG3BC,GAAc,EADP,QAIC,IAAIrD,MAAM,GAAO,MAAE,WAAcqD,GAAc,KAI3DH,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,EAAM9J,OAAQ6J,GAAe,CACvD9E,KAAM,SAAcZ,GAClB,OAAOwF,EAAMrH,KAAM6B,EAAY6C,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,MAKzE2J,EAfW,S,cCLX9N,EAAQiD,EAAIrC,OAAOqN,uB,gBCAnBhO,EAAOD,QAAU,EAAQ,I,gBCAzB,IAAIwE,EAAQ,EAAQ,GAEpBvE,EAAOD,UAAYY,OAAOqN,wBAA0BzJ,GAAM,WAGxD,OAAQI,OAAO3D,c,gBCLjB,IAAI4E,EAAM,EAAQ,GACdqI,EAAU,EAAQ,IAClBC,EAAiC,EAAQ,IACzC7J,EAAuB,EAAQ,GAEnCrE,EAAOD,QAAU,SAAUyD,EAAQD,GAIjC,IAHA,IAAI2F,EAAO+E,EAAQ1K,GACf3C,EAAiByD,EAAqBrB,EACtCD,EAA2BmL,EAA+BlL,EACrD/C,EAAI,EAAGA,EAAIiJ,EAAKT,OAAQxI,IAAK,CACpC,IAAIuB,EAAM0H,EAAKjJ,GACV2F,EAAIpC,EAAQhC,IAAMZ,EAAe4C,EAAQhC,EAAKuB,EAAyBQ,EAAQ/B,O,gBCXxF,IAAI+C,EAAQ,EAAQ,GAEhB4J,EAAc,kBAEd9K,EAAW,SAAU+K,EAASC,GAChC,IAAInN,EAAQoN,EAAKC,EAAUH,IAC3B,OAAOlN,GAASsN,GACZtN,GAASuN,IACW,mBAAbJ,EAA0B9J,EAAM8J,KACrCA,IAGJE,EAAYlL,EAASkL,UAAY,SAAUG,GAC7C,OAAO/J,OAAO+J,GAAQC,QAAQR,EAAa,KAAKS,eAG9CN,EAAOjL,EAASiL,KAAO,GACvBG,EAASpL,EAASoL,OAAS,IAC3BD,EAAWnL,EAASmL,SAAW,IAEnCxO,EAAOD,QAAUsD,G,cCpBjBrD,EAAOD,QAAU,SAAUkC,GACzB,GAAiB,mBAANA,EACT,MAAMyC,UAAUC,OAAO1C,GAAM,sBAC7B,OAAOA,I,gBCHX,IAAIsC,EAAQ,EAAQ,GAGhB+I,EAFkB,EAAQ,EAEhBC,CAAgB,WAE9BvN,EAAOD,QAAU,SAAU8O,GACzB,OAAQtK,GAAM,WACZ,IAAIuK,EAAQ,GAKZ,OAJkBA,EAAMpB,YAAc,IAC1BJ,GAAW,WACrB,MAAO,CAAEyB,IAAK,IAE2B,IAApCD,EAAMD,GAAaG,SAASD,S,gBCZvC,IAAIxB,EAAkB,EAAQ,GAC1BhM,EAAS,EAAQ,IACjB0B,EAA8B,EAAQ,GAEtCgM,EAAc1B,EAAgB,eAC9B2B,EAAiBzE,MAAM5I,UAIQqC,MAA/BgL,EAAeD,IACjBhM,EAA4BiM,EAAgBD,EAAa1N,EAAO,OAIlEvB,EAAOD,QAAU,SAAUyB,GACzB0N,EAAeD,GAAazN,IAAO,I,6BCdrC,IAAI+C,EAAQ,EAAQ,GAEpBvE,EAAOD,QAAU,SAAU8O,EAAatJ,GACtC,IAAIyF,EAAS,GAAG6D,GAChB,OAAQ7D,IAAWzG,GAAM,WAEvByG,EAAO5K,KAAK,KAAMmF,GAAY,WAAc,MAAM,GAAM,Q,gBCP5D,IAAI4J,EAAa,EAAQ,IACrBC,EAA4B,EAAQ,IACpCC,EAA8B,EAAQ,IACtCxK,EAAW,EAAQ,GAGvB7E,EAAOD,QAAUoP,EAAW,UAAW,YAAc,SAAiBlN,GACpE,IAAIiH,EAAOkG,EAA0BpM,EAAE6B,EAAS5C,IAC5C+L,EAAwBqB,EAA4BrM,EACxD,OAAOgL,EAAwB9E,EAAKqB,OAAOyD,EAAsB/L,IAAOiH,I,cCT1E,IAAIoG,EAGJA,EAAI,WACH,OAAO/I,KADJ,GAIJ,IAEC+I,EAAIA,GAAK,IAAI9M,SAAS,cAAb,GACR,MAAO+M,GAEc,iBAAXlN,SAAqBiN,EAAIjN,QAOrCrC,EAAOD,QAAUuP,G,gBCnBjB,IAAI/M,EAAS,EAAQ,GACjBY,EAAY,EAAQ,IAGpBL,EAAQP,EADC,uBACiBY,EADjB,qBACmC,IAEhDnD,EAAOD,QAAU+C,G,gBCNjB,IAAIP,EAAS,EAAQ,GACjBsD,EAAyB,EAAQ,IAEjCgE,EAAUtH,EAAOsH,QAErB7J,EAAOD,QAA6B,mBAAZ8J,GAA0B,cAAc2F,KAAK3J,EAAuBzF,KAAKyJ,K,gBCLjG,IAAIgB,EAAY,EAAQ,IAGxB7K,EAAOD,QAAU,SAAUmH,EAAImB,EAAMI,GAEnC,GADAoC,EAAU3D,QACGhD,IAATmE,EAAoB,OAAOnB,EAC/B,OAAQuB,GACN,KAAK,EAAG,OAAO,WACb,OAAOvB,EAAG9G,KAAKiI,IAEjB,KAAK,EAAG,OAAO,SAAU7D,GACvB,OAAO0C,EAAG9G,KAAKiI,EAAM7D,IAEvB,KAAK,EAAG,OAAO,SAAUA,EAAGiL,GAC1B,OAAOvI,EAAG9G,KAAKiI,EAAM7D,EAAGiL,IAE1B,KAAK,EAAG,OAAO,SAAUjL,EAAGiL,EAAGnP,GAC7B,OAAO4G,EAAG9G,KAAKiI,EAAM7D,EAAGiL,EAAGnP,IAG/B,OAAO,WACL,OAAO4G,EAAGwI,MAAMrH,EAAM4C,c,6BCpB1B,IAAI3D,EAAkB,EAAQ,IAC1BuG,EAAmB,EAAQ,IAC3B8B,EAAY,EAAQ,IACpB7J,EAAsB,EAAQ,IAC9B8J,EAAiB,EAAQ,IAGzBC,EAAmB/J,EAAoB0D,IACvCzD,EAAmBD,EAAoBqE,UAFtB,kBAcrBnK,EAAOD,QAAU6P,EAAenF,MAAO,SAAS,SAAUqF,EAAUC,GAClEF,EAAiBtJ,KAAM,CACrB8D,KAhBiB,iBAiBjB7G,OAAQ8D,EAAgBwI,GACxBpH,MAAO,EACPqH,KAAMA,OAIP,WACD,IAAI3F,EAAQrE,EAAiBQ,MACzB/C,EAAS4G,EAAM5G,OACfuM,EAAO3F,EAAM2F,KACbrH,EAAQ0B,EAAM1B,QAClB,OAAKlF,GAAUkF,GAASlF,EAAOiF,QAC7B2B,EAAM5G,YAASU,EACR,CAAEhD,WAAOgD,EAAW8L,MAAM,IAEvB,QAARD,EAAuB,CAAE7O,MAAOwH,EAAOsH,MAAM,GACrC,UAARD,EAAyB,CAAE7O,MAAOsC,EAAOkF,GAAQsH,MAAM,GACpD,CAAE9O,MAAO,CAACwH,EAAOlF,EAAOkF,IAASsH,MAAM,KAC7C,UAKHL,EAAUM,UAAYN,EAAUlF,MAGhCoD,EAAiB,QACjBA,EAAiB,UACjBA,EAAiB,Y,6BCnDjB,IA8BIqC,EA9BA9L,EAAc,EAAQ,GACtB7B,EAAS,EAAQ,GACjBkC,EAAW,EAAQ,GACnBmB,EAAM,EAAQ,GACd0D,EAAU,EAAQ,IAClBrG,EAA8B,EAAQ,GACtCC,EAAW,EAAQ,IACnBtC,EAAiB,EAAQ,GAAuCoC,EAChEmN,EAAiB,EAAQ,IACzBC,EAAiB,EAAQ,IACzB7C,EAAkB,EAAQ,GAC1B3K,EAAM,EAAQ,IAEdyN,EAAW9N,EAAO8N,SAClBC,EAAoBD,GAAYA,EAASxO,UACzC0O,EAAYhO,EAAOgO,UACnBC,EAAqBD,GAAaA,EAAU1O,UAC5C4O,EAAoBlO,EAAOkO,kBAC3BC,EAA6BD,GAAqBA,EAAkB5O,UACpE8O,EAAaJ,GAAaJ,EAAeI,GACzCK,EAAsBJ,GAAsBL,EAAeK,GAC3DK,EAAkBlQ,OAAOkB,UACzBiP,EAAgBD,EAAgBC,cAEhCC,EAAgBxD,EAAgB,eAChCyD,EAAkBpO,EAAI,mBACtBqO,KAAyB1O,EAAO2O,cAAeb,GAE/Cc,EAA4BF,KAAyBb,GAA4C,UAA1B9G,EAAQ/G,EAAO6O,OACtFC,GAA0B,EAG1BC,EAA6B,CAC/Bf,UAAW,EACXgB,WAAY,EACZd,kBAAmB,EACnBe,WAAY,EACZC,YAAa,EACbC,WAAY,EACZC,YAAa,EACbC,aAAc,EACdC,aAAc,GAQZC,EAAe,SAAU7P,GAC3B,OAAOwC,EAASxC,IAAO2D,EAAI0L,EAA4BhI,EAAQrH,KA0DjE,IAAKiO,KAAQoB,EACN/O,EAAO2N,KAAOiB,GAA4B,GAIjD,KAAKA,GAAkD,mBAAdR,GAA4BA,IAAenO,SAASX,aAE3F8O,EAAa,WACX,MAAMjM,UAAU,yBAEdyM,GAA2B,IAAKjB,KAAQoB,EACtC/O,EAAO2N,IAAOE,EAAe7N,EAAO2N,GAAOS,GAInD,KAAKQ,IAA8BP,GAAuBA,IAAwBC,KAChFD,EAAsBD,EAAW9O,UAC7BsP,GAA2B,IAAKjB,KAAQoB,EACtC/O,EAAO2N,IAAOE,EAAe7N,EAAO2N,GAAMrO,UAAW+O,GAS7D,GAJIO,GAA6BhB,EAAeO,KAAgCE,GAC9ER,EAAeM,EAA4BE,GAGzCxM,IAAgBwB,EAAIgL,EAAqBG,GAK3C,IAAKb,KAJLmB,GAA0B,EAC1BzQ,EAAegQ,EAAqBG,EAAe,CAAEjQ,IAAK,WACxD,OAAO2D,EAAS8B,MAAQA,KAAKyK,QAAmB9M,KAErCoN,EAAgC/O,EAAO2N,IAClDjN,EAA4BV,EAAO2N,GAAOc,EAAiBd,GAK3De,GAAuBb,GAAkBD,EAAeG,KAAuBO,GACjFT,EAAeE,EAAmBO,GAGpC7Q,EAAOD,QAAU,CACfkR,oBAAqBA,EACrBE,0BAA2BA,EAC3BH,gBAAiBK,GAA2BL,EAC5Ce,YArGgB,SAAU9P,GAC1B,GAAI6P,EAAa7P,GAAK,OAAOA,EAC7B,MAAMyC,UAAU,gCAoGhBsN,uBAjG2B,SAAUvE,GACrC,GAAI2C,GACF,GAAIU,EAAc1Q,KAAKuQ,EAAYlD,GAAI,OAAOA,OACzC,IAAK,IAAIwE,KAASX,EAA4B,GAAI1L,EAAI0L,EAA4BpB,GAAO,CAC9F,IAAIgC,EAAwB3P,EAAO0P,GACnC,GAAIC,IAA0BzE,IAAMyE,GAAyBpB,EAAc1Q,KAAK8R,EAAuBzE,IACrG,OAAOA,EAET,MAAM/I,UAAU,4CA0FlByN,YAvFgB,SAAUC,EAAKxQ,EAAUqC,GACzC,GAAKG,EAAL,CACA,GAAIH,EAAQ,IAAK,IAAIgO,KAASX,EAA4B,CACxD,IAAIY,EAAwB3P,EAAO0P,GAC/BC,GAAyBtM,EAAIsM,EAAsBrQ,UAAWuQ,WACzDF,EAAsBrQ,UAAUuQ,GAGtCxB,EAAoBwB,KAAQnO,GAC/Bf,EAAS0N,EAAqBwB,EAAKnO,EAASrC,EACxCuP,GAA6BX,EAAmB4B,IAAQxQ,KA8E9DyQ,aA1EiB,SAAUD,EAAKxQ,EAAUqC,GAC1C,IAAIgO,EAAOC,EACX,GAAK9N,EAAL,CACA,GAAIgM,EAAgB,CAClB,GAAInM,EAAQ,IAAKgO,KAASX,GACxBY,EAAwB3P,EAAO0P,KACFrM,EAAIsM,EAAuBE,WAC/CF,EAAsBE,GAGjC,GAAKzB,EAAWyB,KAAQnO,EAKjB,OAHL,IACE,OAAOf,EAASyN,EAAYyB,EAAKnO,EAASrC,EAAWuP,GAA6BZ,EAAU6B,IAAQxQ,GACpG,MAAOc,KAGb,IAAKuP,KAASX,IACZY,EAAwB3P,EAAO0P,KACAC,EAAsBE,KAAQnO,GAC3Df,EAASgP,EAAuBE,EAAKxQ,KAuDzC0Q,OAlHW,SAAgBrQ,GAC3B,IAAIsQ,EAAQjJ,EAAQrH,GACpB,MAAiB,aAAVsQ,GAAwB3M,EAAI0L,EAA4BiB,IAiH/DT,aAAcA,EACdnB,WAAYA,EACZC,oBAAqBA,I,gBClKvB,IAAIhQ,EAAiB,EAAQ,GAAuCoC,EAChE4C,EAAM,EAAQ,GAGdmL,EAFkB,EAAQ,EAEVxD,CAAgB,eAEpCvN,EAAOD,QAAU,SAAUkC,EAAIuQ,EAAK1O,GAC9B7B,IAAO2D,EAAI3D,EAAK6B,EAAS7B,EAAKA,EAAGJ,UAAWkP,IAC9CnQ,EAAeqB,EAAI8O,EAAe,CAAEjK,cAAc,EAAM5F,MAAOsR,M,cCRnExS,EAAOD,QAAU,I,6BCCjB,IAWM0S,EACAC,EAZFC,EAAc,EAAQ,IAEtBC,EAAaC,OAAOhR,UAAUY,KAI9BqQ,EAAgBnO,OAAO9C,UAAU8M,QAEjCoE,EAAcH,EAEdI,GACEP,EAAM,IACNC,EAAM,MACVE,EAAWxS,KAAKqS,EAAK,KACrBG,EAAWxS,KAAKsS,EAAK,KACI,IAAlBD,EAAIQ,WAAqC,IAAlBP,EAAIO,WAIhCC,OAAuChP,IAAvB,OAAOzB,KAAK,IAAI,IAExBuQ,GAA4BE,KAGtCH,EAAc,SAAcI,GAC1B,IACIF,EAAWG,EAAQC,EAAOpT,EAD1BqT,EAAK/M,KAuBT,OApBI2M,IACFE,EAAS,IAAIP,OAAO,IAAMS,EAAG/P,OAAS,WAAYoP,EAAYvS,KAAKkT,KAEjEN,IAA0BC,EAAYK,EAAGL,WAE7CI,EAAQT,EAAWxS,KAAKkT,EAAIH,GAExBH,GAA4BK,IAC9BC,EAAGL,UAAYK,EAAG/Q,OAAS8Q,EAAM3K,MAAQ2K,EAAM,GAAG5K,OAASwK,GAEzDC,GAAiBG,GAASA,EAAM5K,OAAS,GAG3CqK,EAAc1S,KAAKiT,EAAM,GAAID,GAAQ,WACnC,IAAKnT,EAAI,EAAGA,EAAIgL,UAAUxC,OAAS,EAAGxI,SACfiE,IAAjB+G,UAAUhL,KAAkBoT,EAAMpT,QAAKiE,MAK1CmP,IAIXrT,EAAOD,QAAUgT,G,gBCrDjB,IAAI3O,EAAc,EAAQ,GACtBC,EAAuB,EAAQ,GAC/BQ,EAAW,EAAQ,GACnB0O,EAAa,EAAQ,IAIzBvT,EAAOD,QAAUqE,EAAczD,OAAOwK,iBAAmB,SAA0BnG,EAAGuH,GACpF1H,EAASG,GAKT,IAJA,IAGIxD,EAHA0H,EAAOqK,EAAWhH,GAClB9D,EAASS,EAAKT,OACdC,EAAQ,EAELD,EAASC,GAAOrE,EAAqBrB,EAAEgC,EAAGxD,EAAM0H,EAAKR,KAAU6D,EAAW/K,IACjF,OAAOwD,I,gBCdT,IAAImK,EAAa,EAAQ,IAEzBnP,EAAOD,QAAUoP,EAAW,WAAY,oB,gBCFxC,IAAIjM,EAAW,EAAQ,IACnByD,EAAW,EAAQ,KAEnBkK,EAAkBlQ,OAAOkB,UAIzB8E,IAAakK,EAAgBlK,UAC/BzD,EAAS2N,EAAiB,WAAYlK,EAAU,CAAEP,QAAQ,K,6BCP5D,IAAIuH,EAAI,EAAQ,GACZ6F,EAAW,EAAQ,IAA+B/G,QAClDgH,EAAoB,EAAQ,IAE5BC,EAAgB,GAAGjH,QAEnBkH,IAAkBD,GAAiB,EAAI,CAAC,GAAGjH,QAAQ,GAAI,GAAK,EAC5DmH,EAAgBH,EAAkB,WAItC9F,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,EAAM9J,OAAQ0P,GAAiBC,GAAiB,CAC1EnH,QAAS,SAAiBoH,GACxB,OAAOF,EAEHD,EAAchE,MAAMnJ,KAAM0E,YAAc,EACxCuI,EAASjN,KAAMsN,EAAe5I,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,6BChB5E,IAAIY,EAAc,EAAQ,IACtBT,EAAuB,EAAQ,GAC/BC,EAA2B,EAAQ,IAEvCtE,EAAOD,QAAU,SAAU4B,EAAQH,EAAKN,GACtC,IAAI4S,EAAchP,EAAYtD,GAC1BsS,KAAenS,EAAQ0C,EAAqBrB,EAAErB,EAAQmS,EAAaxP,EAAyB,EAAGpD,IAC9FS,EAAOmS,GAAe5S,I,6BCP7B,IAAIyM,EAAI,EAAQ,GACZlL,EAAO,EAAQ,IAEnBkL,EAAE,CAAEnK,OAAQ,SAAUuK,OAAO,EAAM9J,OAAQ,IAAIxB,OAASA,GAAQ,CAC9DA,KAAMA,K,6BCJR,IAAIkL,EAAI,EAAQ,GACZpL,EAAS,EAAQ,GACjBiD,EAAU,EAAQ,IAClBpB,EAAc,EAAQ,GACtBvB,EAAgB,EAAQ,IACxB0B,EAAQ,EAAQ,GAChBqB,EAAM,EAAQ,GACd8E,EAAU,EAAQ,IAClBjG,EAAW,EAAQ,GACnBI,EAAW,EAAQ,GACnB2C,EAAW,EAAQ,IACnBF,EAAkB,EAAQ,IAC1BxC,EAAc,EAAQ,IACtBR,EAA2B,EAAQ,IACnCyP,EAAqB,EAAQ,IAC7BR,EAAa,EAAQ,IACrBnE,EAA4B,EAAQ,IACpC4E,EAA8B,EAAQ,KACtC3E,EAA8B,EAAQ,IACtCnB,EAAiC,EAAQ,IACzC7J,EAAuB,EAAQ,GAC/BgD,EAA6B,EAAQ,IACrCpE,EAA8B,EAAQ,GACtCC,EAAW,EAAQ,IACnBP,EAAS,EAAQ,IACjBgH,EAAY,EAAQ,IACpBC,EAAa,EAAQ,IACrBhH,EAAM,EAAQ,IACd2K,EAAkB,EAAQ,GAC1B0G,EAA+B,EAAQ,IACvCC,EAAwB,EAAQ,IAChCC,EAAiB,EAAQ,IACzBrO,EAAsB,EAAQ,IAC9BsO,EAAW,EAAQ,IAAgCzL,QAEnD0L,EAAS1K,EAAU,UAGnB2K,EAAe/G,EAAgB,eAC/BsC,EAAmB/J,EAAoB0D,IACvCzD,EAAmBD,EAAoBqE,UAJ9B,UAKT0G,EAAkBlQ,OAAgB,UAClC4T,EAAUhS,EAAOvB,OACjBwT,EAAOjS,EAAOiS,KACdC,EAAsBD,GAAQA,EAAKE,UACnCnN,EAAiC2G,EAA+BlL,EAChE+B,EAAuBV,EAAqBrB,EAC5C2R,EAA4BX,EAA4BhR,EACxDkK,EAA6B7F,EAA2BrE,EACxD4R,EAAajS,EAAO,WACpBkS,EAAyBlS,EAAO,cAChCmS,EAAyBnS,EAAO,6BAChCoS,EAAyBpS,EAAO,6BAChCqS,EAAwBrS,EAAO,OAC/BsS,GAAU1S,EAAO0S,QAEjBC,IAAcD,KAAYA,GAAiB,YAAMA,GAAiB,UAAEE,UAGpEC,GAAsBhR,GAAeG,GAAM,WAC7C,OAES,GAFFwP,EAAmBhP,EAAqB,GAAI,IAAK,CACtDjE,IAAK,WAAc,OAAOiE,EAAqBwB,KAAM,IAAK,CAAErF,MAAO,IAAKsD,MACtEA,KACD,SAAUQ,EAAGC,EAAGC,GACnB,IAAImQ,EAA4B9N,EAA+BsJ,EAAiB5L,GAC5EoQ,UAAkCxE,EAAgB5L,GACtDF,EAAqBC,EAAGC,EAAGC,GACvBmQ,GAA6BrQ,IAAM6L,GACrC9L,EAAqB8L,EAAiB5L,EAAGoQ,IAEzCtQ,EAEAuQ,GAAO,SAAUC,EAAKC,GACxB,IAAIC,EAASb,EAAWW,GAAOxB,EAAmBQ,EAAiB,WAOnE,OANA1E,EAAiB4F,EAAQ,CACvBpL,KAvCS,SAwCTkL,IAAKA,EACLC,YAAaA,IAEVpR,IAAaqR,EAAOD,YAAcA,GAChCC,GAGLC,GAAW7S,GAA4C,iBAApB0R,EAAQoB,SAAuB,SAAU1T,GAC9E,MAAoB,iBAANA,GACZ,SAAUA,GACZ,OAAOtB,OAAOsB,aAAesS,GAG3BqB,GAAkB,SAAwB5Q,EAAGC,EAAGC,GAC9CF,IAAM6L,GAAiB+E,GAAgBf,EAAwB5P,EAAGC,GACtEL,EAASG,GACT,IAAIxD,EAAMsD,EAAYG,GAAG,GAEzB,OADAJ,EAASK,GACLU,EAAIgP,EAAYpT,IACb0D,EAAWrE,YAIV+E,EAAIZ,EAAGqP,IAAWrP,EAAEqP,GAAQ7S,KAAMwD,EAAEqP,GAAQ7S,IAAO,GACvD0D,EAAa6O,EAAmB7O,EAAY,CAAErE,WAAYyD,EAAyB,GAAG,OAJjFsB,EAAIZ,EAAGqP,IAAStP,EAAqBC,EAAGqP,EAAQ/P,EAAyB,EAAG,KACjFU,EAAEqP,GAAQ7S,IAAO,GAIV4T,GAAoBpQ,EAAGxD,EAAK0D,IAC9BH,EAAqBC,EAAGxD,EAAK0D,IAGpC2Q,GAAoB,SAA0B7Q,EAAGuH,GACnD1H,EAASG,GACT,IAAI8Q,EAAaxO,EAAgBiF,GAC7BrD,EAAOqK,EAAWuC,GAAYvL,OAAOwL,GAAuBD,IAIhE,OAHA1B,EAASlL,GAAM,SAAU1H,GAClB4C,IAAe4R,GAAsB5V,KAAK0V,EAAYtU,IAAMoU,GAAgB5Q,EAAGxD,EAAKsU,EAAWtU,OAE/FwD,GAOLgR,GAAwB,SAA8B3I,GACxD,IAAIpI,EAAIH,EAAYuI,GAAG,GACnBxM,EAAaqM,EAA2B9M,KAAKmG,KAAMtB,GACvD,QAAIsB,OAASsK,GAAmBjL,EAAIgP,EAAY3P,KAAOW,EAAIiP,EAAwB5P,QAC5EpE,IAAe+E,EAAIW,KAAMtB,KAAOW,EAAIgP,EAAY3P,IAAMW,EAAIW,KAAM8N,IAAW9N,KAAK8N,GAAQpP,KAAKpE,IAGlGoV,GAA4B,SAAkCjR,EAAGC,GACnE,IAAIhD,EAAKqF,EAAgBtC,GACrBxD,EAAMsD,EAAYG,GAAG,GACzB,GAAIhD,IAAO4O,IAAmBjL,EAAIgP,EAAYpT,IAASoE,EAAIiP,EAAwBrT,GAAnF,CACA,IAAImC,EAAa4D,EAA+BtF,EAAIT,GAIpD,OAHImC,IAAciC,EAAIgP,EAAYpT,IAAUoE,EAAI3D,EAAIoS,IAAWpS,EAAGoS,GAAQ7S,KACxEmC,EAAW9C,YAAa,GAEnB8C,IAGLuS,GAAuB,SAA6BlR,GACtD,IAAI0H,EAAQiI,EAA0BrN,EAAgBtC,IAClDuD,EAAS,GAIb,OAHA6L,EAAS1H,GAAO,SAAUlL,GACnBoE,EAAIgP,EAAYpT,IAASoE,EAAIgE,EAAYpI,IAAM+G,EAAO9C,KAAKjE,MAE3D+G,GAGLwN,GAAyB,SAA+B/Q,GAC1D,IAAImR,EAAsBnR,IAAM6L,EAC5BnE,EAAQiI,EAA0BwB,EAAsBtB,EAAyBvN,EAAgBtC,IACjGuD,EAAS,GAMb,OALA6L,EAAS1H,GAAO,SAAUlL,IACpBoE,EAAIgP,EAAYpT,IAAU2U,IAAuBvQ,EAAIiL,EAAiBrP,IACxE+G,EAAO9C,KAAKmP,EAAWpT,OAGpB+G,GAKJ1F,IAcHK,GAbAqR,EAAU,WACR,GAAIhO,gBAAgBgO,EAAS,MAAM7P,UAAU,+BAC7C,IAAI8Q,EAAevK,UAAUxC,aAA2BvE,IAAjB+G,UAAU,GAA+BtG,OAAOsG,UAAU,SAA7B/G,EAChEqR,EAAM3S,EAAI4S,GACVY,EAAS,SAAUlV,GACjBqF,OAASsK,GAAiBuF,EAAOhW,KAAKyU,EAAwB3T,GAC9D0E,EAAIW,KAAM8N,IAAWzO,EAAIW,KAAK8N,GAASkB,KAAMhP,KAAK8N,GAAQkB,IAAO,GACrEH,GAAoB7O,KAAMgP,EAAKjR,EAAyB,EAAGpD,KAG7D,OADIkD,GAAe8Q,IAAYE,GAAoBvE,EAAiB0E,EAAK,CAAEzO,cAAc,EAAM0C,IAAK4M,IAC7Fd,GAAKC,EAAKC,KAGO,UAAG,YAAY,WACvC,OAAOzP,EAAiBQ,MAAMgP,OAGhClO,EAA2BrE,EAAIgT,GAC/B3R,EAAqBrB,EAAI4S,GACzB1H,EAA+BlL,EAAIiT,GACnC7G,EAA0BpM,EAAIgR,EAA4BhR,EAAIkT,GAC9D7G,EAA4BrM,EAAI+S,GAE5B3R,IAEFW,EAAqBwP,EAAiB,UAAG,cAAe,CACtDzN,cAAc,EACdhG,IAAK,WACH,OAAOiF,EAAiBQ,MAAMiP,eAG7BhQ,GACHtC,EAAS2N,EAAiB,uBAAwBmF,GAAuB,CAAE5P,QAAQ,KAIvF6N,EAA6BjR,EAAI,SAAUxC,GACzC,OAAO8U,GAAK/H,EAAgB/M,GAAOA,KAIvCmN,EAAE,CAAEpL,QAAQ,EAAM+S,MAAM,EAAMrR,QAASpB,EAAesB,MAAOtB,GAAiB,CAC5E7B,OAAQuT,IAGVH,EAASb,EAAWyB,IAAwB,SAAUxU,GACpD0T,EAAsB1T,MAGxBmN,EAAE,CAAEnK,OA9KS,SA8KOO,MAAM,EAAME,QAASpB,GAAiB,CAGxD,IAAO,SAAUrB,GACf,IAAIkN,EAAS/J,OAAOnD,GACpB,GAAIoE,EAAIkP,EAAwBpG,GAAS,OAAOoG,EAAuBpG,GACvE,IAAI+G,EAASlB,EAAQ7F,GAGrB,OAFAoG,EAAuBpG,GAAU+G,EACjCV,EAAuBU,GAAU/G,EAC1B+G,GAITY,OAAQ,SAAgBC,GACtB,IAAKZ,GAASY,GAAM,MAAM5R,UAAU4R,EAAM,oBAC1C,GAAI1Q,EAAImP,EAAwBuB,GAAM,OAAOvB,EAAuBuB,IAEtEC,UAAW,WAAcrB,IAAa,GACtCsB,UAAW,WAActB,IAAa,KAGxCvH,EAAE,CAAEnK,OAAQ,SAAUO,MAAM,EAAME,QAASpB,EAAesB,MAAOC,GAAe,CAG9E7C,OAvHY,SAAgByD,EAAGuH,GAC/B,YAAsBrI,IAAfqI,EAA2BwH,EAAmB/O,GAAK6Q,GAAkB9B,EAAmB/O,GAAIuH,IAyHnG3L,eAAgBgV,GAGhBzK,iBAAkB0K,GAGlB9S,yBAA0BkT,KAG5BtI,EAAE,CAAEnK,OAAQ,SAAUO,MAAM,EAAME,QAASpB,GAAiB,CAG1D2H,oBAAqB0L,GAGrBlI,sBAAuB+H,KAKzBpI,EAAE,CAAEnK,OAAQ,SAAUO,MAAM,EAAME,OAAQM,GAAM,WAAc8K,EAA4BrM,EAAE,OAAU,CACpGgL,sBAAuB,SAA+B/L,GACpD,OAAOoN,EAA4BrM,EAAEwE,EAASvF,OAMlDuS,GAAQ7G,EAAE,CAAEnK,OAAQ,OAAQO,MAAM,EAAME,QAASpB,GAAiB0B,GAAM,WACtE,IAAIkR,EAASlB,IAEb,MAAwC,UAAjCE,EAAoB,CAACgB,KAEe,MAAtChB,EAAoB,CAAEjQ,EAAGiR,KAEc,MAAvChB,EAAoB9T,OAAO8U,QAC5B,CACJf,UAAW,SAAmBzS,GAI5B,IAHA,IAEIwU,EAAUC,EAFVC,EAAO,CAAC1U,GACRyG,EAAQ,EAELuC,UAAUxC,OAASC,GAAOiO,EAAKlR,KAAKwF,UAAUvC,MAErD,GADAgO,EAAYD,EAAWE,EAAK,IACvBlS,EAASgS,SAAoBvS,IAAPjC,KAAoByT,GAASzT,GAMxD,OALKyI,EAAQ+L,KAAWA,EAAW,SAAUjV,EAAKN,GAEhD,GADwB,mBAAbwV,IAAyBxV,EAAQwV,EAAUtW,KAAKmG,KAAM/E,EAAKN,KACjEwU,GAASxU,GAAQ,OAAOA,IAE/ByV,EAAK,GAAKF,EACHhC,EAAoB/E,MAAM8E,EAAMmC,MAMtCpC,EAAiB,UAAED,IACtBrR,EAA4BsR,EAAiB,UAAGD,EAAcC,EAAiB,UAAEnN,SAInF+M,EAAeI,EArQF,UAuQb3K,EAAWyK,IAAU,G,cC1SrBrU,EAAOD,QAAU,iD,6BCCjB,IAAI4N,EAAI,EAAQ,GACZvJ,EAAc,EAAQ,GACtB7B,EAAS,EAAQ,GACjBqD,EAAM,EAAQ,GACdnB,EAAW,EAAQ,GACnB7D,EAAiB,EAAQ,GAAuCoC,EAChEI,EAA4B,EAAQ,IAEpCwT,EAAerU,EAAOvB,OAE1B,GAAIoD,GAAsC,mBAAhBwS,MAAiC,gBAAiBA,EAAa/U,iBAExDqC,IAA/B0S,IAAepB,aACd,CACD,IAAIqB,EAA8B,GAE9BC,EAAgB,WAClB,IAAItB,EAAcvK,UAAUxC,OAAS,QAAsBvE,IAAjB+G,UAAU,QAAmB/G,EAAYS,OAAOsG,UAAU,IAChG1C,EAAShC,gBAAgBuQ,EACzB,IAAIF,EAAapB,QAEDtR,IAAhBsR,EAA4BoB,IAAiBA,EAAapB,GAE9D,MADoB,KAAhBA,IAAoBqB,EAA4BtO,IAAU,GACvDA,GAETnF,EAA0B0T,EAAeF,GACzC,IAAIG,EAAkBD,EAAcjV,UAAY+U,EAAa/U,UAC7DkV,EAAgBrJ,YAAcoJ,EAE9B,IAAIE,EAAiBD,EAAgBpQ,SACjCsQ,EAAyC,gBAAhCtS,OAAOiS,EAAa,SAC7BM,EAAS,wBACbtW,EAAemW,EAAiB,cAAe,CAC7CjQ,cAAc,EACdhG,IAAK,WACH,IAAI2U,EAAShR,EAAS8B,MAAQA,KAAKa,UAAYb,KAC3CmI,EAASsI,EAAe5W,KAAKqV,GACjC,GAAI7P,EAAIiR,EAA6BpB,GAAS,MAAO,GACrD,IAAI0B,EAAOF,EAASvI,EAAO9H,MAAM,GAAI,GAAK8H,EAAOC,QAAQuI,EAAQ,MACjE,MAAgB,KAATC,OAAcjT,EAAYiT,KAIrCxJ,EAAE,CAAEpL,QAAQ,EAAM0B,QAAQ,GAAQ,CAChCjD,OAAQ8V,M,gBC/CgB,EAAQ,GAIpC5C,CAAsB,a,6BCHtB,IAAIkD,EAAS,EAAQ,IAAiCA,OAClDtR,EAAsB,EAAQ,IAC9B8J,EAAiB,EAAQ,IAGzBC,EAAmB/J,EAAoB0D,IACvCzD,EAAmBD,EAAoBqE,UAFrB,mBAMtByF,EAAejL,OAAQ,UAAU,SAAUmL,GACzCD,EAAiBtJ,KAAM,CACrB8D,KARkB,kBASlBqE,OAAQ/J,OAAOmL,GACfpH,MAAO,OAIR,WACD,IAGI2O,EAHAjN,EAAQrE,EAAiBQ,MACzBmI,EAAStE,EAAMsE,OACfhG,EAAQ0B,EAAM1B,MAElB,OAAIA,GAASgG,EAAOjG,OAAe,CAAEvH,WAAOgD,EAAW8L,MAAM,IAC7DqH,EAAQD,EAAO1I,EAAQhG,GACvB0B,EAAM1B,OAAS2O,EAAM5O,OACd,CAAEvH,MAAOmW,EAAOrH,MAAM,Q,gBC3B/B,IAAIzN,EAAS,EAAQ,GACjB+U,EAAe,EAAQ,IACvBC,EAAuB,EAAQ,IAC/BtU,EAA8B,EAAQ,GACtCsK,EAAkB,EAAQ,GAE1BiK,EAAWjK,EAAgB,YAC3BwD,EAAgBxD,EAAgB,eAChCkK,EAAcF,EAAqBG,OAEvC,IAAK,IAAIC,KAAmBL,EAAc,CACxC,IAAIM,EAAarV,EAAOoV,GACpBE,EAAsBD,GAAcA,EAAW/V,UACnD,GAAIgW,EAAqB,CAEvB,GAAIA,EAAoBL,KAAcC,EAAa,IACjDxU,EAA4B4U,EAAqBL,EAAUC,GAC3D,MAAO/U,GACPmV,EAAoBL,GAAYC,EAKlC,GAHKI,EAAoB9G,IACvB9N,EAA4B4U,EAAqB9G,EAAe4G,GAE9DL,EAAaK,GAAkB,IAAK,IAAI9I,KAAe0I,EAEzD,GAAIM,EAAoBhJ,KAAiB0I,EAAqB1I,GAAc,IAC1E5L,EAA4B4U,EAAqBhJ,EAAa0I,EAAqB1I,IACnF,MAAOnM,GACPmV,EAAoBhJ,GAAe0I,EAAqB1I,O,6BC3BhE,IAAIlB,EAAI,EAAQ,GACZxI,EAAgB,EAAQ,IACxBmC,EAAkB,EAAQ,IAC1BmM,EAAoB,EAAQ,IAE5BqE,EAAa,GAAGxR,KAEhByR,EAAc5S,GAAiBxE,OAC/BiT,EAAgBH,EAAkB,OAAQ,KAI9C9F,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,EAAM9J,OAAQ8T,GAAenE,GAAiB,CACxEtN,KAAM,SAAc0R,GAClB,OAAOF,EAAW1X,KAAKkH,EAAgBf,WAAqBrC,IAAd8T,EAA0B,IAAMA,O,6BCdlF,IAAIrK,EAAI,EAAQ,GACZpJ,EAAQ,EAAQ,GAChBmG,EAAU,EAAQ,IAClBjG,EAAW,EAAQ,GACnB+C,EAAW,EAAQ,IACnBC,EAAW,EAAQ,IACnBwQ,EAAiB,EAAQ,IACzBvQ,EAAqB,EAAQ,IAC7BwQ,EAA+B,EAAQ,IAGvCC,EAFkB,EAAQ,EAEH5K,CAAgB,sBAIvC6K,GAAgC7T,GAAM,WACxC,IAAIuK,EAAQ,GAEZ,OADAA,EAAMqJ,IAAwB,EACvBrJ,EAAMvE,SAAS,KAAOuE,KAG3BuJ,EAAkBH,EAA6B,UAE/CI,EAAqB,SAAUtT,GACjC,IAAKP,EAASO,GAAI,OAAO,EACzB,IAAIuT,EAAavT,EAAEmT,GACnB,YAAsBjU,IAAfqU,IAA6BA,EAAa7N,EAAQ1F,IAQ3D2I,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,EAAM9J,QALpBmU,IAAiCC,GAKK,CAClD9N,OAAQ,SAAgBI,GACtB,IAGI1K,EAAGuY,EAAG/P,EAAQgQ,EAAKC,EAHnB1T,EAAIwC,EAASjB,MACboS,EAAIjR,EAAmB1C,EAAG,GAC1BtD,EAAI,EAER,IAAKzB,GAAK,EAAGwI,EAASwC,UAAUxC,OAAQxI,EAAIwI,EAAQxI,IAElD,GADAyY,GAAW,IAAPzY,EAAW+E,EAAIiG,UAAUhL,GACzBqY,EAAmBI,GAAI,CAEzB,GAAIhX,GADJ+W,EAAMhR,EAASiR,EAAEjQ,SA/BF,iBAgCiB,MAAM/D,UA/BT,kCAgC7B,IAAK8T,EAAI,EAAGA,EAAIC,EAAKD,IAAK9W,IAAS8W,KAAKE,GAAGT,EAAeU,EAAGjX,EAAGgX,EAAEF,QAC7D,CACL,GAAI9W,GAnCW,iBAmCY,MAAMgD,UAlCJ,kCAmC7BuT,EAAeU,EAAGjX,IAAKgX,GAI3B,OADAC,EAAElQ,OAAS/G,EACJiX,M,gBCrDX5Y,EAAQiD,EAAI,EAAQ,I,gBCApB,IAAI4H,EAAO,EAAQ,IACfhF,EAAM,EAAQ,GACdqO,EAA+B,EAAQ,IACvCrT,EAAiB,EAAQ,GAAuCoC,EAEpEhD,EAAOD,QAAU,SAAUmQ,GACzB,IAAIlP,EAAS4J,EAAK5J,SAAW4J,EAAK5J,OAAS,IACtC4E,EAAI5E,EAAQkP,IAAOtP,EAAeI,EAAQkP,EAAM,CACnDhP,MAAO+S,EAA6BjR,EAAEkN,O,gBCR1C,IAAI7K,EAAY,EAAQ,IACpBD,EAAyB,EAAQ,IAGjCuC,EAAe,SAAUiR,GAC3B,OAAO,SAAUzQ,EAAO0Q,GACtB,IAGIC,EAAOC,EAHPC,EAAIrU,OAAOS,EAAuB+C,IAClC8Q,EAAW5T,EAAUwT,GACrBK,EAAOF,EAAEvQ,OAEb,OAAIwQ,EAAW,GAAKA,GAAYC,EAAaN,EAAoB,QAAK1U,GACtE4U,EAAQE,EAAEG,WAAWF,IACN,OAAUH,EAAQ,OAAUG,EAAW,IAAMC,IACtDH,EAASC,EAAEG,WAAWF,EAAW,IAAM,OAAUF,EAAS,MAC1DH,EAAoBI,EAAE5B,OAAO6B,GAAYH,EACzCF,EAAoBI,EAAEpS,MAAMqS,EAAUA,EAAW,GAA+BF,EAAS,OAAlCD,EAAQ,OAAU,IAA0B,QAI7G9Y,EAAOD,QAAU,CAGfqZ,OAAQzR,GAAa,GAGrByP,OAAQzP,GAAa,K,eCzBvB,YACA3H,EAAOD,QAAUsZ,I,+BCDjB,IAAIzT,EAAM,EAAQ,GACd4B,EAAW,EAAQ,IACnBmC,EAAY,EAAQ,IACpB2P,EAA2B,EAAQ,KAEnC/N,EAAW5B,EAAU,YACrBkH,EAAkBlQ,OAAOkB,UAI7B7B,EAAOD,QAAUuZ,EAA2B3Y,OAAOwP,eAAiB,SAAUnL,GAE5E,OADAA,EAAIwC,EAASxC,GACTY,EAAIZ,EAAGuG,GAAkBvG,EAAEuG,GACH,mBAAjBvG,EAAE0I,aAA6B1I,aAAaA,EAAE0I,YAChD1I,EAAE0I,YAAY7L,UACdmD,aAAarE,OAASkQ,EAAkB,O,gBCfnD,IAAIhM,EAAW,EAAQ,GACnB0U,EAAqB,EAAQ,IAMjCvZ,EAAOD,QAAUY,OAAOyP,iBAAmB,aAAe,GAAK,WAC7D,IAEIgG,EAFAoD,GAAiB,EACjBhK,EAAO,GAEX,KACE4G,EAASzV,OAAOoC,yBAAyBpC,OAAOkB,UAAW,aAAa2H,KACjEpJ,KAAKoP,EAAM,IAClBgK,EAAiBhK,aAAgB/E,MACjC,MAAO/H,IACT,OAAO,SAAwBsC,EAAG+I,GAKhC,OAJAlJ,EAASG,GACTuU,EAAmBxL,GACfyL,EAAgBpD,EAAOhW,KAAK4E,EAAG+I,GAC9B/I,EAAEyU,UAAY1L,EACZ/I,GAdoD,QAgBzDd,I,6BCtBN,IAAIW,EAAW,EAAQ,GAIvB7E,EAAOD,QAAU,WACf,IAAIsI,EAAOxD,EAAS0B,MAChBgC,EAAS,GAOb,OANIF,EAAK9F,SAAQgG,GAAU,KACvBF,EAAKqR,aAAYnR,GAAU,KAC3BF,EAAKsR,YAAWpR,GAAU,KAC1BF,EAAKuR,SAAQrR,GAAU,KACvBF,EAAKwR,UAAStR,GAAU,KACxBF,EAAKyR,SAAQvR,GAAU,KACpBA,I,gBCdT,IAAIrF,EAAW,EAAQ,IAEnB6W,EAAgBC,KAAKnY,UAGrBoY,EAAqBF,EAAuB,SAC5CG,EAAUH,EAAcG,QAIxB,IAAIF,KAAKG,KAAO,IAPD,gBAQjBjX,EAAS6W,EAPK,YAOqB,WACjC,IAAI7Y,EAAQgZ,EAAQ9Z,KAAKmG,MAEzB,OAAOrF,GAAUA,EAAQ+Y,EAAmB7Z,KAAKmG,MAXlC,mB,gBCHnB,IAAInB,EAAyB,EAAQ,IAGjCgV,EAAa,IAFC,EAAQ,IAEW,IACjCC,EAAQxH,OAAO,IAAMuH,EAAaA,EAAa,KAC/CE,EAAQzH,OAAOuH,EAAaA,EAAa,MAGzCzS,EAAe,SAAUC,GAC3B,OAAO,SAAUO,GACf,IAAIuG,EAAS/J,OAAOS,EAAuB+C,IAG3C,OAFW,EAAPP,IAAU8G,EAASA,EAAOC,QAAQ0L,EAAO,KAClC,EAAPzS,IAAU8G,EAASA,EAAOC,QAAQ2L,EAAO,KACtC5L,IAIX1O,EAAOD,QAAU,CAGfwa,MAAO5S,EAAa,GAGpB6S,IAAK7S,EAAa,GAGlB8S,KAAM9S,EAAa,K,6BCzBrB,IAAI+S,EAAgC,EAAQ,IACxC7V,EAAW,EAAQ,GACnB2C,EAAW,EAAQ,IACnBC,EAAW,EAAQ,IACnBpC,EAAY,EAAQ,IACpBD,EAAyB,EAAQ,IACjCuV,EAAqB,EAAQ,IAC7BC,EAAa,EAAQ,IAErBjO,EAAMzK,KAAKyK,IACXrH,EAAMpD,KAAKoD,IACXmB,EAAQvE,KAAKuE,MACboU,EAAuB,4BACvBC,EAAgC,oBAOpCJ,EAA8B,UAAW,GAAG,SAAUK,EAASjI,EAAekI,GAC5E,MAAO,CAGL,SAAiBC,EAAaC,GAC5B,IAAIlW,EAAII,EAAuBmB,MAC3BkQ,EAA0BvS,MAAf+W,OAA2B/W,EAAY+W,EAAYF,GAClE,YAAoB7W,IAAbuS,EACHA,EAASrW,KAAK6a,EAAajW,EAAGkW,GAC9BpI,EAAc1S,KAAKuE,OAAOK,GAAIiW,EAAaC,IAIjD,SAAUhE,EAAQgE,GAChB,IAAIC,EAAMH,EAAgBlI,EAAeoE,EAAQ3Q,KAAM2U,GACvD,GAAIC,EAAInL,KAAM,OAAOmL,EAAIja,MAEzB,IAAIka,EAAKvW,EAASqS,GACd8B,EAAIrU,OAAO4B,MAEX8U,EAA4C,mBAAjBH,EAC1BG,IAAmBH,EAAevW,OAAOuW,IAE9C,IAAI3Y,EAAS6Y,EAAG7Y,OAChB,GAAIA,EAAQ,CACV,IAAI+Y,EAAcF,EAAGvB,QACrBuB,EAAGnI,UAAY,EAGjB,IADA,IAAIsI,EAAU,KACD,CACX,IAAIhT,EAASqS,EAAWQ,EAAIpC,GAC5B,GAAe,OAAXzQ,EAAiB,MAGrB,GADAgT,EAAQ9V,KAAK8C,IACRhG,EAAQ,MAGI,KADFoC,OAAO4D,EAAO,MACR6S,EAAGnI,UAAY0H,EAAmB3B,EAAGvR,EAAS2T,EAAGnI,WAAYqI,IAKpF,IAFA,IA7CwBrZ,EA6CpBuZ,EAAoB,GACpBC,EAAqB,EAChBxb,EAAI,EAAGA,EAAIsb,EAAQ9S,OAAQxI,IAAK,CACvCsI,EAASgT,EAAQtb,GAUjB,IARA,IAAIyb,EAAU/W,OAAO4D,EAAO,IACxB0Q,EAAWtM,EAAIrH,EAAID,EAAUkD,EAAOG,OAAQsQ,EAAEvQ,QAAS,GACvDkT,EAAW,GAMNC,EAAI,EAAGA,EAAIrT,EAAOE,OAAQmT,IAAKD,EAASlW,UAzDzCvB,KADcjC,EA0D8CsG,EAAOqT,IAzDvD3Z,EAAK0C,OAAO1C,IA0DhC,IAAI4Z,EAAgBtT,EAAOuT,OAC3B,GAAIT,EAAmB,CACrB,IAAIU,EAAe,CAACL,GAASnR,OAAOoR,EAAU1C,EAAUD,QAClC9U,IAAlB2X,GAA6BE,EAAatW,KAAKoW,GACnD,IAAI1N,EAAcxJ,OAAOuW,EAAaxL,WAAMxL,EAAW6X,SAEvD5N,EAAc6N,EAAgBN,EAAS1C,EAAGC,EAAU0C,EAAUE,EAAeX,GAE3EjC,GAAYwC,IACdD,GAAqBxC,EAAEpS,MAAM6U,EAAoBxC,GAAY9K,EAC7DsN,EAAqBxC,EAAWyC,EAAQjT,QAG5C,OAAO+S,EAAoBxC,EAAEpS,MAAM6U,KAKvC,SAASO,EAAgBN,EAASvI,EAAK8F,EAAU0C,EAAUE,EAAe1N,GACxE,IAAI8N,EAAUhD,EAAWyC,EAAQjT,OAC7BpI,EAAIsb,EAASlT,OACbyT,EAAUpB,EAKd,YAJsB5W,IAAlB2X,IACFA,EAAgBrU,EAASqU,GACzBK,EAAUrB,GAEL/H,EAAc1S,KAAK+N,EAAa+N,GAAS,SAAU7I,EAAO8I,GAC/D,IAAIC,EACJ,OAAQD,EAAG/E,OAAO,IAChB,IAAK,IAAK,MAAO,IACjB,IAAK,IAAK,OAAOsE,EACjB,IAAK,IAAK,OAAOvI,EAAIvM,MAAM,EAAGqS,GAC9B,IAAK,IAAK,OAAO9F,EAAIvM,MAAMqV,GAC3B,IAAK,IACHG,EAAUP,EAAcM,EAAGvV,MAAM,GAAI,IACrC,MACF,QACE,IAAIlF,GAAKya,EACT,GAAU,IAANza,EAAS,OAAO2R,EACpB,GAAI3R,EAAIrB,EAAG,CACT,IAAI2C,EAAIyD,EAAM/E,EAAI,IAClB,OAAU,IAANsB,EAAgBqQ,EAChBrQ,GAAK3C,OAA8B6D,IAApByX,EAAS3Y,EAAI,GAAmBmZ,EAAG/E,OAAO,GAAKuE,EAAS3Y,EAAI,GAAKmZ,EAAG/E,OAAO,GACvF/D,EAET+I,EAAUT,EAASja,EAAI,GAE3B,YAAmBwC,IAAZkY,EAAwB,GAAKA,U,6BCzH1C,IAAIzO,EAAI,EAAQ,GACZ0O,EAA4B,EAAQ,KACpClM,EAAiB,EAAQ,IACzBC,EAAiB,EAAQ,IACzB+D,EAAiB,EAAQ,IACzBlR,EAA8B,EAAQ,GACtCC,EAAW,EAAQ,IACnBqK,EAAkB,EAAQ,GAC1B/H,EAAU,EAAQ,IAClBmK,EAAY,EAAQ,IACpB2M,EAAgB,EAAQ,IAExBC,EAAoBD,EAAcC,kBAClCC,EAAyBF,EAAcE,uBACvChF,EAAWjK,EAAgB,YAK3BkP,EAAa,WAAc,OAAOlW,MAEtCvG,EAAOD,QAAU,SAAU2c,EAAUxM,EAAMyM,EAAqBC,EAAMC,EAASC,EAAQC,GACrFV,EAA0BM,EAAqBzM,EAAM0M,GAErD,IAkBII,EAA0BC,EAAS7K,EAlBnC8K,EAAqB,SAAUC,GACjC,GAAIA,IAASN,GAAWO,EAAiB,OAAOA,EAChD,IAAKZ,GAA0BW,KAAQE,EAAmB,OAAOA,EAAkBF,GACnF,OAAQA,GACN,IAbK,OAcL,IAbO,SAcP,IAbQ,UAaM,OAAO,WAAqB,OAAO,IAAIR,EAAoBpW,KAAM4W,IAC/E,OAAO,WAAc,OAAO,IAAIR,EAAoBpW,QAGpDwK,EAAgBb,EAAO,YACvBoN,GAAwB,EACxBD,EAAoBX,EAAS7a,UAC7B0b,EAAiBF,EAAkB7F,IAClC6F,EAAkB,eAClBR,GAAWQ,EAAkBR,GAC9BO,GAAmBZ,GAA0Be,GAAkBL,EAAmBL,GAClFW,EAA4B,SAARtN,GAAkBmN,EAAkBI,SAA4BF,EAiCxF,GA7BIC,IACFR,EAA2B7M,EAAeqN,EAAkBpd,KAAK,IAAIsc,IACjEH,IAAsB5b,OAAOkB,WAAamb,EAAyBJ,OAChEpX,GAAW2K,EAAe6M,KAA8BT,IACvDnM,EACFA,EAAe4M,EAA0BT,GACa,mBAAtCS,EAAyBxF,IACzCvU,EAA4B+Z,EAA0BxF,EAAUiF,IAIpEtI,EAAe6I,EAA0BjM,GAAe,GAAM,GAC1DvL,IAASmK,EAAUoB,GAAiB0L,KAzCjC,UA8CPI,GAAqBU,GA9Cd,WA8CgCA,EAAe/c,OACxD8c,GAAwB,EACxBF,EAAkB,WAAoB,OAAOG,EAAend,KAAKmG,QAI7Df,IAAWuX,GAAWM,EAAkB7F,KAAc4F,GAC1Dna,EAA4Boa,EAAmB7F,EAAU4F,GAE3DzN,EAAUO,GAAQkN,EAGdP,EAMF,GALAI,EAAU,CACRvF,OAAQwF,EA5DD,UA6DPhU,KAAM4T,EAASM,EAAkBF,EA9D5B,QA+DLO,QAASP,EA7DD,YA+DNH,EAAQ,IAAK3K,KAAO6K,GAClBT,IAA0Bc,GAA2BlL,KAAOiL,GAC9Dna,EAASma,EAAmBjL,EAAK6K,EAAQ7K,SAEtCzE,EAAE,CAAEnK,OAAQ0M,EAAMnC,OAAO,EAAM9J,OAAQuY,GAA0Bc,GAAyBL,GAGnG,OAAOA,I,6BCvFT,IAaIV,EAAmBmB,EAAmCC,EAbtDxN,EAAiB,EAAQ,IACzBlN,EAA8B,EAAQ,GACtC2C,EAAM,EAAQ,GACd2H,EAAkB,EAAQ,GAC1B/H,EAAU,EAAQ,IAElBgS,EAAWjK,EAAgB,YAC3BiP,GAAyB,EAQzB,GAAGtT,OAGC,SAFNyU,EAAgB,GAAGzU,SAIjBwU,EAAoCvN,EAAeA,EAAewN,OACxBhd,OAAOkB,YAAW0a,EAAoBmB,GAHlDlB,GAAyB,GAOlCtY,MAArBqY,IAAgCA,EAAoB,IAGnD/W,GAAYI,EAAI2W,EAAmB/E,IACtCvU,EAA4BsZ,EAAmB/E,GApBhC,WAAc,OAAOjR,QAuBtCvG,EAAOD,QAAU,CACfwc,kBAAmBA,EACnBC,uBAAwBA,I,6BClC1B,IAAIvZ,EAA8B,EAAQ,GACtCC,EAAW,EAAQ,IACnBqB,EAAQ,EAAQ,GAChBgJ,EAAkB,EAAQ,GAC1BqQ,EAAa,EAAQ,IAErBtQ,EAAUC,EAAgB,WAE1BsQ,GAAiCtZ,GAAM,WAIzC,IAAI+O,EAAK,IAMT,OALAA,EAAG7Q,KAAO,WACR,IAAI8F,EAAS,GAEb,OADAA,EAAOuT,OAAS,CAAEtX,EAAG,KACd+D,GAEyB,MAA3B,GAAGoG,QAAQ2E,EAAI,WAKpBwK,GAAqCvZ,GAAM,WAC7C,IAAI+O,EAAK,OACLyK,EAAezK,EAAG7Q,KACtB6Q,EAAG7Q,KAAO,WAAc,OAAOsb,EAAarO,MAAMnJ,KAAM0E,YACxD,IAAI1C,EAAS,KAAKpC,MAAMmN,GACxB,OAAyB,IAAlB/K,EAAOE,QAA8B,MAAdF,EAAO,IAA4B,MAAdA,EAAO,MAG5DvI,EAAOD,QAAU,SAAUqS,EAAK3J,EAAQhG,EAAM0B,GAC5C,IAAI6Z,EAASzQ,EAAgB6E,GAEzB6L,GAAuB1Z,GAAM,WAE/B,IAAIS,EAAI,GAER,OADAA,EAAEgZ,GAAU,WAAc,OAAO,GACZ,GAAd,GAAG5L,GAAKpN,MAGbkZ,EAAoBD,IAAwB1Z,GAAM,WAEpD,IAAI4Z,GAAa,EACb7K,EAAK,IAWT,OAVAA,EAAG7Q,KAAO,WAAiC,OAAnB0b,GAAa,EAAa,MAEtC,UAAR/L,IAGFkB,EAAG5F,YAAc,GACjB4F,EAAG5F,YAAYJ,GAAW,WAAc,OAAOgG,IAGjDA,EAAG0K,GAAQ,KACHG,KAGV,IACGF,IACAC,GACQ,YAAR9L,IAAsByL,GACd,UAARzL,IAAoB0L,EACrB,CACA,IAAIM,EAAqB,IAAIJ,GACzBf,EAAUxa,EAAKub,EAAQ,GAAG5L,IAAM,SAAUiM,EAAcnH,EAAQ/D,EAAKmL,EAAMC,GAC7E,OAAIrH,EAAOzU,OAASmb,EACdK,IAAwBM,EAInB,CAAEvO,MAAM,EAAM9O,MAAOkd,EAAmBhe,KAAK8W,EAAQ/D,EAAKmL,IAE5D,CAAEtO,MAAM,EAAM9O,MAAOmd,EAAaje,KAAK+S,EAAK+D,EAAQoH,IAEtD,CAAEtO,MAAM,MAEbwO,EAAevB,EAAQ,GACvBwB,EAAcxB,EAAQ,GAE1B/Z,EAASyB,OAAO9C,UAAWuQ,EAAKoM,GAChCtb,EAAS2P,OAAOhR,UAAWmc,EAAkB,GAAVvV,EAG/B,SAAUiG,EAAQ/D,GAAO,OAAO8T,EAAYre,KAAKsO,EAAQnI,KAAMoE,IAG/D,SAAU+D,GAAU,OAAO+P,EAAYre,KAAKsO,EAAQnI,QAEpDpC,GAAMlB,EAA4B4P,OAAOhR,UAAUmc,GAAS,QAAQ,M,gBC1F5E,IAAI1U,EAAU,EAAQ,IAClBsU,EAAa,EAAQ,IAIzB5d,EAAOD,QAAU,SAAU2e,EAAG1F,GAC5B,IAAIvW,EAAOic,EAAEjc,KACb,GAAoB,mBAATA,EAAqB,CAC9B,IAAI8F,EAAS9F,EAAKrC,KAAKse,EAAG1F,GAC1B,GAAsB,iBAAXzQ,EACT,MAAM7D,UAAU,sEAElB,OAAO6D,EAGT,GAAmB,WAAfe,EAAQoV,GACV,MAAMha,UAAU,+CAGlB,OAAOkZ,EAAWxd,KAAKse,EAAG1F,K,cCjB5BhZ,EAAOD,QAAU,CACf4e,YAAa,EACbC,oBAAqB,EACrBC,aAAc,EACdC,eAAgB,EAChBC,YAAa,EACbC,cAAe,EACfC,aAAc,EACdC,qBAAsB,EACtBC,SAAU,EACVC,kBAAmB,EACnBC,eAAgB,EAChBC,gBAAiB,EACjBC,kBAAmB,EACnBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,SAAU,EACVC,iBAAkB,EAClBC,OAAQ,EACRC,YAAa,EACbC,cAAe,EACfC,cAAe,EACfC,eAAgB,EAChBC,aAAc,EACdC,cAAe,EACfC,iBAAkB,EAClBC,iBAAkB,EAClBC,eAAgB,EAChBC,iBAAkB,EAClBC,cAAe,EACfC,UAAW,I,6BChCb,IAAI9S,EAAI,EAAQ,GACZ+S,EAAU,EAAQ,IAAgC7X,OAMtD8E,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,EAAM9J,QALC,EAAQ,GAKAiU,CAA6B,WAAa,CACnFrP,OAAQ,SAAgBT,GACtB,OAAOsY,EAAQna,KAAM6B,EAAY6C,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,gBCV3E,IAAIyc,EAAa,EAAQ,IAGrB5P,EAFkB,EAAQ,EAEVxD,CAAgB,eAEhCqT,EAAuE,aAAnDD,EAAW,WAAc,OAAO1V,UAArB,IAUnCjL,EAAOD,QAAU,SAAUkC,GACzB,IAAI+C,EAAGuQ,EAAKhN,EACZ,YAAcrE,IAAPjC,EAAmB,YAAqB,OAAPA,EAAc,OAEM,iBAAhDsT,EAXD,SAAUtT,EAAIT,GACzB,IACE,OAAOS,EAAGT,GACV,MAAOkB,KAQSme,CAAO7b,EAAIrE,OAAOsB,GAAK8O,IAA8BwE,EAEnEqL,EAAoBD,EAAW3b,GAEH,WAA3BuD,EAASoY,EAAW3b,KAAsC,mBAAZA,EAAE8b,OAAuB,YAAcvY,I,6BCtB5F,IAAI6O,EAAS,EAAQ,IAAiCA,OAItDpX,EAAOD,QAAU,SAAUiZ,EAAGtQ,EAAOmR,GACnC,OAAOnR,GAASmR,EAAUzC,EAAO4B,EAAGtQ,GAAOD,OAAS,K,6BCLtD,IAAIvF,EAAW,EAAQ,IACnB2B,EAAW,EAAQ,GACnBN,EAAQ,EAAQ,GAChBwc,EAAQ,EAAQ,IAGhBC,EAAkBnO,OAAOhR,UACzBof,EAAiBD,EAAyB,SAE1CE,EAAc3c,GAAM,WAAc,MAA2D,QAApD0c,EAAe7gB,KAAK,CAAEmD,OAAQ,IAAKwd,MAAO,SAEnFI,EANY,YAMKF,EAAezgB,MAIhC0gB,GAAeC,IACjBje,EAAS2P,OAAOhR,UAXF,YAWwB,WACpC,IAAI6c,EAAI7Z,EAAS0B,MACbxE,EAAI4C,OAAO+Z,EAAEnb,QACb6d,EAAK1C,EAAEqC,MAEX,MAAO,IAAMhf,EAAI,IADT4C,YAAcT,IAAPkd,GAAoB1C,aAAa7L,UAAY,UAAWmO,GAAmBD,EAAM3gB,KAAKse,GAAK0C,KAEzG,CAAEhb,QAAQ,K,cCvBfpG,EAAOD,QAAU,SAASshB,GACzB,IAAKA,EAAeC,gBAAiB,CACpC,IAAIthB,EAASW,OAAOY,OAAO8f,GAEtBrhB,EAAOuhB,WAAUvhB,EAAOuhB,SAAW,IACxC5gB,OAAOC,eAAeZ,EAAQ,SAAU,CACvCa,YAAY,EACZC,IAAK,WACJ,OAAOd,EAAOE,KAGhBS,OAAOC,eAAeZ,EAAQ,KAAM,CACnCa,YAAY,EACZC,IAAK,WACJ,OAAOd,EAAOC,KAGhBU,OAAOC,eAAeZ,EAAQ,UAAW,CACxCa,YAAY,IAEbb,EAAOshB,gBAAkB,EAE1B,OAAOthB,I,6BCrBR,IAAI2N,EAAI,EAAQ,GACZ6T,EAAO,EAAQ,IAAgC5Y,IAMnD+E,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,EAAM9J,QALC,EAAQ,GAKAiU,CAA6B,QAAU,CAChFtP,IAAK,SAAaR,GAChB,OAAOoZ,EAAKjb,KAAM6B,EAAY6C,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,6BCTxE,IAAIwW,EAAgC,EAAQ,IACxC+G,EAAW,EAAQ,KACnB5c,EAAW,EAAQ,GACnBO,EAAyB,EAAQ,IACjCsc,EAAqB,EAAQ,KAC7B/G,EAAqB,EAAQ,IAC7BlT,EAAW,EAAQ,IACnBka,EAAiB,EAAQ,IACzB/D,EAAa,EAAQ,IACrBrZ,EAAQ,EAAQ,GAEhBqd,EAAY,GAAGnc,KACfH,EAAMpD,KAAKoD,IAIXuc,GAActd,GAAM,WAAc,OAAQsO,OAH7B,WAGgD,QAGjE6H,EAA8B,QAAS,GAAG,SAAUoH,EAAOC,EAAa/G,GACtE,IAAIgH,EAmDJ,OAzCEA,EAR2B,KAA3B,OAAO7b,MAAM,QAAQ,IACc,GAAnC,OAAOA,MAAM,QAAS,GAAGsC,QACO,GAAhC,KAAKtC,MAAM,WAAWsC,QACU,GAAhC,IAAItC,MAAM,YAAYsC,QACtB,IAAItC,MAAM,QAAQsC,OAAS,GAC3B,GAAGtC,MAAM,MAAMsC,OAGC,SAAUuP,EAAWiK,GACnC,IAAIvT,EAAS/J,OAAOS,EAAuBmB,OACvC2b,OAAgBhe,IAAV+d,EAnBC,WAmBkCA,IAAU,EACvD,GAAY,IAARC,EAAW,MAAO,GACtB,QAAkBhe,IAAd8T,EAAyB,MAAO,CAACtJ,GAErC,IAAK+S,EAASzJ,GACZ,OAAO+J,EAAY3hB,KAAKsO,EAAQsJ,EAAWkK,GAW7C,IATA,IAQI7O,EAAOJ,EAAWkP,EARlBC,EAAS,GACTrB,GAAS/I,EAAU0B,WAAa,IAAM,KAC7B1B,EAAU2B,UAAY,IAAM,KAC5B3B,EAAU6B,QAAU,IAAM,KAC1B7B,EAAU8B,OAAS,IAAM,IAClCuI,EAAgB,EAEhBC,EAAgB,IAAIzP,OAAOmF,EAAUzU,OAAQwd,EAAQ,MAElD1N,EAAQuK,EAAWxd,KAAKkiB,EAAe5T,QAC5CuE,EAAYqP,EAAcrP,WACVoP,IACdD,EAAO3c,KAAKiJ,EAAO9H,MAAMyb,EAAehP,EAAM3K,QAC1C2K,EAAM5K,OAAS,GAAK4K,EAAM3K,MAAQgG,EAAOjG,QAAQmZ,EAAUlS,MAAM0S,EAAQ/O,EAAMzM,MAAM,IACzFub,EAAa9O,EAAM,GAAG5K,OACtB4Z,EAAgBpP,EACZmP,EAAO3Z,QAAUyZ,KAEnBI,EAAcrP,YAAcI,EAAM3K,OAAO4Z,EAAcrP,YAK7D,OAHIoP,IAAkB3T,EAAOjG,QACvB0Z,GAAeG,EAAc9S,KAAK,KAAK4S,EAAO3c,KAAK,IAClD2c,EAAO3c,KAAKiJ,EAAO9H,MAAMyb,IACzBD,EAAO3Z,OAASyZ,EAAME,EAAOxb,MAAM,EAAGsb,GAAOE,GAG7C,IAAIjc,WAAMjC,EAAW,GAAGuE,OACjB,SAAUuP,EAAWiK,GACnC,YAAqB/d,IAAd8T,GAAqC,IAAViK,EAAc,GAAKF,EAAY3hB,KAAKmG,KAAMyR,EAAWiK,IAEpEF,EAEhB,CAGL,SAAe/J,EAAWiK,GACxB,IAAIjd,EAAII,EAAuBmB,MAC3Bgc,EAAwBre,MAAb8T,OAAyB9T,EAAY8T,EAAU8J,GAC9D,YAAoB5d,IAAbqe,EACHA,EAASniB,KAAK4X,EAAWhT,EAAGid,GAC5BD,EAAc5hB,KAAKuE,OAAOK,GAAIgT,EAAWiK,IAO/C,SAAU/K,EAAQ+K,GAChB,IAAI9G,EAAMH,EAAgBgH,EAAe9K,EAAQ3Q,KAAM0b,EAAOD,IAAkBD,GAChF,GAAI5G,EAAInL,KAAM,OAAOmL,EAAIja,MAEzB,IAAIka,EAAKvW,EAASqS,GACd8B,EAAIrU,OAAO4B,MACXkH,EAAIiU,EAAmBtG,EAAIvI,QAE3B2P,EAAkBpH,EAAGvB,QACrBkH,GAAS3F,EAAG1B,WAAa,IAAM,KACtB0B,EAAGzB,UAAY,IAAM,KACrByB,EAAGvB,QAAU,IAAM,KACnBgI,EAAa,IAAM,KAI5BU,EAAW,IAAI9U,EAAEoU,EAAazG,EAAK,OAASA,EAAG7X,OAAS,IAAKwd,GAC7DmB,OAAgBhe,IAAV+d,EA1FC,WA0FkCA,IAAU,EACvD,GAAY,IAARC,EAAW,MAAO,GACtB,GAAiB,IAAblJ,EAAEvQ,OAAc,OAAuC,OAAhCkZ,EAAeY,EAAUvJ,GAAc,CAACA,GAAK,GAIxE,IAHA,IAAIjX,EAAI,EACJ0gB,EAAI,EACJ9J,EAAI,GACD8J,EAAIzJ,EAAEvQ,QAAQ,CACnB8Z,EAAStP,UAAY4O,EAAaY,EAAI,EACtC,IACIlT,EADAmT,EAAIf,EAAeY,EAAUV,EAAa7I,EAAIA,EAAEpS,MAAM6b,IAE1D,GACQ,OAANC,IACCnT,EAAIjK,EAAImC,EAAS8a,EAAStP,WAAa4O,EAAa,EAAIY,IAAKzJ,EAAEvQ,WAAa1G,EAE7E0gB,EAAI9H,EAAmB3B,EAAGyJ,EAAGD,OACxB,CAEL,GADA7J,EAAElT,KAAKuT,EAAEpS,MAAM7E,EAAG0gB,IACd9J,EAAElQ,SAAWyZ,EAAK,OAAOvJ,EAC7B,IAAK,IAAI1Y,EAAI,EAAGA,GAAKyiB,EAAEja,OAAS,EAAGxI,IAEjC,GADA0Y,EAAElT,KAAKid,EAAEziB,IACL0Y,EAAElQ,SAAWyZ,EAAK,OAAOvJ,EAE/B8J,EAAI1gB,EAAIwN,GAIZ,OADAoJ,EAAElT,KAAKuT,EAAEpS,MAAM7E,IACR4W,OAGTkJ,I,gBCrIJ,IAAIpd,EAAW,EAAQ,GAEvBzE,EAAOD,QAAU,SAAUkC,GACzB,IAAKwC,EAASxC,IAAc,OAAPA,EACnB,MAAMyC,UAAU,aAAeC,OAAO1C,GAAM,mBAC5C,OAAOA,I,6BCJX,IAAI0L,EAAI,EAAQ,GACZlJ,EAAW,EAAQ,GACnBiG,EAAU,EAAQ,IAClBmC,EAAkB,EAAQ,IAC1BpF,EAAW,EAAQ,IACnBH,EAAkB,EAAQ,IAC1B2Q,EAAiB,EAAQ,IACzBC,EAA+B,EAAQ,IAGvC5K,EAFkB,EAAQ,EAEhBC,CAAgB,WAC1BoV,EAAc,GAAG/b,MACjB+F,EAAMzK,KAAKyK,IAKfgB,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,EAAM9J,QAASiU,EAA6B,UAAY,CAClFtR,MAAO,SAAe2T,EAAOC,GAC3B,IAKIoI,EAAara,EAAQ7G,EALrBsD,EAAIsC,EAAgBf,MACpBkC,EAAShB,EAASzC,EAAEyD,QACpB+P,EAAI3L,EAAgB0N,EAAO9R,GAC3Boa,EAAMhW,OAAwB3I,IAARsW,EAAoB/R,EAAS+R,EAAK/R,GAG5D,GAAIiC,EAAQ1F,KAGgB,mBAF1B4d,EAAc5d,EAAE0I,cAEyBkV,IAAgBnY,QAASC,EAAQkY,EAAY/gB,WAE3E4C,EAASme,IAEE,QADpBA,EAAcA,EAAYtV,MACAsV,OAAc1e,GAHxC0e,OAAc1e,EAKZ0e,IAAgBnY,YAAyBvG,IAAhB0e,GAC3B,OAAOD,EAAYviB,KAAK4E,EAAGwT,EAAGqK,GAIlC,IADAta,EAAS,SAAqBrE,IAAhB0e,EAA4BnY,MAAQmY,GAAajW,EAAIkW,EAAMrK,EAAG,IACvE9W,EAAI,EAAG8W,EAAIqK,EAAKrK,IAAK9W,IAAS8W,KAAKxT,GAAGiT,EAAe1P,EAAQ7G,EAAGsD,EAAEwT,IAEvE,OADAjQ,EAAOE,OAAS/G,EACT6G,M,6BCzCX,IAAIe,EAAU,EAAQ,IAIlBkG,EAAO,GAEXA,EALsB,EAAQ,EAEVjC,CAAgB,gBAGd,IAItBvN,EAAOD,QAA2B,eAAjB4E,OAAO6K,GAAyB,WAC/C,MAAO,WAAalG,EAAQ/C,MAAQ,KAClCiJ,EAAK7I,U,gBCbT,IAAIlC,EAAW,EAAQ,GACnB6E,EAAU,EAAQ,IAGlBwZ,EAFkB,EAAQ,EAElBvV,CAAgB,SAI5BvN,EAAOD,QAAU,SAAUkC,GACzB,IAAIwf,EACJ,OAAOhd,EAASxC,UAAmCiC,KAA1Bud,EAAWxf,EAAG6gB,MAA0BrB,EAA0B,UAAfnY,EAAQrH,M,6BCTtF,IAAI0L,EAAI,EAAQ,GACZhF,EAAU,EAAQ,KAItBgF,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,EAAM9J,OAAQ,GAAG0E,SAAWA,GAAW,CACjEA,QAASA,K,gBCPX,IAAIpG,EAAS,EAAQ,GACjB+U,EAAe,EAAQ,IACvB3O,EAAU,EAAQ,KAClB1F,EAA8B,EAAQ,GAE1C,IAAK,IAAI0U,KAAmBL,EAAc,CACxC,IAAIM,EAAarV,EAAOoV,GACpBE,EAAsBD,GAAcA,EAAW/V,UAEnD,GAAIgW,GAAuBA,EAAoBlP,UAAYA,EAAS,IAClE1F,EAA4B4U,EAAqB,UAAWlP,GAC5D,MAAOjG,GACPmV,EAAoBlP,QAAUA,K,gBCZlC,IAAIrB,EAAkB,EAAQ,IAC1BqN,EAA4B,EAAQ,IAA8C3R,EAElF2D,EAAW,GAAGA,SAEdoc,EAA+B,iBAAV1gB,QAAsBA,QAAU1B,OAAO6J,oBAC5D7J,OAAO6J,oBAAoBnI,QAAU,GAWzCrC,EAAOD,QAAQiD,EAAI,SAA6Bf,GAC9C,OAAO8gB,GAAoC,mBAArBpc,EAASvG,KAAK6B,GAVjB,SAAUA,GAC7B,IACE,OAAO0S,EAA0B1S,GACjC,MAAOS,GACP,OAAOqgB,EAAYnc,SAOjBoc,CAAe/gB,GACf0S,EAA0BrN,EAAgBrF,M,gBCpBhD,IAAI4C,EAAW,EAAQ,GACnBgG,EAAY,EAAQ,IAGpByC,EAFkB,EAAQ,EAEhBC,CAAgB,WAI9BvN,EAAOD,QAAU,SAAUiF,EAAGie,GAC5B,IACIjK,EADAvL,EAAI5I,EAASG,GAAG0I,YAEpB,YAAaxJ,IAANuJ,GAAiDvJ,OAA7B8U,EAAInU,EAAS4I,GAAGH,IAAyB2V,EAAqBpY,EAAUmO,K,6BCVrG,IAAIuD,EAAoB,EAAQ,IAA+BA,kBAC3Dhb,EAAS,EAAQ,IACjB+C,EAA2B,EAAQ,IACnC6P,EAAiB,EAAQ,IACzBxE,EAAY,EAAQ,IAEpB8M,EAAa,WAAc,OAAOlW,MAEtCvG,EAAOD,QAAU,SAAU4c,EAAqBzM,EAAM0M,GACpD,IAAI7L,EAAgBb,EAAO,YAI3B,OAHAyM,EAAoB9a,UAAYN,EAAOgb,EAAmB,CAAEK,KAAMtY,EAAyB,EAAGsY,KAC9FzI,EAAewI,EAAqB5L,GAAe,GAAO,GAC1DpB,EAAUoB,GAAiB0L,EACpBE,I,gBCdT,IAAIpY,EAAQ,EAAQ,GAEpBvE,EAAOD,SAAWwE,GAAM,WACtB,SAAS+H,KAET,OADAA,EAAEzK,UAAU6L,YAAc,KACnB/M,OAAOwP,eAAe,IAAI7D,KAASA,EAAEzK,c,6BCJ9C,IAAIuS,EAAW,EAAQ,IAAgCzL,QACnD8K,EAAoB,EAAQ,IAIhCzT,EAAOD,QAAU0T,EAAkB,WAAa,SAAiBrL,GAC/D,OAAOgM,EAAS7N,KAAM6B,EAAY6C,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,IACtE,GAAGyE,S,6BCPP,IAAIgF,EAAI,EAAQ,GACZd,EAAkB,EAAQ,IAC1BxH,EAAY,EAAQ,IACpBoC,EAAW,EAAQ,IACnBD,EAAW,EAAQ,IACnBE,EAAqB,EAAQ,IAC7BuQ,EAAiB,EAAQ,IACzBC,EAA+B,EAAQ,IAEvCvL,EAAMzK,KAAKyK,IACXrH,EAAMpD,KAAKoD,IAOfqI,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,EAAM9J,QAASiU,EAA6B,WAAa,CACnFgL,OAAQ,SAAgB3I,EAAO4I,GAC7B,IAIIC,EAAaC,EAAmB1K,EAAGH,EAAG8K,EAAMC,EAJ5Cve,EAAIwC,EAASjB,MACbkS,EAAMhR,EAASzC,EAAEyD,QACjB+a,EAAc3W,EAAgB0N,EAAO9B,GACrCgL,EAAkBxY,UAAUxC,OAWhC,GATwB,IAApBgb,EACFL,EAAcC,EAAoB,EACL,IAApBI,GACTL,EAAc,EACdC,EAAoB5K,EAAM+K,IAE1BJ,EAAcK,EAAkB,EAChCJ,EAAoB/d,EAAIqH,EAAItH,EAAU8d,GAAc,GAAI1K,EAAM+K,IAE5D/K,EAAM2K,EAAcC,EAtBL,iBAuBjB,MAAM3e,UAtB0B,mCAyBlC,IADAiU,EAAIjR,EAAmB1C,EAAGqe,GACrB7K,EAAI,EAAGA,EAAI6K,EAAmB7K,KACjC8K,EAAOE,EAAchL,KACTxT,GAAGiT,EAAeU,EAAGH,EAAGxT,EAAEse,IAGxC,GADA3K,EAAElQ,OAAS4a,EACPD,EAAcC,EAAmB,CACnC,IAAK7K,EAAIgL,EAAahL,EAAIC,EAAM4K,EAAmB7K,IAEjD+K,EAAK/K,EAAI4K,GADTE,EAAO9K,EAAI6K,KAECre,EAAGA,EAAEue,GAAMve,EAAEse,UACbte,EAAEue,GAEhB,IAAK/K,EAAIC,EAAKD,EAAIC,EAAM4K,EAAoBD,EAAa5K,WAAYxT,EAAEwT,EAAI,QACtE,GAAI4K,EAAcC,EACvB,IAAK7K,EAAIC,EAAM4K,EAAmB7K,EAAIgL,EAAahL,IAEjD+K,EAAK/K,EAAI4K,EAAc,GADvBE,EAAO9K,EAAI6K,EAAoB,KAEnBre,EAAGA,EAAEue,GAAMve,EAAEse,UACbte,EAAEue,GAGlB,IAAK/K,EAAI,EAAGA,EAAI4K,EAAa5K,IAC3BxT,EAAEwT,EAAIgL,GAAevY,UAAUuN,EAAI,GAGrC,OADAxT,EAAEyD,OAASgQ,EAAM4K,EAAoBD,EAC9BzK,M,6BC9DX,IAAIvU,EAAc,EAAQ,GACtB7B,EAAS,EAAQ,GACjBc,EAAW,EAAQ,IACnBH,EAAW,EAAQ,IACnB0C,EAAM,EAAQ,GACd0D,EAAU,EAAQ,IAClBoa,EAAoB,EAAQ,KAC5B5e,EAAc,EAAQ,IACtBP,EAAQ,EAAQ,GAChBhD,EAAS,EAAQ,IACjBiJ,EAAsB,EAAQ,IAA8CxH,EAC5ED,EAA2B,EAAQ,IAAmDC,EACtFpC,EAAiB,EAAQ,GAAuCoC,EAChEyX,EAAO,EAAQ,IAA4BA,KAG3CkJ,EAAephB,EAAa,OAC5BqhB,EAAkBD,EAAa9hB,UAG/BgiB,EALS,UAKQva,EAAQ/H,EAAOqiB,IAIhCE,EAAW,SAAUve,GACvB,IACIuT,EAAOiL,EAAOC,EAAOC,EAASC,EAAQzb,EAAQC,EAAOyb,EADrDliB,EAAK6C,EAAYS,GAAU,GAE/B,GAAiB,iBAANtD,GAAkBA,EAAGwG,OAAS,EAGvC,GAAc,MADdqQ,GADA7W,EAAKwY,EAAKxY,IACCkX,WAAW,KACQ,KAAVL,GAElB,GAAc,MADdiL,EAAQ9hB,EAAGkX,WAAW,KACQ,MAAV4K,EAAe,OAAO5J,SACrC,GAAc,KAAVrB,EAAc,CACvB,OAAQ7W,EAAGkX,WAAW,IACpB,KAAK,GAAI,KAAK,GAAI6K,EAAQ,EAAGC,EAAU,GAAI,MAC3C,KAAK,GAAI,KAAK,IAAKD,EAAQ,EAAGC,EAAU,GAAI,MAC5C,QAAS,OAAQhiB,EAInB,IADAwG,GADAyb,EAASjiB,EAAG2E,MAAM,IACF6B,OACXC,EAAQ,EAAGA,EAAQD,EAAQC,IAI9B,IAHAyb,EAAOD,EAAO/K,WAAWzQ,IAGd,IAAMyb,EAAOF,EAAS,OAAO9J,IACxC,OAAOiK,SAASF,EAAQF,GAE5B,OAAQ/hB,GAKZ,GAAIoB,EAtCS,UAsCSsgB,EAAa,UAAYA,EAAa,QAAUA,EAAa,SAAU,CAS3F,IARA,IAcqBniB,EAdjB6iB,EAAgB,SAAgBnjB,GAClC,IAAIe,EAAKgJ,UAAUxC,OAAS,EAAI,EAAIvH,EAChCojB,EAAQ/d,KACZ,OAAO+d,aAAiBD,IAElBR,EAAiBtf,GAAM,WAAcqf,EAAgBxc,QAAQhH,KAAKkkB,MA5C/D,UA4C4Ehb,EAAQgb,IACvFZ,EAAkB,IAAIC,EAAaG,EAAS7hB,IAAMqiB,EAAOD,GAAiBP,EAAS7hB,IAElFiH,EAAO9E,EAAcoG,EAAoBmZ,GAAgB,6KAMhExd,MAAM,KAAMyV,EAAI,EAAQ1S,EAAKT,OAASmT,EAAGA,IACrChW,EAAI+d,EAAcniB,EAAM0H,EAAK0S,MAAQhW,EAAIye,EAAe7iB,IAC1DZ,EAAeyjB,EAAe7iB,EAAKuB,EAAyB4gB,EAAcniB,IAG9E6iB,EAAcxiB,UAAY+hB,EAC1BA,EAAgBlW,YAAc2W,EAC9BnhB,EAASX,EA5DE,SA4Dc8hB,K,gBC5E3B,IAAI1W,EAAI,EAAQ,GACZnG,EAAW,EAAQ,IACnB+c,EAAa,EAAQ,IAOzB5W,EAAE,CAAEnK,OAAQ,SAAUO,MAAM,EAAME,OANtB,EAAQ,EAEMM,EAAM,WAAcggB,EAAW,OAIQ,CAC/Drb,KAAM,SAAcjH,GAClB,OAAOsiB,EAAW/c,EAASvF,Q,6BCV/B,IAAI0L,EAAI,EAAQ,GACZ6W,EAAQ,EAAQ,IAA4B/J,KAKhD9M,EAAE,CAAEnK,OAAQ,SAAUuK,OAAO,EAAM9J,OAJN,EAAQ,IAIMwgB,CAAuB,SAAW,CAC3EhK,KAAM,WACJ,OAAO+J,EAAMje,U,gBCTjB,IAAI9B,EAAW,EAAQ,GACnB2L,EAAiB,EAAQ,IAG7BpQ,EAAOD,QAAU,SAAUoI,EAAOmc,EAAOI,GACvC,IAAIC,EAAWC,EAUf,OAPExU,GAE0C,mBAAlCuU,EAAYL,EAAM5W,cAC1BiX,IAAcD,GACdjgB,EAASmgB,EAAqBD,EAAU9iB,YACxC+iB,IAAuBF,EAAQ7iB,WAC/BuO,EAAejI,EAAOyc,GACjBzc,I,gBCfT,IAAIwF,EAAI,EAAQ,GACZkX,EAA2B,EAAQ,KAIvClX,EAAE,CAAEpL,QAAQ,EAAM0B,OAAQ6gB,YAAcD,GAA4B,CAClEC,WAAYD,K,6BCLd,IAAInK,EAAgC,EAAQ,IACxC7V,EAAW,EAAQ,GACnB4C,EAAW,EAAQ,IACnBrC,EAAyB,EAAQ,IACjCuV,EAAqB,EAAQ,IAC7BC,EAAa,EAAQ,IAGzBF,EAA8B,QAAS,GAAG,SAAUoI,EAAOiC,EAAa/J,GACtE,MAAO,CAGL,SAAe9D,GACb,IAAIlS,EAAII,EAAuBmB,MAC3Bye,EAAoB9gB,MAAVgT,OAAsBhT,EAAYgT,EAAO4L,GACvD,YAAmB5e,IAAZ8gB,EAAwBA,EAAQ5kB,KAAK8W,EAAQlS,GAAK,IAAI6N,OAAOqE,GAAQ4L,GAAOne,OAAOK,KAI5F,SAAUkS,GACR,IAAIiE,EAAMH,EAAgB+J,EAAa7N,EAAQ3Q,MAC/C,GAAI4U,EAAInL,KAAM,OAAOmL,EAAIja,MAEzB,IAAIka,EAAKvW,EAASqS,GACd8B,EAAIrU,OAAO4B,MAEf,IAAK6U,EAAG7Y,OAAQ,OAAOqY,EAAWQ,EAAIpC,GAEtC,IAAIsC,EAAcF,EAAGvB,QACrBuB,EAAGnI,UAAY,EAIf,IAHA,IAEI1K,EAFAoQ,EAAI,GACJjX,EAAI,EAEgC,QAAhC6G,EAASqS,EAAWQ,EAAIpC,KAAc,CAC5C,IAAIiM,EAAWtgB,OAAO4D,EAAO,IAC7BoQ,EAAEjX,GAAKujB,EACU,KAAbA,IAAiB7J,EAAGnI,UAAY0H,EAAmB3B,EAAGvR,EAAS2T,EAAGnI,WAAYqI,IAClF5Z,IAEF,OAAa,IAANA,EAAU,KAAOiX,Q,6SCxCTuM,E,WAEnB,WAAYC,I,4FAAM,SAEhB5e,KAAK4e,KAAOA,E,yDAyCZ,IAAMC,EAAc7e,KAAK4e,KAAKE,cAAc/W,KAAK,aAEjD/H,KAAK4e,KAAKE,cAAc/W,KAAK,YAAa,MAAMgX,YAAY,eAC5D/e,KAAK4e,KAAKE,cAAcE,SAASvc,KAAK,cAAcwc,SACpDjf,KAAK4e,KAAKE,cAAcE,SAASvc,KAAK,SAASwc,SAE3Cjf,KAAK4e,KAAKE,cAAcI,SAAS,mBACnClf,KAAK4e,KAAKE,cAAcrc,KAAK,UAAU0c,SAGzC/X,EAAE,qBAAD,OAAsByX,IAAeI,W,+BAKtCjf,KAAKof,oBACLpf,KAAKqf,gCAELrf,KAAK4e,KAAKE,cAAc/W,KAAK,YAAa/H,KAAK4e,KAAKrP,WAAW3M,IAC/D5C,KAAK4e,KAAKE,cAAcQ,OAAOtf,KAAK4e,KAAKW,gBAErCvf,KAAK4e,KAAK7hB,QAAQyiB,iBAEpBxf,KAAKyf,oBAGPzf,KAAK0f,qBACL1f,KAAK2f,uBACL3f,KAAK4f,4BACL5f,KAAK6f,qBACL7f,KAAK8f,oBACL9f,KAAK+f,4BAED/f,KAAKggB,gBAEPhgB,KAAKigB,mCAGHjgB,KAAKkgB,YAEPlgB,KAAKmgB,mBAGFngB,KAAKogB,aAERpgB,KAAKqgB,kCACLrgB,KAAK4e,KAAK0B,SAAWtgB,KAAK4e,KAAK2B,gBAAgBD,SAAS,CACtDE,OAAO,EACPC,cAAc,EACdC,aAAa,KAIb1gB,KAAK2gB,uBAEP3gB,KAAK4e,KAAK2B,gBAAgBK,KAAK,WAAY5gB,KAAK4e,KAAKE,cAAc8B,KAAK,aAGtE5gB,KAAK6gB,wBAEP7gB,KAAK4e,KAAKkC,WAAWC,IAAI,MAAO,QAG9B/gB,KAAKghB,gBAEPhhB,KAAK4e,KAAK2B,gBAAgBQ,IAAI,CAC5Bzb,QAAS,eACT2b,MAAO,OACPC,OAAQ,6BACRC,QAAS,iCACTC,SAAU,OACVC,WAAY,MACZC,gBAAiB,OACjBC,OAAQ,sBAIZvhB,KAAKwhB,6BACLxhB,KAAKyhB,oB,0CAKDzhB,KAAK6gB,uBAEP7gB,KAAK4e,KAAKW,eACPmC,SACC1hB,KAAK4e,KAAKE,cAAc8B,KAAK,SAAShhB,MAAM,KAAK0C,QAAO,SAACkE,GAAD,MAAe,YAAPA,KAAkBzG,KAAK,MAExFghB,IAAI,CACHY,UAAW,SACXC,aAAc,WAIlB5hB,KAAK4e,KAAKW,eAAemC,SAAS1hB,KAAK4e,KAAKE,cAAc8B,KAAK,Y,sDAMjE,GAAK5gB,KAAK4e,KAAK7hB,QAAQ8kB,YAMrB7hB,KAAK4e,KAAK2B,gBAAgBK,KAAK,cAAe5gB,KAAK4e,KAAK7hB,QAAQ8kB,aAC3D7hB,KAAK4e,KAAKE,cAAcrc,KAAK,8DAA8DP,QAE9FlC,KAAK4e,KAAKE,cAAcgD,QAAQ,yEATA,CAElC,IAAMC,EAAqB/hB,KAAK4e,KAAKoD,6BAA6B5Z,QAAQ,KAAM,UAAUA,QAAQ,OAAQ,KAAK8L,OAC/GlU,KAAK4e,KAAK2B,gBAAgB3f,IAAImhB,M,2CAa5B/hB,KAAKogB,YAEPpgB,KAAK4e,KAAKqD,cAAcP,SAAS,YAGnC1hB,KAAK4e,KAAKW,eAAe2C,OAAOliB,KAAK4e,KAAKqD,iB,0CAKtCjiB,KAAKogB,YAEPpgB,KAAK4e,KAAKuD,UAAUT,SAAS,aAGuB,IAAlD1hB,KAAK4e,KAAKE,cAAcvkB,IAAI,GAAG6nB,eAEjCpiB,KAAK4e,KAAKuD,UAAUE,OAGtBriB,KAAK4e,KAAKW,eAAe2C,OAAOliB,KAAK4e,KAAKuD,a,6CAK1CniB,KAAK4e,KAAKW,eAAe2C,OAAOliB,KAAK4e,KAAK2B,mB,kDAKtCvgB,KAAKsiB,cAEPtiB,KAAKuiB,0BAGHviB,KAAKwiB,YAAcxiB,KAAKsiB,cAE1BtiB,KAAKyiB,qBAGPziB,KAAK0iB,uBAED1iB,KAAK2iB,YAEP3iB,KAAK4iB,0BAGP5iB,KAAK4e,KAAKW,eAAe2C,OAAOliB,KAAK4e,KAAKiE,wB,2CAK1C7iB,KAAK4e,KAAKE,cAAcgE,SAAS9iB,KAAK4e,KAAKW,kB,2CAKvCvf,KAAK4e,KAAK2B,gBAAgB3f,OAASZ,KAAK4e,KAAK7hB,QAAQ8kB,cAEvD7hB,KAAK4e,KAAKkC,WAAWY,SAAS,UAGhC1hB,KAAK4e,KAAKkC,WAAW9gB,KAAKogB,WAAa,WAAa,eAAe,YAEnEpgB,KAAK4e,KAAKkC,WAAWgC,SAAS9iB,KAAK4e,KAAKW,kB,kDAGd,WAE1Bvf,KAAK4e,KAAKmE,qBAAqBC,MAAK,SAACC,EAAGC,GAEhB9b,EAAE8b,GACVJ,SAAS,EAAKlE,KAAKiE,sBAAsB9T,KAAK,gBAG9D/O,KAAK4e,KAAKuE,SAASL,SAAS9iB,KAAK4e,KAAKW,gBAAgB6D,QAAQN,SAAS9iB,KAAK4e,KAAKiE,wB,yDAKjF7iB,KAAK4e,KAAKyE,eAAeC,YAAYtjB,KAAK4e,KAAKW,gBAC/Cvf,KAAK4e,KAAK2E,iBAAiBD,YAAYtjB,KAAK4e,KAAKW,kB,yCAKjDvf,KAAK4e,KAAKE,cAAciC,IAAI,CAC1BrO,SAAU,WACV8Q,IAAK,OACLC,KAAM,IACNvC,OAAQ,IACRD,MAAO,IACPyC,QAAS,IACTvC,QAAS,IACT,iBAAkB,UAGuD,IAAvEnhB,KAAK4e,KAAKE,cAAc8B,KAAK,SAAS1a,QAAQ,qBAEhDlG,KAAK4e,KAAKE,cAAc8B,KAAK,QAA7B,UAAyC5gB,KAAK4e,KAAKE,cAAc8B,KAAK,SAAtE,gCAGF5gB,KAAK4e,KAAKE,cAAc8B,KAAK,YAAa,GAC1C5gB,KAAK4e,KAAKE,cAAc/W,KAAK,oBAAoB,K,wDAIjD,IAAM4b,EAAevc,EAAE,WAAW0b,SAAS1b,EAAE,SAC7Cuc,EAAa5C,IAAI,CACfrO,SAAU,sBACVkR,WAAY,oBACZte,QAAS,qBAGXtF,KAAK4e,KAAKiE,qBAAqBgB,OAC/B,IAAMC,EAAoB9jB,KAAK4e,KAAKiE,qBAAqBO,QAAQN,SAASa,GAEpEI,EAAa/jB,KAAK4e,KAAK7hB,QAAQinB,eACjCC,EAAmB,EACjBC,EAAmBJ,EAAkBrhB,KAAK,MAAM0hB,IAAI,aACpDC,EAA0D,KAA3CF,EAAiB3R,QAAQ8R,OAAOnQ,OAAgBgQ,EAAiBI,GAAG,GAAGpD,SAAWgD,EAAiB3R,QAAQ2O,SAE1HqD,EAAeL,EAAiBhiB,OAatC,GAXIlC,KAAKsiB,eACP2B,GAAoBjkB,KAAK4e,KAAK4F,aAAatD,UAGzClhB,KAAK2iB,aACPsB,GAAoBjkB,KAAK4e,KAAK6F,WAAWvD,UAG3ClhB,KAAK4e,KAAKiE,qBAAqBR,OAC/BsB,EAAa1E,SAET8E,GAAc,GAAKA,EAAaQ,EAAc,CAEhD,IAAMG,EAAYN,EAAeL,EAAaE,EAC9CjkB,KAAK4e,KAAKiE,qBAAqB9B,IAAI,aAAc2D,GACjD1kB,KAAK4e,KAAK2B,gBAAgBxY,KAAK,YAAa2c,M,mDAM9C1kB,KAAK4e,KAAK2B,gBAAgBK,KAAK,CAC7B+D,KAAM3kB,KAAKsiB,aAAe,WAAa,UACvC,uBAAwBtiB,KAAK2iB,WAC7B,gBAAiB3iB,KAAKogB,WACtB,gBAAiBpgB,KAAKkgB,WACtB,kBAAmBlgB,KAAK4e,KAAKkC,WAAWF,KAAK,MAC7C,iBAAiB,EACjB,iBAAiB,IAGf5gB,KAAK4e,KAAK4F,cAEZxkB,KAAK4e,KAAK4F,aAAa5D,KAAK,OAAQ,aAGtC5gB,KAAK4e,KAAKiE,qBAAqBpgB,KAAK,MAAMugB,MAAK,WAE7C,IAAMphB,EAAQwF,EAAEpH,MAChB4B,EAAMgf,KAAK,CACT+D,KAAM,SACN,gBAAiB/iB,EAAMsd,SAAS,UAChC,gBAAiBtd,EAAMsd,SAAS,mB,wCAOpClf,KAAK4e,KAAKE,cAAc4C,SAAS,iB,gDAKjC,IAAMG,EAAc7hB,KAAK4e,KAAKE,cAAc8B,KAAK,cAC3CgE,EAAW5kB,KAAK6gB,uBAAyB,GAAK,UAC9CgE,EAAa7kB,KAAK6gB,uBAAyB,sBAAwB,GAEzE7gB,KAAK4e,KAAK4F,aAAepd,EAAE,8CAAD,OAA+Cwd,EAA/C,iEAAgHC,EAAhH,wCAA0JhD,EAA1J,oBAC1B7hB,KAAK4e,KAAKiE,qBAAqBX,OAAOliB,KAAK4e,KAAK4F,cAChDxkB,KAAK4e,KAAK4F,aAAaM,GAAG,SAAS,SAAC9b,GAAD,OAAOA,EAAE+b,uB,2CAK5C/kB,KAAK4e,KAAK4F,aAAatC,OAAOliB,KAAK4e,KAAKoG,iB,6CAGnB,WAErBhlB,KAAK4e,KAAKqG,sBAAsBjC,MAAK,SAAC7gB,EAAO+iB,GAE3C,IAAMtjB,EAAQwF,EAAE8d,GAEhB,GAAItjB,EAAMujB,GAAG,UAEX,EAAKC,kBAAkBxjB,EAAO,EAAK+gB,WAAa,WAAa,SACxD,GAAI/gB,EAAMujB,GAAG,YAAa,CAE/B,IAAME,EAAoBje,EAAE,8BAAD,OAA+BxF,EAAMgf,KAAK,SAA1C,iBAC3B,EAAKhC,KAAKiE,qBAAqBX,OAAOmD,GAEbzjB,EAAMoZ,SAAS,UACvBgI,MAAK,SAAC7gB,EAAOmjB,GAE5B,EAAKF,kBAAkBhe,EAAEke,GAAiB,4B,gDAQhD,IAAMC,EAAcvlB,KAAK4e,KAAKiE,qBAAqBpgB,KAAK,MAAM8P,QAC1DgT,EAAYrG,SAAS,aAAeqG,EAAY9iB,KAAK,SAAS+iB,KAAK,YACrED,EAAYE,MAAMzlB,KAAK4e,KAAK6F,YAE5BzkB,KAAK4e,KAAKiE,qBAAqBpgB,KAAK,MAAM8P,QAAQ+M,OAAOtf,KAAK4e,KAAK6F,c,qCAOrE,IAAM7jB,EAAMZ,KAAK4e,KAAK4F,aAAa/hB,KAAK,SAAS7B,MAC3C8kB,EAAate,EAAE,kBAAD,OAAmBxG,EAAIyH,cAAvB,sBAAkDzH,EAAlD,cAAkE4kB,KAAK,YAAY,GAClGxlB,KAAK2iB,YACR3iB,KAAK4e,KAAKqG,sBAAsBjC,MAAK,SAAC7gB,EAAO+iB,GAC3C9d,EAAE8d,GAAQtE,KAAK,YAAY,MAG/B5gB,KAAK4e,KAAKE,cAAcoD,OAAOwD,K,wCAGfC,EAAoB7hB,GAEpC,IAAM8hB,EAAWD,EAAmBR,GAAG,aAAe,WAAa,GAC7DU,EAASF,EAAmBR,GAAG,aAAe,SAAW,GACzDW,EAAyB,oBAAThiB,EAA6B,kBAAoB,GACjEiiB,EAAUJ,EAAmB5d,KAAK,QAClCie,EAAML,EAAmB5d,KAAK,OAAxB,6CAAuE4d,EAAmB5d,KAAK,OAA/F,YAAyG/H,KAAK4e,KAAK7hB,QAAQkpB,WAA3H,WAAiJ,GACvJC,EAAMP,EAAmB5d,KAAK,OAAxB,6CAAuE4d,EAAmB5d,KAAK,OAA/F,YAAyG/H,KAAK4e,KAAK7hB,QAAQopB,WAA3H,WAAiJ,GACvJC,EAAMT,EAAmB5d,KAAK,OAAxB,6CAAuE4d,EAAmB5d,KAAK,OAA/F,YAAyG/H,KAAK4e,KAAK7hB,QAAQspB,WAA3H,WAAiJ,GAEvJC,EAAUX,EAAmB/E,KAAK,SAElC2F,EAAWR,EAAU,oBAAH,OAAuBA,EAAvB,oBAA0CO,EAA1C,MAAwD,GAC1EE,EAAexmB,KAAK2iB,WAAL,0DAAqEiD,EAArE,qBAAmG,GAClHa,EAAgBd,EAAmB5d,KAAK,kBAAxB,mDAAwF4d,EAAmB5d,KAAK,kBAAhH,QAA0I,GAEhK/H,KAAK4e,KAAKiE,qBAAqBX,OAAO9a,EAAE,cAAD,OAAewe,EAAf,YAA2BC,EAA3B,YAAqCC,EAArC,aAAuDS,EAAvD,kCAAyFvmB,KAAK4e,KAAK7hB,QAAQ2pB,kBAAoBJ,EAAU,GAAzI,aAAgJE,EAAhJ,YAAgKb,EAAmB7gB,OAAnL,YAA6LkhB,EAA7L,YAAoME,EAApM,YAA2ME,EAA3M,YAAkNK,EAAlN,oB,qCAxZvC,OAAOzmB,KAAK4e,KAAK7hB,QAAQ4pB,W,4CAIzB,OAA4D,IAArD3mB,KAAK4e,KAAKE,cAAc/W,KAAK,sB,iCAIpC,OAAO/H,KAAK4e,KAAK+D,a,mCAIjB,OAAO3iB,KAAK4e,KAAK0D,e,iCAIjB,OAAOtiB,KAAK4e,KAAKsB,a,iCAIjB,OAAOlgB,KAAK4e,KAAK4D,a,iCAIjB,OAAOxiB,KAAK4e,KAAKwB,a,6CAIjB,OAAOpgB,KAAK4e,KAAK7hB,QAAQ6pB,uB,qCAIzB,OAAO5mB,KAAK4e,KAAK2B,gBAAgBrB,SAAS,kBAAoBlf,KAAK4e,KAAK2B,gBAAgBrB,SAAS,wB,+CCxCrGzlB,EAAOD,QAAUqtB,Q,6BCCjB,IAAIzf,EAAI,EAAQ,GACZ0f,EAAY,EAAQ,IAA+BpgB,SACnDY,EAAmB,EAAQ,IAI/BF,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,GAAQ,CAClCd,SAAU,SAAkBF,GAC1B,OAAOsgB,EAAU9mB,KAAMwG,EAAI9B,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,MAKrE2J,EAAiB,a,6BCbjB,IAAIF,EAAI,EAAQ,GACZ2f,EAAa,EAAQ,KACrBloB,EAAyB,EAAQ,IAKrCuI,EAAE,CAAEnK,OAAQ,SAAUuK,OAAO,EAAM9J,QAJR,EAAQ,IAISspB,CAAqB,aAAe,CAC9EtgB,SAAU,SAAkBugB,GAC1B,SAAU7oB,OAAOS,EAAuBmB,OACrCkG,QAAQ6gB,EAAWE,GAAeviB,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,gBCX/E,IAAIE,EAAc,EAAQ,GACtBxD,EAAiB,EAAQ,GAAuCoC,EAEhEyqB,EAAoBjrB,SAASX,UAC7B6rB,EAA4BD,EAAkB9mB,SAC9CgnB,EAAS,yBAKTvpB,GAJO,SAIkBqpB,GAC3B7sB,EAAe6sB,EALN,OAK+B,CACtC3mB,cAAc,EACdhG,IAAK,WACH,IACE,OAAO4sB,EAA0BttB,KAAKmG,MAAM8M,MAAMsa,GAAQ,GAC1D,MAAOjrB,GACP,MAAO,Q,gBCjBf,IAAI6B,EAAQ,EAAQ,GAChBqpB,EAAc,EAAQ,IAM1B5tB,EAAOD,QAAU,SAAU8O,GACzB,OAAOtK,GAAM,WACX,QAASqpB,EAAY/e,MANf,aAMqCA,MAAyB+e,EAAY/e,GAAarO,OAASqO,O,gBCT1G,IAAIlB,EAAI,EAAQ,GACZkgB,EAAyB,EAAQ,KAIrClgB,EAAE,CAAEpL,QAAQ,EAAM0B,OAAQmgB,UAAYyJ,GAA0B,CAC9DzJ,SAAUyJ,K,yUCJSC,E,WAGnB,WAAYzI,EAAZ,GAA4D,IAA/B/hB,EAA+B,EAA/BA,QAAuB6F,EAAQ,EAAtB2M,WAAc3M,I,4FAAQ,SAE1D5C,KAAKuP,WAAa,CAChB3M,KACA+f,WAAYla,QAAQqW,EAAc8B,KAAK,aACvC0B,aAAc7Z,QAAQqW,EAAc8B,KAAK,eACzCV,WAAYzX,QAAQqW,EAAc8B,KAAK,aACvC4B,WAAY/Z,QAAQqW,EAAc8B,KAAK,cAGzC5gB,KAAKjD,QAAUiD,KAAKwnB,aAAazqB,GAEjCiD,KAAK8e,cAAgBA,EACrB9e,KAAKuf,eAAiBnY,EAAE,sCACxBpH,KAAK6iB,qBAAuBzb,EAAE,0BAAD,OAA2BpH,KAAKuP,WAAW3M,GAA3C,2DAAgG5C,KAAKuP,WAAWoT,WAAa,2BAA6B,GAA1J,YAC7B3iB,KAAKgiB,6BAA+BlD,EAAcrc,KAAK,mBAAmB4hB,QAAUvF,EAAcrc,KAAK,gBAAgB4hB,QAAU,GACjIrkB,KAAKilB,sBAAwBjlB,KAAK8e,cAAc9D,SAAS,oBACzDhb,KAAKugB,gBAAkBnZ,EAAE,6BAAD,OAA8BpH,KAAKjD,QAAQ6pB,qBAAuB,6EAA+E,+BAAjJ,cAAqL5mB,KAAKjD,QAAQ4pB,UAAY,kBAA9M,sBAA6O3mB,KAAKjD,QAAQ4pB,SAAW,OAAS,QAA9Q,aAA0R3mB,KAAK8e,cAAcqG,GAAG,cAAgB,WAAa,GAA7U,2CAAkXnlB,KAAKuP,WAAW3M,GAAlY,iBACxB5C,KAAKiiB,cAAgBjiB,KAAKjD,QAAQ6pB,qBAAuB,GAAKxf,EAAE,sCAChEpH,KAAKwkB,aAAe,KACpBxkB,KAAKynB,qBAAuBrgB,EAAE,gBAAD,OAAiBpH,KAAKjD,QAAQ2qB,OAAOC,gBAArC,qBAC7B3nB,KAAKykB,WAAard,EAAE,8FAAD,OAA+FpH,KAAKjD,QAAQ2qB,OAAOE,UAAnH,yBACnB5nB,KAAKglB,cAAgB5d,EAAE,iDACvBpH,KAAK8gB,WAAa9gB,KAAK6nB,gBAAgB7nB,KAAK8e,cAAczI,KAAK,wBAAyBjP,EAAE,cAAD,OAAepH,KAAKuP,WAAW3M,GAA/B,QACzF5C,KAAK+iB,qBAAuB/iB,KAAK6nB,gBAAgB7nB,KAAK8e,cAAcgJ,UAAU,SAAU,6BAA8B1gB,EAAE,uCAAD,OAAwCpH,KAAKuP,WAAW3M,GAAxD,QACvH5C,KAAKmjB,SAAWnjB,KAAK8e,cAAcgJ,UAAU,SAAU,aACvD9nB,KAAKmiB,UAAY/a,EAAE,iDAEnBpH,KAAKqjB,eAAiBjc,EAAE,+BAAD,OAAgCpH,KAAKjD,QAAQ2qB,OAAOK,cAApD,WACvB/nB,KAAKujB,iBAAmBnc,EAAE,iCAAD,OAAkCpH,KAAKjD,QAAQ2qB,OAAOM,gBAAtD,WAEzBhoB,KAAKioB,SAAW,CACdC,IAAK,EACLC,MAAO,GACPC,MAAO,GACPC,IAAK,GACLC,IAAK,GACLC,MAAO,GACPtU,IAAK,GACLuU,KAAM,GACNC,QAAS,GACTC,UAAW,IAIb1oB,KAAK2oB,SAAW,IAAIhK,UAA2B3e,MAC/CA,KAAKsgB,SAAW,K,6DAKhB,MAAO,iEAAiErX,KAAK2f,UAAUC,e,mCAyBvF7oB,KAAK2oB,SAASG,Y,+BAKd9oB,KAAK2oB,SAASI,W,+CAGSC,GAAS,WAEhC,GAAIhpB,KAAK2iB,WAEP3iB,KAAK8e,cAAcrc,KAAK,kCAAkCugB,MAAK,SAACtpB,EAAGwpB,GAEjE,IAAI/gB,EAAQ+gB,EAAQ/gB,MACpB6mB,EAAQ7mB,GAEJ,EAAK8mB,0BACP9mB,GAAS,GAEX,EAAK0gB,qBAAqBpgB,KAAK,6CAA6C6hB,GAAGniB,GAAOuf,SAAS,mBAAmBjf,KAAK,aAAa+iB,KAAK,WAAW,UAGjJ,CAEL,IAAM0D,EAAqBlpB,KAAK8e,cAAcrc,KAAK,mBAAmB8P,QAChE4W,EAA2BnpB,KAAK8e,cAAcrc,KAAK,UAAUN,MAAM+mB,EAAmB3uB,IAAI,IAC5F2uB,EAAmB3uB,IAAI,IAA8C,aAAxC2uB,EAAmBtI,KAAK,aACvDoI,EAAQG,M,2CAKOH,GAAS,WAE5BhpB,KAAKmiB,UAAU2C,GAAG,SAAS,SAAC9b,GAE1BA,EAAEogB,iBAEG,EAAKtK,cAAcrc,KAAK,0DAA0DP,SAErF,EAAKmnB,oBAAmB,GAExB,EAAK9I,gBAAgB3f,IAAI,EAAK+hB,WAAa,GAAK,IAChD,EAAKpC,gBAAgB+I,QAAQ,SAC7B,EAAKxI,WAAW/B,YAAY,UAC5B,EAAK8D,qBAAqBpgB,KAAK,0BAA0Bsc,YAAY,UAAUA,YAAY,YAC3F,EAAK8D,qBAAqBpgB,KAAK,4BAA4Bme,KAAK,gBAAiB,SACjF,EAAKiC,qBAAqBpgB,KAAK,0BAA0B+iB,KAAK,WAAW,GAEzEwD,U,8CAOJhpB,KAAKglB,cAAcF,GAAG,QAAS9kB,KAAK2oB,SAASY,aAAaruB,KAAK8E,KAAK2oB,a,gDAG5C,WAExB3oB,KAAKugB,gBAAgBuE,GAAG,SAAS,SAAC9b,GAEhC,IAAMpH,EAAQwF,EAAE4B,EAAE/L,QAWlB,GATA2E,EAAMod,SAAS0C,SAAS,UAEpBta,EAAE,sBAAsB+c,IAAI,EAAKtB,qBAAqBtoB,IAAI,IAAI4qB,GAAG,aAEnE/d,EAAE,yBAAyBkiB,QAAQ,SAGrC,EAAKxI,WAAWY,SAAS,WAEpB,EAAKmB,qBAAqBsC,GAAG,YAAa,CAE7C,IAAMqE,EAAQ5nB,EAAMhB,MACd6oB,EAAkB,EAAK5G,qBAAqBpgB,KAAK,MAAMH,QAAO,WAElE,OAAO8E,EAAEpH,MAAMqkB,OAAOhc,gBAAkBmhB,EAAMnhB,iBAC7C9N,IAAI,GAEP,EAAKmvB,oBAAoBD,GAGtB,EAAK9G,YAER,EAAK7B,WAAWY,SAAS,e,gDAKL,WAExB1hB,KAAKugB,gBAAgBuE,GAAG,aAAa,SAAC9b,GAEpB,IAAZA,EAAE2gB,OACJ3gB,EAAEogB,oBAINppB,KAAKugB,gBAAgBuE,GAAG,SAAS,SAAC9b,GAEhCA,EAAE+b,kBAEF,EAAKjE,WAAWY,SAAS,UAEzB,EAAKkI,gC,+CAIgB,WAEvB5pB,KAAKugB,gBAAgBuE,GAAG,QAAQ,SAAC9b,GAE/B,IAAMpH,EAAQwF,EAAE4B,EAAE/L,QAElB2E,EAAMod,SAASD,YAAY,UAEtB,EAAK4D,YAAe,EAAKL,cAE5B1gB,EAAM0nB,QAAQ,SAGhB,EAAKzG,qBAAqBpgB,KAAK,eAAesc,YAAY,iB,0DAM5D/e,KAAK6iB,qBAAqBiC,GAAG,cAAc,SAAC9b,GAAD,OAAOA,EAAE+b,uB,kDAG1B,WAG1B/kB,KAAKugB,gBAAgBuE,GAAG,WAAW,SAAC9b,GAElC,IAAMpH,EAAQwF,EAAE4B,EAAE/L,QAEZ4sB,EAAQ7gB,EAAE2gB,QAAU,EAAK1B,SAASC,IAElC4B,EAAY9gB,EAAE2gB,QAAU,EAAK1B,SAASQ,QACtCsB,EAAc/gB,EAAE2gB,QAAU,EAAK1B,SAASS,UACxCsB,EAAUhhB,EAAE2gB,QAAU,EAAK1B,SAASE,MACpC8B,EAAQjhB,EAAE2gB,QAAU,EAAK1B,SAASK,IAClC4B,EAAqBH,GAAe/gB,EAAEmhB,OACtCC,EAAmBN,GAAa9gB,EAAEmhB,OAClCE,EAASrhB,EAAE2gB,QAAU,EAAK1B,SAASO,KACnC8B,EAAQthB,EAAE2gB,QAAU,EAAK1B,SAAShU,IAClCsW,EAAUvhB,EAAE2gB,QAAU,EAAK1B,SAASM,MAEpCiC,EAAqB,EAAK3H,qBAAqBsC,GAAG,YAExD,QAAQ,GACN,KAAK0E,EACH,OAAO,EAAKY,cAAc7oB,GAE5B,KAAM4oB,IAAuBR,GAAWE,GACxC,KAAK,EAAKvH,aAAe6H,IAAuBT,GAAeD,GAE7D,OADAloB,EAAM0nB,QAAQ,QACP,EAAKM,2BAEd,KAAKY,IAAuBP,GAASG,GACnC,OAAOxoB,EAAM0nB,QAAQ,SAEvB,KAAMkB,IAAuBT,GAAeD,GAC1C,OAAO,EAAKY,4BAA4B1hB,EAAE2gB,OAE5C,KAAKa,IAAuBT,GAAeD,GACzC,OAAO,EAAKa,sBAAsB3hB,EAAE2gB,OAEtC,KAAKa,GAAsBH,EACzB,OAAO,EAAKO,iBAEd,KAAKJ,GAAsBF,EACzB,OAAO,EAAKO,gBAEd,KAAKL,IAAuBR,GAAWO,GACrC,OAAO,EAAKO,gBAAgBlpB,GAE9B,QACE,OAAO,EAAKmpB,iBAAiB/hB,S,yDAKF,WAEjChJ,KAAKugB,gBAAgBuE,GAAG,QAAQ,kBAAM,EAAKvE,gBAAgBK,KAAK,gBAAiB,WACjF5gB,KAAKugB,gBAAgBuE,GAAG,SAAS,kBAAM,EAAKvE,gBAAgBK,KAAK,gBAAiB,c,yCAGjEoI,GAAS,WAE1BhpB,KAAKykB,WAAWK,GAAG,SAAS,SAAC9b,GAE3B,IAAMgiB,EAAW5jB,EAAE,EAAKqd,YAAYhiB,KAAK,0BAA0B8P,QAC7D0Y,EAAexiB,QAAQrB,EAAE4jB,GAAUxF,KAAK,YACxC0F,GAAmBD,EAEzB7jB,EAAE4jB,GAAUxF,KAAK,WAAYyF,GAE7B,EAAKpI,qBAAqBpgB,KAAK,6CAA6CugB,MAAK,SAACmI,EAAqBC,GAErG,IAAMC,EAAkBjkB,EAAEgkB,GACpBE,EAAkBD,EAAgB5oB,KAAK,0BAE7C4oB,EAAgBzK,KAAK,gBAAiBsK,GAElCA,GAAmBI,EAAgBnG,GAAG,cAAgB+F,IAAoBI,EAAgBnG,GAAG,aAAe/d,EAAEgkB,GAAgBjG,GAAG,YAAc/d,EAAEgkB,GAAgBjG,GAAG,eAKxKmG,EAAgB9F,KAAK,UAAW0F,GAChC,EAAKpM,cAAcrc,KAAK,UAAU6hB,GAAG6G,GAAqB3F,KAAK,WAAY0F,GAE3EG,EAAgBE,YAAY,UAC5B,EAAKC,cAAcJ,GACnBpC,EAAQmC,OAGV,EAAKrM,cAAc/W,KAAK,gBAAgB,GACxC,EAAK0jB,+BACL,EAAK3M,cAAc4M,WAAW,gBAC9B1iB,EAAE+b,uB,oDAIwB,WAE5B/kB,KAAK6iB,qBAAqBiC,GAAG,aAAa,SAAC9b,GAEzC,IAAMkc,EAASlc,EAAE/L,OAEDmK,EAAE,kBAAkB3E,KAAK,EAAKogB,sBAAsB3gB,QACrDgjB,EAAOyG,aAAezG,EAAO0G,cAE1C5iB,EAAEogB,sB,8CAKgBJ,GAAS,WAE/BhpB,KAAK6iB,qBAAqBpgB,KAAK,qBAAqB0hB,IAAInkB,KAAKykB,YAAYzB,MAAK,SAACmI,EAAqBC,GAClGhkB,EAAEgkB,GAAgBtG,GAAG,SAAS,SAAC9b,GAE7BA,EAAE+b,kBAEF,EAAKsE,oBAAmB,GAExB,IAAMznB,EAAQwF,EAAEgkB,GAEhB,IAAIxpB,EAAMsd,SAAS,cAAetd,EAAMsd,SAAS,YAAjD,CAKA,IAAI2M,GAAW,EAEf,GAAI,EAAKlJ,WAAY,CAEnB/gB,EAAMa,KAAK,0BAA0B+iB,KAAK,WAAW,SAACrjB,EAAO2pB,GAAR,OAA8BA,KAEnF,IAAMC,EAActjB,QAAQ,EAAKqW,cAAcrc,KAAK,YAAYP,QAC1D8pB,EAAY,EAAKC,wBAA0B,EAAKhD,wBAA0BrnB,EAAMO,QAAU,EAAIP,EAAMO,QAG1G,QAAQ,GACN,KAAK,EAAKmgB,cAAgByJ,EAAaF,EAAW7C,EAAQgD,EAAYpqB,EAAMsqB,QAAQ,aAAahqB,OAAS,GAAI,MAC9G,KAAK,EAAKogB,aAAcuJ,EAAW7C,EAAQgD,EAAY,GAAI,MAC3D,KAAKD,EAAaF,EAAW7C,EAAQgD,EAAYpqB,EAAMsqB,QAAQ,aAAahqB,QAAS,MACrF,QAAS2pB,EAAW7C,EAAQgD,GAI1B,EAAKC,uBAEP,EAAKE,yBAGP,EAAK5L,gBAAgB+I,QAAQ,aACxB,CAEL,EAAKzG,qBAAqBpgB,KAAK,MAAMsc,YAAY,UAAU6B,KAAK,gBAAiB,SACjF,IAAM6I,EAAkB7nB,EAAMoZ,WAAWoR,OAAO,GAAGC,WAAW,GAC9D,EAAK9L,gBAAgB3f,IAAIwG,EAAEqiB,GAAiBpF,OAAOjc,QAAQ,OAAQ,KAAK8L,QACxE,EAAKqM,gBAAgB+I,QAAQ,SAG/B1nB,EAAM2pB,YAAY,UAClB,IAAMe,EAAe1qB,EAAMgf,KAAK,iBAChChf,EAAMgf,KAAK,gBAAkC,SAAjB0L,EAA0B,QAAU,QAChE,EAAK5C,oBAAoB9nB,GACzB,EAAKkd,cAAc/W,KAAK,gBAAgB,GACxC,IAAMwkB,EAAsB,EAAKtD,wBAA0BkC,EAAsB,EAAIA,EACrF,EAAKrM,cAAcrc,KAAK,UAAU6hB,GAAGiI,GAAqB/G,KAAK,WAAYqG,GAC3E,EAAK/M,cAAc4M,WAAW,gBAC9B,EAAKD,+BAED,EAAKlL,gBAAgB3f,OAEvB,EAAKkgB,WAAWY,SAAS,UAGvB9f,EAAMsd,SAAS,aAEjB,EAAKyJ,SAASvD,kBAAkBxjB,EAAO,a,sDAMf,WAE9B5B,KAAK6iB,qBAAqBpgB,KAAK,MAAMqiB,GAAG,SAAS,WAE/C,EAAKvE,gBAAgB+I,QAAQ,c,6CAIV,WAErBtpB,KAAKwkB,aAAa/hB,KAAK,WAAWqiB,GAAG,SAAS,SAAC9b,GAE7C,IAAMpH,EAAQwF,EAAE4B,EAAE/L,QAEZ4sB,EAAQ7gB,EAAE2gB,QAAU,EAAK1B,SAASC,IAClC+B,EAAQjhB,EAAE2gB,QAAU,EAAK1B,SAASK,IAClC0B,EAAUhhB,EAAE2gB,QAAU,EAAK1B,SAASE,MACpCqE,EAAmBxC,GAAWhhB,EAAEyjB,SAChC3C,EAAY9gB,EAAE2gB,QAAU,EAAK1B,SAASQ,QAG5C,GAFoBzf,EAAE2gB,QAAU,EAAK1B,SAASS,WAE3BmB,GAASI,GAASH,EAInC,OAFA,EAAKvJ,gBAAgBmM,aACrB,EAAK/B,sBAAsB3hB,EAAE2gB,OAI/B,IAAMgD,EAAM/qB,EAAMgrB,QAAQ,MACpBlY,EAAc9S,EAAMhB,MACpBisB,EAAWF,EAAIlqB,KAAK,qBAEtBqqB,GAAiB,EAsBrB,GApBAD,EAAS7J,MAAK,WAEZ,IAAM+J,EAAU3lB,EAAEpH,MAClB,GAA8B,iBAAnBA,KAAKgtB,UAAwB,CAEtC,IAAMC,EAAUjtB,KAAKktB,YAAY7kB,cAE7B4kB,EAAQvmB,SAASgO,EAAYrM,eAE/B0kB,EAAQlJ,OAAO7E,SAAS6E,OAExBkJ,EAAQ1K,OAAOrD,SAASqD,OAGtB4K,EAAQ/Y,SAAWQ,EAAYrM,gBACjCykB,GAAiB,OAKnB9C,EACF,OAAI,EAAKxH,aAAesK,OACtB,EAAKnE,SAASY,gBAGZiD,GACF,EAAKW,yBAAyBvrB,QAEhC,EAAK2e,gBAAgB+I,QAAQ,SAI/B,EAAKtE,cAActQ,GAAe,EAAK8N,aAAesK,EAAiB,OAAS,UAEwC,IAAjGD,EAASvqB,QAAO,SAAC2gB,EAAGja,GAAJ,OAAU5B,EAAE4B,GAAGmc,GAAG,cAAgB/d,EAAE4B,GAAGgW,SAASE,SAAS,eAAahd,QAO3G,EAAKuiB,WAAWZ,OAChB,EAAKhB,qBAAqBpgB,KAAK,EAAKglB,sBAAsBxI,SAC1D,EAAKkN,2BANL,EAAK1H,WAAWpC,OAChB,EAAKQ,qBAAqBX,OAAO,EAAKuF,uBAQxC,EAAKnH,SAAS8M,eAAe,EAAK7M,gBAAiB,EAAKsC,2B,sCAI5C,WAEdzb,EAAE,QAAQ0d,GAAG,SAAS,SAAC9b,GAEhB5B,EAAE4B,EAAE/L,QAAQ2vB,QAAZ,0BAAuC,EAAKrd,WAAW3M,KAAMV,QAAWkF,EAAE4B,EAAE/L,QAAQiiB,SAAS,gBAAiB9X,EAAE,mBAAD,OAAoB,EAAKmI,WAAW3M,KAAMsc,SAAS,YAErK,EAAKqB,gBAAgB+I,QAAQ,SAExB,EAAK/I,gBAAgB3f,OAAU,EAAK7D,QAAQ8kB,aAE/C,EAAKf,WAAW/B,YAAY,WAI5B,EAAKuD,cAAsC,OAAtB,EAAKkC,cAAyB,EAAK3B,qBAAqB3D,SAAS,WAExF,EAAK2D,qBAAqBpgB,KAAK,6BAA6BiqB,a,mDAOhEtlB,EAAE,UAAUimB,SAAS,wBAAyB,yBAAyBvI,GAAG,aAAa,SAAC9b,GAClFue,EAAmB+F,iBAAmBtkB,EAAEukB,SAAWvkB,EAAE/L,OAAOuwB,aAAexkB,EAAEykB,SAAWzkB,EAAE/L,OAAOywB,eACnG1kB,EAAEogB,sB,yCAKW,WAEjBppB,KAAKmjB,SAAS2B,GAAG,SAAS,WAExB,EAAKvE,gBAAgB+I,QAAQ,c,yCAIdjH,GAEjB,IAAMsL,EAAgB3tB,KAAK8e,cAAc/W,KAAK,gBAC9C/H,KAAK8e,cAAc8B,KAAK,oBAAqB,QAEzCyB,EAEFriB,KAAK8e,cAAcgD,QAAQ,iEAG3B9hB,KAAK8e,cAAcrc,KAAK,4BAA4Bwc,SAGtDjf,KAAK8e,cAAc8B,KAAK,oBAAqB+M,GAC7C3tB,KAAKmiB,UAAUE,EAAO,OAAS,Y,4CAK/B,OAAOriB,KAAK6iB,qBAAqBpgB,KAAKzC,KAAKykB,YAAYviB,S,8CAIvD,SAAIlC,KAAK8e,cAAc8B,KAAK,sBAAuB5gB,KAAKjD,QAAQ8kB,e,+CAUhE,IAAM+L,EAA0B5tB,KAAK6iB,qBAAqBpgB,KAAK,MAAM0hB,IAAI,0CAA0C1hB,KAAK,mBAClHorB,EAA8BD,EAAwBtrB,OAAO,YAC7DwrB,EAAqB9tB,KAAKykB,WAAWhiB,KAAK,mBAAmB0iB,GAAG,YAElE0I,EAA4B3rB,SAAW0rB,EAAwB1rB,QAAW4rB,EAGnED,EAA4B3rB,OAAS0rB,EAAwB1rB,QAAU4rB,GAEhF9tB,KAAKykB,WAAWhiB,KAAK,mBAAmB+iB,KAAK,WAAW,GAHxDxlB,KAAKykB,WAAWhiB,KAAK,mBAAmB+iB,KAAK,WAAW,K,oCAO9CjF,GAEZvgB,KAAK+tB,cAAcxN,K,+CAGIA,GAElBvgB,KAAK2iB,WAKR3iB,KAAKykB,WAAW6E,QAAQ,SAHxBtpB,KAAK8qB,gBAAgBvK,K,sCAOTA,GAEQvgB,KAAK6iB,qBAAqBpgB,KAAK,8BAEvC6mB,QAAQ,SAAS5H,SAAS,UAExC1hB,KAAKguB,6BAEAhuB,KAAK2iB,YAERpC,EAAgB+I,QAAQ,W,4CAIN2E,GAAS,MAGqBjuB,KAAKkuB,8BAA8BD,GAAS,GAAtFE,EAHqB,EAGrBA,uBAAwBC,EAHH,EAGGA,cAEhCpuB,KAAK0pB,oBAAoByE,GACzBnuB,KAAKguB,6BAEAG,EAAuB1rB,KAAK,SAAS0iB,GAAG,aAE3CgJ,EAAuBpP,YAAY/e,KAAKjD,QAAQsxB,qBAG7CD,EAAclP,SAAS,aAAgBkP,EAAc3rB,KAAK,SAAS0iB,GAAG,cAAenlB,KAAK2iB,YAE7FyL,EAAcrP,YAAY,SAAU/e,KAAKjD,QAAQsxB,qBAGnDF,EAAuBzM,SAAS1hB,KAAKjD,QAAQsxB,qBAEzCF,EAAuBzb,YACzB1S,KAAK6iB,qBAAqByL,UAAUtuB,KAAK6iB,qBAAqByL,YAAcH,EAAuBzb,WAAW8Q,O,kDAItFyK,GAAS,IAG3BE,EAA2BnuB,KAAKkuB,8BAA8BD,GAAS,GAAvEE,uBAERA,EAAuB7E,QAAQ,SAAS5H,SAAS,UAEjD1hB,KAAK4pB,2BACL5pB,KAAK0pB,oBAAoByE,K,oDAGGF,EAASM,GAAgB,WAE/CC,EAAUD,EAAiB,GAAK,WAChCE,EAAoBzuB,KAAK6iB,qBAAqBpgB,KAA1B,YAAoC+rB,IAAWrK,IAAI,iCAEvEuK,EAAeD,EAAkBlc,QACjCoc,EAAcF,EAAkBrC,OAChCwC,EAAc5uB,KAAK6iB,qBAAqBpgB,KAAK,eAAeP,OAAS,EAEvEisB,EAAyB,KACzBC,EAAgB,KAGpB,GADkBH,IAAYjuB,KAAKioB,SAASQ,QAC7B,CAEb,IAAMoG,EAAiBD,EAAc5uB,KAAK6iB,qBAAqBpgB,KAAK,eAAe8P,QAAUoc,EACzFG,EAAcD,EAAeE,KAAf,YAAyBP,EAAzB,wCAClBJ,EAAgBU,EAEhBL,EAAkBzL,MAAK,SAAC/nB,EAAKuL,GACvBY,EAAEZ,GAAI0Y,SAAS,EAAKniB,QAAQsxB,uBAC9BS,EAAcL,EAAkBnK,GAAGrpB,EAAM,GACzCmzB,EAAgBK,EAAkBnK,GAAGrpB,OAIzCkzB,EAAyBU,EAAe1J,GAAGuJ,KAAkBE,EAAcC,EAAiBC,MACvF,CAEL,IAAMD,EAAiBD,EAAc5uB,KAAK6iB,qBAAqBpgB,KAAK,eAAe8P,QAAUmc,EACzFM,EAAcH,EAAexY,KAAf,YAAyBmY,EAAzB,wCAClBJ,EAAgBY,EAEhBP,EAAkBzL,MAAK,SAAC/nB,EAAKuL,GACvBY,EAAEZ,GAAI0Y,SAAS,EAAKniB,QAAQsxB,uBAC9BW,EAAcP,EAAkBnK,GAAGrpB,EAAM,GACzCmzB,EAAgBK,EAAkBnK,GAAGrpB,OAIzCkzB,EAAyBU,EAAe1J,GAAGwJ,KAAiBC,EAAcC,EAAiBG,EAG7F,MAAO,CACLb,yBACAC,mB,uCAMFpuB,KAAKivB,sBAAsB,W,sCAK3BjvB,KAAKivB,sBAAsB,U,8CAGW,IAAlBC,EAAkB,uDAAJ,GAE5BC,EAAkBnvB,KAAK6iB,qBAAqBpgB,KAAK,cAAc0hB,IAAI,iCAAiC+K,KAE1GlvB,KAAK0pB,oBAAoByF,GAEzBnvB,KAAKguB,6BAEAmB,EAAgB1sB,KAAK,SAAS0iB,GAAG,aAEpCgK,EAAgBpQ,YAAY/e,KAAKjD,QAAQsxB,qBAG3Cc,EAAgBzN,SAAS1hB,KAAKjD,QAAQsxB,qBAElCc,EAAgBzc,YAClB1S,KAAK6iB,qBAAqByL,UAAUtuB,KAAK6iB,qBAAqByL,YAAca,EAAgBzc,WAAW8Q,O,oCAI7FjD,GAEZvgB,KAAKguB,6BACLzN,EAAgB+I,QAAQ,W,uCAGTtgB,GAAG,WAIlB,GAFAhJ,KAAKguB,6BAEDhuB,KAAKsiB,aAAc,CAErB,IAAM8M,EAAWpmB,EAAE2gB,MAAQ,IAAM3gB,EAAE2gB,MAAQ,GACrC0F,EAAWrmB,EAAE2gB,MAAQ,IAAM3gB,EAAE2gB,MAAQ,IACrC2F,EAA0B,IAAZtmB,EAAE2gB,OAElByF,GAAYC,IACdrvB,KAAKwkB,aAAa/hB,KAAK,SAASiqB,QAE9B4C,GACFtvB,KAAKwkB,aAAa/hB,KAAK,SAAS7B,IAAI,IAAI8rB,YAGrC,CAEL,IAAI6C,EAAoB,GAClBC,EAASpxB,OAAOqxB,aAAazmB,EAAE2gB,OAAOthB,cACtCqnB,EAAat1B,OAAOuI,KAAK3C,KAAKioB,UAAU5lB,KAAI,SAACpH,GAAD,OAAS,EAAKgtB,SAAShtB,MAGzE,GAF2Bu0B,IAA2C,IAAjCE,EAAWxpB,QAAQ8C,EAAE2gB,OAElC,CAEtB4F,GAAqBC,EAErB,IAAMrB,EAAyBnuB,KAAK6iB,qBAAqBpgB,KAAK,MAAMH,QAAO,SAACH,EAAO+gB,GAAR,OAAoB9b,EAAE8b,GAASmB,OAAOhc,cAAc3B,SAAS6oB,MAAoBhd,QAEvJvS,KAAK2iB,YAER3iB,KAAK6iB,qBAAqBpgB,KAAK,MAAMsc,YAAY,UAGnDoP,EAAuBzM,SAAS,UAChC1hB,KAAK0pB,oBAAoByE,GACzBnuB,KAAK4pB,+B,mDAOT5pB,KAAK6iB,qBAAqBpgB,KAAK,MAAMsc,YAAY/e,KAAKjD,QAAQsxB,uB,qDAK9D,IAAMsB,EAAc,IAAIC,cAAc,SAAU,CAC9CC,SAAS,EACTC,YAAY,IAEd9vB,KAAK8e,cAAcvkB,IAAI,GAAGw1B,cAAcJ,K,0CAGtBK,GAElBhwB,KAAK6iB,qBAAqBpgB,KAAK,eAAesc,YAAY,YAE1D/e,KAAKwrB,cAAcwE,K,iDAKnB,IAAMC,EAAejwB,KAAK6iB,qBAAqBpgB,KAAK,aAAa0hB,IAAI,aAAa5R,QAC9E0d,EAAa/tB,OACflC,KAAK6iB,qBAAqBqN,SAASD,GAEnCjwB,KAAK6iB,qBAAqByL,UAAU,K,oCAI1B0B,GAEG5oB,EAAE4oB,GACVtO,SAAS,c,mCAGL3kB,GAEX,OAAOqK,EAAE+oB,OAAO,GAAIpzB,K,wCAMpB,IADA,IAAIqzB,EAAY,KACP12B,EAAI,EAAGA,EAAI,UAAUwI,OAAQxI,IAGpC,IADA02B,EAAsB12B,EAAb,qBAAaA,OAAb,YAAaA,IACRwI,OACZ,OAAOkuB,EAIX,OAAOA,I,iCA/uBP,OAAOpwB,KAAKuP,WAAWoT,a,mCAIvB,OAAO3iB,KAAKuP,WAAW+S,e,iCAIvB,OAAOtiB,KAAKuP,WAAW2Q,a,iCAIvB,OAAOlgB,KAAKuP,WAAWiT,a,iCAIvB,OAAOxiB,KAAK8e,cAAcqG,GAAG,kB,iDC5EjC,IAAInpB,EAAS,EAAQ,GACjBkY,EAAO,EAAQ,IAA4BA,KAC3CmT,EAAc,EAAQ,IAEtBgJ,EAAmBr0B,EAAOuiB,WAC1B/H,EAAS,EAAI6Z,EAAiBhJ,EAAc,QAAWiJ,IAI3D72B,EAAOD,QAAUgd,EAAS,SAAoBrO,GAC5C,IAAIooB,EAAgBrc,EAAK9V,OAAO+J,IAC5BnG,EAASquB,EAAiBE,GAC9B,OAAkB,IAAXvuB,GAA2C,KAA3BuuB,EAAc1f,OAAO,IAAa,EAAI7O,GAC3DquB,G,gBCbJ,IAAInV,EAAW,EAAQ,KAEvBzhB,EAAOD,QAAU,SAAUkC,GACzB,GAAIwf,EAASxf,GACX,MAAMyC,UAAU,iDAChB,OAAOzC,I,gBCLX,IAEI6gB,EAFkB,EAAQ,EAElBvV,CAAgB,SAE5BvN,EAAOD,QAAU,SAAU8O,GACzB,IAAIqI,EAAS,IACb,IACE,MAAMrI,GAAaqI,GACnB,MAAO3H,GACP,IAEE,OADA2H,EAAO4L,IAAS,EACT,MAAMjU,GAAaqI,GAC1B,MAAOlU,KACT,OAAO,I,gBCbX,IAAI6H,EAAY,EAAQ,IACpBrD,EAAW,EAAQ,IACnBrC,EAAgB,EAAQ,IACxBsC,EAAW,EAAQ,IAGnBE,EAAe,SAAUovB,GAC3B,OAAO,SAAU1uB,EAAMD,EAAYqb,EAAiBuT,GAClDnsB,EAAUzC,GACV,IAAIpD,EAAIwC,EAASa,GACb/F,EAAO6C,EAAcH,GACrByD,EAAShB,EAASzC,EAAEyD,QACpBC,EAAQquB,EAAWtuB,EAAS,EAAI,EAChCxI,EAAI82B,GAAY,EAAI,EACxB,GAAItT,EAAkB,EAAG,OAAa,CACpC,GAAI/a,KAASpG,EAAM,CACjB00B,EAAO10B,EAAKoG,GACZA,GAASzI,EACT,MAGF,GADAyI,GAASzI,EACL82B,EAAWruB,EAAQ,EAAID,GAAUC,EACnC,MAAMhE,UAAU,+CAGpB,KAAMqyB,EAAWruB,GAAS,EAAID,EAASC,EAAOA,GAASzI,EAAOyI,KAASpG,IACrE00B,EAAO5uB,EAAW4uB,EAAM10B,EAAKoG,GAAQA,EAAO1D,IAE9C,OAAOgyB,IAIXh3B,EAAOD,QAAU,CAGfiqB,KAAMriB,GAAa,GAGnBsvB,MAAOtvB,GAAa,K,gBCtCtB,IAAIvD,EAAc,EAAQ,GACtB7B,EAAS,EAAQ,GACjBc,EAAW,EAAQ,IACnBqgB,EAAoB,EAAQ,KAC5B9iB,EAAiB,EAAQ,GAAuCoC,EAChEwH,EAAsB,EAAQ,IAA8CxH,EAC5Eye,EAAW,EAAQ,KACnByV,EAAW,EAAQ,IACnBh0B,EAAW,EAAQ,IACnBqB,EAAQ,EAAQ,GAChB4yB,EAAa,EAAQ,KAGrBrU,EAFkB,EAAQ,EAElBvV,CAAgB,SACxB6pB,EAAe70B,EAAOsQ,OACtBmO,EAAkBoW,EAAav1B,UAC/B4Q,EAAM,KACNC,EAAM,KAGN2kB,EAAc,IAAID,EAAa3kB,KAASA,EAU5C,GARarO,GAAef,EAAS,UAAYg0B,GAAe9yB,GAAM,WAGpE,OAFAmO,EAAIoQ,IAAS,EAENsU,EAAa3kB,IAAQA,GAAO2kB,EAAa1kB,IAAQA,GAAiC,QAA1B0kB,EAAa3kB,EAAK,SAKvE,CAsBV,IArBA,IAAI6kB,EAAgB,SAAgBC,EAASxW,GAC3C,IAAIyW,EAAejxB,gBAAgB+wB,EAC/BG,EAAkBhW,EAAS8V,GAC3BG,OAA8BxzB,IAAV6c,EACxB,OAAQyW,GAAgBC,GAAmBF,EAAQ7pB,cAAgB4pB,GAAiBI,EAAoBH,EACpG7T,EAAkB2T,EAChB,IAAID,EAAaK,IAAoBC,EAAoBH,EAAQh0B,OAASg0B,EAASxW,GACnFqW,GAAcK,EAAkBF,aAAmBD,GACjDC,EAAQh0B,OACRg0B,EAASE,GAAmBC,EAAoBR,EAAS92B,KAAKm3B,GAAWxW,GAC7EyW,EAAejxB,KAAOya,EAAiBsW,IAEzCK,EAAQ,SAAUn2B,GACpBA,KAAO81B,GAAiB12B,EAAe02B,EAAe91B,EAAK,CACzDsF,cAAc,EACdhG,IAAK,WAAc,OAAOs2B,EAAa51B,IACvCgI,IAAK,SAAUvH,GAAMm1B,EAAa51B,GAAOS,MAGzCiH,EAAOsB,EAAoB4sB,GAC3B1uB,EAAQ,EACLQ,EAAKT,OAASC,GAAOivB,EAAMzuB,EAAKR,MACvCsY,EAAgBtT,YAAc4pB,EAC9BA,EAAcz1B,UAAYmf,EAC1B9d,EAASX,EAAQ,SAAU+0B,GAI7BH,EAAW,W,6BC1DX,IAAIhoB,EAAa,EAAQ,IACrB9K,EAAuB,EAAQ,GAC/BkJ,EAAkB,EAAQ,GAC1BnJ,EAAc,EAAQ,GAEtBkJ,EAAUC,EAAgB,WAE9BvN,EAAOD,QAAU,SAAU63B,GACzB,IAAIhV,EAAczT,EAAWyoB,GACzBh3B,EAAiByD,EAAqBrB,EAEtCoB,GAAewe,IAAgBA,EAAYtV,IAC7C1M,EAAegiB,EAAatV,EAAS,CACnCxG,cAAc,EACdhG,IAAK,WAAc,OAAOyF,U,6BCdhC,IAAIoH,EAAI,EAAQ,GACZ9C,EAAY,EAAQ,IACpBrD,EAAW,EAAQ,IACnBjD,EAAQ,EAAQ,GAChBkP,EAAoB,EAAQ,IAE5BokB,EAAa,GAAGC,KAChBtoB,EAAO,CAAC,EAAG,EAAG,GAGduoB,EAAqBxzB,GAAM,WAC7BiL,EAAKsoB,UAAK5zB,MAGR8zB,EAAgBzzB,GAAM,WACxBiL,EAAKsoB,KAAK,SAGRlkB,EAAgBH,EAAkB,QAMtC9F,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,EAAM9J,OAJrB8zB,IAAuBC,GAAiBpkB,GAID,CAClDkkB,KAAM,SAAcG,GAClB,YAAqB/zB,IAAd+zB,EACHJ,EAAWz3B,KAAKoH,EAASjB,OACzBsxB,EAAWz3B,KAAKoH,EAASjB,MAAOsE,EAAUotB,Q,6BC5BlD,IAAI3wB,EAAkB,EAAQ,IAC1BjC,EAAY,EAAQ,IACpBoC,EAAW,EAAQ,IACnBgM,EAAoB,EAAQ,IAE5BnO,EAAMpD,KAAKoD,IACX4yB,EAAoB,GAAGC,YACvBxkB,IAAkBukB,GAAqB,EAAI,CAAC,GAAGC,YAAY,GAAI,GAAK,EACpEvkB,EAAgBH,EAAkB,eAItCzT,EAAOD,QAAW4T,GAAiBC,EAAiB,SAAqBC,GAEvE,GAAIF,EAAe,OAAOukB,EAAkBxoB,MAAMnJ,KAAM0E,YAAc,EACtE,IAAIjG,EAAIsC,EAAgBf,MACpBkC,EAAShB,EAASzC,EAAEyD,QACpBC,EAAQD,EAAS,EAGrB,IAFIwC,UAAUxC,OAAS,IAAGC,EAAQpD,EAAIoD,EAAOrD,EAAU4F,UAAU,MAC7DvC,EAAQ,IAAGA,EAAQD,EAASC,GAC1BA,GAAS,EAAGA,IAAS,GAAIA,KAAS1D,GAAKA,EAAE0D,KAAWmL,EAAe,OAAOnL,GAAS,EACzF,OAAQ,GACNwvB,G,gBCvBJ,IAAIvqB,EAAI,EAAQ,GACZyqB,EAAU,EAAQ,KAAgC1gB,OAItD/J,EAAE,CAAEnK,OAAQ,SAAUO,MAAM,GAAQ,CAClC2T,OAAQ,SAAgB1S,GACtB,OAAOozB,EAAQpzB,O,gBCPnB,IAAIZ,EAAc,EAAQ,GACtBmP,EAAa,EAAQ,IACrBjM,EAAkB,EAAQ,IAC1BiC,EAAuB,EAAQ,IAA8CvG,EAG7E2E,EAAe,SAAU0wB,GAC3B,OAAO,SAAUp2B,GAOf,IANA,IAKIT,EALAwD,EAAIsC,EAAgBrF,GACpBiH,EAAOqK,EAAWvO,GAClByD,EAASS,EAAKT,OACdxI,EAAI,EACJsI,EAAS,GAENE,EAASxI,GACduB,EAAM0H,EAAKjJ,KACNmE,IAAemF,EAAqBnJ,KAAK4E,EAAGxD,IAC/C+G,EAAO9C,KAAK4yB,EAAa,CAAC72B,EAAKwD,EAAExD,IAAQwD,EAAExD,IAG/C,OAAO+G,IAIXvI,EAAOD,QAAU,CAGf0d,QAAS9V,GAAa,GAGtB+P,OAAQ/P,GAAa,K,6BC7BvB,IAAIH,EAAW,EAAQ,IACnBqF,EAAkB,EAAQ,IAC1BpF,EAAW,EAAQ,IAIvBzH,EAAOD,QAAU,SAAcmB,GAO7B,IANA,IAAI8D,EAAIwC,EAASjB,MACbkC,EAAShB,EAASzC,EAAEyD,QACpBgb,EAAkBxY,UAAUxC,OAC5BC,EAAQmE,EAAgB4W,EAAkB,EAAIxY,UAAU,QAAK/G,EAAWuE,GACxE+R,EAAMiJ,EAAkB,EAAIxY,UAAU,QAAK/G,EAC3Co0B,OAAiBp0B,IAARsW,EAAoB/R,EAASoE,EAAgB2N,EAAK/R,GACxD6vB,EAAS5vB,GAAO1D,EAAE0D,KAAWxH,EACpC,OAAO8D,I,6BCdT,IAAI2I,EAAI,EAAQ,GACZjD,EAAU,EAAQ,IAElB6tB,EAAgB,GAAGC,QACnBhpB,EAAO,CAAC,EAAG,GAMf7B,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,EAAM9J,OAAQU,OAAO6K,KAAU7K,OAAO6K,EAAKgpB,YAAc,CACnFA,QAAS,WAEP,OADI9tB,EAAQnE,QAAOA,KAAKkC,OAASlC,KAAKkC,QAC/B8vB,EAAcn4B,KAAKmG,U,6BCb9B,IAAIoH,EAAI,EAAQ,GACZtI,EAAY,EAAQ,IACpBozB,EAAkB,EAAQ,KAC1BC,EAAS,EAAQ,KACjBn0B,EAAQ,EAAQ,GAEhBo0B,EAAgB,GAAIC,QACpBnyB,EAAQvE,KAAKuE,MAEboyB,EAAM,SAAUC,EAAGp3B,EAAGq3B,GACxB,OAAa,IAANr3B,EAAUq3B,EAAMr3B,EAAI,GAAM,EAAIm3B,EAAIC,EAAGp3B,EAAI,EAAGq3B,EAAMD,GAAKD,EAAIC,EAAIA,EAAGp3B,EAAI,EAAGq3B,IA4BlFprB,EAAE,CAAEnK,OAAQ,SAAUuK,OAAO,EAAM9J,OAZtB00B,IACY,UAAvB,KAAQC,QAAQ,IACG,MAAnB,GAAIA,QAAQ,IACS,SAArB,MAAMA,QAAQ,IACuB,yBAArC,mBAAsBA,QAAQ,MAC1Br0B,GAAM,WAEVo0B,EAAcv4B,KAAK,QAKgC,CAEnDw4B,QAAS,SAAiBI,GACxB,IAKIzpB,EAAGmT,EAAG9G,EAAGpD,EALTygB,EAASR,EAAgBlyB,MACzB2yB,EAAc7zB,EAAU2zB,GACxB1qB,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACvB6qB,EAAO,GACP5wB,EAAS,IAGT6wB,EAAW,SAAU13B,EAAGpB,GAG1B,IAFA,IAAIoI,GAAS,EACT2wB,EAAK/4B,IACAoI,EAAQ,GACf2wB,GAAM33B,EAAI4M,EAAK5F,GACf4F,EAAK5F,GAAS2wB,EAAK,IACnBA,EAAK5yB,EAAM4yB,EAAK,MAIhBC,EAAS,SAAU53B,GAGrB,IAFA,IAAIgH,EAAQ,EACRpI,EAAI,IACCoI,GAAS,GAChBpI,GAAKgO,EAAK5F,GACV4F,EAAK5F,GAASjC,EAAMnG,EAAIoB,GACxBpB,EAAKA,EAAIoB,EAAK,KAId63B,EAAe,WAGjB,IAFA,IAAI7wB,EAAQ,EACR1G,EAAI,KACC0G,GAAS,GAChB,GAAU,KAAN1G,GAAsB,IAAV0G,GAA+B,IAAhB4F,EAAK5F,GAAc,CAChD,IAAIvH,EAAIwD,OAAO2J,EAAK5F,IACpB1G,EAAU,KAANA,EAAWb,EAAIa,EAAI02B,EAAOt4B,KAAK,IAAK,EAAIe,EAAEsH,QAAUtH,EAE1D,OAAOa,GAGX,GAAIk3B,EAAc,GAAKA,EAAc,GAAI,MAAMM,WAAW,6BAE1D,GAAIP,GAAUA,EAAQ,MAAO,MAC7B,GAAIA,IAAW,MAAQA,GAAU,KAAM,OAAOt0B,OAAOs0B,GAKrD,GAJIA,EAAS,IACXE,EAAO,IACPF,GAAUA,GAERA,EAAS,MAKX,GAHAvW,GADAnT,EA3EI,SAAUupB,GAGlB,IAFA,IAAIp3B,EAAI,EACJ+3B,EAAKX,EACFW,GAAM,MACX/3B,GAAK,GACL+3B,GAAM,KAER,KAAOA,GAAM,GACX/3B,GAAK,EACL+3B,GAAM,EACN,OAAO/3B,EAiEDg4B,CAAIT,EAASJ,EAAI,EAAG,GAAI,IAAM,IAC1B,EAAII,EAASJ,EAAI,GAAItpB,EAAG,GAAK0pB,EAASJ,EAAI,EAAGtpB,EAAG,GACxDmT,GAAK,kBACLnT,EAAI,GAAKA,GACD,EAAG,CAGT,IAFA6pB,EAAS,EAAG1W,GACZ9G,EAAIsd,EACGtd,GAAK,GACVwd,EAAS,IAAK,GACdxd,GAAK,EAIP,IAFAwd,EAASP,EAAI,GAAIjd,EAAG,GAAI,GACxBA,EAAIrM,EAAI,EACDqM,GAAK,IACV0d,EAAO,GAAK,IACZ1d,GAAK,GAEP0d,EAAO,GAAK1d,GACZwd,EAAS,EAAG,GACZE,EAAO,GACP/wB,EAASgxB,SAETH,EAAS,EAAG1W,GACZ0W,EAAS,IAAM7pB,EAAG,GAClBhH,EAASgxB,IAAiBb,EAAOt4B,KAAK,IAAK84B,GAU7C,OALA3wB,EAFE2wB,EAAc,EAEPC,IADT3gB,EAAIjQ,EAAOE,SACWywB,EAClB,KAAOR,EAAOt4B,KAAK,IAAK84B,EAAc1gB,GAAKjQ,EAC3CA,EAAO3B,MAAM,EAAG4R,EAAI0gB,GAAe,IAAM3wB,EAAO3B,MAAM4R,EAAI0gB,IAErDC,EAAO5wB,M,gBC1HtB,IAAIe,EAAU,EAAQ,IAItBtJ,EAAOD,QAAU,SAAUmB,GACzB,GAAoB,iBAATA,GAAuC,UAAlBoI,EAAQpI,GACtC,MAAMwD,UAAU,wBAElB,OAAQxD,I,6BCPV,IAAImE,EAAY,EAAQ,IACpBD,EAAyB,EAAQ,IAIrCpF,EAAOD,QAAU,GAAG24B,QAAU,SAAgBiB,GAC5C,IAAIxmB,EAAMxO,OAAOS,EAAuBmB,OACpCgC,EAAS,GACT7G,EAAI2D,EAAUs0B,GAClB,GAAIj4B,EAAI,GAAKA,GAAKm1B,IAAU,MAAM2C,WAAW,+BAC7C,KAAM93B,EAAI,GAAIA,KAAO,KAAOyR,GAAOA,GAAc,EAAJzR,IAAO6G,GAAU4K,GAC9D,OAAO5K,I,gBCZT,IAAIhG,EAAS,EAAQ,GACjBkY,EAAO,EAAQ,IAA4BA,KAC3CmT,EAAc,EAAQ,IAEtBgM,EAAiBr3B,EAAO6hB,SACxByV,EAAM,cACN9c,EAAgD,IAAvC6c,EAAehM,EAAc,OAAwD,KAAzCgM,EAAehM,EAAc,QAItF5tB,EAAOD,QAAUgd,EAAS,SAAkBrO,EAAQsV,GAClD,IAAIhL,EAAIyB,EAAK9V,OAAO+J,IACpB,OAAOkrB,EAAe5gB,EAAIgL,IAAU,IAAO6V,EAAIrqB,KAAKwJ,GAAK,GAAK,MAC5D4gB,G,6BCZJ,IAAIr3B,EAAS,EAAQ,GACjB6B,EAAc,EAAQ,GACtB6M,EAAsB,EAAQ,IAAuCA,oBACrEhO,EAA8B,EAAQ,GACtC62B,EAAc,EAAQ,KACtBv1B,EAAQ,EAAQ,GAChBw1B,EAAa,EAAQ,KACrB10B,EAAY,EAAQ,IACpBoC,EAAW,EAAQ,IACnBuyB,EAAU,EAAQ,KAClBxvB,EAAsB,EAAQ,IAA8CxH,EAC5EpC,EAAiB,EAAQ,GAAuCoC,EAChEi3B,EAAY,EAAQ,KACpB9lB,EAAiB,EAAQ,IACzBrO,EAAsB,EAAQ,IAE9BC,EAAmBD,EAAoBhF,IACvC+O,EAAmB/J,EAAoB0D,IAMvC0wB,EAAoB33B,EAAmB,YACvC43B,EAAeD,EACfE,EAAY73B,EAAgB,SAC5BL,EAAOK,EAAOL,KACds3B,EAAaj3B,EAAOi3B,WAGpBa,EAAMn4B,EAAKm4B,IACXxB,EAAM32B,EAAK22B,IACXpyB,EAAQvE,EAAKuE,MACbizB,EAAMx3B,EAAKw3B,IACXY,EAAMp4B,EAAKo4B,IAGXC,EAAc,SAAUtB,EAAQuB,EAAgBC,GAClD,IAOIC,EAAUC,EAAUr6B,EAPpBs6B,EAAS,IAAInwB,MAAMgwB,GACnBI,EAAyB,EAARJ,EAAYD,EAAiB,EAC9CM,GAAQ,GAAKD,GAAkB,EAC/BE,EAAQD,GAAQ,EAChBE,EAAwB,KAAnBR,EAAwB3B,EAAI,GAAI,IAAMA,EAAI,GAAI,IAAM,EACzDM,EAAOF,EAAS,GAAgB,IAAXA,GAAgB,EAAIA,EAAS,EAAI,EAAI,EAC1DvwB,EAAQ,EAkCZ,KAhCAuwB,EAASoB,EAAIpB,KAECA,GAAUA,IAnBX,KAqBX0B,EAAW1B,GAAUA,EAAS,EAAI,EAClCyB,EAAWI,IAEXJ,EAAWj0B,EAAMizB,EAAIT,GAAUqB,GAC3BrB,GAAU34B,EAAIu4B,EAAI,GAAI6B,IAAa,IACrCA,IACAp6B,GAAK,IAGL24B,GADEyB,EAAWK,GAAS,EACZC,EAAK16B,EAEL06B,EAAKnC,EAAI,EAAG,EAAIkC,IAEfz6B,GAAK,IAChBo6B,IACAp6B,GAAK,GAEHo6B,EAAWK,GAASD,GACtBH,EAAW,EACXD,EAAWI,GACFJ,EAAWK,GAAS,GAC7BJ,GAAY1B,EAAS34B,EAAI,GAAKu4B,EAAI,EAAG2B,GACrCE,GAAsBK,IAEtBJ,EAAW1B,EAASJ,EAAI,EAAGkC,EAAQ,GAAKlC,EAAI,EAAG2B,GAC/CE,EAAW,IAGRF,GAAkB,EAAGI,EAAOlyB,KAAsB,IAAXiyB,EAAgBA,GAAY,IAAKH,GAAkB,GAGjG,IAFAE,EAAWA,GAAYF,EAAiBG,EACxCE,GAAkBL,EACXK,EAAiB,EAAGD,EAAOlyB,KAAsB,IAAXgyB,EAAgBA,GAAY,IAAKG,GAAkB,GAEhG,OADAD,IAASlyB,IAAiB,IAAPywB,EACZyB,GAGLK,EAAgB,SAAUL,EAAQJ,GACpC,IAQIG,EARAF,EAAQG,EAAOnyB,OACfoyB,EAAyB,EAARJ,EAAYD,EAAiB,EAC9CM,GAAQ,GAAKD,GAAkB,EAC/BE,EAAQD,GAAQ,EAChBI,EAAQL,EAAiB,EACzBnyB,EAAQ+xB,EAAQ,EAChBtB,EAAOyB,EAAOlyB,KACdgyB,EAAkB,IAAPvB,EAGf,IADAA,IAAS,EACF+B,EAAQ,EAAGR,EAAsB,IAAXA,EAAiBE,EAAOlyB,GAAQA,IAASwyB,GAAS,GAI/E,IAHAP,EAAWD,GAAY,IAAMQ,GAAS,EACtCR,KAAcQ,EACdA,GAASV,EACFU,EAAQ,EAAGP,EAAsB,IAAXA,EAAiBC,EAAOlyB,GAAQA,IAASwyB,GAAS,GAC/E,GAAiB,IAAbR,EACFA,EAAW,EAAIK,MACV,IAAIL,IAAaI,EACtB,OAAOH,EAAWxgB,IAAMgf,GA5Eb,QA8EXwB,GAAsB9B,EAAI,EAAG2B,GAC7BE,GAAsBK,EACtB,OAAQ5B,GAAQ,EAAI,GAAKwB,EAAW9B,EAAI,EAAG6B,EAAWF,IAGtDW,EAAc,SAAUP,GAC1B,OAAOA,EAAO,IAAM,GAAKA,EAAO,IAAM,GAAKA,EAAO,IAAM,EAAIA,EAAO,IAGjEQ,EAAW,SAAUnC,GACvB,MAAO,CAAU,IAATA,IAGNoC,EAAY,SAAUpC,GACxB,MAAO,CAAU,IAATA,EAAeA,GAAU,EAAI,MAGnCqC,EAAY,SAAUrC,GACxB,MAAO,CAAU,IAATA,EAAeA,GAAU,EAAI,IAAMA,GAAU,GAAK,IAAMA,GAAU,GAAK,MAG7EsC,EAAc,SAAUtC,GAC1B,OAAOsB,EAAYtB,EAAQ,GAAI,IAG7BuC,EAAc,SAAUvC,GAC1B,OAAOsB,EAAYtB,EAAQ,GAAI,IAG7BwC,EAAY,SAAU7Y,EAAaphB,GACrCZ,EAAegiB,EAAqB,UAAGphB,EAAK,CAAEV,IAAK,WAAc,OAAOiF,EAAiBQ,MAAM/E,OAG7FV,EAAM,SAAUqkB,EAAMwU,EAAOjxB,EAAOgzB,GACtC,IACIC,EAAW3B,GADCtxB,GAEZ5F,EAAQiD,EAAiBof,GAC7B,GAAIwW,EAAWhC,EAAQ72B,EAAM84B,WAAY,MAAMpC,EA1H/B,eA2HhB,IAAIiB,EAAQ10B,EAAiBjD,EAAM83B,QAAQH,MACvClgB,EAAQohB,EAAW74B,EAAM+4B,WACzBC,EAAOrB,EAAM7zB,MAAM2T,EAAOA,EAAQof,GACtC,OAAO+B,EAAiBI,EAAOA,EAAKtD,WAGlChvB,EAAM,SAAU2b,EAAMwU,EAAOjxB,EAAOqzB,EAAY76B,EAAOw6B,GACzD,IACIC,EAAW3B,GADCtxB,GAEZ5F,EAAQiD,EAAiBof,GAC7B,GAAIwW,EAAWhC,EAAQ72B,EAAM84B,WAAY,MAAMpC,EArI/B,eAyIhB,IAHA,IAAIiB,EAAQ10B,EAAiBjD,EAAM83B,QAAQH,MACvClgB,EAAQohB,EAAW74B,EAAM+4B,WACzBC,EAAOC,GAAY76B,GACdjB,EAAI,EAAGA,EAAI05B,EAAO15B,IAAKw6B,EAAMlgB,EAAQta,GAAK67B,EAAKJ,EAAiBz7B,EAAI05B,EAAQ15B,EAAI,IAG3F,GAAKgR,EA0FE,CACL,IAAK1M,GAAM,WACT21B,EAAkB,QACb31B,GAAM,WACX,IAAI21B,GAAmB,OACnB31B,GAAM,WAIV,OAHA,IAAI21B,EACJ,IAAIA,EAAkB,KACtB,IAAIA,EAAkB/f,KAlPP,eAmPR+f,EAAkB15B,QACvB,CAMF,IADA,IAC+DgB,EAD3Dw6B,GAJJ7B,EAAe,SAAqB1xB,GAElC,OADAsxB,EAAWxzB,KAAM4zB,GACV,IAAID,EAAkBF,EAAQvxB,MAEU,UAAIyxB,EAA2B,UACvEhxB,EAAOsB,EAAoB0vB,GAAoBte,EAAI,EAAQ1S,EAAKT,OAASmT,IACzEpa,EAAM0H,EAAK0S,QAASue,GACzBl3B,EAA4Bk3B,EAAc34B,EAAK04B,EAAkB14B,IAGrEw6B,EAAqBtuB,YAAcysB,EAGrC,IAAI8B,EAAW,IAAI7B,EAAU,IAAID,EAAa,IAC1C+B,EAAgB9B,EAAmB,UAAE+B,QACzCF,EAASE,QAAQ,EAAG,YACpBF,EAASE,QAAQ,EAAG,aAChBF,EAASG,QAAQ,IAAOH,EAASG,QAAQ,IAAItC,EAAYM,EAAmB,UAAG,CACjF+B,QAAS,SAAiBN,EAAY36B,GACpCg7B,EAAc97B,KAAKmG,KAAMs1B,EAAY36B,GAAS,IAAM,KAEtDm7B,SAAU,SAAkBR,EAAY36B,GACtCg7B,EAAc97B,KAAKmG,KAAMs1B,EAAY36B,GAAS,IAAM,MAErD,CAAEkF,QAAQ,SA5Hb+zB,EAAe,SAAqB1xB,GAClCsxB,EAAWxzB,KAAM4zB,EAlJF,eAmJf,IAAIyB,EAAa5B,EAAQvxB,GACzBoH,EAAiBtJ,KAAM,CACrBk0B,MAAOR,EAAU75B,KAAK,IAAIqK,MAAMmxB,GAAa,GAC7CA,WAAYA,IAETx3B,IAAamC,KAAKq1B,WAAaA,IAGtCxB,EAAY,SAAkBQ,EAAQiB,EAAYD,GAChD7B,EAAWxzB,KAAM6zB,EA3JL,YA4JZL,EAAWa,EAAQT,EA5JP,YA6JZ,IAAImC,EAAev2B,EAAiB60B,GAAQgB,WACxCW,EAASl3B,EAAUw2B,GACvB,GAAIU,EAAS,GAAKA,EAASD,EAAc,MAAM9C,EAAW,gBAE1D,GAAI+C,GADJX,OAA4B13B,IAAf03B,EAA2BU,EAAeC,EAAS90B,EAASm0B,IAC/CU,EAAc,MAAM9C,EA/J/B,gBAgKf3pB,EAAiBtJ,KAAM,CACrBq0B,OAAQA,EACRgB,WAAYA,EACZC,WAAYU,IAETn4B,IACHmC,KAAKq0B,OAASA,EACdr0B,KAAKq1B,WAAaA,EAClBr1B,KAAKs1B,WAAaU,IAIlBn4B,IACFq3B,EAAUtB,EAAc,cACxBsB,EAAUrB,EAAW,UACrBqB,EAAUrB,EAAW,cACrBqB,EAAUrB,EAAW,eAGvBN,EAAYM,EAAmB,UAAG,CAChCgC,QAAS,SAAiBP,GACxB,OAAO/6B,EAAIyF,KAAM,EAAGs1B,GAAY,IAAM,IAAM,IAE9CW,SAAU,SAAkBX,GAC1B,OAAO/6B,EAAIyF,KAAM,EAAGs1B,GAAY,IAElCY,SAAU,SAAkBZ,GAC1B,IAAIpB,EAAQ35B,EAAIyF,KAAM,EAAGs1B,EAAY5wB,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,GAC3E,OAAQu2B,EAAM,IAAM,EAAIA,EAAM,KAAO,IAAM,IAE7CiC,UAAW,SAAmBb,GAC5B,IAAIpB,EAAQ35B,EAAIyF,KAAM,EAAGs1B,EAAY5wB,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,GAC3E,OAAOu2B,EAAM,IAAM,EAAIA,EAAM,IAE/BkC,SAAU,SAAkBd,GAC1B,OAAOV,EAAYr6B,EAAIyF,KAAM,EAAGs1B,EAAY5wB,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,KAEpF04B,UAAW,SAAmBf,GAC5B,OAAOV,EAAYr6B,EAAIyF,KAAM,EAAGs1B,EAAY5wB,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,MAAgB,GAEpG24B,WAAY,SAAoBhB,GAC9B,OAAOZ,EAAcn6B,EAAIyF,KAAM,EAAGs1B,EAAY5wB,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,GAAY,KAElG44B,WAAY,SAAoBjB,GAC9B,OAAOZ,EAAcn6B,EAAIyF,KAAM,EAAGs1B,EAAY5wB,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,GAAY,KAElGi4B,QAAS,SAAiBN,EAAY36B,GACpCsI,EAAIjD,KAAM,EAAGs1B,EAAYT,EAAUl6B,IAErCm7B,SAAU,SAAkBR,EAAY36B,GACtCsI,EAAIjD,KAAM,EAAGs1B,EAAYT,EAAUl6B,IAErC67B,SAAU,SAAkBlB,EAAY36B,GACtCsI,EAAIjD,KAAM,EAAGs1B,EAAYR,EAAWn6B,EAAO+J,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,IAEnF84B,UAAW,SAAmBnB,EAAY36B,GACxCsI,EAAIjD,KAAM,EAAGs1B,EAAYR,EAAWn6B,EAAO+J,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,IAEnF+4B,SAAU,SAAkBpB,EAAY36B,GACtCsI,EAAIjD,KAAM,EAAGs1B,EAAYP,EAAWp6B,EAAO+J,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,IAEnFg5B,UAAW,SAAmBrB,EAAY36B,GACxCsI,EAAIjD,KAAM,EAAGs1B,EAAYP,EAAWp6B,EAAO+J,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,IAEnFi5B,WAAY,SAAoBtB,EAAY36B,GAC1CsI,EAAIjD,KAAM,EAAGs1B,EAAYN,EAAar6B,EAAO+J,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,IAErFk5B,WAAY,SAAoBvB,EAAY36B,GAC1CsI,EAAIjD,KAAM,EAAGs1B,EAAYL,EAAat6B,EAAO+J,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,MAyCzFiQ,EAAegmB,EAhRI,eAiRnBhmB,EAAeimB,EAhRC,YAkRhBp6B,EAAOD,QAAU,CACfmR,YAAaipB,EACb9pB,SAAU+pB,I,cCxSZp6B,EAAOD,QAAU,SAAUkC,EAAI2gB,EAAapiB,GAC1C,KAAMyB,aAAc2gB,GAClB,MAAMle,UAAU,cAAgBlE,EAAOA,EAAO,IAAM,IAAM,cAC1D,OAAOyB,I,gBCHX,IAAIoD,EAAY,EAAQ,IACpBoC,EAAW,EAAQ,IAIvBzH,EAAOD,QAAU,SAAUkC,GACzB,QAAWiC,IAAPjC,EAAkB,OAAO,EAC7B,IAAIg3B,EAAS5zB,EAAUpD,GACnBwG,EAAShB,EAASwxB,GACtB,GAAIA,IAAWxwB,EAAQ,MAAM+wB,WAAW,yBACxC,OAAO/wB,I,gBCVT,IAEI+O,EAFkB,EAAQ,EAEfjK,CAAgB,YAC3B8vB,GAAe,EAEnB,IACE,IAAIC,EAAS,EACTC,EAAqB,CACvB3gB,KAAM,WACJ,MAAO,CAAE5M,OAAQstB,MAEnB,OAAU,WACRD,GAAe,IAGnBE,EAAmB/lB,GAAY,WAC7B,OAAOjR,MAGTkE,MAAM6Y,KAAKia,GAAoB,WAAc,MAAM,KACnD,MAAO76B,IAET1C,EAAOD,QAAU,SAAU0C,EAAM+6B,GAC/B,IAAKA,IAAiBH,EAAc,OAAO,EAC3C,IAAII,GAAoB,EACxB,IACE,IAAI97B,EAAS,GACbA,EAAO6V,GAAY,WACjB,MAAO,CACLoF,KAAM,WACJ,MAAO,CAAE5M,KAAMytB,GAAoB,MAIzCh7B,EAAKd,GACL,MAAOe,IACT,OAAO+6B,I,gBCpCT,IAAIC,EAAoB,EAAQ,KAEhC19B,EAAOD,QAAU,SAAUkC,EAAI07B,GAC7B,IAAIpB,EAASmB,EAAkBz7B,GAC/B,GAAIs6B,EAASoB,EAAO,MAAMnE,WAAW,gBACrC,OAAO+C,I,gBCLT,IAAIjzB,EAAU,EAAQ,IAClBqG,EAAY,EAAQ,IAGpB6H,EAFkB,EAAQ,EAEfjK,CAAgB,YAE/BvN,EAAOD,QAAU,SAAUkC,GACzB,GAAUiC,MAANjC,EAAiB,OAAOA,EAAGuV,IAC1BvV,EAAG,eACH0N,EAAUrG,EAAQrH,M,gBCTzB,IAAIsL,EAAkB,EAAQ,GAC1BoC,EAAY,EAAQ,IAEpB6H,EAAWjK,EAAgB,YAC3B2B,EAAiBzE,MAAM5I,UAG3B7B,EAAOD,QAAU,SAAUkC,GACzB,YAAciC,IAAPjC,IAAqB0N,EAAUlF,QAAUxI,GAAMiN,EAAesI,KAAcvV,K,+OCRrFmrB,QAAO,SAACzf,IAoOQ,IApOF,WAIV,c,4FAAc,SACZpH,KAAKq3B,cAAL,UAAwB,CAAC,OAAQ,WAAY,QAAS,MAAO,MAAO,SAAU,SAAU,aACrFh1B,KAAI,SAACi1B,GAAD,2BAA4BA,EAA5B,QACJv3B,KAAK,MAFR,cAGAC,KAAKu3B,iBAAmB,wBACxBv3B,KAAKw3B,MAAQpwB,EAAE,qBACfpH,KAAKy3B,MAAQrwB,EAAE,QACfpH,KAAK03B,UAAYtwB,EAAE1B,U,UAXX,O,EAAA,G,EAAA,8BAcH,IAICiyB,EAJD,OACL33B,KAAK43B,kBAAkBxwB,EAAE,oBAAqB,OAE1CpH,KAAKw3B,MAAMt1B,SAIXy1B,EADE77B,OAAO+7B,YACC,SAAU3U,EAAS4U,EAAO9O,GAClC9F,EAAQ2U,YAAR,YAAyBC,GAAS9O,IAG1B,SAAU9F,EAAS4U,EAAO9O,GAClC9F,EAAQ6U,iBAAiBD,EAAO9O,GAAS,IAI7ChpB,KAAKw3B,MAAMxU,MAAK,WACd,IAAMjnB,EAAOiE,KAEb,SAASg4B,IACPj8B,EAAKsJ,MAAM6b,OAAS,OACpBnlB,EAAKsJ,MAAM6b,OAAX,UAAuBnlB,EAAK4vB,aAA5B,MAGF,SAASsM,IACPn8B,OAAOo8B,WAAWF,EAAQ,GAG5BL,EAAQ57B,EAAM,SAAUi8B,GACxBL,EAAQ57B,EAAM,MAAOk8B,GACrBN,EAAQ57B,EAAM,QAASk8B,GACvBN,EAAQ57B,EAAM,OAAQk8B,GACtBN,EAAQ57B,EAAM,UAAWk8B,GAEzBD,QAIJ5wB,EAAEpH,KAAKq3B,eAAerU,MAAK,SAAC7gB,EAAO1B,GACjC,IAAMmB,EAAQwF,EAAE3G,GACV03B,EAAa13B,EAAM23B,SAASC,SAClC,EAAKC,iBAAiB12B,GAElBu2B,GACF,EAAKP,kBAAkBh2B,EAAO,UAIlC5B,KAAKu4B,kBACLv4B,KAAKw4B,iBACLx4B,KAAKy4B,mBACLz4B,KAAK04B,kBACL14B,KAAK24B,kBACL34B,KAAK44B,sBAELxxB,EAAEpH,KAAKu3B,kBAAkBvU,KAAKhjB,KAAK64B,oBACnC74B,KAAKy3B,MAAM3S,GAAG,gBAAiB9kB,KAAKu3B,iBAAkBv3B,KAAK64B,sBAtEnD,wCAyEQj3B,EAAOk3B,GACvBA,EAAS,GAAH,OAAMA,EAAN,SACNl3B,EAAMyrB,SAAS,YAAYyL,GAAQ,YA3E3B,wCA8EQ,WAChB94B,KAAK03B,UAAU5S,GAAG,QAAS9kB,KAAKq3B,eAAe,SAACruB,GAC9C,EAAK4uB,kBAAkBxwB,EAAE4B,EAAE/L,QAAS,YAhF9B,uCAoFO,WACf+C,KAAK03B,UAAU5S,GAAG,OAAQ9kB,KAAKq3B,eAAe,SAACruB,GAC7C,IAAMpH,EAAQwF,EAAE4B,EAAE/L,QACZ87B,GAAWn3B,EAAMhB,MACjBo4B,GAAWhwB,EAAE/L,OAAOm7B,SAASC,SAC7BY,OAA8Ct7B,IAA9BiE,EAAMgf,KAAK,eAE7BmY,GAAWC,GAAWC,GACxB,EAAKrB,kBAAkBh2B,EAAO,UAGhC,EAAKs3B,cAAct3B,QA/Fb,yCAmGS,WACjB5B,KAAK03B,UAAU5S,GAAG,SAAU9kB,KAAKq3B,eAAe,SAACruB,GAC/C,IAAMpH,EAAQwF,EAAE4B,EAAE/L,QAElB,EAAKq7B,iBAAiB12B,GACtB,EAAKs3B,cAAct3B,QAxGb,wCA4GQ,WAChB5B,KAAK03B,UAAU5S,GAAG,SAAS,SAAC9b,GAC1B,IAAMmwB,EAAa/xB,EAAE4B,EAAE/L,QAEnBk8B,EAAWhU,GAAG,UACIgU,EAAW12B,KAAK,EAAK40B,eAGtCtY,YAAY,iBACZiE,MAAK,SAAC7gB,EAAO1B,GACZ,IAAMmB,EAAQwF,EAAE3G,GACV24B,GAAkBx3B,EAAMhB,MACxBq4B,GAAiBr3B,EAAMgf,KAAK,eAE9BwY,GAAkBH,GACpB,EAAKrB,kBAAkBh2B,EAAO,aAIpCu3B,EAAW12B,KAAK,sBAAsBugB,MAAK,SAAC7gB,EAAOk3B,GACjD,IAAMC,EAAUlyB,EAAEiyB,GACZE,EAAgBD,EAAQjM,SAAS,yBACjCmM,EAAeF,EAAQte,SAAS,cAAcpa,MAEpD04B,EAAQ14B,IAAI44B,GACZD,EAAc34B,IAAI44B,YArIhB,wCA4IR,IAAKpyB,EAAE,cAAcmL,QAAQrQ,OAAQ,CACnC,IAAMu3B,EAAaryB,EAAE,wCACrBpH,KAAKy3B,MAAMvV,OAAOuX,MA9IZ,uCAkJOC,GAEf,IAAMC,EAAWlxB,QAAQixB,EAAO94B,MAAMsB,QAChC03B,EAAiBnxB,QAAQixB,EAAO9Y,KAAK,gBACrCiZ,EAAcF,GAAYC,EAAiB,MAAQ,SAEzD55B,KAAK43B,kBAAkB8B,EAAQG,KAxJvB,oCA2JIH,GACZ,GAAIA,EAAOxa,SAAS,YAAa,CAC/B,IAAMvkB,EAAQ++B,EAAO94B,MACfm4B,GAAWp+B,EAAMuH,OACjB82B,GAAWU,EAAO,GAAGtB,SAASC,SAEpC,GAAIU,GAAWC,EACbU,EAAO3a,YAAY,SAASA,YAAY,eACnC,CACL,IAAM+a,EAAQJ,EAAO,GAAGtB,SAAS0B,MAC3B53B,EAAS63B,OAAOL,EAAO9Y,KAAK,YAAc,EAE5CkZ,KAAW53B,GAAUA,EAASvH,EAAMuH,QACtCw3B,EAAO3a,YAAY,WAAW2C,SAAS,SAEvCgY,EAAO3a,YAAY,SAAS2C,SAAS,eA1KnC,4CAiLR,IAAMsY,EAAc5yB,EAAE,sBAEtB4yB,EAAYhX,MAAK,SAAC7gB,EAAO83B,GACvBA,EAAMn2B,KAAO,UAGfk2B,EAAYlV,GAAG,SAAS,SAAAmV,GACtBA,EAAMh9B,OAAO6G,KAAO,UAGtBk2B,EAAYlV,GAAG,QAAQ,SAAAmV,GACrBA,EAAMh9B,OAAO6G,KAAO,OACa,IAA9Bm2B,EAAMh9B,OAAOtC,MAAMuH,QACpBkF,EAAE,aAAD,OAAc6yB,EAAMh9B,OAAO2F,GAA3B,MAAkCmc,YAAY,eA9L3C,2CAoMR,IAAMmb,EAAY9yB,EAAEpH,MAEpB,GAAIk6B,EAAUt5B,MAAMsB,OAAQ,CAC1B,IAAMu3B,EAAaryB,EAAE,cACf+yB,EAAaD,EAAUnZ,IAAI,eAC3BK,EAAW8Y,EAAUnZ,IAAI,aAE3BK,GACFqY,EAAW1Y,IAAI,YAAaK,GAG1B+Y,GACFV,EAAW1Y,IAAI,cAAeoZ,GAGD,QAA3BD,EAAUtZ,KAAK,SACjB6Y,EAAW1Y,IAAI,gBAAiB,UAAUA,IAAI,cAAe,OAG/D0Y,EAAWpV,KAAX,UAAmB6V,EAAUt5B,MAA7B,OACA,IAAMw5B,EAAUX,EAAW30B,OAAOsD,QAAQ,MAAO,QACjDqxB,EAAW30B,KAAKs1B,GAIhBX,EAAW1Y,IAAI,QAASmZ,EAAU/U,GAAG,YAAc+U,EAAUjZ,QAAU7Z,EAAEtL,QAAQmlB,QAAU,GAC3FiZ,EAAUnZ,IAAI,SAAU0Y,EAAWvY,gB,2BA9N7B,OAqONmZ,W,cCrORxT,QAAO,SAAUzf,GAIfA,EAAEtL,QAAQgpB,GAAG,UAAU,WAErB,IAAMwV,EAAUlzB,EAAE,WAEbkzB,EAAQp4B,QAEbkF,EAAE,qBAAqBkzB,EAAQtE,SAASxS,IARN,GAQ0C,WAAa,eAAe,2B,0CCV5GqD,QAAO,SAACzf,GACNA,EAAEzG,GAAG45B,YAAc,WAEjB,IAAM34B,EAAQwF,EAAEpH,MAEZ4B,EAAMsd,SAAS,aAarB,SAAwBtd,GACLA,EAAMa,KAAK,WAEnBugB,MAAK,WACZ,IAAMphB,EAAQwF,EAAEpH,MAEhB4B,EAAM44B,IAAI,SACV54B,EAAMkjB,GAAG,SAAS,WAChB,IAAMljB,EAAQwF,EAAEpH,MAEhB4B,EAAMyrB,SAAS,WAAW9B,YAAY,UACtC3pB,EAAM2pB,YAAY,cAvBpBkP,CAAe74B,GAGbA,EAAMsd,SAAS,sBAyBrB,SAA0Btd,GACxB,IAAM84B,EAAY94B,EAAMa,KAAK,8BACvBk4B,EAAU/4B,EAAMa,KAAK,WAE3Bb,EAAMa,KAAK,WAAW4f,OAEtBsY,EAAQH,IAAI,SACZG,EAAQ7V,GAAG,SAAS,WAClB,IAAMljB,EAAQwF,EAAEpH,MACV46B,EAAUh5B,EAAMyrB,SAAS,WACzBwN,EAAWj5B,EAAMoZ,SAAS,mBAEhCpZ,EAAM2pB,YAAY,QAClBsP,EAAStP,YAAY,QAEhBqP,EAAQ1b,SAAS,UAGpB0b,EAAQ7b,YAAY,UAAU+b,UAF9BF,EAAQlZ,SAAS,UAAUqZ,eAM/BL,EAAUF,IAAI,SACdE,EAAU5V,GAAG,SAAS,WACpB,IAAMljB,EAAQwF,EAAEpH,MAEZ4B,EAAMsd,SAAS,UACjBtd,EAAMmd,YAAY,WAElB2b,EAAU3b,YAAY,UACtBnd,EAAM8f,SAAS,cAtDjBsZ,CAAiBp5B,GAGfA,EAAMsd,SAAS,sBAwDrB,SAA0Btd,GACxB,IAAM84B,EAAY94B,EAAMa,KAAK,8BACvBw4B,EAAUr5B,EAAMa,KAAK,mCAE3Bb,EAAMa,KAAK,WAAW4f,OAEtB4Y,EAAQT,IAAI,SACZS,EAAQnW,GAAG,SAAS,WAClB,IAAMljB,EAAQwF,EAAEpH,MACV46B,EAAUh5B,EAAMyrB,SAAS,WACzB6N,EAAet5B,EAAMoZ,SAAS,mBAC9BmgB,EAAgBv5B,EAAMoZ,SAAS,oBAErCpZ,EAAM2pB,YAAY,QAClB2P,EAAanc,YAAY,kBACzBmc,EAAaxZ,SAAS,mBACtByZ,EAAcpc,YAAY,mBAC1Boc,EAAczZ,SAAS,kBAElBkZ,EAAQ1b,SAAS,UAGpB0b,EAAQ7b,YAAY,UAAU+b,UAF9BF,EAAQlZ,SAAS,UAAUqZ,eAM/BL,EAAUF,IAAI,SACdE,EAAU5V,GAAG,SAAS,WACpB,IAAMljB,EAAQwF,EAAEpH,MAEZ4B,EAAMsd,SAAS,UACjBwb,EAAU3b,YAAY,WAEtB2b,EAAU3b,YAAY,UACtBnd,EAAM8f,SAAS,cAzFjB0Z,CAAiBx5B,Q,0XCdvBilB,QAAO,SAAAzf,GAAK,IAEJi0B,EAFI,2EAINj0B,EAAE,QAAQk0B,UAJJ,KAQJC,EARI,WASR,WAAYC,EAAaC,GAAe,UACtCz7B,KAAKw7B,YAAcA,EACnBx7B,KAAKy7B,cAAgBA,EACrBz7B,KAAK07B,UAAW,EAChB17B,KAAKjD,QAAUiD,KAAK27B,6BAbd,yCAgBD,WACLv0B,EAAEtL,QAAQ8/B,QAAO,WACX,EAAKF,SACP,EAAKrZ,OAEL,EAAKwZ,YAIT77B,KAAK87B,WAzBC,mDA6BN,MAAO,CACLC,cAAe/7B,KAAKw7B,YAAYza,IAAI,kBACpCiV,OAAQ,IACRgG,UAAWh8B,KAAKi8B,WACbC,GAAGl8B,KAAKw7B,YAAYzzB,KAAK,kBACzBm0B,GAAG,GACHvhC,QACHwhC,SAAUn8B,KAAKi8B,WACZC,GAAGl8B,KAAKw7B,YAAYzzB,KAAK,iBACzBm0B,GAAG,KACHvhC,QACHyhC,MAAOp8B,KAAKi8B,WACTC,GAAGl8B,KAAKw7B,YAAYzzB,KAAK,cACzBm0B,GAAG,GACHvhC,WA3CC,+BA+CC,WACoC,YAAvCqF,KAAKw7B,YAAYza,IAAI,eAIrB/gB,KAAKq8B,wBAAuB,KAC9BnE,YAAW,kBAAM,EAAKsD,YAAYzc,YAAY,cAAa/e,KAAKs8B,mBAChEt8B,KAAK87B,YAtDD,+BA2DN97B,KAAKw7B,YAAY9Z,SAAS,YAC1B1hB,KAAKw7B,YAAYza,IAAI,CACnB6C,WAAY,UACZ,iBAAkB5jB,KAAKjD,QAAQg/B,cAC/B,4BAA6B/7B,KAAKjD,QAAQi/B,UAC1C,qBAAsBh8B,KAAKjD,QAAQo/B,SACnC,kBAAmBn8B,KAAKjD,QAAQq/B,UAjE5B,6BAqED,WACDp8B,KAAKq8B,wBAAuB,IAC9Br8B,KAAKw7B,YAAYzc,YAAY,YAC7B/e,KAAKw7B,YAAYza,IAAI,CACnB,iBAAkB,OAClB6C,WAAY,YAGdsU,YAAW,WACT,EAAKsD,YAAYzc,YAAY,cAC5B/e,KAAKs8B,mBAEVt8B,KAAK67B,SACL77B,KAAK07B,UAAY17B,KAAK07B,WAlFhB,6CAqFe73B,GACrB,IAAM04B,EAAoBv8B,KAAKw8B,UAAUx8B,KAAKw7B,YAAY,IACpDiB,EAAoBz8B,KAAKw7B,YAAYta,SACrCwb,EAAiBt1B,EAAE1B,UAAUwb,SAC7Byb,EAAe7gC,OAAO8gC,YACtBhB,EAAS9/B,OAAO+gC,QAEhBC,EAAsBH,EAAef,EAAS57B,KAAKjD,QAAQi5B,OAASuG,EACpEQ,EAAyBJ,EAAef,EAAS57B,KAAKjD,QAAQi5B,OAASuG,EAAoBE,EAC3FO,EAAkBpB,EAASW,EAC3BU,EAAqBrB,EAASW,EAAoBE,EAClDS,EAAwBP,EAAef,IAAWc,EAClDS,EAA6BZ,EAAoBv8B,KAAKjD,QAAQi5B,OAAS0G,EACvEU,EAAwBT,EAAef,EAAS57B,KAAKjD,QAAQi5B,OAASuG,EACtEc,EAAoBzB,EAASW,EAAoBv8B,KAAKjD,QAAQi5B,OAC9DsH,EAAqB1B,EAASW,EAAoBv8B,KAAKjD,QAAQi5B,OAC/DuH,EAAwBhB,EAAoBE,EAAoBC,EAAiB18B,KAAKjD,QAAQi5B,OAapG,OATInyB,EACYi5B,GAAuBE,GACvBD,GAA0BE,GAC1BC,GAAyBC,EAEzBL,GAAuBO,GACvBD,GAAyBE,GACzBC,IAhHV,wCAsHN,IAAMC,EAAiF,IAA1Dx9B,KAAKw7B,YAAYza,IAAI,sBAAsB1gB,MAAM,GAAI,GAC9Eo9B,EAAa,EAQjB,OANIz9B,KAAKjD,QAAQo/B,WACfsB,EAAaD,EAAuBx9B,KAAK09B,yBAAyB19B,KAAKjD,QAAQo/B,WAE7En8B,KAAKjD,QAAQq/B,QACfqB,GAAcz9B,KAAK09B,yBAAyB19B,KAAKjD,QAAQq/B,QAEpDqB,IA/HD,+CAkIiBva,GACvB,IAAIya,EAEJ,GAAqC,MAAjCza,EAAQ9iB,WAAWC,OAAO,GAC5Bs9B,EAAiBza,EAAQ9iB,WAAWC,MAAM,GAAI,OACzC,IAAKF,MAAM+iB,EAAQ9iB,WAAWC,OAAO,IAG1C,OAAOu9B,QAAQzK,IAAI,iDAFnBwK,EAAgBza,EAKlB,OAAOya,IA7ID,gCAgJEza,GACR,IAAM2a,EAAM3a,EAAQ4a,wBACdC,EAAOr4B,SAASq4B,KAChBC,EAAQt4B,SAASu4B,gBACjB3P,EAAYxyB,OAAOoiC,aAAeF,EAAM1P,WAAayP,EAAKzP,UAC1D6P,EAAYH,EAAMG,WAAaJ,EAAKI,WAAa,EACjD3a,EAAMqa,EAAIra,IAAM8K,EAAY6P,EAElC,OAAOxiC,KAAKyiC,MAAM5a,KAxJZ,iCA4JN,MAAO,CACL6a,YAAQ1gC,EACRu+B,GAFK,SAEFvhC,GAID,YAHqB,IAAVA,QAAgD,IAAhBqF,KAAKq+B,SAC9Cr+B,KAAKq+B,OAAS1jC,GAETqF,MAETrF,MARK,WASH,OAAOqF,KAAKq+B,aArKV,KA2KVj3B,EAAEzG,GAAG26B,IAAM,SAAUv+B,GACnBiD,KAAKgjB,MAAK,WACO,IAAIuY,EAAOn0B,EAAEpH,MAAOjD,GAC5Bs9B,WAIXv+B,OAAOu/B,IAAMA,M,kDClLfxU,QAAO,SAACzf,GACN,IAAMk3B,EAAgB,iBAAkB54B,SAASu4B,gBAE3CM,EAAa,SAACC,EAAK74B,IACnBA,IAAS64B,EAAItf,SAAS,YAAcvZ,GAAQ64B,EAAItf,SAAS,aAC3Dsf,EAAI74B,EAAO,WAAa,eAAe,UACvBD,SAAS+4B,iBAAiB,oBAClCr8B,SAAQ,SAACoE,GAAD,OAAQA,EAAGk4B,UAAU/4B,EAAO,MAAQ,UAAU,cAY5Dg5B,EAAOv3B,EAAE,yDACfu3B,EAAK7Z,GAAG,cAAc,SAAA9b,GACfs1B,GACHC,EAAWn3B,EAAE4B,EAAE41B,eAAe5f,UAAU,MAG5C2f,EAAK3f,SAAS8F,GAAG,cAAc,SAAA9b,GAAC,OAAIu1B,EAAWn3B,EAAE4B,EAAE41B,gBAAgB,MACnED,EAAK7Z,GAAG,SAAS,SAAA9b,GAfG,IAAAw1B,EAgBlBx1B,EAAEogB,kBAhBgBoV,EAiBNp3B,EAAE4B,EAAE41B,eAAe5f,UAhBvBE,SAAS,UACfqf,EAAWC,GAAK,GAEhBD,EAAWC,GAAK,MAgBpBp3B,EAAEzG,GAAGwvB,OAAO,CACV0O,QADU,WAERN,EAAWn3B,EAAEpH,OAAO,IAEtB8+B,SAJU,WAKRP,EAAWn3B,EAAEpH,OAAO,U,0CCpC1B6mB,QAAO,SAAUzf,GAEfA,EAAE1B,UAAUof,GAAG,aAAc,SAAS,SAAU9b,GAE9C,IACM+1B,EADQ33B,EAAEpH,MACMyC,KAAK,gBAE3B,GAAIs8B,EAAQ78B,OAAQ,CAElB,IAAM88B,EAAe53B,EAAE4B,EAAE/L,QACnBgiC,EAAiBD,EAAa7Z,GAAG,4BACjC+Z,EAAqBF,EAAa7Z,GAAG,8BACrCga,EAAqBH,EAAa7Z,GAAG,oBACrCia,EAAyBJ,EAAa7Z,GAAG,sBAE3C8Z,GAAkBC,EACpBG,EAAeN,IACNI,GAAsBC,IAC/BE,EAAaP,OAKnB,IAAMO,EAAe,SAACC,GAEpBA,EAAWxe,IAAI,CACbzb,QAAS,UACRk6B,SAAS,CACVC,WAAY,SACX,CACDtD,SAAU,IACVuD,OAAO,EACPC,OAAQ,mBAINN,EAAiB,SAACE,GAEtBA,EAAWC,SAAS,CAClBC,WAAY,GACX,CACDtD,SAAU,IACVuD,OAAO,EACPC,OAAQ,gBACRC,SAAU,WACRL,EAAWxe,IAAI,CACbzb,QAAS,aAMjB8B,EAAE,eAAe0d,GAAG,SAAS,WAE3B1d,EAAEpH,MAAM4sB,QAAQ,SAASrB,YAAY,cAIvCnkB,EAAEtL,QAAQgpB,GAAG,QAAQ,WAEI1d,EAAE,kBACV4b,MAAK,WAClB,IAAMphB,EAAQwF,EAAEpH,MAEV6/B,EAAej+B,EAAMod,SACrB8gB,EAASl+B,EAAMa,KAAK,UACpBs9B,EAAQn+B,EAAMa,KAAK,SACnBu9B,EAAep+B,EAAMa,KAAK,UAAUw9B,cACpCC,EAAct+B,EAAMa,KAAK,SAASw9B,cAEpCD,EAAeE,EAAa94B,EAAEy4B,EAAcE,GAAO7e,OAAO8e,GACrDA,EAAeE,EAAa94B,EAAEy4B,EAAcC,GAAQ5e,OAAOgf,GAC/D94B,EAAEy4B,GAAc3e,OAAOgf,SAKhC94B,EAAE,mBAAmB0d,GAAG,SAAS,SAAU9b,GAEzCA,EAAEogB,iBAEFhiB,EAAEpH,MACCurB,YAAY,kBACZvM,SACAvc,KAAK,OACL8oB,YAAY,2BAGjBnkB,EAAE,aAAa0d,GAAG,SAAS,WACzB1d,EAAEpH,MAAMyC,KAAK,cAAc8oB,YAAY,iB,uDCzF3C1E,QAAO,SAACzf,GAmBN,SAAS+4B,IAEP,IAAMv+B,EAAQwF,EAAEpH,MACVogC,EAAYrG,OAAOn4B,EAAMgf,KAAK,WAC9Byf,EAAetG,OAAOn4B,EAAMhB,MAAMsB,QAClCo+B,EAAgBD,GAAgBD,EAEtCx+B,EAAMod,SAASvc,KAAK,mCACjBqC,KADH,UACWu7B,EADX,YAC2BD,IAqB7B,SAAuBE,EAAe5G,GAEpC,IAAM6G,EAAuB7G,EAAOxa,SAAS,WACzCohB,GAAiBC,EAEnB7G,EAAO3a,YAAY,WACTuhB,GAAkBC,IAE5B7G,EAAO3a,YAAY,SACnB2a,EAAOhY,SAAS,YA5BlB8e,CAAcF,EAAe1+B,GAc/B,SAAS6+B,IAEPr5B,EAAEpH,MAAMgf,SAASvc,KAAK,mCAAmCqC,KAAK,IA3ChEsC,EAAEzG,GAAG+/B,iBAAmB,WAEtB,OAAO1gC,KAAKgjB,MAAK,WAEf,IA0BuB0W,EAEnBiH,EA5BE/+B,EAAQwF,EAAEpH,WACoCrC,IAAzBiE,EAAMgf,KAAK,YAIpChf,EAAMkjB,GAAG,cAAeqb,GACxBv+B,EAAMkjB,GAAG,OAAQ2b,GAoBI/G,EAlBH93B,EAoBhB++B,EAAkBv5B,EAAE,WACvBsa,SAAS,qBACTX,IAAI,QAAS,SACbA,IAAI,YAAa,QACjBA,IAAI,SAAU,GAEjB2Y,EAAO1a,SAASkD,OAAOye,QAqBzBv5B,EAAE1B,UAAUk7B,OAAM,WAEhBx5B,EAAE,mBAAmBs5B,0B,gDC/DzB7Z,QAAO,SAACzf,GA+DN,SAASy5B,EAAcC,EAAc1lC,GAEnC,IAAM2lC,EAAgBD,EAAar+B,KAAK,8BAExCu+B,EAAe5lC,GAEf2lC,EAAc5c,IAAI/oB,GACf2jB,YAAY,UACZC,SACAD,YAAY,UACZ/D,SAAS,qBACTimB,MAAK,GAAM,GACXnG,QAAQ,CACPqB,SAAU,IACVwD,OAAQ,eACRD,OAAO,EACPE,SAJO,WAKLx4B,EAAEpH,MAAM+gB,IAAI,SAAU,OAM9B,SAASigB,EAAe5lC,GAElBA,EAAO8jB,SAAS,UAClB9jB,EAAO4jB,SAAS0C,SAAS,UAEzBtmB,EAAO4jB,SAASD,YAAY,UAG1B3jB,EAAO4jB,SAASE,SAAS,UAC3B9jB,EAAOiyB,SAAS,qBAAqB4T,MAAK,GAAM,GAAOlG,UAAU,CAC/DoB,SAAU,IACVwD,OAAQ,eACRD,OAAO,EACPE,SAJ+D,WAK7Dx4B,EAAEpH,MAAM+gB,IAAI,SAAU,OAI1B3lB,EAAOiyB,SAAS,qBAAqB4T,MAAK,GAAM,GAAOnG,QAAQ,CAC7DqB,SAAU,IACVwD,OAAQ,eACRD,OAAO,EACPE,SAJ6D,WAK3Dx4B,EAAEpH,MAAM+gB,IAAI,SAAU,OAM9B,SAASmgB,EAAqB9lC,GAG5B,OADqB+lC,EAAe/lC,GAChB8G,OAAS,EAG/B,SAASi/B,EAAe/lC,GAEtB,OAAOA,EAAOwxB,QAAQ,4BAzHxBxlB,EAAEzG,GAAGygC,YAAc,SAAUrkC,GAE3B,IAAMskC,EAAW,CACfC,eAAW3jC,GAKb,OAFAZ,EAAUqK,EAAE+oB,OAAOkR,EAAUtkC,GAEtBiD,KAAKgjB,MAAK,WAEf,IAAMphB,EAAQwF,EAAEpH,MAEV+gC,EAAgBn/B,EAAMa,KAAK,8BAE3B8+B,EAAkB3/B,EAAMmG,KAAK,eAEnCnG,EAAM44B,IAAI,iBAAkB,uBAC5BuG,EAAcvG,IAAI,kBAGdz9B,EAAQukC,WAAiC,cAApBC,QAAuD5jC,IAApB4jC,GAE1DR,EAAcjc,GAAG,kBAAkB,SAAC9b,GAElC,IAAIka,EAAU9b,EAAE4B,EAAE/L,QAEdikC,EAAqBhe,KAEvBA,EAAUie,EAAeje,IAG3BA,EAAQqI,YAAY,UACpBsV,EAAcj/B,EAAOshB,MAGvB2d,EAAcj/B,EAAOm/B,EAAcz+B,OAAO,WAAWiQ,UAGrDwuB,EAAc/d,MAAK,WAEjB5b,EAAEpH,MAAM8kB,GAAG,kBAAkB,SAAC9b,GAE5B,IAAIka,EAAU9b,EAAE4B,EAAE/L,QACdikC,EAAqBhe,KAEvBA,EAAUie,EAAeje,IAE3BA,EAAQqI,YAAY,UACpByV,EAAe9d,MAGb9b,EAAEpH,MAAMkf,SAAS,WAEnB8hB,EAAe55B,EAAEpH,cAuE3BoH,EAAE,gBAAgBg6B,kB,oEC9HpBva,QAAO,SAACzf,GAENA,EAAE1B,UAAUof,GAAG,SAAU,kCAAmC,WAE1D,IAAMljB,EAAQwF,EAAEpH,MAChB49B,QAAQzK,IAAIvxB,GACZ,IACM4/B,EADa5/B,EAAMgrB,QAAQ,eACHnqB,KAAK,mBAC7Bg/B,EAAQ7/B,EAAMrH,IAAI,GAAGknC,MACvBC,EAAY,GAGdA,EADEx9B,MAAMC,QAAQs9B,GACJA,EAAMp/B,KAAI,SAAAs/B,GAAI,OAAIA,EAAK1nC,QAEvBG,OAAO+W,OAAOswB,GAAOp/B,KAAI,SAAAs/B,GAAI,OAAIA,EAAK1nC,QAEpDunC,EAAW5gC,IAAI8gC,EAAU3hC,KAAK,OAC9ByhC,EAAWlY,QAAQ,iB,4OCjBvB,SAAEliB,GAAM,IAEAw6B,EAFA,WAIJ,WAAYnhC,EAAO1D,I,4FAAS,SAE1BiD,KAAKqhC,SAAW,CACdt5B,KAAM,GACN85B,UAAW,GACXC,WAAY,UACZC,eAAgB,UAChBC,WAAY,oBACZC,UAAW,oBACXC,iBAAkB,oBAClBC,gBAAiB,GACjBne,eAAgB,GAGlBhkB,KAAKoiC,cAAgB,GACrBpiC,KAAKqiC,aAAe,GACpBriC,KAAKsiC,YAAc,GACnBtiC,KAAKuiC,gBAAkB,GACvBviC,KAAKwiC,kBAAoB,GACzBxiC,KAAKozB,OAAS,EACdpzB,KAAKyiC,kBAAoB,GACzBziC,KAAK05B,OAASj5B,EACdT,KAAKjD,QAAUiD,KAAK0iC,cAAc3lC,GAClCiD,KAAK2iC,aAAe3iC,KAAK05B,OAAOrjB,KAAK,2BACrCrW,KAAK4iC,kBAAoBx7B,EAAE,2C,UA5BzB,O,EAAA,G,EAAA,8BAiCFpH,KAAK6iC,iBAjCH,qCAsCF7iC,KAAK8iC,UACL9iC,KAAKgiC,aACLhiC,KAAKiiC,YACLjiC,KAAK+iC,iBACL/iC,KAAKgjC,eACLhjC,KAAKijC,oBACLjjC,KAAKkjC,8BA5CH,oCA+CUnmC,GAEZ,OAAOqK,EAAE+oB,OAAO,GAAInwB,KAAKqhC,SAAUtkC,KAjDjC,kDAqDFiD,KAAK4iC,kBAAkB7hB,IAAI,aAA3B,UAA0E,GAA9B/gB,KAAKjD,QAAQinB,eAAzD,SArDE,gCA0DE5pB,OAAOuI,KAAK3C,KAAKjD,QAAQgL,MAAM7F,QACjClC,KAAK4iC,kBAAkBtf,YAAYtjB,KAAK05B,UA3DxC,mCA+DS,WAEX15B,KAAK05B,OAAO5U,GAAG,SAAS,WAEtB,EAAKqe,kBACL,EAAKzJ,OAAO3Y,IAAI,gBAAiB,EAAKhkB,QAAQilC,YAC9C,EAAKtI,OAAO3Y,IAAI,aAAc,EAAKhkB,QAAQmlC,uBArE3C,kCAyEQ,WAEVliC,KAAK05B,OAAO5U,GAAG,QAAQ,WAErB,EAAK4U,OAAO3Y,IAAI,gBAAiB,EAAKhkB,QAAQklC,WAC9C,EAAKvI,OAAO3Y,IAAI,aAAc,EAAKhkB,QAAQolC,sBA9E3C,uCAkFa,WAEfniC,KAAK05B,OAAO5U,GAAG,SAAS,SAAA9b,GAEtB,GAAIA,EAAE2gB,QAAU,EAAKyY,cASnB,OARK,EAAKrlC,QAAQgL,KAAKrB,SAAS,EAAKgzB,OAAO94B,QAC1C,EAAK7D,QAAQgL,KAAK7I,KAAK,EAAKw6B,OAAO94B,OAErC,EAAKgiC,kBAAkBngC,KAAK,aAAa6mB,QAAQ,SACjD,EAAKsZ,kBAAkBQ,QACvB,EAAKnB,YACL,EAAK7O,OAAS,EACd,EAAKqP,kBAAoB,GAClB,EAAKrP,MAGd,IAAMiQ,EAAc,EAAK3J,OAAO94B,MAIhC,GAFA,EAAKgiC,kBAAkBQ,QAEnBC,EAAYnhC,OAAQ,CAEtB,EAAKohC,cAAc,EAAKvmC,QAAQgL,KAAMs7B,GAEtC,IAAME,EAAU,EAAKX,kBACfY,EAAW,EAAKZ,kBAAkBngC,KAAK,MACvCghC,EAAiBD,EAASlf,GAAG,EAAK8O,OAAO6M,cACzCyD,EAAqBF,EAASlf,GAAG,EAAK8O,MAAQ,GAAG6M,cAEnDj3B,EAAE2gB,QAAU,EAAK0Y,cAEnB,EAAKsB,YAAYJ,EAASC,GAGxBx6B,EAAE2gB,QAAU,EAAK2Y,aAEnB,EAAKsB,WAAWL,EAASC,GAGvBx6B,EAAE2gB,QAAU,EAAK6Y,kBAEnB,EAAKqB,iBAAiBN,EAASC,EAAUC,GAChCz6B,EAAE2gB,QAAU,EAAK4Y,iBAE1B,EAAKuB,eAAeP,EAASC,EAAUC,EAAgBC,GAI9B,IAAvBL,EAAYnhC,OAEd,EAAKygC,aAAa5hB,IAAI,aAAc,UAGpC,EAAK4hB,aAAa5hB,IAAI,aAAc,WAGtC,EAAK6hB,kBAAkB5nB,WAAW+F,IAAI,QAAS,EAAKhkB,QAAQ8kC,gBAE5D,EAAKc,aAAa5hB,IAAI,aAAc,eA5ItC,iCAiJOwiB,EAASC,GAElBxjC,KAAKozB,MAAQoQ,EAASthC,OAAS,EAC/BlC,KAAKyiC,iBAAsC,GAAlBe,EAASthC,OAAc,GAChDqhC,EAAQjV,UAA8B,GAAnBkV,EAASthC,QAC5BshC,EAASlf,IAAI,GAAG5C,SAAS,cAtJvB,kCAyJQ6hB,EAASC,GACnBxjC,KAAKozB,MAAQ,EACbpzB,KAAKyiC,kBAAoB,GACzBc,EAAQjV,UAAU,GAClBkV,EAASlf,GAAG,GAAG5C,SAAS,cA7JtB,uCAgKa6hB,EAASC,EAAUC,GAElC,GAAIzjC,KAAKozB,MAAQoQ,EAASthC,OAAS,EAKjC,OAHAlC,KAAKozB,OAAS,EACdoQ,EAASlV,UAAU,QACnBtuB,KAAKyiC,kBAAoB,IAIzBziC,KAAKozB,QAGPpzB,KAAKyiC,kBAAoBgB,EACzBF,EAAQjV,UAAUtuB,KAAKyiC,kBACvBe,EAASlf,GAAGtkB,KAAKozB,OAAO1R,SAAS,cA/K/B,qCAkLW6hB,EAASC,EAAUC,EAAgBC,GAE5C1jC,KAAKozB,MAAQ,GACfpzB,KAAKozB,MAAQoQ,EAASthC,OACtBqhC,EAAQjV,UAAUiV,EAAQ/d,KAAK,iBAC/BxlB,KAAKyiC,iBAAmBc,EAAQ/d,KAAK,gBAAkBie,GAGvDzjC,KAAKozB,QAEPpzB,KAAKyiC,kBAAoBiB,EACzBH,EAAQjV,UAAUtuB,KAAKyiC,kBACvBe,EAASlf,GAAGtkB,KAAKozB,OAAO1R,SAAS,cA9L/B,oCAiMU3Z,EAAMs7B,GAElB,IAAK,IAAMU,KAAQh8B,EAEjB,IAAqE,IAAjEA,EAAKg8B,GAAM17B,cAAcnC,QAAQm9B,EAAYh7B,eAAuB,CAEtE,IAAM6c,EAAS9d,EAAE,OAAD,OAAQW,EAAKg8B,GAAb,UAEhB/jC,KAAK4iC,kBAAkB1gB,OAAOgD,MAzMhC,qCA8MW,WAEbllB,KAAK4iC,kBAAkB9d,GAAG,QAAS,MAAM,SAAA9b,GACvCA,EAAEogB,iBAEF,EAAKsQ,OAAO94B,IAAIwG,EAAE4B,EAAE/L,QAAQonB,QAC5B,EAAKue,kBAAkBQ,aApNvB,0CAwNgB,WAElBpjC,KAAK2iC,aAAa7d,GAAG,SAAS,SAAA9b,GAC5BA,EAAEogB,iBAEF,EAAKgK,OAAS,EACd,EAAKqP,kBAAoB,GACzB,IAAM7gC,EAAQwF,EAAE4B,EAAE41B,eAElBh9B,EAAMod,SAASvc,KAAK,qBAAqB7B,IAAI,IAC7CgB,EAAMmf,IAAI,aAAc,UACxB,EAAK6hB,kBAAkBQ,QACvBxhC,EAAMod,SAASvc,KAAK,SAASsc,YAAY,eApOzC,wCAwOc,WAEZ/e,KAAK05B,OAAOxa,SAAS,sBAEvBlf,KAAK05B,OAAO5U,GAAG,SAAS,SAAA9b,GAEtB,EAAKg7B,QAAQh7B,EAAG,EAAKjM,QAAQ+kC,eAG/B9hC,KAAK05B,OAAO5U,GAAG,QAAQ,SAAA9b,GAErB,EAAKg7B,QAAQh7B,EAAG,EAAKjM,QAAQglC,sBAnP/B,8BAwPI/4B,EAAGi7B,GACTj7B,EAAEogB,iBAEFhiB,EAAE4B,EAAE/L,QAAQ+hB,SAASvc,KAAK,2BAA2BA,KAAK,OAAOse,IAAI,OAAQkjB,Q,2BA3P3E,KA+PN78B,EAAEzG,GAAGujC,gBAAkB,SAAUnnC,GAC/B,OAAOiD,KAAKgjB,MAAK,WACS,IAAI4e,EAAgBx6B,EAAEpH,MAAOjD,GACrCs9B,WAlQtB,CAsQGxT,S,cCtQH,IACIsd,GAAe,EAyBnB,SAASC,IACPh9B,EAAE,kBAAkBi9B,QAAQ,QAC5Bj9B,EAAE,QAAQk9B,WAAW,aAzBvBl9B,EAAEtL,QAAQgpB,GAAG,QAAQ,WAEnBqf,GAAe,KAGjBtd,QAAO,SAAUzf,GACfA,EAAE,QAAQwZ,KAAK,aAAa,GAE5BxZ,EAAE,qBAAqBm9B,KAXP,wCAWyB,WAEnCJ,EAEFC,IAGAh9B,EAAEtL,QAAQgpB,GAAG,QAAQ,WAEpBsf,c,0CCpBPvd,QAAO,SAACzf,GAEN,IACMo9B,EAAe,yDACfC,EAAe,kFACjBC,GAAiB,EAqFrB,SAASC,EAAoB/iC,EAAOgjC,GAClC,IAAMC,EAAWjjC,EAAMgf,KAAK,OACtBkkB,EAAWljC,EAAMgf,KAAK,OACtBmkB,EAAanjC,EAAMqf,QAAU,KAC7B+jB,EAAUD,GAAcD,EAAWD,GACrCI,EAAeD,EAAUpjC,EAAMhB,MAAQokC,EAAUH,EAEjDI,EAAe,EACjBA,EAAe,EACNA,EAAeF,IACxBE,EAAeF,GAGjBH,EAAOljB,SAAS,UAAUX,IAAI,OAAQkkB,GAGxC,SAASC,EAAeN,EAAQO,EAASC,EAAQC,EAAMC,EAAaC,EAAWC,GAC7EZ,EAAOpF,SAAS,CACdte,OAAQikB,EACRlkB,MAAOmkB,EACP5hB,IAAK6hB,EACLI,WAAYH,GAEd,CACEnJ,SAAUoJ,EACV5F,OAAQ6F,GAAoB,UAIhC,SAASE,EAAUd,GACjBM,EAAeN,EAAQ,OAAQ,OAAQ,QAAS,OAAQ,IAAK,eAG/D,SAASe,EAAUf,GACjBM,EAAeN,EAAQ,IAAK,IAAK,OAAQ,MAAO,KAhHlDx9B,EAAE1B,UAAUof,GAAG,SAAU0f,GAAW,WAClC,IAAMI,EAASx9B,EAAEpH,MACG4kC,EAAOvX,SAAS,UAAU5qB,KAAK,UACvCqC,KAAK8/B,EAAOhkC,UAI1BwG,EAAE1B,UAAUof,GAAG,mCAAoC0f,GAAW,SAAUx7B,GACtE,IAAMpH,EAAQwF,EAAEpH,MACV4lC,GAAWhkC,EAAMyrB,SAAS,UAAUnrB,OACpC2jC,EAA0B,gBAAX78B,EAAElF,KAEnB8hC,GAjBN,WACE,IAAMhB,EAASx9B,EAAEq9B,GACjBr9B,EAAEo9B,GAAW/e,MAAMmf,GAgBjBkB,GAIF,IAAMlB,EAAShjC,EAAMyrB,SAAS,UAI5BqX,GADEmB,EAMJjkC,EAAM8f,SAAS,UAEVkjB,EAAO1lB,SAAS,WACnBwmB,EAAUd,GAGZD,EAAoBv9B,EAAEpH,MAAO4kC,GAG7BA,EAAOniC,KAAK,UAAUqC,KAAKlD,EAAMhB,UAInCwG,EAAE1B,UAAUof,GAAG,mBAjDM,gBAiD4B,WAC/C,IAAM8f,EAASx9B,EAAEpH,MAAMgb,SAAS,UAEhC0pB,GAAiB,EAEbE,EAAO1lB,SAAS,WAClBymB,EAAUf,GAGZA,EAAO7lB,YAAY,aAIrB3X,EAAE1B,UAAUof,GAAG,4BA9DM,gBA8DqC,WACxD,IAAM8f,EAASx9B,EAAEpH,MAAMgb,SAAS,UAE5B0pB,IACGE,EAAO1lB,SAAS,WACnBwmB,EAAUd,GAGZD,EAAoBv9B,EAAEpH,MAAMgb,SAASwpB,GAAYI,GAEjDA,EAAOniC,KAAK,UAAUqC,KAAK8/B,EAAOvX,SAASmX,GAAW5jC,WAI1DwG,EAAE1B,UAAUof,GAAG,sBA5EM,gBA4E+B,WAClD,IAAK4f,EAAgB,CACnB,IAAME,EAASx9B,EAAEpH,MAAMgb,SAAS,UAE5B4pB,EAAO1lB,SAAS,WAClBymB,EAAUf,GAGZA,EAAO7lB,YAAY,kB,mwBCtFzB8H,QAAO,SAACzf,GAAM,IAEN2+B,EAFM,WAIV,WAAY7iB,EAASnmB,I,4FAAS,SAE5BiD,KAAKgmC,SAAW,CACdC,kBAAmB,GACnBC,mBAAoB,GACpBC,oBAAqB,GACrBC,mBAAoB,GACpBC,mBAAoB,IAGtBrmC,KAAKqhC,SAAW,CACdiF,UAAW,IACXC,KAAM,OACN9lB,cAAc,EACd+lB,WAAY,KACZC,iBAAkB,IAClBC,kBAAmB,IACnBC,wBAAyB,GACzBC,yBAA0B,IAC1BC,WAAY,gBACZC,YAAa,gBACbC,aAAa,EACbC,iBAAiB,EACjBC,MAAM,GAGRjnC,KAAKknC,SAAWhkB,EAEhBljB,KAAKmnC,eAAiBjkB,EAAQE,QAAQrC,IAAI,CACxCzb,QAAS,eACT+b,WAAY,SAGdrhB,KAAKjD,QAAUiD,KAAK0iC,cAAc3lC,GAElCiD,KAAKonC,SAAU,EACfpnC,KAAKqnC,kBAAoB,CACvB9U,EAAG,CACD+U,cAAe,EACfC,UAAW,EACXC,YAAa,EACbC,QAAS,IAIbznC,KAAKy3B,MAAQrwB,EAAE,QACfpH,KAAK0nC,MAAQtgC,EAAE,IAAD,OAAKpH,KAAKknC,SAAStmB,KAAK,oBACtC5gB,KAAK2nC,gBAAkBvgC,EAAE,oBACzBpH,KAAK4nC,YAAcxgC,EAAE,mCACrBpH,KAAKy3B,MAAMvV,OAAOliB,KAAK4nC,a,UArDf,O,EAAA,G,EAAA,qCAyDIC,GAEZ,OAAOzgC,EAAE+oB,OAAO,GAAInwB,KAAKqhC,SAAUwG,KA3D3B,6BA+DR7nC,KAAK8nC,eACL9nC,KAAK+nC,qBACL/nC,KAAKygB,eACLzgB,KAAKgoC,cACLhoC,KAAKioC,kBACLjoC,KAAKgnC,kBACLhnC,KAAKkoC,gBACqB,IAAtBloC,KAAKjD,QAAQkqC,MACfjnC,KAAKmoC,eAvEC,qCA6ER,IAAMC,EAAahhC,EAAE,IAAD,OAAKpH,KAAK0nC,MAAM9mB,KAAK,QAASne,KAAK,iBAEvDzC,KAAK0nC,MAAM3mB,IAAI,QAAS/gB,KAAKjD,QAAQupC,WACrC8B,EAAWrnB,IAAI,QAAS/gB,KAAKjD,QAAQupC,aAhF7B,2CAoFW,WAEO,SAAtBtmC,KAAKjD,QAAQwpC,MAEfvmC,KAAK0nC,MAAM3mB,IAAI,YAAa,qBAC5B/gB,KAAK4nC,YAAY7mB,IAAI,CACnB0C,KAAM,MAKRzjB,KAAK0nC,MAAMhmB,SAAS,iBAAiBX,IAAI,YAAa,oBACtD/gB,KAAK4nC,YAAY7mB,IAAI,CACnB2P,MAAO,KAIN1wB,KAAK0nC,MAAMxoB,SAAS,WAIrBpjB,OAAOusC,WAAaroC,KAAKjD,QAAQypC,YAEnCxmC,KAAKonC,SAAU,EACfpnC,KAAK0nC,MAAM3mB,IAAI,YAAa,kBAG5B/gB,KAAKonC,SAAU,EAGjBpnC,KAAK0nC,MAAMjlC,KAAK,oBAAoBqiB,GAAG,cAAc,WAEnD,EAAK4iB,MAAMhmB,SAAS,0BAGtBta,EAAEtL,QAAQgpB,GAAG,UAAU,WAErB,GAAIhpB,OAAOusC,WAAa,EAAKtrC,QAAQypC,WAE/B,EAAKmB,gBAAgBzlC,OAEvB,EAAKomC,YAAW,IAGhB,EAAKZ,MAAM3mB,IAAI,YAAa,kBAC5B,EAAKqmB,SAAU,QAEZ,IAAqB,IAAjB,EAAKA,QAAmB,CAEjC,IAAMmB,EAA+B,SAAtB,EAAKxrC,QAAQwpC,KAAkB,OAAS,MACvD,EAAKmB,MAAM3mB,IAAI,YAAf,qBAA0CwnB,EAA1C,YAEA,EAAKnB,SAAU,QAxIX,qCA8IK,YAEqB,IAA9BpnC,KAAKjD,QAAQ0jB,eAEfzgB,KAAK0nC,MAAM5iB,GAAG,QAAS,8BAA8B,kBAAM,EAAKwjB,gBAE5B,kBAAhCtoC,KAAK0nC,MAAM3mB,IAAI,cACjB/gB,KAAK0nC,MAAM5iB,GAAG,SAAS,kBAAM,EAAKwjB,mBArJ9B,oCA0JI,WAGZtoC,KAAKknC,SAASpiB,GAAG,SAAS,SAAA9b,GAIxB,GAFAA,EAAEogB,kBAEmB,IAAjB,EAAKge,QACP,OAAO,EAAKkB,cAGmB,IAA7B,EAAKvrC,QAAQgqC,YACV3/B,EAAE,oBAAoBlF,SACzB,EAAKylC,gBAAkBvgC,EAAE,oCACzB,EAAKqwB,MAAMvV,OAAO,EAAKylB,kBAGzB,EAAKX,kBAGP,IAAIwB,EAAa,GAIfA,EAFwB,SAAtB,EAAKzrC,QAAQwpC,KAEF,CAAC,GAAI,EAAI,EAAKxpC,QAAQupC,WAGtB,CAAC,EAAG,EAAKvpC,QAAQupC,WAEI,6BAAhC,EAAKoB,MAAM3mB,IAAI,cACjB,EAAK2mB,MAAMlI,SAAS,CAClBgJ,cACC,CACDrM,SAAU,EAAKp/B,QAAQ0pC,iBACvB/G,OAAO,EACPC,OAAQ,EAAK5iC,QAAQ8pC,aAGzB,EAAKc,gBAAgB7iB,GAAG,SAAS,kBAAM,EAAKwjB,gBAE5C,EAAKX,gBAAgB7iB,GAAG,YAAa,EAAK2jB,sBAAsBvtC,KAAK,IACrE,EAAKwsC,MAAM5iB,GAAG,aAAa,SAAA9b,GAEzBA,EAAEogB,iBAEF,EAAKse,MAAMjlC,KAAK,qBAAqBse,IAAI,iBAAkB,YAI7B,IAA7B,EAAKhkB,QAAQgqC,cAEd,EAAKK,SAAU,QA7MX,wCAkNQ,WAEhBpnC,KAAK4nC,YAAY9iB,GAAG,SAAS,WAEvB,EAAKsiB,SACP,EAAKkB,gBAITtoC,KAAK4nC,YAAY9iB,GAAG,cAAc,SAAA9b,GAEhC,EAAKq+B,kBAAkB9U,EAAE+U,cAAgBt+B,EAAE0/B,QAAQ,GAAGnb,QACtD,EAAK8Z,kBAAkB9U,EAAEgV,UAAY9zB,KAAKk1B,SAE5C3oC,KAAK4nC,YAAY9iB,GAAG,YAAa9kB,KAAKyoC,sBAAsBvtC,KAAK8E,OACjEA,KAAK4nC,YAAY9iB,GAAG,WAAY9kB,KAAK4oC,qBAAqB1tC,KAAK8E,SAjOvD,yCAsO6B,IAAjCA,KAAKjD,QAAQiqC,kBAEfhnC,KAAK0nC,MAAM5lB,QAAQ9hB,KAAKmnC,gBACxBnnC,KAAK0nC,MAAMjlC,KAAK,iBAAiBse,IAAI,CACnC8nB,UAAW,sCA1OP,qCA+OK,WAEb7oC,KAAK0nC,MAAMjlC,KAAK,oBAAoBqiB,GAAG,cAAc,kBAAM,EAAK4iB,MAAM3mB,IAAI,YAAa,sBAjP/E,iCAoPC+nB,GAAa,WAEtB9oC,KAAKy3B,MAAM1W,IAAI,CACbgoB,SAAU,GACV9nB,MAAO,KAGTjhB,KAAK0nC,MAAMlI,SAAS,CAClBgJ,WAAkC,SAAtBxoC,KAAKjD,QAAQwpC,KAAkB,QAAU,QACpD,CACDpK,SAAUn8B,KAAKjD,QAAQ2pC,kBACvBhH,OAAO,EACPC,OAAQ3/B,KAAKjD,QAAQ+pC,YACrBlH,SAAU,YACY,IAAhBkJ,IACF,EAAKpB,MAAMpD,WAAW,SACtB,EAAKoD,MAAM3mB,IAAI,QAAS,EAAKhkB,QAAQupC,eAK3CtmC,KAAK0nC,MAAM3oB,YAAY,uBACvB/e,KAAKgpC,qBACLhpC,KAAKonC,SAAU,IA3QP,mCA8QG,WAEKhgC,EAAE,WACV0d,GAAG,SAAS,WACd,EAAK4iB,MAAMxoB,SAAS,SACtB,EAAKwoB,MAAM3oB,YAAY,QACvB3X,EAAE,iBAAiB2X,YAAY,yBAAyB2C,SAAS,wBACjEta,EAAE,yBAAyB2Z,IAAI,CAC7BkoB,WAAY,sBACZ,eAAgB,YAGlB7hC,EAAE,oCAAoC2Z,IAAI,CACxCkoB,WAAY,sBACZ,eAAgB,YAKlB,EAAKvB,MAAMhmB,SAAS,QACpBta,EAAE,iBAAiB2X,YAAY,wBAAwB2C,SAAS,yBAChEta,EAAE,yBAAyB2Z,IAAI,eAAgB,UAC/C3Z,EAAE,oCAAoC2Z,IAAI,CACxC,eAAgB,iBArSd,4CA2SY/X,GAEpB,GAAe,cAAXA,EAAElF,KAAN,CAFuB,IAOhBolC,EAPgB,EAOPlgC,EAAE0/B,QAPK,MAQnBS,EAASD,EAAM3b,QAGf9Z,KAAKk1B,MAAQ3oC,KAAKqnC,kBAAkB9U,EAAEgV,UAAY,KAEpDvnC,KAAKqnC,kBAAkB9U,EAAE+U,cAAgB4B,EAAM3b,QAC/CvtB,KAAKqnC,kBAAkB9U,EAAEgV,UAAY9zB,KAAKk1B,OAG5C3oC,KAAKopC,mBAEiD,IAAhCppC,KAAK2nC,gBAAgBzlC,QAGzClC,KAAKqpC,sBAImB,SAAtBrpC,KAAKjD,QAAQwpC,OAEX4C,EAASnpC,KAAKjD,QAAQupC,UAExB6C,EAASnpC,KAAKjD,QAAQupC,UACb6C,EAAS,IAElBA,EAAS,IAIbnpC,KAAKspC,kBAAkBH,GACvBnpC,KAAKupC,qBAAqBJ,MAjVlB,gDAyVR,OAHiBxtC,KAAKm4B,IAAI9zB,KAAKqnC,kBAAkB9U,EAAEiV,YAAcxnC,KAAKqnC,kBAAkB9U,EAAE+U,eAC7E3rC,KAAKm4B,IAAI9zB,KAAKqnC,kBAAkB9U,EAAEkV,QAAUznC,KAAKqnC,kBAAkB9U,EAAEgV,aAvV1E,2CA4VWv+B,GAEnB,GAAe,aAAXA,EAAElF,KAAN,CAKA,IAAMolC,EAAQlgC,EAAEwgC,eAAe,GAE/BxpC,KAAKqnC,kBAAkB9U,EAAEkV,QAAUh0B,KAAKk1B,MACxC3oC,KAAKqnC,kBAAkB9U,EAAEiV,YAAc0B,EAAM3b,QAC7C,IAAMkc,EAAYzpC,KAAK0pC,0BAEjBP,EAASD,EAAM3b,QACjBoc,EAAUR,EAASnpC,KAAKjD,QAAQupC,UAChCsD,EAAWT,EAASnpC,KAAKjD,QAAQupC,UAAY,EAC7CqD,EAAU,IACZA,EAAU,GAERC,EAAW,IACbA,EAAW,GAGa,SAAtB5pC,KAAKjD,QAAQwpC,MAGXvmC,KAAKonC,SAAWqC,GAAazpC,KAAKgmC,SAASC,mBAAqBwD,EAAYzpC,KAAKjD,QAAQmpC,mBAE3E,IAAZyD,GAEF3pC,KAAK6pC,eAAe,CAAC,EAAGF,GAAU,OAGpC3pC,KAAK8pC,wBAEK9pC,KAAKonC,SAAWqC,EAAYzpC,KAAKgmC,SAASC,qBAEpDjmC,KAAK+pC,kBACL/pC,KAAK6pC,eAAe,EAAE,EAAI7pC,KAAKjD,QAAQupC,UAAYtmC,KAAKjD,QAAQspC,mBAAoBsD,GAAU,OAC9F3pC,KAAKgpC,sBAGPhpC,KAAK4nC,YAAY7mB,IAAI,CACnBE,MAAO,OACPyP,MAAO,GACPjN,KAAM,KAECzjB,KAAKonC,SAAWqC,GAAazpC,KAAKgmC,SAASG,oBAAsBsD,EAAYzpC,KAAKgmC,SAASI,oBAEpGpmC,KAAK6pC,eAAe,CAAC,EAAGD,GAAW,OACnC5pC,KAAK8pC,qBAEL9pC,KAAK4nC,YAAY7mB,IAAI,CACnBE,MAAO,MACPyP,MAAO,GACPjN,KAAM,OAEEzjB,KAAKonC,SAAWqC,EAAYzpC,KAAKgmC,SAASG,sBAEpDnmC,KAAK+pC,kBACL/pC,KAAK6pC,eAAe,CAAC7pC,KAAKjD,QAAQupC,UAAYtmC,KAAKjD,QAAQspC,mBAAoBuD,GAAW,OAC1F5pC,KAAKgpC,qBAELhpC,KAAK4nC,YAAY7mB,IAAI,CACnBE,MAAO,OACPyP,MAAO,EACPjN,KAAM,SA9ZF,4CAmaY,YAEa,IAA7BzjB,KAAKjD,QAAQgqC,cAEf/mC,KAAK2nC,gBAAkBvgC,EAAE,oCACzBpH,KAAK2nC,gBAAgB5mB,IAAI,UAAW,GAAG+D,GAAG,SAAS,kBAAM,EAAKwjB,gBAE9DtoC,KAAKy3B,MAAMvV,OAAOliB,KAAK2nC,oBA1ajB,yCAgbR,IAAMqC,EAAWhqC,KAAKy3B,MAAM4Q,aAC5BroC,KAAKy3B,MAAM1W,IAAI,WAAY,UAC3B/gB,KAAKy3B,MAAMxW,MAAM+oB,KAlbT,wCAubRhqC,KAAKy3B,MAAM1W,IAAI,CACbgoB,SAAU,GACV9nB,MAAO,OAzbD,qCA6bKgpB,EAAQ9N,GAErBn8B,KAAK0nC,MAAMlI,SAAS,CAClBgJ,WAAYyB,GACX,CACD9N,SAA8B,iBAAbA,EAAwBpC,OAAOoC,GAAYA,EAC5DuD,OAAO,EACPC,OAAQ3/B,KAAKjD,QAAQ8pC,eApcf,wCAwcQsC,GAEhB,GAA0B,SAAtBnpC,KAAKjD,QAAQwpC,KAAiB,CAEhC,IAAM2D,EAAmBf,GAAUnpC,KAAKjD,QAAQupC,UAAY,EAC5DtmC,KAAKonC,QAAU8C,EAEflqC,KAAK0nC,MAAM3mB,IAAI,YAAf,qBAA0CooB,EAASnpC,KAAKjD,QAAQupC,UAAhE,YACK,CAEL,IAAM6D,EAAkBhB,EAASrtC,OAAOusC,WAAaroC,KAAKjD,QAAQupC,UAAY,EAC9EtmC,KAAKonC,QAAU+C,EAEf,IAAIP,EAAWT,EAASnpC,KAAKjD,QAAQupC,UAAY,EAC7CsD,EAAW,IACbA,EAAW,GAGb5pC,KAAK0nC,MAAM3mB,IAAI,YAAf,qBAA0C6oB,EAA1C,WA1dM,2CA8dWT,GAEnB,IAAIiB,EAGFA,EAFwB,SAAtBpqC,KAAKjD,QAAQwpC,KAEK4C,EAASnpC,KAAKjD,QAAQupC,UAGtB3qC,KAAKm4B,KAAKqV,EAASrtC,OAAOusC,YAAcroC,KAAKjD,QAAQupC,WAG3EtmC,KAAK2nC,gBAAgBnI,SAAS,CAC5B9b,QAAS0mB,GACR,CACDjO,SAAU,GACVuD,OAAO,EACPC,OAAQ3/B,KAAKjD,QAAQ8pC,eA9ef,4CAofyB,IAA7B7mC,KAAKjD,QAAQgqC,aAAyB3/B,EAAE,oBAAoBlF,QAC9DlC,KAAKqpC,sBAGPrpC,KAAK2nC,gBAAgBnI,SAAS,CAC5B9b,QAAS,GACR,CACDyY,SAAUn8B,KAAKjD,QAAQ4pC,wBACvBjH,OAAO,EACPC,OAAQ3/B,KAAKjD,QAAQ8pC,eA7ff,2CAmgBR7mC,KAAK2nC,gBAAgBnI,SAAS,CAC5B9b,QAAS,GACR,CACDyY,SAAUn8B,KAAKjD,QAAQ6pC,yBACvBlH,OAAO,EACPC,OAAQ3/B,KAAKjD,QAAQ8pC,WACrBjH,SAJC,WAKCx4B,EAAEpH,MAAMif,iB,2BA1gBJ,KAihBZ7X,EAAEzG,GAAG0pC,QAAU,SAAUttC,GACvBqK,EAAEpH,MAAMgjB,MAAK,WACK,IAAI+iB,EAAQ3+B,EAAEpH,MAAOjD,GAC7Bs9B,WAIZjzB,EAAE,aAAa0d,GAAG,aAAa,SAAU9b,GACvCA,EAAE+b,qBACD,O,yTC1hBL8B,QAAO,WAGLzf,EAAE,kBAAkB0d,GAAG,QAAS,KAAK,SAAU9b,GAC7CA,EAAEogB,iBAEF,IAAMxnB,EAAQwF,EAAEpH,MACVsqC,EAAS1oC,EAAMgf,KAAK,QAE1B,QAAsBjjB,IAAlB,EAAO2sC,IAAgD,IAAxBA,EAAOpkC,QAAQ,KAAY,CAE5D,IAAM8vB,EAAS5uB,EAAEpH,MAAM4gB,KAAK,gBAAkB,EAE9CxZ,EAAE,aAAamjC,QAAQ,CACrBjc,UAAWlnB,EAAEkjC,GAAQtU,SAASxS,IAAMwS,GAbX,KAgB3B,IAAMwU,EAAU5oC,EAAM6oC,aAAa,kBAAkBre,OAAOpN,SAAS4B,KAAK,0BAEnDjjB,IAAnB,EAAO6sC,KAAqC,IAAZA,GAElCE,QAAQC,aAAa,KAAM,KAAML,W,imBCrBzCzjB,QAAO,SAACzf,GAAM,IAENwjC,EAFM,WAIV,WAAYC,GAA0B,IAAd9tC,EAAc,uDAAJ,I,4FAAI,SAEpCiD,KAAK6qC,WAAaA,EAClB7qC,KAAK8qC,WAAa1jC,EAAE,IAAD,OAAKyjC,EAAWjqB,KAAK,oBAExC5gB,KAAKjD,QAAU,CACbguC,WAAY/qC,KAAKi8B,WAAWC,GAAG2O,EAAW9iC,KAAK,eAAem0B,GAAG2O,EAAWjqB,KAAK,qBAAqBsb,GAAGn/B,EAAQguC,YAAY7O,GAAG,KAAKvhC,QACrIqwC,YAAahrC,KAAKi8B,WAAWC,GAAG2O,EAAW9iC,KAAK,gBAAgBm0B,GAAG2O,EAAWjqB,KAAK,sBAAsBsb,GAAGn/B,EAAQiuC,aAAa9O,GAAG,KAAKvhC,QACzIswC,eAAgBjrC,KAAKi8B,WAAWC,GAAG2O,EAAW9iC,KAAK,mBAAmBm0B,GAAG2O,EAAWjqB,KAAK,0BAA0Bsb,GAAGn/B,EAAQkuC,gBAAgB/O,GAAG,gBAAgBvhC,QACjKuwC,gBAAiBlrC,KAAKi8B,WAAWC,GAAG2O,EAAW9iC,KAAK,oBAAoBm0B,GAAG2O,EAAWjqB,KAAK,2BAA2Bsb,GAAGn/B,EAAQmuC,iBAAiBhP,GAAG,SAASvhC,QAC9JwwC,eAAgBnrC,KAAKi8B,WAAWC,GAAG2O,EAAW9iC,KAAK,mBAAmBm0B,GAAG2O,EAAWjqB,KAAK,yBAAyBsb,GAAGn/B,EAAQouC,gBAAgBjP,IAAG,GAAMvhC,QACtJ6lB,MAAOxgB,KAAKi8B,WAAWC,GAAG2O,EAAW9iC,KAAK,UAAUm0B,GAAG2O,EAAWjqB,KAAK,eAAesb,GAAGn/B,EAAQyjB,OAAO0b,IAAG,GAAOvhC,QAClHywC,OAAQprC,KAAKi8B,WAAWC,GAAG2O,EAAW9iC,KAAK,WAAWm0B,GAAG2O,EAAWjqB,KAAK,gBAAgBsb,GAAGn/B,EAAQquC,QAAQlP,GAAG,GAAGvhC,QAClH0wC,YAAarrC,KAAKi8B,WAAWC,GAAG2O,EAAW9iC,KAAK,gBAAgBm0B,GAAG2O,EAAWjqB,KAAK,sBAAsBsb,GAAGn/B,EAAQsuC,aAAanP,IAAG,GAAOvhC,QAC3I2wC,UAAWtrC,KAAKi8B,WAAWC,GAAG2O,EAAW9iC,KAAK,cAAcm0B,GAAG2O,EAAWjqB,KAAK,mBAAmBsb,GAAGn/B,EAAQuuC,WAAWpP,GAAG,QAAQvhC,QACnI+pB,UAAW1kB,KAAKi8B,WAAWC,GAAG2O,EAAW9iC,KAAK,cAAcm0B,GAAG2O,EAAWjqB,KAAK,oBAAoBsb,GAAGn/B,EAAQ2nB,WAAWwX,GAAG,IAAIvhC,QAChI+lB,YAAa1gB,KAAKi8B,WAAWC,GAAG2O,EAAW9iC,KAAK,gBAAgBm0B,GAAG2O,EAAWjqB,KAAK,sBAAsBsb,GAAGn/B,EAAQ2jB,aAAawb,IAAG,GAAMvhC,SAG5IqF,KAAKurC,WAAY,E,UAvBT,O,EAAA,E,EAAA,6CA4BRnkC,EAAE,oBAAoBkZ,WAEtBtgB,KAAKwrC,+BACLxrC,KAAKyrC,wBA/BG,qDAoCRrkC,EAAE,+CAA+C0d,GAAG,cAAc,SAAS9b,GACzE,IAAI0iC,EAAUtkC,EAAEpH,MAChBoH,EAAE,0DAA0D2X,YAAY,QACxE2sB,EAAQr1B,KAAK,kBAAkBqL,SAAS,QACxC1Y,EAAE+b,qBAGJ3d,EAAE,mCAAmC0d,GAAG,sBAAsB,WAE5D1d,EAAE,6CAA6C2X,YAAY,aA7CrD,4CAiDmB,WAER3X,EAAE,sBACV0d,GAAG,CACZ,mBAAoB,SAAC9b,GAEnB,IAAM2iC,EAAYvkC,EAAE4B,EAAE/L,QAChB2uC,EAAU,EAAKC,oBAAoBF,GACzC,EAAKG,qBAAqBH,EAAWC,EAAQG,WAE/C,oBAAqB,SAAC/iC,GAEpB,IAAM2iC,EAAYvkC,EAAE4B,EAAE/L,QAChB2uC,EAAU,EAAKC,oBAAoBF,GACrCC,EAAQG,UAAYH,EAAQI,WAE9B,EAAKC,mBAAmBN,EAAWC,IAGvC,mBAAoB,SAAC5iC,GAEnB,IAAM2iC,EAAYvkC,EAAE4B,EAAE/L,QAChB2uC,EAAU,EAAKC,oBAAoBF,GACrCC,EAAQI,YAEVhjC,EAAEogB,iBAEF,EAAK0iB,qBAAqBH,EAAWC,EAAQI,WAC7C,EAAKC,mBAAmBN,EAAWC,GAAS,WAE1CD,EAAU5sB,YAAY,QACtB4sB,EAAUlpC,KAAK,kBAAkBsc,YAAY,iBAhF7C,0CAuFiB4sB,GAEzB,IAAIO,EAAkB,SAClBC,EAAmB,UACjBC,EAAgBT,EAAUlpC,KAAK,kBAC/B4pC,EAAYV,EAAUW,QAAQ,UAQpC,OANID,EAAUnrB,OAAS,IAErBgrB,EAAkBG,EAAUtkC,KAAK,gBAAkB,KACnDokC,EAAmBE,EAAUtkC,KAAK,iBAAmB,MAGhD,CACLgkC,SAAUK,EAAcrkC,KAAK,gBAAkBmkC,EAC/CF,UAAWI,EAAcrkC,KAAK,iBAAmBokC,KAtG3C,2CA0GkBR,EAAWY,GAEjCA,IAEFZ,EAAUjqB,SAAS,sBACnBiqB,EAAUlpC,KAAK,kBAAkBif,SAAS,CAAC,WAAY6qB,GAAexsC,KAAK,SA/GrE,yCAmHgB4rC,EAAWC,EAASY,GAE5Cb,EAAUc,IAAI,gFAAgF,WAE5Fd,EAAU5sB,YAAY,sBACtB4sB,EAAUlpC,KAAK,kBAAkBsc,YAAY,CAAC,WAAY6sB,EAAQG,SAAUH,EAAQI,WAAWjsC,KAAK,MAE5E,mBAAbysC,GAETA,W,EA5HI,+CAmIR,MAAO,CACL3B,WAAY7qC,KAAK6qC,WACjBC,WAAY9qC,KAAK8qC,WACjB1d,eAAgBptB,KAAKotB,eAAelyB,KAAK8E,SAtInC,6BA4IRA,KAAK0sC,4BAED1sC,KAAKjD,QAAQyjB,MAEfxgB,KAAK2sC,0BAIL3sC,KAAK4sC,0BAGP5sC,KAAK6sC,eAvJG,kDA4JR7sC,KAAK6qC,WAAWplB,MAAMzlB,KAAK8qC,cA5JnB,gDA+JgB,WAEpBgC,GAAS,EAEb9sC,KAAK6qC,WAAWkC,OAAhB,gBAAgC/sC,KAAK6qC,WAAWjqB,KAAK,QAErD5gB,KAAK6qC,WAAW/lB,GAAG,cAAc,YAEhB,IAAXgoB,IAEF,EAAKE,gBACLF,GAAS,MAIb9sC,KAAK6qC,WAAW/lB,GAAG,cAAc,SAAC9b,GAEhC,IAAMikC,EAAOjkC,EAAEkkC,WAAalkC,EAAEmkC,cACF/lC,EAAE6lC,GAAMrgB,QAAQ,qBAAqBzH,GAAG,EAAK2lB,cAGvE,EAAKA,WAAW7J,MAAK,GAAM,GAC3B,EAAKmM,eACLN,GAAS,MAIb9sC,KAAK8qC,WAAWhmB,GAAG,cAAc,SAAC9b,GAEhC,IAAMikC,EAAOjkC,EAAEkkC,WAAalkC,EAAEmkC,cACD/lC,EAAE6lC,GAAMrgB,QAAQ,oBAAoBzH,GAAG,EAAK0lB,cAGvE,EAAKC,WAAW7J,MAAK,GAAM,GAC3B,EAAKmM,eACLN,GAAS,QAlML,gDAuMgB,WAExB9sC,KAAK6qC,WAAWkC,OAAhB,gBAAgC/sC,KAAK6qC,WAAWjqB,KAAK,QACrD5gB,KAAK6qC,WAAW3vC,KAAhB,gBAA8B8E,KAAK6qC,WAAWjqB,KAAK,QAAS,SAAC5X,GAE3D,IAAI,EAAKuiC,UAAT,CAKA,IAAM8B,EAAmB,EAAKxC,WAAWtwC,IAAI,KAAOyO,EAAE41B,cAChD0O,EAAkB,EAAKzC,WAAW3rB,SAAS,UAC3CquB,EAA6E,IAApDnmC,EAAE4B,EAAE/L,QAAQ2vB,QAAQ,qBAAqB1qB,QACpEmrC,GAAqBC,GAAoBC,EAIlCD,IAET,EAAKF,eACLhmC,EAAE1B,UAAUqnC,OAAZ,gBAA4B,EAAKjC,WAAWlqB,KAAK,MAAjD,uBAAqE,EAAKkqB,WAAWlqB,KAAK,UAL1F5X,EAAEogB,iBACF,EAAK4jB,cAAc,UAOjB,EAAKlC,WAAW5rB,SAAS,WAE3B9X,EAAE1B,UAAUxK,KAAZ,gBAA0B,EAAK4vC,WAAWlqB,KAAK,MAA/C,uBAAmE,EAAKkqB,WAAWlqB,KAAK,QAAS,SAAC5X,IAEhE,EAAK8hC,WAAW3lB,GAAGnc,EAAE/L,UAAY,EAAK4tC,WAAW1lB,GAAGnc,EAAE/L,UAAY,EAAK4tC,WAAWpoC,KAAKuG,EAAE/L,QAAQiF,SAG/H,EAAKkrC,eACLhmC,EAAE1B,UAAUqnC,OAAZ,gBAA4B,EAAKjC,WAAWlqB,KAAK,MAAjD,uBAAqE,EAAKkqB,WAAWlqB,KAAK,kBAtO1F,mCA6OG,WAEX5gB,KAAK6qC,WAAW/lB,GAAG,QAAQ,SAAC9b,EAAGwkC,GAE7B,EAAKR,cAAcQ,MAGrBxtC,KAAK6qC,WAAW/lB,GAAG,QAAS9kB,KAAKotC,aAAalyC,KAAK8E,SApP3C,oCAuPIwtC,GAEM,UAAdA,IAEFxtC,KAAKurC,WAAY,GAGnBvrC,KAAK8qC,WAAWppB,SAAS,UACzB1hB,KAAK6qC,WAAWnpB,SAAS,WAEW,IAAhC1hB,KAAKjD,QAAQouC,eAEfnrC,KAAK8qC,WAAW/pB,IAAI,QAAS/gB,KAAK6qC,WAAW4C,cAG7CztC,KAAK8qC,WAAW/pB,IAAI,cAAe,UAGrC/gB,KAAKotB,iBAELptB,KAAK0tC,iBA3QG,qCAgRR1tC,KAAK8qC,WAAW7J,MAAK,GAAM,GAAMlgB,IAAI,UAAW,GAC7Cga,UAAU,CACT2E,OAAO,EACPvD,SAAUn8B,KAAKjD,QAAQguC,WACvBpL,OAAQ3/B,KAAKjD,QAAQkuC,eACrBrL,SAJS,WAKPx4B,EAAEpH,MAAM+gB,IAAI,SAAU,OAGzBwpB,Q,+UATH,EAUI7mB,QAAS,GAEN1jB,KAAKjD,QAAQ2jB,aAAe,CAAE4N,UAAW,IAC3C,CACDoR,OAAO,EACPvD,SAAUn8B,KAAKjD,QAAQguC,WACvBpL,OAAQ,kBAhSJ,qCAoSK,WAEb3/B,KAAKurC,WAAY,EACjBvrC,KAAK8qC,WAAWzG,QAAQ,CACtBsJ,UAAW3tC,KAAKjD,QAAQiuC,YACxBrL,OAAQ3/B,KAAKjD,QAAQmuC,kBAEvBlrC,KAAK8qC,WAAW/rB,YAAY,UAC5B/e,KAAK6qC,WAAW9rB,YAAY,UAE5BmZ,YAAW,WACT,EAAK4S,WAAW/pB,IAAI,aAAc,EAAKhkB,QAAQ2nB,aAC9C1kB,KAAKjD,QAAQiuC,eAhTR,uCAqTR,IAAMrO,EAAe7gC,OAAO8gC,YACtBgR,EAAe5tC,KAAK6qC,WAAWjO,cAC/BiR,EAAY7tC,KAAK6qC,WAAW7U,SAASxS,IAAMpc,EAAEtL,QAAQwyB,YAErDwf,EAAgB9tC,KAAK+tC,0BACvBC,EAAgB,EAChB/I,EAAe,EAEbgJ,EAAWjuC,KAAK6qC,WAAW7rB,SAC7BkvB,EAAiBluC,KAAKjD,QAAQsuC,YAAcuC,EAAe,EACzDO,GAAgBF,EAAS9oB,GAAG,SAAW8oB,EAAS1zC,IAAI,GAAGoxB,aAAesiB,EAAS1zC,IAAI,GAAGmzB,aAAeugB,EAAS1zC,IAAI,GAAG+zB,UAAY,EAEjI8f,EAAuBP,EAAY7tC,KAAK8qC,WAAWlO,cAAgBD,EACnE0R,EAAoBR,EAAYD,EAAe5tC,KAAK8qC,WAAWlO,cAAgB,EACrF,GAAIwR,GAAwBC,EAAmB,CAE7C,IAAMC,EAAiB3R,EAAekR,EAAYK,EAClDluC,KAAK8qC,WAAW/pB,IAAI,aAAcutB,QACzBF,IAEJF,IACHA,GAAkBN,GAGpBM,GAAkBluC,KAAK8qC,WAAWlO,eAGd,SAAlBkR,GAEFE,EAAgBhuC,KAAKjD,QAAQquC,OAC7BnG,EAAejlC,KAAK6qC,WAAWn4B,WAAW+Q,KAAOuqB,GACtB,UAAlBF,IAIT7I,EAFoBjlC,KAAK6qC,WAAWn4B,WAAW+Q,KAAOzjB,KAAK6qC,WAAW4C,aAAeztC,KAAK8qC,WAAW2C,cACrGO,GAAiBhuC,KAAKjD,QAAQquC,SAIhCprC,KAAK8qC,WAAW/pB,IAAI,CAClBrO,SAAU,WACV8Q,IAAKxjB,KAAK6qC,WAAWn4B,WAAW8Q,IAAM0qB,EAAiBC,EACvD1qB,KAAMwhB,MA9VA,gDAoWR,IAAMsJ,EAAavuC,KAAK6qC,WAAW7U,SAASvS,KAE5C,OAAI8qB,EAAavuC,KAAK8qC,WAAWzC,aAAejhC,EAAEtL,QAAQmlB,QAEjD,QACEstB,EAAavuC,KAAK8qC,WAAWzC,aAAeroC,KAAK6qC,WAAWxC,aAAe,EAE7E,OAGFroC,KAAKjD,QAAQuuC,YA9WZ,iCAmXR,MAAO,CACLjN,YAAQ1gC,EACRu+B,GAFK,SAEFvhC,GAID,YAHqB,IAAVA,QAAgD,IAAhBqF,KAAKq+B,SAC9Cr+B,KAAKq+B,OAAS1jC,GAETqF,MAETrF,MARK,WASH,OAAOqF,KAAKq+B,c,2BA5XR,KAkYZj3B,EAAEzG,GAAGuvB,SAAW,SAAUse,GAGxB,OADAxuC,KAAKsuB,UAAUtuB,KAAKsuB,YAActuB,KAAKg2B,SAASxS,IAAMpc,EAAEonC,GAAMxY,SAASxS,KAChExjB,MAGToH,EAAEzG,GAAG2f,SAAW,SAAUvjB,GAExB,GAAIiD,KAAKkC,OAAS,EAAG,CAEnB,IAAMusC,EAAY,GAUlB,OARAzuC,KAAKgjB,MAAK,WAER,IAAM1C,EAAW,IAAIsqB,EAAS5qC,KAAMjD,GACpCujB,EAAS+Z,OAEToU,EAAUvvC,KAAKohB,EAASouB,4BAGnBD,EAGT,IAAMnuB,EAAW,IAAIsqB,EAAS5qC,KAAMjD,GAGpC,OAFAujB,EAAS+Z,OAEF/Z,EAASouB,yBAGlB9D,EAAS+D,0B,gBC/ZX,IAAIvnC,EAAI,EAAQ,GACZpJ,EAAQ,EAAQ,GAChB+C,EAAkB,EAAQ,IAC1BC,EAAiC,EAAQ,IAAmDvE,EAC5FoB,EAAc,EAAQ,GAEtB+wC,EAAsB5wC,GAAM,WAAcgD,EAA+B,MAK7EoG,EAAE,CAAEnK,OAAQ,SAAUO,MAAM,EAAME,QAJpBG,GAAe+wC,EAIqBhxC,MAAOC,GAAe,CACtErB,yBAA0B,SAAkCd,EAAIT,GAC9D,OAAO+F,EAA+BD,EAAgBrF,GAAKT,O,gBCb/D,IAAImM,EAAI,EAAQ,GACZvJ,EAAc,EAAQ,GACtB6J,EAAU,EAAQ,IAClB3G,EAAkB,EAAQ,IAC1B4G,EAAiC,EAAQ,IACzC+J,EAAiB,EAAQ,IAI7BtK,EAAE,CAAEnK,OAAQ,SAAUO,MAAM,EAAMI,MAAOC,GAAe,CACtDgxC,0BAA2B,SAAmCzzC,GAO5D,IANA,IAKIH,EAAKmC,EALLqB,EAAIsC,EAAgB3F,GACpBoB,EAA2BmL,EAA+BlL,EAC1DkG,EAAO+E,EAAQjJ,GACfuD,EAAS,GACTG,EAAQ,EAELQ,EAAKT,OAASC,QAEAxE,KADnBP,EAAaZ,EAAyBiC,EAAGxD,EAAM0H,EAAKR,QACtBuP,EAAe1P,EAAQ/G,EAAKmC,GAE5D,OAAO4E,M,sNCrBX6kB,QAAO,SAACzf,GAAM,IAEN0nC,EAFM,WAIV,WAAYC,GAA+B,IAAdhyC,EAAc,uDAAJ,I,4FAAI,SAEzCiD,KAAK+uC,gBAAkBA,EACvB/uC,KAAKjD,QAAU,CACbknC,MAAOjkC,KAAKi8B,WAAWC,GAAGn/B,EAAQknC,OAAO/H,GAAG,QAAQvhC,QACpD2mB,gBAAiBthB,KAAKi8B,WAAWC,GAAGn/B,EAAQukB,iBAAiB4a,GAAG,IAAIvhC,QACpEymB,SAAUphB,KAAKi8B,WAAWC,GAAGn/B,EAAQqkB,UAAU8a,GAAG,SAASvhC,QAC3Dq0C,WAAYhvC,KAAKi8B,WAAWC,GAAGn/B,EAAQiyC,YAAY9S,GAAG,OAAOvhC,QAC7Ds0C,aAAcjvC,KAAKi8B,WAAWC,GAAGn/B,EAAQkyC,cAAc/S,GAAG,IAAIvhC,QAC9Du0C,YAAalvC,KAAKi8B,WAAWC,GAAGn/B,EAAQmyC,aAAahT,GAAG,IAAIvhC,QAC5Dw0C,OAAQnvC,KAAKi8B,WAAWC,GAAGn/B,EAAQoyC,QAAQjT,GAAG,IAAIvhC,S,UAd5C,O,EAAA,G,EAAA,8BAsBR,OAFAqF,KAAKovC,mBAEEpvC,KAAK+uC,gBAAgBhuB,IAAI,CAC9BkjB,MAAOjkC,KAAKjD,QAAQknC,MACpB3iB,gBAAiBthB,KAAKjD,QAAQukB,gBAC9BF,SAAUphB,KAAKjD,QAAQqkB,SACvB4tB,WAAYhvC,KAAKjD,QAAQiyC,WACzBC,aAAcjvC,KAAKjD,QAAQkyC,aAC3BC,YAAalvC,KAAKjD,QAAQmyC,YAC1BC,OAAQnvC,KAAKjD,QAAQoyC,WA7Bf,yCAmCRnvC,KAAK+uC,gBAAgB/rB,MAAK,WAExB,IAAMwB,EAAepd,EAAEpH,MAAMyC,KAAK,SAAS8P,QAC3CiS,EAAaM,GAAG,SAAS,WAEEN,EAAaoI,QAAQ,WAAWnqB,KAAK,SAC7CugB,MAAK,WAEpB,IAAMphB,EAAQwF,EAAEpH,MACZ4B,EAAMkD,OAAOuD,cAAcnC,QAAQse,EAAa5jB,MAAMyH,gBAAkB,EAE1EzG,EAAMmf,IAAI,CACRzb,QAAS,KAIX1D,EAAMmf,IAAI,CACRzb,QAAS,oBApDX,iCA8DR,MAAO,CACL+4B,YAAQ1gC,EACRu+B,GAFK,SAEFvhC,GAID,YAHqB,IAAVA,QAAgD,IAAhBqF,KAAKq+B,SAC9Cr+B,KAAKq+B,OAAS1jC,GAETqF,MAETrF,MARK,WASH,OAAOqF,KAAKq+B,c,2BAvER,KA6EZj3B,EAAEzG,GAAG0uC,cAAgB,SAAUtyC,GAG7B,OAD2B,IAAI+xC,EAAmB9uC,KAAMjD,GAC9Bs9B,Y,mSC9E9BxT,QAAO,SAACzf,GAAM,IA6ODkoC,EA3OLC,EAFM,WAIV,WAAYzwB,GAA6B,IAAd/hB,EAAc,uDAAJ,I,4FAAI,SAEvCiD,KAAKjD,QAAU,CACb+rB,QAAS9oB,KAAKi8B,WAAWC,GAAGn/B,EAAQ+rB,SAASoT,IAAG,GAAOvhC,QACvDgsB,SAAU3mB,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,kBAAkBsb,GAAGn/B,EAAQ4pB,UAAUuV,IAAG,GAAOvhC,QACjG60C,SAAUxvC,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,mBAAmBsb,GAAGn/B,EAAQyyC,UAAUtT,GAAG,MAAMvhC,QACjGisB,qBAAsB5mB,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,gCAAgCsb,GAAGn/B,EAAQ6pB,sBAAsBsV,IAAG,GAAOvhC,QACvIsrB,WAAYjmB,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,qBAAqBsb,GAAGn/B,EAAQkpB,YAAYiW,GAAG,IAAIvhC,QACrGwrB,WAAYnmB,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,qBAAqBsb,GAAGn/B,EAAQopB,YAAY+V,GAAG,IAAIvhC,QACrG0rB,WAAYrmB,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,qBAAqBsb,GAAGn/B,EAAQspB,YAAY6V,GAAG,IAAIvhC,QACrG+rB,kBAAmB1mB,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,6BAA6Bsb,GAAGn/B,EAAQ2pB,mBAAmBwV,IAAG,GAAOvhC,QAC9H+sB,OAAQ,CACNE,UAAW5nB,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,0BAA0Bsb,IAAIn/B,EAAQ2qB,QAAU,IAAIE,WAAWsU,GAAG,cAAcvhC,QACjI80C,gBAAiBzvC,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,gCAAgCsb,IAAIn/B,EAAQ2qB,QAAU,IAAI+nB,iBAAiBvT,GAAG,oBAAoBvhC,QACzJotB,cAAe/nB,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,8BAA8Bsb,IAAIn/B,EAAQ2qB,QAAU,IAAIK,eAAemU,GAAG,MAAMvhC,QACrIqtB,gBAAiBhoB,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,gCAAgCsb,IAAIn/B,EAAQ2qB,QAAU,IAAIM,iBAAiBkU,GAAG,mBAAmBvhC,QACxJgtB,gBAAiB3nB,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,iCAAiCsb,IAAIn/B,EAAQ2qB,QAAU,IAAIC,iBAAiBuU,GAAG,cAAcvhC,SAEtJ0zB,oBAAqBruB,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,+BAA+Bsb,GAAGn/B,EAAQsxB,qBAAqB6N,GAAG,uBAAuBvhC,QACpJknB,YAAa7hB,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,qBAAqBsb,GAAGn/B,EAAQ8kB,aAAaqa,GAAG,MAAMvhC,QACzGqpB,eAAgBhkB,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,yBAAyBsb,GAAGn/B,EAAQinB,gBAAgBkY,GAAG,GAAGvhC,QAChH+0C,mBAAoB1vC,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,8BAA8Bsb,GAAGn/B,EAAQ2yC,oBAAoBxT,GAAG,GAAGvhC,QAC7H6kB,gBAAiBxf,KAAKi8B,WAAWC,GAAGpd,EAAc8B,KAAK,2BAA2Bsb,GAAGn/B,EAAQyiB,iBAAiB0c,IAAG,GAAOvhC,SAG1HqF,KAAK2vC,KAAO7wB,EAAc8B,KAAK,OAAS5gB,KAAKjD,QAAQyyC,UAAYxvC,KAAK4vC,cAGtE5vC,KAAK4e,KAAO,IAAI2I,UACdzI,EACA,CACE/hB,QAASiD,KAAKjD,QACdwS,WAAY,CACV3M,GAAI5C,KAAK2vC,QAKf3vC,KAAK6vC,uBAAyB,GAE9BN,EAAeO,kBAAoB,G,UA5C3B,O,EAAA,E,EAAA,gDAsDRP,EAAeO,kBAAkB1tC,SAAQ,SAAC2tC,GAExCA,EAASC,aACTD,EAASE,aAAe,eAzDlB,0CA+DR7oC,EAAE,mCAAmC8oC,qB,EA/D7B,8BAkEH,WAEDlwC,KAAKjD,QAAQ+rB,QAEf9oB,KAAK4e,KAAKkK,WAIR9oB,KAAKmwC,eAEPnwC,KAAK4e,KAAKkK,UAGZ9oB,KAAK4e,KAAKmK,SACV/oB,KAAK4e,KAAKwxB,0BAAyB,SAACC,GAAD,OAAiB,EAAKC,qBAAqBD,MAE9ErwC,KAAK6sC,gBAlFG,mCAqFG,WAEX7sC,KAAKuwC,6BAEDvwC,KAAK4e,KAAK4D,YAAcxiB,KAAK4e,KAAK0D,cAEpCtiB,KAAK4e,KAAK4xB,sBAAqB,kBAAM,EAAKC,qBAG5CzwC,KAAK4e,KAAK8xB,wBACV1wC,KAAK4e,KAAK+xB,0BACV3wC,KAAK4e,KAAKgyB,0BACV5wC,KAAK4e,KAAKiyB,yBACV7wC,KAAK4e,KAAKkyB,oCACV9wC,KAAK4e,KAAKmyB,4BACV/wC,KAAK4e,KAAKoyB,mCACVhxC,KAAK4e,KAAKqyB,oBAAmB,SAAC9lB,GAAD,OAAyB,EAAKmlB,qBAAqBnlB,MAChFnrB,KAAK4e,KAAKsyB,8BACVlxC,KAAK4e,KAAKuyB,yBAAwB,SAACd,GAAD,OAAiB,EAAKC,qBAAqBD,OAExErwC,KAAK4e,KAAK+D,YAAc3iB,KAAK4e,KAAK0D,cAErCtiB,KAAK4e,KAAKwyB,gCAGRpxC,KAAK4e,KAAK0D,cAEZtiB,KAAK4e,KAAKyyB,uBAGZrxC,KAAK4e,KAAK0yB,gBACVtxC,KAAK4e,KAAK2yB,6BACVvxC,KAAK4e,KAAK4yB,qBArHF,mDA0HR,IAMMzB,EAAW,IAAI0B,iBAAiBzxC,KAAK0xC,0BAA0Bx2C,KAAK8E,OAC1E+vC,EAASpY,QAAQ33B,KAAK4e,KAAKE,cAAcvkB,IAAI,GAP9B,CACbo3C,YAAY,EACZC,WAAW,EACXC,eAAe,EACfC,SAAS,IAIX/B,EAASgC,SAAW/xC,KAAK2vC,KACzBI,EAASE,aAAe,YAExBV,EAAeyC,yBACfzC,EAAeO,kBAAkB5wC,KAAK6wC,KAtI9B,gDAyIgBkC,GAExBA,EAAc7vC,SAAQ,SAAC8vC,GAErB,IAAM5Y,EAAUlyB,EAAE8qC,EAASj1C,QAAQ2vB,QAAQ,WACN,IAAjC0M,EAAQvxB,KAAK,kBAA+C,cAAlBmqC,EAASpuC,MAA0C,eAAlBouC,EAASpuC,MAAyBsD,EAAE8qC,EAASj1C,QAAQkoB,GAAG,aAGrImU,EAAQ4W,eAAe,CAAEpnB,SAAS,IAClCwQ,EAAQ4W,uBAlJJ,wCAyJRlwC,KAAK6vC,uBAAyB,GAC9B7vC,KAAK4e,KAAKE,cAAcrc,KAAK,UAAU+iB,KAAK,YAAY,KA1JhD,2CA6JW6qB,GAEnB,IAAM8B,EAAqBnyC,KAAK6vC,uBAAuB3pC,QAAQmqC,GACzD+B,GAAqC,IAAxBD,EAcnB,OAZKC,EAKHpyC,KAAK6vC,uBAAuBlzB,OAAOw1B,EAAoB,GAHvDnyC,KAAK6vC,uBAAuB3wC,KAAKmxC,GAMnCrwC,KAAK4e,KAAKE,cAAcrc,KAAK,UAAU6hB,GAAG+rB,GAAa7qB,KAAK,YAAa4sB,GAEzEpyC,KAAKqyC,6BAEGD,IA9KA,kDAiLkB,WAEtBz3C,EAAQ,GACN23C,EAAsBtyC,KAAK6vC,uBAAuB3tC,OAExDlC,KAAK6vC,uBAAuBztC,SAAQ,SAACD,GAAD,OAAWxH,GAAS,KAAJ,OAAS,EAAKikB,KAAKE,cAAcrc,KAAK,UAAU6hB,GAAGniB,GAAOkiB,OAAOjc,QAAQ,OAAQ,KAAK8L,WAQrH,KALnBvZ,EADEqF,KAAKjD,QAAQ2yC,oBAAsB,GAAK4C,EAAsBtyC,KAAKjD,QAAQ2yC,mBACrE,GAAH,OAAM4C,EAAN,YAA6BtyC,KAAKjD,QAAQ2qB,OAAO+nB,iBAE9C90C,EAAM43C,UAAU,IAGhBrwC,SACRvH,EAAQqF,KAAK4e,KAAKE,cAAcrc,KAAK,mBAAmB6hB,GAAG,GAAGD,QAGhErkB,KAAK4e,KAAKE,cAAcuO,SAAxB,UAAoCrtB,KAAKjD,QAAQ6pB,qBAAuB,wBAA0B,0BAA2BhmB,IAAIjG,KAlMzH,oCAuMR,IAAIX,GAAI,IAAIyZ,MAAOE,UAEnB,MAAO,uCAAuCvL,QAAQ,SAAS,SAAArO,GAG7D,IAAMS,GAAKR,EAAoB,GAAhB2B,KAAKmH,UAAiB,GAAK,EAG1C,OAFA9I,EAAI2B,KAAKuE,MAAMlG,EAAI,KAEL,MAAND,EAAYS,EAAQ,EAAJA,EAAU,GAAK4F,SAAS,SA/M1C,iCAqNR,MAAO,CACLi+B,YAAQ1gC,EACRu+B,GAFK,SAEFvhC,GAID,YAHqB,IAAVA,QAAgD,IAAhBqF,KAAKq+B,SAC9Cr+B,KAAKq+B,OAAS1jC,GAETqF,MAETrF,MARK,WASH,OAAOqF,KAAKq+B,WA9NR,oCAiDR,OAAO51B,QAAQzI,KAAK4e,KAAKE,cAAc/W,KAAK,eAAiB/H,KAAK4e,KAAKE,cAAcI,SAAS,oB,2BAjDtF,KAoOZ9X,EAAEzG,GAAGuvC,eAAiB,SAAUnzC,GAE9BqK,EAAEpH,MAAMmkB,IAAI,oBAAoBA,IAAI,kBAAkBnB,MAAK,WAElC,IAAIusB,EAAenoC,EAAEpH,MAAOjD,GACpCs9B,WAIRiV,EAyBTloC,EAAEzG,GAAGC,IAvBLwG,EAAEzG,GAAGC,IAAM,SAAUjG,GAEnB,IAAK+J,UAAUxC,OAEb,OAAOotC,EAAYz1C,KAAKmG,MAG1B,IAAkC,IAA9BA,KAAK+H,KAAK,iBAA4B/H,KAAKkf,SAAS,eAAiBlf,KAAKkf,SAAS,eAAgB,CAErGqwB,EAAeyC,yBAEfhyC,KAAKkwC,eAAe,CAClBpnB,SAAS,IAGX,IAAM0pB,EAAMlD,EAAYz1C,KAAKmG,KAAMrF,GAGnC,OAFAqF,KAAKkwC,iBAEEsC,EAGT,OAAOlD,EAAYz1C,KAAKmG,KAAMrF,IAIlC40C,EAAekD,wB,6BCzQjB,IAAIrrC,EAAI,EAAQ,GACZsrC,EAAU,EAAQ,KAA6BjvB,KAKnDrc,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,EAAM9J,OAJV,EAAQ,GAIUwP,CAAkB,WAAa,CACvEylC,OAAQ,SAAgB9wC,GACtB,OAAO6wC,EAAQ1yC,KAAM6B,EAAY6C,UAAUxC,OAAQwC,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,iBCT7F,IAAIyJ,EAAI,EAAQ,GACZwrC,EAAO,EAAQ,KACftrC,EAAmB,EAAQ,IAI/BF,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,GAAQ,CAClCorC,KAAMA,IAIRtrC,EAAiB,S,eCLjB,SAAUF,GACRA,EAAE,QAAQ0d,GAAG,iBAAkB,UAAU,WACnC1d,EAAE,mBAAmBlF,SAEvB2wC,cAAgBzrC,EAAEpH,MAAMgb,SAAS,iBAE9B63B,cAAc3zB,SAAS,gBACxB9X,EAAEpH,MAAM0hB,SAAS,mBACjBta,EAAE,QAAQsa,SAAS,eAGlBmxB,cAAc3zB,SAAS,iBACxB9X,EAAEpH,MAAM0hB,SAAS,2BACjBta,EAAE,QAAQsa,SAAS,mBAIzBta,EAAE,QAAQ0d,GAAG,kBAAmB,UAAU,WACxC1d,EAAE,QAAQ2X,YAAY,iBAlB1B,CAoBG8H,S,cCYHA,OAAO8Y,OAAP,OAA0B9Y,OAAO8Y,OAAP,MAE1B9Y,OAAOsJ,OAAQtJ,OAAO8Y,OACtB,CACImT,IAAK,cACLC,MAAO,SAAUxgB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAEzB,OAAO6sB,OAAO8Y,OAAO9Y,OAAO8Y,OAAOmT,KAAKvgB,EAAG33B,EAAGsO,EAAGnP,EAAGC,IAExDg5C,WAAY,SAAUzgB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAC9B,OAAOD,GAAGa,GAAGZ,GAAGY,EAAIsO,GAExB+pC,YAAa,SAAU1gB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAC/B,OAAQD,GAAIa,GAAGZ,IAAIY,EAAE,GAAKsO,GAE9BgqC,cAAe,SAAU3gB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GACjC,OAAKY,GAAGZ,EAAE,GAAK,EAAUD,EAAE,EAAEa,EAAEA,EAAIsO,GAC3BnP,EAAE,KAAQa,GAAIA,EAAE,GAAK,GAAKsO,GAEtCiqC,YAAa,SAAU5gB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAC/B,OAAOD,GAAGa,GAAGZ,GAAGY,EAAEA,EAAIsO,GAE1BkqC,aAAc,SAAU7gB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAChC,OAAOD,IAAIa,EAAEA,EAAEZ,EAAE,GAAGY,EAAEA,EAAI,GAAKsO,GAEnCmqC,eAAgB,SAAU9gB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAClC,OAAKY,GAAGZ,EAAE,GAAK,EAAUD,EAAE,EAAEa,EAAEA,EAAEA,EAAIsO,EAC9BnP,EAAE,IAAIa,GAAG,GAAGA,EAAEA,EAAI,GAAKsO,GAElCoqC,YAAa,SAAU/gB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAC/B,OAAOD,GAAGa,GAAGZ,GAAGY,EAAEA,EAAEA,EAAIsO,GAE5BqqC,aAAc,SAAUhhB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAChC,OAAQD,IAAMa,EAAEA,EAAEZ,EAAE,GAAGY,EAAEA,EAAEA,EAAI,GAAKsO,GAExCsqC,eAAgB,SAAUjhB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAClC,OAAKY,GAAGZ,EAAE,GAAK,EAAUD,EAAE,EAAEa,EAAEA,EAAEA,EAAEA,EAAIsO,GAC/BnP,EAAE,IAAMa,GAAG,GAAGA,EAAEA,EAAEA,EAAI,GAAKsO,GAEvCuqC,YAAa,SAAUlhB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAC/B,OAAOD,GAAGa,GAAGZ,GAAGY,EAAEA,EAAEA,EAAEA,EAAIsO,GAE9BwqC,aAAc,SAAUnhB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAChC,OAAOD,IAAIa,EAAEA,EAAEZ,EAAE,GAAGY,EAAEA,EAAEA,EAAEA,EAAI,GAAKsO,GAEvCyqC,eAAgB,SAAUphB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAClC,OAAKY,GAAGZ,EAAE,GAAK,EAAUD,EAAE,EAAEa,EAAEA,EAAEA,EAAEA,EAAEA,EAAIsO,EAClCnP,EAAE,IAAIa,GAAG,GAAGA,EAAEA,EAAEA,EAAEA,EAAI,GAAKsO,GAEtC0qC,WAAY,SAAUrhB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAC9B,OAAQD,EAAI4B,KAAKk4C,IAAIj5C,EAAEZ,GAAK2B,KAAKm4C,GAAG,IAAM/5C,EAAImP,GAElD6qC,YAAa,SAAUxhB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAC/B,OAAOD,EAAI4B,KAAKq4C,IAAIp5C,EAAEZ,GAAK2B,KAAKm4C,GAAG,IAAM5qC,GAE7C+qC,cAAe,SAAU1hB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GACjC,OAAQD,EAAE,GAAK4B,KAAKk4C,IAAIl4C,KAAKm4C,GAAGl5C,EAAEZ,GAAK,GAAKkP,GAEhDgrC,WAAY,SAAU3hB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAC9B,OAAW,GAAHY,EAAQsO,EAAInP,EAAI4B,KAAK22B,IAAI,EAAG,IAAM13B,EAAEZ,EAAI,IAAMkP,GAE1DirC,YAAa,SAAU5hB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAC/B,OAAQY,GAAGZ,EAAKkP,EAAEnP,EAAIA,GAA+B,EAAzB4B,KAAK22B,IAAI,GAAI,GAAK13B,EAAEZ,IAAUkP,GAE9DkrC,cAAe,SAAU7hB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GACjC,OAAO,GAAHY,EAAasO,EACbtO,GAAGZ,EAAUkP,EAAEnP,GACda,GAAGZ,EAAE,GAAK,EAAUD,EAAE,EAAI4B,KAAK22B,IAAI,EAAG,IAAM13B,EAAI,IAAMsO,EACpDnP,EAAE,GAA+B,EAAzB4B,KAAK22B,IAAI,GAAI,KAAO13B,IAAUsO,GAEjDmrC,WAAY,SAAU9hB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAC9B,OAAQD,GAAK4B,KAAK24C,KAAK,GAAK15C,GAAGZ,GAAGY,GAAK,GAAKsO,GAEhDqrC,YAAa,SAAUhiB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAC/B,OAAOD,EAAI4B,KAAK24C,KAAK,GAAK15C,EAAEA,EAAEZ,EAAE,GAAGY,GAAKsO,GAE5CsrC,cAAe,SAAUjiB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GACjC,OAAKY,GAAGZ,EAAE,GAAK,GAAWD,EAAE,GAAK4B,KAAK24C,KAAK,EAAI15C,EAAEA,GAAK,GAAKsO,EACpDnP,EAAE,GAAK4B,KAAK24C,KAAK,GAAK15C,GAAG,GAAGA,GAAK,GAAKsO,GAEjDurC,cAAe,SAAUliB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GACjC,IAAIyB,EAAE,QAAYD,EAAE,EAAMyC,EAAElE,EAC5B,GAAO,GAAHa,EAAM,OAAOsO,EAAI,GAAY,IAAPtO,GAAGZ,GAAO,OAAOkP,EAAEnP,EAC7C,GADsDyB,IAAGA,EAAI,GAAFxB,GACvDiE,EAAItC,KAAKm4B,IAAI/5B,GAAI,CAAEkE,EAAElE,EAAO0B,EAAED,EAAE,OAC3BC,EAAID,GAAG,EAAEG,KAAKm4C,IAAMn4C,KAAK+4C,KAAM36C,EAAEkE,GAC1C,OAASA,EAAEtC,KAAK22B,IAAI,EAAE,IAAI13B,GAAG,IAAMe,KAAKq4C,KAAMp5C,EAAEZ,EAAEyB,IAAI,EAAEE,KAAKm4C,IAAIt4C,GAAO0N,GAE5EyrC,eAAgB,SAAUpiB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAClC,IAAIyB,EAAE,QAAYD,EAAE,EAAMyC,EAAElE,EAC5B,GAAO,GAAHa,EAAM,OAAOsO,EAAI,GAAY,IAAPtO,GAAGZ,GAAO,OAAOkP,EAAEnP,EAC7C,GADsDyB,IAAGA,EAAI,GAAFxB,GACvDiE,EAAItC,KAAKm4B,IAAI/5B,GAAI,CAAEkE,EAAElE,EAAO0B,EAAED,EAAE,OAC3BC,EAAID,GAAG,EAAEG,KAAKm4C,IAAMn4C,KAAK+4C,KAAM36C,EAAEkE,GAC1C,OAAOA,EAAEtC,KAAK22B,IAAI,GAAG,GAAG13B,GAAKe,KAAKq4C,KAAMp5C,EAAEZ,EAAEyB,IAAI,EAAEE,KAAKm4C,IAAIt4C,GAAMzB,EAAImP,GAEzE0rC,iBAAkB,SAAUriB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GACpC,IAAIyB,EAAE,QAAYD,EAAE,EAAMyC,EAAElE,EAC5B,GAAO,GAAHa,EAAM,OAAOsO,EAAI,GAAc,IAATtO,GAAGZ,EAAE,GAAO,OAAOkP,EAAEnP,EAC/C,GADwDyB,IAAGA,EAAExB,GAAG,GAAG,MAC/DiE,EAAItC,KAAKm4B,IAAI/5B,GAAI,CAAEkE,EAAElE,EAAO0B,EAAED,EAAE,OAC3BC,EAAID,GAAG,EAAEG,KAAKm4C,IAAMn4C,KAAK+4C,KAAM36C,EAAEkE,GAC1C,OAAIrD,EAAI,EAAeqD,EAAEtC,KAAK22B,IAAI,EAAE,IAAI13B,GAAG,IAAMe,KAAKq4C,KAAMp5C,EAAEZ,EAAEyB,IAAI,EAAEE,KAAKm4C,IAAIt4C,IAA5D,GAAmE0N,EAC/EjL,EAAEtC,KAAK22B,IAAI,GAAG,IAAI13B,GAAG,IAAMe,KAAKq4C,KAAMp5C,EAAEZ,EAAEyB,IAAI,EAAEE,KAAKm4C,IAAIt4C,GAAI,GAAKzB,EAAImP,GAEjF2rC,WAAY,SAAUtiB,EAAG33B,EAAGsO,EAAGnP,EAAGC,EAAGyB,GAEjC,OADSkC,MAALlC,IAAgBA,EAAI,SACjB1B,GAAGa,GAAGZ,GAAGY,IAAIa,EAAE,GAAGb,EAAIa,GAAKyN,GAEtC4rC,YAAa,SAAUviB,EAAG33B,EAAGsO,EAAGnP,EAAGC,EAAGyB,GAElC,OADSkC,MAALlC,IAAgBA,EAAI,SACjB1B,IAAIa,EAAEA,EAAEZ,EAAE,GAAGY,IAAIa,EAAE,GAAGb,EAAIa,GAAK,GAAKyN,GAE/C6rC,cAAe,SAAUxiB,EAAG33B,EAAGsO,EAAGnP,EAAGC,EAAGyB,GAEpC,OADSkC,MAALlC,IAAgBA,EAAI,UACnBb,GAAGZ,EAAE,GAAK,EAAUD,EAAE,GAAGa,EAAEA,IAAiB,GAAZa,GAAI,QAAWb,EAAIa,IAAMyN,EACvDnP,EAAE,IAAIa,GAAG,GAAGA,IAAiB,GAAZa,GAAI,QAAWb,EAAIa,GAAK,GAAKyN,GAEzD8rC,aAAc,SAAUziB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GAChC,OAAOD,EAAI8sB,OAAO8Y,OAAOsV,cAAe1iB,EAAGv4B,EAAEY,EAAG,EAAGb,EAAGC,GAAKkP,GAE/D+rC,cAAe,SAAU1iB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GACjC,OAAKY,GAAGZ,GAAM,EAAE,KACLD,GAAG,OAAOa,EAAEA,GAAKsO,EACjBtO,EAAK,EAAE,KACPb,GAAG,QAAQa,GAAI,IAAI,MAAOA,EAAI,KAAOsO,EACrCtO,EAAK,IAAI,KACTb,GAAG,QAAQa,GAAI,KAAK,MAAOA,EAAI,OAASsO,EAExCnP,GAAG,QAAQa,GAAI,MAAM,MAAOA,EAAI,SAAWsO,GAG1DgsC,gBAAiB,SAAU3iB,EAAG33B,EAAGsO,EAAGnP,EAAGC,GACnC,OAAIY,EAAIZ,EAAE,EAAyD,GAA/C6sB,OAAO8Y,OAAOqV,aAAcziB,EAAK,EAAF33B,EAAK,EAAGb,EAAGC,GAAUkP,EACf,GAAlD2d,OAAO8Y,OAAOsV,cAAe1iB,EAAK,EAAF33B,EAAIZ,EAAG,EAAGD,EAAGC,GAAY,GAAFD,EAAOmP,M,8CCtK+gHF,E;;;8GAA5lH6d,OAAOsuB,SAASvX,QAAQzK,IAAI,yHAA0H,SAASnqB,GAAG,SAASpO,EAAEoO,GAAG,IAAIpO,EAAEoO,EAAE9G,OAAOjE,EAAEzD,EAAEsJ,KAAKkF,GAAG,MAAM,aAAa/K,IAAGzD,EAAE46C,SAASpsC,OAAM,IAAIA,EAAEqsC,WAAUz6C,KAAK,UAAUqD,GAAG,IAAIrD,GAAG,iBAAiBA,GAAGA,EAAE,GAAGA,EAAE,KAAKoO,IAAE,IAAIA,EAAE6d,OAAO,CAAC,IAAIrsB,EAAE,SAAFA,EAAWwO,EAAEpO,GAAG,OAAO,IAAIJ,EAAEmG,GAAG05B,KAAKrxB,EAAEpO,IAAIJ,EAAE46C,SAAS,SAASpsC,GAAG,OAAO,MAAMA,GAAGA,GAAGA,EAAElN,QAAQtB,EAAEsJ,KAAK,SAASkF,GAAG,OAAO,MAAMA,EAAEA,EAAE,GAAG,YAAiBA,IAAG,mBAAmBA,EAAE7N,EAAEzB,EAAEG,KAAKmP,KAAK,SAAvD,EAAuEA,IAAGxO,EAAE2J,QAAQD,MAAMC,SAAS,SAAS6E,GAAG,MAAM,UAAUxO,EAAEsJ,KAAKkF,IAAIxO,EAAE86C,cAAc,SAAStsC,GAAG,IAAIpO,EAAE,IAAIoO,GAAG,WAAWxO,EAAEsJ,KAAKkF,IAAIA,EAAEqsC,UAAU76C,EAAE46C,SAASpsC,GAAG,OAAM,EAAG,IAAI,GAAGA,EAAE7B,cAAchN,EAAEN,KAAKmP,EAAE,iBAAiB7O,EAAEN,KAAKmP,EAAE7B,YAAY7L,UAAU,iBAAiB,OAAM,EAAG,MAAM2C,GAAG,OAAM,EAAG,IAAIrD,KAAKoO,GAAG,YAAO,IAASpO,GAAGT,EAAEN,KAAKmP,EAAEpO,IAAIJ,EAAEwoB,KAAK,SAASha,EAAExO,EAAEyD,GAAG,IAAM9D,EAAE,EAAET,EAAEsP,EAAE9G,OAAOzG,EAAEb,EAAEoO,GAAG,GAAG/K,GAAG,GAAGxC,EAAE,KAAK/B,EAAES,IAA0B,IAApBK,EAAE2O,MAAMH,EAAE7O,GAAG8D,GAAW9D,UAAU,IAAIA,KAAK6O,EAAE,IAAyB,IAApBxO,EAAE2O,MAAMH,EAAE7O,GAAG8D,GAAU,WAAW,GAAGxC,EAAE,KAAK/B,EAAES,IAA8B,IAAxBK,EAAEX,KAAKmP,EAAE7O,GAAGA,EAAE6O,EAAE7O,IAAYA,UAAU,IAAIA,KAAK6O,EAAE,IAA6B,IAAxBxO,EAAEX,KAAKmP,EAAE7O,GAAGA,EAAE6O,EAAE7O,IAAW,MAAM,OAAO6O,GAAGxO,EAAEuN,KAAK,SAASiB,EAAEpO,EAAEO,GAAG,QAAG,IAASA,EAAE,CAAC,IAAmBzB,GAAfS,EAAE6O,EAAExO,EAAE+6C,WAAct3C,EAAE9D,GAAG,QAAG,IAASS,EAAE,OAAOlB,EAAE,GAAGA,GAAGkB,KAAKlB,EAAE,OAAOA,EAAEkB,QAAQ,QAAG,IAASA,EAAE,CAAC,IAAIT,EAAE6O,EAAExO,EAAE+6C,WAAWvsC,EAAExO,EAAE+6C,WAAW/6C,EAAEm1C,MAAM,OAAO1xC,EAAE9D,GAAG8D,EAAE9D,IAAI,GAAG8D,EAAE9D,GAAGS,GAAGO,EAAEA,IAAIX,EAAEkxB,WAAW,SAAS1iB,EAAEpO,GAAG,IAAIO,EAAE6N,EAAExO,EAAE+6C,SAASp7C,EAAEgB,GAAG8C,EAAE9C,GAAGhB,GAAGK,EAAEwoB,KAAKpoB,GAAE,SAASoO,EAAEpO,UAAUT,EAAES,OAAMJ,EAAE21B,OAAO,WAAW,IAAInnB,EAAEpO,EAAEqD,EAAE9C,EAAEhB,EAAET,EAAE+B,EAAEiJ,UAAU,IAAI,GAAG/K,EAAE,EAAE67C,EAAE9wC,UAAUxC,OAAOnI,GAAE,EAAG,IAAI,kBAAkB0B,IAAI1B,EAAE0B,EAAEA,EAAEiJ,UAAU/K,IAAI,GAAGA,KAAK,YAAiB8B,IAAG,aAAajB,EAAEsJ,KAAKrI,KAAKA,EAAE,IAAI9B,IAAI67C,IAAI/5C,EAAEuE,KAAKrG,KAAK67C,EAAE77C,EAAEA,IAAI,GAAG,OAAOQ,EAAEuK,UAAU/K,IAAI,IAAIwB,KAAKhB,EAAE6O,EAAEvN,EAAEN,GAAUM,KAAPwC,EAAE9D,EAAEgB,MAAWpB,GAAGkE,IAAIzD,EAAE86C,cAAcr3C,KAAKrD,EAAEJ,EAAE2J,QAAQlG,MAAMrD,GAAGA,GAAE,EAAGlB,EAAEsP,GAAGxO,EAAE2J,QAAQ6E,GAAGA,EAAE,IAAItP,EAAEsP,GAAGxO,EAAE86C,cAActsC,GAAGA,EAAE,GAAGvN,EAAEN,GAAGX,EAAE21B,OAAOp2B,EAAEL,EAAEuE,SAAI,IAASA,IAAIxC,EAAEN,GAAG8C,IAAI,OAAOxC,GAAGjB,EAAEklC,MAAM,SAAS12B,EAAE/K,EAAE9C,GAAmP,GAAG6N,EAAE,CAAC/K,GAAGA,GAAG,MAAM,QAAQ,IAAIvE,EAAEc,EAAEuN,KAAKiB,EAAE/K,GAAG,OAAO9C,IAAIzB,GAAGc,EAAE2J,QAAQhJ,GAAGzB,EAAEc,EAAEuN,KAAKiB,EAAE/K,EAAlU,SAAW+K,EAAExO,GAAG,IAAIyD,EAAEzD,GAAG,GAAG,OAAO,MAAMwO,IAAIpO,EAAER,OAAO4O,IAAK,SAASA,EAAEpO,GAAG,IAAI,IAAIJ,GAAGI,EAAEsH,OAAOjE,EAAE,EAAE9C,EAAE6N,EAAE9G,OAAO1H,EAAEyD,GAAG+K,EAAE7N,KAAKP,EAAEqD,KAAK,GAAGzD,GAAIA,EAAE,UAAK,IAASI,EAAEqD,IAAI+K,EAAE7N,KAAKP,EAAEqD,KAAY+K,EAAE9G,OAAO/G,EAA/H,CAAoI8C,EAAE,iBAAiB+K,EAAE,CAACA,GAAGA,GAAG,GAAG9J,KAAKrF,KAAKoE,EAAE+K,IAAI/K,EAAsF9D,CAAEgB,IAAIzB,EAAEwF,KAAK/D,GAAGzB,GAAGA,GAAG,KAAKc,EAAEi7C,QAAQ,SAASzsC,EAAEpO,GAAGJ,EAAEwoB,KAAKha,EAAEqsC,SAAS,CAACrsC,GAAGA,GAAE,SAASA,EAAE/K,GAAGrD,EAAEA,GAAG,KAAK,IAAIO,EAAEX,EAAEklC,MAAMzhC,EAAErD,GAAGT,EAAEgB,EAAEitB,QAAQ,eAAejuB,IAAIA,EAAEgB,EAAEitB,SAASjuB,IAAI,OAAOS,GAAGO,EAAEu6C,QAAQ,cAAcv7C,EAAEN,KAAKoE,GAAE,WAAWzD,EAAEi7C,QAAQx3C,EAAErD,WAASJ,EAAEmG,GAAGnG,EAAEc,UAAU,CAAC++B,KAAK,SAASrxB,GAAG,GAAGA,EAAEqsC,SAAS,OAAOr1C,KAAK,GAAGgJ,EAAEhJ,KAAK,MAAM,IAAI21C,MAAM,oBAAoB3f,OAAO,WAAW,IAAIp7B,EAAEoF,KAAK,GAAG89B,sBAAsB99B,KAAK,GAAG89B,wBAAwB,CAACta,IAAI,EAAEC,KAAK,GAAG,MAAM,CAACD,IAAI5oB,EAAE4oB,KAAKxa,EAAEk1B,aAAax4B,SAAS4oB,WAAW,IAAI5oB,SAASy4B,WAAW,GAAG1a,KAAK7oB,EAAE6oB,MAAMza,EAAE4sC,aAAalwC,SAASmwC,YAAY,IAAInwC,SAASowC,YAAY,KAAKpjC,SAAS,WAAW,SAAS1J,IAAI,IAAI,IAAIA,EAAEhJ,KAAK+1C,cAAcrwC,SAASsD,GAAG,UAAUA,EAAEqsC,SAAShtC,aAAa,WAAWW,EAAE3D,MAAMqN,UAAU1J,EAAEA,EAAE+sC,aAAa,OAAO/sC,GAAGtD,SAAS,IAAI9K,EAAEoF,KAAK,GAAGgJ,EAAEA,EAAEG,MAAMvO,GAAGqD,EAAE+B,KAAKg2B,SAAS76B,EAAE,mBAAmB8N,KAAKD,EAAEgtC,UAAU,CAACxyB,IAAI,EAAEC,KAAK,GAAGjpB,EAAEwO,GAAGgtB,SAAS,OAAO/3B,EAAEulB,KAAKjF,WAAW3jB,EAAEyK,MAAMsc,YAAY,EAAE1jB,EAAEwlB,MAAMlF,WAAW3jB,EAAEyK,MAAMogC,aAAa,EAAEz8B,EAAE3D,QAAQlK,EAAEqoB,KAAKjF,WAAWvV,EAAE3D,MAAM4wC,iBAAiB,EAAE96C,EAAEsoB,MAAMlF,WAAWvV,EAAE3D,MAAM6wC,kBAAkB,GAAG,CAAC1yB,IAAIvlB,EAAEulB,IAAIroB,EAAEqoB,IAAIC,KAAKxlB,EAAEwlB,KAAKtoB,EAAEsoB,QAAQ,IAAIxlB,EAAE,GAAGzD,EAAE+6C,QAAQ,YAAY,IAAI9hC,MAAME,UAAUnZ,EAAEm1C,KAAK,EAAE,IAAI,IAAIx0C,EAAE,GAAGhB,EAAEgB,EAAEI,eAAe7B,EAAEyB,EAAEiF,SAAS3E,EAAE,gEAAgEmE,MAAM,KAAKjG,EAAE,EAAEA,EAAE8B,EAAEyG,OAAOvI,IAAIwB,EAAE,WAAWM,EAAE9B,GAAG,KAAK8B,EAAE9B,GAAG0O,cAAc7N,EAAEmG,GAAG05B,KAAK/+B,UAAUd,EAAEmG,GAAGqI,EAAEmsC,SAAS,CAACgB,UAAU37C,IAAh7G,CAAq7GsB,QAAiBkN,EAAoI,WAAW,OAAO,SAASA,EAAEpO,EAAEJ,EAAEyD,GAA2F,SAAS9D,EAAE6O,GAAG,OAAOlP,EAAEs8C,UAAUptC,GAAGA,EAAE,GAAG3I,MAAMxG,KAAKmP,GAAGlP,EAAEu8C,OAAOrtC,KAAKA,EAAE,CAACA,IAAIA,EAAE,SAAStP,EAAEsP,GAAG,IAAIpO,EAAE6B,EAAEsL,KAAKiB,EAAE,YAAY,OAAO,OAAOpO,EAAEqD,EAAErD,EAAE,SAASa,EAAEuN,GAAG,OAAO,SAASpO,GAAG,OAAOe,KAAKyiC,MAAMxjC,EAAEoO,IAAI,EAAEA,IAAI,SAASrP,EAAEqP,EAAExO,EAAEyD,EAAE9C,GAAG,SAAShB,EAAE6O,EAAEpO,GAAG,OAAO,EAAE,EAAEA,EAAE,EAAEoO,EAAE,SAAStP,EAAEsP,EAAEpO,GAAG,OAAO,EAAEA,EAAE,EAAEoO,EAAE,SAASvN,EAAEuN,GAAG,OAAO,EAAEA,EAAE,SAASrP,EAAEqP,EAAEpO,EAAEJ,GAAG,QAAQL,EAAES,EAAEJ,GAAGwO,EAAEtP,EAAEkB,EAAEJ,IAAIwO,EAAEvN,EAAEb,IAAIoO,EAAE,SAASwsC,EAAExsC,EAAEpO,EAAEJ,GAAG,OAAO,EAAEL,EAAES,EAAEJ,GAAGwO,EAAEA,EAAE,EAAEtP,EAAEkB,EAAEJ,GAAGwO,EAAEvN,EAAEb,GAAG,SAASb,EAAEa,EAAEJ,GAAG,IAAI,IAAIW,EAAE,EAAErB,EAAEqB,IAAIA,EAAE,CAAC,IAAIhB,EAAEq7C,EAAEh7C,EAAEwO,EAAE/K,GAAG,GAAG,IAAI9D,EAAE,OAAOK,EAAmBA,IAAXb,EAAEa,EAAEwO,EAAE/K,GAAGrD,GAAOT,EAAE,OAAOK,EAAmD,SAASiC,EAAE7B,EAAEJ,EAAEW,GAAG,IAAIhB,EAAET,EAAE+B,EAAE,EAAE,IAAetB,EAAER,EAAdD,EAAEc,GAAGW,EAAEX,GAAG,EAAQwO,EAAE/K,GAAGrD,GAAI,EAAEO,EAAEzB,EAAEc,EAAEd,QAAQiC,KAAKm4B,IAAI35B,GAAGm8C,KAAK76C,EAAE86C,GAAG,OAAO78C,EAAsJ,SAASqP,IAAIjC,GAAE,GAAIkC,GAAGxO,GAAGyD,GAAG9C,IAA5U,WAAa,IAAI,IAAIP,EAAE,EAAEsO,EAAEtO,IAAIA,EAAE47C,EAAE57C,GAAGjB,EAAEiB,EAAE23B,EAAEvpB,EAAE/K,GAAkSzC,GAAI,IAAI1B,EAAE,EAAE28C,EAAE,KAAKH,EAAE,KAAKC,EAAE,GAAGrtC,EAAE,GAAGqpB,EAAE,GAAGrpB,EAAE,GAAGuJ,EAAE,iBAAiB7X,EAAE,GAAG,IAAI8J,UAAUxC,OAAO,OAAM,EAAG,IAAI,IAAIxD,EAAE,EAAE,EAAEA,IAAIA,EAAE,GAAG,iBAAiBgG,UAAUhG,IAAIyB,MAAMuE,UAAUhG,MAAMg4C,SAAShyC,UAAUhG,IAAI,OAAM,EAAGsK,EAAErN,KAAKoD,IAAIiK,EAAE,GAAG/K,EAAEtC,KAAKoD,IAAId,EAAE,GAAG+K,EAAErN,KAAKyK,IAAI4C,EAAE,GAAG/K,EAAEtC,KAAKyK,IAAInI,EAAE,GAAG,IAAIu4C,EAAE/jC,EAAE,IAAIpH,aAAanC,GAAG,IAAIhF,MAAMgF,GAAGpC,GAAE,EAAGI,EAAE,SAAStM,GAAG,OAAOkM,GAAGiC,IAAIC,IAAIxO,GAAGyD,IAAI9C,EAAEP,EAAE,IAAIA,EAAE,EAAE,IAAIA,EAAE,EAAEjB,EAA7iB,SAAWiB,GAAG,IAAI,IAAIJ,EAAE,EAAEW,EAAE,EAAEhB,EAAE+O,EAAE,EAAE/N,GAAGhB,GAAGq8C,EAAEr7C,IAAIP,IAAIO,EAAEX,GAAG+3B,EAAM,IAA6B92B,EAAEjB,GAAxBI,EAAE47C,IAAXr7C,KAAkBq7C,EAAEr7C,EAAE,GAAGq7C,EAAEr7C,IAAUo3B,EAAE54B,EAAE67C,EAAE/5C,EAAEuN,EAAE/K,GAAG,OAAOtE,GAAG88C,EAAE18C,EAAEa,EAAEa,GAAG,GAAG9B,EAAE8B,EAAEgB,EAAE7B,EAAEJ,EAAEA,EAAE+3B,GAA8Zv4B,CAAEY,GAAGJ,EAAEW,IAAI+L,EAAEyvC,iBAAiB,WAAW,MAAM,CAAC,CAACpkB,EAAEvpB,EAAEytC,EAAEj8C,GAAG,CAAC+3B,EAAEt0B,EAAEw4C,EAAEt7C,KAAK,IAAIy7C,EAAE,kBAAkB,CAAC5tC,EAAExO,EAAEyD,EAAE9C,GAAG,IAAI,OAAO+L,EAAE9G,SAAS,WAAW,OAAOw2C,GAAG1vC,EAAE,SAASsuC,EAAExsC,EAAEpO,GAAG,IAAIJ,EAAEwO,EAAE,OAAOlP,EAAE+8C,SAAS7tC,GAAGE,EAAE4tC,QAAQ9tC,KAAKxO,GAAE,GAAIA,EAAEV,EAAEqK,QAAQ6E,IAAI,IAAIA,EAAE9G,OAAOzG,EAAE0N,MAAM,KAAKH,GAAGlP,EAAEqK,QAAQ6E,IAAI,IAAIA,EAAE9G,OAAOqwB,EAAEppB,MAAM,KAAKH,EAAEhF,OAAO,CAACpJ,QAAKd,EAAEqK,QAAQ6E,IAAI,IAAIA,EAAE9G,SAAOvI,EAAEwP,MAAM,KAAKH,IAAU,IAAJxO,IAASA,EAAE0O,EAAE4tC,QAAQ5tC,EAAEm4B,SAAS1B,QAAQz2B,EAAEm4B,SAAS1B,OAAO4W,GAAG/7C,EAAE,SAAST,EAAEiP,GAAG,GAAGA,EAAE,CAAC,IAAIpO,GAAG,IAAI6Y,MAAME,UAAUnZ,EAAE0O,EAAE6tC,MAAMC,MAAM90C,OAAO1H,EAAE,MAAM0O,EAAE6tC,MAAMC,MAA1yD,SAAWhuC,GAAG,IAAI,IAAIpO,GAAG,EAAEJ,EAAEwO,EAAEA,EAAE9G,OAAO,EAAEjE,EAAE,KAAKrD,EAAEJ,GAAG,CAAC,IAAIW,EAAE6N,EAAEpO,GAAGO,GAAG8C,EAAEiB,KAAK/D,GAAG,OAAO8C,EAA0tD9C,CAAE+N,EAAE6tC,MAAMC,QAAQ,IAAI,IAAI78C,EAAE,EAAEK,EAAEL,EAAEA,IAAI,GAAG+O,EAAE6tC,MAAMC,MAAM78C,GAAG,CAAC,IAAIsB,EAAEyN,EAAE6tC,MAAMC,MAAM78C,GAAGR,EAAE8B,EAAE,GAAG+5C,EAAE/5C,EAAE,GAAGzB,EAAEyB,EAAE,GAAGsN,IAAI/O,EAAEy8C,EAAE,KAAKz8C,IAAIA,EAAEkP,EAAE6tC,MAAMC,MAAM78C,GAAG,GAAGS,EAAE,IAAI,IAAI,IAAI07C,EAAE36C,KAAKoD,KAAKnE,EAAEZ,GAAGw7C,EAAErZ,SAAS,GAAGoa,EAAE,EAAEhkB,EAAE54B,EAAEuI,OAAOqwB,EAAEgkB,EAAEA,IAAI,CAAC,IAAI73C,EAAE/E,EAAE48C,GAAGzvC,EAAEpI,EAAEwkB,QAAQ,GAAGxpB,EAAEoN,GAAG,CAAC,IAAII,GAAE,EAAgV,IAAI,IAAI+K,KAAlVujC,EAAElwC,UAAUrH,GAAG,OAAOu3C,EAAElwC,SAAS,SAASkwC,EAAElwC,UAAY,SAASkwC,EAAElwC,SAAuE7I,EAAEumB,KAA1D,CAAC,cAAc,WAAW,cAAc,iBAAyB,SAASha,EAAEpO,GAAG6X,EAAEwkC,iBAAiBnwC,EAAE,UAAUlM,MAAK6X,EAAEwkC,iBAAiBnwC,EAAE,UAAU0uC,EAAElwC,UAASkwC,EAAE5xB,aAAa3lB,GAAG,WAAWu3C,EAAE5xB,YAAYnR,EAAEwkC,iBAAiBnwC,EAAE,aAAa0uC,EAAE5xB,YAAyBllB,EAAE,GAAG,YAAYuT,EAAE,CAAC,IAAIG,EAAErM,EAAErH,EAAEuT,GAAGoD,EAAEvb,EAAE+8C,SAAS9wC,EAAE45B,QAAQz2B,EAAE4tC,QAAQ/wC,EAAE45B,QAAQ55B,EAAE45B,OAAO,GAAG,IAAI2W,EAAElkC,EAAErM,EAAEmxC,aAAa,CAAC,IAAI/kC,EAAEpM,EAAEmxC,SAASnxC,EAAEoxC,WAAW,GAAG/kC,EAAErM,EAAEoxC,WAAWhlC,EAAEkD,EAAEihC,EAAEd,EAAErjC,IAAIpJ,GAAGqJ,IAAIrM,EAAEqxC,aAAa,SAAS,GAAGrxC,EAAEqxC,aAAahlC,EAAE,UAAUH,EAAEwkC,EAAErkC,MAAM,CAAC,GAAGK,EAAE4kC,MAAMC,WAAWrlC,GAAG,CAAC,IAAIslC,EAAE9kC,EAAE4kC,MAAMG,QAAQvlC,GAAGwlC,EAAE/9C,EAAEoN,GAAG4wC,uBAAuBH,GAAGE,IAAI1xC,EAAE4xC,kBAAkBF,GAAG,IAAIG,EAAEnlC,EAAEwkC,iBAAiBnwC,EAAEmL,EAAElM,EAAEqxC,cAAc,IAAI74B,WAAWnM,GAAG,GAAGrM,EAAE8xC,UAAU9xC,EAAE4xC,kBAAkB5xC,EAAE+xC,YAAYrlC,EAAE4kC,MAAMC,WAAWrlC,KAAKvY,EAAEoN,GAAG4wC,uBAAuBH,GAAG9kC,EAAEslC,eAAeT,WAAWC,GAAG9kC,EAAEslC,eAAeT,WAAWC,GAAG,UAAU,KAAKK,EAAE,IAAIA,EAAE,IAAI,cAAcA,EAAE,KAAK1wC,GAAE,IAAKsuC,EAAEwC,UAAUt+C,EAAEoN,GAAGmxC,eAAeC,cAAcj6C,IAAIvE,EAAEoN,GAAGmxC,eAAeC,YAAY,kBAAkBhxC,GAAE,GAAIA,GAAGuL,EAAE0lC,oBAAoBrxC,IAAI0uC,EAAElwC,UAAUrH,GAAG,SAASu3C,EAAElwC,UAAU4D,EAAE6tC,MAAMC,MAAM78C,GAAG,GAAGmL,SAAQ,GAAIkwC,EAAE5xB,aAAa3lB,GAAG,WAAWu3C,EAAE5xB,aAAa1a,EAAE6tC,MAAMC,MAAM78C,GAAG,GAAGypB,YAAW,GAAI4xB,EAAE4C,UAAU5C,EAAE4C,SAASv+C,KAAK4B,EAAE,GAAGA,EAAE,GAAG66C,EAAE36C,KAAKyK,IAAI,EAAEpM,EAAEw7C,EAAErZ,SAASvhC,GAAGZ,EAAEy8C,GAAG,IAAIH,GAAG96C,EAAErB,IAAI+O,EAAE6tC,MAAMsB,WAAW7B,EAAEz8C,GAAG,SAASyB,EAAEwN,EAAEpO,GAAG,IAAIsO,EAAE6tC,MAAMC,MAAMhuC,GAAG,OAAM,EAAG,IAAI,IAAIxO,EAAE0O,EAAE6tC,MAAMC,MAAMhuC,GAAG,GAAG7N,EAAE+N,EAAE6tC,MAAMC,MAAMhuC,GAAG,GAAG7O,EAAE+O,EAAE6tC,MAAMC,MAAMhuC,GAAG,GAAGvN,EAAEyN,EAAE6tC,MAAMC,MAAMhuC,GAAG,GAAGrP,GAAE,EAAG67C,EAAE,EAAEz7C,EAAES,EAAE0H,OAAOnI,EAAEy7C,EAAEA,IAAI,CAAC,IAAIh6C,EAAEhB,EAAEg7C,GAAGtyB,QAAQ,GAAGtoB,GAAGT,EAAEm+C,OAAO,SAASn+C,EAAEmL,SAASmN,EAAEwkC,iBAAiBz7C,EAAE,UAAUrB,EAAEmL,SAAS,WAAWnL,EAAEypB,YAAYnR,EAAEwkC,iBAAiBz7C,EAAE,aAAarB,EAAEypB,cAAsB,IAATzpB,EAAEm+C,OAAY77C,EAAEijC,MAAMlkC,GAAG,KAAKyC,IAAI,4BAA4BgL,KAAKxM,EAAEijC,MAAMlkC,GAAG,MAAM9B,EAAE8B,GAAG,CAAC9B,EAAE8B,GAAG+8C,aAAY,EAAG7+C,EAAE8B,GAAGk8C,uBAAuB,GAAG,IAAI19C,GAAE,EAAGyC,EAAEumB,KAAKvQ,EAAE+lC,MAAMC,cAAa,SAASzvC,EAAEpO,GAAG,IAAIJ,EAAE,SAASyO,KAAKrO,GAAG,EAAE,EAAEO,EAAEzB,EAAE8B,GAAGy8C,eAAer9C,GAAGlB,EAAE8B,GAAGy8C,eAAer9C,KAAKqD,GAAG,IAAIqO,OAAO,OAAO9R,EAAE,QAAQyO,KAAK9N,KAAKnB,GAAE,SAAUN,EAAE8B,GAAGy8C,eAAer9C,OAAMT,EAAE69C,WAAWh+C,GAAE,SAAUN,EAAE8B,GAAGy8C,eAAeC,aAAal+C,GAAGyY,EAAE0lC,oBAAoB38C,GAAGiX,EAAEimC,OAAO35B,YAAYvjB,EAAE,sBAAsB,IAAIZ,GAAGT,EAAEylC,WAAWzlC,EAAEm+C,MAAM9C,IAAIz7C,EAAE,EAAE,IAAII,EAAEylC,SAAS/lC,KAAKsB,EAAEA,GAAG,MAAM4N,GAAGmvB,YAAW,WAAW,MAAMnvB,IAAG,GAAGtN,IAAY,IAATtB,EAAEm+C,MAAW78C,EAAEN,GAAGzB,EAAE8B,KAAa,IAATrB,EAAEm+C,OAAY19C,IAAI6B,EAAEumB,KAAKtpB,EAAE8B,GAAGm9C,iBAAgB,SAAS3vC,EAAEpO,GAAG,UAAUqO,KAAKD,IAAI,MAAMuV,WAAW3jB,EAAEs8C,YAAYt8C,EAAEs8C,SAAS,EAAEt8C,EAAEu8C,WAAW,KAAK,sBAAsBluC,KAAKD,IAAI,MAAMuV,WAAW3jB,EAAEs8C,WAAW,MAAMt8C,EAAEi9C,WAAWj9C,EAAEs8C,SAAS,EAAEt8C,EAAEu8C,WAAW,QAAOjuC,EAAE1N,EAAE,UAAU,CAAC88C,MAAK,EAAGlc,MAAMjiC,EAAEiiC,UAAmB,IAAVjiC,EAAEulC,OAAYjjC,EAAEg5C,QAAQj6C,EAAErB,EAAEulC,OAAOx2B,EAAE6tC,MAAMC,MAAMhuC,IAAG,EAAG,IAAI,IAAIlP,EAAE,EAAE28C,EAAEvtC,EAAE6tC,MAAMC,MAAM90C,OAAOu0C,EAAE38C,EAAEA,IAAI,IAAsB,IAAnBoP,EAAE6tC,MAAMC,MAAMl9C,GAAQ,CAACH,GAAE,EAAG,OAAU,IAAJA,IAASuP,EAAE6tC,MAAMsB,WAAU,SAAUnvC,EAAE6tC,MAAMC,MAAM9tC,EAAE6tC,MAAMC,MAAM,IAAI,IAAIv6C,EAAEzC,EAAE,WAAW,GAAGQ,EAAEo+C,aAAa,OAAOp+C,EAAEo+C,aAAa,IAAI,IAAI5vC,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAIpO,EAAEJ,EAAEmK,cAAc,OAAO,GAAG/J,EAAEi+C,UAAU,iBAAc7vC,EAAE,iCAA8BpO,EAAEk+C,qBAAqB,QAAQ52C,OAAO,OAAOtH,EAAE,KAAKoO,EAAE,OAAO/K,EAA/N,GAAoO8K,EAAE,WAAW,IAAIC,EAAE,EAAE,OAAOpO,EAAEm+C,6BAA6Bn+C,EAAEo+C,0BAA0B,SAASp+C,GAAG,IAAIJ,EAAEyD,GAAG,IAAIwV,MAAME,UAAU,OAAOnZ,EAAEmB,KAAKyK,IAAI,EAAE,IAAInI,EAAE+K,IAAIA,EAAE/K,EAAEzD,EAAE09B,YAAW,WAAWt9B,EAAEqD,EAAEzD,KAAIA,IAAhM,GAAuMV,EAAE,CAAC+8C,SAAS,SAAS7tC,GAAG,MAAM,iBAAiBA,GAAG7E,QAAQD,MAAMC,SAAS,SAAS6E,GAAG,MAAM,mBAAmB5O,OAAOkB,UAAU8E,SAASvG,KAAKmP,IAAIiwC,WAAW,SAASjwC,GAAG,MAAM,sBAAsB5O,OAAOkB,UAAU8E,SAASvG,KAAKmP,IAAIqtC,OAAO,SAASrtC,GAAG,OAAOA,GAAGA,EAAEqsC,UAAU6D,WAAW,SAASlwC,GAAG,MAAM,YAAiBA,IAAG,gDAAgDC,KAAK7O,OAAOkB,UAAU8E,SAASvG,KAAKmP,KAAKA,EAAE9G,SAASjE,IAAI,IAAI+K,EAAE9G,QAAQ,YAAiB8G,EAAE,KAAIA,EAAE,GAAGqsC,SAAS,IAAIe,UAAU,SAASptC,GAAG,OAAOA,IAAIA,EAAEmwC,QAAQv+C,EAAEw+C,OAAOx+C,EAAEw+C,MAAMC,MAAMC,IAAItwC,KAAKuwC,MAAM,SAASvwC,GAAG,OAAOpO,EAAE4+C,YAAYxwC,aAAapO,EAAE4+C,YAAYC,cAAc,SAASzwC,GAAG,IAAI,IAAIpO,KAAKoO,EAAE,OAAM,EAAG,OAAM,IAAKytC,GAAE,EAAG,GAAGztC,EAAErI,IAAIqI,EAAErI,GAAGw4C,QAAQ18C,EAAEuM,EAAEytC,GAAE,GAAIh6C,EAAE7B,EAAEu6C,SAASgB,UAAU,GAAGn8C,IAAIy8C,EAAE,MAAM,IAAId,MAAM,wEAAwE,KAAG,GAAG37C,GAAN,CAA0D,IAAIs8C,EAAE,IAAIC,EAAE,QAAQrtC,EAAE,CAAC6tC,MAAM,CAAC2C,SAAS,iEAAiEzwC,KAAK2f,UAAUC,WAAW8wB,UAAU,WAAW1wC,KAAK2f,UAAUC,WAAW+wB,cAAc,uBAAuB3wC,KAAK2f,UAAUC,WAAWgxB,SAASj/C,EAAEk/C,OAAOC,UAAU,WAAW9wC,KAAK2f,UAAUC,WAAWmxB,cAAcx/C,EAAEmK,cAAc,OAAOs1C,cAAc,GAAGC,aAAa,KAAKC,mBAAmB,KAAKC,kBAAkB,KAAK/B,WAAU,EAAGrB,MAAM,IAAIqD,IAAI,GAAGlE,UAAU15C,EAAE69C,UAAU,GAAGxD,QAAQ,GAAGyD,QAAQ3/C,EAAE2/C,QAAQlZ,SAAS,CAAC3B,MAAM,GAAGvD,SAASma,EAAE3W,OAAO4W,EAAEiE,MAAMv8C,EAAE2hC,SAAS3hC,EAAEm6C,SAASn6C,EAAEqH,QAAQrH,EAAE2lB,WAAW3lB,EAAEq6C,MAAK,EAAGlc,OAAM,EAAG4b,UAAS,EAAGyC,cAAa,GAAIpgB,KAAK,SAASrxB,GAAGvM,EAAEsL,KAAKiB,EAAE,WAAW,CAACuwC,MAAMz/C,EAAEy/C,MAAMvwC,GAAGuvC,aAAY,EAAGmC,cAAc,KAAK/B,gBAAgB,KAAKjB,uBAAuB,GAAGO,eAAe,MAAM0C,KAAK,KAAKC,MAAK,EAAGz7C,QAAQ,CAAC07C,MAAM,EAAEC,MAAM,EAAEC,MAAM,GAAGC,OAAM,GAAIpgD,EAAEsjC,cAAcjgC,GAAGiL,EAAE6tC,MAAMmD,aAAat/C,EAAEsO,EAAE6tC,MAAMoD,mBAAmB,cAAcjxC,EAAE6tC,MAAMqD,kBAAkB,gBAAgBlxC,EAAE6tC,MAAMmD,aAAa1/C,EAAEyjC,iBAAiBzjC,EAAEujC,KAAKkd,YAAYzgD,EAAEujC,KAAK70B,EAAE6tC,MAAMoD,mBAAmB,aAAajxC,EAAE6tC,MAAMqD,kBAAkB,aAAa,IAAI7nB,EAAE,WAAW,SAASvpB,EAAEA,GAAG,OAAOA,EAAEkyC,QAAQlyC,EAAEupB,EAAEvpB,EAAEmyC,SAASnyC,EAAEutC,EAAE,SAAS37C,EAAEA,EAAEJ,EAAEyD,GAAG,IAAI9C,EAAE,CAACo3B,EAAE33B,EAAE23B,EAAEt0B,EAAEm9C,GAAG5gD,EAAE+7C,EAAE37C,EAAE27C,EAAEt4C,EAAEo9C,GAAG7gD,EAAE0gD,QAAQtgD,EAAEsgD,QAAQC,SAASvgD,EAAEugD,UAAU,MAAM,CAACC,GAAGjgD,EAAEo7C,EAAE8E,GAAGryC,EAAE7N,IAAI,SAASX,EAAEA,EAAEyD,GAAG,IAAI9C,EAAE,CAACigD,GAAG5gD,EAAE+7C,EAAE8E,GAAGryC,EAAExO,IAAIL,EAAES,EAAEJ,EAAE,GAAGyD,EAAE9C,GAAGzB,EAAEkB,EAAEJ,EAAE,GAAGyD,EAAE9D,GAAGsB,EAAEb,EAAEJ,EAAEyD,EAAEvE,GAAGC,EAAE,EAAE,GAAGwB,EAAEigD,GAAG,GAAGjhD,EAAEihD,GAAG1hD,EAAE0hD,IAAI3/C,EAAE2/C,IAAI5F,EAAE,EAAE,GAAGr6C,EAAEkgD,GAAG,GAAGlhD,EAAEkhD,GAAG3hD,EAAE2hD,IAAI5/C,EAAE4/C,IAAI,OAAO7gD,EAAE+3B,EAAE/3B,EAAE+3B,EAAE54B,EAAEsE,EAAEzD,EAAE+7C,EAAE/7C,EAAE+7C,EAAEf,EAAEv3C,EAAEzD,EAAE,OAAO,SAASyD,EAAE+K,EAAEpO,EAAEO,GAAG,IAAIhB,EAAET,EAAE+B,EAAE9B,EAAE,CAAC44B,GAAG,EAAEgkB,EAAE,EAAE2E,QAAQ,KAAKC,SAAS,MAAM3F,EAAE,CAAC,GAAGz7C,EAAE,EAAgB,IAAIiP,EAAEuV,WAAWvV,IAAI,IAAIpO,EAAE2jB,WAAW3jB,IAAI,GAAGO,EAAEA,GAAG,KAAKxB,EAAEuhD,QAAQlyC,EAAErP,EAAEwhD,SAASvgD,EAAyBlB,GAAvBS,EAAE,OAAOgB,IAAKpB,EAAEkE,EAAE+K,EAAEpO,IAAOO,EAAhH,UAAyHM,EAAEjB,EAAEiB,GAAG9B,EAAED,GAAG87C,EAAEt2C,KAAK,EAAEzD,EAAE82B,GAAGx4B,GAAG,GAAG4B,KAAKm4B,IAAIr4B,EAAE82B,GAA3K,MAAiL52B,KAAKm4B,IAAIr4B,EAAE86C,GAA5L,OAAmM,OAAOp8C,EAAE,SAAS6O,GAAG,OAAOwsC,EAAExsC,GAAGwsC,EAAEtzC,OAAO,GAAG,IAAInI,GAAxqB,GAA8qBmP,EAAE4tC,QAAQ,CAACwE,OAAO,SAAStyC,GAAG,OAAOA,GAAG+pC,MAAM,SAAS/pC,GAAG,MAAM,GAAGrN,KAAKk4C,IAAI7qC,EAAErN,KAAKm4C,IAAI,GAAGyH,OAAO,SAASvyC,GAAG,OAAO,EAAErN,KAAKk4C,IAAI,IAAI7qC,EAAErN,KAAKm4C,IAAIn4C,KAAK6/C,IAAI,GAAGxyC,KAAKvM,EAAEumB,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,cAAc,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,gBAAgB,CAAC,KAAK,IAAI,KAAK,OAAO,CAAC,cAAc,CAAC,IAAI,KAAK,KAAK,MAAM,CAAC,eAAe,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,KAAK,MAAM,CAAC,eAAe,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,KAAK,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,KAAK,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,KAAK,IAAI,QAAO,SAASha,EAAEpO,GAAGsO,EAAE4tC,QAAQl8C,EAAE,IAAIjB,EAAEwP,MAAM,KAAKvO,EAAE,OAAM,IAAI6X,EAAEvJ,EAAEmxC,IAAI,CAACoB,MAAM,CAACC,MAAM,wBAAwBC,YAAY,oBAAoBC,6BAA6B,qCAAqCC,WAAW,8CAA8CrD,MAAM,CAACsD,OAAO,CAAC,OAAO,SAAS,YAAY,QAAQ,kBAAkB,cAAc,iBAAiB,mBAAmB,oBAAoB,kBAAkB,gBAAgBC,eAAe,CAAC,aAAa,aAAa,QAAQ,SAAS,SAAS,QAAQ,QAAQ,WAAWtD,aAAa,CAAC,uBAAuB,aAAa,SAAS,UAAU,YAAYpB,MAAM,CAAC2E,UAAU,CAACC,WAAW,CAAC,iBAAiB,qBAAqBC,UAAU,CAAC,wBAAwB,yBAAyBC,KAAK,CAAC,wBAAwB,mBAAmBC,mBAAmB,CAAC,MAAM,SAASC,gBAAgB,CAAC,QAAQ,eAAeC,kBAAkB,CAAC,MAAM,YAAYhF,WAAW,GAAGiF,SAAS,WAAW,IAAI,IAAIvzC,EAAE,EAAEA,EAAEyJ,EAAE+lC,MAAMsD,OAAO55C,OAAO8G,IAAI,CAAC,IAAIpO,EAAE,UAAU6X,EAAE+lC,MAAMsD,OAAO9yC,GAAG,UAAU,gBAAgByJ,EAAE4kC,MAAM2E,UAAUvpC,EAAE+lC,MAAMsD,OAAO9yC,IAAI,CAAC,uBAAuBpO,GAAG,IAAIJ,EAAEyD,EAAE9C,EAAE,GAAGnB,EAAE,IAAIQ,KAAKiY,EAAE4kC,MAAM2E,UAAU,CAAwB7gD,GAAvB8C,EAAEwU,EAAE4kC,MAAM2E,UAAUxhD,IAAO,GAAGoF,MAAM,KAAK,IAAIzF,EAAE8D,EAAE,GAAG6O,MAAM2F,EAAEgpC,MAAMI,YAAY,UAAU1gD,EAAE,KAAKA,EAAE+D,KAAK/D,EAAEitB,SAASjuB,EAAE+E,KAAK/E,EAAEiuB,SAAS3V,EAAE4kC,MAAM2E,UAAUxhD,GAAG,CAACW,EAAE4E,KAAK,KAAK5F,EAAE4F,KAAK,OAAO,IAAIvF,KAAKiY,EAAE4kC,MAAM2E,UAAoD,IAAI,IAAIhzC,KAA1B7N,GAAvB8C,EAAEwU,EAAE4kC,MAAM2E,UAAUxhD,IAAO,GAAGoF,MAAM,KAAoB,CAAC,IAAIlG,EAAEc,EAAEW,EAAE6N,GAAGvN,EAAEuN,EAAEyJ,EAAE4kC,MAAMC,WAAW59C,GAAG,CAACc,EAAEiB,KAAM+7C,QAAQ,SAASxuC,GAAG,IAAIpO,EAAE6X,EAAE4kC,MAAMC,WAAWtuC,GAAG,OAAOpO,EAAEA,EAAE,GAAGoO,GAAGwzC,uBAAuB,SAASxzC,EAAEpO,GAAG,OAAO6X,EAAEgpC,MAAME,YAAY1yC,KAAKrO,KAAKA,EAAEA,EAAEkS,MAAM2F,EAAEgpC,MAAME,aAAa,IAAIlpC,EAAEimC,OAAO+D,eAAe7hD,KAAKA,EAAE6X,EAAE4kC,MAAM2E,UAAUhzC,GAAG,IAAIpO,GAAG8hD,aAAa,SAAS1zC,EAAEpO,GAAG,IAAIJ,EAAEiY,EAAE4kC,MAAMC,WAAWtuC,GAAG,GAAGxO,EAAE,CAAC,IAAIyD,EAAEzD,EAAE,GAAGW,EAAEX,EAAE,GAAG,OAAOI,EAAE6X,EAAE4kC,MAAMmF,uBAAuBv+C,EAAErD,IAAKwF,WAAW0M,MAAM2F,EAAEgpC,MAAMI,YAAY1gD,GAAG,OAAOP,GAAG+hD,YAAY,SAAS3zC,EAAEpO,EAAEJ,GAAG,IAAIyD,EAAEwU,EAAE4kC,MAAMC,WAAWtuC,GAAG,GAAG/K,EAAE,CAAC,IAAI9C,EAAIzB,EAAEuE,EAAE,GAAGxC,EAAEwC,EAAE,GAAG,OAA6C9C,GAAtCX,EAAEiY,EAAE4kC,MAAMmF,uBAAuB9iD,EAAEc,IAAO4F,WAAW0M,MAAM2F,EAAEgpC,MAAMI,aAAcpgD,GAAGb,EAAIO,EAAE4E,KAAK,KAAK,OAAOvF,IAAIu9C,eAAe,CAACT,WAAW,CAAC6E,KAAK,SAASnzC,EAAEpO,EAAEJ,GAAG,OAAOwO,GAAG,IAAI,OAAO,MAAM,OAAO,IAAI,UAAU,IAAI/K,EAAE,OAAoDA,EAA7CwU,EAAEgpC,MAAMG,6BAA6B3yC,KAAKzO,GAAKA,GAAGyD,EAAEzD,EAAE4F,WAAW0M,MAAM2F,EAAEgpC,MAAME,cAAiB19C,EAAE,GAAGmK,QAAQ,WAAW,KAAK5N,EAAK,IAAI,SAAS,MAAM,QAAQA,EAAE,MAAMoiD,KAAK,SAAS5zC,EAAEpO,EAAEJ,GAAG,OAAOwO,GAAG,IAAI,OAAO,OAAOE,EAAE6tC,MAAMgD,UAAU,SAAS,iBAAiB,IAAI,UAAU,IAAI97C,EAAEsgB,WAAW/jB,GAAG,IAAIyD,GAAG,IAAIA,EAAE,CAAC,IAAI9C,EAAEX,EAAE4F,WAAW0M,MAAM,2BAA2B7O,EAAE9C,EAAEA,EAAE,GAAG,EAAE,OAAO8C,EAAE,IAAI,SAAS,OAAOsgB,WAAW/jB,GAAG,QAAQA,EAAE,IAAI,SAASkpB,QAAQ,SAAS1a,EAAEpO,EAAEJ,GAAG,GAAG,GAAGR,EAAE,OAAOgP,GAAG,IAAI,OAAO,MAAM,SAAS,IAAI,UAAU,IAAI/K,EAAEzD,EAAE4F,WAAW0M,MAAM,0BAA0B,OAAS7O,EAAEA,EAAE,GAAG,IAAI,EAAE,IAAI,SAAS,OAAOrD,EAAEyK,MAAMw3C,KAAK,EAAEt+B,WAAW/jB,IAAI,EAAE,GAAG,iBAAiBqjB,SAAS,IAAIU,WAAW/jB,GAAG,IAAI,SAAS,OAAOwO,GAAG,IAAI,OAAO,MAAM,UAAU,IAAI,UAAmB,IAAI,SAAS,OAAOxO,KAAK+hD,SAAS,WAAW,GAAGviD,GAAGkP,EAAE6tC,MAAM6C,gBAAgBnnC,EAAE+lC,MAAMuD,eAAetpC,EAAE+lC,MAAMuD,eAAe/3C,OAAOyO,EAAE+lC,MAAMC,eAAe,IAAI,IAAIzvC,EAAE,EAAEA,EAAEyJ,EAAE+lC,MAAMuD,eAAe75C,OAAO8G,KAAK,WAAW,IAAIpO,EAAE6X,EAAE+lC,MAAMuD,eAAe/yC,GAAGyJ,EAAEslC,eAAeT,WAAW18C,GAAG,SAASoO,EAAExO,EAAEW,GAAG,OAAO6N,GAAG,IAAI,OAAO,MAAM,YAAY,IAAI,UAAU,OAAOtP,EAAEc,KAAKyD,GAAGvE,EAAEc,GAAGy9C,eAAer9C,KAAKqD,EAAE,UAAUgL,KAAKrO,GAAG,EAAE,EAAElB,EAAEc,GAAGy9C,eAAer9C,GAAGwN,QAAQ,QAAQ,IAAI,IAAI,SAAS,IAAIjO,GAAE,EAAG,OAAOS,EAAEkiD,OAAO,EAAEliD,EAAEsH,OAAO,IAAI,IAAI,YAAY/H,GAAG,2BAA2B8O,KAAK9N,GAAG,MAAM,IAAI,OAAO,IAAI,QAAQ+N,EAAE6tC,MAAM4C,WAAWjgD,EAAEc,GAAGy9C,eAAer9C,KAAKqD,GAAG,EAAE9C,IAAIA,EAAE,GAAGhB,GAAG,SAAS8O,KAAK9N,GAAG,MAAM,IAAI,OAAOhB,GAAG,aAAa8O,KAAK9N,GAAG,MAAM,IAAI,SAAShB,GAAG,aAAa8O,KAAK9N,GAAG,OAAOhB,IAAIT,EAAEc,GAAGy9C,eAAer9C,GAAG,IAAIO,EAAE,KAAKzB,EAAEc,GAAGy9C,eAAer9C,KAAvmB,GAA+mB,IAAQoO,EAAE,EAAEA,EAAEyJ,EAAE+lC,MAAMsD,OAAO55C,OAAO8G,KAAK,WAAW,IAAIpO,EAAE6X,EAAE+lC,MAAMsD,OAAO9yC,GAAGyJ,EAAEslC,eAAeT,WAAW18C,GAAG,SAASoO,EAAExO,EAAEW,GAAG,OAAO6N,GAAG,IAAI,OAAO,OAAOpO,EAAE,IAAI,UAAU,IAAIT,EAAE,GAAGsY,EAAEgpC,MAAMG,6BAA6B3yC,KAAK9N,GAAGhB,EAAEgB,MAAM,CAAC,IAAIzB,EAAE+B,EAAE,CAACshD,MAAM,eAAeC,KAAK,iBAAiBC,KAAK,qBAAqBC,MAAM,iBAAiBC,IAAI,iBAAiBC,MAAM,sBAAsB,YAAYn0C,KAAK9N,GAAGzB,EAAE+B,EAAEN,KAAK8C,EAAExC,EAAEN,GAAGM,EAAEshD,MAAMtqC,EAAEgpC,MAAMC,MAAMzyC,KAAK9N,GAAGzB,EAAE,OAAO+Y,EAAEimC,OAAO2E,SAASliD,GAAG4E,KAAK,KAAK,IAAI,YAAYkJ,KAAK9N,KAAKzB,EAAE+B,EAAEshD,OAAO5iD,GAAGT,GAAGyB,GAAGiF,WAAW0M,MAAM2F,EAAEgpC,MAAME,aAAa,GAAGvzC,QAAQ,WAAW,KAAK,OAAO,GAAGpO,GAAG,IAAIG,EAAEyF,MAAM,KAAKsC,SAAS/H,GAAG,MAAMA,EAAE,IAAI,SAAS,OAAO,GAAGH,EAAE,IAAImB,EAAEyE,MAAM,KAAKsC,SAAS/G,EAAEA,EAAEyE,MAAM,OAAOS,MAAM,EAAE,GAAGN,KAAK,MAAM,IAAI5E,EAAEyE,MAAM,KAAKsC,SAAS/G,GAAG,OAAO,GAAGnB,EAAE,MAAM,QAAQ,IAAImB,EAAEiN,QAAQ,OAAO,KAAKA,QAAQ,gBAAgB,IAAI,MAAryB,KAAgzBk1C,MAAM,CAACC,UAAU,SAASv0C,GAAG,OAAOA,EAAEZ,QAAQ,UAAS,SAASY,EAAEpO,GAAG,OAAOA,EAAE4iD,kBAAiBC,aAAa,SAASz0C,GAAG,IAAIpO,EAAE,6CAA6C,OAAOZ,GAAGkP,EAAE6tC,MAAM4C,YAAYzwC,EAAE6tC,MAAM8C,YAAYj/C,GAAG,cAAc,IAAI0R,OAAO,KAAK1R,EAAE,KAAK,KAAKqO,KAAKD,IAAI00C,YAAY,SAAS10C,GAAG,GAAGE,EAAE6tC,MAAMkD,cAAcjxC,GAAG,MAAM,CAACE,EAAE6tC,MAAMkD,cAAcjxC,IAAG,GAAI,IAAI,IAAIpO,EAAE,CAAC,GAAG,SAAS,MAAM,KAAK,KAAKJ,EAAE,EAAEyD,EAAErD,EAAEsH,OAAOjE,EAAEzD,EAAEA,IAAI,CAAC,IAAIW,EAAE,GAAGA,EAAE,IAAIX,EAAEwO,EAAEpO,EAAEJ,GAAGwO,EAAEZ,QAAQ,OAAM,SAASY,GAAG,OAAOA,EAAEw0C,iBAAgB1jD,EAAE+8C,SAAS3tC,EAAE6tC,MAAMiD,cAAc30C,MAAMlK,IAAI,OAAO+N,EAAE6tC,MAAMkD,cAAcjxC,GAAG7N,EAAE,CAACA,GAAE,GAAI,MAAM,CAAC6N,GAAE,KAAM0vC,OAAO,CAAC2E,SAAS,SAASr0C,GAAG,IAAIpO,EAAqF,OAAOoO,EAAEA,EAAEZ,QAA5F,oCAAsG,SAASY,EAAEpO,EAAEJ,EAAEyD,GAAG,OAAOrD,EAAEA,EAAEJ,EAAEA,EAAEyD,EAAEA,MAAIrD,EAAxG,4CAA4GsB,KAAK8M,IAAK,CAAC6U,SAASjjB,EAAE,GAAG,IAAIijB,SAASjjB,EAAE,GAAG,IAAIijB,SAASjjB,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI6hD,eAAe,SAASzzC,GAAG,OAAO,GAAGA,GAAG,qDAAqDC,KAAKD,IAAI20C,YAAY,SAAS30C,GAAG,MAAM,kBAAkBC,KAAKD,GAAG,MAAM,kHAAkHC,KAAKD,GAAG,GAAG,MAAM40C,eAAe,SAAS50C,GAAG,IAAIpO,EAAEoO,GAAGA,EAAE60C,QAAQz9C,WAAWiI,cAAc,MAAM,2JAA2JY,KAAKrO,GAAG,SAAS,UAAUqO,KAAKrO,GAAG,YAAY,UAAUqO,KAAKrO,GAAG,YAAY,aAAaqO,KAAKrO,GAAG,QAAQ,aAAaqO,KAAKrO,GAAG,kBAAkB,SAAS8mB,SAAS,SAAS1Y,EAAEpO,GAAGoO,EAAE01B,UAAU11B,EAAE01B,UAAUof,IAAIljD,GAAGoO,EAAE+0C,YAAY/0C,EAAE+0C,UAAU77C,OAAO,IAAI,IAAItH,GAAGmkB,YAAY,SAAS/V,EAAEpO,GAAGoO,EAAE01B,UAAU11B,EAAE01B,UAAUzf,OAAOrkB,GAAGoO,EAAE+0C,UAAU/0C,EAAE+0C,UAAU39C,WAAWgI,QAAQ,IAAIkE,OAAO,UAAU1R,EAAEgF,MAAM,KAAKG,KAAK,KAAK,UAAU,MAAM,OAAOi+C,iBAAiB,SAASh1C,EAAExO,EAAEW,EAAEhB,GAAG,SAASsB,EAAEuN,EAAExO,GAAG,SAASW,IAAIq6C,GAAG/iC,EAAEwkC,iBAAiBjuC,EAAE,UAAU,QAAQ,IAAIrP,EAAE,EAAE,GAAG,GAAGK,EAAEL,EAAE8C,EAAEskB,IAAI/X,EAAExO,OAAO,CAAC,IAA80BuO,EAA10BysC,GAAE,EAAG,GAAG,mBAAmBvsC,KAAKzO,IAAI,IAAIiY,EAAEurC,iBAAiBh1C,EAAE,aAAawsC,GAAE,EAAG/iC,EAAEwkC,iBAAiBjuC,EAAE,UAAUyJ,EAAEimC,OAAOkF,eAAe50C,MAAM7O,EAAE,CAAC,GAAG,WAAWK,GAAG,eAAeiY,EAAEurC,iBAAiBh1C,EAAE,aAAa5I,WAAWiI,cAAc,CAAC,IAAItO,EAAEiP,EAAE4iB,cAAcrN,WAAW9L,EAAEurC,iBAAiBh1C,EAAE,oBAAoB,IAAIuV,WAAW9L,EAAEurC,iBAAiBh1C,EAAE,uBAAuB,IAAIuV,WAAW9L,EAAEurC,iBAAiBh1C,EAAE,gBAAgB,IAAIuV,WAAW9L,EAAEurC,iBAAiBh1C,EAAE,mBAAmB,GAAG,OAAO7N,IAAIpB,EAAE,GAAG,UAAUS,GAAG,eAAeiY,EAAEurC,iBAAiBh1C,EAAE,aAAa5I,WAAWiI,cAAc,CAAC,IAAI7M,EAAEwN,EAAEi1C,aAAa1/B,WAAW9L,EAAEurC,iBAAiBh1C,EAAE,qBAAqB,IAAIuV,WAAW9L,EAAEurC,iBAAiBh1C,EAAE,sBAAsB,IAAIuV,WAAW9L,EAAEurC,iBAAiBh1C,EAAE,iBAAiB,IAAIuV,WAAW9L,EAAEurC,iBAAiBh1C,EAAE,kBAAkB,GAAG,OAAO7N,IAAIK,GAASuN,EAAErP,EAAEsP,KAAK/K,EAAErD,EAAEsjD,iBAAiBl1C,EAAE,MAAMtP,EAAEsP,GAAG0xC,cAAchhD,EAAEsP,GAAG0xC,cAAchhD,EAAEsP,GAAG0xC,cAAc9/C,EAAEsjD,iBAAiBl1C,EAAE,MAAM,gBAAgBxO,IAAIA,EAAE,mBAAoE,MAAlDb,EAAE,IAAIK,GAAG,WAAWQ,EAAEuO,EAAEi1C,iBAAiBxjD,GAAGuO,EAAEvO,KAAY,OAAOb,KAAKA,EAAEqP,EAAE3D,MAAM7K,IAAIW,IAAI,GAAG,SAASxB,GAAG,6BAA6BsP,KAAKzO,GAAG,CAAC,IAAIV,EAAE2B,EAAEuN,EAAE,aAAa,UAAUlP,GAAG,aAAaA,GAAG,YAAYmP,KAAKzO,MAAMb,EAAE8C,EAAEuM,GAAG0J,WAAWlY,GAAG,MAAM,OAAOb,EAAE,IAAIA,EAAE,GAAG8Y,EAAE4kC,MAAMC,WAAW98C,GAAG,CAAC,IAAIg7C,EAAEh7C,EAAET,EAAE0Y,EAAE4kC,MAAMG,QAAQhC,GAAGr6C,IAAI8C,IAAI9C,EAAEsX,EAAEurC,iBAAiBh1C,EAAEyJ,EAAE6qC,MAAMI,YAAY3jD,GAAG,KAAK0Y,EAAEslC,eAAeT,WAAWv9C,KAAKoB,EAAEsX,EAAEslC,eAAeT,WAAWv9C,GAAG,UAAUiP,EAAE7N,IAAIxB,EAAE8Y,EAAE4kC,MAAMqF,aAAalH,EAAEr6C,QAAQ,GAAGsX,EAAEslC,eAAeT,WAAW98C,GAAG,CAAC,IAAIgB,EAAEuN,EAA6C,eAA3CvN,EAAEiX,EAAEslC,eAAeT,WAAW98C,GAAG,OAAOwO,MAAqBD,EAAEtN,EAAEuN,EAAEyJ,EAAE6qC,MAAMI,YAAYliD,GAAG,IAAIiX,EAAEimC,OAAO+D,eAAe1zC,IAAI0J,EAAE4kC,MAAM2E,UAAUxhD,KAAKuO,EAAE0J,EAAE4kC,MAAM2E,UAAUxhD,GAAG,KAAKb,EAAE8Y,EAAEslC,eAAeT,WAAW98C,GAAG,UAAUwO,EAAED,GAAG,IAAI,SAASE,KAAKtP,GAAG,GAAGD,EAAEsP,IAAItP,EAAEsP,GAAGuwC,OAAO9mC,EAAE6qC,MAAMG,aAAajjD,GAAG,GAAG,oBAAoByO,KAAKzO,GAAG,IAAIb,EAAEqP,EAAEm1C,UAAU3jD,GAAG,MAAMV,GAAGH,EAAE,OAAOA,EAAEqP,EAAEo1C,aAAa5jD,QAAQb,EAAE8B,EAAEuN,EAAEyJ,EAAE6qC,MAAMI,YAAYljD,GAAG,IAAI,OAAOiY,EAAEimC,OAAO+D,eAAe9iD,KAAKA,EAAE,GAAGuP,EAAE8xC,OAAO,GAAGpd,QAAQzK,IAAI,OAAO34B,EAAE,KAAKb,GAAGA,GAAGs9C,iBAAiB,SAASjuC,EAAExO,EAAEyD,EAAE9C,EAAEhB,GAAG,IAAIsB,EAAEjB,EAAE,GAAG,WAAWA,EAAEL,EAAEkkD,UAAUlkD,EAAEkkD,UAAU,SAASlkD,EAAEmkD,WAAWrgD,EAAE,SAAS9D,EAAEmkD,UAAU1jD,EAAEs1B,SAASjyB,EAAE9D,EAAEokD,gBAAgB3jD,EAAEs1B,SAAS/1B,EAAEokD,eAAetgD,QAAQ,GAAGwU,EAAEslC,eAAeT,WAAW98C,IAAI,cAAciY,EAAEslC,eAAeT,WAAW98C,GAAG,OAAOwO,GAAGyJ,EAAEslC,eAAeT,WAAW98C,GAAG,SAASwO,EAAE/K,GAAGxC,EAAE,YAAYwC,EAAEvE,EAAEsP,GAAGivC,eAAez9C,OAAO,CAAC,GAAGiY,EAAE4kC,MAAMC,WAAW98C,GAAG,CAAC,IAAIb,EAAEa,EAAEg7C,EAAE/iC,EAAE4kC,MAAMG,QAAQh9C,GAAGW,EAAEA,GAAGsX,EAAEurC,iBAAiBh1C,EAAEwsC,GAAGv3C,EAAEwU,EAAE4kC,MAAMsF,YAAYhjD,EAAEsE,EAAE9C,GAAGX,EAAEg7C,EAAE,GAAG/iC,EAAEslC,eAAeT,WAAW98C,KAAKyD,EAAEwU,EAAEslC,eAAeT,WAAW98C,GAAG,SAASwO,EAAE/K,GAAGzD,EAAEiY,EAAEslC,eAAeT,WAAW98C,GAAG,OAAOwO,IAAIvN,EAAEgX,EAAE6qC,MAAMI,YAAYljD,GAAG,GAAG,GAAGR,EAAE,IAAIgP,EAAE3D,MAAM5J,GAAGwC,EAAE,MAAMlE,GAAGmP,EAAE8xC,OAAOpd,QAAQzK,IAAI,6BAA6Bl1B,EAAE,UAAUxC,EAAE,UAAU/B,EAAEsP,IAAItP,EAAEsP,GAAGuwC,OAAO9mC,EAAE6qC,MAAMG,aAAajjD,GAAGwO,EAAEw1C,aAAahkD,EAAEyD,GAAG+K,EAAE3D,MAAM5J,GAAGwC,EAAEiL,EAAE8xC,OAAO,GAAGpd,QAAQzK,IAAI,OAAO34B,EAAE,KAAKiB,EAAE,MAAMwC,GAAG,MAAM,CAACxC,EAAEwC,IAAIk6C,oBAAoB,SAASnvC,GAAG,SAASpO,EAAEA,GAAG,OAAO2jB,WAAW9L,EAAEurC,iBAAiBh1C,EAAEpO,IAAI,IAAIJ,EAAE,GAAG,IAAIR,GAAGkP,EAAE6tC,MAAM4C,YAAYzwC,EAAE6tC,MAAM8C,WAAWngD,EAAEsP,GAAGuwC,MAAM,CAAC,IAAIt7C,EAAE,CAACwgD,UAAU,CAAC7jD,EAAE,cAAcA,EAAE,eAAe8jD,MAAM,CAAC9jD,EAAE,UAAU+jD,MAAM,CAAC/jD,EAAE,UAAUgkD,MAAM,IAAIhkD,EAAE,SAAS,CAACA,EAAE,SAASA,EAAE,UAAU,CAACA,EAAE,UAAUA,EAAE,WAAWikD,OAAO,CAACjkD,EAAE,WAAW,EAAE,IAAI6B,EAAEumB,KAAKtpB,EAAEsP,GAAGivC,gBAAe,SAASjvC,GAAG,cAAcC,KAAKD,GAAGA,EAAE,YAAY,UAAUC,KAAKD,GAAGA,EAAE,QAAQ,WAAWC,KAAKD,KAAKA,EAAE,UAAU/K,EAAE+K,KAAKxO,GAAGwO,EAAE,IAAI/K,EAAE+K,GAAGjJ,KAAK,KAAK,YAAY9B,EAAE+K,WAAU,CAAC,IAAI7N,EAAEhB,EAAEsC,EAAEumB,KAAKtpB,EAAEsP,GAAGivC,gBAAe,SAASr9C,GAAG,OAAOO,EAAEzB,EAAEsP,GAAGivC,eAAer9C,GAAG,yBAAyBA,GAAGT,EAAEgB,GAAE,IAAK,IAAInB,GAAG,YAAYY,IAAIA,EAAE,eAAeJ,GAAGI,EAAEO,EAAE,SAAQhB,IAAIK,EAAE,cAAcL,EAAE,IAAIK,GAAGiY,EAAEwkC,iBAAiBjuC,EAAE,YAAYxO,KAAKiY,EAAE4kC,MAAMkF,WAAW9pC,EAAEslC,eAAewE,WAAWrzC,EAAEyxC,KAAK,SAAS3xC,EAAEpO,EAAEJ,GAAG,IAAIW,EAAE8C,EAAE,OAAO+K,EAAE7O,EAAE6O,GAAGvM,EAAEumB,KAAKha,GAAE,SAASA,EAAE7O,GAAG,GAAGT,EAAES,KAAK8D,GAAGiL,EAAEmxB,KAAKlgC,GAAGK,IAAIyD,EAAE9C,IAAI8C,IAAI9C,EAAE+N,EAAEmxC,IAAI2D,iBAAiB7jD,EAAES,QAAQ,CAAC,IAAIa,EAAEyN,EAAEmxC,IAAIpD,iBAAiB98C,EAAES,EAAEJ,GAAG,cAAciB,EAAE,IAAIyN,EAAEmxC,IAAIlC,oBAAoBh+C,GAAGgB,EAAEM,MAAKN,GAAG,IAAIuD,EAAE,SAAFA,IAAa,SAASsK,IAAI,OAAOvN,EAAEwW,EAAE6sC,SAAS,KAAKnlD,EAAE,SAASwB,IAAI,SAAS6N,EAAEA,GAAG,SAASxN,EAAEwN,EAAEpO,GAAG,IAAIJ,EAAEyD,EAAE9C,EAAE8C,EAAEvE,EAAEuE,EAAE,OAAOnE,EAAEqK,QAAQ6E,IAAIxO,EAAEwO,EAAE,IAAIlP,EAAEqK,QAAQ6E,EAAE,KAAK,SAASC,KAAKD,EAAE,KAAKlP,EAAEm/C,WAAWjwC,EAAE,KAAKyJ,EAAEgpC,MAAMC,MAAMzyC,KAAKD,EAAE,IAAItP,EAAEsP,EAAE,IAAIlP,EAAE+8C,SAAS7tC,EAAE,MAAMyJ,EAAEgpC,MAAMC,MAAMzyC,KAAKD,EAAE,KAAKlP,EAAEqK,QAAQ6E,EAAE,OAAO7N,EAAEP,EAAEoO,EAAE,GAAGwsC,EAAExsC,EAAE,GAAGvN,EAAE0gC,UAAUnzB,EAAE,KAAK/K,IAAIvE,EAAEsP,EAAE,MAAMxO,EAAEwO,EAAEpO,IAAIO,EAAEA,GAAGM,EAAEkkC,QAAQ7lC,EAAEm/C,WAAWz+C,KAAKA,EAAEA,EAAEX,KAAKM,EAAE2M,EAAE0vC,IAAI18C,EAAEm/C,WAAWv/C,KAAKA,EAAEA,EAAEG,KAAKM,EAAE2M,EAAE0vC,IAAI,CAACh8C,GAAG,EAAEW,EAAEzB,GAAG,SAASM,EAAEgP,EAAEpO,GAAG,IAAIJ,EAAEyD,EAAE,OAAOA,GAAGrD,GAAG,KAAKwF,WAAWiI,cAAcD,QAAQ,YAAW,SAASY,GAAG,OAAOxO,EAAEwO,EAAE,MAAKxO,IAAIA,EAAEiY,EAAEimC,OAAOiF,YAAY30C,IAAI,CAAC/K,EAAEzD,GAAG,SAAS87C,IAAI,IAAIttC,EAAE,CAAC+1C,SAAS5kD,EAAE8gD,YAAYzgD,EAAEujC,KAAKrrB,SAASD,EAAEurC,iBAAiB7jD,EAAE,YAAYinB,SAAS3O,EAAEurC,iBAAiB7jD,EAAE,aAAa8D,EAAE+K,EAAE0J,WAAWklC,EAAEoH,cAAch2C,EAAE+1C,WAAWnH,EAAEqH,WAAW9jD,EAAE6N,EAAEoY,WAAWw2B,EAAEsH,aAAatH,EAAEqH,WAAWj2C,EAAE+1C,SAASnH,EAAEoH,aAAah2C,EAAE0J,SAASklC,EAAEsH,aAAal2C,EAAEoY,SAAS,IAAI3lB,EAAE,IAAI9B,EAAE,GAAG,GAAGwB,GAAG8C,EAAEtE,EAAEwlD,OAAOvH,EAAEwH,WAAWzlD,EAAE0lD,iBAAiBzH,EAAE0H,qBAAqB3lD,EAAE4lD,kBAAkB3H,EAAE4H,0BAA0B,CAAC,IAAIhK,EAAE97C,EAAES,GAAGo/C,MAAM/+C,EAAEilD,gBAAgB,6BAA6B,QAAQjlD,EAAEmK,cAAc,OAAOuE,EAAEmxB,KAAKmb,GAAGxsC,EAAE+1C,SAASx5C,YAAYiwC,GAAG/4C,EAAEumB,KAAK,CAAC,WAAW,YAAY,cAAa,SAASha,EAAEpO,GAAGsO,EAAEmxC,IAAIpD,iBAAiBzB,EAAE56C,EAAE,aAAYsO,EAAEmxC,IAAIpD,iBAAiBzB,EAAE,WAAWxsC,EAAE0J,UAAUxJ,EAAEmxC,IAAIpD,iBAAiBzB,EAAE,WAAWxsC,EAAEoY,UAAUlY,EAAEmxC,IAAIpD,iBAAiBzB,EAAE,YAAY,eAAe/4C,EAAEumB,KAAK,CAAC,WAAW,WAAW,QAAQ,YAAY,YAAY,WAAU,SAASha,EAAEpO,GAAGsO,EAAEmxC,IAAIpD,iBAAiBzB,EAAE56C,EAAEa,EAAE,QAAOyN,EAAEmxC,IAAIpD,iBAAiBzB,EAAE,cAAc/5C,EAAE,MAAM9B,EAAE0lD,iBAAiBzH,EAAE0H,sBAAsB/gC,WAAW9L,EAAEurC,iBAAiBxI,EAAE,QAAQ,MAAK,KAAM,GAAG/5C,EAAE9B,EAAE4lD,kBAAkB3H,EAAE4H,uBAAuBjhC,WAAW9L,EAAEurC,iBAAiBxI,EAAE,SAAS,MAAK,KAAM,GAAG/5C,EAAE9B,EAAEwlD,OAAOvH,EAAEwH,YAAY7gC,WAAW9L,EAAEurC,iBAAiBxI,EAAE,iBAAiB,GAAG/5C,EAAEuN,EAAE+1C,SAASW,YAAYlK,GAAG,OAAO,OAAOoC,EAAE+H,UAAU/H,EAAE+H,QAAQphC,WAAW9L,EAAEurC,iBAAiBxjD,EAAEujC,KAAK,cAAc,IAAI,OAAO6Z,EAAEgI,SAAShI,EAAEgI,OAAOrhC,WAAW3jB,EAAEytC,YAAY,IAAIuP,EAAEiI,OAAOthC,WAAW3jB,EAAEgiC,aAAa,KAAKjjC,EAAEgmD,QAAQ/H,EAAE+H,QAAQhmD,EAAEimD,OAAOhI,EAAEgI,OAAOjmD,EAAEkmD,OAAOjI,EAAEiI,OAAO32C,EAAE8xC,OAAO,GAAGpd,QAAQzK,IAAI,gBAAgBllB,KAAKE,UAAUxU,GAAGQ,GAAGR,EAAE,GAAG8B,EAAE++C,OAAO,IAAI1zC,EAAE,IAAIrL,EAAE++C,MAAM3gD,KAAKkP,EAAEA,GAAG,MAAMwpB,GAAG2F,YAAW,WAAW,MAAM3F,IAAG,GAAG,GAAG,WAAWngB,EAAE,CAAC,IAAI1T,EAAEwI,EAAE0vC,EAAE7wC,EAAE,OAAOkD,KAAKxN,EAAEqkD,MAAM,OAAO,MAAMzqC,EAAEkJ,WAAW9iB,EAAEu6B,SAAS,EAAEv6B,EAAE4iD,UAAUvkD,EAAEs8C,UAAU36C,EAAE4iD,YAAYvkD,EAAEu8C,OAAO56C,EAAE4iD,YAAY5iD,EAAE4iD,UAAU5iD,EAAE4iD,UAAU,IAAI5iD,EAAE4iD,UAAoCzH,GAA1Bl4C,EAAEjD,EAAE4iD,UAAU,SAASt4C,IAAOtJ,EAAEtC,GAAGuY,WAAW3M,EAAEsC,eAAegN,GAAG5Z,EAAE4iD,UAAU,MAAM3/C,EAAEwK,EAAE6tC,MAAMmD,aAAahxC,EAAE6tC,MAAM,iBAAiBhxC,IAAImB,EAAEgC,EAAE6tC,MAAMmD,aAAahxC,EAAE6tC,MAAM,kBAAkB,SAAShxC,EAAE,MAAM,UAAU6wC,EAAEn6C,EAAEtC,GAAG67B,SAASjwB,EAAEsC,eAAegN,GAAG1b,EAAE,CAACiiC,OAAO,CAAC+b,mBAAkB,EAAGR,WAAWz4C,EAAE04C,aAAa14C,EAAEw4C,SAASN,EAAEiB,SAAS,GAAGlY,OAAOlkC,EAAEkkC,OAAOmY,WAAW,CAACuG,UAAU5iD,EAAE4iD,UAAUC,UAAUv4C,EAAEw4C,eAAer3C,IAAIgc,QAAQ/oB,GAAG+O,EAAE8xC,OAAOpd,QAAQzK,IAAI,6BAA6Bx5B,EAAEiiC,OAAOzhC,QAAQ,GAAG,YAAYiY,EAAE,CAAC,IAAI1Y,EAAES,GAAGw+C,gBAAgB,YAAYl8C,EAAEg5C,QAAQt7C,EAAEsB,EAAEikC,OAAO,SAAShmC,EAAES,GAAG4lD,KAAKz6C,UAAU5L,EAAES,GAAG4lD,KAAKz6C,QAAQ,QAAQ,WAAW5L,EAAES,GAAG4lD,KAAKn8B,aAAalqB,EAAES,GAAG4lD,KAAKn8B,WAAW,WAAWlqB,EAAES,GAAG4lD,KAAKzH,MAAK,EAAG5+C,EAAES,GAAG4lD,KAAKvF,MAAM,KAAK9gD,EAAES,GAAG4lD,KAAKngB,SAAS,KAAK2W,EAAE5W,eAAelkC,EAAEkkC,OAAO4W,EAAEpa,iBAAiB1gC,EAAE0gC,SAAS1gC,EAAEgB,EAAE0zB,OAAO,GAAGz2B,EAAES,GAAG4lD,KAAKtkD,GAAG,IAAI0W,EAAE1V,EAAE0zB,QAAO,EAAG,GAAGz2B,EAAES,GAAGw+C,iBAAiB,IAAI,IAAIpB,KAAKplC,EAAE,GAAG,YAAYolC,EAAE,CAAC,IAAIE,EAAEtlC,EAAEolC,GAAGJ,WAAWhlC,EAAEolC,GAAGJ,WAAWhlC,EAAEolC,GAAGH,aAAajlC,EAAEolC,GAAGL,SAAS/kC,EAAEolC,GAAGL,SAASO,EAAE39C,EAAE2/C,cAAclD,KAAKpkC,EAAEolC,GAAG5X,OAAOlkC,EAAEkkC,QAAQz2B,EAAE8xC,OAAOpd,QAAQzK,IAAI,4BAA4BokB,EAAE,MAAMtpC,KAAKE,UAAUgE,EAAEolC,IAAIp9C,GAAGR,EAAEwY,OAAO,GAAG,UAAUC,EAAE,CAAyY,IAAI,IAAI+J,KAA1YziB,EAAES,GAAGw+C,kBAAoC,IAAnBj/C,EAAES,GAAGo+C,cAAmBpmC,EAAEzY,EAAES,GAAGw+C,iBAAiBl8C,EAAEumB,KAAKyzB,GAAE,SAASztC,EAAEpO,GAAG,GAAG0R,OAAO,IAAImG,EAAE+lC,MAAMsD,OAAO/7C,KAAK,OAAO,KAAKkJ,KAAKD,GAAG,CAAC,IAAIxO,EAAEgB,EAAEZ,GAAE,GAAIO,EAAEX,EAAE,GAAGL,EAAEK,EAAE,GAAGd,EAAEc,EAAE,GAAG,GAAGiY,EAAEgpC,MAAMC,MAAMzyC,KAAK9N,GAAG,CAAC,IAAI,IAAIM,EAAE,CAAC,MAAM,QAAQ,QAAQ9B,EAAE8Y,EAAEimC,OAAO2E,SAASliD,GAAGq6C,EAAE97C,EAAE+Y,EAAEimC,OAAO2E,SAAS3jD,GAAGuE,EAAElE,EAAE,EAAEA,EAAE0B,EAAEyG,OAAOnI,IAAI,CAAC,IAAI0C,EAAE,CAAC9C,EAAEI,IAAII,GAAGsC,EAAEyC,KAAK/E,GAAGq7C,IAAIv3C,GAAGxB,EAAEyC,KAAKs2C,EAAEz7C,IAAI08C,EAAEztC,EAAEvN,EAAE1B,IAAI0C,SAASg6C,EAAEztC,QAAoBytC,EAAE,CAAC,IAAIh4C,EAAEjD,EAAEi7C,EAAEt6B,IAAID,EAAEzd,EAAE,GAAG2I,EAAE3I,EAAE,GAAGuhD,EAAEvhD,EAAE,GAAG0d,EAAE1J,EAAE6qC,MAAMC,UAAUphC,GAAG,IAAI8jC,EAAExtC,EAAE4kC,MAAMG,QAAQr7B,GAAG+jC,GAAE,EAAG,GAAGxmD,EAAES,GAAGo/C,OAAO,UAAU0G,IAA+B,IAA5BxtC,EAAE6qC,MAAMI,YAAYuC,GAAG,IAASxtC,EAAEslC,eAAeT,WAAW2I,KAAKhiD,EAAE,EAAExC,EAAE6J,UAAUrH,GAAG,OAAOxC,EAAE6J,SAAS,SAAS7J,EAAE6J,SAAS7J,EAAEmoB,aAAa3lB,GAAG,WAAWxC,EAAEmoB,aAAa,iBAAiB3a,KAAKkT,KAAK6jC,GAAG,IAAI9jC,IAAI8jC,EAAE,GAAGvkD,EAAEg/C,cAActoC,GAAGA,EAAEgK,IAAI6jC,IAAI/hD,IAAI+hD,EAAE7tC,EAAEgK,GAAG+6B,SAAS/kC,EAAEgK,GAAG07B,UAAUqI,EAAExmD,EAAES,GAAGu9C,uBAAuBuI,IAAIxtC,EAAE4kC,MAAMC,WAAWn7B,GAAG6jC,IAAI/hD,GAAGiiD,EAAEztC,EAAEurC,iBAAiB7jD,EAAE8lD,GAAGD,EAAEvtC,EAAEurC,iBAAiB7jD,EAAEgiB,EAAE+jC,IAAIA,EAAEztC,EAAE4kC,MAAM2E,UAAUiE,GAAG,GAAGD,IAAI/hD,IAAI+hD,EAAEvtC,EAAEurC,iBAAiB7jD,EAAEgiB,IAAI,IAAIgkC,EAAEC,EAAEC,EAAEC,GAAE,EAAG,GAAYN,GAATG,EAAEnmD,EAAEmiB,EAAE6jC,IAAO,GAAGK,EAAEF,EAAE,GAAYjkC,GAATikC,EAAEnmD,EAAEmiB,EAAED,IAAO,GAAG9T,QAAQ,eAAc,SAASY,EAAEpO,GAAG,OAAO0lD,EAAE1lD,EAAE,MAAKwlD,EAAED,EAAE,GAAGH,EAAEzhC,WAAWyhC,IAAI,EAAE9jC,EAAEqC,WAAWrC,IAAI,EAAE,MAAMkkC,IAAI,0BAA0Bn3C,KAAKkT,IAAID,GAAG,IAAIkkC,EAAE,MAAM,SAASn3C,KAAKkT,IAAID,GAAG,IAAIkkC,EAAE,IAAI,qBAAqBn3C,KAAKkT,KAAKD,EAAEA,EAAE,IAAI,IAAIkkC,EAAE,KAAK,QAAQn3C,KAAKq3C,GAAGF,EAAEC,OAAO,GAAGA,IAAID,GAAG,IAAIJ,EAAE,GAAG,IAAI9jC,EAAEkkC,EAAEC,MAAM,CAACllD,EAAEA,GAAGm7C,IAAI,IAAIiK,EAAE,oDAAoDt3C,KAAKkT,IAAI,KAAKlT,KAAKkT,IAAI,MAAMA,EAAE,IAAI,IAAI,OAAOkkC,GAAG,IAAI,IAAIL,GAAG,MAAMO,EAAEplD,EAAEkkD,iBAAiBlkD,EAAEokD,kBAAkB,MAAM,IAAI,KAAK,MAAM,QAAQS,GAAG7kD,EAAEklD,EAAE,QAAQ,OAAOD,GAAG,IAAI,IAAIJ,GAAG,GAAG,MAAMO,EAAEplD,EAAEkkD,iBAAiBlkD,EAAEokD,mBAAmB,MAAM,IAAI,KAAK,MAAM,QAAQS,GAAG,EAAE7kD,EAAEilD,EAAE,SAAS,OAAOE,GAAG,IAAI,IAAIpkC,EAAE8jC,EAAE9jC,EAAE,MAAM,IAAI,IAAIA,EAAE8jC,EAAE9jC,EAAE,MAAM,IAAI,IAAIA,GAAE8jC,EAAI,MAAM,IAAI,IAAI9jC,EAAE8jC,EAAE9jC,EAAEviB,EAAEwiB,GAAG,CAACw7B,kBAAkBuI,EAAE/I,WAAW6I,EAAE5I,aAAa4I,EAAE9I,SAASh7B,EAAE27B,SAASuI,EAAEzgB,OAAOv4B,GAAG8B,EAAE8xC,OAAOpd,QAAQzK,IAAI,oBAAoBhX,EAAE,MAAMlO,KAAKE,UAAUxU,EAAEwiB,IAAIhiB,QAAQ+O,EAAE8xC,OAAOpd,QAAQzK,IAAI,aAAa8sB,EAAE,uCAAuCtmD,EAAEupB,QAAQ/oB,EAAER,EAAEupB,UAAUzQ,EAAEimC,OAAOh3B,SAASvnB,EAAE,sBAAsBge,EAAEjZ,KAAKvF,GAAG,KAAK8B,EAAEikC,QAAQhmC,EAAES,GAAGw+C,gBAAgBh/C,EAAED,EAAES,GAAG4lD,KAAKtkD,GAAG/B,EAAES,GAAGo+C,aAAY,EAAGzxC,IAAI0vC,EAAE,GAAGttC,EAAE6tC,MAAMC,MAAM93C,KAAK,CAACiZ,EAAEpP,EAAEtN,EAAE,KAAKwW,EAAEuuC,YAA+B,IAApBt3C,EAAE6tC,MAAMsB,YAAiBnvC,EAAE6tC,MAAMsB,WAAU,EAAGt+C,MAAM+M,KAAK,IAAI3L,EAAEhB,EAAE6F,KAAKvE,EAAEgB,EAAE0zB,OAAO,GAAGjnB,EAAEm4B,SAASkV,GAAG58C,EAAE,GAAG,OAAOD,EAAES,KAAK8D,GAAGiL,EAAEmxB,KAAKlgC,GAAGokB,WAAW9iB,EAAE2gC,SAAkB,IAAV3gC,EAAEikC,OAAYjjC,EAAEijC,MAAMvlC,EAAEsB,EAAEikC,OAAM,SAAS12B,GAAGE,EAAEu3C,wBAAuB,EAAG/mD,EAAES,GAAGumD,WAAW,CAACxoB,WAAWA,WAAWlvB,EAAEuV,WAAW9iB,EAAE2gC,QAAQ/lB,KAAKrN,MAAKvN,EAAE0gC,SAAS/7B,WAAWiI,eAAe,IAAI,OAAO5M,EAAE0gC,SAAS,IAAI,MAAM,IAAI,SAAS1gC,EAAE0gC,SAASma,EAAE,MAAM,IAAI,OAAO76C,EAAE0gC,SAAS,IAAI,MAAM,QAAQ1gC,EAAE0gC,SAAS5d,WAAW9iB,EAAE0gC,WAAW,GAAW,IAATjzB,EAAE0xC,QAAqB,IAAT1xC,EAAE0xC,KAAUn/C,EAAE0gC,SAAS1gC,EAAE2gC,MAAM,GAAG3gC,EAAE0gC,UAAU5d,WAAWrV,EAAE0xC,OAAO,EAAEn/C,EAAE2gC,OAAO7d,WAAWrV,EAAE0xC,OAAO,IAAIn/C,EAAEkkC,OAAO6V,EAAE/5C,EAAEkkC,OAAOlkC,EAAE0gC,UAAU1gC,EAAE++C,QAAQ1gD,EAAEm/C,WAAWx9C,EAAE++C,SAAS/+C,EAAE++C,MAAM,MAAM/+C,EAAE28C,WAAWt+C,EAAEm/C,WAAWx9C,EAAE28C,YAAY38C,EAAE28C,SAAS,MAAM38C,EAAEmkC,WAAW9lC,EAAEm/C,WAAWx9C,EAAEmkC,YAAYnkC,EAAEmkC,SAAS,MAAMnkC,EAAE6J,UAAUrH,GAAG,OAAOxC,EAAE6J,UAAU7J,EAAE6J,QAAQ7J,EAAE6J,QAAQlF,WAAWiI,cAAc,SAAS5M,EAAE6J,UAAU7J,EAAE6J,QAAQ4D,EAAEmxC,IAAI3B,OAAOkF,eAAezjD,KAAKsB,EAAEmoB,aAAa3lB,GAAG,OAAOxC,EAAEmoB,aAAanoB,EAAEmoB,WAAWnoB,EAAEmoB,WAAWxjB,WAAWiI,eAAe5M,EAAEu8C,SAASv8C,EAAEu8C,UAAU9uC,EAAE6tC,MAAM2C,WAAWxwC,EAAE6tC,MAAM6C,eAAwB,IAAVn+C,EAAEikC,MAAWjkC,EAAE2gC,MAAMlE,WAAWlvB,EAAEvN,EAAE2gC,OAAOpzB,IAAIvM,EAAEijC,MAAMvlC,EAAEsB,EAAEikC,OAAM,SAAS9kC,EAAEJ,GAAG,OAAW,IAAJA,GAAQyX,EAAE6sC,SAAS7sC,EAAEuuC,SAASz3C,IAAG,IAAKG,EAAEu3C,wBAAuB,OAAQz3C,QAAQ,KAAKvN,EAAEikC,OAAO,OAAOjkC,EAAEikC,OAAO,eAAejjC,EAAEijC,MAAMvlC,GAAG,IAAIsC,EAAEg5C,QAAQt7C,GAAG,IAAIsB,EAAE9B,EAAEK,EAAE+O,EAAE0tC,EAAEF,EAAEhkB,EAAE7tB,UAAU,KAAKA,UAAU,GAAGlJ,GAAGiB,EAAE64C,cAAc5wC,UAAU,GAAG6K,cAAc7K,UAAU,GAAG6K,WAAWpJ,OAAOrM,EAAE+8C,SAASnyC,UAAU,GAAG6K,aAAa,GAAGzV,EAAEs8C,UAAUp2C,OAAOvE,GAAE,EAAGzB,EAAE,EAAE+O,EAAE/I,KAAKrG,EAAEqG,OAAOvE,GAAE,EAAGzB,EAAE,EAAE+O,EAAEwpB,EAAE7tB,UAAU,GAAGi8C,UAAUj8C,UAAU,GAAGsE,EAAEtE,UAAU,IAAIqE,EAAE5O,EAAE4O,GAAG,CAACwpB,GAAGkkB,EAAE/xC,UAAU,GAAG6K,YAAY7K,UAAU,GAAGlJ,EAAE+6C,EAAE7xC,UAAU,GAAG3H,SAAS2H,UAAU,GAAGvK,IAAIs8C,EAAE/xC,UAAU1K,GAAGu8C,EAAE7xC,UAAU1K,EAAE,IAAI,IAAIw8C,EAAEztC,EAAE7G,OAAO4E,EAAE,EAAE,IAAI,mBAAmBmC,KAAKwtC,KAAKh6C,EAAE64C,cAAciB,GAAG,CAAC,IAAIrvC,EAAElN,EAAE,EAAEu8C,EAAE,GAAG,IAAI,IAAIK,EAAE1vC,EAAE0vC,EAAElyC,UAAUxC,OAAO00C,IAAI98C,EAAEqK,QAAQO,UAAUkyC,MAAM,wBAAwB3tC,KAAKvE,UAAUkyC,MAAM,MAAM3tC,KAAKvE,UAAUkyC,IAAI98C,EAAE+8C,SAASnyC,UAAUkyC,KAAK98C,EAAEqK,QAAQO,UAAUkyC,IAAIL,EAAE5W,OAAOj7B,UAAUkyC,GAAG98C,EAAEm/C,WAAWv0C,UAAUkyC,MAAML,EAAE3W,SAASl7B,UAAUkyC,IAAIL,EAAEpa,SAASz3B,UAAUkyC,GAAG,IAAuIxkC,EAAnIH,EAAE,CAAC6sC,QAAQ,KAAK0B,SAAS,KAAKI,SAAS,MAA8F,OAAxFnlD,GAAGyN,EAAEqxC,UAAUtoC,EAAE6sC,QAAQ,IAAI51C,EAAEqxC,SAAQ,SAASvxC,EAAEpO,GAAGqX,EAAEuuC,SAASx3C,EAAEiJ,EAAE2uC,SAAShmD,MAAkB67C,GAAG,IAAI,SAASrkC,EAAE,SAAS,MAAM,IAAI,UAAUA,EAAE,UAAU,MAAM,IAAI,SAAS,IAAI,OAAO3V,EAAEumB,KAAKja,GAAE,SAASC,EAAEpO,GAAGlB,EAAEkB,IAAIlB,EAAEkB,GAAG8lD,aAAaG,aAAannD,EAAEkB,GAAG8lD,WAAWxoB,YAAYx+B,EAAEkB,GAAG8lD,WAAWrqC,MAAM3c,EAAEkB,GAAG8lD,WAAWrqC,cAAc3c,EAAEkB,GAAG8lD,eAAc,IAAI36C,EAAE,GAAG,OAAOtJ,EAAEumB,KAAK9Z,EAAE6tC,MAAMC,OAAM,SAAShuC,EAAEpO,GAAGA,GAAG6B,EAAEumB,KAAKpoB,EAAE,IAAG,SAASJ,EAAEW,GAAG,IAAIhB,EAAEo8C,IAAIt4C,EAAE,GAAGs4C,EAAE,OAAW,IAAJp8C,GAAQS,EAAE,GAAG8kC,QAAQvlC,IAAGo8C,IAAIt4C,IAAgB,IAAbrD,EAAE,GAAG8kC,aAAgBjjC,EAAEumB,KAAKja,GAAE,SAASvO,EAAEyD,GAAGA,IAAI9C,MAAS,IAAJo7C,GAAQz8C,EAAE+8C,SAASN,MAAM95C,EAAEumB,KAAKvmB,EAAEijC,MAAMzhC,EAAEnE,EAAE+8C,SAASN,GAAGA,EAAE,KAAI,SAASvtC,EAAEpO,GAC9v+Bd,EAAEm/C,WAAWr+C,IAAIA,EAAE,MAAK,MAAM6B,EAAEijC,MAAMzhC,EAAEnE,EAAE+8C,SAASN,GAAGA,EAAE,GAAG,KAAK,SAASE,GAAG/8C,EAAEuE,IAAIvE,EAAEuE,GAAG06C,kBAAqB,IAAJx+C,GAAQsC,EAAEumB,KAAKtpB,EAAEuE,GAAG06C,iBAAgB,SAAS3vC,EAAEpO,GAAGA,EAAEs8C,SAASt8C,EAAEw8C,gBAAerxC,EAAE7G,KAAK8J,IAAI,WAAWytC,IAAI77C,EAAE,GAAGuhC,SAAS,aAAa,SAASsa,IAAIh6C,EAAEumB,KAAKjd,GAAE,SAASiD,EAAEpO,GAAGY,EAAEZ,GAAE,MAAMqX,EAAE6sC,SAAS7sC,EAAEuuC,SAASz3C,IAAIC,IAAI,QAAQ,IAAIvM,EAAE64C,cAAcmB,IAAI38C,EAAE2/C,cAAchD,GAAG,CAAC,GAAG38C,EAAE+8C,SAASJ,IAAIvtC,EAAEoxC,UAAU7D,GAAG,CAAC,IAAqBtkC,GAAjBkD,EAAE5Y,EAAE0zB,OAAO,GAAGomB,IAAOpa,SAASob,EAAEliC,EAAE+mB,OAAO,EAAE,OAAqB,IAAd/mB,EAAEyrC,YAAiB/3C,EAAEtM,EAAE0zB,QAAO,EAAG,GAAGpnB,GAAGkpB,WAAWx1B,EAAEumB,KAAKja,GAAE,SAASC,EAAEpO,GAAG2jB,WAAWlJ,EAAE0rC,SAAS1rC,EAAE+mB,MAAMmb,EAAEh5B,WAAWlJ,EAAE0rC,SAAS/3C,EAAElP,EAAEm/C,WAAW5jC,EAAE0rC,WAAW1rC,EAAE+mB,MAAMmb,EAAEliC,EAAE0rC,QAAQlnD,KAAKe,EAAEoO,EAAEwtC,IAAInhC,EAAE2rC,OAAO3rC,EAAE8mB,SAAS5d,WAAWpM,KAAK,wBAAwBlJ,KAAKwtC,GAAG,IAAIH,GAAGjhC,EAAE8mB,SAASxgC,KAAKyK,IAAIiP,EAAE8mB,UAAU9mB,EAAEyrC,UAAU,EAAE93C,EAAEwtC,GAAGxtC,EAAE,GAAGwtC,GAAG,IAAInhC,EAAE8mB,SAAS,MAAMjzB,EAAEoxC,UAAU7D,GAAG58C,KAAKe,EAAEA,EAAEya,GAAG,GAAGrM,EAAEwtC,EAAEztC,EAAEkJ,EAAE6sC,QAAQ7sC,EAAEhU,MAAK+K,IAAI,IAAIyuC,EAAE,6BAA6BhB,EAAE,gFAAgF,OAAOxkC,EAAE6sC,QAAQ7sC,EAAE2uC,SAAS,IAAIjL,MAAM8B,IAAI7Z,QAAQzK,IAAIskB,GAAGzuC,IAAIoJ,EAAE,QAAQ,IAA+N+J,EAAE9G,EAA7NuiC,EAAE,CAACqH,WAAW,KAAKD,aAAa,KAAKE,aAAa,KAAKI,qBAAqB,KAAKE,sBAAsB,KAAKJ,WAAW,KAAKO,QAAQ,KAAKC,OAAO,KAAKC,OAAO,MAAM1nC,EAAE,GAAqF,GAAlF1b,EAAEumB,KAAKja,GAAE,SAASC,EAAEpO,GAAGd,EAAEu8C,OAAOz7C,IAAIO,EAAEtB,KAAKe,OAAWya,EAAE5Y,EAAE0zB,OAAO,GAAGjnB,EAAEm4B,SAASkV,IAAQ+B,KAAKz6B,SAASxI,EAAEijC,MAAMn8B,EAAE,EAAE9G,EAAEijC,KAAK,EAAEjjC,EAAEijC,KAAK,IAAI,IAAI75C,EAAE,EAAE0d,EAAE1d,EAAEA,IAAI,CAAC,IAAIyd,EAAE,CAACkgB,MAAM/mB,EAAE+mB,MAAMgc,SAAS/iC,EAAE+iC,UAAU35C,IAAI0d,EAAE,IAAID,EAAE5W,QAAQ+P,EAAE/P,QAAQ4W,EAAE0H,WAAWvO,EAAEuO,WAAW1H,EAAE0jB,SAASvqB,EAAEuqB,UAAUlhC,EAAEqK,EAAE,UAAUmT,GAAG,OAAOlT,OAAME,EAAEzM,EAAE0zB,OAAOzxB,EAAEwK,IAAKqhC,QAAQ7rC,EAAE,IAAI83C,EAAE57C,EAAEqmD,uBAAuBl4C,EAAE,OAAOG,EAAE6tC,MAAM2C,UAAUl/C,EAAE0mD,SAASjjD,GAAGzD,EAAEu9B,iBAAiB,oBAAmB,WAAWv9B,EAAE0mD,QAAQ1K,EAAE,SAASxtC,GAAG,OAAOkvB,YAAW,WAAWlvB,GAAE,KAAK,KAAKjP,KAAKy8C,EAAE57C,EAAEqmD,uBAAuBl4C,KAAIC,EAAEmsC,SAASjsC,EAAEF,IAAIpO,IAAIoO,EAAErI,GAAG6+B,SAAS9gC,EAAEsK,EAAErI,GAAG6+B,SAAS6B,SAASn4B,EAAEm4B,UAAU5kC,EAAEumB,KAAK,CAAC,OAAO,OAAM,SAASha,EAAEpO,GAAGsO,EAAEoxC,UAAU,QAAQ1/C,GAAG,SAASoO,EAAExO,EAAEW,EAAEhB,EAAET,EAAE+B,GAAG,IAAI9B,EAAE8C,EAAE0zB,OAAO,GAAG31B,GAAGg7C,EAAE77C,EAAE6gD,MAAMzgD,EAAEJ,EAAEimC,SAASpkC,EAAE,CAAC0lB,OAAO,GAAGS,UAAU,GAAGC,aAAa,GAAGu/B,WAAW,GAAGC,cAAc,IAAIpnD,EAAE,GAAGL,EAAE2L,UAAUrH,IAAItE,EAAE2L,QAAQ,SAAS1K,EAAE,WAAWsO,EAAEmxC,IAAI3B,OAAOkF,eAAe50C,GAAG,eAAe,QAAQ,QAAQrP,EAAE6gD,MAAM,WAA0B,IAAI,IAAIhgD,KAAvBg7C,GAAGA,EAAE37C,KAAKH,EAAEA,GAAgB8B,EAAE,CAACxB,EAAEQ,GAAGwO,EAAE3D,MAAM7K,GAAG,IAAIyD,EAAEiL,EAAEmxC,IAAI2D,iBAAiBh1C,EAAExO,GAAGgB,EAAEhB,GAAG,SAASI,EAAE,CAACqD,EAAE,GAAG,CAAC,EAAEA,GAAGjE,EAAE+uC,SAAS//B,EAAE3D,MAAM0jC,SAAS//B,EAAE3D,MAAM0jC,SAAS,UAAUpvC,EAAEimC,SAAS,WAAW,IAAI,IAAIhlC,KAAKZ,EAAEgP,EAAE3D,MAAMzK,GAAGZ,EAAEY,GAAGb,GAAGA,EAAEF,KAAKH,EAAEA,GAAG+B,GAAGA,EAAE+kD,SAAS9mD,IAAIwP,EAAEF,EAAExN,EAAE7B,OAAM8C,EAAEumB,KAAK,CAAC,KAAK,QAAO,SAASha,EAAEpO,GAAGsO,EAAEoxC,UAAU,OAAO1/C,GAAG,SAASoO,EAAExO,EAAEW,EAAEhB,EAAET,EAAE+B,GAAG,IAAI9B,EAAE8C,EAAE0zB,OAAO,GAAG31B,GAAGg7C,EAAE,CAAC9xB,QAAQ,OAAO9oB,EAAE,EAAE,GAAGb,EAAEJ,EAAEimC,SAASjmC,EAAEimC,SAASzkC,IAAIhB,EAAE,EAAER,EAAE6gD,MAAM,KAAK,WAAWzgD,GAAGA,EAAEF,KAAKH,EAAEA,GAAG+B,GAAGA,EAAE+kD,SAAS9mD,IAAIC,EAAE2L,UAAUrH,IAAItE,EAAE2L,QAAQ,OAAO1K,EAAE,OAAO,QAAQsO,EAAElJ,KAAKw1C,EAAE77C,OAAMuP,EADwrO2d,OAAOlmB,GAAG6+B,SAAS3Y,OAAOlmB,GAAG4pC,QAApnM,CAC9lCzuC,OAAO+qB,QAAQ/qB,OAAOs9C,OAAOt9C,OAAOA,OAAO4J,WADg6B,YAAiBjM,IAAQ,YAAiBA,EAAOD,SAAQC,EAAOD,QAAQwP,IAAI,mBAAmBq4C,QAAQA,MAAWA,OAAOr4C,GAAGA,O,kDCF3tH,IAAI5B,EAAI,EAAQ,GACZpJ,EAAQ,EAAQ,GAChBsjD,EAAoB,EAAQ,KAC5BhjD,EAAW,EAAQ,GACnBgI,EAAkB,EAAQ,IAC1BpF,EAAW,EAAQ,IACnBia,EAAqB,EAAQ,KAE7BxQ,EAAc22C,EAAkB32C,YAChCb,EAAWw3C,EAAkBx3C,SAC7By3C,EAAyB52C,EAAYrP,UAAU+E,MAQnD+G,EAAE,CAAEnK,OAAQ,cAAeuK,OAAO,EAAM3H,QAAQ,EAAMnC,OANhCM,GAAM,WAC1B,OAAQ,IAAI2M,EAAY,GAAGtK,MAAM,OAAG1C,GAAW03B,eAKgC,CAC/Eh1B,MAAO,SAAe2T,EAAOC,GAC3B,QAA+BtW,IAA3B4jD,QAAgD5jD,IAARsW,EAC1C,OAAOstC,EAAuB1nD,KAAKyE,EAAS0B,MAAOgU,GASrD,IAPA,IAAI9R,EAAS5D,EAAS0B,MAAMq1B,WACxB9iB,EAAQjM,EAAgB0N,EAAO9R,GAC/Boa,EAAMhW,OAAwB3I,IAARsW,EAAoB/R,EAAS+R,EAAK/R,GACxDF,EAAS,IAAKmZ,EAAmBnb,KAAM2K,GAA9B,CAA4CzJ,EAASob,EAAM/J,IACpEivC,EAAa,IAAI13C,EAAS9J,MAC1ByhD,EAAa,IAAI33C,EAAS9H,GAC1BG,EAAQ,EACLoQ,EAAQ+J,GACbmlC,EAAW3rB,SAAS3zB,IAASq/C,EAAWvrB,SAAS1jB,MACjD,OAAOvQ,M,gBCjCb,IAAIrF,EAAW,EAAQ,IAEvBlD,EAAOD,QAAU,SAAUyD,EAAQuI,EAAKzI,GACtC,IAAK,IAAI9B,KAAOuK,EAAK7I,EAASM,EAAQhC,EAAKuK,EAAIvK,GAAM8B,GACrD,OAAOE,I,gBCJmB,EAAQ,IAIpCykD,CAAsB,UAAW,GAAG,SAAUrnB,GAC5C,OAAO,SAAsBtyB,EAAMutB,EAAYpzB,GAC7C,OAAOm4B,EAAKr6B,KAAM+H,EAAMutB,EAAYpzB,Q,6BCLxC,IAAIkF,EAAI,EAAQ,GACZpL,EAAS,EAAQ,GACjB6B,EAAc,EAAQ,GACtB8jD,EAA8C,EAAQ,KACtDC,EAAsB,EAAQ,IAC9BN,EAAoB,EAAQ,KAC5B9tB,EAAa,EAAQ,KACrBz1B,EAA2B,EAAQ,IACnCrB,EAA8B,EAAQ,GACtCwE,EAAW,EAAQ,IACnBuyB,EAAU,EAAQ,KAClBouB,EAAW,EAAQ,KACnBtjD,EAAc,EAAQ,IACtBc,EAAM,EAAQ,GACd0D,EAAU,EAAQ,IAClB7E,EAAW,EAAQ,GACnBlD,EAAS,EAAQ,IACjB6O,EAAiB,EAAQ,IACzB5F,EAAsB,EAAQ,IAA8CxH,EAC5EqlD,EAAiB,EAAQ,KACzB1/C,EAAU,EAAQ,IAAgCA,QAClDwuB,EAAa,EAAQ,KACrB9yB,EAAuB,EAAQ,GAC/B6J,EAAiC,EAAQ,IACzCpI,EAAsB,EAAQ,IAE9BC,EAAmBD,EAAoBhF,IACvC+O,EAAmB/J,EAAoB0D,IACvCzE,EAAuBV,EAAqBrB,EAC5CuE,EAAiC2G,EAA+BlL,EAChE2hC,EAAQziC,KAAKyiC,MACbnL,EAAaj3B,EAAOi3B,WACpBtoB,EAAc22C,EAAkB32C,YAChCb,EAAWw3C,EAAkBx3C,SAC7Bc,EAA4Bg3C,EAAoBh3C,0BAChDH,EAAkBm3C,EAAoBn3C,gBACtCL,EAAaw3C,EAAoBx3C,WACjCC,EAAsBu3C,EAAoBv3C,oBAC1CoB,EAAyBm2C,EAAoBn2C,uBAC7CF,EAAeq2C,EAAoBr2C,aAInCw2C,EAAW,SAAU76C,EAAG86C,GAI1B,IAHA,IAAI7/C,EAAQ,EACRD,EAAS8/C,EAAK9/C,OACdF,EAAS,IAAKyJ,EAAuBvE,GAA5B,CAAgChF,GACtCA,EAASC,GAAOH,EAAOG,GAAS6/C,EAAK7/C,KAC5C,OAAOH,GAGLkzB,EAAY,SAAUx5B,EAAIT,GAC5BuD,EAAqB9C,EAAIT,EAAK,CAAEV,IAAK,WACnC,OAAOiF,EAAiBQ,MAAM/E,OAI9BgnD,EAAgB,SAAUvmD,GAC5B,IAAIsQ,EACJ,OAAOtQ,aAAciP,GAAwC,gBAAxBqB,EAAQjJ,EAAQrH,KAAkC,qBAATsQ,GAG5Ek2C,EAAoB,SAAUjlD,EAAQhC,GACxC,OAAOsQ,EAAatO,IACD,iBAAPhC,GACPA,KAAOgC,GACPmB,QAAQnD,IAAQmD,OAAOnD,IAG1BknD,EAAkC,SAAkCllD,EAAQhC,GAC9E,OAAOinD,EAAkBjlD,EAAQhC,EAAMsD,EAAYtD,GAAK,IACpD8C,EAAyB,EAAGd,EAAOhC,IACnC+F,EAA+B/D,EAAQhC,IAGzCmnD,EAAwB,SAAwBnlD,EAAQhC,EAAKmC,GAC/D,QAAI8kD,EAAkBjlD,EAAQhC,EAAMsD,EAAYtD,GAAK,KAChDiD,EAASd,IACTiC,EAAIjC,EAAY,WACfiC,EAAIjC,EAAY,QAChBiC,EAAIjC,EAAY,QAEhBA,EAAWmD,cACVlB,EAAIjC,EAAY,cAAeA,EAAWoD,UAC1CnB,EAAIjC,EAAY,gBAAiBA,EAAW9C,WAI1CkE,EAAqBvB,EAAQhC,EAAKmC,IAFzCH,EAAOhC,GAAOmC,EAAWzC,MAClBsC,IAIPY,GACG+M,IACHjD,EAA+BlL,EAAI0lD,EACnCrkD,EAAqBrB,EAAI2lD,EACzBltB,EAAU7qB,EAAqB,UAC/B6qB,EAAU7qB,EAAqB,cAC/B6qB,EAAU7qB,EAAqB,cAC/B6qB,EAAU7qB,EAAqB,WAGjCjD,EAAE,CAAEnK,OAAQ,SAAUO,MAAM,EAAME,QAASkN,GAA6B,CACtEpO,yBAA0B2lD,EAC1B9nD,eAAgB+nD,IAGlB3oD,EAAOD,QAAU,SAAU6H,EAAM+1B,EAAOirB,EAASC,GAC/C,IAAIjxB,EAAmBhwB,GAAQihD,EAAU,UAAY,IAAM,QACvDC,EAAS,MAAQlhD,EACjBmhD,EAAS,MAAQnhD,EACjBohD,EAA8BzmD,EAAOq1B,GACrC1lB,EAAwB82C,EACxBC,EAAiC/2C,GAAyBA,EAAsBrQ,UAChFqnD,EAAW,GAaXC,EAAa,SAAU9gD,EAAMK,GAC/B3D,EAAqBsD,EAAMK,EAAO,CAChC5H,IAAK,WACH,OAdO,SAAUuH,EAAMK,GAC3B,IAAI4F,EAAOvI,EAAiBsC,GAC5B,OAAOiG,EAAK6W,KAAK2jC,GAAQpgD,EAAQi1B,EAAQrvB,EAAKutB,YAAY,GAY/Cp7B,CAAO8F,KAAMmC,IAEtBc,IAAK,SAAUtI,GACb,OAZO,SAAUmH,EAAMK,EAAOxH,GAClC,IAAIoN,EAAOvI,EAAiBsC,GACxBwgD,IAAS3nD,GAASA,EAAQyjC,EAAMzjC,IAAU,EAAI,EAAIA,EAAQ,IAAO,IAAe,IAARA,GAC5EoN,EAAK6W,KAAK4jC,GAAQrgD,EAAQi1B,EAAQrvB,EAAKutB,WAAY36B,GAAO,GAS/CkV,CAAO7P,KAAMmC,EAAOxH,IAE7BL,YAAY,KAIXsQ,EAwCM+2C,IACTh2C,EAAwB02C,GAAQ,SAAUtkC,EAAOhW,EAAM86C,EAAkBC,GAEvE,OADAtvB,EAAWzV,EAAOpS,EAAuB0lB,GACpCnzB,EAAS6J,GACVk6C,EAAcl6C,QAA0BpK,IAAZmlD,EAC5B,IAAIL,EAA4B16C,EAAM85C,EAASgB,EAAkBzrB,GAAQ0rB,QACpDnlD,IAArBklD,EACE,IAAIJ,EAA4B16C,EAAM85C,EAASgB,EAAkBzrB,IACjE,IAAIqrB,EAA4B16C,GAClCwD,EAAaxD,GAAcg6C,EAASp2C,EAAuB5D,GACxD+5C,EAAejoD,KAAK8R,EAAuB5D,GAPtB,IAAI06C,EAA4BhvB,EAAQ1rB,OAUlE8B,GAAgBA,EAAe8B,EAAuBvB,GAC1DhI,EAAQ6B,EAAoBw+C,IAA8B,SAAUxnD,GAC5DA,KAAO0Q,GACXjP,EAA4BiP,EAAuB1Q,EAAKwnD,EAA4BxnD,OAGxF0Q,EAAsBrQ,UAAYonD,IA1DlC/2C,EAAwB02C,GAAQ,SAAUvgD,EAAMiG,EAAMiuB,EAAQ8sB,GAC5DtvB,EAAW1xB,EAAM6J,EAAuB0lB,GACxC,IAEIgD,EAAQgB,EAAYnzB,EAFpBC,EAAQ,EACRmzB,EAAa,EAEjB,GAAKp3B,EAAS6J,GAIP,KAAIk6C,EAAcl6C,GAalB,OAAIwD,EAAaxD,GACfg6C,EAASp2C,EAAuB5D,GAEhC+5C,EAAejoD,KAAK8R,EAAuB5D,GAflDssB,EAAStsB,EACTutB,EAAausB,EAAS7rB,EAAQoB,GAC9B,IAAI2rB,EAAOh7C,EAAKstB,WAChB,QAAgB13B,IAAZmlD,EAAuB,CACzB,GAAIC,EAAO3rB,EAAO,MAAMnE,EAhHjB,gBAkHP,IADAoC,EAAa0tB,EAAOztB,GACH,EAAG,MAAMrC,EAlHnB,qBAqHP,IADAoC,EAAan0B,EAAS4hD,GAAW1rB,GAChB9B,EAAaytB,EAAM,MAAM9vB,EArHnC,gBAuHT/wB,EAASmzB,EAAa+B,OAftBl1B,EAASuxB,EAAQ1rB,GAEjBssB,EAAS,IAAI1pB,EADb0qB,EAAanzB,EAASk1B,GA2BxB,IAPA9tB,EAAiBxH,EAAM,CACrBuyB,OAAQA,EACRiB,WAAYA,EACZD,WAAYA,EACZnzB,OAAQA,EACR0c,KAAM,IAAI9U,EAASuqB,KAEdlyB,EAAQD,GAAQ0gD,EAAW9gD,EAAMK,QAGtC0H,GAAgBA,EAAe8B,EAAuBvB,GAC1Ds4C,EAAiC/2C,EAAsBrQ,UAAYN,EAAOqP,IAuBxEq4C,EAA+Bv7C,cAAgBwE,GACjDjP,EAA4BgmD,EAAgC,cAAe/2C,GAGzElB,GACF/N,EAA4BgmD,EAAgCj4C,EAAiB4mB,GAG/EsxB,EAAStxB,GAAoB1lB,EAE7BvE,EAAE,CACApL,QAAQ,EAAM0B,OAAQiO,GAAyB82C,EAA6B7kD,MAAOgN,GAClF+3C,GA5KiB,sBA8KOh3C,GACzBjP,EAA4BiP,EA/KV,oBA+KoDyrB,GA/KpD,sBAkLOsrB,GACzBhmD,EAA4BgmD,EAnLV,oBAmL6DtrB,GAGjFxG,EAAWS,KAER53B,EAAOD,QAAU,c,gBChOxB,IAAIwC,EAAS,EAAQ,GACjBgC,EAAQ,EAAQ,GAChBglD,EAA8B,EAAQ,KACtCp4C,EAA4B,EAAQ,IAAuCA,0BAE3ED,EAAc3O,EAAO2O,YACrBX,EAAYhO,EAAOgO,UAEvBvQ,EAAOD,SAAWoR,IAA8B5M,GAAM,WACpDgM,EAAU,QACLhM,GAAM,WACX,IAAIgM,GAAW,QACVg5C,GAA4B,SAAUC,GAC3C,IAAIj5C,EACJ,IAAIA,EAAU,MACd,IAAIA,EAAU,KACd,IAAIA,EAAUi5C,MACb,IAASjlD,GAAM,WAEhB,OAAkE,IAA3D,IAAIgM,EAAU,IAAIW,EAAY,GAAI,OAAGhN,GAAWuE,W,gBCpBzD,IAAIpD,EAAY,EAAQ,IAExBrF,EAAOD,QAAU,SAAUkC,GACzB,IAAIsG,EAASlD,EAAUpD,GACvB,GAAIsG,EAAS,EAAG,MAAMixB,WAAW,qCACjC,OAAOjxB,I,gBCLT,IAAIf,EAAW,EAAQ,IACnBC,EAAW,EAAQ,IACnBgiD,EAAoB,EAAQ,KAC5BC,EAAwB,EAAQ,KAChCjoD,EAAO,EAAQ,IACfuQ,EAAyB,EAAQ,IAAuCA,uBAE5EhS,EAAOD,QAAU,SAAcwD,GAC7B,IAKItD,EAAGwI,EAAQF,EAAQohD,EAAMh0C,EAAUiH,EALnC5X,EAAIwC,EAASjE,GACbkgB,EAAkBxY,UAAUxC,OAC5BmhD,EAAQnmC,EAAkB,EAAIxY,UAAU,QAAK/G,EAC7C2lD,OAAoB3lD,IAAV0lD,EACVE,EAAiBL,EAAkBzkD,GAEvC,GAAsBd,MAAlB4lD,IAAgCJ,EAAsBI,GAIxD,IAFAltC,GADAjH,EAAWm0C,EAAe1pD,KAAK4E,IACf4X,KAChB5X,EAAI,KACK2kD,EAAO/sC,EAAKxc,KAAKuV,IAAW3F,MACnChL,EAAES,KAAKkkD,EAAKzoD,OAQhB,IALI2oD,GAAWpmC,EAAkB,IAC/BmmC,EAAQnoD,EAAKmoD,EAAO3+C,UAAU,GAAI,IAEpCxC,EAAShB,EAASzC,EAAEyD,QACpBF,EAAS,IAAKyJ,EAAuBzL,MAA5B,CAAmCkC,GACvCxI,EAAI,EAAGwI,EAASxI,EAAGA,IACtBsI,EAAOtI,GAAK4pD,EAAUD,EAAM5kD,EAAE/E,GAAIA,GAAK+E,EAAE/E,GAE3C,OAAOsI,I,6BC7BT,IAAI4/C,EAAsB,EAAQ,IAC9B4B,EAAc,EAAQ,KAEtBh4C,EAAco2C,EAAoBp2C,YAItCo2C,EAAoBh2C,YAAY,cAAc,SAAoB3O,EAAQ+W,GACxE,OAAOwvC,EAAY3pD,KAAK2R,EAAYxL,MAAO/C,EAAQ+W,EAAOtP,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,6BCRlG,IAAIsD,EAAW,EAAQ,IACnBqF,EAAkB,EAAQ,IAC1BpF,EAAW,EAAQ,IAEnBnC,EAAMpD,KAAKoD,IAIftF,EAAOD,QAAU,GAAGiqD,YAAc,SAAoBxmD,EAAkB+W,GACtE,IAAIvV,EAAIwC,EAASjB,MACbkS,EAAMhR,EAASzC,EAAEyD,QACjB8a,EAAK1W,EAAgBrJ,EAAQiV,GAC7B6K,EAAOzW,EAAgB0N,EAAO9B,GAC9B+B,EAAMvP,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,EAC5Cy1B,EAAQr0B,QAAapB,IAARsW,EAAoB/B,EAAM5L,EAAgB2N,EAAK/B,IAAQ6K,EAAM7K,EAAM8K,GAChF0mC,EAAM,EAMV,IALI3mC,EAAOC,GAAMA,EAAKD,EAAOqW,IAC3BswB,GAAO,EACP3mC,GAAQqW,EAAQ,EAChBpW,GAAMoW,EAAQ,GAETA,KAAU,GACXrW,KAAQte,EAAGA,EAAEue,GAAMve,EAAEse,UACbte,EAAEue,GACdA,GAAM0mC,EACN3mC,GAAQ2mC,EACR,OAAOjlD,I,6BC1BX,IAAImjD,EAAsB,EAAQ,IAC9B+B,EAAS,EAAQ,IAAgCnhD,MAEjDgJ,EAAco2C,EAAoBp2C,YAItCo2C,EAAoBh2C,YAAY,SAAS,SAAe/J,GACtD,OAAO8hD,EAAOn4C,EAAYxL,MAAO6B,EAAY6C,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,6BCRrF,IAAIikD,EAAsB,EAAQ,IAC9BgC,EAAQ,EAAQ,KAEhBp4C,EAAco2C,EAAoBp2C,YAKtCo2C,EAAoBh2C,YAAY,QAAQ,SAAcjR,GACpD,OAAOipD,EAAMz6C,MAAMqC,EAAYxL,MAAO0E,e,6BCTxC,IAAIk9C,EAAsB,EAAQ,IAC9BznC,EAAU,EAAQ,IAAgC7X,OAClD6Y,EAAqB,EAAQ,KAE7B3P,EAAco2C,EAAoBp2C,YAClCC,EAAyBm2C,EAAoBn2C,uBAIjDm2C,EAAoBh2C,YAAY,UAAU,SAAgB/J,GAMxD,IALA,IAAImgD,EAAO7nC,EAAQ3O,EAAYxL,MAAO6B,EAAY6C,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,GACpFuJ,EAAIiU,EAAmBnb,KAAMA,KAAKmH,aAClChF,EAAQ,EACRD,EAAS8/C,EAAK9/C,OACdF,EAAS,IAAKyJ,EAAuBvE,GAA5B,CAAgChF,GACtCA,EAASC,GAAOH,EAAOG,GAAS6/C,EAAK7/C,KAC5C,OAAOH,M,6BChBT,IAAI4/C,EAAsB,EAAQ,IAC9Bv6C,EAAQ,EAAQ,IAAgC5E,KAEhD+I,EAAco2C,EAAoBp2C,YAItCo2C,EAAoBh2C,YAAY,QAAQ,SAAci4C,GACpD,OAAOx8C,EAAMmE,EAAYxL,MAAO6jD,EAAWn/C,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,6BCRnF,IAAIikD,EAAsB,EAAQ,IAC9BkC,EAAa,EAAQ,IAAgCphD,UAErD8I,EAAco2C,EAAoBp2C,YAItCo2C,EAAoBh2C,YAAY,aAAa,SAAmBi4C,GAC9D,OAAOC,EAAWt4C,EAAYxL,MAAO6jD,EAAWn/C,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,6BCRxF,IAAIikD,EAAsB,EAAQ,IAC9B/zC,EAAW,EAAQ,IAAgCzL,QAEnDoJ,EAAco2C,EAAoBp2C,YAItCo2C,EAAoBh2C,YAAY,WAAW,SAAiB/J,GAC1DgM,EAASrC,EAAYxL,MAAO6B,EAAY6C,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,6BCRhF,IAAIikD,EAAsB,EAAQ,IAC9B96B,EAAY,EAAQ,IAA+BpgB,SAEnD8E,EAAco2C,EAAoBp2C,YAItCo2C,EAAoBh2C,YAAY,YAAY,SAAkB0B,GAC5D,OAAOwZ,EAAUtb,EAAYxL,MAAOsN,EAAe5I,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,6BCR3F,IAAIikD,EAAsB,EAAQ,IAC9B30C,EAAW,EAAQ,IAA+B/G,QAElDsF,EAAco2C,EAAoBp2C,YAItCo2C,EAAoBh2C,YAAY,WAAW,SAAiB0B,GAC1D,OAAOL,EAASzB,EAAYxL,MAAOsN,EAAe5I,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,6BCR1F,IAAI3B,EAAS,EAAQ,GACjB4lD,EAAsB,EAAQ,IAC9BmC,EAAiB,EAAQ,IAGzB9yC,EAFkB,EAAQ,EAEfjK,CAAgB,YAC3BgE,EAAahP,EAAOgP,WACpBg5C,EAAcD,EAAe5yC,OAC7B8yC,EAAYF,EAAephD,KAC3BuhD,EAAeH,EAAe7sC,QAC9B1L,EAAco2C,EAAoBp2C,YAClCI,EAAcg2C,EAAoBh2C,YAClCu4C,EAA2Bn5C,GAAcA,EAAW1P,UAAU2V,GAE9DmzC,IAAsBD,IACa,UAAjCA,EAAyBlqD,MAAqD0D,MAAjCwmD,EAAyBlqD,MAExEoqD,EAAmB,WACrB,OAAOL,EAAYnqD,KAAK2R,EAAYxL,QAKtC4L,EAAY,WAAW,WACrB,OAAOs4C,EAAarqD,KAAK2R,EAAYxL,UAIvC4L,EAAY,QAAQ,WAClB,OAAOq4C,EAAUpqD,KAAK2R,EAAYxL,UAIpC4L,EAAY,SAAUy4C,GAAmBD,GAGzCx4C,EAAYqF,EAAUozC,GAAmBD,I,6BCpCzC,IAAIxC,EAAsB,EAAQ,IAE9Bp2C,EAAco2C,EAAoBp2C,YAClC84C,EAAQ,GAAGvkD,KAKf6hD,EAAoBh2C,YAAY,QAAQ,SAAc6F,GACpD,OAAO6yC,EAAMn7C,MAAMqC,EAAYxL,MAAO0E,e,6BCTxC,IAAIk9C,EAAsB,EAAQ,IAC9B2C,EAAe,EAAQ,KAEvB/4C,EAAco2C,EAAoBp2C,YAKtCo2C,EAAoBh2C,YAAY,eAAe,SAAqB0B,GAClE,OAAOi3C,EAAap7C,MAAMqC,EAAYxL,MAAO0E,e,6BCT/C,IAAIk9C,EAAsB,EAAQ,IAC9B3mC,EAAO,EAAQ,IAAgC5Y,IAC/C8Y,EAAqB,EAAQ,KAE7B3P,EAAco2C,EAAoBp2C,YAClCC,EAAyBm2C,EAAoBn2C,uBAIjDm2C,EAAoBh2C,YAAY,OAAO,SAAay3C,GAClD,OAAOpoC,EAAKzP,EAAYxL,MAAOqjD,EAAO3+C,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,GAAW,SAAUc,EAAGyD,GAClG,OAAO,IAAKuJ,EAAuB0P,EAAmB1c,EAAGA,EAAE0I,cAApD,CAAmEjF,U,6BCX9E,IAAI0/C,EAAsB,EAAQ,IAC9BlP,EAAU,EAAQ,KAA6BjvB,KAE/CjY,EAAco2C,EAAoBp2C,YAItCo2C,EAAoBh2C,YAAY,UAAU,SAAgB/J,GACxD,OAAO6wC,EAAQlnC,EAAYxL,MAAO6B,EAAY6C,UAAUxC,OAAQwC,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,6BCRxG,IAAIikD,EAAsB,EAAQ,IAC9B4C,EAAe,EAAQ,KAA6B9zB,MAEpDllB,EAAco2C,EAAoBp2C,YAItCo2C,EAAoBh2C,YAAY,eAAe,SAAqB/J,GAClE,OAAO2iD,EAAah5C,EAAYxL,MAAO6B,EAAY6C,UAAUxC,OAAQwC,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,6BCR7G,IAAIikD,EAAsB,EAAQ,IAE9Bp2C,EAAco2C,EAAoBp2C,YAClCtL,EAAQvE,KAAKuE,MAIjB0hD,EAAoBh2C,YAAY,WAAW,WAMzC,IALA,IAIIjR,EAHAuH,EAASsJ,EADFxL,MACoBkC,OAC3BuiD,EAASvkD,EAAMgC,EAAS,GACxBC,EAAQ,EAELA,EAAQsiD,GACb9pD,EANSqF,KAMImC,GANJnC,KAOJmC,KAPInC,OAOckC,GAPdlC,KAQJkC,GAAUvH,EACf,OATSqF,S,6BCRb,IAAI4hD,EAAsB,EAAQ,IAC9B1gD,EAAW,EAAQ,IACnB2gD,EAAW,EAAQ,KACnB5gD,EAAW,EAAQ,IACnBjD,EAAQ,EAAQ,GAEhBwN,EAAco2C,EAAoBp2C,YAElCgL,EAASxY,GAAM,WAEjB,IAAIgM,UAAU,GAAG/G,IAAI,OAKvB2+C,EAAoBh2C,YAAY,OAAO,SAAa84C,GAClDl5C,EAAYxL,MACZ,IAAIg2B,EAAS6rB,EAASn9C,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,EAAW,GACnEuE,EAASlC,KAAKkC,OACdsD,EAAMvE,EAASyjD,GACfxyC,EAAMhR,EAASsE,EAAItD,QACnBC,EAAQ,EACZ,GAAI+P,EAAM8jB,EAAS9zB,EAAQ,MAAM+wB,WAAW,gBAC5C,KAAO9wB,EAAQ+P,GAAKlS,KAAKg2B,EAAS7zB,GAASqD,EAAIrD,OAC9CqU,I,6BCxBH,IAAIorC,EAAsB,EAAQ,IAC9BzmC,EAAqB,EAAQ,KAC7Bnd,EAAQ,EAAQ,GAEhBwN,EAAco2C,EAAoBp2C,YAClCC,EAAyBm2C,EAAoBn2C,uBAC7Ck5C,EAAS,GAAGtkD,MAEZmW,EAASxY,GAAM,WAEjB,IAAIgM,UAAU,GAAG3J,WAKnBuhD,EAAoBh2C,YAAY,SAAS,SAAeoI,EAAOC,GAM7D,IALA,IAAI+tC,EAAO2C,EAAO9qD,KAAK2R,EAAYxL,MAAOgU,EAAOC,GAC7C/M,EAAIiU,EAAmBnb,KAAMA,KAAKmH,aAClChF,EAAQ,EACRD,EAAS8/C,EAAK9/C,OACdF,EAAS,IAAKyJ,EAAuBvE,GAA5B,CAAgChF,GACtCA,EAASC,GAAOH,EAAOG,GAAS6/C,EAAK7/C,KAC5C,OAAOH,IACNwU,I,6BCvBH,IAAIorC,EAAsB,EAAQ,IAC9BgD,EAAQ,EAAQ,IAAgCriD,KAEhDiJ,EAAco2C,EAAoBp2C,YAItCo2C,EAAoBh2C,YAAY,QAAQ,SAAc/J,GACpD,OAAO+iD,EAAMp5C,EAAYxL,MAAO6B,EAAY6C,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,6BCRpF,IAAIikD,EAAsB,EAAQ,IAE9Bp2C,EAAco2C,EAAoBp2C,YAClCq5C,EAAQ,GAAGtzB,KAIfqwB,EAAoBh2C,YAAY,QAAQ,SAAc8lB,GACpD,OAAOmzB,EAAMhrD,KAAK2R,EAAYxL,MAAO0xB,O,6BCRvC,IAAIkwB,EAAsB,EAAQ,IAC9B1gD,EAAW,EAAQ,IACnBoF,EAAkB,EAAQ,IAC1B6U,EAAqB,EAAQ,KAE7B3P,EAAco2C,EAAoBp2C,YAItCo2C,EAAoBh2C,YAAY,YAAY,SAAkB4uC,EAAOvmC,GACnE,IAAIxV,EAAI+M,EAAYxL,MAChBkC,EAASzD,EAAEyD,OACX4iD,EAAax+C,EAAgBk0C,EAAOt4C,GACxC,OAAO,IAAKiZ,EAAmB1c,EAAGA,EAAE0I,aAA7B,CACL1I,EAAE41B,OACF51B,EAAE62B,WAAawvB,EAAarmD,EAAEsmD,kBAC9B7jD,QAAkBvD,IAARsW,EAAoB/R,EAASoE,EAAgB2N,EAAK/R,IAAW4iD,Q,6BChB3E,IAAI9oD,EAAS,EAAQ,GACjB4lD,EAAsB,EAAQ,IAC9B5jD,EAAQ,EAAQ,GAEhBgM,EAAYhO,EAAOgO,UACnBwB,EAAco2C,EAAoBp2C,YAClCw5C,EAAkB,GAAGC,eACrBN,EAAS,GAAGtkD,MAGZ6kD,IAAyBl7C,GAAahM,GAAM,WAC9CgnD,EAAgBnrD,KAAK,IAAImQ,EAAU,OAGjCwM,EAASxY,GAAM,WACjB,MAAO,CAAC,EAAG,GAAGinD,kBAAoB,IAAIj7C,EAAU,CAAC,EAAG,IAAIi7C,sBACnDjnD,GAAM,WACXgM,EAAU1O,UAAU2pD,eAAeprD,KAAK,CAAC,EAAG,OAK9C+nD,EAAoBh2C,YAAY,kBAAkB,WAChD,OAAOo5C,EAAgB77C,MAAM+7C,EAAuBP,EAAO9qD,KAAK2R,EAAYxL,OAASwL,EAAYxL,MAAO0E,aACvG8R,I,6BCxBH,IAAIxa,EAAS,EAAQ,GACjB4lD,EAAsB,EAAQ,IAC9B5jD,EAAQ,EAAQ,GAEhBgN,EAAahP,EAAOgP,WACpBm6C,EAAsBn6C,GAAcA,EAAW1P,UAC/C8pD,EAAgB,GAAGhlD,SACnBilD,EAAY,GAAGtlD,KAEf/B,GAAM,WAAconD,EAAcvrD,KAAK,SACzCurD,EAAgB,WACd,OAAOC,EAAUxrD,KAAKmG,QAM1B4hD,EAAoBh2C,YAAY,WAAYw5C,GAAgBD,GAAuB,IAAI/kD,UAAYglD,I;;;;;;;;ICRnG,SAAWtpD,EAAQwpD,GAKK,mBAAXjE,QAAyBA,MAClCA,OAAO,IAAI,WAET,OADAvlD,EAAOypD,MAAQD,EAAQzrD,KAAKiC,GACrBA,EAAOypD,SAMU,YAAnB,oBAAO/rD,QAAP,cAAOA,UACdC,EAAOD,QAAU8rD,EAAQzrD,KAAKiC,GAK9BA,EAAOypD,MAAQD,EAAQzrD,KAAKiC,GApBhC,CAsBqB,YAAlB,oBAAOA,OAAP,cAAOA,SAAsBA,YAAS,GAAM,WAG7C,IAAIypD,EAAQA,GAAS,GACjBC,EAAK9/C,SAAS+4B,iBAAiBvjC,KAAKwK,UACpCtF,EAAWhG,OAAOkB,UAAU8E,SAC5BqlD,EAAmB,iBAAkB3pD,OAYzC,SAASoC,EAASvD,GAChB,IAAImJ,EAAO,EAAOnJ,GAClB,MAAgB,aAATmJ,GAAgC,WAATA,KAAuBnJ,EAOvD,SAAS+qD,EAAiBC,GACxB,IALiBC,EAKbC,EAAazlD,EAASvG,KAAK8rD,GAE/B,MAAmB,oBAAfE,EACKL,EAAGG,GACDznD,EAASynD,IAAU,sDAAsD18C,KAAK48C,IAAeF,EAAMpqD,eAAe,UACpHoqD,EATFznD,EADU0nD,EAWID,IAVGC,EAAIvQ,SAAW,EAW9B,CAACsQ,GAGH,GAGT,SAAS3vB,EAAOwY,GACd,IAAIsX,EAASC,EACXloB,EAAM,CACJra,IAAK,EACLC,KAAM,GAERuiC,EAAMxX,GAAQA,EAAKyX,cAQrB,OANAH,EAAUE,EAAI/nB,gBAEV,gBAAOuQ,EAAK1Q,yBACdD,EAAM2Q,EAAK1Q,yBAEbioB,EAxCF,SAAmBvX,GACjB,OAJe,QADCoX,EAKApX,IAJOoX,IAAQA,EAAI9pD,OAIX0yC,EAAyB,IAAlBA,EAAK6G,UAAkB7G,EAAK0X,YAL7D,IAAkBN,EA4CVO,CAAUH,GACT,CACLxiC,IAAKqa,EAAIra,IAAMuiC,EAAI7nB,YAAc4nB,EAAQ3nB,UACzC1a,KAAMoa,EAAIpa,KAAOsiC,EAAInQ,YAAckQ,EAAQhQ,YAI/C,SAASsQ,EAAaC,GACpB,IAAIhhD,EAAQ,GAEZ,IAAK,IAAImgB,KAAQ6gC,EACXA,EAAS9qD,eAAeiqB,KAC1BngB,GAAUmgB,EAAO,IAAM6gC,EAAS7gC,GAAQ,KAI5C,OAAOngB,EAGT,IAAIihD,EAAS,CAGXnqB,SAAU,IAGVC,MAAO,IAEPvY,KAAM,SAAU7a,EAAGka,EAASsc,GAG1B,GAAiB,IAAbx2B,EAAEu9C,OACJ,OAAO,EAGTrjC,EAAUA,GAAWljB,KAGrB,IAAIwmD,EAAS9gD,SAASf,cAAc,OACpC6hD,EAAOzI,UAAY,8BACnB76B,EAAQ3d,YAAYihD,GAGpB,IAAIl0C,EAAM0jB,EAAO9S,GACbujC,EAAY,EACZC,EAAY,EAEZ,YAAa19C,GAAKA,EAAE0/B,QAAQxmC,QAC9BukD,EAAaz9C,EAAE0/B,QAAQ,GAAGie,MAAQr0C,EAAIkR,IACtCkjC,EAAa19C,EAAE0/B,QAAQ,GAAGke,MAAQt0C,EAAImR,OAItCgjC,EAAaz9C,EAAE29C,MAAQr0C,EAAIkR,IAC3BkjC,EAAa19C,EAAE49C,MAAQt0C,EAAImR,MAG7BijC,EAAYA,GAAa,EAAIA,EAAY,EACzCD,EAAYA,GAAa,EAAIA,EAAY,EAEzC,IAAI7H,EAAQ,SAAa17B,EAAQsK,YAAc,IAAO,EAAK,IACvDixB,EAAY,iBAEZjf,IACFif,EAAY,aAAgBjf,EAASjN,EAAK,OAAUiN,EAASiX,EAAK,OAIpE+P,EAAOhI,aAAa,YAAa/qC,KAAKk1B,OACtC6d,EAAOhI,aAAa,SAAUkI,GAC9BF,EAAOhI,aAAa,SAAUiI,GAC9BD,EAAOhI,aAAa,aAAcI,GAClC4H,EAAOhI,aAAa,iBAAkBC,GAGtC,IAAIoI,EAAc,CAChBrjC,IAAKijC,EAAY,KACjBhjC,KAAMijC,EAAY,MAGpBF,EAAO9nB,UAAUof,IAAI,sBACrB0I,EAAOhI,aAAa,QAAS4H,EAAaS,IAC1CL,EAAO9nB,UAAUzf,OAAO,sBAGxB4nC,EAAY,qBAAuBjI,EAAQ,IAAMH,EACjDoI,EAAY,kBAAoBjI,EAAQ,IAAMH,EAC9CoI,EAAY,iBAAmBjI,EAAQ,IAAMH,EAC7CoI,EAAY,gBAAkBjI,EAAQ,IAAMH,EAC5CoI,EAAYC,UAAYlI,EAAQ,IAAMH,EACtCoI,EAAYnjC,QAAU,IAEtB,IAAIyY,EAAsB,cAAXnzB,EAAElF,KAAuB,KAAOwiD,EAAOnqB,SACtD0qB,EAAY,+BAAiC1qB,EAAW,KACxD0qB,EAAY,4BAA8B1qB,EAAW,KACrD0qB,EAAY,0BAA4B1qB,EAAW,KACnD0qB,EAAY,uBAAyB1qB,EAAW,KAEhDqqB,EAAOhI,aAAa,QAAS4H,EAAaS,KAG5CxkC,KAAM,SAAUrZ,EAAGka,GAKjB,IAFA,IAAI6jC,GAFJ7jC,EAAUA,GAAWljB,MAECgnD,uBAAuB,kBAEpCttD,EAAI,EAAGwY,EAAM60C,EAAQ7kD,OAAQxI,EAAIwY,EAAKxY,IAC7CutD,EAAaj+C,EAAGka,EAAS6jC,EAAQrtD,IAG/B+rD,IACFviC,EAAQgkC,oBAAoB,WAAYZ,EAAOjkC,MAC/Ca,EAAQgkC,oBAAoB,cAAeZ,EAAOjkC,OAGpDa,EAAQgkC,oBAAoB,UAAWZ,EAAOjkC,MAC9Ca,EAAQgkC,oBAAoB,aAAcZ,EAAOjkC,QAQjD8kC,EAAa,CAGf1mD,MAAO,SAAUyiB,GAEf,IAAIlE,EAASkE,EAAQ+3B,WAGrB,GAAqC,SAAjCj8B,EAAO6+B,QAAQx1C,gBAA4B2W,EAAO0f,UAAU0oB,SAAS,gBAAzE,CAKA,IAAI/E,EAAU38C,SAASf,cAAc,QACrC09C,EAAQtE,UAAY,sBAIpB/+B,EAAOqoC,aAAahF,EAASn/B,GAC7Bm/B,EAAQ98C,YAAY2d,KAKtBokC,IAAK,SAAUpkC,GAEb,IAAIlE,EAASkE,EAAQ+3B,WAGrB,GAAqC,MAAjCj8B,EAAO6+B,QAAQx1C,gBAAyB2W,EAAO0f,UAAU0oB,SAAS,gBAAtE,CAKA,IAAI/E,EAAU38C,SAASf,cAAc,KACrCqa,EAAOqoC,aAAahF,EAASn/B,GAC7Bm/B,EAAQ98C,YAAY2d,MASxB,SAAS+jC,EAAaj+C,EAAGxC,EAAIggD,GAG3B,GAAKA,EAAL,CAIAA,EAAO9nB,UAAUzf,OAAO,kBAExB,IAAIynC,EAAYF,EAAOpI,aAAa,UAChCqI,EAAYD,EAAOpI,aAAa,UAChCQ,EAAQ4H,EAAOpI,aAAa,cAC5BK,EAAY+H,EAAOpI,aAAa,kBAIhChiB,EAAQ,KADD3oB,KAAKk1B,MAAQ5O,OAAOysB,EAAOpI,aAAa,eAG/ChiB,EAAQ,IACVA,EAAQ,GAGK,cAAXpzB,EAAElF,OACJs4B,EAAQ,KAIV,IAAID,EAAsB,cAAXnzB,EAAElF,KAAuB,KAAOwiD,EAAOnqB,SAEtDjE,YAAW,WAET,IAAI7yB,EAAQ,CACVme,IAAKijC,EAAY,KACjBhjC,KAAMijC,EAAY,KAClBhjC,QAAS,IAGT,8BAA+ByY,EAAW,KAC1C,2BAA4BA,EAAW,KACvC,yBAA0BA,EAAW,KACrC,sBAAuBA,EAAW,KAClC,oBAAqByiB,EAAQ,IAAMH,EACnC,iBAAkBG,EAAQ,IAAMH,EAChC,gBAAiBG,EAAQ,IAAMH,EAC/B,eAAgBG,EAAQ,IAAMH,EAC9B,UAAaG,EAAQ,IAAMH,GAG7B+H,EAAOhI,aAAa,QAAS4H,EAAa/gD,IAE1C6yB,YAAW,WACT,IACE1xB,EAAGk5C,YAAY8G,GACf,MAAOx9C,GACP,OAAO,KAERmzB,KAEFC,IAOL,IAAImrB,EAAe,CAMjB7e,QAAS,EAET8e,WAAY,SAAUx+C,GAEpB,IAAIy+C,GAAQ,EAMZ,MAJI,0BAA0Bx+C,KAAKD,EAAElF,OAASyjD,EAAa7e,UACzD+e,GAAQ,GAGHA,GAETC,cAAe,SAAU1+C,GACvB,IAAI2+C,EAAQ3+C,EAAElF,KAEA,eAAV6jD,EAEFJ,EAAa7e,SAAW,EAEf,2BAA2Bz/B,KAAK0+C,IAEzCzvB,YAAW,WACLqvB,EAAa7e,UACf6e,EAAa7e,SAAW,KAEzB,OAkCT,SAASkf,EAAW5+C,GAQlB,IAAIka,EA/BN,SAA+Bla,GAE7B,IAAmC,IAA/Bu+C,EAAaC,WAAWx+C,GAC1B,OAAO,KAMT,IAHA,IAAIka,EAAU,KACVjmB,EAAS+L,EAAE/L,QAAU+L,EAAE6+C,WAEpB5qD,EAAO6qD,eAAe,CAC3B,KAAO7qD,aAAkBu8C,aAAgBv8C,EAAOyhC,UAAU0oB,SAAS,gBAAiB,CAClFlkC,EAAUjmB,EACV,MAEFA,EAASA,EAAO6qD,cAGlB,OAAO5kC,EAcO6kC,CAAsB/+C,GAEpC,GAAgB,OAAZka,EAAkB,CAGpB,GAAIA,EAAQ0C,UAAY1C,EAAQk7B,aAAa,aAAel7B,EAAQwb,UAAU0oB,SAAS,YACrF,OAKF,GAFAG,EAAaG,cAAc1+C,GAEZ,eAAXA,EAAElF,MAAyBwiD,EAAOlqB,MAAO,CAE3C,IAAI8kB,GAAS,EAET8G,EAAQ9vB,YAAW,WACrB8vB,EAAQ,KACR1B,EAAOziC,KAAK7a,EAAGka,KACdojC,EAAOlqB,OAEN6rB,EAAa,SAAUC,GAGrBF,IACFnH,aAAamH,GACbA,EAAQ,KACR1B,EAAOziC,KAAK7a,EAAGka,IAEZg+B,IACHA,GAAS,EACToF,EAAOjkC,KAAK6lC,EAAWhlC,IAGzBilC,KAGEC,EAAY,SAAUC,GACpBL,IACFnH,aAAamH,GACbA,EAAQ,MAEVC,EAAWI,GAEXF,KAGFjlC,EAAQ6U,iBAAiB,YAAaqwB,GAAW,GACjDllC,EAAQ6U,iBAAiB,WAAYkwB,GAAY,GACjD/kC,EAAQ6U,iBAAiB,cAAekwB,GAAY,GAEpD,IAAIE,EAAkB,WACpBjlC,EAAQgkC,oBAAoB,YAAakB,GACzCllC,EAAQgkC,oBAAoB,WAAYe,GACxC/kC,EAAQgkC,oBAAoB,cAAee,SAI7C3B,EAAOziC,KAAK7a,EAAGka,GAEXuiC,IACFviC,EAAQ6U,iBAAiB,WAAYuuB,EAAOjkC,MAAM,GAClDa,EAAQ6U,iBAAiB,cAAeuuB,EAAOjkC,MAAM,IAGvDa,EAAQ6U,iBAAiB,UAAWuuB,EAAOjkC,MAAM,GACjDa,EAAQ6U,iBAAiB,aAAcuuB,EAAOjkC,MAAM,IA0I1D,OArIAkjC,EAAMlrB,KAAO,SAAUt9B,GACrB,IAAIghC,EAAOr4B,SAASq4B,KAIhB,aAFJhhC,EAAUA,GAAW,MAGnBupD,EAAOnqB,SAAWp/B,EAAQo/B,UAGxB,UAAWp/B,IACbupD,EAAOlqB,MAAQr/B,EAAQq/B,OAGrBqpB,IACF1nB,EAAKhG,iBAAiB,aAAc6vB,GAAY,GAChD7pB,EAAKhG,iBAAiB,cAAewvB,EAAaG,eAAe,GACjE3pB,EAAKhG,iBAAiB,WAAYwvB,EAAaG,eAAe,IAGhE3pB,EAAKhG,iBAAiB,YAAa6vB,GAAY,IASjDrC,EAAM+C,OAAS,SAAU3H,EAAUr6B,GAUjC,IAAIpD,EAAS26B,EARb8C,EAAW+E,EAAiB/E,GAEG,mBAA3BvgD,EAASvG,KAAKysB,KAChBA,EAAUA,EAAQvmB,KAAK,MAGzBumB,EAAUA,EAAU,IAAMA,EAAU,GAIpC,IAAK,IAAI5sB,EAAI,EAAGwY,EAAMyuC,EAASz+C,OAAQxI,EAAIwY,EAAKxY,IAG9CmkD,GADA36B,EAAUy9B,EAASjnD,IACDmkD,QAAQx1C,eAEiB,IAAvC,CAAC,QAAS,OAAOnC,QAAQ23C,KAC3BsJ,EAAWtJ,GAAS36B,GACpBA,EAAUA,EAAQ4kC,gBAG+B,IAA/C5kC,EAAQ66B,UAAU73C,QAAQ,kBAC5Bgd,EAAQ66B,WAAa,gBAAkBz3B,IAS7Ci/B,EAAMiB,OAAS,SAAU7F,EAAU5jD,GAEjC,IAAIwrD,GADJ5H,EAAW+E,EAAiB/E,IACDz+C,OAO3B,IALAnF,EAAUA,GAAW,IACbyrD,KAAOzrD,EAAQyrD,MAAQ,EAC/BzrD,EAAQ2V,SAAW3V,EAAQ2V,UAAY,KAGnC61C,EAaF,IAZA,IAAIrlC,EAAS5Q,EAAKkoB,EAAKiuB,EAAS,GAC9B/uD,EAAI,EACFgvD,EAAY,CACd5kD,KAAM,YACNyiD,OAAQ,GAENoC,EAAa,SAAUC,EAAS1lC,GAClC,OAAO,WACLojC,EAAOjkC,KAAKumC,EAAS1lC,KAIlBxpB,EAAI6uD,EAAa7uD,IAgBtB,GAfAwpB,EAAUy9B,EAASjnD,GACnB4Y,EAAMvV,EAAQ2V,UAAY,CACxB6f,EAAGrP,EAAQsK,YAAc,EACzBipB,EAAGvzB,EAAQwK,aAAe,GAG5B8M,EAAMxE,EAAO9S,GACbulC,EAAOl2B,EAAIiI,EAAI/W,KAAOnR,EAAIigB,EAC1Bk2B,EAAOhS,EAAIjc,EAAIhX,IAAMlR,EAAImkC,EAEzBiS,EAAU9B,MAAQ6B,EAAOl2B,EACzBm2B,EAAU/B,MAAQ8B,EAAOhS,EAEzB6P,EAAOziC,KAAK6kC,EAAWxlC,GAEnBnmB,EAAQyrD,MAAQ,GAAsB,OAAjBzrD,EAAQyrD,KAAe,CAM9CtwB,WAAWywB,EALG,CACZ7kD,KAAM,UACNyiD,OAAQ,GAGqBrjC,GAAUnmB,EAAQyrD,QASzDjD,EAAMsD,KAAO,SAAUlI,GAOrB,IALA,IAAIiI,EAAU,CACZ9kD,KAAM,UACNyiD,OAAQ,GAGD7sD,EAAI,EAAGwY,GANhByuC,EAAW+E,EAAiB/E,IAMGz+C,OAAQxI,EAAIwY,EAAKxY,IAC9C4sD,EAAOjkC,KAAKumC,EAASjI,EAASjnD,KAOlC6rD,EAAMuD,cAAgB,SAAU/rD,GAC9B6gC,QAAQzhC,MAAM,uIACdopD,EAAMlrB,KAAKt9B,IAGNwoD,KAETn+C,EAAE1B,UAAUk7B,OAAM,WAEhB2kB,MAAM+C,OAAO,qCAAsC,CAAC,gBACpD/C,MAAM+C,OAAO,YAAa,CAAC,iBAC3B/C,MAAM+C,OAAO,QAAS,CAAC,iBACvB/C,MAAM+C,OAAO,gBAAiB,CAAC,gBAC/B/C,MAAM+C,OAAO,eAAgB,CAAC,gBAC9B/C,MAAM+C,OAAO,wFAAyF,CAAC,gBACvG/C,MAAM+C,OAAO,cAAe,CAAC,gBAC7B/C,MAAM+C,OAAO,oCAAqC,CAAC,iBACnD/C,MAAMlrB,Y,oCCplBP,SAAUjzB,GAETA,EAAEzG,GAAG4S,OAAS,SAASxW,GACrB,IAMIipC,EAAW5+B,EAAE+oB,OAAO,GANT,CACb44B,WAAY,EACZC,OAAQ,GACRC,QAAS,kBACTC,aAAa,GAEuBnsD,GAWtC,IAAIosD,EAP4B,iBAAnBnjB,EAASgjB,OAiBtB,IAAII,EANE,EAAIhiD,EAAE4+B,EAASijB,SAAS/mD,QAAsC,iBAArB8jC,EAASijB,QAQxD,OAAOjpD,KAAKgjB,MAAK,WAEf,IAAIphB,EAAQwF,EAAEpH,MACVqpD,EAAaznD,EAAMq+B,cACnBqpB,EAAY1nD,EAAM6rC,aAClBsb,EAAa/iB,EAAS+iB,WACtBC,EAAShjB,EAASgjB,OAClBO,EAAY3nD,EAAMo0B,SAASxS,IAAMulC,EACjClnC,EAAcza,EAAE,eAAe6Z,MAAMqoC,GAAWpoC,OAAOmoC,GAAY3nC,SAAS,sBAC5EunC,EAAUjjB,EAASijB,QACnBO,EAAUpiD,EAAEtL,QAEhB,SAAS2tD,IAEP,IAAIC,EAAaF,EAAQl7B,YACrBq7B,EAAYV,EACZW,EAAchoD,EAAMod,SAASiC,SAEjCY,EAAYZ,MAAM2oC,GAEbR,GAAiC,iBAAZH,KAExBU,EADiBviD,EAAE6hD,GAASjzB,SAASxS,IACV6lC,EAAcN,GAG3C,GAAIQ,EAAYG,GAiBd,GAfG1jB,EAASkjB,aACVtnD,EAAM8f,SAASskB,EAASkjB,aAE1BtnD,EAAM6jB,MAAM5D,GAAad,IAAI,CAC3BrO,SAAU,QACV8Q,IAAKulC,EACL9nC,MAAO2oC,IAGLT,GACFvnD,EAAMmf,IAAI,CACRioC,OAAQA,IAIRI,GACEO,EAAYD,EAAW,CACzB,IAAIG,EAAQF,EAAYD,EAAaX,EACrCnnD,EAAMmf,IAAI,CACRyC,IAAKqmC,UAKR7jB,EAASkjB,aACVtnD,EAAMmd,YAAYinB,EAASkjB,aAE7BtnD,EAAMmf,IAAI,CACRrO,SAAU,SACV8Q,IAAK,KACLC,KAAM,KACNxC,MAAO,SAGTY,EAAY5C,SAIbuqC,EAAQ5sB,cAAgBysB,IAEzBG,EAAQtuD,KAAK,SAAUuuD,GACvBD,EAAQtuD,KAAK,OAAQuuD,GACrBD,EAAQtuD,KAAK,SAAUuuD,QArG9B,CAyGE5iC,S,6BCnHH,IAAI1S,EAAgC,EAAQ,IACxC7V,EAAW,EAAQ,GACnBO,EAAyB,EAAQ,IACjCirD,EAAY,EAAQ,KACpBz1C,EAAa,EAAQ,IAGzBF,EAA8B,SAAU,GAAG,SAAU41C,EAAQC,EAAcv1C,GACzE,MAAO,CAGL,SAAgB9D,GACd,IAAIlS,EAAII,EAAuBmB,MAC3BiqD,EAAqBtsD,MAAVgT,OAAsBhT,EAAYgT,EAAOo5C,GACxD,YAAoBpsD,IAAbssD,EAAyBA,EAASpwD,KAAK8W,EAAQlS,GAAK,IAAI6N,OAAOqE,GAAQo5C,GAAQ3rD,OAAOK,KAI/F,SAAUkS,GACR,IAAIiE,EAAMH,EAAgBu1C,EAAcr5C,EAAQ3Q,MAChD,GAAI4U,EAAInL,KAAM,OAAOmL,EAAIja,MAEzB,IAAIka,EAAKvW,EAASqS,GACd8B,EAAIrU,OAAO4B,MAEXkqD,EAAoBr1C,EAAGnI,UACtBo9C,EAAUI,EAAmB,KAAIr1C,EAAGnI,UAAY,GACrD,IAAI1K,EAASqS,EAAWQ,EAAIpC,GAE5B,OADKq3C,EAAUj1C,EAAGnI,UAAWw9C,KAAoBr1C,EAAGnI,UAAYw9C,GAC9C,OAAXloD,GAAmB,EAAIA,EAAOG,Y,cC5B3C1I,EAAOD,QAAUY,OAAO+qB,IAAM,SAAYoN,EAAGkkB,GAE3C,OAAOlkB,IAAMkkB,EAAU,IAANlkB,GAAW,EAAIA,GAAM,EAAIkkB,EAAIlkB,GAAKA,GAAKkkB,GAAKA,I,8CCEpDz6C,EAAQspD,E;;;;;GAARtpD,OAIT,EAJiBspD,EAIV,WAEP,SAAS/qD,EAAI2oB,GACX,OAAOg7B,iBAAiBh7B,GAG1B,SAASjgB,EAAIigB,EAAS0iC,GACpB,IAAK,IAAI3qD,KAAO2qD,EAAK,CACnB,IAAIhlD,EAAMglD,EAAI3qD,GACK,iBAAR2F,IACTA,GAAY,MAEdsiB,EAAQ7d,MAAMpK,GAAO2F,EAEvB,OAAOsiB,EAGT,SAASinC,EAAIpM,GACX,IAAIoM,EAAMzkD,SAASf,cAAc,OAEjC,OADAwlD,EAAIpM,UAAYA,EACToM,EAGT,IAAIC,EACiB,oBAAZC,UACNA,QAAQ/uD,UAAUgvD,SACjBD,QAAQ/uD,UAAUivD,uBAClBF,QAAQ/uD,UAAUkvD,oBAClBH,QAAQ/uD,UAAUmvD,mBAEtB,SAASH,EAAQpnC,EAASwnC,GACxB,IAAKN,EACH,MAAM,IAAIzU,MAAM,wCAGlB,OAAOyU,EAAUvwD,KAAKqpB,EAASwnC,GAGjC,SAASzrC,EAAOiE,GACVA,EAAQjE,OACViE,EAAQjE,SAEJiE,EAAQ+3B,YACV/3B,EAAQ+3B,WAAWyE,YAAYx8B,GAKrC,SAASynC,EAAcznC,EAASoU,GAC9B,OAAOpzB,MAAM5I,UAAUgH,OAAOzI,KAAKqpB,EAAQlI,UAAU,SAAU4vC,GAAS,OAAON,EAAQM,EAAOtzB,MAIhG,IAAIuzB,EAAM,CACRC,KAAM,KACNC,IAAK,UACL7nC,QAAS,CACP8nC,MAAO,SAAUz4B,GAAK,MAAQ,aAAeA,GAC7C04B,KAAM,SAAU14B,GAAK,MAAQ,YAAcA,GAC3C24B,UAAW,sBAEbrnD,MAAO,CACL6oB,MAAO,YACPy+B,SAAU,eACVtlC,OAAQ,SAAU0M,GAAK,MAAQ,cAAgBA,GAC/C64B,UAAW,SAAU74B,GAAK,MAAQ,iBAAmBA,KAOrD84B,EAAwB,CAAE94B,EAAG,KAAMkkB,EAAG,MAE1C,SAAS6U,EAAkB5xD,EAAG64B,GAC5B,IAAImM,EAAYhlC,EAAEwpB,QAAQwb,UACtBqf,EAAY8M,EAAIhnD,MAAMunD,UAAU74B,GAEhCmM,EAAU0oB,SAASrJ,GACrB8C,aAAawK,EAAsB94B,IAEnCmM,EAAUof,IAAIC,GAIlB,SAASwN,EAAqB7xD,EAAG64B,GAC/B84B,EAAsB94B,GAAK2F,YACzB,WAAc,OAAOx+B,EAAE8xD,SAAW9xD,EAAEwpB,QAAQwb,UAAUzf,OAAO4rC,EAAIhnD,MAAMunD,UAAU74B,MACjF74B,EAAEssC,SAASylB,oBASf,IAAIC,EAAe,SAAsBxoC,GACvCljB,KAAKkjB,QAAUA,EACfljB,KAAK2rD,SAAW,IAGdC,EAAqB,CAAEC,QAAS,CAAEtrD,cAAc,IAEpDmrD,EAAapwD,UAAUJ,KAAO,SAAe4wD,EAAW9iC,QACd,IAA7BhpB,KAAK2rD,SAASG,KACvB9rD,KAAK2rD,SAASG,GAAa,IAE7B9rD,KAAK2rD,SAASG,GAAW5sD,KAAK8pB,GAC9BhpB,KAAKkjB,QAAQ6U,iBAAiB+zB,EAAW9iC,GAAS,IAGpD0iC,EAAapwD,UAAUyxC,OAAS,SAAiB+e,EAAW7uD,GACxD,IAAI8uD,EAAS/rD,KAEfA,KAAK2rD,SAASG,GAAa9rD,KAAK2rD,SAASG,GAAWxpD,QAAO,SAAU0mB,GACnE,SAAI/rB,GAAU+rB,IAAY/rB,KAG1B8uD,EAAO7oC,QAAQgkC,oBAAoB4E,EAAW9iC,GAAS,IAChD,OAIX0iC,EAAapwD,UAAU0wD,UAAY,WACjC,IAAK,IAAI/xD,KAAQ+F,KAAK2rD,SACpB3rD,KAAK+sC,OAAO9yC,IAIhB2xD,EAAmBC,QAAQtxD,IAAM,WAC7B,IAAIwxD,EAAS/rD,KAEf,OAAO5F,OAAOuI,KAAK3C,KAAK2rD,UAAUnpD,OAChC,SAAUvH,GAAO,OAAuC,IAAhC8wD,EAAOJ,SAAS1wD,GAAKiH,WAIjD9H,OAAOwK,iBAAkB8mD,EAAapwD,UAAWswD,GAEjD,IAAIK,EAAe,WACjBjsD,KAAKksD,cAAgB,IAwCvB,SAASC,EAAYlyD,GACnB,GAAkC,mBAAvB6B,OAAOswD,YAChB,OAAO,IAAIA,YAAYnyD,GAEvB,IAAIoyD,EAAM3mD,SAASymD,YAAY,eAE/B,OADAE,EAAIC,gBAAgBryD,GAAM,GAAO,OAAO0D,GACjC0uD,EAIX,SAASE,EACP7yD,EACAomD,EACA+J,EACA2C,EACAC,GAKA,IAAIC,EACJ,QAJ2B,IAAtBF,IAA+BA,GAAoB,QAC3B,IAAxBC,IAAiCA,GAAsB,GAG/C,QAAT3M,EACF4M,EAAS,CACP,gBACA,kBACA,YACA,IACA,KACA,YACG,IAAa,SAAT5M,EAST,MAAM,IAAInK,MAAM,oCARhB+W,EAAS,CACP,eACA,iBACA,aACA,IACA,OACA,UAQN,SACEhzD,EACAmwD,EACA8C,EACAH,EACAC,GAEA,IAAIG,EAAgBD,EAAI,GACpBE,EAAkBF,EAAI,GACtBr+B,EAAYq+B,EAAI,GAChBlW,EAAIkW,EAAI,GACRG,EAAKH,EAAI,GACTI,EAAOJ,EAAI,QACY,IAAtBH,IAA+BA,GAAoB,QAC3B,IAAxBC,IAAiCA,GAAsB,GAE5D,IAAIvpC,EAAUxpB,EAAEwpB,QAGhBxpB,EAAEszD,MAAMvW,GAAK,KAGTvzB,EAAQoL,GAAa,IACvB50B,EAAEszD,MAAMvW,GAAK,SAIXvzB,EAAQoL,GAAa50B,EAAEkzD,GAAiBlzD,EAAEmzD,GAAmB,IAC/DnzD,EAAEszD,MAAMvW,GAAK,OAGXoT,IACF3mC,EAAQ6M,cAAco8B,EAAa,aAAe1V,IAE9CoT,EAAO,EACT3mC,EAAQ6M,cAAco8B,EAAa,aAAeW,IACzCjD,EAAO,GAChB3mC,EAAQ6M,cAAco8B,EAAa,aAAeY,IAGhDP,GA7KR,SAAoC9yD,EAAG64B,GACrC+4B,EAAkB5xD,EAAG64B,GACrBg5B,EAAqB7xD,EAAG64B,GA4KpB06B,CAA2BvzD,EAAG+8C,IAI9B/8C,EAAEszD,MAAMvW,KAAOoT,GAAQ4C,IACzBvpC,EAAQ6M,cAAco8B,EAAa,MAAQ1V,EAAI,UAAa/8C,EAAEszD,MAAMvW,KAjDtEyW,CAAoBxzD,EAAGmwD,EAAM6C,EAAQF,EAAmBC,GAqD1D,SAASU,EAAM56B,GACb,OAAO1U,SAAS0U,EAAG,KAAO,EApI5B05B,EAAa3wD,UAAU8xD,aAAe,SAAuBlqC,GAC3D,IAAImqC,EAAKrtD,KAAKksD,cAAc5pD,QAAO,SAAU+qD,GAAM,OAAOA,EAAGnqC,UAAYA,KAAY,GAKrF,OAJKmqC,IACHA,EAAK,IAAI3B,EAAaxoC,GACtBljB,KAAKksD,cAAchtD,KAAKmuD,IAEnBA,GAGTpB,EAAa3wD,UAAUJ,KAAO,SAAegoB,EAAS4oC,EAAW9iC,GAC/DhpB,KAAKotD,aAAalqC,GAAShoB,KAAK4wD,EAAW9iC,IAG7CijC,EAAa3wD,UAAUyxC,OAAS,SAAiB7pB,EAAS4oC,EAAW9iC,GACnE,IAAIqkC,EAAKrtD,KAAKotD,aAAalqC,GAC3BmqC,EAAGtgB,OAAO+e,EAAW9iC,GAEjBqkC,EAAGxB,SAEL7rD,KAAKksD,cAAcvvC,OAAO3c,KAAKksD,cAAchmD,QAAQmnD,GAAK,IAI9DpB,EAAa3wD,UAAU0wD,UAAY,WACjChsD,KAAKksD,cAAc9pD,SAAQ,SAAU4G,GAAK,OAAOA,EAAEgjD,eACnDhsD,KAAKksD,cAAgB,IAGvBD,EAAa3wD,UAAUgyD,KAAO,SAAepqC,EAAS4oC,EAAW9iC,GAC/D,IAAIqkC,EAAKrtD,KAAKotD,aAAalqC,GAK3BmqC,EAAGnyD,KAAK4wD,GAJU,SAAdyB,EAAwBlB,GAC1BgB,EAAGtgB,OAAO+e,EAAWyB,GACrBvkC,EAAQqjC,OA2HZ,IAAImB,EAAM,CACRC,SACsB,oBAAb/nD,UACP,qBAAsBA,SAASu4B,gBAAgB54B,MACjDqoD,cACoB,oBAAX5xD,SACN,iBAAkBA,QAChB,mBAAoBA,OAAO8sB,WAC1B9sB,OAAO8sB,UAAU+kC,eAAiB,GACnC7xD,OAAO8xD,eAAiBloD,oBAAoB5J,OAAO8xD,eACxDC,kBACuB,oBAAdjlC,WAA6BA,UAAUklC,iBAChDjU,SACuB,oBAAdjxB,WACP,UAAU3f,KAAK2f,WAAaA,UAAUC,YAG1C,SAASklC,EAAer0D,GACtB,IAAIwpB,EAAUxpB,EAAEwpB,QACZ8qC,EAAmBryD,KAAKuE,MAAMgjB,EAAQoL,WACtC2/B,EAAO/qC,EAAQ4a,wBAEnBpkC,EAAEw0D,eAAiBvyD,KAAKsE,KAAKguD,EAAKhtC,OAClCvnB,EAAEmzD,gBAAkBlxD,KAAKsE,KAAKguD,EAAK/sC,QACnCxnB,EAAEy0D,aAAejrC,EAAQkrC,YACzB10D,EAAEkzD,cAAgB1pC,EAAQyI,aAErBzI,EAAQkkC,SAAS1tD,EAAE20D,kBAEtB1D,EAAcznC,EAAS2nC,EAAI3nC,QAAQ+nC,KAAK,MAAM7oD,SAAQ,SAAUoE,GAAM,OAAOyY,EAAOzY,MAEpF0c,EAAQ3d,YAAY7L,EAAE20D,iBAEnBnrC,EAAQkkC,SAAS1tD,EAAE40D,kBAEtB3D,EAAcznC,EAAS2nC,EAAI3nC,QAAQ+nC,KAAK,MAAM7oD,SAAQ,SAAUoE,GAAM,OAAOyY,EAAOzY,MAEpF0c,EAAQ3d,YAAY7L,EAAE40D,kBAIrB50D,EAAEssC,SAASuoB,iBACZ70D,EAAEw0D,eAAiBx0D,EAAEssC,SAASwoB,oBAAsB90D,EAAEy0D,cAEtDz0D,EAAE+0D,kBAAmB,EACrB/0D,EAAEg1D,WAAah1D,EAAEw0D,eAAiBx0D,EAAEi1D,iBACpCj1D,EAAEk1D,WAAal1D,EAAEw0D,eAAiBx0D,EAAEg1D,WACpCh1D,EAAEm1D,gBAAkBC,EAClBp1D,EACAyzD,EAAOzzD,EAAEg1D,WAAah1D,EAAEw0D,eAAkBx0D,EAAEy0D,eAE9Cz0D,EAAEq1D,eAAiB5B,GACfzzD,EAAEs1D,yBAA2B9rC,EAAQ2yB,aACpCn8C,EAAEg1D,WAAah1D,EAAEm1D,kBACjBn1D,EAAEy0D,aAAez0D,EAAEw0D,kBAGxBx0D,EAAE+0D,kBAAmB,GAIpB/0D,EAAEssC,SAASipB,iBACZv1D,EAAEmzD,gBAAkBnzD,EAAEssC,SAASkpB,oBAAsBx1D,EAAEkzD,eAEvDlzD,EAAEy1D,kBAAmB,EACrBz1D,EAAE01D,YAAc11D,EAAEmzD,gBAAkBnzD,EAAE21D,kBACtC31D,EAAE41D,WAAa51D,EAAEmzD,gBAAkBnzD,EAAE01D,YACrC11D,EAAE61D,iBAAmBT,EACnBp1D,EACAyzD,EAAOzzD,EAAE01D,YAAc11D,EAAEmzD,gBAAmBnzD,EAAEkzD,gBAEhDlzD,EAAE81D,cAAgBrC,EACfa,GAAoBt0D,EAAE01D,YAAc11D,EAAE61D,mBACpC71D,EAAEkzD,cAAgBlzD,EAAEmzD,mBAGzBnzD,EAAEy1D,kBAAmB,EAGnBz1D,EAAEq1D,gBAAkBr1D,EAAEg1D,WAAah1D,EAAEm1D,kBACvCn1D,EAAEq1D,eAAiBr1D,EAAEg1D,WAAah1D,EAAEm1D,iBAElCn1D,EAAE81D,eAAiB91D,EAAE01D,YAAc11D,EAAE61D,mBACvC71D,EAAE81D,cAAgB91D,EAAE01D,YAAc11D,EAAE61D,kBAiCxC,SAAmBrsC,EAASxpB,GAC1B,IAAI+1D,EAAc,CAAExuC,MAAOvnB,EAAEg1D,YACzBV,EAAmBryD,KAAKuE,MAAMgjB,EAAQoL,WAEtC50B,EAAEg2D,MACJD,EAAYhsC,KACV/pB,EAAEs1D,yBACF9rC,EAAQ2yB,WACRn8C,EAAEw0D,eACFx0D,EAAEy0D,aAEJsB,EAAYhsC,KAAOP,EAAQ2yB,WAEzBn8C,EAAEi2D,wBACJF,EAAYG,OAASl2D,EAAEm2D,iBAAmB7B,EAE1CyB,EAAYjsC,IAAM9pB,EAAEo2D,cAAgB9B,EAEtC/qD,EAAIvJ,EAAE20D,eAAgBoB,GAEtB,IAAIM,EAAc,CAAEvsC,IAAKwqC,EAAkB9sC,OAAQxnB,EAAE01D,aACjD11D,EAAEs2D,uBACAt2D,EAAEg2D,MACJK,EAAYr/B,MACVh3B,EAAEy0D,cACDz0D,EAAEs1D,yBAA2B9rC,EAAQ2yB,YACtCn8C,EAAEu2D,gBACFv2D,EAAEw2D,qBACF,EAEFH,EAAYr/B,MAAQh3B,EAAEu2D,gBAAkB/sC,EAAQ2yB,WAG9Cn8C,EAAEg2D,MACJK,EAAYtsC,KACV/pB,EAAEs1D,yBACF9rC,EAAQ2yB,WACW,EAAnBn8C,EAAEw0D,eACFx0D,EAAEy0D,aACFz0D,EAAEy2D,eACFz2D,EAAEw2D,qBAEJH,EAAYtsC,KAAO/pB,EAAEy2D,eAAiBjtC,EAAQ2yB,WAGlD5yC,EAAIvJ,EAAE40D,eAAgByB,GAEtB9sD,EAAIvJ,EAAE02D,WAAY,CAChB3sC,KAAM/pB,EAAEq1D,eACR9tC,MAAOvnB,EAAEm1D,gBAAkBn1D,EAAE22D,mBAE/BptD,EAAIvJ,EAAE42D,WAAY,CAChB9sC,IAAK9pB,EAAE81D,cACPtuC,OAAQxnB,EAAE61D,iBAAmB71D,EAAE62D,mBAnFjCC,CAAUttC,EAASxpB,GAEfA,EAAE+0D,iBACJvrC,EAAQwb,UAAUof,IAAI+M,EAAIhnD,MAAMgiB,OAAO,OAEvC3C,EAAQwb,UAAUzf,OAAO4rC,EAAIhnD,MAAMgiB,OAAO,MAC1CnsB,EAAEm1D,gBAAkB,EACpBn1D,EAAEq1D,eAAiB,EACnB7rC,EAAQ2yB,YAAyB,IAAZn8C,EAAEg2D,MAAiBh2D,EAAEy0D,aAAe,GAEvDz0D,EAAEy1D,iBACJjsC,EAAQwb,UAAUof,IAAI+M,EAAIhnD,MAAMgiB,OAAO,OAEvC3C,EAAQwb,UAAUzf,OAAO4rC,EAAIhnD,MAAMgiB,OAAO,MAC1CnsB,EAAE61D,iBAAmB,EACrB71D,EAAE81D,cAAgB,EAClBtsC,EAAQoL,UAAY,GAIxB,SAASwgC,EAAap1D,EAAG+2D,GAOvB,OANI/2D,EAAEssC,SAAS0qB,qBACbD,EAAY90D,KAAKyK,IAAIqqD,EAAW/2D,EAAEssC,SAAS0qB,qBAEzCh3D,EAAEssC,SAAS2qB,qBACbF,EAAY90D,KAAKoD,IAAI0xD,EAAW/2D,EAAEssC,SAAS2qB,qBAEtCF,EAmHT,SAASG,EACPl3D,EACAizD,GAEA,IAAIE,EAAkBF,EAAI,GACtBC,EAAgBD,EAAI,GACpBhG,EAAQgG,EAAI,GACZyC,EAAczC,EAAI,GAClB2D,EAAa3D,EAAI,GACjB4C,EAAmB5C,EAAI,GACvBr+B,EAAYq+B,EAAI,GAChBlW,EAAIkW,EAAI,GACR2B,EAAiB3B,EAAI,GAErBzpC,EAAUxpB,EAAEwpB,QAEZ2tC,EAAoB,KACpBC,EAAqB,KACrBC,EAAW,KAEf,SAASC,EAAiBhoD,GACpBA,EAAE0/B,SAAW1/B,EAAE0/B,QAAQ,KACzB1/B,EAAE29C,GAAS39C,EAAE0/B,QAAQ,GAAGie,OAE1BzjC,EAAQoL,GACNuiC,EAAoBE,GAAY/nD,EAAE29C,GAASmK,GAC7CxF,EAAkB5xD,EAAG+8C,GACrBsX,EAAer0D,GAEfsP,EAAE+b,kBACF/b,EAAEogB,iBAGJ,SAAS6nC,IACP1F,EAAqB7xD,EAAG+8C,GACxB/8C,EAAE40D,GAAgB5vB,UAAUzf,OAAO4rC,EAAIhnD,MAAMsnD,UAC7CzxD,EAAEo+B,MAAMiV,OAAOrzC,EAAEusD,cAAe,YAAa+K,GAG/C,SAASE,EAAUloD,EAAGmoD,GACpBN,EAAoB3tC,EAAQoL,GACxB6iC,GAAanoD,EAAE0/B,UACjB1/B,EAAE29C,GAAS39C,EAAE0/B,QAAQ,GAAGie,OAE1BmK,EAAqB9nD,EAAE29C,GACvBoK,GACGr3D,EAAEkzD,GAAiBlzD,EAAEmzD,KACrBnzD,EAAE01D,GAAe11D,EAAE61D,IACjB4B,EAKHz3D,EAAEo+B,MAAM58B,KAAKxB,EAAEusD,cAAe,YAAa+K,IAJ3Ct3D,EAAEo+B,MAAM58B,KAAKxB,EAAEusD,cAAe,YAAa+K,GAC3Ct3D,EAAEo+B,MAAMw1B,KAAK5zD,EAAEusD,cAAe,UAAWgL,GACzCjoD,EAAEogB,kBAKJ1vB,EAAE40D,GAAgB5vB,UAAUof,IAAI+M,EAAIhnD,MAAMsnD,UAE1CniD,EAAE+b,kBAGJrrB,EAAEo+B,MAAM58B,KAAKxB,EAAE42D,GAAa,aAAa,SAAUtnD,GACjDkoD,EAAUloD,MAEZtP,EAAEo+B,MAAM58B,KAAKxB,EAAE42D,GAAa,cAAc,SAAUtnD,GAClDkoD,EAAUloD,GAAG,MAigBjB,IAeI2iD,EAAW,CACb,aAzoBF,SAAmBjyD,GACHA,EAAEwpB,QAEhBxpB,EAAEo+B,MAAM58B,KAAKxB,EAAE42D,WAAY,aAAa,SAAUtnD,GAAK,OAAOA,EAAE+b,qBAChErrB,EAAEo+B,MAAM58B,KAAKxB,EAAE40D,eAAgB,aAAa,SAAUtlD,GACpD,IAIIs1C,EAHFt1C,EAAE29C,MACF7qD,OAAOoiC,YACPxkC,EAAE40D,eAAexwB,wBAAwBta,IACb9pB,EAAE81D,cAAgB,GAAK,EAErD91D,EAAEwpB,QAAQoL,WAAagwB,EAAY5kD,EAAEmzD,gBACrCkB,EAAer0D,GAEfsP,EAAE+b,qBAGJrrB,EAAEo+B,MAAM58B,KAAKxB,EAAE02D,WAAY,aAAa,SAAUpnD,GAAK,OAAOA,EAAE+b,qBAChErrB,EAAEo+B,MAAM58B,KAAKxB,EAAE20D,eAAgB,aAAa,SAAUrlD,GACpD,IAIIs1C,EAHFt1C,EAAE49C,MACF9qD,OAAO85C,YACPl8C,EAAE20D,eAAevwB,wBAAwBra,KACZ/pB,EAAEq1D,eAAiB,GAAK,EAEvDr1D,EAAEwpB,QAAQ2yB,YAAcyI,EAAY5kD,EAAEw0D,eACtCH,EAAer0D,GAEfsP,EAAE+b,sBA8mBJ,aA1mBF,SAAmBrrB,GACjBk3D,EAAuBl3D,EAAG,CACxB,iBACA,eACA,QACA,aACA,aACA,kBACA,aACA,IACA,mBACFk3D,EAAuBl3D,EAAG,CACxB,kBACA,gBACA,QACA,cACA,aACA,mBACA,YACA,IACA,oBAulBF03D,SA/gBF,SAAkB13D,GAChB,IAAIwpB,EAAUxpB,EAAEwpB,QAkChBxpB,EAAEo+B,MAAM58B,KAAKxB,EAAEusD,cAAe,WAAW,SAAUj9C,GACjD,KACGA,EAAEqoD,oBAAsBroD,EAAEqoD,sBAC3BroD,EAAEsoD,oBAnCoChH,EAAQpnC,EAAS,WACfonC,EAAQ5wD,EAAE02D,WAAY,WAAa9F,EAAQ5wD,EAAE42D,WAAY,WAuCnG,CAIA,IA5WgB9pD,EA4WZ+qD,EAAgB7rD,SAAS6rD,cACzB7rD,SAAS6rD,cACT73D,EAAEusD,cAAcsL,cACpB,GAAIA,EAAe,CACjB,GAA8B,WAA1BA,EAAc1T,QAChB0T,EAAgBA,EAAcC,gBAAgBD,mBAG9C,KAAOA,EAAcE,YACnBF,EAAgBA,EAAcE,WAAWF,cAG7C,GAtXFjH,EAFgB9jD,EAwXC+qD,EAtXL,4BACZjH,EAAQ9jD,EAAI,6BACZ8jD,EAAQ9jD,EAAI,+BACZ8jD,EAAQ9jD,EAAI,4BAoXR,OAIJ,IAAIkrD,EAAS,EACTC,EAAS,EAEb,OAAQ3oD,EAAE2gB,OACR,KAAK,GAED+nC,EADE1oD,EAAE4oD,SACMl4D,EAAEy0D,aACHnlD,EAAEmhB,QACDzwB,EAAEw0D,gBAEF,GAEZ,MACF,KAAK,GAEDyD,EADE3oD,EAAE4oD,QACKl4D,EAAEkzD,cACF5jD,EAAEmhB,OACFzwB,EAAEmzD,gBAEF,GAEX,MACF,KAAK,GAED6E,EADE1oD,EAAE4oD,QACKl4D,EAAEy0D,aACFnlD,EAAEmhB,OACFzwB,EAAEw0D,eAEF,GAEX,MACF,KAAK,GAEDyD,EADE3oD,EAAE4oD,SACMl4D,EAAEkzD,cACH5jD,EAAEmhB,QACDzwB,EAAEmzD,iBAEF,GAEZ,MACF,KAAK,GAED8E,EADE3oD,EAAEyjB,SACK/yB,EAAEmzD,iBAEDnzD,EAAEmzD,gBAEd,MACF,KAAK,GACH8E,EAASj4D,EAAEmzD,gBACX,MACF,KAAK,GACH8E,GAAUj4D,EAAEmzD,gBACZ,MACF,KAAK,GACH8E,EAASj4D,EAAEkzD,cACX,MACF,KAAK,GACH+E,GAAUj4D,EAAEkzD,cACZ,MACF,QACE,OAGAlzD,EAAEssC,SAASuoB,iBAA8B,IAAXmD,GAG9Bh4D,EAAEssC,SAASipB,iBAA8B,IAAX0C,IAIlCzuC,EAAQoL,WAAaqjC,EACrBzuC,EAAQ2yB,YAAc6b,EACtB3D,EAAer0D,GAlIjB,SAA8Bg4D,EAAQC,GACpC,IAAIrjC,EAAY3yB,KAAKuE,MAAMgjB,EAAQoL,WACnC,GAAe,IAAXojC,EAAc,CAChB,IAAKh4D,EAAEy1D,iBACL,OAAO,EAET,GACiB,IAAd7gC,GAAmBqjC,EAAS,GAC5BrjC,GAAa50B,EAAEkzD,cAAgBlzD,EAAEmzD,iBAAmB8E,EAAS,EAE9D,OAAQj4D,EAAEssC,SAAS6rB,iBAIvB,IAAIhc,EAAa3yB,EAAQ2yB,WACzB,GAAe,IAAX8b,EAAc,CAChB,IAAKj4D,EAAE+0D,iBACL,OAAO,EAET,GACkB,IAAf5Y,GAAoB6b,EAAS,GAC7B7b,GAAcn8C,EAAEy0D,aAAez0D,EAAEw0D,gBAAkBwD,EAAS,EAE7D,OAAQh4D,EAAEssC,SAAS6rB,iBAGvB,OAAO,EA0GHC,CAAqBJ,EAAQC,IAC/B3oD,EAAEogB,uBAqYN2oC,MAhYF,SAAer4D,GACb,IAAIwpB,EAAUxpB,EAAEwpB,QAsGhB,SAAS8uC,EAAkBhpD,GACzB,IAAI2jD,EAhFN,SAA2B3jD,GACzB,IAAI0oD,EAAS1oD,EAAE0oD,OACXC,GAAU,EAAI3oD,EAAE2oD,OAoBpB,YAlBsB,IAAXD,QAA4C,IAAXC,IAE1CD,GAAW,EAAI1oD,EAAEipD,YAAe,EAChCN,EAAS3oD,EAAEkpD,YAAc,GAGvBlpD,EAAEmpD,WAA6B,IAAhBnpD,EAAEmpD,YAEnBT,GAAU,GACVC,GAAU,IAGRD,GAAWA,GAAUC,GAAWA,IAElCD,EAAS,EACTC,EAAS3oD,EAAEopD,YAGTppD,EAAEyjB,SAEG,EAAEklC,GAASD,GAEb,CAACA,EAAQC,GAsDNU,CAAkBrpD,GACxB0oD,EAAS/E,EAAI,GACbgF,EAAShF,EAAI,GAEjB,IAvDF,SAAiC1vD,EAAQy0D,EAAQC,GAE/C,IAAKnE,EAAIC,UAAYvqC,EAAQovC,cAAc,gBACzC,OAAO,EAGT,IAAKpvC,EAAQkkC,SAASnqD,GACpB,OAAO,EAKT,IAFA,IAAIs1D,EAASt1D,EAENs1D,GAAUA,IAAWrvC,GAAS,CACnC,GAAIqvC,EAAO7zB,UAAU0oB,SAASyD,EAAI3nC,QAAQgoC,WACxC,OAAO,EAGT,IAAI7lD,EAAQ9K,EAAIg4D,GAGhB,GAAIZ,GAAUtsD,EAAMmtD,UAAU1lD,MAAM,iBAAkB,CACpD,IAAI2lD,EAAeF,EAAO5mC,aAAe4mC,EAAO7kC,aAChD,GAAI+kC,EAAe,IAEdF,EAAOjkC,UAAY,GAAKqjC,EAAS,GACjCY,EAAOjkC,UAAYmkC,GAAgBd,EAAS,GAE7C,OAAO,EAKb,GAAID,GAAUrsD,EAAMqtD,UAAU5lD,MAAM,iBAAkB,CACpD,IAAI6lD,EAAgBJ,EAAOnE,YAAcmE,EAAO/kC,YAChD,GAAImlC,EAAgB,IAEfJ,EAAO1c,WAAa,GAAK6b,EAAS,GAClCa,EAAO1c,WAAa8c,GAAiBjB,EAAS,GAE/C,OAAO,EAKba,EAASA,EAAOtX,WAGlB,OAAO,EAQH2X,CAAwB5pD,EAAE/L,OAAQy0D,EAAQC,GAA9C,CAIA,IAAIkB,GAAgB,EACfn5D,EAAEssC,SAAS8sB,iBAKLp5D,EAAEy1D,mBAAqBz1D,EAAE+0D,kBAG9BkD,EACFzuC,EAAQoL,WAAaqjC,EAASj4D,EAAEssC,SAAS+sB,WAEzC7vC,EAAQoL,WAAaojC,EAASh4D,EAAEssC,SAAS+sB,WAE3CF,GAAgB,GACPn5D,EAAE+0D,mBAAqB/0D,EAAEy1D,mBAG9BuC,EACFxuC,EAAQ2yB,YAAc6b,EAASh4D,EAAEssC,SAAS+sB,WAE1C7vC,EAAQ2yB,YAAc8b,EAASj4D,EAAEssC,SAAS+sB,WAE5CF,GAAgB,IAnBhB3vC,EAAQoL,WAAaqjC,EAASj4D,EAAEssC,SAAS+sB,WACzC7vC,EAAQ2yB,YAAc6b,EAASh4D,EAAEssC,SAAS+sB,YAqB5ChF,EAAer0D,IAEfm5D,EAAgBA,GAzIlB,SAA8BnB,EAAQC,GACpC,IAAI3D,EAAmBryD,KAAKuE,MAAMgjB,EAAQoL,WACtC0kC,EAA8B,IAAtB9vC,EAAQoL,UAChB2kC,EACFjF,EAAmB9qC,EAAQ0I,eAAiB1I,EAAQyI,aAClDunC,EAAgC,IAAvBhwC,EAAQ2yB,WACjBsd,EACFjwC,EAAQ2yB,WAAa3yB,EAAQ+6B,cAAgB/6B,EAAQkrC,YAWvD,QANIzyD,KAAKm4B,IAAI69B,GAAUh2D,KAAKm4B,IAAI49B,GAClBsB,GAASC,EAETC,GAAUC,KAGJz5D,EAAEssC,SAAS6rB,iBAuHEC,CAAqBJ,EAAQC,MACxC3oD,EAAEoqD,UACtBpqD,EAAE+b,kBACF/b,EAAEogB,wBAIwB,IAAnBttB,OAAOu3D,QAChB35D,EAAEo+B,MAAM58B,KAAKgoB,EAAS,QAAS8uC,QACS,IAAxBl2D,OAAOw3D,cACvB55D,EAAEo+B,MAAM58B,KAAKgoB,EAAS,aAAc8uC,IA2OtC9oB,MAvOF,SAAexvC,GACb,GAAK8zD,EAAIE,eAAkBF,EAAIK,kBAA/B,CAIA,IAAI3qC,EAAUxpB,EAAEwpB,QAuCZqwC,EAAc,GACdhsB,EAAY,EACZisB,EAAQ,GACRC,EAAa,KAmJbjG,EAAIE,eACNh0D,EAAEo+B,MAAM58B,KAAKgoB,EAAS,aAAcwwC,GACpCh6D,EAAEo+B,MAAM58B,KAAKgoB,EAAS,YAAaklC,GACnC1uD,EAAEo+B,MAAM58B,KAAKgoB,EAAS,WAAYywC,IACzBnG,EAAIK,oBACT/xD,OAAO83D,cACTl6D,EAAEo+B,MAAM58B,KAAKgoB,EAAS,cAAewwC,GACrCh6D,EAAEo+B,MAAM58B,KAAKgoB,EAAS,cAAeklC,GACrC1uD,EAAEo+B,MAAM58B,KAAKgoB,EAAS,YAAaywC,IAC1B73D,OAAO+3D,iBAChBn6D,EAAEo+B,MAAM58B,KAAKgoB,EAAS,gBAAiBwwC,GACvCh6D,EAAEo+B,MAAM58B,KAAKgoB,EAAS,gBAAiBklC,GACvC1uD,EAAEo+B,MAAM58B,KAAKgoB,EAAS,cAAeywC,KAzKzC,SAASG,EAAeC,EAAaC,GACnC9wC,EAAQoL,WAAa0lC,EACrB9wC,EAAQ2yB,YAAcke,EAEtBhG,EAAer0D,GAQjB,SAASu6D,EAASjrD,GAChB,OAAIA,EAAEkrD,cACGlrD,EAAEkrD,cAAc,GAGhBlrD,EAIX,SAASmrD,EAAanrD,GACpB,QAAIA,EAAEorD,aAAiC,QAAlBprD,EAAEorD,aAAuC,IAAdprD,EAAEqrD,WAG9CrrD,EAAEkrD,eAA4C,IAA3BlrD,EAAEkrD,cAAchyD,WAIrC8G,EAAEorD,aACgB,UAAlBprD,EAAEorD,aACFprD,EAAEorD,cAAgBprD,EAAEsrD,uBAOxB,SAASZ,EAAW1qD,GAClB,GAAKmrD,EAAanrD,GAAlB,CAIA,IAAIkgC,EAAQ+qB,EAASjrD,GAErBuqD,EAAY3M,MAAQ1d,EAAM0d,MAC1B2M,EAAY5M,MAAQzd,EAAMyd,MAE1Bpf,GAAY,IAAI9zB,MAAOE,UAEJ,OAAf8/C,GACFc,cAAcd,IAiDlB,SAASrL,EAAUp/C,GACjB,GAAImrD,EAAanrD,GAAI,CACnB,IAAIkgC,EAAQ+qB,EAASjrD,GAEjBwrD,EAAgB,CAAE5N,MAAO1d,EAAM0d,MAAOD,MAAOzd,EAAMyd,OAEnDoN,EAAcS,EAAc5N,MAAQ2M,EAAY3M,MAChDoN,EAAcQ,EAAc7N,MAAQ4M,EAAY5M,MAEpD,GAtDJ,SAAiC1pD,EAAQy0D,EAAQC,GAC/C,IAAKzuC,EAAQkkC,SAASnqD,GACpB,OAAO,EAKT,IAFA,IAAIs1D,EAASt1D,EAENs1D,GAAUA,IAAWrvC,GAAS,CACnC,GAAIqvC,EAAO7zB,UAAU0oB,SAASyD,EAAI3nC,QAAQgoC,WACxC,OAAO,EAGT,IAAI7lD,EAAQ9K,EAAIg4D,GAGhB,GAAIZ,GAAUtsD,EAAMmtD,UAAU1lD,MAAM,iBAAkB,CACpD,IAAI2lD,EAAeF,EAAO5mC,aAAe4mC,EAAO7kC,aAChD,GAAI+kC,EAAe,IAEdF,EAAOjkC,UAAY,GAAKqjC,EAAS,GACjCY,EAAOjkC,UAAYmkC,GAAgBd,EAAS,GAE7C,OAAO,EAKb,GAAID,GAAUrsD,EAAMqtD,UAAU5lD,MAAM,iBAAkB,CACpD,IAAI6lD,EAAgBJ,EAAOnE,YAAcmE,EAAO/kC,YAChD,GAAImlC,EAAgB,IAEfJ,EAAO1c,WAAa,GAAK6b,EAAS,GAClCa,EAAO1c,WAAa8c,GAAiBjB,EAAS,GAE/C,OAAO,EAKba,EAASA,EAAOtX,WAGlB,OAAO,EAYD2X,CAAwB5pD,EAAE/L,OAAQ82D,EAAaC,GACjD,OAGFF,EAAeC,EAAaC,GAC5BT,EAAciB,EAEd,IAAIC,GAAc,IAAIhhD,MAAOE,UAEzB+gD,EAAUD,EAAcltB,EACxBmtB,EAAU,IACZlB,EAAMjhC,EAAIwhC,EAAcW,EACxBlB,EAAM/c,EAAIud,EAAcU,EACxBntB,EAAYktB,GAxJlB,SAAuB/C,EAAQC,GAC7B,IAAIrjC,EAAY3yB,KAAKuE,MAAMgjB,EAAQoL,WAC/BunB,EAAa3yB,EAAQ2yB,WACrB8e,EAAah5D,KAAKm4B,IAAI49B,GACtBkD,EAAaj5D,KAAKm4B,IAAI69B,GAE1B,GAAIiD,EAAaD,GAGf,GACGhD,EAAS,GAAKrjC,IAAc50B,EAAEkzD,cAAgBlzD,EAAEmzD,iBAChD8E,EAAS,GAAmB,IAAdrjC,EAGf,OAA0B,IAAnBxyB,OAAO+gC,SAAiB80B,EAAS,GAAKnE,EAAI3T,cAE9C,GAAI8a,EAAaC,IAInBlD,EAAS,GAAK7b,IAAen8C,EAAEy0D,aAAez0D,EAAEw0D,gBAChDwD,EAAS,GAAoB,IAAf7b,GAEf,OAAO,EAIX,OAAO,EAgIDgd,CAAckB,EAAaC,IAC7BhrD,EAAEogB,kBAIR,SAASuqC,IACHj6D,EAAEssC,SAAS6uB,cACbN,cAAcd,GACdA,EAAaqB,aAAY,WACnBp7D,EAAEy2C,cACJokB,cAAcd,GAIXD,EAAMjhC,GAAMihC,EAAM/c,EAKnB96C,KAAKm4B,IAAI0/B,EAAMjhC,GAAK,KAAQ52B,KAAKm4B,IAAI0/B,EAAM/c,GAAK,IAClD8d,cAAcd,IAIhBK,EAAyB,GAAVN,EAAMjhC,EAAkB,GAAVihC,EAAM/c,GAEnC+c,EAAMjhC,GAAK,GACXihC,EAAM/c,GAAK,IAZT8d,cAAcd,KAaf,QA4CLsB,EAAmB,SAA0B7xC,EAAS8xC,GACxD,IAAIjJ,EAAS/rD,KAOb,QANsB,IAAjBg1D,IAA0BA,EAAe,IAEvB,iBAAZ9xC,IACTA,EAAUxd,SAAS4sD,cAAcpvC,KAG9BA,IAAYA,EAAQ8yB,SACvB,MAAM,IAAIL,MAAM,0DAQlB,IAAK,IAAI16C,KALT+E,KAAKkjB,QAAUA,EAEfA,EAAQwb,UAAUof,IAAI+M,EAAIC,MAE1B9qD,KAAKgmC,SAvCqC,CAC1C2lB,SAAU,CAAC,aAAc,aAAc,WAAY,QAAS,SAC5DgF,mBAAoB,KACpBD,mBAAoB,KACpBjF,mBAAoB,IACpB+C,oBAAqB,EACrBU,oBAAqB,EACrBX,iBAAiB,EACjBU,iBAAiB,EACjB4F,aAAa,EACb/B,kBAAkB,EAClBjB,kBAAkB,EAClBkB,WAAY,GA4BIiC,EACdh1D,KAAKgmC,SAAS/qC,GAAO+5D,EAAa/5D,GAGpC+E,KAAKkuD,eAAiB,KACtBluD,KAAK6sD,gBAAkB,KACvB7sD,KAAKmuD,aAAe,KACpBnuD,KAAK4sD,cAAgB,KAErB,IASM5qD,EADAizD,EARFvoC,EAAQ,WAAc,OAAOxJ,EAAQwb,UAAUof,IAAI+M,EAAIhnD,MAAM6oB,QAC7DkwB,EAAO,WAAc,OAAO15B,EAAQwb,UAAUzf,OAAO4rC,EAAIhnD,MAAM6oB,QAEnE1sB,KAAK0vD,MAAmC,QAA3Bn1D,EAAI2oB,GAASo7B,WACP,IAAft+C,KAAK0vD,OACPxsC,EAAQwb,UAAUof,IAAI+M,EAAIE,KAE5B/qD,KAAKk1D,kBACCD,EAAqB/xC,EAAQ2yB,WAEjC3yB,EAAQ2yB,YAAc,EACtB7zC,EAASkhB,EAAQ2yB,WAAa,EAC9B3yB,EAAQ2yB,WAAaof,EACdjzD,GAEThC,KAAKgvD,yBAA2BhvD,KAAKk1D,iBACjChyC,EAAQkrC,YAAclrC,EAAQsK,YAC9B,EACJxtB,KAAK83B,MAAQ,IAAIm0B,EACjBjsD,KAAKimD,cAAgB/iC,EAAQ+iC,eAAiBvgD,SAE9C1F,KAAKquD,eAAiBlE,EAAIU,EAAI3nC,QAAQ+nC,KAAK,MAC3C/nC,EAAQ3d,YAAYvF,KAAKquD,gBACzBruD,KAAKowD,WAAajG,EAAIU,EAAI3nC,QAAQ8nC,MAAM,MACxChrD,KAAKquD,eAAe9oD,YAAYvF,KAAKowD,YACrCpwD,KAAKowD,WAAW5R,aAAa,WAAY,GACzCx+C,KAAK83B,MAAM58B,KAAK8E,KAAKowD,WAAY,QAAS1jC,GAC1C1sB,KAAK83B,MAAM58B,KAAK8E,KAAKowD,WAAY,OAAQxT,GACzC58C,KAAKyuD,iBAAmB,KACxBzuD,KAAK6uD,gBAAkB,KACvB7uD,KAAK+uD,eAAiB,KACtB,IAAIoG,EAAa56D,EAAIyF,KAAKquD,gBAC1BruD,KAAK6vD,iBAAmBhyC,SAASs3C,EAAWvF,OAAQ,IAChDzvD,MAAMH,KAAK6vD,mBACb7vD,KAAK2vD,yBAA0B,EAC/B3vD,KAAK8vD,cAAgB3C,EAAMgI,EAAW3xC,MAEtCxjB,KAAK2vD,yBAA0B,EAEjC3vD,KAAKqwD,iBACHlD,EAAMgI,EAAWjf,iBAAmBiX,EAAMgI,EAAWC,kBAEvDnyD,EAAIjD,KAAKquD,eAAgB,CAAE/oD,QAAS,UACpCtF,KAAK2uD,iBACHxB,EAAMgI,EAAW1vB,YAAc0nB,EAAMgI,EAAWE,aAClDpyD,EAAIjD,KAAKquD,eAAgB,CAAE/oD,QAAS,KACpCtF,KAAK0uD,WAAa,KAClB1uD,KAAK4uD,WAAa,KAElB5uD,KAAKsuD,eAAiBnE,EAAIU,EAAI3nC,QAAQ+nC,KAAK,MAC3C/nC,EAAQ3d,YAAYvF,KAAKsuD,gBACzBtuD,KAAKswD,WAAanG,EAAIU,EAAI3nC,QAAQ8nC,MAAM,MACxChrD,KAAKsuD,eAAe/oD,YAAYvF,KAAKswD,YACrCtwD,KAAKswD,WAAW9R,aAAa,WAAY,GACzCx+C,KAAK83B,MAAM58B,KAAK8E,KAAKswD,WAAY,QAAS5jC,GAC1C1sB,KAAK83B,MAAM58B,KAAK8E,KAAKswD,WAAY,OAAQ1T,GACzC58C,KAAKmvD,iBAAmB,KACxBnvD,KAAKuvD,iBAAmB,KACxBvvD,KAAKwvD,cAAgB,KACrB,IAAI8F,EAAa/6D,EAAIyF,KAAKsuD,gBAC1BtuD,KAAKiwD,gBAAkBpyC,SAASy3C,EAAW5kC,MAAO,IAC9CvwB,MAAMH,KAAKiwD,kBACbjwD,KAAKgwD,wBAAyB,EAC9BhwD,KAAKmwD,eAAiBhD,EAAMmI,EAAW7xC,OAEvCzjB,KAAKgwD,wBAAyB,EAEhChwD,KAAKkwD,qBAAuBlwD,KAAK0vD,MAr6BnC,SAAoBxsC,GAClB,IAAIqyC,EAASh7D,EAAI2oB,GACjB,OACEiqC,EAAMoI,EAAOt0C,OACbksC,EAAMoI,EAAOC,aACbrI,EAAMoI,EAAOE,cACbtI,EAAMoI,EAAOrf,iBACbiX,EAAMoI,EAAOH,kBA85B0B3nB,CAAWztC,KAAKswD,YAAc,KACvEtwD,KAAKuwD,iBACHpD,EAAMmI,EAAWrf,gBAAkBkX,EAAMmI,EAAWI,mBACtDzyD,EAAIjD,KAAKsuD,eAAgB,CAAEhpD,QAAS,UACpCtF,KAAKqvD,kBACHlC,EAAMmI,EAAW3zC,WAAawrC,EAAMmI,EAAW1zC,cACjD3e,EAAIjD,KAAKsuD,eAAgB,CAAEhpD,QAAS,KACpCtF,KAAKovD,YAAc,KACnBpvD,KAAKsvD,WAAa,KAElBtvD,KAAKgtD,MAAQ,CACXz6B,EACErP,EAAQ2yB,YAAc,EAClB,QACA3yB,EAAQ2yB,YAAc71C,KAAKmuD,aAAenuD,KAAKkuD,eAC/C,MACA,KACNzX,EACEvzB,EAAQoL,WAAa,EACjB,QACApL,EAAQoL,WAAatuB,KAAK4sD,cAAgB5sD,KAAK6sD,gBAC/C,MACA,MAGR7sD,KAAKwrD,SAAU,EAEfxrD,KAAKgmC,SAAS2lB,SAASvpD,SAAQ,SAAUuzD,GAAe,OAAOhK,EAASgK,GAAa5J,MAErF/rD,KAAK41D,cAAgBj6D,KAAKuE,MAAMgjB,EAAQoL,WACxCtuB,KAAK61D,eAAiB3yC,EAAQ2yB,WAC9B71C,KAAK83B,MAAM58B,KAAK8E,KAAKkjB,QAAS,UAAU,SAAUla,GAAK,OAAO+iD,EAAO+J,SAAS9sD,MAC9E+kD,EAAe/tD,OAkFjB,OA/EA+0D,EAAiBz5D,UAAUy6D,OAAS,WAC7B/1D,KAAKwrD,UAKVxrD,KAAKgvD,yBAA2BhvD,KAAKk1D,iBACjCl1D,KAAKkjB,QAAQkrC,YAAcpuD,KAAKkjB,QAAQsK,YACxC,EAGJvqB,EAAIjD,KAAKquD,eAAgB,CAAE/oD,QAAS,UACpCrC,EAAIjD,KAAKsuD,eAAgB,CAAEhpD,QAAS,UACpCtF,KAAK2uD,iBACHxB,EAAM5yD,EAAIyF,KAAKquD,gBAAgB5oB,YAC/B0nB,EAAM5yD,EAAIyF,KAAKquD,gBAAgBgH,aACjCr1D,KAAKqvD,kBACHlC,EAAM5yD,EAAIyF,KAAKsuD,gBAAgB3sC,WAC/BwrC,EAAM5yD,EAAIyF,KAAKsuD,gBAAgB1sC,cAGjC3e,EAAIjD,KAAKquD,eAAgB,CAAE/oD,QAAS,SACpCrC,EAAIjD,KAAKsuD,eAAgB,CAAEhpD,QAAS,SAEpCyoD,EAAe/tD,MAEfusD,EAAkBvsD,KAAM,MAAO,GAAG,GAAO,GACzCusD,EAAkBvsD,KAAM,OAAQ,GAAG,GAAO,GAE1CiD,EAAIjD,KAAKquD,eAAgB,CAAE/oD,QAAS,KACpCrC,EAAIjD,KAAKsuD,eAAgB,CAAEhpD,QAAS,OAGtCyvD,EAAiBz5D,UAAUw6D,SAAW,SAAmB9sD,GAClDhJ,KAAKwrD,UAIVuC,EAAe/tD,MACfusD,EAAkBvsD,KAAM,MAAOA,KAAKkjB,QAAQoL,UAAYtuB,KAAK41D,eAC7DrJ,EACEvsD,KACA,OACAA,KAAKkjB,QAAQ2yB,WAAa71C,KAAK61D,gBAGjC71D,KAAK41D,cAAgBj6D,KAAKuE,MAAMF,KAAKkjB,QAAQoL,WAC7CtuB,KAAK61D,eAAiB71D,KAAKkjB,QAAQ2yB,aAGrCkf,EAAiBz5D,UAAUwtB,QAAU,WAC9B9oB,KAAKwrD,UAIVxrD,KAAK83B,MAAMk0B,YACX/sC,EAAOjf,KAAKowD,YACZnxC,EAAOjf,KAAKswD,YACZrxC,EAAOjf,KAAKquD,gBACZpvC,EAAOjf,KAAKsuD,gBACZtuD,KAAKg2D,kBAGLh2D,KAAKkjB,QAAU,KACfljB,KAAKowD,WAAa,KAClBpwD,KAAKswD,WAAa,KAClBtwD,KAAKquD,eAAiB,KACtBruD,KAAKsuD,eAAiB,KAEtBtuD,KAAKwrD,SAAU,IAGjBuJ,EAAiBz5D,UAAU06D,gBAAkB,WAC3Ch2D,KAAKkjB,QAAQ66B,UAAY/9C,KAAKkjB,QAAQ66B,UACnCn+C,MAAM,KACN0C,QAAO,SAAUrI,GAAQ,OAAQA,EAAK6S,MAAM,oBAC5C/M,KAAK,MAGHg1D,GA1zCY,YAAnB,oBAAOv7D,QAAP,cAAOA,gBAA0C,IAAXC,EAAyBA,EAAOD,QAAU8rD,IAC9D,mBAAXjE,QAAyBA,MAAaA,OAAOiE,IACnDtpD,EAASA,GAAUD,MAAag5D,iBAAmBzP,M,kDCRtD,IAAIl+C,EAAI,EAAQ,GACZu8C,EAAS,EAAQ,IAAgCnhD,MAKrD4E,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,EAAM9J,OAJV,EAAQ,GAIUwP,CAAkB,UAAY,CACtE1K,MAAO,SAAeX,GACpB,OAAO8hD,EAAO3jD,KAAM6B,EAAY6C,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,wDCIvE,SAAU0jD,GACTA,EAAO,CAAC,WAAW,SAAUj6C,GACzB,OAAQ,WACJ,IAAI6uD,EACAC,EAsBAC,EArBAC,EAAU,EACVC,EAAY,CACZl6D,MAAO,QACPm6D,KAAM,OACNC,QAAS,UACTC,QAAS,WAGTC,EAAS,CACTC,MA0EJ,SAAeC,EAAeC,GAC1B,IAAI75D,EAAU85D,IACTZ,GAAca,EAAa/5D,GAC3Bg6D,EAAWJ,EAAe55D,EAAS65D,IAmB5C,SAAyB75D,GAErB,IADA,IAAIi6D,EAAgBf,EAAWj7C,WACtBthB,EAAIs9D,EAAc90D,OAAS,EAAGxI,GAAK,EAAGA,IAC3Cq9D,EAAW3vD,EAAE4vD,EAAct9D,IAAKqD,GArBhCk6D,CAAel6D,IA7EnBkiB,OAiFJ,SAAgB03C,GACZ,IAAI55D,EAAU85D,IACTZ,GAAca,EAAa/5D,GAChC,GAAI45D,GAAuD,IAAtCvvD,EAAE,SAAUuvD,GAAez0D,OAE5C,YADAg1D,EAAYP,GAGZV,EAAWj7C,WAAW9Y,QACtB+zD,EAAWh3C,UAxFf9iB,MAgBJ,SAAeg7D,EAASC,EAAOC,GAC3B,OAAOC,EAAO,CACVxzD,KAAMuyD,EAAUl6D,MAChBo7D,UAAWV,IAAaW,YAAYr7D,MACpCg7D,QAASA,EACTE,gBAAiBA,EACjBD,MAAOA,KArBXN,aAAcA,EACdR,KAoCJ,SAAca,EAASC,EAAOC,GAC1B,OAAOC,EAAO,CACVxzD,KAAMuyD,EAAUC,KAChBiB,UAAWV,IAAaW,YAAYlB,KACpCa,QAASA,EACTE,gBAAiBA,EACjBD,MAAOA,KAzCXr6D,QAAS,GACT06D,UA4CJ,SAAmBjrB,GACf0pB,EAAW1pB,GA5CX+pB,QA+CJ,SAAiBY,EAASC,EAAOC,GAC7B,OAAOC,EAAO,CACVxzD,KAAMuyD,EAAUE,QAChBgB,UAAWV,IAAaW,YAAYjB,QACpCY,QAASA,EACTE,gBAAiBA,EACjBD,MAAOA,KApDXj4D,QAAS,QACTq3D,QAuDJ,SAAiBW,EAASC,EAAOC,GAC7B,OAAOC,EAAO,CACVxzD,KAAMuyD,EAAUG,QAChBe,UAAWV,IAAaW,YAAYhB,QACpCW,QAASA,EACTE,gBAAiBA,EACjBD,MAAOA,MAxDf,OAAOX,EAcP,SAASK,EAAa/5D,EAAS/B,GAG3B,OAFK+B,IAAWA,EAAU85D,MAC1BZ,EAAa7uD,EAAE,IAAMrK,EAAQ26D,cACdx1D,OACJ+zD,GAEPj7D,IACAi7D,EAiFR,SAAyBl5D,GAQrB,OAPAk5D,EAAa7uD,EAAE,UACVwZ,KAAK,KAAM7jB,EAAQ26D,aACnBh2C,SAAS3kB,EAAQ46D,eACjB/2C,KAAK,YAAa,UAClBA,KAAK,OAAQ,UAEPkC,SAAS1b,EAAErK,EAAQE,SACvBg5D,EAzFU2B,CAAgB76D,IAE1Bk5D,GAkEX,SAASc,EAAYJ,EAAe55D,EAAS65D,GACzC,IAAIiB,KAAQjB,IAAgBA,EAAaiB,QAAQjB,EAAaiB,MAC9D,SAAIlB,IAAkBkB,GAA+C,IAAtCzwD,EAAE,SAAUuvD,GAAez0D,UACtDy0D,EAAc55D,EAAQ+6D,YAAY,CAC9B37B,SAAUp/B,EAAQg7D,aAClBp4B,OAAQ5iC,EAAQi7D,WAChBp4B,SAAU,WAAcs3B,EAAYP,OAEjC,GAoDf,SAASsB,EAAQ7nD,GACR8lD,GACLA,EAAS9lD,GAGb,SAASknD,EAAOj1D,GACZ,IAAItF,EAAU85D,IACVU,EAAYl1D,EAAIk1D,WAAax6D,EAAQw6D,UAOzC,QALqC,IAAzBl1D,EAAIg1D,kBACZt6D,EAAUqK,EAAE+oB,OAAOpzB,EAASsF,EAAIg1D,iBAChCE,EAAYl1D,EAAIg1D,gBAAgBE,WAAaA,IAuIjD,SAAoBx6D,EAASsF,GACzB,GAAItF,EAAQm7D,kBAAmB,CAC3B,GAAI71D,EAAI80D,UAAYhB,EAChB,OAAO,EAEPA,EAAgB9zD,EAAI80D,QAG5B,OAAO,EA5IPgB,CAAWp7D,EAASsF,GAAxB,CAEA+zD,IAEAH,EAAaa,EAAa/5D,GAAS,GAEnC,IAAIq7D,EAAa,KACbzB,EAAgBvvD,EAAE,UAClBixD,EAAgBjxD,EAAE,UAClBkxD,EAAkBlxD,EAAE,UACpBmxD,EAAmBnxD,EAAE,UACrBoxD,EAAgBpxD,EAAErK,EAAQ07D,WAC1BC,EAAc,CACdN,WAAY,KACZO,QAAS,KACTC,YAAa,MAEbC,EAAW,CACXzC,QAASA,EACTvyD,MAAO,UACP0jC,UAAW,IAAI9zB,KACf1W,QAASA,EACTsF,IAAKA,GAeT,OAsDQA,EAAIk1D,WACJZ,EAAcj1C,SAAS3kB,EAAQ+7D,YAAYp3C,SAAS61C,GAapDl1D,EAAI+0D,QACJiB,EAAcn2C,OAAO7f,EAAI+0D,OAAO11C,SAAS3kB,EAAQg8D,YACjDpC,EAAcz0C,OAAOm2C,IAKrBh2D,EAAI80D,UACJmB,EAAgBp2C,OAAO7f,EAAI80D,SAASz1C,SAAS3kB,EAAQi8D,cACrDrC,EAAcz0C,OAAOo2C,IAKrBv7D,EAAQk8D,cACRT,EAAc92C,SAAS,yBAAyBd,KAAK,OAAQ,UAC7D+1C,EAAc70C,QAAQ02C,IAKtBz7D,EAAQ27D,cACRH,EAAiB72C,SAAS,qBAC1Bi1C,EAAc70C,QAAQy2C,IA/BtBx7D,EAAQm8D,YACRjD,EAAWn0C,QAAQ60C,GAEnBV,EAAW/zC,OAAOy0C,GA1BtBA,EAAct0C,OAEds0C,EAAc55D,EAAQo8D,YAClB,CAACh9B,SAAUp/B,EAAQq8D,aAAcz5B,OAAQ5iC,EAAQs8D,WAAYz5B,SAAU7iC,EAAQu8D,UAG/Ev8D,EAAQw8D,QAAU,IAClBnB,EAAalgC,WAAWshC,EAAWz8D,EAAQw8D,SAC3Cb,EAAYE,YAAcr6C,WAAWxhB,EAAQw8D,SAC7Cb,EAAYC,SAAU,IAAIllD,MAAOE,UAAY+kD,EAAYE,YACrD77D,EAAQ27D,cACRA,EAAYN,WAAatD,YAAY2E,EAAgB,MArCjE,WACI9C,EAAcn2C,MAAMk5C,EAAaC,IAC5B58D,EAAQ68D,SAAW78D,EAAQ88D,cAC5BlD,EAAcmD,MAAMN,GAGpBz8D,EAAQk8D,aAAeT,GACvBA,EAAcsB,OAAM,SAAUhiC,GACtBA,EAAM/S,gBACN+S,EAAM/S,uBACwBpnB,IAAvBm6B,EAAMiiC,eAAqD,IAAvBjiC,EAAMiiC,eACjDjiC,EAAMiiC,cAAe,GAEzBP,GAAU,MAIdz8D,EAAQ68D,SACRjD,EAAcmD,OAAM,WAChB/8D,EAAQ68D,UACRJ,OAvCZ32B,GAEAo1B,EAAQY,GAEJ97D,EAAQi+C,OAASpd,SACjBA,QAAQzK,IAAI0lC,GAGTlC,EA0GP,SAAS6C,EAAUQ,GACf,IAAI5yD,EAAE,SAAUuvD,GAAez0D,QAAW83D,EAI1C,OADAnZ,aAAa6X,EAAYN,YAClBzB,EAAc55D,EAAQ+6D,YAAY,CACrC37B,SAAUp/B,EAAQg7D,aAClBp4B,OAAQ5iC,EAAQi7D,WAChBp4B,SAAU,WACNs3B,EAAYP,GACR55D,EAAQk9D,UAA+B,WAAnBpB,EAASh1D,OAC7B9G,EAAQk9D,WAEZpB,EAASh1D,MAAQ,SACjBg1D,EAASpxB,QAAU,IAAIh0B,KACvBwkD,EAAQY,MAKpB,SAASc,KACD58D,EAAQw8D,QAAU,GAAKx8D,EAAQm9D,gBAAkB,KACjD9B,EAAalgC,WAAWshC,EAAWz8D,EAAQm9D,iBAC3CxB,EAAYE,YAAcr6C,WAAWxhB,EAAQm9D,iBAC7CxB,EAAYC,SAAU,IAAIllD,MAAOE,UAAY+kD,EAAYE,aAIjE,SAASc,IACL7Y,aAAauX,GACbM,EAAYC,QAAU,EACtBhC,EAAc11B,MAAK,GAAM,GAAMlkC,EAAQo8D,YACnC,CAACh9B,SAAUp/B,EAAQq8D,aAAcz5B,OAAQ5iC,EAAQs8D,aAIzD,SAASI,IACL,IAAIU,GAAezB,EAAYC,SAAW,IAAIllD,MAAOE,WAAc+kD,EAAYE,YAAe,IAC9FL,EAAiBt3C,MAAMk5C,EAAa,MAI5C,SAAStD,IACL,OAAOzvD,EAAE+oB,OAAO,GA3OT,CACH0pC,cAAc,EACdf,WAAY,WACZpB,YAAa,kBACb1c,OAAO,EAEPme,WAAY,SACZC,aAAc,IACdC,WAAY,QACZC,aAAS37D,EACTm6D,WAAY,UACZC,aAAc,IACdC,WAAY,QACZiC,cAAUt8D,EAEVu8D,gBAAiB,IACjB1C,YAAa,CACTr7D,MAAO,iBACPm6D,KAAM,gBACNC,QAAS,mBACTC,QAAS,oBAEbe,UAAW,gBACXI,cAAe,qBACf4B,QAAS,IACTR,WAAY,iBACZC,aAAc,mBACd/7D,OAAQ,OACRw7D,UAAW,yCACXS,aAAa,EACbhB,mBAAmB,EACnBQ,aAAa,GA4MkBjC,EAAO15D,SAG9C,SAASm6D,EAAYP,GACZV,IAAcA,EAAaa,KAC5BH,EAAcxxC,GAAG,cAGrBwxC,EAAc13C,SACd03C,EAAgB,KACqB,IAAjCV,EAAWj7C,WAAW9Y,SACtB+zD,EAAWh3C,SACXk3C,OAAgBx4D,KAnYpB,MAFb,CA2YiB,mBAAX0jD,QAAyBA,MAAaA,OAAS,SAAU+Y,EAAM9U,GAC/B7rD,EAAOD,QACxCC,EAAOD,QAAU8rD,EAAQ+U,EAAQ,MAEjCv+D,OAAM,OAAawpD,EAAQxpD,OAAM,Y,oSC5ZzC+qB,QAAO,SAACzf,GAENA,EAAE1B,UAAUof,GAAG,QAAS,gBAAgB,WAEtC,IAAMljB,EAAQwF,EAAEpH,MAEZ4B,EAAMgrB,QAAQ,UAAU7kB,KAAK,gBAIjCnG,EAAMgrB,QAAQ,SAAS3N,YAVb,IAaNq7C,EAbM,WAeV,WAAYC,GAA6B,IAAdx9D,EAAc,uDAAJ,I,4FAAI,SAEvCiD,KAAKu6D,cAAgBA,EACrBv6D,KAAKjD,QAA6B,iBAAZA,EAAuBA,EAAU,CACrDgL,KAAM/H,KAAKi8B,WAAWC,GAAGn/B,EAAQgL,MAAMm0B,GAAG,IAAIvhC,QAC9C6/D,SAAUx6D,KAAKi8B,WAAWC,GAAGn/B,EAAQy9D,UAAUt+B,GAAG,IAAIvhC,QACtDknB,YAAa7hB,KAAKi8B,WAAWC,GAAGq+B,EAAc35C,KAAK,qBAAqBsb,GAAGn/B,EAAQ8kB,aAAaqa,GAAG,IAAIvhC,QACvG8/D,qBAAsBz6D,KAAKi8B,WAAWC,GAAGq+B,EAAc35C,KAAK,+BAA+Bsb,GAAGn/B,EAAQ09D,sBAAsBv+B,GAAG,IAAIvhC,QACnI+/D,qBAAsB16D,KAAKi8B,WAAWC,GAAGq+B,EAAc35C,KAAK,gCAAgCsb,GAAGn/B,EAAQ29D,sBAAsBx+B,IAAG,GAAMvhC,QACtIggE,0BAA2B36D,KAAKi8B,WAAWC,GAAGn/B,EAAQ49D,2BAA2Bz+B,QAAGv+B,GAAWhD,SAGjGqF,KAAK46D,kBAAoBxzD,EAAE,oDAE3BpH,KAAKioB,SAAW,CACd4yC,UAAW,EACX1yC,MAAO,GACP2yC,UAAW,GACXC,WAAY,GACZC,OAAQ,GACRC,MAAO,K,UAnCD,O,EAAA,G,EAAA,yCAmDR,OAAOj7D,KAAKu6D,cAAc93D,KAAK,oBAnDvB,8CAwDR,MAAqB,SAAjBzC,KAAKjD,QACAiD,KAAKu6D,cAAcxyD,KAAK,SAGZ,YAAjB/H,KAAKjD,QACAiD,KAAKu6D,cAAcxyD,KAAK,WAG1B/H,KAAKu6D,gBAhEJ,6BAqEJv6D,KAAKk7D,wBAITl7D,KAAK0iC,gBAED1iC,KAAKmwC,gBAITnwC,KAAKu6D,cAAcxyD,KAAK,CACtBozD,MAAOn7D,KAAKjD,QAAQgL,KAAK1H,QACzB8B,MAAOnC,KAAKu6D,cAAcp4D,QAC1Bi5D,aAAa,IAEfp7D,KAAKu6D,cAAc35C,KAAK,WAAY,GAE/B5gB,KAAKu6D,cAAcr7C,SAAS,WAC/Blf,KAAKu6D,cAAc74C,SAAS,SAG9B1hB,KAAKq7D,cAELr7D,KAAK6sC,iBA5FG,sCAiGH3oC,MAAMC,QAAQnE,KAAKjD,QAAQgL,QAE9B/H,KAAKjD,QAAQgL,KAAO,IAGtB/H,KAAKu6D,cAAcxyD,KAAK,UAAW3N,OAAOkhE,OAAO,GAAIt7D,KAAKjD,YAtGlD,mCA2GRiD,KAAKu7D,wBACLv7D,KAAKw7D,uBACLx7D,KAAKy7D,sBACLz7D,KAAK07D,0BACL17D,KAAK27D,sBACL37D,KAAK47D,yBACL57D,KAAK67D,wBACL77D,KAAK87D,wBACL97D,KAAK+7D,6BACL/7D,KAAKg8D,gCApHG,8CAyHRh8D,KAAKu6D,cAAcz1C,GAAG,SAAS,SAAC9b,GAAD,OAAO5B,EAAE4B,EAAE/L,QAAQwF,KAAK,SAASiqB,QAAQhL,SAAS,eAzHzE,6CA4Ha,WAErB1hB,KAAKu6D,cAAcz1C,GAAG,QAAQ,SAAC9b,GAE7BkvB,YAAW,kBAAM,EAAK0iC,kBAAkB77C,YAAY,UAAUsD,SAAQ,KACtEjb,EAAE4B,EAAE/L,QAAQ8hB,YAAY,UACxB,EAAKk9C,kBAAkBl9C,YAAY,iBAlI7B,4CAsIY,WAEpB/e,KAAKu6D,cAAcz1C,GAAG,QAAS,SAAS,SAAC9b,GAEvC,IAAMpH,EAAQwF,EAAE4B,EAAE/L,QACZi/D,EAAYt6D,EAAMO,QAExB,EAAKo4D,cAAc93D,KAAK,kBAAkB0hB,IAAIviB,GAAOmd,YAAY,YACjE,EAAKo9C,WAAWD,QA9IV,gDAkJgB,WAExBl8D,KAAKu6D,cAAcz1C,GAAG,WAAW,SAAC9b,GAEhC,IAAMozD,EAAmBpzD,EAAE2gB,QAAU,EAAK1B,SAAS4yC,UAC7CwB,EAAgBrzD,EAAE2gB,QAAU,EAAK1B,SAAS+yC,OAC1CsB,EAAmBtzD,EAAE2gB,QAAU,EAAK1B,SAAS6yC,UAC7CyB,EAAoBvzD,EAAE2gB,QAAU,EAAK1B,SAAS8yC,WAEpD,IAAKqB,GAAoBC,IAAkB,EAAKJ,kBAAkB/5D,OAAQ,CAExE8G,EAAEogB,iBAEF,IAAMozC,EAAY,EAAKC,qBACvB,EAAKN,WAAWK,QACPF,EAET,EAAKI,iBACIH,GAET,EAAKI,uBAtKD,4CA2KY,WAEA38D,KAAKu6D,cAAc93D,KAAK,SAChCqiB,GAAG,SAAS,SAAC9b,GAEP5B,EAAE4B,EAAE/L,QACZykB,SAAS,UAEjB,EAAK64C,cAAc74C,SAAS,SAC5B,EAAK64C,cAAc93D,KAAK,SAASsc,YAAY,iBApLvC,+CAwLe,WAEvB/e,KAAKu6D,cAAcz1C,GAAG,WAAY,SAAS,kBAAM,EAAKy1C,cAAcx7C,YAAY,cA1LxE,8CA6Lc,WAEtB/e,KAAKu6D,cAAcz1C,GAAG,UAAW,SAAS,SAAC9b,GAEzC,IAAM4zD,EAAcx1D,EAAE4B,EAAE/L,QAElB4/D,EAAe7zD,EAAE2gB,QAAU,EAAK1B,SAASE,MACzC20C,EAAe9zD,EAAE2gB,QAAU,EAAK1B,SAASgzC,MACzCmB,EAAmBpzD,EAAE2gB,QAAU,EAAK1B,SAAS4yC,UAEnD,IAAKgC,GAAgBC,KAAkB,EAAKlC,kBAAkBn4D,KAAK,MAAMyc,SAAS,YAUhF,OARAlW,EAAEogB,iBAEF,EAAK2zC,QAAQ,CACX/tD,IAAK4tD,EAAYh8D,aAGnBg8D,EAAYh8D,IAAI,IAOlB,GAF2C,KAAtBg8D,EAAYh8D,OAEbw7D,IAAqB,EAAK7B,cAAc93D,KAAK,SAASyc,SAAS,YAAa,CAE9F,IAAM89C,EAAgB,EAAKzC,cAAc93D,KAAK,gCAAgC2pB,OAAOjqB,QACrF,EAAK86D,WAAWD,SAzNZ,8CA8Nc,WAEtBh9D,KAAKu6D,cAAcz1C,GAAG,QAAS,iBAAiB,SAAC9b,GAC/CA,EAAE+b,kBAEF,IACMm3C,EADgB90D,EAAE4B,EAAE/L,QACM2vB,QAAQ,SAASzqB,QAEjD,EAAK86D,WAAWf,GAChB,EAAK3B,cAAc93D,KAAK,SAASiqB,aAvO3B,mDA2OmB,WAErBgN,EAAS15B,KAAKu6D,cAAc93D,KAAK,0BAA0BA,KAAK,SACtEi3B,EAAO5U,GAAG,SAAS,SAAC9b,GAElB,IAAMq6B,EAAc3J,EAAO94B,MAE3B,EAAKg6D,kBAAkBx3B,QAEnBC,EAAYnhC,QAEd,EAAKnF,QAAQy9D,SAASp4D,SAAQ,SAAC2hC,GAEzBA,EAAK17B,cAAc3B,SAAS28B,EAAYh7B,gBAE1C,EAAKkyD,cAAc93D,KAAK,0BAA0Byf,OAAO,EAAK04C,kBAAkB14C,OAAO9a,EAAE,OAAD,OAAQ28B,EAAR,eAI5F,EAAK62B,kBAAkBl5C,SAAS,UAAUmC,QAG1C,EAAK+2C,kBAAkB77C,YAAY,UAAUsD,OAG/C,IAAMw6C,EAAe7zD,EAAE2gB,QAAU,EAAK1B,SAASE,MACzC20C,EAAe9zD,EAAE2gB,QAAU,EAAK1B,SAASgzC,MACzCiC,EAAe,EAAK3C,cAAc93D,KAAK,gCAAgC2pB,OAAO/H,QAE/Ew4C,IAAgBC,GAAkB,EAAK//D,QAAQy9D,SAAS9zD,SAASw2D,IAQ3DL,GAAgBC,IAEzB,EAAKlC,kBAAkB37C,UARvB,EAAKliB,QAAQy9D,SAASt7D,KAAKg+D,GAEvB,EAAKngE,QAAQ29D,sBAEf,EAAK39D,QAAQy9D,SAASjpC,KAAK,EAAKx0B,QAAQ49D,iCA9QtC,oDAuRoB,WAE5B36D,KAAKu6D,cAAcz1C,GAAG,QAAS,MAAM,SAAC9b,GAEpCA,EAAEogB,iBAEF,IAAM+zC,EAAM/1D,EAAE4B,EAAE/L,QAChB,EAAK8/D,QAAQ,CACX/tD,IAAKmuD,EAAI94C,SAGX,EAAKk2C,cAAc93D,KAAK,0BAA0BA,KAAK,SAAS7B,IAAI,IACpE,EAAKg6D,kBAAkB37C,cAnSjB,2CAySR,IAAMm+C,EAAgBp9D,KAAKi8D,kBACrBoB,EAAiBD,EAAc/vC,SAAS,SAASnrB,OACjDg6D,EAAYkB,EAAcj7D,QAEhCnC,KAAKi9D,WAAWf,GAEhB,IAAIoB,GAAe,EAanB,OAXIpB,EAAYmB,EAAiB,EAC/BC,EAAcpB,EACLA,IAAcmB,GAAkBnB,IAAcmB,EAAiB,IACxEC,EAAcD,EAAiB,GAG5BA,GAEHr9D,KAAKu6D,cAAc93D,KAAK,SAASiqB,QAG5B4wC,IA5TC,uCAiURt9D,KAAKu9D,qBAAoB,KAjUjB,wCAsURv9D,KAAKu9D,qBAAoB,KAtUjB,0CAyUU95C,GAElB,IAAM25C,EAAgBp9D,KAAKi8D,kBACrBuB,EAAeJ,EAAcj7D,QAC7Bk7D,EAAiBD,EAAc/vC,SAAS,SAASnrB,OACnDg6D,EAAYz4C,EAAO+5C,EAAe,EAAIA,EAAe,EAEzD,GAAI/5C,GAAQy4C,EAAY,EAEtBA,EAAYl8D,KAAKu6D,cAAc93D,KAAK,SAASP,OAAS,OACjD,IAAKuhB,GAAQy4C,EAAYmB,EAG9B,YADAr9D,KAAKu6D,cAAc93D,KAAK,SAASiqB,QAInC1sB,KAAKu6D,cAAc93D,KAAK,SAASsc,YAAY,YAC7C/e,KAAKm8D,WAAWD,KA1VR,oCA6VI,WAERp3D,EAAO,GAEX9E,KAAKu6D,cAAcxyD,KAAK,SAAS3F,SAAQ,SAACosC,GAExC1pC,GAAQ,EAAK24D,sBAAsBjvB,MAGjCxuC,KAAKu6D,cAAcr7C,SAAS,sBAE9Bpa,GAAQ,oGAGRA,GAAQ,uCAGV9E,KAAKu6D,cAAcz1D,KAAKA,GAExB9E,KAAK09D,mBAhXG,4CAmXYC,GAEpB,IAAKA,EAAK3uD,IACR,MAAO,GAGT,IAAIlK,EAAO,qBAAH,OAAwB64D,EAAK3uD,KASrC,OAPI2uD,EAAKC,QACP94D,GAAQ,cAAJ,OAAkB64D,EAAKC,MAAvB,UAGN94D,GAAQ,qCACRA,GAAQ,WAhYA,uCAuYR9E,KAAKu6D,cAAc93D,KAAK,SAAS+iB,KAAK,cAAexlB,KAAKjD,QAAQgL,KAAK7F,OAASlC,KAAKjD,QAAQ8kB,YAAc7hB,KAAKjD,QAAQ09D,wBAvYhH,8BA0YFkD,GAEN,GAAK39D,KAAKg5B,QAAQ2kC,GAAlB,CAIA,IAAME,EAAWz2D,EAAEpH,KAAKy9D,sBAAsBE,IAE9C39D,KAAKu6D,cAAcxyD,KAAK,SAAS7I,KAAKy+D,GACtC39D,KAAKjD,QAAQgL,KAAK7I,KAAKy+D,GAEnB39D,KAAKu6D,cAAcr7C,SAAS,uBAAyBlf,KAAKu6D,cAAc93D,KAAK,SAASP,OAAS,EAEjG27D,EAASv6C,YAAYtjB,KAAKu6D,cAAc93D,KAAK,SAAS2pB,QAGtDyxC,EAASC,aAAa99D,KAAKu6D,cAAc93D,KAAK,UAGhDzC,KAAKu6D,cAAcjxC,QAAQ,WAAYq0C,GAEvC39D,KAAK09D,oBA/ZG,8BAkaFC,GAEN,MAAoB,KAAbA,EAAK3uD,MAAehP,KAAKjD,QAAQgL,KAAKxF,MAAK,SAACxI,GAAD,OAAOA,EAAEiV,MAAQ2uD,EAAK3uD,SApahE,iCAuaCktD,GAET,IAAMyB,EAAO39D,KAAKu6D,cAAcxyD,KAAK,SAASm0D,GAE9Cl8D,KAAKu6D,cAAc93D,KAAK,SAAS6hB,GAAG43C,GAAWj9C,SAE/Cjf,KAAKu6D,cAAcxyD,KAAK,SAAS4U,OAAOu/C,EAAW,GACnDl8D,KAAKjD,QAAQgL,KAAK4U,OAAOu/C,EAAW,GAEpCl8D,KAAKu6D,cAAcjxC,QAAQ,cAAeq0C,GAE1C39D,KAAK09D,mBAlbG,iCAqbCxB,GAET,IAAM6B,EAAQ/9D,KAAKu6D,cAAc93D,KAAK,SAAS6hB,GAAG43C,GAC9C6B,IAAUA,EAAM7+C,SAAS,cAE3B6+C,EAAMr8C,SAAS,YACf1hB,KAAKu6D,cAAcjxC,QAAQ,cAAetpB,KAAKu6D,cAAcxyD,KAAK,SAASm0D,OA3brE,iCAicR,MAAO,CACL79B,YAAQ1gC,EACRu+B,GAFK,SAEFvhC,GAID,YAHqB,IAAVA,QAAgD,IAAhBqF,KAAKq+B,SAC9Cr+B,KAAKq+B,OAAS1jC,GAETqF,MAETrF,MARK,WASH,OAAOqF,KAAKq+B,WA1cR,4CAyCR,MAA+B,iBAAjBr+B,KAAKjD,UAzCX,oCA8CR,OAAOiD,KAAKu6D,cAAcxyD,KAAK,oB,2BA9CvB,KAgdZX,EAAEzG,GAAGq9D,aAAe,SAAUjhE,GAE5B,GAAIiD,KAAKkC,OAAS,EAAG,CAEnB,IAAMusC,EAAY,GAUlB,OARAzuC,KAAKgjB,MAAK,WAER,IAAMi7C,EAAgB,IAAI3D,EAAclzD,EAAEpH,MAAOjD,GACjDkhE,EAAc5jC,OAEdoU,EAAUvvC,KAAK++D,EAAcvvB,4BAGxBD,EAGT,IAAMwvB,EAAgB,IAAI3D,EAAclzD,EAAEpH,MAAOjD,GAGjD,OAFAkhE,EAAc5jC,OAEP4jC,EAAcvvB,6B,6BCnezB,IAAItnC,EAAI,EAAQ,GACZw9C,EAAQ,EAAQ,IAAgCriD,KAKpD6E,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,EAAM9J,OAJV,EAAQ,GAIUwP,CAAkB,SAAW,CACrE3K,KAAM,SAAcV,GAClB,OAAO+iD,EAAM5kD,KAAM6B,EAAY6C,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,O,gBCTzE,IAAIyJ,EAAI,EAAQ,GACZk0D,EAAS,EAAQ,KAIrBl0D,EAAE,CAAEnK,OAAQ,SAAUO,MAAM,EAAME,OAAQtD,OAAOkhE,SAAWA,GAAU,CACpEA,OAAQA,K,6BCLV,IAAIz9D,EAAc,EAAQ,GACtBG,EAAQ,EAAQ,GAChBgP,EAAa,EAAQ,IACrBlE,EAA8B,EAAQ,IACtChI,EAA6B,EAAQ,IACrCG,EAAW,EAAQ,IACnBrC,EAAgB,EAAQ,IAExBs/D,EAAe9jE,OAAOkhE,OAK1B7hE,EAAOD,SAAW0kE,GAAgBlgE,GAAM,WACtC,IAAIoU,EAAI,GACJ8tC,EAAI,GAEJhxC,EAASzU,SAIb,OAFA2X,EAAElD,GAAU,EADG,uBAENtP,MAAM,IAAIwC,SAAQ,SAAU+7D,GAAOje,EAAEie,GAAOA,KACf,GAA/BD,EAAa,GAAI9rD,GAAGlD,IAHZ,wBAG4BlC,EAAWkxD,EAAa,GAAIhe,IAAIngD,KAAK,OAC7E,SAAgB9C,EAAQD,GAM3B,IALA,IAAI45C,EAAI31C,EAAShE,GACbigB,EAAkBxY,UAAUxC,OAC5BC,EAAQ,EACRsF,EAAwBqB,EAA4BrM,EACpDuG,EAAuBlC,EAA2BrE,EAC/CygB,EAAkB/a,GAMvB,IALA,IAIIlH,EAJAwX,EAAI7T,EAAc8F,UAAUvC,MAC5BQ,EAAO8E,EAAwBuF,EAAWyF,GAAGzO,OAAOyD,EAAsBgL,IAAMzF,EAAWyF,GAC3FvQ,EAASS,EAAKT,OACdmT,EAAI,EAEDnT,EAASmT,GACdpa,EAAM0H,EAAK0S,KACNxX,IAAemF,EAAqBnJ,KAAK4Y,EAAGxX,KAAM27C,EAAE37C,GAAOwX,EAAExX,IAEpE,OAAO27C,GACPsnB,G,oLCxCJr3C,QAAO,SAACzf,GAAM,IAENg3D,EAFM,WAIV,WAAYl7C,EAASnmB,I,4FAAS,SAE5BiD,KAAKqhC,SAAW,CACd0nB,WAAY,EACZC,QAAQ,EACRC,QAAS,UACTC,aAAa,EACbmV,eAAgB,MAChBC,UAAU,GAGZt+D,KAAKknC,SAAWhkB,EAChBljB,KAAKjD,QAAUiD,KAAK0iC,cAAc3lC,GAElCiD,KAAKwpD,QAAUpiD,EAAEtL,QAEjBkE,KAAKipD,QAAUjpD,KAAKjD,QAAQksD,QAC5BjpD,KAAKu+D,aAAev+D,KAAKknC,SAASuG,aAClCztC,KAAKw+D,cAAgBx+D,KAAKknC,SAASjH,aAAY,GAE/CjgC,KAAKy+D,iBAAmBz+D,KAAKknC,SAASlR,SAASxS,IAE/CxjB,KAAK0+D,aAAet3D,EAAE,0CACtBpH,KAAKsuB,UAAY,EAEjBtuB,KAAK2+D,eACL3+D,KAAK4+D,qBACL5+D,KAAK6sC,a,UA/BG,O,EAAA,G,EAAA,mCAqCR,MAAsC,iBAAxB7sC,KAAKjD,QAAQisD,SArCnB,mCA0CR,OAAO5hD,EAAEpH,KAAKjD,QAAQksD,SAAS/mD,QAA0C,iBAAzBlC,KAAKjD,QAAQksD,UA1CrD,6CA+CR,OAAOjpD,KAAKknC,SAASjH,cAAgBjgC,KAAKjD,QAAQgsD,WAAa/oD,KAAKwpD,QAAQtoC,WA/CpE,oCAkDInkB,GAEZ,OAAOqK,EAAE+oB,OAAO,GAAInwB,KAAKqhC,SAAUtkC,KApD3B,qCAyD4B,WAAhCiD,KAAKjD,QAAQshE,gBAAgCr+D,KAAK6+D,uBAKpD7+D,KAAK8+D,WAAa9+D,KAAKy+D,iBAAmBz+D,KAAKjD,QAAQgsD,WAHvD/oD,KAAK8+D,WAAa9+D,KAAKy+D,iBAAmBz+D,KAAKknC,SAASjH,aAAY,GAAQjgC,KAAKwpD,QAAQtoC,WA3DnF,2CAqE4B,iBAAzBlhB,KAAKjD,QAAQksD,QAEtBjpD,KAAK2pD,UAAYviD,EAAEpH,KAAKipD,SAASjzB,SAASxS,IAAMxjB,KAAKjD,QAAQgsD,WAEpB,iBAAzB/oD,KAAKjD,QAAQksD,UAE7BjpD,KAAK2pD,UAAY3pD,KAAKjD,QAAQksD,WA3ExB,mCAiFRjpD,KAAKwpD,QAAQ1kC,GAAG,SAAU9kB,KAAK++D,aAAa7jE,KAAK8E,OACjDA,KAAKwpD,QAAQ1kC,GAAG,SAAU9kB,KAAKq6B,KAAKn/B,KAAK8E,SAlFjC,qCAwFR,IAAMg/D,EAAUh/D,KAAKknC,SAASloB,SAE9Bhf,KAAKu+D,aAAeS,EAAQ/9C,QAC5BjhB,KAAKw+D,cAAgBx+D,KAAKknC,SAASjH,aAAY,GAE/CjgC,KAAK2+D,eACL3+D,KAAK4+D,qBAEL5+D,KAAKq6B,SAhGG,6BAsGR,GAAIr6B,KAAKjD,QAAQuhE,UAAYt+D,KAAKjD,QAAQuhE,SAAWt+D,KAAKwpD,QAAQnhB,aAEhE,OAAO,EAG2B,WAAhCroC,KAAKjD,QAAQshE,gBAAgCr+D,KAAK6+D,uBAGpD7+D,KAAKsuB,UAAYtuB,KAAKwpD,QAAQl7B,YAF9BtuB,KAAKsuB,UAAYtuB,KAAKwpD,QAAQl7B,YAActuB,KAAKwpD,QAAQtoC,SAKvDlhB,KAAK8+D,WAAa9+D,KAAKsuB,WAEzBtuB,KAAKi/D,oBACLj/D,KAAKk/D,eAGLl/D,KAAKm/D,YAGHn/D,KAAKwpD,QAAQl7B,YAActuB,KAAK8+D,WAClC9+D,KAAKihC,OAELjhC,KAAKm/D,cA7HC,0CAoIRn/D,KAAKknC,SAASzhB,MAAMzlB,KAAK0+D,cACzB1+D,KAAK0+D,aAAa39C,IAAI,CACpBE,MAAOjhB,KAAKu+D,aACZr9C,OAAQlhB,KAAKw+D,kBAvIP,oCA6IJx+D,KAAKjD,QAAQmsD,aAEflpD,KAAKknC,SAASxlB,SAAS1hB,KAAKjD,QAAQmsD,aAItClpD,KAAKknC,SAAS3sC,IAAI,GAAG8K,MAAM0jC,SAAW,SACtC,IAAMpd,EAAe3rB,KAAKknC,SAAS3sC,IAAI,GAAGoxB,aAC1C3rB,KAAKknC,SAAS3sC,IAAI,GAAG8K,MAAM0jC,SAAW,GAEtC/oC,KAAKknC,SAASnmB,IAAI,CAChBrO,SAAU,QACVuO,MAAOjhB,KAAKu+D,aACZr9C,OAAQyK,IAG0B,WAAhC3rB,KAAKjD,QAAQshE,gBAAgCr+D,KAAK6+D,uBAQpD7+D,KAAKknC,SAASnmB,IAAI,CAChByC,IAAKxjB,KAAKjD,QAAQgsD,aARpB/oD,KAAKknC,SAASnmB,IAAI,CAChB6uC,OAAQ,EACRpsC,IAAK,KAULxjB,KAAKo/D,aACPp/D,KAAKknC,SAASnmB,IAAI,CAChBioC,OAAQhpD,KAAKjD,QAAQisD,WA5KjB,kCAmLJhpD,KAAKjD,QAAQmsD,aACflpD,KAAKknC,SAASnoB,YAAY/e,KAAKjD,QAAQmsD,aAGzClpD,KAAK0+D,aAAaz/C,SAElBjf,KAAKknC,SAASnmB,IAAI,CAChBrO,SAAU,SACV8Q,IAAKxjB,KAAKjD,QAAQgsD,WAClB9nC,MAAO,GACPC,OAAQ,OA7LF,6BAmMJlhB,KAAK2pD,UAAYviD,EAAEpH,KAAKknC,UAAUlR,SAASxS,IAAMxjB,KAAKjD,QAAQgsD,WAAa/oD,KAAKknC,SAASjH,aAAY,IACvGjgC,KAAKknC,SAASnmB,IAAI,CAChBrO,SAAU,WACVk9C,OAAQ,EACRpsC,IAAK,U,2BAvMD,KA8MZpc,EAAEzG,GAAG4S,OAAS,SAAUxW,GACtBqK,EAAEpH,MAAMgjB,MAAK,WACI,IAAIo7C,EAAOh3D,EAAEpH,MAAOjD,GAC5Bs9B,e,mBCjNL,EAAQ,EAIhBjzB,CAAE,CAAEnK,OAAQ,SAAUO,MAAM,GAAQ,CAClC6hE,iBAAkB,oB,gBCLZ,EAAQ,EAIhBj4D,CAAE,CAAEnK,OAAQ,SAAUO,MAAM,GAAQ,CAClC8hE,kBAAmB,oB,gBCLO,EAAQ,GAIpC3xD,CAAsB,gB,gBCJtB,IAAI3R,EAAS,EAAQ,GACA,EAAQ,GAI7B4R,CAAe5R,EAAOiS,KAAM,QAAQ,I,gBCLf,EAAQ,GAI7BL,CAAejS,KAAM,QAAQ,I,oDCGjB2pD,E;;;;;;GAAAA,EAaR,SAAUl+C,GAEZ,IAAIoiD,EAAUpiD,EAAGtL,QACb47B,EAAYtwB,EAAG1B,UACf65D,EAAQn4D,EAAG1B,SAASu4B,iBACpBuhC,EAAmE,MAA7C95D,SAASu4B,gBAAgB54B,MAAM4jC,WAMzD,SAASw2B,EAAmBC,EAAS/1D,EAAMg2D,EAAWC,GAGpD,IAAMF,EAAU,OAAOD,EAEvB,IAAII,GAAmB,EAGnBl8D,EAAQ,CACJf,GAAI88D,EAAQ98D,IAAM,IAAMjH,KAAKm4B,OAAQn4B,KAAKmH,SAAW,IAAI2Q,OACzDqsD,cAAc,GAIlBC,EAAWJ,EAAYv4D,EAAE+oB,QAAQ,EAAM,GAAIwvC,EAAUt+B,SAAUu+B,GAAYA,GAAW,GAGtFI,EAAU54D,EAAE+oB,OAAQ,GAAIsvC,EAAkBQ,UAAWF,EAAS/zD,OAG9Dk0D,EAAW94D,EAAGs4D,GAGdS,EAAc,EAGdC,EAAiB,WACb,OAAOpgE,KAAKgU,SAIhBtV,EAAI0hE,EAAe9kE,UAAY,CAE3B6L,YAAai5D,EAEbC,MAAOH,EAKPlsD,MAAO,WAGH,OAAKrQ,GAASA,EAAMqQ,MAAetV,GAGnCiF,EAAM+S,QAAU,GAChB/S,EAAMqQ,OAAQ,EACdrQ,EAAMgC,MAAO,EACbhC,EAAMG,KAAO47D,EAAQ57D,KAKrB47D,EAAQY,UAAYZ,GAAWa,IAC/Bb,EAAQc,UAAYT,EAASU,SAC7Bf,EAAQ98D,GAAK88D,EAAQ98D,IAAMe,EAAMf,GACZ,QAAhB88D,EAAQ57D,OACT47D,EAAQ57D,KAAO,QAKnBpF,EAAEgiE,UAAY,IAAIf,EAAUjhE,EAAGqhE,GAI/BrhE,EAAEiiE,MAAQv5D,EAAG,eAAiB44D,EAAQY,OAAS,SAAWlB,EAAQ98D,GAAK,aAukB/Ei+D,EAAMniE,EAAEiiE,MAAM,GAAI,UAAU,GAlkBpBjiE,EAAEoiE,QAAU15D,EAAG25D,KAA2Bj+C,SAAUpkB,EAAEiiE,OACtDK,IAIKjB,EAASkB,gBA6qBO,IAAxBlB,EAASmB,YACVjnE,EAAOylE,EAAQzlE,KACfylE,EAAQzlE,KAAO,IAOfA,GAJAA,EAAO,CAC6B,iBAAzB8lE,EAASoB,aAA2BpB,EAASoB,aAAe,GACnC,iBAAzBpB,EAASqB,aAA2BrB,EAASqB,aAAe,YAE3D,GAAK1B,EAAQzlE,KAAOA,EAAK,GAGzCyE,EAAE2iE,QAAUj6D,EACR,4BAIWnN,EAAO,KAIdimE,EAASn4D,KAAK,UAAY23D,EAAQ/kE,MAC9B,WAAa+D,EAAEnE,IAAI,SAAUwlE,EAASkB,cAAgB,IACtD,IAER,KACF,GAEFf,EAGIp7C,GAAG,UAAYnhB,EAAMf,IAAI,WACrBlE,EAAE2iE,QAAQ1mE,MAAQ+kE,EAAQ/kE,MACtB+D,EAAEnE,IAAI,SAAUwlE,EAASkB,cACzB,OAhNZf,EAGIn4D,KAAK4B,EAAMjL,GAGXgjB,SAASs+C,EAAQv/D,OAGjBG,IAAKs/D,EAASn4D,KAAK,SACfrJ,EAAEnE,IAAI,SAAUwlE,EAASuB,QACzB5B,EAAQ/kE,OAIZmqB,GAAI,SAAWnhB,EAAMf,GAAK,UAAYe,EAAMf,IAwXpC2+D,EAvXC,SAASzpC,GACdA,EAAM1O,iBACN1qB,EAAEiH,QAqXQ6iD,EApXX,IAsXJ,WACH,IAAIgZ,EAAUxhE,KAAMoQ,EAAO1L,UACvB+8D,EAAQ,WACRC,EAAU,KACLC,GAAWJ,EAAKp4D,MAAMq4D,EAASpxD,IAEpCwxD,EAAUD,IAAcD,EAC5B7gB,aAAa6gB,GACbA,EAAUxpC,WAAWupC,EAAOjZ,GACxBoZ,GAASL,EAAKp4D,MAAMq4D,EAASpxD,MA3X5B0U,GAAG,aAAa,WACfnhB,EAAMm8D,cAAe,EAUrB14D,EAAE1B,UAAUof,GAAG,WATD,SAAVkE,IAIFkP,YAAW,WACT9wB,EAAE1B,UAAU80B,IAAI,UAAWxR,GAC3BrlB,EAAMm8D,cAAe,IACpB,SAOLC,EAASU,UAEXP,EAGIp7C,GAAI,WAAanhB,EAAMf,GAAIi/D,GAKnChB,EAAKnB,EAAS,CACVoC,UAAU,EACVC,UAAU,EACVC,UAAU,EACVC,KAAMvC,EAAQ98D,GAAK,UA1iBVm9D,EAASmC,gBAAkB96D,EAAG24D,EAASmC,iBAAkBhgD,OAAQxjB,EAAE2iE,SACnEnB,EAASz6C,MAAO/mB,EAAE2iE,SAIlBtB,EAAS1hB,UAAYj3C,EAAG24D,EAAS1hB,WAAYn8B,OAAQxjB,EAAEiiE,OACvDT,EAASz6C,MAAO/mB,EAAEiiE,OAIvBjiE,EAAEomB,GAAG,CACD9Q,MAAOtV,EAAEgiE,UAAUyB,QACnBp5C,OAAQrqB,EAAEgiE,UAAU0B,SACpBnhC,KAAMviC,EAAEgiE,UAAU2B,OAClB18D,KAAMjH,EAAEgiE,UAAU4B,OAClBx8D,MAAOpH,EAAEgiE,UAAU6B,QACnBt/D,IAAKvE,EAAEgiE,UAAU8B,QAClB19C,GAAG,CACF9Q,MAAO+rD,EAASoC,QAChBp5C,OAAQg3C,EAASqC,SACjBnhC,KAAM8+B,EAASsC,OACf18D,KAAMo6D,EAASuC,OACfx8D,MAAOi6D,EAASwC,QAChBt/D,IAAK88D,EAASyC,SAoxBFt/C,EA/wBwBxkB,EAAEoiE,QAAQ,IAqxBjD2B,aACTC,EAAQx/C,EAAQu/C,aAAR,SAIF3mE,OAAOoiD,mBACbwkB,EAAQxkB,iBAAkBh7B,GAAlB,UA3xBA28C,EA8xBI,SAAT6C,EA1xBUhD,EAAQY,WACT5hE,EAAEiH,OAKCjH,EAAE4qB,QAAS,SAAUA,QAAS,WAqwBnD,IAA8BpG,EAExBw/C,EA+EYnB,EAAM/Y,EAAMmZ,EACxBD,EA5NIznE,GApnBA8uB,OAAQ,SAAU45C,GAWd,OARKA,GACDjkE,EAAEoiE,QAAU15D,EAAG25D,KACfC,IACAtiE,EAAEiiE,MAAM77D,KAAMpG,EAAEoiE,UAEfpiE,EAAEiiE,MAAMl+D,KAAM,IAAMu9D,EAAQniC,KAAM/4B,KAAMpG,EAAEgiE,UAAU/a,MAAOhiD,EAAMgC,OAG/DjH,EAAE4qB,QAAS,WAOtB2X,KAAM,WAGF,OAAMt9B,EAAMqQ,OAGZtV,EAAEoH,QAGGpH,EAAE2iE,SACH3iE,EAAE2iE,QAAQpmB,WAAWyE,YAAahhD,EAAE2iE,SAIxC3iE,EAAEiiE,MAAM1hD,SAIRihD,EAASnhD,YAAaihD,EAAQv/D,OAAQirB,WAAY/hB,GAClDuuB,YAAY,WACRgoC,EAAS1lC,IAAK,IAAM72B,EAAMf,MAC3B,GAGH88D,EAAQ57D,KAAOH,EAAMG,KACrB47D,EAAQc,UAAW,EAGnB9hE,EAAE4qB,QAAS,QAGX3lB,EAAM+S,QAAU,GAChB/S,EAAMqQ,OAAQ,EAEPtV,GA/BoBA,GAsC/BiH,KAAM,SAAUi9D,GAGZ,OAFAzC,IAEKx8D,EAAMgC,KAAcjH,EAGrByhE,EAAY,GAAKJ,EAASU,SAAiB/hE,GAK/Cw5B,YAAY,WAGRx5B,EAAEiiE,MAAMj/C,SAAUs+C,EAAQlzB,QAC1B+zB,EAAMniE,EAAEiiE,MAAM,GAAI,UAAU,KAE7B,IAGoB,IAAlBiC,IAGDj/D,EAAMgC,MAAO,EAGRk6D,GACDz4D,EAAE,QACE2Z,IAAK,WAAY,UACjBA,IAAK,gBAAiB,KAAO8hD,KAykB7ChD,GAAoBL,EACpB9gE,EAAEoiE,QAAQr+D,KAAK,IAAMu9D,EAAQ8C,OAAOr2B,IAAI,iBAAiB,WACrD/tC,EAAEoiE,QAAQx8C,GAAG,GAAGoI,WAIpBwL,YAAW,WACPx5B,EAAEoiE,QAAQx8C,GAAG,GAAGoI,UACjB,GA1kBKgL,EAAU5S,GAAI,SAAWnhB,EAAMf,GAAK,YAAce,EAAMf,IAAI,SAAUk1B,GASlE,IAAIn0B,EAAMm8D,aAAV,CAIA,IAAI7iE,EAAS8lE,EAAoBjrC,EAAO4nC,GAWjC5nC,EAAMkrC,aAAe/lE,GAAUyiE,GAAWziE,GAAUyI,UAA2B,GAAfoyB,EAAMnO,OAIzEjrB,EAAEoH,MAAO7I,IAAWyB,EAAEoiE,QAAQ,QAGnCh8C,GAAI,WAAanhB,EAAMf,IAAI,SAAUk1B,GAEpC,IAEImrC,EAAUnrC,EAAM7J,QAGhBi1C,EAAgBxkE,EAAEgiE,UAAUzlE,IAAKgoE,GAGjChmE,EAAS8lE,EAAoBjrC,EAAO4nC,GAIxB,IAAXuD,EACDvkE,EAAEoH,OAAO,GAKH7I,GAAUyB,EAAEoiE,QAAQ,KAAQoC,GAA4B,IAAXD,EAsB7C77D,EAAEggD,SAAU1oD,EAAEiiE,MAAM,GAAI1jE,IAAuB,IAAXgmE,IAC1CnrC,EAAM1O,iBACNnsB,EAAO68D,UArBPhiC,EAAM1O,iBAGD85C,EACDzD,EAAkBx8C,EAAEqG,QAAS5qB,EAAEgiE,UAAUzlE,IAAIkoE,GAAIzkE,EAAG,CAAE+gE,EAAkBx8C,EAAEqG,QAAS45C,KAI5ExkE,EAAEiiE,MAAMl+D,KAAM,IAAMu9D,EAAQoD,aAAclkD,SAAU8gD,EAAQp6C,YACnElnB,EAAEuE,IAAK,SAAUvE,EAAEgiE,UAAU38B,KAAKs/B,WAC7BtD,EAASuD,eACV5kE,EAAEoH,OAAO,SAgBtBpH,EAAE4qB,QAAS,UAOtBxjB,MAAO,SAAUy9D,GAIb,OAHApD,EAAc,EAGRx8D,EAAMgC,MAGP49D,IACIxD,EAASU,SACVf,EAAQ5F,SAMRp7D,EAAEoiE,QAAQtmC,IAAK,gBAAiB9N,QAChCwL,YAAY,WACRx5B,EAAEoiE,QAAQh8C,GAAI,eAAgB0+C,KAC/B,KAKXtD,EAASnhD,YAAaihD,EAAQn6C,QAC9Bg7C,EAAMnB,EAAS,YAAY,GAK3BxnC,YAAY,WAGRx5B,EAAEiiE,MAAM5hD,YAAaihD,EAAQlzB,OAAS,IAAMkzB,EAAQyD,SACpD5C,EAAMniE,EAAEiiE,MAAM,GAAI,UAAU,KAE7B,GAGEd,GACDz4D,EAAE,QACE2Z,IAAK,WAAY,IACjBA,IAAK,gBAAiB,KAAO8hD,KAGrCn9D,SAAS6rD,cAAc3U,OAEvBllB,EAAU8C,IAAK,IAAM72B,EAAMf,IAE3Be,EAAMgC,MAAO,EAENjH,EAAE4qB,QAAS,UA9CQ5qB,GAqD9Bg4D,MAAO,SAAU35D,GAEb,OADA2I,SAAS6rD,cAAc3U,OAChBl+C,EAAEuE,IAAK,QAAS,KAAMlG,IAOjCkG,IAAK,SAAUygE,EAAO/oE,EAAOoC,GAEzB,IAAI4mE,EAAWC,EACXC,EAAgBz8D,EAAEkuC,cAAeouB,GACjCI,EAAcD,EAAgBH,EAAQ,GAK1C,GAFA3mE,EAAU8mE,GAAiBz8D,EAAEkuC,cAAe36C,GAAUA,EAAQoC,GAAW,GAEpE2mE,EAAQ,CAQT,IAAMC,KALAE,IACFC,EAAaJ,GAAU/oE,GAIRmpE,EAGfF,EAAaE,EAAaH,GAGrBA,KAAajlE,EAAEgiE,UAAU38B,YACNpmC,IAAfimE,IAA2BA,EAAa,MAC7CllE,EAAEgiE,UAAUz9D,IAAK0gE,EAAWC,EAAY7mE,IAIxB,UAAb4mE,GAAsC,SAAbA,IAA0B5D,EAASgE,aAC/D7D,EACIt/D,IAAkB,SAAb+iE,EAAuB,GAAKjlE,EAAEnE,IAAKopE,EAAW5D,EAASuB,SAC5Dh4C,QAAS,UAKrB5qB,EAAEqqB,SAIN,OAAOhsB,EAAQinE,MAAQtlE,EAAIA,EAAE4qB,QAAS,MAAOw6C,IAOjDvpE,IAAK,SAAUmpE,EAAOpC,GAMlB,GAAuB,MAAlB39D,EAHL+/D,EAAQA,GAAS,SAIb,OAAO//D,EAAO+/D,GAIlB,GAAc,eAATA,EAAyB,CAC1B,GAAKhlE,EAAE2iE,QACH,OAAO3iE,EAAE2iE,QAAQ1mE,MAErB+oE,EAAQ,QAIZ,GAAc,SAATA,EACD,OAAOhE,EAAQ/kE,MAInB,GAAK+oE,KAAShlE,EAAEgiE,UAAU38B,KAAO,CAC7B,GAAsB,iBAAVu9B,EAAqB,CAC7B,IAAIsC,EAAallE,EAAEgiE,UAAUnmE,IAAKmpE,GAClC,OAAOE,EACHnE,EAAkBx8C,EAAEqG,QAChB5qB,EAAEgiE,UAAUuD,QAAQ7jE,SACpB1B,EAAEgiE,UACF,CAAEY,EAAQsC,IACV,GAEZ,OAAOllE,EAAEgiE,UAAUnmE,IAAKmpE,KAShC5+C,GAAI,SAAU4+C,EAAOj/D,EAAQy/D,GAEzB,IAAIC,EAAWC,EACXP,EAAgBz8D,EAAEkuC,cAAeouB,GACjCI,EAAcD,EAAgBH,EAAQ,GAE1C,GAAKA,EAQD,IAAMS,KALAN,IACFC,EAAaJ,GAAUj/D,GAIRq/D,EAGfM,EAAcN,EAAaK,GAGtBD,IACDC,EAAY,IAAMA,GAItBxgE,EAAM+S,QAASytD,GAAcxgE,EAAM+S,QAASytD,IAAe,GAG3DxgE,EAAM+S,QAASytD,GAAYjlE,KAAMklE,GAIzC,OAAO1lE,GAQX87B,IAAK,WACD,IAAI9gC,EAAGyqE,EACHh+D,EAAQzB,UACZ,IAAMhL,EAAI,EAAG2qE,WAAal+D,EAAMjE,OAAQxI,EAAI2qE,WAAY3qE,GAAK,GACzDyqE,EAAYh+D,EAAMzM,MACAiK,EAAM+S,gBACb/S,EAAM+S,QAAQytD,GAG7B,OAAOzlE,GAOX4qB,QAAS,SAAUrvB,EAAM8N,GACrB,IAAIu8D,EAAW,SAAUrqE,GACrB,IAAIsqE,EAAa5gE,EAAM+S,QAASzc,GAC3BsqE,GACDA,EAAWliE,KAAK,SAAUoC,GACtBg7D,EAAkBx8C,EAAEqG,QAAS7kB,EAAQ/F,EAAG,CAAEqJ,QAMtD,OAFAu8D,EAAU,IAAMrqE,GAChBqqE,EAAUrqE,GACHyE,IAQnB,SAASqiE,IAGL,OAAOtB,EAAkBx8C,EAAEuhD,KAAM,MAG7B/E,EAAkBx8C,EAAEuhD,KAAM,MAGtB/E,EAAkBx8C,EAAEuhD,KAAM,MAGtB/E,EAAkBx8C,EAAEuhD,KAAM,MAGtB9lE,EAAEgiE,UAAU/a,MAAOhiD,EAAMgC,MAGzBq6D,EAAQniC,KAIZmiC,EAAQjxD,MAIZixD,EAAQ8C,OAIZ9C,EAAQyE,OAER,iBA8ER,SAASzD,IAELtiE,EAAEoiE,QAEEh8C,GAAG,CAGC4/C,QAAS7C,EAET,eAAgB2B,EAEhB5mB,KAAM,WAEFsjB,EAASnhD,YAAaihD,EAAQ/iE,SAKlC0nE,QAAS,SAAU7sC,GACfp5B,EAAEiiE,MAAM5hD,YAAaihD,EAAQyD,SAC7B3rC,EAAM/S,mBAKV,kBAAmB,SAAU+S,GAEzB,IAAI76B,EAAS8lE,EAAoBjrC,EAAO4nC,GAGnCziE,GAAUyB,EAAEoiE,QAAQ,KAErBhpC,EAAM/S,kBAMa,aAAd+S,EAAMh0B,MAAwBsD,EAAGnK,GAASkoB,GAAI,6CAE/C2S,EAAM1O,iBAIN1qB,EAAEoiE,QAAQx8C,GAAG,GAAGoI,aAQhC5H,GAAI,QAAS,uDAAuD,WAEhE,IAAI8V,EAAUxzB,EAAGpH,MACb4kE,EAAahqC,EAAQ7yB,OACrB88D,EAAiBjqC,EAAQ1b,SAAU8gD,EAAQ8E,cAAiBlqC,EAAQ1b,SAAU8gD,EAAQp6C,UAItF2rC,EAAgBgP,IAChBhP,EAAgBA,IAAoBA,EAAcztD,MAAQytD,EAAcwT,KAASxT,EAAgB,OAGhGsT,GAAkBtT,IAAkBnqD,EAAEggD,SAAU1oD,EAAEiiE,MAAM,GAAIpP,KAC7D7yD,EAAEoiE,QAAQx8C,GAAG,GAAGoI,SAIdm4C,GAAkBD,EAAWI,IAC/BtmE,EAAEuE,IAAK,YAAavE,EAAEgiE,UAAU38B,KAAKs/B,UAAW,CAAE2B,IAAKJ,EAAWI,OAI3DH,GAAkB,SAAUD,GACnClmE,EAAEuE,IAAK,SAAU2hE,EAAWK,MACvBlF,EAASuD,eACV5kE,EAAEoH,OAAO,IAKP8+D,EAAWlO,OACjBh4D,EAAEg4D,QACGqJ,EAASmF,cACVxmE,EAAEoH,OAAO,IAIP8+D,EAAW9+D,OACjBpH,EAAEoH,OAAO,MAuEzB,SAAS09D,EAAuB1rC,GAG5BA,EAAM/S,kBAGNm7C,EAASx+C,SAAUs+C,EAAQ/iE,QAG3ByB,EAAEiiE,MAAMj/C,SAAUs+C,EAAQyD,SAG1B/kE,EAAEiH,OAKN,SAASk8D,EAAoB/pC,GAEzB,IAAImrC,EAAUnrC,EAAM7J,QAGhBk3C,EAAkB,WAAWl8D,KAAKg6D,GAGtC,GAAgB,IAAXA,EAED,OADAvkE,EAAEoH,OAAO,IACF,GAIK,IAAXm9D,GAAiBkC,IAAoBxhE,EAAMgC,MAAQjH,EAAEgiE,UAAUzlE,IAAIgoE,MAGpEnrC,EAAM1O,iBACN0O,EAAM/S,kBAIDogD,EAAoBzmE,EAAEg4D,QAAQ5wD,QAC5BpH,EAAEiH,QAMjB,OAAO,IAAIy6D,EAwDb,SAASyC,IAEP,GAAKtD,EAAMr+C,UAAYsoC,EAAQtoC,SAC3B,OAAO,EAGX,IAAIkkD,EAASh+D,EAAG,iDACZ0b,SAAU,QAGVuiD,EAAqBD,EAAO,GAAGnnB,YAGnCmnB,EAAOrkD,IAAK,WAAY,UAGxB,IAGIukD,EAHSl+D,EAAG,8BAA+B0b,SAAUsiD,GAG5B,GAAGnnB,YAMhC,OAHAmnB,EAAOnmD,SAGAomD,EAAqBC,EAU9B,SAASvC,EAAoBjrC,EAAO4nC,GAElC,IAAIr7D,EAAO,GAUX,OARKyzB,EAAMzzB,OACPA,EAAOyzB,EAAMzzB,MAGZyzB,EAAMytC,eAAiBztC,EAAMytC,cAAclhE,OAC5CA,EAAOyzB,EAAMytC,cAAclhE,MAG1BA,GAAQA,EAAKnC,OAAS,EAClBw9D,GAAWr7D,EAAK6B,QAASw5D,IAAa,EAChCA,EAEAr7D,EAAK,GAIbyzB,EAAM76B,OAiLf,SAAS4jE,EAAK39C,EAASsiD,EAAW7qE,GAChC,GAAKyM,EAAEkuC,cAAckwB,GACjB,IAAM,IAAIvqE,KAAOuqE,EACbC,EAAQviD,EAASjoB,EAAKuqE,EAAUvqE,SAIpCwqE,EAAQviD,EAASsiD,EAAW7qE,GAGlC,SAAS8qE,EAAQviD,EAASsiD,EAAW7qE,GACnCuoB,EAAQs7B,cACU,QAAbgnB,EAAsB,GAAK,SAAWA,EACvC7qE,GAiBN,SAAS4lE,IACP,IACI,OAAO76D,SAAS6rD,cAClB,MAAQmU,KAMZ,OA/TAjG,EAAkBQ,QAAU,SAAU0F,GAEpC,MAAO,CAEH/E,OAHJ+E,EAASA,GAAU,SAIf74B,OAAQ64B,EAAS,WACjBlC,QAASkC,EAAS,YAElBllE,MAAOklE,EAAS,UAChB9/C,OAAQ8/C,EAAS,kBACjB1oE,OAAQ0oE,EAAS,kBAEjBlB,OAAQkB,EAAS,WAEjB7C,MAAO6C,EAAS,UAChB52D,KAAM42D,EAAS,SAEf9nC,IAAK8nC,EAAS,UA4GpBlG,EAAkBx8C,EAAI,CAcpB2iD,MAAO,SAAUC,GAcb,IAZA,IAEIC,EAGAC,EAAY,GAGZC,EAAUvG,EAAkBx8C,EAAEqG,QAASu8C,EAAY9mE,IAAK8mE,GAIpDG,GAAWvG,EAAkBx8C,EAAEqG,QAASu8C,EAAYz/D,IAAKy/D,EAAa,CAAEG,IAAaA,GAAWH,EAAYnsE,EAGhHosE,EAAkBrG,EAAkBx8C,EAAEqG,QAASu8C,EAAY9hC,KAAM8hC,EAAa,CAAEG,IAGhFD,GAAatG,EAAkBx8C,EAAEuhD,KAC7BqB,EAAYrB,KACZsB,EAAiB,GACjBA,EAAiB,GACjBA,EAAiB,IAKzB,OAAOC,GAOXvB,KAAM,SAAUniB,EAASte,EAAM/3B,EAAOw5D,GAGlC,OAAMzhC,EAYC,IAAMse,GANbr2C,EAAQA,EAAQ,WAAaA,EAAQ,IAAM,KAG3Cw5D,EAAYA,EAAY,IAAMA,EAAY,IAGC,KAT3CzhC,EAAO38B,EAAEjD,QAAS4/B,GAASA,EAAKhkC,KAAM,IAAOgkC,GASW,KAAOse,EAAU,IAZrD,IAmBxB4jB,KAAM,SAAUvzC,GACZ,OAASA,EAAS,GAAK,IAAK,IAAOA,GAOvCpJ,QAAS,SAAUkjB,EAAU05B,EAAO91D,GAChC,MAA0B,mBAAZo8B,EAAyBA,EAASrjC,MAAO+8D,EAAO91D,GAAQ,IAAOo8B,GAOjF7uB,OAAQ,SAAUxV,GACd,MAAS,KAAOc,KAAMd,EAAQ,IAAQ,EAAI,GAO9Cg+D,OAAQ,SAAUxrE,GACd,MAAO,GAAGyF,SAASvG,KAAMc,GAAQuL,QAAS,SAAY,GAAKlG,KAAKomE,UAAWzrE,EAAM0rE,YAOrFD,UAAW,SAAUzrE,GACjB,MAAO,GAAGyF,SAASvG,KAAMc,GAAQuL,QAAS,WAAc,GAAKvL,EAAQ,GAAM,GAO/E2rE,SA2DF,SAAkBd,EAAWz9D,GAK3B,IAAM,IAAI9M,KAJJmM,EAAEkuC,cAAckwB,KAClBA,EAAY,CAAEA,UAAWz9D,IAE7BA,EAAO,GACUy9D,EAAY,CACzB,IAAI5kD,GAAe,QAAP3lB,EAAgB,GAAK,SAAWA,EACxCsrE,EAAUf,EAAUvqE,GACxB8M,GAAmB,MAAXw+D,EAAkB,GAAK3lD,EAAO,KAAO4kD,EAAUvqE,GAAO,IAElE,OAAO8M,IA7DT03D,EAAkBtvC,OAAS,SAAUl2B,EAAMusE,GAGzCp/D,EAAEzG,GAAI1G,GAAS,SAAU8C,EAAS+7B,GAG9B,IAAI2tC,EAAgBzmE,KAAK+H,KAAM9N,GAG/B,MAAgB,UAAX8C,EACM0pE,EAINA,GAAmC,iBAAX1pE,EAClB0iE,EAAkBx8C,EAAEqG,QAASm9C,EAAe1pE,GAAW0pE,EAAe,CAAE3tC,IAM5E94B,KAAKgjB,MAAM,WACF5b,EAAGpH,MACH+H,KAAM9N,IACd,IAAIwlE,EAAmBz/D,KAAM/F,EAAMusE,EAAWzpE,OAM1DqK,EAAEzG,GAAI1G,GAAOonC,SAAWmlC,EAAUnlC,UA4C7Bo+B,GA5rCiB,mBAAVpe,QAAwBA,MAChCA,OAAQ,SAAU,CAAC,UAAWiE,GAGN,WAAlB,oBAAO9rD,QAAP,cAAOA,UACbC,EAAOD,QAAU8rD,EAAS+U,EAAQ,MAGjCv+D,OAAO4qE,OAASphB,EAASz+B,S,8HCbvB7qB,EAAQspD,E;;;;;GAARtpD,OAIT,EAJiBspD,EAIX,WAGN,IAAIqhB,EAAW,CACbC,WAAY,kCACZC,gBAAiB,qBACjBC,KAAM,OACNC,MAAO,SAKLC,EAAiB,SAAwBvmE,GAC3C,IAAIwmE,EAAc,GACdz9C,EAAQ/oB,EAAMw6C,WAAWqX,cAAcqU,EAASE,iBAMpD,OAJIr9C,IACFy9C,EAAcz9C,EAAMqvB,WAGfouB,GAGLC,EAAqB,SAA4BhkD,GACnD,GAAIA,EAAQmJ,WAAWnqB,OAAS,EAG9B,IAFA,IAAImqB,EAAa,GAAGhsB,MAAMxG,KAAKqpB,EAAQmJ,YAE9B3yB,EAAI,EAAGA,EAAI2yB,EAAWnqB,OAAQxI,IAAK,CAC1C,IAAI8qE,EAAOn4C,EAAW3yB,GAEtB,GApBa,IAoBT8qE,EAAKnvB,SACP,OAAOmvB,EAKb,OAAOthD,GAGLikD,EAAqB,SAA4B1mE,GACnD,IAAIwmE,EAAcxmE,EAAM2mE,kBAAkBH,YACtCz9C,EAAQ/oB,EAAMw6C,WAAWqX,cAAcqU,EAASE,iBAEhDr9C,IACY09C,EAAmB19C,GACzBqvB,UAAYouB,IAIpBI,IAAYvrE,OAAOwrE,KAInBC,EAAmB,SAA0B9mE,GAC/C,GAAIA,EAAM+mE,aAAa,aAAeH,EACpC,MAAO,GAAGhnE,MAAMxG,KAAK4G,EAAMghC,OAAOp/B,KAAI,SAAUs/B,GAC9C,OAAOA,EAAK1nC,QACX8F,KAAK,MAGV,IAAwC,IAApCU,EAAM9F,MAAMuL,QAVF,YAU6B,CACzC,IAAIuhE,EAAgBhnE,EAAM9F,MAAMiF,MAVV,MAWtB,OAAO6nE,EAAcA,EAAcvlE,OAAS,GAG9C,OAAOzB,EAAM9F,OAGf,SAAS+sE,IACP,IAAIl+C,EAAQxpB,KAAKi7C,WAAWqX,cAAcqU,EAASE,iBAEnD,GAAIr9C,EAAO,CACT,IAAItG,EAAUgkD,EAAmB19C,GAC7Bm+C,EAAaJ,EAAiBvnE,MAE9B2nE,EAAWzlE,OACbghB,EAAQ21B,UAAY8uB,EAEpBR,EAAmBnnE,OAKzB,SAAS4nE,IAKP,IAJA,IAAIC,EAAiB,GAAGxnE,MAAMxG,KAAKmG,KAAKy+B,iBAAiBkoC,EAASI,QAAQzkE,QAAO,SAAU7B,GACzF,QAASA,EAAM2mE,qBAGR1tE,EAAI,EAAGwY,EAAM21D,EAAe3lE,OAAQxI,EAAIwY,EAAKxY,IACpDytE,EAAmBU,EAAenuE,IAItC,IACIouE,EACS,QADTA,EAEW,SA2Df,MAzDwB,CACtBztC,KAAM,SAAchD,EAAe0wC,QACX,IAAlB1wC,IACFA,EAAgBsvC,EAASC,iBAGN,IAAjBmB,IACFA,EAAepB,EAASG,MAM1B,IAHA,IAAIkB,EAAsB,GAAG3nE,MAAMxG,KAAK6L,SAAS+4B,iBAAiBpH,IAC9D4wC,EAAW,GAAG5nE,MAAMxG,KAAK6L,SAAS+4B,iBAAiBspC,IAE9CruE,EAAI,EAAGwY,EAAM81D,EAAoB9lE,OAAQxI,EAAIwY,EAAKxY,IAAK,CAC9D,IAAI+G,EAAQunE,EAAoBtuE,GAChCU,OAAOC,eAAeoG,EApBP,oBAoB8B,CAC3C9F,MAAO,CACLssE,YAAaD,EAAevmE,IAE9BD,UAAU,IAEZknE,EAAkB7tE,KAAK4G,GACvBA,EAAMs3B,iBAAiB+vC,EAAmBJ,GAG5C,IAAK,IAAIQ,EAAK,EAAGC,EAAOF,EAAS/lE,OAAQgmE,EAAKC,EAAMD,IAClDD,EAASC,GAAInwC,iBAAiB+vC,EAAiBF,GAE/CxtE,OAAOC,eAAe4tE,EAASC,GAjChB,oBAiCqC,CAClDvtE,OAAO,EACP6F,UAAU,KAIhBsoB,QAAS,WAQP,IAPA,IAAIm/C,EAAW,GAAG5nE,MAAMxG,KAAK6L,SAAS+4B,iBAAiBkoC,EAASG,OAAOxkE,QAAO,SAAU8lE,GACtF,QAASA,EAAKhB,qBAEZY,EAAsB,GAAG3nE,MAAMxG,KAAK6L,SAAS+4B,iBAAiBkoC,EAASI,QAAQzkE,QAAO,SAAU7B,GAClG,QAASA,EAAM2mE,qBAGR1tE,EAAI,EAAGwY,EAAM81D,EAAoB9lE,OAAQxI,EAAIwY,EAAKxY,IAAK,CAC9D,IAAI+G,EAAQunE,EAAoBtuE,GAChCytE,EAAmB1mE,GACnBA,EAAK,uBAAmB9C,EACxB8C,EAAMymD,oBAAoB4gB,EAAmBJ,GAG/C,IAAK,IAAIW,EAAM,EAAGC,EAAQL,EAAS/lE,OAAQmmE,EAAMC,EAAOD,IACtDJ,EAASI,GAAKnhB,oBAAoB4gB,EAAiBF,GAEnDK,EAASI,GAAT,uBAAgC1qE,KAzJnB,YAAnB,oBAAOnE,QAAP,cAAOA,gBAA0C,IAAXC,EAAyBA,EAAOD,QAAU8rD,IAC5D,mBAAXjE,QAAyBA,MAAaA,OAAOiE,IACnDtpD,EAASA,GAAUD,MAAaqrE,kBAAoB9hB,IAiKzD5/C,SAASqyB,iBAAiB,oBAAoB,WAE5CqvC,kBAAkB/sC,Y;;;;;;;;;IClKpB,SAAU59B,GAAG,GAAoB,YAAjB,oBAAOjD,QAAP,cAAOA,gBAAoC,IAATC,EAAsBA,EAAOD,QAAQiD,SAAS,GAAmB,mBAAT4kD,QAAqBA,MAAYA,OAAO,GAAG5kD,OAAO,EAA0B,oBAATX,OAAwBA,YAA+B,IAATE,EAAwBA,EAA6B,oBAAPD,KAAsBA,KAAYiE,MAAOuoE,MAAQ9rE,KAA1T,EAAiU,WAAqC,OAAmB,SAASjC,EAAEwO,EAAE7N,EAAEP,GAAG,SAAST,EAAET,EAAE+C,GAAG,IAAItB,EAAEzB,GAAG,CAAC,IAAIsP,EAAEtP,GAAG,CAA2C,IAAI+C,GAAxC,mBAAmB49D,GAASA,EAAiB,OAAOtgE,EAAEL,GAAE,GAAI,GAAG87C,EAAE,OAAOA,EAAE97C,GAAE,GAAI,IAAIuE,EAAE,IAAI03C,MAAM,uBAAuBj8C,EAAE,KAAK,MAAMuE,EAAE2f,KAAK,mBAAmB3f,EAAE,IAAIzC,EAAEL,EAAEzB,GAAG,CAACF,QAAQ,IAAIwP,EAAEtP,GAAG,GAAGG,KAAK2B,EAAEhC,SAAQ,SAASgB,GAAoB,OAAOL,EAAlB6O,EAAEtP,GAAG,GAAGc,IAAeA,KAAIgB,EAAEA,EAAEhC,QAAQgB,EAAEwO,EAAE7N,EAAEP,GAAG,OAAOO,EAAEzB,GAAGF,QAAQ,IAAI,IAAIg8C,EAAE,mBAAmB6kB,GAASA,EAAQ3gE,EAAE,EAAEA,EAAEkB,EAAEsH,OAAOxI,IAAIS,EAAES,EAAElB,IAAI,OAAOS,EAA5b,CAA2c,CAAC0M,EAAE,CAAC,SAASwzD,EAAQ5gE,EAAOD,KAEn1B,IAAIgvE,EAAE,CAAC,SAASnO,EAAQ5gE,EAAOD,GAEjC,IAAIivE,EAAapO,EAAQ,GAqBzB,SAASqO,EAAQvgE,GACd,GAAKA,EAAL,CAGA,IAMIwgE,EAAM,CAAC,EAAG,EAAG,GACb1qE,EAAI,EACJ6O,EAAQ3E,EAAO2E,MARP,wBASZ,GAAIA,EAAO,CACRA,EAAQA,EAAM,GACd,IAAK,IAAIpT,EAAI,EAAGA,EAAIivE,EAAIzmE,OAAQxI,IAC7BivE,EAAIjvE,GAAKmkB,SAAS/Q,EAAMpT,GAAKoT,EAAMpT,GAAI,SAGxC,GAAIoT,EAAQ3E,EAAO2E,MAdb,wBAcyB,CACjCA,EAAQA,EAAM,GACd,IAASpT,EAAI,EAAGA,EAAIivE,EAAIzmE,OAAQxI,IAC7BivE,EAAIjvE,GAAKmkB,SAAS/Q,EAAMzM,MAAU,EAAJ3G,EAAW,EAAJA,EAAQ,GAAI,SAGlD,GAAIoT,EAAQ3E,EAAO2E,MAnBb,4FAmB0B,CAClC,IAASpT,EAAI,EAAGA,EAAIivE,EAAIzmE,OAAQxI,IAC7BivE,EAAIjvE,GAAKmkB,SAAS/Q,EAAMpT,EAAI,IAE/BuE,EAAIsgB,WAAWzR,EAAM,SAEnB,GAAIA,EAAQ3E,EAAO2E,MAxBd,8GAwB0B,CACjC,IAASpT,EAAI,EAAGA,EAAIivE,EAAIzmE,OAAQxI,IAC7BivE,EAAIjvE,GAAKiC,KAAKyiC,MAAiC,KAA3B7f,WAAWzR,EAAMpT,EAAI,KAE5CuE,EAAIsgB,WAAWzR,EAAM,SAEnB,GAAIA,EAAQ3E,EAAO2E,MA7BV,SA6B0B,CACrC,GAAgB,eAAZA,EAAM,GACP,MAAO,CAAC,EAAG,EAAG,EAAG,GAGpB,KADA67D,EAAMF,EAAW37D,EAAM,KAEpB,OAIN,IAASpT,EAAI,EAAGA,EAAIivE,EAAIzmE,OAAQxI,IAC7BivE,EAAIjvE,GAAKklD,EAAM+pB,EAAIjvE,GAAI,EAAG,KAS7B,OAHGuE,EAJEA,GAAU,GAALA,EAIH2gD,EAAM3gD,EAAG,EAAG,GAHZ,EAKP0qE,EAAI,GAAK1qE,EACF0qE,GAGV,SAASC,EAAQzgE,GACd,GAAKA,EAAL,CAGA,IACI2E,EAAQ3E,EAAO2E,MADT,4GAEV,GAAIA,EAAO,CACR,IAAI+7D,EAAQtqD,WAAWzR,EAAM,IAK7B,MAAO,CAJC8xC,EAAM/gC,SAAS/Q,EAAM,IAAK,EAAG,KAC7B8xC,EAAMrgC,WAAWzR,EAAM,IAAK,EAAG,KAC/B8xC,EAAMrgC,WAAWzR,EAAM,IAAK,EAAG,KAC/B8xC,EAAMz+C,MAAM0oE,GAAS,EAAIA,EAAO,EAAG,MAKjD,SAASC,EAAO3gE,GACb,GAAKA,EAAL,CAGA,IACI2E,EAAQ3E,EAAO2E,MADT,0GAEV,GAAIA,EAAO,CACV,IAAI+7D,EAAQtqD,WAAWzR,EAAM,IAK3B,MAAO,CAJC8xC,EAAM/gC,SAAS/Q,EAAM,IAAK,EAAG,KAC7B8xC,EAAMrgC,WAAWzR,EAAM,IAAK,EAAG,KAC/B8xC,EAAMrgC,WAAWzR,EAAM,IAAK,EAAG,KAC/B8xC,EAAMz+C,MAAM0oE,GAAS,EAAIA,EAAO,EAAG,MAyCjD,SAASE,EAAWC,EAAMH,GAIvB,YAHclrE,IAAVkrE,IACDA,OAAqBlrE,IAAZqrE,EAAK,GAAmBA,EAAK,GAAK,GAEvC,QAAUA,EAAK,GAAK,KAAOA,EAAK,GAAK,KAAOA,EAAK,GAC9C,KAAOH,EAAQ,IAc5B,SAASI,EAAeD,EAAMH,GAI3B,MAAO,QAHCltE,KAAKyiC,MAAM4qC,EAAK,GAAG,IAAM,KAGZ,MAFbrtE,KAAKyiC,MAAM4qC,EAAK,GAAG,IAAM,KAEA,MADzBrtE,KAAKyiC,MAAM4qC,EAAK,GAAG,IAAM,KACY,OAASH,GAASG,EAAK,IAAM,GAAK,IAUlF,SAASE,EAAWC,EAAMN,GAIvB,YAHclrE,IAAVkrE,IACDA,OAAqBlrE,IAAZwrE,EAAK,GAAmBA,EAAK,GAAK,GAEvC,QAAUA,EAAK,GAAK,KAAOA,EAAK,GAAK,MAAQA,EAAK,GAAK,MACpDN,EAAQ,IAkBrB,SAASjqB,EAAMwqB,EAAKrqE,EAAKqH,GACtB,OAAOzK,KAAKoD,IAAIpD,KAAKyK,IAAIrH,EAAKqqE,GAAMhjE,GAGvC,SAASijE,EAAUD,GACjB,IAAIx8D,EAAMw8D,EAAIhpE,SAAS,IAAIo9C,cAC3B,OAAQ5wC,EAAI1K,OAAS,EAAK,IAAM0K,EAAMA,EAjNxCnT,EAAOD,QAAU,CACdkvE,QAASA,EACTE,QAASA,EACTU,OA4GH,SAAgBnhE,GACb,IAAI6gE,EAAON,EAAQvgE,GACnB,OAAO6gE,GAAQA,EAAK3oE,MAAM,EAAG,IA7G7BkpE,OAgHH,SAAgBphE,GACd,IAAIghE,EAAOP,EAAQzgE,GACnB,OAAOghE,GAAQA,EAAK9oE,MAAM,EAAG,IAjH5ByoE,OAAQA,EACRU,SAmHH,SAAkBrhE,GACf,IAAIshE,EAAOf,EAAQvgE,GACnB,GAAIshE,EACD,OAAOA,EAAK,GAEV,GAAIA,EAAOb,EAAQzgE,GACrB,OAAOshE,EAAK,GAEV,GAAIA,EAAOX,EAAO3gE,GACpB,OAAOshE,EAAK,IA1HfC,UA+HH,SAAmBf,GAChB,MAAO,IAAMU,EAAUV,EAAI,IAAMU,EAAUV,EAAI,IAClCU,EAAUV,EAAI,KAhI3BgB,UAmIH,SAAmBX,EAAMH,GACtB,GAAIA,EAAQ,GAAMG,EAAK,IAAMA,EAAK,GAAK,EACpC,OAAOD,EAAWC,EAAMH,GAE3B,MAAO,OAASG,EAAK,GAAK,KAAOA,EAAK,GAAK,KAAOA,EAAK,GAAK,KAtI5DD,WAAYA,EACZa,cAgJH,SAAuBZ,EAAMH,GAC1B,GAAIA,EAAQ,GAAMG,EAAK,IAAMA,EAAK,GAAK,EACpC,OAAOC,EAAeD,EAAMH,GAE/B,IAAIruE,EAAImB,KAAKyiC,MAAM4qC,EAAK,GAAG,IAAM,KAC7BjgE,EAAIpN,KAAKyiC,MAAM4qC,EAAK,GAAG,IAAM,KAC7B9/D,EAAIvN,KAAKyiC,MAAM4qC,EAAK,GAAG,IAAM,KAEjC,MAAO,OAASxuE,EAAI,MAAQuO,EAAI,MAAQG,EAAI,MAvJ5C+/D,eAAgBA,EAChBY,UAgKH,SAAmBV,EAAMN,GACtB,GAAIA,EAAQ,GAAMM,EAAK,IAAMA,EAAK,GAAK,EACpC,OAAOD,EAAWC,EAAMN,GAE3B,MAAO,OAASM,EAAK,GAAK,KAAOA,EAAK,GAAK,MAAQA,EAAK,GAAK,MAnK7DD,WAAYA,EACZY,UA+KH,SAAmBC,EAAKlB,QACPlrE,IAAVkrE,IACDA,OAAoBlrE,IAAXosE,EAAI,GAAmBA,EAAI,GAAK,GAE5C,MAAO,OAASA,EAAI,GAAK,KAAOA,EAAI,GAAK,MAAQA,EAAI,GAAK,UACrCpsE,IAAVkrE,GAAiC,IAAVA,EAAc,KAAOA,EAAQ,IAAM,KAnLrEmB,QAsLH,SAAiBrB,GACf,OAAOsB,EAAatB,EAAItoE,MAAM,EAAG,MAenC,IAAI4pE,EAAe,GACnB,IAAK,IAAIhwE,KAAQwuE,EACdwB,EAAaxB,EAAWxuE,IAASA,GAGlC,CAAC,EAAI,IAAIiwE,EAAE,CAAC,SAAS7P,EAAQ5gE,EAAOD,GAEtC,IAAI2wE,EAAU9P,EAAQ,GAClBlyD,EAASkyD,EAAQ,GAEjB+P,EAAQ,SAARA,EAAkBxkB,GACrB,OAAIA,aAAewkB,EACXxkB,EAEF5lD,gBAAgBoqE,GAItBpqE,KAAK85B,OAAQ,EACb95B,KAAKmR,OAAS,CACbw3D,IAAK,CAAC,EAAG,EAAG,GACZ0B,IAAK,CAAC,EAAG,EAAG,GACZC,IAAK,CAAC,EAAG,EAAG,GACZP,IAAK,CAAC,EAAG,EAAG,GACZQ,KAAM,CAAC,EAAG,EAAG,EAAG,GAChB1B,MAAO,QAKW,iBAARjjB,GACV6jB,EAAOthE,EAAOugE,QAAQ9iB,IAErB5lD,KAAKwqE,UAAU,MAAOf,IACZA,EAAOthE,EAAOygE,QAAQhjB,IAChC5lD,KAAKwqE,UAAU,MAAOf,IACZA,EAAOthE,EAAO2gE,OAAOljB,KAC/B5lD,KAAKwqE,UAAU,MAAOf,GAEE,WAAf,EAAO7jB,UAEFjoD,KADf8rE,EAAO7jB,GACEprD,QAAgCmD,IAAb8rE,EAAKtsB,IAChCn9C,KAAKwqE,UAAU,MAAOf,QACD9rE,IAAX8rE,EAAK9vE,QAAsCgE,IAAnB8rE,EAAKgB,UACvCzqE,KAAKwqE,UAAU,MAAOf,QACD9rE,IAAX8rE,EAAKlzB,QAAkC54C,IAAf8rE,EAAK9uE,MACvCqF,KAAKwqE,UAAU,MAAOf,QACD9rE,IAAX8rE,EAAKjzB,QAAsC74C,IAAnB8rE,EAAKiB,UACvC1qE,KAAKwqE,UAAU,MAAOf,QACD9rE,IAAX8rE,EAAK1vE,QAAiC4D,IAAd8rE,EAAKkB,MACvC3qE,KAAKwqE,UAAU,OAAQf,MAnCjB,IAAIW,EAAMxkB,GAclB,IAAI6jB,IA0BLW,EAAM9uE,UAAY,CACjB09B,QAAS,WACR,OAAOh5B,KAAK85B,OAEb6uC,IAAK,WACJ,OAAO3oE,KAAK4qE,SAAS,MAAOlmE,YAE7B2lE,IAAK,WACJ,OAAOrqE,KAAK4qE,SAAS,MAAOlmE,YAE7B4lE,IAAK,WACJ,OAAOtqE,KAAK4qE,SAAS,MAAOlmE,YAE7BqlE,IAAK,WACJ,OAAO/pE,KAAK4qE,SAAS,MAAOlmE,YAE7B6lE,KAAM,WACL,OAAOvqE,KAAK4qE,SAAS,OAAQlmE,YAG9BmmE,SAAU,WACT,OAAO7qE,KAAKmR,OAAOw3D,KAEpBmC,SAAU,WACT,OAAO9qE,KAAKmR,OAAOk5D,KAEpBU,SAAU,WACT,OAAO/qE,KAAKmR,OAAOm5D,KAEpBU,SAAU,WACT,IAAI75D,EAASnR,KAAKmR,OAClB,OAAqB,IAAjBA,EAAO03D,MACH13D,EAAO44D,IAAI/lE,OAAO,CAACmN,EAAO03D,QAE3B13D,EAAO44D,KAEfkB,UAAW,WACV,OAAOjrE,KAAKmR,OAAOo5D,MAEpBW,UAAW,WACV,IAAI/5D,EAASnR,KAAKmR,OAClB,OAAOA,EAAOw3D,IAAI3kE,OAAO,CAACmN,EAAO03D,SAElCsC,UAAW,WACV,IAAIh6D,EAASnR,KAAKmR,OAClB,OAAOA,EAAOk5D,IAAIrmE,OAAO,CAACmN,EAAO03D,SAElCA,MAAO,SAAUjoE,GAChB,YAAYjD,IAARiD,EACIZ,KAAKmR,OAAO03D,OAEpB7oE,KAAKwqE,UAAU,QAAS5pE,GACjBZ,OAGRm9C,IAAK,SAAUv8C,GACd,OAAOZ,KAAKorE,WAAW,MAAO,EAAGxqE,IAElCs8C,MAAO,SAAUt8C,GAChB,OAAOZ,KAAKorE,WAAW,MAAO,EAAGxqE,IAElCo8C,KAAM,SAAUp8C,GACf,OAAOZ,KAAKorE,WAAW,MAAO,EAAGxqE,IAElCyqE,IAAK,SAAUzqE,GAKd,OAJIA,IAEHA,GADAA,GAAO,KACK,EAAI,IAAMA,EAAMA,GAEtBZ,KAAKorE,WAAW,MAAO,EAAGxqE,IAElC0qE,WAAY,SAAU1qE,GACrB,OAAOZ,KAAKorE,WAAW,MAAO,EAAGxqE,IAElC6pE,UAAW,SAAU7pE,GACpB,OAAOZ,KAAKorE,WAAW,MAAO,EAAGxqE,IAElC2qE,YAAa,SAAU3qE,GACtB,OAAOZ,KAAKorE,WAAW,MAAO,EAAGxqE,IAElC8pE,UAAW,SAAU9pE,GACpB,OAAOZ,KAAKorE,WAAW,MAAO,EAAGxqE,IAElC4qE,UAAW,SAAU5qE,GACpB,OAAOZ,KAAKorE,WAAW,MAAO,EAAGxqE,IAElCjG,MAAO,SAAUiG,GAChB,OAAOZ,KAAKorE,WAAW,MAAO,EAAGxqE,IAElC+pE,KAAM,SAAU/pE,GACf,OAAOZ,KAAKorE,WAAW,OAAQ,EAAGxqE,IAEnC6qE,QAAS,SAAU7qE,GAClB,OAAOZ,KAAKorE,WAAW,OAAQ,EAAGxqE,IAEnC8qE,OAAQ,SAAU9qE,GACjB,OAAOZ,KAAKorE,WAAW,OAAQ,EAAGxqE,IAEnCm8C,MAAO,SAAUn8C,GAChB,OAAOZ,KAAKorE,WAAW,OAAQ,EAAGxqE,IAGnC8oE,UAAW,WACV,OAAOvhE,EAAOuhE,UAAU1pE,KAAKmR,OAAOw3D,MAErCgB,UAAW,WACV,OAAOxhE,EAAOwhE,UAAU3pE,KAAKmR,OAAOw3D,IAAK3oE,KAAKmR,OAAO03D,QAEtDE,WAAY,WACX,OAAO5gE,EAAO4gE,WAAW/oE,KAAKmR,OAAOw3D,IAAK3oE,KAAKmR,OAAO03D,QAEvDe,cAAe,WACd,OAAOzhE,EAAOyhE,cAAc5pE,KAAKmR,OAAOw3D,IAAK3oE,KAAKmR,OAAO03D,QAE1DgB,UAAW,WACV,OAAO1hE,EAAO0hE,UAAU7pE,KAAKmR,OAAOk5D,IAAKrqE,KAAKmR,OAAO03D,QAEtDK,WAAY,WACX,OAAO/gE,EAAO+gE,WAAWlpE,KAAKmR,OAAOk5D,IAAKrqE,KAAKmR,OAAO03D,QAEvDiB,UAAW,WACV,OAAO3hE,EAAO2hE,UAAU9pE,KAAKmR,OAAO44D,IAAK/pE,KAAKmR,OAAO03D,QAEtDmB,QAAS,WACR,OAAO7hE,EAAO6hE,QAAQhqE,KAAKmR,OAAOw3D,IAAK3oE,KAAKmR,OAAO03D,QAGpD8C,UAAW,WACV,IAAIhD,EAAM3oE,KAAKmR,OAAOw3D,IACtB,OAAQA,EAAI,IAAM,GAAOA,EAAI,IAAM,EAAKA,EAAI,IAG7CiD,WAAY,WAIX,IAFA,IAAIjD,EAAM3oE,KAAKmR,OAAOw3D,IAClBkD,EAAM,GACDnyE,EAAI,EAAGA,EAAIivE,EAAIzmE,OAAQxI,IAAK,CACpC,IAAIoyE,EAAOnD,EAAIjvE,GAAK,IACpBmyE,EAAInyE,GAAMoyE,GAAQ,OAAWA,EAAO,MAAQnwE,KAAK22B,KAAMw5C,EAAO,MAAS,MAAQ,KAEhF,MAAO,MAASD,EAAI,GAAK,MAASA,EAAI,GAAK,MAASA,EAAI,IAGzDE,SAAU,SAAUC,GAEnB,IAAIC,EAAOjsE,KAAK4rE,aACZM,EAAOF,EAAOJ,aAClB,OAAIK,EAAOC,GACFD,EAAO,MAASC,EAAO,MAExBA,EAAO,MAASD,EAAO,MAGhCE,MAAO,SAAUH,GAChB,IAAII,EAAgBpsE,KAAK+rE,SAASC,GAClC,OAAII,GAAiB,IACb,MAGAA,GAAiB,IAAO,KAAO,IAGxCC,KAAM,WAEL,IAAI1D,EAAM3oE,KAAKmR,OAAOw3D,IAEtB,OADoB,IAATA,EAAI,GAAoB,IAATA,EAAI,GAAoB,IAATA,EAAI,IAAY,IAC5C,KAGd2D,MAAO,WACN,OAAQtsE,KAAKqsE,QAGdE,OAAQ,WAEP,IADA,IAAI5D,EAAM,GACDjvE,EAAI,EAAGA,EAAI,EAAGA,IACtBivE,EAAIjvE,GAAK,IAAMsG,KAAKmR,OAAOw3D,IAAIjvE,GAGhC,OADAsG,KAAKwqE,UAAU,MAAO7B,GACf3oE,MAGRwsE,QAAS,SAAUC,GAClB,IAAIpC,EAAMrqE,KAAKmR,OAAOk5D,IAGtB,OAFAA,EAAI,IAAMA,EAAI,GAAKoC,EACnBzsE,KAAKwqE,UAAU,MAAOH,GACfrqE,MAGR0sE,OAAQ,SAAUD,GACjB,IAAIpC,EAAMrqE,KAAKmR,OAAOk5D,IAGtB,OAFAA,EAAI,IAAMA,EAAI,GAAKoC,EACnBzsE,KAAKwqE,UAAU,MAAOH,GACfrqE,MAGR2sE,SAAU,SAAUF,GACnB,IAAIpC,EAAMrqE,KAAKmR,OAAOk5D,IAGtB,OAFAA,EAAI,IAAMA,EAAI,GAAKoC,EACnBzsE,KAAKwqE,UAAU,MAAOH,GACfrqE,MAGR4sE,WAAY,SAAUH,GACrB,IAAIpC,EAAMrqE,KAAKmR,OAAOk5D,IAGtB,OAFAA,EAAI,IAAMA,EAAI,GAAKoC,EACnBzsE,KAAKwqE,UAAU,MAAOH,GACfrqE,MAGR6sE,OAAQ,SAAUJ,GACjB,IAAI1C,EAAM/pE,KAAKmR,OAAO44D,IAGtB,OAFAA,EAAI,IAAMA,EAAI,GAAK0C,EACnBzsE,KAAKwqE,UAAU,MAAOT,GACf/pE,MAGR8sE,QAAS,SAAUL,GAClB,IAAI1C,EAAM/pE,KAAKmR,OAAO44D,IAGtB,OAFAA,EAAI,IAAMA,EAAI,GAAK0C,EACnBzsE,KAAKwqE,UAAU,MAAOT,GACf/pE,MAGR+sE,UAAW,WACV,IAAIpE,EAAM3oE,KAAKmR,OAAOw3D,IAElB/nE,EAAe,GAAT+nE,EAAI,GAAoB,IAATA,EAAI,GAAqB,IAATA,EAAI,GAE7C,OADA3oE,KAAKwqE,UAAU,MAAO,CAAC5pE,EAAKA,EAAKA,IAC1BZ,MAGRgtE,QAAS,SAAUP,GAClB,IAAI5D,EAAQ7oE,KAAKmR,OAAO03D,MAExB,OADA7oE,KAAKwqE,UAAU,QAAS3B,EAASA,EAAQ4D,GAClCzsE,MAGRitE,QAAS,SAAUR,GAClB,IAAI5D,EAAQ7oE,KAAKmR,OAAO03D,MAExB,OADA7oE,KAAKwqE,UAAU,QAAS3B,EAASA,EAAQ4D,GAClCzsE,MAGR6+C,OAAQ,SAAUquB,GACjB,IAAI7C,EAAMrqE,KAAKmR,OAAOk5D,IAClBgB,GAAOhB,EAAI,GAAK6C,GAAW,IAG/B,OAFA7C,EAAI,GAAKgB,EAAM,EAAI,IAAMA,EAAMA,EAC/BrrE,KAAKwqE,UAAU,MAAOH,GACfrqE,MAORmtE,IAAK,SAAUC,EAAYC,GAC1B,IACIrB,EAASoB,EACT5xE,OAAemC,IAAX0vE,EAAuB,GAAMA,EAEjC72B,EAAI,EAAIh7C,EAAI,EACZyC,EALS+B,KAKE6oE,QAAUmD,EAAOnD,QAE5ByE,IAAQ92B,EAAIv4C,IAAO,EAAKu4C,GAAKA,EAAIv4C,IAAM,EAAIu4C,EAAIv4C,IAAM,GAAK,EAC1DsvE,EAAK,EAAID,EAEb,OAAOttE,KACL2oE,IACA2E,EAZWttE,KAYCm9C,MAAQowB,EAAKvB,EAAO7uB,MAChCmwB,EAbWttE,KAaCk9C,QAAUqwB,EAAKvB,EAAO9uB,QAClCowB,EAdWttE,KAcCg9C,OAASuwB,EAAKvB,EAAOhvB,QAEjC6rB,MAhBW7oE,KAgBE6oE,QAAUrtE,EAAIwwE,EAAOnD,SAAW,EAAIrtE,KAGpDgyE,OAAQ,WACP,OAAOxtE,KAAK2oE,OAGbvlD,MAAO,WAKN,IAGIzoB,EAAOmJ,EAHP9B,EAAS,IAAIooE,EACbptE,EAASgD,KAAKmR,OACdlU,EAAS+E,EAAOmP,OAGpB,IAAK,IAAIqU,KAAQxoB,EACZA,EAAOzB,eAAeiqB,KACzB7qB,EAAQqC,EAAOwoB,GAEF,oBADb1hB,EAAQ,GAAI1D,SAASvG,KAAKc,IAEzBsC,EAAOuoB,GAAQ7qB,EAAM0F,MAAM,GACR,oBAATyD,EACV7G,EAAOuoB,GAAQ7qB,EAEfijC,QAAQzhC,MAAM,0BAA2BxB,IAK5C,OAAOqH,KAIOyrE,OAAS,CACxB9E,IAAK,CAAC,MAAO,QAAS,QACtB0B,IAAK,CAAC,MAAO,aAAc,aAC3BC,IAAK,CAAC,MAAO,aAAc,SAC3BP,IAAK,CAAC,MAAO,YAAa,aAC1BQ,KAAM,CAAC,OAAQ,UAAW,SAAU,UAGrCH,EAAM9uE,UAAUoyE,MAAQ,CACvB/E,IAAK,CAAC,IAAK,IAAK,KAChB0B,IAAK,CAAC,IAAK,IAAK,KAChBC,IAAK,CAAC,IAAK,IAAK,KAChBP,IAAK,CAAC,IAAK,IAAK,KAChBQ,KAAM,CAAC,IAAK,IAAK,IAAK,MAGvBH,EAAM9uE,UAAUqyE,UAAY,SAAUplD,GAIrC,IAHA,IAAIpX,EAASnR,KAAKmR,OACds4D,EAAO,GAEF/vE,EAAI,EAAGA,EAAI6uB,EAAMrmB,OAAQxI,IACjC+vE,EAAKlhD,EAAM1X,OAAOnX,IAAMyX,EAAOoX,GAAO7uB,GAQvC,OALqB,IAAjByX,EAAO03D,QACVY,EAAKxrE,EAAIkT,EAAO03D,OAIVY,GAGRW,EAAM9uE,UAAUkvE,UAAY,SAAUjiD,EAAOkhD,GAC5C,IAII/vE,EAkCAk0E,EAtCAz8D,EAASnR,KAAKmR,OACds8D,EAASztE,KAAKytE,OACdC,EAAQ1tE,KAAK0tE,MACb7E,EAAQ,EAKZ,GAFA7oE,KAAK85B,OAAQ,EAEC,UAAVvR,EACHsgD,EAAQY,OACF,GAAIA,EAAKvnE,OAEfiP,EAAOoX,GAASkhD,EAAKppE,MAAM,EAAGkoB,EAAMrmB,QACpC2mE,EAAQY,EAAKlhD,EAAMrmB,aACb,QAA8BvE,IAA1B8rE,EAAKlhD,EAAM1X,OAAO,IAAmB,CAE/C,IAAKnX,EAAI,EAAGA,EAAI6uB,EAAMrmB,OAAQxI,IAC7ByX,EAAOoX,GAAO7uB,GAAK+vE,EAAKlhD,EAAM1X,OAAOnX,IAGtCmvE,EAAQY,EAAKxrE,OACP,QAA+BN,IAA3B8rE,EAAKgE,EAAOllD,GAAO,IAAmB,CAEhD,IAAIslD,EAAQJ,EAAOllD,GAEnB,IAAK7uB,EAAI,EAAGA,EAAI6uB,EAAMrmB,OAAQxI,IAC7ByX,EAAOoX,GAAO7uB,GAAK+vE,EAAKoE,EAAMn0E,IAG/BmvE,EAAQY,EAAKZ,MAKd,GAFA13D,EAAO03D,MAAQltE,KAAKyK,IAAI,EAAGzK,KAAKoD,IAAI,OAAcpB,IAAVkrE,EAAsB13D,EAAO03D,MAAQA,IAE/D,UAAVtgD,EACH,OAAO,EAMR,IAAK7uB,EAAI,EAAGA,EAAI6uB,EAAMrmB,OAAQxI,IAC7Bk0E,EAASjyE,KAAKyK,IAAI,EAAGzK,KAAKoD,IAAI2uE,EAAMnlD,GAAO7uB,GAAIyX,EAAOoX,GAAO7uB,KAC7DyX,EAAOoX,GAAO7uB,GAAKiC,KAAKyiC,MAAMwvC,GAI/B,IAAK,IAAIE,KAASL,EACbK,IAAUvlD,IACbpX,EAAO28D,GAAS3D,EAAQ5hD,GAAOulD,GAAO38D,EAAOoX,KAI/C,OAAO,GAGR6hD,EAAM9uE,UAAUsvE,SAAW,SAAUriD,EAAOnY,GAC3C,IAAIq5D,EAAOr5D,EAAK,GAEhB,YAAazS,IAAT8rE,EAEIzpE,KAAK2tE,UAAUplD,IAIH,iBAATkhD,IACVA,EAAOvlE,MAAM5I,UAAU+E,MAAMxG,KAAKuW,IAGnCpQ,KAAKwqE,UAAUjiD,EAAOkhD,GACfzpE,OAGRoqE,EAAM9uE,UAAU8vE,WAAa,SAAU7iD,EAAOpmB,EAAOvB,GACpD,IAAImtE,EAAU/tE,KAAKmR,OAAOoX,GAC1B,YAAY5qB,IAARiD,EAEImtE,EAAQ5rE,GACLvB,IAAQmtE,EAAQ5rE,GAEnBnC,MAIR+tE,EAAQ5rE,GAASvB,EACjBZ,KAAKwqE,UAAUjiD,EAAOwlD,GAEf/tE,OAGc,oBAAXlE,SACVA,OAAOsuE,MAAQA,GAGhB3wE,EAAOD,QAAU4wE,GAEf,CAAC,EAAI,EAAE,EAAI,IAAI4D,EAAE,CAAC,SAAS3T,EAAQ5gE,EAAOD,GA2D5C,SAASy0E,EAAQtF,GACf,IAMIryB,EAAM38C,EANNa,EAAImuE,EAAI,GAAG,IACX5/D,EAAI4/D,EAAI,GAAG,IACXz/D,EAAIy/D,EAAI,GAAG,IACX5pE,EAAMpD,KAAKoD,IAAIvE,EAAGuO,EAAGG,GACrB9C,EAAMzK,KAAKyK,IAAI5L,EAAGuO,EAAGG,GACrBglE,EAAQ9nE,EAAMrH,EA0BlB,OAvBIqH,GAAOrH,EACTu3C,EAAI,EACG97C,GAAK4L,EACZkwC,GAAKvtC,EAAIG,GAAKglE,EACPnlE,GAAK3C,EACZkwC,EAAI,GAAKptC,EAAI1O,GAAK0zE,EACXhlE,GAAK9C,IACZkwC,EAAI,GAAK97C,EAAIuO,GAAImlE,IAEnB53B,EAAI36C,KAAKoD,IAAQ,GAAJu3C,EAAQ,MAEb,IACNA,GAAK,KAEP38C,GAAKoF,EAAMqH,GAAO,EASX,CAACkwC,EAAO,KAPXlwC,GAAOrH,EACL,EACGpF,GAAK,GACRu0E,GAAS9nE,EAAMrH,GAEfmvE,GAAS,EAAI9nE,EAAMrH,IAED,IAAJpF,GAGtB,SAASw0E,EAAQxF,GACf,IAMIryB,EAAG76C,EANHjB,EAAImuE,EAAI,GACR5/D,EAAI4/D,EAAI,GACRz/D,EAAIy/D,EAAI,GACR5pE,EAAMpD,KAAKoD,IAAIvE,EAAGuO,EAAGG,GACrB9C,EAAMzK,KAAKyK,IAAI5L,EAAGuO,EAAGG,GACrBglE,EAAQ9nE,EAAMrH,EAwBlB,OApBEtD,EADS,GAAP2K,EACE,EAEC8nE,EAAM9nE,EAAM,IAAM,GAErBA,GAAOrH,EACTu3C,EAAI,EACG97C,GAAK4L,EACZkwC,GAAKvtC,EAAIG,GAAKglE,EACPnlE,GAAK3C,EACZkwC,EAAI,GAAKptC,EAAI1O,GAAK0zE,EACXhlE,GAAK9C,IACZkwC,EAAI,GAAK97C,EAAIuO,GAAKmlE,IAEpB53B,EAAI36C,KAAKoD,IAAQ,GAAJu3C,EAAQ,MAEb,IACNA,GAAK,KAIA,CAACA,EAAG76C,EAFL2K,EAAM,IAAO,IAAQ,IAK7B,SAASgoE,EAAQzF,GACf,IAAInuE,EAAImuE,EAAI,GACR5/D,EAAI4/D,EAAI,GACRz/D,EAAIy/D,EAAI,GAKZ,MAAO,CAJCsF,EAAQtF,GAAK,GAIN,KAHP,EAAE,IAAMhtE,KAAKoD,IAAIvE,EAAGmB,KAAKoD,IAAIgK,EAAGG,KAGhB,KAFpBA,EAAI,EAAI,EAAE,IAAMvN,KAAKyK,IAAI5L,EAAGmB,KAAKyK,IAAI2C,EAAGG,MAK9C,SAASmlE,EAAS1F,GAChB,IAGa12D,EAHTzX,EAAImuE,EAAI,GAAK,IACb5/D,EAAI4/D,EAAI,GAAK,IACbz/D,EAAIy/D,EAAI,GAAK,IAOjB,MAAO,CAAK,MAHP,EAAInuE,GADTyX,EAAItW,KAAKoD,IAAI,EAAIvE,EAAG,EAAIuO,EAAG,EAAIG,MACZ,EAAI+I,IAAM,GAGR,MAFhB,EAAIlJ,EAAIkJ,IAAM,EAAIA,IAAM,GAEC,MADzB,EAAI/I,EAAI+I,IAAM,EAAIA,IAAM,GACU,IAAJA,GAGrC,SAASq8D,EAAY3F,GACnB,OAAO4F,EAAgBtgE,KAAKE,UAAUw6D,IAGxC,SAAS6F,EAAQ7F,GACf,IAAInuE,EAAImuE,EAAI,GAAK,IACb5/D,EAAI4/D,EAAI,GAAK,IACbz/D,EAAIy/D,EAAI,GAAK,IAWjB,MAAO,CAAK,KAJC,OAJbnuE,EAAIA,EAAI,OAAUmB,KAAK22B,KAAM93B,EAAI,MAAS,MAAQ,KAAQA,EAAI,OAIlC,OAH5BuO,EAAIA,EAAI,OAAUpN,KAAK22B,KAAMvpB,EAAI,MAAS,MAAQ,KAAQA,EAAI,OAGnB,OAF3CG,EAAIA,EAAI,OAAUvN,KAAK22B,KAAMppB,EAAI,MAAS,MAAQ,KAAQA,EAAI,QAM1C,KAHP,MAAJ1O,EAAmB,MAAJuO,EAAmB,MAAJG,GAGV,KAFhB,MAAJ1O,EAAmB,MAAJuO,EAAmB,MAAJG,IAKzC,SAASulE,EAAQ9F,GACf,IAAI+F,EAAMF,EAAQ7F,GACZp2C,EAAIm8C,EAAI,GACRj4B,EAAIi4B,EAAI,GACRvyD,EAAIuyD,EAAI,GAed,OAXAj4B,GAAK,IACLt6B,GAAK,QAELoW,GAJAA,GAAK,QAIG,QAAW52B,KAAK22B,IAAIC,EAAG,EAAE,GAAM,MAAQA,EAAM,GAAK,IAQnD,CAJF,KAHLkkB,EAAIA,EAAI,QAAW96C,KAAK22B,IAAImkB,EAAG,EAAE,GAAM,MAAQA,EAAM,GAAK,KAG1C,GACZ,KAAOlkB,EAAIkkB,GACX,KAAOA,GAJXt6B,EAAIA,EAAI,QAAWxgB,KAAK22B,IAAInW,EAAG,EAAE,GAAM,MAAQA,EAAM,GAAK,OAa5D,SAASwyD,EAAQtE,GACf,IAGIuE,EAAIC,EAAIC,EAAInG,EAAK/nE,EAHjB01C,EAAI+zB,EAAI,GAAK,IACb5uE,EAAI4uE,EAAI,GAAK,IACb1wE,EAAI0wE,EAAI,GAAK,IAGjB,GAAS,GAAL5uE,EAEF,MAAO,CADPmF,EAAU,IAAJjH,EACOiH,EAAKA,GAOpBguE,EAAK,EAAIj1E,GAHPk1E,EADEl1E,EAAI,GACDA,GAAK,EAAI8B,GAET9B,EAAI8B,EAAI9B,EAAI8B,GAGnBktE,EAAM,CAAC,EAAG,EAAG,GACb,IAAK,IAAIjvE,EAAI,EAAGA,EAAI,EAAGA,KACrBo1E,EAAKx4B,EAAI,EAAI,IAAO58C,EAAI,IACnB,GAAKo1E,IACVA,EAAK,GAAKA,IAGRluE,EADE,EAAIkuE,EAAK,EACLF,EAAiB,GAAXC,EAAKD,GAAUE,EACpB,EAAIA,EAAK,EACVD,EACC,EAAIC,EAAK,EACVF,GAAMC,EAAKD,IAAO,EAAI,EAAIE,GAAM,EAEhCF,EAERjG,EAAIjvE,GAAW,IAANkH,EAGX,OAAO+nE,EAmCT,SAASoG,EAAQzE,GACf,IAAIh0B,EAAIg0B,EAAI,GAAK,GACb7uE,EAAI6uE,EAAI,GAAK,IACb/zB,EAAI+zB,EAAI,GAAK,IACb0E,EAAKrzE,KAAKuE,MAAMo2C,GAAK,EAErB75C,EAAI65C,EAAI36C,KAAKuE,MAAMo2C,GACnB96C,EAAI,IAAM+6C,GAAK,EAAI96C,GACnBygB,EAAI,IAAMq6B,GAAK,EAAK96C,EAAIgB,GACxB7B,EAAI,IAAM27C,GAAK,EAAK96C,GAAK,EAAIgB,IAC7B85C,GAAI,IAER,OAAOy4B,GACL,KAAK,EACH,MAAO,CAACz4B,EAAG37C,EAAGY,GAChB,KAAK,EACH,MAAO,CAAC0gB,EAAGq6B,EAAG/6C,GAChB,KAAK,EACH,MAAO,CAACA,EAAG+6C,EAAG37C,GAChB,KAAK,EACH,MAAO,CAACY,EAAG0gB,EAAGq6B,GAChB,KAAK,EACH,MAAO,CAAC37C,EAAGY,EAAG+6C,GAChB,KAAK,EACH,MAAO,CAACA,EAAG/6C,EAAG0gB,IA+BpB,SAAS+yD,EAAQlF,GACf,IAIIrwE,EAAG68C,EAAG95C,EAAGtB,EAJTm7C,EAAIyzB,EAAI,GAAK,IACbmF,EAAKnF,EAAI,GAAK,IACdoF,EAAKpF,EAAI,GAAK,IACd0C,EAAQyC,EAAKC,EAiBjB,OAbI1C,EAAQ,IACVyC,GAAMzC,EACN0C,GAAM1C,GAKRhwE,EAAI,EAAI65C,GAFR58C,EAAIiC,KAAKuE,MAAM,EAAIo2C,IAGD,IAAT,EAAJ58C,KACH+C,EAAI,EAAIA,GAEVtB,EAAI+zE,EAAKzyE,IALT85C,EAAI,EAAI44B,GAKUD,GAEVx1E,GACN,QACA,KAAK,EACL,KAAK,EAAGc,EAAI+7C,EAAGxtC,EAAI5N,EAAG+N,EAAIgmE,EAAI,MAC9B,KAAK,EAAG10E,EAAIW,EAAG4N,EAAIwtC,EAAGrtC,EAAIgmE,EAAI,MAC9B,KAAK,EAAG10E,EAAI00E,EAAInmE,EAAIwtC,EAAGrtC,EAAI/N,EAAG,MAC9B,KAAK,EAAGX,EAAI00E,EAAInmE,EAAI5N,EAAG+N,EAAIqtC,EAAG,MAC9B,KAAK,EAAG/7C,EAAIW,EAAG4N,EAAImmE,EAAIhmE,EAAIqtC,EAAG,MAC9B,KAAK,EAAG/7C,EAAI+7C,EAAGxtC,EAAImmE,EAAIhmE,EAAI/N,EAG7B,MAAO,CAAK,IAAJX,EAAa,IAAJuO,EAAa,IAAJG,GAmB5B,SAASkmE,EAAS7E,GAChB,IAAIxwE,EAAIwwE,EAAK,GAAK,IACdzwE,EAAIywE,EAAK,GAAK,IACd9zB,EAAI8zB,EAAK,GAAK,IACdt4D,EAAIs4D,EAAK,GAAK,IAMlB,MAAO,CAAK,KAHR,EAAI5uE,KAAKoD,IAAI,EAAGhF,GAAK,EAAIkY,GAAKA,IAGb,KAFjB,EAAItW,KAAKoD,IAAI,EAAGjF,GAAK,EAAImY,GAAKA,IAEJ,KAD1B,EAAItW,KAAKoD,IAAI,EAAG03C,GAAK,EAAIxkC,GAAKA,KAqBpC,SAASo9D,EAAQX,GACf,IAGIl0E,EAAGuO,EAAGG,EAHNqpB,EAAIm8C,EAAI,GAAK,IACbj4B,EAAIi4B,EAAI,GAAK,IACbvyD,EAAIuyD,EAAI,GAAK,IAqBjB,OAjBA3lE,GAAU,MAALwpB,EAAoB,OAAJkkB,EAAmB,MAAJt6B,EACpCjT,EAAS,MAAJqpB,GAAoB,KAALkkB,EAAoB,MAAJt6B,EAGpC3hB,GALAA,EAAS,OAAJ+3B,GAAoB,OAALkkB,GAAqB,MAALt6B,GAK5B,SAAc,MAAQxgB,KAAK22B,IAAI93B,EAAG,EAAM,KAAQ,KACpDA,GAAS,MAEbuO,EAAIA,EAAI,SAAc,MAAQpN,KAAK22B,IAAIvpB,EAAG,EAAM,KAAQ,KACpDA,GAAS,MAEbG,EAAIA,EAAI,SAAc,MAAQvN,KAAK22B,IAAIppB,EAAG,EAAM,KAAQ,KACpDA,GAAS,MAMN,CAAK,KAJZ1O,EAAImB,KAAKoD,IAAIpD,KAAKyK,IAAI,EAAG5L,GAAI,IAIR,KAHrBuO,EAAIpN,KAAKoD,IAAIpD,KAAKyK,IAAI,EAAG2C,GAAI,IAGC,KAF9BG,EAAIvN,KAAKoD,IAAIpD,KAAKyK,IAAI,EAAG8C,GAAI,KAK/B,SAASomE,EAAQZ,GACf,IAAIn8C,EAAIm8C,EAAI,GACRj4B,EAAIi4B,EAAI,GACRvyD,EAAIuyD,EAAI,GAeZ,OAXAj4B,GAAK,IACLt6B,GAAK,QAELoW,GAJAA,GAAK,QAIG,QAAW52B,KAAK22B,IAAIC,EAAG,EAAE,GAAM,MAAQA,EAAM,GAAK,IAQnD,CAJF,KAHLkkB,EAAIA,EAAI,QAAW96C,KAAK22B,IAAImkB,EAAG,EAAE,GAAM,MAAQA,EAAM,GAAK,KAG1C,GACZ,KAAOlkB,EAAIkkB,GACX,KAAOA,GAJXt6B,EAAIA,EAAI,QAAWxgB,KAAK22B,IAAInW,EAAG,EAAE,GAAM,MAAQA,EAAM,GAAK,OAa5D,SAASozD,EAAQC,GACf,IAGIj9C,EAAGkkB,EAAGt6B,EAAGszD,EAHT91E,EAAI61E,EAAI,GACRvxE,EAAIuxE,EAAI,GACRtmE,EAAIsmE,EAAI,GAeZ,OAZI71E,GAAK,EAEP81E,GADAh5B,EAAS,IAAJ98C,EAAW,OACG,IAAb,MAAsB,GAAK,KAEjC88C,EAAI,IAAM96C,KAAK22B,KAAK34B,EAAI,IAAM,IAAK,GACnC81E,EAAK9zE,KAAK22B,IAAImkB,EAAI,IAAK,EAAE,IAOpB,CAJPlkB,EAAIA,EAAI,QAAU,QAAWA,EAAK,QAAWt0B,EAAI,IAAOwxE,EAAM,GAAK,KAAS,MAAQ,OAAS9zE,KAAK22B,IAAKr0B,EAAI,IAAOwxE,EAAI,GAI3Gh5B,EAFXt6B,EAAIA,EAAI,SAAW,QAAWA,EAAK,SAAWszD,EAAMvmE,EAAI,IAAQ,GAAK,KAAS,MAAQ,QAAUvN,KAAK22B,IAAIm9C,EAAMvmE,EAAI,IAAM,IAK3H,SAASwmE,EAAQF,GACf,IAGQl5B,EAHJ38C,EAAI61E,EAAI,GACRvxE,EAAIuxE,EAAI,GACRtmE,EAAIsmE,EAAI,GASZ,OALAl5B,EAAS,IADJ36C,KAAKg0E,MAAMzmE,EAAGjL,GACJ,EAAItC,KAAKm4C,IAChB,IACNwC,GAAK,KAGA,CAAC38C,EADJgC,KAAK24C,KAAKr2C,EAAIA,EAAIiL,EAAIA,GACZotC,GAGhB,SAASs5B,EAAQx/D,GACf,OAAOi/D,EAAQE,EAAQn/D,IAGzB,SAASy/D,EAAQC,GACf,IAGUC,EAHNp2E,EAAIm2E,EAAI,GACR/1E,EAAI+1E,EAAI,GAOZ,OAHAC,EAHQD,EAAI,GAGH,IAAM,EAAIn0E,KAAKm4C,GAGjB,CAACn6C,EAFJI,EAAI4B,KAAKk4C,IAAIk8B,GACbh2E,EAAI4B,KAAKq4C,IAAI+7B,IAYnB,SAASC,EAAYhG,GACnB,OAAOiG,EAAYjG,GAlgBrBvwE,EAAOD,QAAU,CACfy0E,QAASA,EACTE,QAASA,EACTC,QAASA,EACTC,SAAUA,EACVC,YAAaA,EACbE,QAASA,EACTC,QAASA,EACTyB,QAuLF,SAAiB9/D,GACf,OAAOs/D,EAAQjB,EAAQr+D,KAtLvBu+D,QAASA,EACTwB,QA8NF,SAAiB9F,GACf,IAAI/zB,EAAI+zB,EAAI,GACR5uE,EAAI4uE,EAAI,GAAK,IACb1wE,EAAI0wE,EAAI,GAAK,IAGjB,GAAS,IAAN1wE,EAGC,MAAO,CAAC,EAAG,EAAG,GAOlB,MAAO,CAAC28C,EAAQ,KADV,GAFN76C,IADA9B,GAAK,IACM,EAAKA,EAAI,EAAIA,IAERA,EAAI8B,IACK,MAFpB9B,EAAI8B,GAAK,KA3Od20E,QAgPF,SAAiBhgE,GACf,OAAOg+D,EAAQO,EAAQv+D,KAhPvBigE,SAmPF,SAAkBjgE,GAChB,OAAOi+D,EAASM,EAAQv+D,KAnPxBkgE,YAsPF,SAAqBlgE,GACnB,OAAOk+D,EAAYK,EAAQv+D,KArP3B2+D,QAASA,EACTwB,QAoRF,SAAiBjG,GACf,IAGIkG,EAAI72E,EAHJ28C,EAAIg0B,EAAI,GACR7uE,EAAI6uE,EAAI,GAAK,IACb/zB,EAAI+zB,EAAI,GAAK,IAQjB,OAJAkG,EAAK/0E,EAAI86C,EAIF,CAACD,EAAQ,KAFhBk6B,GADAA,IAFA72E,GAAK,EAAI8B,GAAK86C,IAEF,EAAK58C,EAAI,EAAIA,IACd,GAEc,KADzBA,GAAK,KA7RL82E,QAiSF,SAAiBrgE,GACf,OAAOg+D,EAAQW,EAAQ3+D,KAjSvBsgE,SAoSF,SAAkBtgE,GAChB,OAAOi+D,EAASU,EAAQ3+D,KApSxBugE,YAuSF,SAAqBvgE,GACnB,OAAOk+D,EAAYS,EAAQ3+D,KAtS3B6+D,QAASA,EACT2B,QA4UF,SAAiBxgE,GACf,OAAO69D,EAAQgB,EAAQ7+D,KA5UvBygE,QA+UF,SAAiBzgE,GACf,OAAO+9D,EAAQc,EAAQ7+D,KA/UvB0gE,SAkVF,SAAkB1gE,GAChB,OAAOi+D,EAASY,EAAQ7+D,KAlVxB2gE,YAqVF,SAAqB3gE,GACnB,OAAOk+D,EAAYW,EAAQ7+D,KApV3Bg/D,SAAUA,EACV4B,SAmWF,SAAkB5gE,GAChB,OAAO69D,EAAQmB,EAASh/D,KAnWxB6gE,SAsWF,SAAkB7gE,GAChB,OAAO+9D,EAAQiB,EAASh/D,KAtWxB8gE,SAyWF,SAAkB9gE,GAChB,OAAOg+D,EAAQgB,EAASh/D,KAzWxB+gE,aA4WF,SAAsB/gE,GACpB,OAAOk+D,EAAYc,EAASh/D,KA3W5B4/D,YAAaA,EACboB,YAkeF,SAAqBhhE,GACnB,OAAO69D,EAAQ+B,EAAY5/D,KAle3BihE,YAqeF,SAAqBjhE,GACnB,OAAO+9D,EAAQ6B,EAAY5/D,KAre3BkhE,YAweF,SAAqBlhE,GACnB,OAAOg+D,EAAQ4B,EAAY5/D,KAxe3BmhE,aA2eF,SAAsBnhE,GACpB,OAAOi+D,EAAS2B,EAAY5/D,KA3e5BohE,YA8eF,SAAqBphE,GACnB,OAAOq+D,EAAQuB,EAAY5/D,KA9e3BqhE,YAifF,SAAqBrhE,GACnB,OAAOo+D,EAAQwB,EAAY5/D,KAhf3Bi/D,QAASA,EACTC,QAASA,EACToC,QAqZF,SAAiBthE,GACf,OAAOs/D,EAAQJ,EAAQl/D,KApZvBm/D,QAASA,EACTK,QAASA,EACTF,QAASA,EAETG,QAASA,EACT8B,QAscF,SAAiBvhE,GACf,OAAOm/D,EAAQM,EAAQz/D,KAtcvBwhE,QAycF,SAAiBxhE,GACf,OAAOw/D,EAAQC,EAAQz/D,MA+BzB,IAAI6/D,EAAc,CAChB4B,UAAY,CAAC,IAAI,IAAI,KACrBC,aAAc,CAAC,IAAI,IAAI,KACvBC,KAAM,CAAC,EAAE,IAAI,KACbC,WAAY,CAAC,IAAI,IAAI,KACrBC,MAAQ,CAAC,IAAI,IAAI,KACjBC,MAAQ,CAAC,IAAI,IAAI,KACjBC,OAAQ,CAAC,IAAI,IAAI,KACjBp1B,MAAQ,CAAC,EAAE,EAAE,GACbq1B,eAAgB,CAAC,IAAI,IAAI,KACzBp1B,KAAM,CAAC,EAAE,EAAE,KACXq1B,WAAY,CAAC,IAAI,GAAG,KACpBC,MAAQ,CAAC,IAAI,GAAG,IAChBC,UAAY,CAAC,IAAI,IAAI,KACrBC,UAAY,CAAC,GAAG,IAAI,KACpBC,WAAY,CAAC,IAAI,IAAI,GACrBC,UAAY,CAAC,IAAI,IAAI,IACrBC,MAAQ,CAAC,IAAI,IAAI,IACjBC,eAAgB,CAAC,IAAI,IAAI,KACzBC,SAAU,CAAC,IAAI,IAAI,KACnBC,QAAU,CAAC,IAAI,GAAG,IAClBnI,KAAM,CAAC,EAAE,IAAI,KACboI,SAAU,CAAC,EAAE,EAAE,KACfC,SAAU,CAAC,EAAE,IAAI,KACjBC,cAAgB,CAAC,IAAI,IAAI,IACzBC,SAAU,CAAC,IAAI,IAAI,KACnBC,UAAY,CAAC,EAAE,IAAI,GACnBC,SAAU,CAAC,IAAI,IAAI,KACnBC,UAAY,CAAC,IAAI,IAAI,KACrBC,YAAc,CAAC,IAAI,EAAE,KACrBC,eAAgB,CAAC,GAAG,IAAI,IACxBC,WAAY,CAAC,IAAI,IAAI,GACrBC,WAAY,CAAC,IAAI,GAAG,KACpBC,QAAU,CAAC,IAAI,EAAE,GACjBC,WAAY,CAAC,IAAI,IAAI,KACrBC,aAAc,CAAC,IAAI,IAAI,KACvBC,cAAgB,CAAC,GAAG,GAAG,KACvBC,cAAgB,CAAC,GAAG,GAAG,IACvBC,cAAgB,CAAC,GAAG,GAAG,IACvBC,cAAgB,CAAC,EAAE,IAAI,KACvBC,WAAY,CAAC,IAAI,EAAE,KACnBC,SAAU,CAAC,IAAI,GAAG,KAClBC,YAAc,CAAC,EAAE,IAAI,KACrBC,QAAU,CAAC,IAAI,IAAI,KACnBC,QAAU,CAAC,IAAI,IAAI,KACnBC,WAAY,CAAC,GAAG,IAAI,KACpBC,UAAY,CAAC,IAAI,GAAG,IACpBC,YAAc,CAAC,IAAI,IAAI,KACvBC,YAAc,CAAC,GAAG,IAAI,IACtBC,QAAU,CAAC,IAAI,EAAE,KACjBC,UAAY,CAAC,IAAI,IAAI,KACrBC,WAAY,CAAC,IAAI,IAAI,KACrBC,KAAM,CAAC,IAAI,IAAI,GACfC,UAAY,CAAC,IAAI,IAAI,IACrB73B,KAAM,CAAC,IAAI,IAAI,KACfC,MAAQ,CAAC,EAAE,IAAI,GACf63B,YAAc,CAAC,IAAI,IAAI,IACvBC,KAAM,CAAC,IAAI,IAAI,KACfC,SAAU,CAAC,IAAI,IAAI,KACnBC,QAAU,CAAC,IAAI,IAAI,KACnBC,UAAY,CAAC,IAAI,GAAG,IACpBC,OAAQ,CAAC,GAAG,EAAE,KACdC,MAAQ,CAAC,IAAI,IAAI,KACjBC,MAAQ,CAAC,IAAI,IAAI,KACjBC,SAAU,CAAC,IAAI,IAAI,KACnBC,cAAgB,CAAC,IAAI,IAAI,KACzBC,UAAY,CAAC,IAAI,IAAI,GACrBC,aAAc,CAAC,IAAI,IAAI,KACvBC,UAAY,CAAC,IAAI,IAAI,KACrBC,WAAY,CAAC,IAAI,IAAI,KACrBC,UAAY,CAAC,IAAI,IAAI,KACrBC,qBAAsB,CAAC,IAAI,IAAI,KAC/BC,UAAY,CAAC,IAAI,IAAI,KACrBC,WAAY,CAAC,IAAI,IAAI,KACrBC,UAAY,CAAC,IAAI,IAAI,KACrBC,UAAY,CAAC,IAAI,IAAI,KACrBC,YAAc,CAAC,IAAI,IAAI,KACvBC,cAAgB,CAAC,GAAG,IAAI,KACxBC,aAAc,CAAC,IAAI,IAAI,KACvBC,eAAgB,CAAC,IAAI,IAAI,KACzBC,eAAgB,CAAC,IAAI,IAAI,KACzBC,eAAgB,CAAC,IAAI,IAAI,KACzBC,YAAc,CAAC,IAAI,IAAI,KACvBC,KAAM,CAAC,EAAE,IAAI,GACbC,UAAY,CAAC,GAAG,IAAI,IACpBC,MAAQ,CAAC,IAAI,IAAI,KACjBnL,QAAU,CAAC,IAAI,EAAE,KACjBoL,OAAQ,CAAC,IAAI,EAAE,GACfC,iBAAkB,CAAC,IAAI,IAAI,KAC3BC,WAAY,CAAC,EAAE,EAAE,KACjBC,aAAc,CAAC,IAAI,GAAG,KACtBC,aAAc,CAAC,IAAI,IAAI,KACvBC,eAAgB,CAAC,GAAG,IAAI,KACxBC,gBAAkB,CAAC,IAAI,IAAI,KAC3BC,kBAAoB,CAAC,EAAE,IAAI,KAC3BC,gBAAkB,CAAC,GAAG,IAAI,KAC1BC,gBAAkB,CAAC,IAAI,GAAG,KAC1BC,aAAc,CAAC,GAAG,GAAG,KACrBC,UAAY,CAAC,IAAI,IAAI,KACrBC,UAAY,CAAC,IAAI,IAAI,KACrBC,SAAU,CAAC,IAAI,IAAI,KACnBC,YAAc,CAAC,IAAI,IAAI,KACvBC,KAAM,CAAC,EAAE,EAAE,KACXC,QAAU,CAAC,IAAI,IAAI,KACnBC,MAAQ,CAAC,IAAI,IAAI,GACjBC,UAAY,CAAC,IAAI,IAAI,IACrBC,OAAQ,CAAC,IAAI,IAAI,GACjBC,UAAY,CAAC,IAAI,GAAG,GACpBC,OAAQ,CAAC,IAAI,IAAI,KACjBC,cAAgB,CAAC,IAAI,IAAI,KACzBC,UAAY,CAAC,IAAI,IAAI,KACrBC,cAAgB,CAAC,IAAI,IAAI,KACzBC,cAAgB,CAAC,IAAI,IAAI,KACzBC,WAAY,CAAC,IAAI,IAAI,KACrBC,UAAY,CAAC,IAAI,IAAI,KACrBC,KAAM,CAAC,IAAI,IAAI,IACfC,KAAM,CAAC,IAAI,IAAI,KACfC,KAAM,CAAC,IAAI,IAAI,KACfC,WAAY,CAAC,IAAI,IAAI,KACrBC,OAAQ,CAAC,IAAI,EAAE,KACfC,cAAe,CAAC,IAAK,GAAI,KACzB37B,IAAM,CAAC,IAAI,EAAE,GACb47B,UAAY,CAAC,IAAI,IAAI,KACrBC,UAAY,CAAC,GAAG,IAAI,KACpBC,YAAc,CAAC,IAAI,GAAG,IACtBC,OAAQ,CAAC,IAAI,IAAI,KACjBC,WAAY,CAAC,IAAI,IAAI,IACrBC,SAAU,CAAC,GAAG,IAAI,IAClBC,SAAU,CAAC,IAAI,IAAI,KACnBC,OAAQ,CAAC,IAAI,GAAG,IAChBC,OAAQ,CAAC,IAAI,IAAI,KACjBC,QAAU,CAAC,IAAI,IAAI,KACnBC,UAAY,CAAC,IAAI,GAAG,KACpBC,UAAY,CAAC,IAAI,IAAI,KACrBC,UAAY,CAAC,IAAI,IAAI,KACrBC,KAAM,CAAC,IAAI,IAAI,KACfC,YAAc,CAAC,EAAE,IAAI,KACrBC,UAAY,CAAC,GAAG,IAAI,KACpBC,IAAM,CAAC,IAAI,IAAI,KACfC,KAAM,CAAC,EAAE,IAAI,KACbC,QAAU,CAAC,IAAI,IAAI,KACnBC,OAAQ,CAAC,IAAI,GAAG,IAChBC,UAAY,CAAC,GAAG,IAAI,KACpBC,OAAQ,CAAC,IAAI,IAAI,KACjBC,MAAQ,CAAC,IAAI,IAAI,KACjBj9B,MAAQ,CAAC,IAAI,IAAI,KACjBk9B,WAAY,CAAC,IAAI,IAAI,KACrB5O,OAAQ,CAAC,IAAI,IAAI,GACjB6O,YAAc,CAAC,IAAI,IAAI,KAGrBhM,EAAkB,GACtB,IAAK,IAAItzE,KAAOg1E,EACd1B,EAAgBtgE,KAAKE,UAAU8hE,EAAYh1E,KAASA,GAGpD,IAAIu/E,EAAE,CAAC,SAASngB,EAAQ5gE,EAAOD,GACjC,IAAIihF,EAAcpgB,EAAQ,GAEtB8P,EAAU,WACX,OAAO,IAAIuQ,GAGd,IAAK,IAAInZ,KAAQkZ,EAAa,CAE5BtQ,EAAQ5I,EAAO,OAAW,SAASA,GAEjC,OAAO,SAASn9D,GAGd,MAFkB,iBAAPA,IACTA,EAAMF,MAAM5I,UAAU+E,MAAMxG,KAAK6K,YAC5B+1E,EAAYlZ,GAAMn9D,IALH,CAOvBm9D,GAEH,IAAIoZ,EAAO,cAAcz+E,KAAKqlE,GAC1BxkD,EAAO49D,EAAK,GACZ39D,EAAK29D,EAAK,IAGdxQ,EAAQptD,GAAQotD,EAAQptD,IAAS,IAEnBC,GAAMmtD,EAAQ5I,GAAS,SAASA,GAC5C,OAAO,SAASn9D,GACI,iBAAPA,IACTA,EAAMF,MAAM5I,UAAU+E,MAAMxG,KAAK6K,YAEnC,IAAI9D,EAAM65E,EAAYlZ,GAAMn9D,GAC5B,GAAkB,iBAAPxD,QAA2BjD,IAARiD,EAC5B,OAAOA,EAET,IAAK,IAAIlH,EAAI,EAAGA,EAAIkH,EAAIsB,OAAQxI,IAC9BkH,EAAIlH,GAAKiC,KAAKyiC,MAAMx9B,EAAIlH,IAC1B,OAAOkH,GAX0B,CAalC2gE,GAKL,IAAImZ,EAAY,WACb16E,KAAK46E,MAAQ,IAKhBF,EAAUp/E,UAAUu/E,WAAa,SAAStyD,EAAOnY,GAC9C,IAAIe,EAASf,EAAK,GAClB,YAAezS,IAAXwT,EAEMnR,KAAK2tE,UAAUplD,IAGJ,iBAAVpX,IACRA,EAASjN,MAAM5I,UAAU+E,MAAMxG,KAAKuW,IAGhCpQ,KAAKwqE,UAAUjiD,EAAOpX,KAIhCupE,EAAUp/E,UAAUkvE,UAAY,SAASjiD,EAAOpX,GAI7C,OAHAnR,KAAKuoB,MAAQA,EACbvoB,KAAK46E,MAAQ,GACb56E,KAAK46E,MAAMryD,GAASpX,EACbnR,MAMV06E,EAAUp/E,UAAUqyE,UAAY,SAASplD,GACtC,IAAIkhD,EAAOzpE,KAAK46E,MAAMryD,GACtB,IAAKkhD,EAAM,CACR,IAAIqR,EAAS96E,KAAKuoB,MACdxL,EAAO/c,KAAK46E,MAAME,GACtBrR,EAAOU,EAAQ2Q,GAAQvyD,GAAOxL,GAE9B/c,KAAK46E,MAAMryD,GAASkhD,EAExB,OAAOA,GAGT,CAAC,MAAO,MAAO,MAAO,OAAQ,WAAWrnE,SAAQ,SAASmmB,GACvDmyD,EAAUp/E,UAAUitB,GAAS,SAASkhD,GACnC,OAAOzpE,KAAK66E,WAAWtyD,EAAO7jB,eAIpCjL,EAAOD,QAAU2wE,GACf,CAAC,EAAI,IAAI4Q,EAAE,CAAC,SAAS1gB,EAAQ5gE,EAAOD,GAGtCC,EAAOD,QAAU,CAChB,UAAa,CAAC,IAAK,IAAK,KACxB,aAAgB,CAAC,IAAK,IAAK,KAC3B,KAAQ,CAAC,EAAG,IAAK,KACjB,WAAc,CAAC,IAAK,IAAK,KACzB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,OAAU,CAAC,IAAK,IAAK,KACrB,MAAS,CAAC,EAAG,EAAG,GAChB,eAAkB,CAAC,IAAK,IAAK,KAC7B,KAAQ,CAAC,EAAG,EAAG,KACf,WAAc,CAAC,IAAK,GAAI,KACxB,MAAS,CAAC,IAAK,GAAI,IACnB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,WAAc,CAAC,IAAK,IAAK,GACzB,UAAa,CAAC,IAAK,IAAK,IACxB,MAAS,CAAC,IAAK,IAAK,IACpB,eAAkB,CAAC,IAAK,IAAK,KAC7B,SAAY,CAAC,IAAK,IAAK,KACvB,QAAW,CAAC,IAAK,GAAI,IACrB,KAAQ,CAAC,EAAG,IAAK,KACjB,SAAY,CAAC,EAAG,EAAG,KACnB,SAAY,CAAC,EAAG,IAAK,KACrB,cAAiB,CAAC,IAAK,IAAK,IAC5B,SAAY,CAAC,IAAK,IAAK,KACvB,UAAa,CAAC,EAAG,IAAK,GACtB,SAAY,CAAC,IAAK,IAAK,KACvB,UAAa,CAAC,IAAK,IAAK,KACxB,YAAe,CAAC,IAAK,EAAG,KACxB,eAAkB,CAAC,GAAI,IAAK,IAC5B,WAAc,CAAC,IAAK,IAAK,GACzB,WAAc,CAAC,IAAK,GAAI,KACxB,QAAW,CAAC,IAAK,EAAG,GACpB,WAAc,CAAC,IAAK,IAAK,KACzB,aAAgB,CAAC,IAAK,IAAK,KAC3B,cAAiB,CAAC,GAAI,GAAI,KAC1B,cAAiB,CAAC,GAAI,GAAI,IAC1B,cAAiB,CAAC,GAAI,GAAI,IAC1B,cAAiB,CAAC,EAAG,IAAK,KAC1B,WAAc,CAAC,IAAK,EAAG,KACvB,SAAY,CAAC,IAAK,GAAI,KACtB,YAAe,CAAC,EAAG,IAAK,KACxB,QAAW,CAAC,IAAK,IAAK,KACtB,QAAW,CAAC,IAAK,IAAK,KACtB,WAAc,CAAC,GAAI,IAAK,KACxB,UAAa,CAAC,IAAK,GAAI,IACvB,YAAe,CAAC,IAAK,IAAK,KAC1B,YAAe,CAAC,GAAI,IAAK,IACzB,QAAW,CAAC,IAAK,EAAG,KACpB,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,KAAQ,CAAC,IAAK,IAAK,GACnB,UAAa,CAAC,IAAK,IAAK,IACxB,KAAQ,CAAC,IAAK,IAAK,KACnB,MAAS,CAAC,EAAG,IAAK,GAClB,YAAe,CAAC,IAAK,IAAK,IAC1B,KAAQ,CAAC,IAAK,IAAK,KACnB,SAAY,CAAC,IAAK,IAAK,KACvB,QAAW,CAAC,IAAK,IAAK,KACtB,UAAa,CAAC,IAAK,GAAI,IACvB,OAAU,CAAC,GAAI,EAAG,KAClB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,SAAY,CAAC,IAAK,IAAK,KACvB,cAAiB,CAAC,IAAK,IAAK,KAC5B,UAAa,CAAC,IAAK,IAAK,GACxB,aAAgB,CAAC,IAAK,IAAK,KAC3B,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,qBAAwB,CAAC,IAAK,IAAK,KACnC,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,YAAe,CAAC,IAAK,IAAK,KAC1B,cAAiB,CAAC,GAAI,IAAK,KAC3B,aAAgB,CAAC,IAAK,IAAK,KAC3B,eAAkB,CAAC,IAAK,IAAK,KAC7B,eAAkB,CAAC,IAAK,IAAK,KAC7B,eAAkB,CAAC,IAAK,IAAK,KAC7B,YAAe,CAAC,IAAK,IAAK,KAC1B,KAAQ,CAAC,EAAG,IAAK,GACjB,UAAa,CAAC,GAAI,IAAK,IACvB,MAAS,CAAC,IAAK,IAAK,KACpB,QAAW,CAAC,IAAK,EAAG,KACpB,OAAU,CAAC,IAAK,EAAG,GACnB,iBAAoB,CAAC,IAAK,IAAK,KAC/B,WAAc,CAAC,EAAG,EAAG,KACrB,aAAgB,CAAC,IAAK,GAAI,KAC1B,aAAgB,CAAC,IAAK,IAAK,KAC3B,eAAkB,CAAC,GAAI,IAAK,KAC5B,gBAAmB,CAAC,IAAK,IAAK,KAC9B,kBAAqB,CAAC,EAAG,IAAK,KAC9B,gBAAmB,CAAC,GAAI,IAAK,KAC7B,gBAAmB,CAAC,IAAK,GAAI,KAC7B,aAAgB,CAAC,GAAI,GAAI,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,SAAY,CAAC,IAAK,IAAK,KACvB,YAAe,CAAC,IAAK,IAAK,KAC1B,KAAQ,CAAC,EAAG,EAAG,KACf,QAAW,CAAC,IAAK,IAAK,KACtB,MAAS,CAAC,IAAK,IAAK,GACpB,UAAa,CAAC,IAAK,IAAK,IACxB,OAAU,CAAC,IAAK,IAAK,GACrB,UAAa,CAAC,IAAK,GAAI,GACvB,OAAU,CAAC,IAAK,IAAK,KACrB,cAAiB,CAAC,IAAK,IAAK,KAC5B,UAAa,CAAC,IAAK,IAAK,KACxB,cAAiB,CAAC,IAAK,IAAK,KAC5B,cAAiB,CAAC,IAAK,IAAK,KAC5B,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,KAAQ,CAAC,IAAK,IAAK,IACnB,KAAQ,CAAC,IAAK,IAAK,KACnB,KAAQ,CAAC,IAAK,IAAK,KACnB,WAAc,CAAC,IAAK,IAAK,KACzB,OAAU,CAAC,IAAK,EAAG,KACnB,cAAiB,CAAC,IAAK,GAAI,KAC3B,IAAO,CAAC,IAAK,EAAG,GAChB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,YAAe,CAAC,IAAK,GAAI,IACzB,OAAU,CAAC,IAAK,IAAK,KACrB,WAAc,CAAC,IAAK,IAAK,IACzB,SAAY,CAAC,GAAI,IAAK,IACtB,SAAY,CAAC,IAAK,IAAK,KACvB,OAAU,CAAC,IAAK,GAAI,IACpB,OAAU,CAAC,IAAK,IAAK,KACrB,QAAW,CAAC,IAAK,IAAK,KACtB,UAAa,CAAC,IAAK,GAAI,KACvB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,KAAQ,CAAC,IAAK,IAAK,KACnB,YAAe,CAAC,EAAG,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,IAAO,CAAC,IAAK,IAAK,KAClB,KAAQ,CAAC,EAAG,IAAK,KACjB,QAAW,CAAC,IAAK,IAAK,KACtB,OAAU,CAAC,IAAK,GAAI,IACpB,UAAa,CAAC,GAAI,IAAK,KACvB,OAAU,CAAC,IAAK,IAAK,KACrB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,WAAc,CAAC,IAAK,IAAK,KACzB,OAAU,CAAC,IAAK,IAAK,GACrB,YAAe,CAAC,IAAK,IAAK,MAGzB,IAAIwhF,EAAE,CAAC,SAAS3gB,EAAQ5gE,EAAOD,GAIjC,IAAI+uE,EAAQlO,EAAQ,GAARA,GAEZkO,EAAM0S,QAAU5gB,EAAQ,IAGxBA,EAAQ,GAARA,CAAYkO,GAEZA,EAAM2S,UAAY7gB,EAAQ,IAC1BkO,EAAM4S,iBAAmB9gB,EAAQ,IACjCkO,EAAMlnC,SAAWg5B,EAAQ,IACzBkO,EAAMle,QAAUgQ,EAAQ,IACxBkO,EAAM5nB,SAAW0Z,EAAQ,IACzBkO,EAAM6S,YAAc/gB,EAAQ,IAC5BkO,EAAM8S,QAAUhhB,EAAQ,IACxBkO,EAAM+S,SAAWjhB,EAAQ,IACzBkO,EAAMgT,QAAUlhB,EAAQ,IACxBkO,EAAMiT,MAAQnhB,EAAQ,IACtBkO,EAAMkT,aAAephB,EAAQ,IAC7BkO,EAAMmT,MAAQrhB,EAAQ,IACtBkO,EAAMoT,QAAUthB,EAAQ,IAExBA,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GAEZlO,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GAIZlO,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GAEZlO,EAAQ,EAARA,CAAWkO,GACXlO,EAAQ,EAARA,CAAWkO,GACXlO,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GACZlO,EAAQ,GAARA,CAAYkO,GAGZ,IAAIgT,EAAUlhB,EAAQ,IACtB,IAAK,IAAIpoD,KAAKspE,EACTA,EAAQhgF,eAAe0W,IAC1Bs2D,EAAMgT,QAAQh/B,SAASg/B,EAAQtpE,IAIjCs2D,EAAM+S,SAASM,aAEfniF,EAAOD,QAAU+uE,EACK,oBAAXzsE,SACVA,OAAOysE,MAAQA,GAYhBA,EAAMsT,OAASN,EAAQO,OAAOC,SAS9BxT,EAAMyT,MAAQT,EAAQnkB,MAAM2kB,SAS5BxT,EAAM0T,cAAgB1T,EAAMgT,QAU5BhT,EAAM2T,WAAa3T,EAAMle,QAAQl6B,OAAO,IASxCo4C,EAAM4T,cAAgB5T,EAAM0S,QAAQmB,OASpC7T,EAAM8T,cAAgB9T,EAAM8S,SAE1B,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,EAAI,EAAE,EAAI,IAAIiB,EAAE,CAAC,SAASjiB,EAAQ5gE,EAAOD,GAGpVC,EAAOD,QAAU,SAAS+uE,GAEzBA,EAAMgU,IAAM,SAAS/a,EAASgb,GAG7B,OAFAA,EAAO14E,KAAO,MAEP,IAAIykE,EAAM/G,EAASgb,MAK1B,IAAIC,EAAE,CAAC,SAASpiB,EAAQ5gE,EAAOD,GAGjCC,EAAOD,QAAU,SAAS+uE,GAEzBA,EAAMmU,OAAS,SAASlb,EAASgb,GAEhC,OADAA,EAAO14E,KAAO,SACP,IAAIykE,EAAM/G,EAASgb,MAK1B,IAAIG,GAAG,CAAC,SAAStiB,EAAQ5gE,EAAOD,GAGlCC,EAAOD,QAAU,SAAS+uE,GAEzBA,EAAMqU,SAAW,SAASpb,EAASgb,GAGlC,OAFAA,EAAO14E,KAAO,WAEP,IAAIykE,EAAM/G,EAASgb,MAK1B,IAAIK,GAAG,CAAC,SAASxiB,EAAQ5gE,EAAOD,GAGlCC,EAAOD,QAAU,SAAS+uE,GAEzBA,EAAMuU,KAAO,SAAStb,EAASgb,GAG9B,OAFAA,EAAO14E,KAAO,OAEP,IAAIykE,EAAM/G,EAASgb,MAK1B,IAAIO,GAAG,CAAC,SAAS1iB,EAAQ5gE,EAAOD,GAGlCC,EAAOD,QAAU,SAAS+uE,GAEzBA,EAAMyU,UAAY,SAASxb,EAASgb,GAGnC,OAFAA,EAAO14E,KAAO,YAEP,IAAIykE,EAAM/G,EAASgb,MAK1B,IAAIS,GAAG,CAAC,SAAS5iB,EAAQ5gE,EAAOD,GAGlCC,EAAOD,QAAU,SAAS+uE,GAEzBA,EAAM2U,MAAQ,SAAS1b,EAASgb,GAG/B,OAFAA,EAAO14E,KAAO,QAEP,IAAIykE,EAAM/G,EAASgb,MAK1B,IAAIW,GAAG,CAAC,SAAS9iB,EAAQ5gE,EAAOD,GAGlCC,EAAOD,QAAU,SAAS+uE,GACzBA,EAAM6U,QAAU,SAAS5b,EAASgb,GAEjC,OADAA,EAAO14E,KAAO,UACP,IAAIykE,EAAM/G,EAASgb,MAI1B,IAAIa,GAAG,CAAC,SAAShjB,EAAQ5gE,EAAOD,GAGlC,IAAI6nC,EAAWg5B,EAAQ,IACnB1Z,EAAW0Z,EAAQ,IACnB4gB,EAAU5gB,EAAQ,IAEtBh5B,EAASi8C,KAAK,MAAO,CACpB98D,MAAO,CACN3lB,KAAM,SAGP0iF,OAAQ,CACPC,MAAO,CAAC,CACP15E,KAAM,WAGN25E,mBAAoB,GACpBC,cAAe,GAGf1nD,QAAQ,EAGR2nD,UAAW,CACVC,iBAAiB,KAInBC,MAAO,CAAC,CACP/5E,KAAM,cAKTu9B,EAASi8C,KAAK,gBAAiB,CAC9B98D,MAAO,CACN3lB,KAAM,QACNilD,KAAM,KAGPy9B,OAAQ,CACPC,MAAO,CAAC,CACP15E,KAAM,SACN4O,SAAU,WAGXmrE,MAAO,CAAC,CACPnrE,SAAU,OACV5O,KAAM,WAGN25E,mBAAoB,GACpBC,cAAe,GAGf1nD,QAAQ,EAGR2nD,UAAW,CACVC,iBAAiB,MAKpBj9B,SAAU,CACTm9B,UAAW,CACVC,cAAe,SAIjBC,SAAU,CACTC,UAAW,CACV7mB,MAAO,SAASrzB,EAAMh8B,GAErB,IAAIqvD,EAAQ,GAUZ,OARIrzB,EAAK7hC,OAAS,IACb6hC,EAAK,GAAGm6C,OACX9mB,EAAQrzB,EAAK,GAAGm6C,OACNn2E,EAAK2f,OAAOxlB,OAAS,GAAK6hC,EAAK,GAAG5hC,MAAQ4F,EAAK2f,OAAOxlB,SAChEk1D,EAAQrvD,EAAK2f,OAAOqc,EAAK,GAAG5hC,SAIvBi1D,GAGR5tC,MAAO,SAASua,EAAMh8B,GAErB,OADmBA,EAAKo2E,SAASp6C,EAAKq6C,cAAc50D,OAAS,IACvC,KAAOua,EAAKs6C,SAGpCxjF,KAAM,QACNilD,KAAM,OA2FRrmD,EAAOD,QAAU,SAAS+uE,GAEzBA,EAAM+V,YAAYC,IAAMhW,EAAMiW,kBAAkBruD,OAAO,CAEtDsuD,gBAAiB99B,EAAS+9B,UAE1B9C,WAAY,WACX,IACI+C,EADAC,EAAK5+E,KAGTuoE,EAAMiW,kBAAkBljF,UAAUsgF,WAAWzyE,MAAMy1E,EAAIl6E,YAEvDi6E,EAAOC,EAAGC,WACLC,MAAQF,EAAGG,aAAaD,MAC7BH,EAAKJ,KAAM,GAGZxoB,OAAQ,SAASipB,GAChB,IAEItlF,EAAGulF,EADHC,EADKl/E,KACM6+E,UAAU92E,KAKzB,IANS/H,KAINm/E,OAJMn/E,KAIMo/E,WAEV1lF,EAAI,EAAGulF,EAAOC,EAAMh9E,OAAQxI,EAAIulF,IAAQvlF,EANpCsG,KAOLq/E,cAAcH,EAAMxlF,GAAIA,EAAGslF,IAIhCK,cAAe,SAASvB,EAAW37E,EAAO68E,GACzC,IAAIJ,EAAK5+E,KACLs/E,EAAQV,EAAGU,MACXX,EAAOC,EAAGC,UACVU,EAAUX,EAAGG,aACbS,EAAS1B,EAAU0B,QAAU,GAC7BC,EAAmBH,EAAMviF,QAAQ4jD,SAASm9B,UAE9CA,EAAU4B,QAAUd,EAAGe,cAAchB,EAAKiB,SAC1C9B,EAAU+B,QAAUjB,EAAGe,cAAchB,EAAKmB,SAC1ChC,EAAUiC,cAAgBnB,EAAGz8E,MAC7B27E,EAAUkC,OAAS79E,EAEnB27E,EAAUmC,OAAS,CAClBC,aAAcX,EAAQ/1D,MACtBA,MAAO81D,EAAMv3E,KAAK2f,OAAOvlB,GACzB47E,cAAeyB,EAAOzB,cAAgByB,EAAOzB,cAAgB0B,EAAiB1B,cAC9Ez8D,gBAAiBk+D,EAAOl+D,gBAAkBk+D,EAAOl+D,gBAAkB25D,EAAQkF,sBAAsBZ,EAAQj+D,gBAAiBnf,EAAOs9E,EAAiBn+D,iBAClJ4tB,YAAaswC,EAAOtwC,YAAcswC,EAAOtwC,YAAc+rC,EAAQkF,sBAAsBZ,EAAQrwC,YAAa/sC,EAAOs9E,EAAiBvwC,aAClIkxC,YAAaZ,EAAOY,YAAcZ,EAAOY,YAAcnF,EAAQkF,sBAAsBZ,EAAQa,YAAaj+E,EAAOs9E,EAAiBW,cAGnIxB,EAAGyB,sBAAsBvC,EAAW37E,EAAO68E,GAE3ClB,EAAUwC,SAMXD,sBAAuB,SAASvC,EAAW37E,EAAO68E,GACjD,IAAIJ,EAAK5+E,KACLugF,EAAQzC,EAAUmC,OAClBO,EAAS5B,EAAG6B,gBACZC,EAAOF,EAAOG,eACdC,EAAaJ,EAAOK,eACpBC,EAAQlC,EAAGO,QAAUP,EAAGQ,WACxB2B,EAAUnC,EAAGoC,wBAAwBpC,EAAGz8E,MAAOA,GAC/C8+E,EAAUrC,EAAGsC,wBAAwBtC,EAAGz8E,MAAOA,EAAO2+E,GAE1DP,EAAMK,WAAaA,EACnBL,EAAMG,KAAO1B,EAAQ0B,EAAOK,EAAQL,KACpCH,EAAMhuD,EAAIquD,EAAa5B,EAAQ0B,EAAOK,EAAQI,KAAOF,EAAQG,OAC7Db,EAAM9pC,EAAImqC,EAAaK,EAAQG,OAASpC,EAAQ0B,EAAOK,EAAQI,KAC/DZ,EAAMr/D,OAAS0/D,EAAaK,EAAQtuE,UAAOhV,EAC3C4iF,EAAMt/D,MAAQ2/D,OAAajjF,EAAYsjF,EAAQtuE,MAMhD0uE,gBAAiB,WAChB,OAAOrhF,KAAK6+E,UAAUiB,SAMvBwB,gBAAiB,WAChB,OAAOthF,KAAK6+E,UAAUe,SAMvBa,cAAe,WACd,OAAOzgF,KAAK2/E,cAAc3/E,KAAKqhF,oBAMhCE,cAAe,WACd,OAAOvhF,KAAK2/E,cAAc3/E,KAAKshF,oBAShCE,WAAY,SAASp1D,GACpB,IAMI1yB,EAAGilF,EALHW,EADKt/E,KACMs/E,MAEXmC,EAHKzhF,KAEMuhF,gBACKxkF,QAAQ0kF,QACxBxC,OAAgBthF,IAATyuB,EAAqBkzD,EAAMv3E,KAAKo2E,SAASj8E,OAASkqB,EAAO,EAChEs1D,EAAS,GAGb,IAAKhoF,EAAI,EAAGA,EAAIulF,IAAQvlF,GACvBilF,EAAOW,EAAMqC,eAAejoF,IACnB6kF,KAAOe,EAAMsC,iBAAiBloF,MACzB,IAAZ+nF,IACY,IAAZA,IAAoD,IAAhCC,EAAOx7E,QAAQy4E,EAAKG,aAC5BnhF,IAAZ8jF,SAAyC9jF,IAAfghF,EAAKG,QAAuD,IAAhC4C,EAAOx7E,QAAQy4E,EAAKG,UAC3E4C,EAAOxiF,KAAKy/E,EAAKG,OAInB,OAAO4C,GAORG,cAAe,WACd,OAAO7hF,KAAKwhF,aAAat/E,QAU1B4/E,cAAe,SAAS1D,EAAcnkF,GACrC,IAAIynF,EAAS1hF,KAAKwhF,WAAWpD,GACzBj8E,OAAkBxE,IAAT1D,EACVynF,EAAOx7E,QAAQjM,IACd,EAEJ,OAAmB,IAAXkI,EACLu/E,EAAOx/E,OAAS,EAChBC,GAMJi9E,SAAU,WACT,IAQI1lF,EAAGulF,EAPHrgC,EADK5+C,KACMuhF,gBACXQ,EAFK/hF,KAEW6hF,gBAChBzD,EAHKp+E,KAGamC,MAClB0+E,EAAejiC,EAAMiiC,eACrB7sE,EAAQ6sE,EAAejiC,EAAMn7B,KAAOm7B,EAAMp7B,IAC1CvP,EAAMD,GAAS6sE,EAAejiC,EAAM39B,MAAQ29B,EAAM19B,QAClD8gE,EAAS,GAGb,IAAKtoF,EAAI,EAAGulF,EAVHj/E,KAUa6+E,UAAU92E,KAAK7F,OAAQxI,EAAIulF,IAAQvlF,EACxDsoF,EAAO9iF,KAAK0/C,EAAMqjC,iBAAiB,KAAMvoF,EAAG0kF,IAO7C,MAAO,CACNr/E,IALKk8E,EAAQiH,cAActjC,EAAM7hD,QAAQolF,cApQ7C,SAA8BvjC,EAAOojC,GACpC,IAEIjzD,EAAMqzD,EAAM1oF,EAAGulF,EAFflgF,EAAM6/C,EAAMiiC,eAAiBjiC,EAAM39B,MAAQ29B,EAAM19B,OACjDmhE,EAAQzjC,EAAM0jC,WAGlB,IAAK5oF,EAAI,EAAGulF,EAAO+C,EAAO9/E,OAAQxI,EAAIulF,IAAQvlF,EAC7CqF,EAAMpD,KAAKoD,IAAIA,EAAKijF,EAAOtoF,GAAKsoF,EAAOtoF,EAAI,IAG5C,IAAKA,EAAI,EAAGulF,EAAOoD,EAAMngF,OAAQxI,EAAIulF,IAAQvlF,EAC5C0oF,EAAOxjC,EAAM2jC,gBAAgB7oF,GAC7BqF,EAAMrF,EAAI,EAAIiC,KAAKoD,IAAIA,EAAKqjF,EAAOrzD,GAAQhwB,EAC3CgwB,EAAOqzD,EAGR,OAAOrjF,EAsPFyjF,CAAqB5jC,EAAOojC,IAC3B,EAIHA,OAAQA,EACRhuE,MAAOA,EACPC,IAAKA,EACL8tE,WAAYA,EACZnjC,MAAOA,IAQToiC,wBAAyB,SAAS5C,EAAcj8E,GAC/C,IASIzI,EAAG+oF,EAAOC,EAAQhC,EAAMS,EAAMxuE,EAR9B2sE,EADKt/E,KACMs/E,MACXX,EAFK3+E,KAEK6+E,UACVjgC,EAHK5+C,KAGMygF,gBACXtC,EAAWmB,EAAMv3E,KAAKo2E,SACtBxjF,EAAQikD,EAAM+jC,cAAcxE,EAASC,GAAcr2E,KAAK5F,IACxDs/E,EAAU7iC,EAAM7hD,QAAQ0kF,QACxB3C,EAAQH,EAAKG,MACb9qE,EAAQ,EAGZ,GAAIytE,QAAwB9jF,IAAZ8jF,QAAmC9jF,IAAVmhF,EACxC,IAAKplF,EAAI,EAAGA,EAAI0kF,IAAgB1kF,GAC/B+oF,EAAQnD,EAAMqC,eAAejoF,IAEnB6kF,KACTkE,EAAM3D,QAAUA,GAChB2D,EAAMG,WAAWvB,oBAAsBziC,EAAMh8C,IAC7C08E,EAAMsC,iBAAiBloF,KAEvBgpF,EAAS9jC,EAAM+jC,cAAcxE,EAASzkF,GAAGqO,KAAK5F,KACzCxH,EAAQ,GAAK+nF,EAAS,GAAO/nF,GAAS,GAAK+nF,EAAS,KACxD1uE,GAAS0uE,IAUb,OAJAhC,EAAO9hC,EAAMqjC,iBAAiBjuE,GAIvB,CACNrB,KAHDA,IADAwuE,EAAOviC,EAAMqjC,iBAAiBjuE,EAAQrZ,IACvB+lF,GAAQ,EAItBA,KAAMA,EACNS,KAAMA,EACNC,OAAQD,EAAOxuE,EAAO,IAOxBuuE,wBAAyB,SAAS9C,EAAcj8E,EAAO2+E,GACtD,IACI/jF,EAAU+jF,EAAMliC,MAAM7hD,QACtB8lF,EAAiC,SAAzB9lF,EAAQolF,aA/QvB,SAAmChgF,EAAO2+E,EAAO/jF,GAChD,IAKIiX,EALAguE,EAASlB,EAAMkB,OACfI,EAAOJ,EAAO7/E,GACd4sB,EAAO5sB,EAAQ,EAAI6/E,EAAO7/E,EAAQ,GAAK,KACvCkU,EAAOlU,EAAQ6/E,EAAO9/E,OAAS,EAAI8/E,EAAO7/E,EAAQ,GAAK,KACvD2gF,EAAU/lF,EAAQ0gF,mBAiBtB,OAda,OAAT1uD,IAGHA,EAAOqzD,GAAiB,OAAT/rE,EAAgByqE,EAAM7sE,IAAMmuE,EAAO/rE,EAAO+rE,IAG7C,OAAT/rE,IAEHA,EAAO+rE,EAAOA,EAAOrzD,GAGtB/a,EAAQouE,GAASA,EAAOrzD,GAAQ,EAAK+zD,EAG9B,CACNC,OAHQ1sE,EAAO0Y,GAAQ,EAAK+zD,EAGdhC,EAAMiB,WACpBtV,MAAO1vE,EAAQ2gF,cACf1pE,MAAOA,GAuPHgvE,CAA0B7gF,EAAO2+E,EAAO/jF,GA9S9C,SAAkCoF,EAAO2+E,EAAO/jF,GAC/C,IAGI4V,EAAM85D,EAHNwW,EAAYlmF,EAAQolF,aACpB/uD,EAAQ0tD,EAAMiB,WACdK,EAAOtB,EAAMkB,OAAO7/E,GAcxB,OAXI84E,EAAQiH,cAAce,IACzBtwE,EAAOmuE,EAAM/hF,IAAMhC,EAAQ0gF,mBAC3BhR,EAAQ1vE,EAAQ2gF,gBAKhB/qE,EAAOswE,EAAY7vD,EACnBq5C,EAAQ,GAGF,CACNsW,MAAOpwE,EAAOygB,EACdq5C,MAAOA,EACPz4D,MAAOouE,EAAQzvE,EAAO,GA2RlBuwE,CAAyB/gF,EAAO2+E,EAAO/jF,GAEtComF,EANKnjF,KAMW8hF,cAAc1D,EANzBp+E,KAM0C6+E,UAAUC,OACzDsC,EAASyB,EAAM7uE,MAAS6uE,EAAME,MAAQI,EAAeN,EAAME,MAAQ,EACnEpwE,EAAOhX,KAAKoD,IACfk8E,EAAQmI,eAAermF,EAAQsmF,gBAAiB/yD,KAChDuyD,EAAME,MAAQF,EAAMpW,OAErB,MAAO,CACNiU,KAAMU,EAASzuE,EAAO,EACtBwuE,KAAMC,EAASzuE,EAAO,EACtByuE,OAAQA,EACRzuE,KAAMA,IAIR2wE,KAAM,WACL,IACIhE,EADKt/E,KACMs/E,MACX1gC,EAFK5+C,KAEMygF,gBACXvB,EAHKl/E,KAGM6+E,UAAU92E,KACrBw3E,EAJKv/E,KAIQ++E,aACbE,EAAOC,EAAMh9E,OACbxI,EAAI,EAIR,IAFAuhF,EAAQmB,OAAOmH,SAASjE,EAAMkE,IAAKlE,EAAMmE,WAElC/pF,EAAIulF,IAAQvlF,EACbyG,MAAMy+C,EAAM+jC,cAAcpD,EAAQx3E,KAAKrO,MAC3CwlF,EAAMxlF,GAAG4pF,OAIXrI,EAAQmB,OAAOsH,WAAWpE,EAAMkE,QAIlCjb,EAAM+V,YAAYqF,cAAgBpb,EAAM+V,YAAYC,IAAIpuD,OAAO,CAI9DkxD,gBAAiB,WAChB,OAAOrhF,KAAK6+E,UAAUe,SAMvB0B,gBAAiB,WAChB,OAAOthF,KAAK6+E,UAAUiB,aAKvB,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,KAAK8D,GAAG,CAAC,SAASvpB,EAAQ5gE,EAAOD,GAGzD,IAAI6nC,EAAWg5B,EAAQ,IACnB1Z,EAAW0Z,EAAQ,IACnB4gB,EAAU5gB,EAAQ,IAEtBh5B,EAASi8C,KAAK,SAAU,CACvB98D,MAAO,CACN3lB,KAAM,UAGP0iF,OAAQ,CACPC,MAAO,CAAC,CACP15E,KAAM,SACN4O,SAAU,SACV9P,GAAI,aAELi7E,MAAO,CAAC,CACP/5E,KAAM,SACN4O,SAAU,OACV9P,GAAI,cAINo7E,SAAU,CACTC,UAAW,CACV7mB,MAAO,WAEN,MAAO,IAER5tC,MAAO,SAASua,EAAMh8B,GACrB,IAAIm4E,EAAen4E,EAAKo2E,SAASp6C,EAAKq6C,cAAc50D,OAAS,GACzDq6D,EAAY97E,EAAKo2E,SAASp6C,EAAKq6C,cAAcr2E,KAAKg8B,EAAK5hC,OAC3D,OAAO+9E,EAAe,MAAQn8C,EAAKs6C,OAAS,KAAOt6C,EAAKm6C,OAAS,KAAO2F,EAAUrpF,EAAI,SAO1Ff,EAAOD,QAAU,SAAS+uE,GAEzBA,EAAM+V,YAAYwF,OAASvb,EAAMiW,kBAAkBruD,OAAO,CAIzDsuD,gBAAiB99B,EAASojC,MAK1BhuB,OAAQ,SAASipB,GAChB,IAAIJ,EAAK5+E,KAELgkF,EADOpF,EAAGC,UACI92E,KAGlBkzE,EAAQj4D,KAAKghE,GAAQ,SAASlzE,EAAO3O,GACpCy8E,EAAGS,cAAcvuE,EAAO3O,EAAO68E,OAOjCK,cAAe,SAASvuE,EAAO3O,EAAO68E,GACrC,IAAIJ,EAAK5+E,KACL2+E,EAAOC,EAAGC,UACVW,EAAS1uE,EAAM0uE,QAAU,GACzByE,EAASrF,EAAGe,cAAchB,EAAKiB,SAC/BsE,EAAStF,EAAGe,cAAchB,EAAKmB,SAC/B/iF,EAAU6hF,EAAGuF,uBAAuBrzE,EAAO3O,GAC3C4F,EAAO62E,EAAGG,aAAah3E,KAAK5F,GAC5BiiF,EAAUxF,EAAGz8E,MAEbowB,EAAIysD,EAAQiF,EAAOI,mBAAmB,IAAOJ,EAAOhC,iBAAiC,WAAhB,EAAOl6E,GAAoBA,EAAO6L,IAAKzR,EAAOiiF,GACnH3tC,EAAIuoC,EAAQkF,EAAOvD,eAAiBuD,EAAOjC,iBAAiBl6E,EAAM5F,EAAOiiF,GAE7EtzE,EAAM4uE,QAAUuE,EAChBnzE,EAAM+uE,QAAUqE,EAChBpzE,EAAMwzE,SAAWvnF,EACjB+T,EAAMivE,cAAgBqE,EACtBtzE,EAAMkvE,OAAS79E,EACf2O,EAAMmvE,OAAS,CACd3+D,gBAAiBvkB,EAAQukB,gBACzB4tB,YAAanyC,EAAQmyC,YACrBkxC,YAAarjF,EAAQqjF,YACrBmE,UAAWxnF,EAAQwnF,UACnBC,WAAYznF,EAAQynF,WACpBC,SAAU1nF,EAAQ0nF,SAClBC,OAAQ1F,EAAQ,EAAIjiF,EAAQ2nF,OAC5BC,KAAMnF,EAAOmF,MAAQxkF,MAAMoyB,IAAMpyB,MAAMs2C,GACvClkB,EAAGA,EACHkkB,EAAGA,GAGJ3lC,EAAMwvE,SAMPsE,cAAe,SAAS9zE,GACvB,IAAIyvE,EAAQzvE,EAAMmvE,OACdljF,EAAU+T,EAAMwzE,SACpBxzE,EAAM+zE,eAAiB,CACtBvjE,gBAAiBi/D,EAAMj/D,gBACvB4tB,YAAaqxC,EAAMrxC,YACnBkxC,YAAaG,EAAMH,YACnBsE,OAAQnE,EAAMmE,QAEfnE,EAAMj/D,gBAAkB25D,EAAQmI,eAAermF,EAAQ+nF,qBAAsB7J,EAAQ8J,cAAchoF,EAAQukB,kBAC3Gi/D,EAAMrxC,YAAc+rC,EAAQmI,eAAermF,EAAQioF,iBAAkB/J,EAAQ8J,cAAchoF,EAAQmyC,cACnGqxC,EAAMH,YAAcnF,EAAQmI,eAAermF,EAAQkoF,iBAAkBloF,EAAQqjF,aAC7EG,EAAMmE,OAAS3nF,EAAQ2nF,OAAS3nF,EAAQmoF,aAMzCf,uBAAwB,SAASrzE,EAAO3O,GACvC,IASIzI,EAAGulF,EAAMhkF,EARTqkF,EADKt/E,KACMs/E,MAEXC,EADWD,EAAMv3E,KAAKo2E,SAFjBn+E,KAGiBmC,OACtBq9E,EAAS1uE,EAAM0uE,QAAU,GACzBziF,EAAUuiF,EAAMviF,QAAQ4jD,SAAS7vC,MACjCq0E,EAAUlK,EAAQl+E,QAAQooF,QAC1Bp9E,EAAOw3E,EAAQx3E,KAAK5F,GACpBgP,EAAS,GAITqwD,EAAU,CACb8d,MAAOA,EACP8F,UAAWjjF,EACXo9E,QAASA,EACTnB,aAhBQp+E,KAgBSmC,OAGdQ,EAAO,CACV,kBACA,cACA,cACA,uBACA,mBACA,mBACA,cACA,YACA,aACA,YAGD,IAAKjJ,EAAI,EAAGulF,EAAOt8E,EAAKT,OAAQxI,EAAIulF,IAAQvlF,EAE3CyX,EADAlW,EAAM0H,EAAKjJ,IACGyrF,EAAQ,CACrB3F,EAAOvkF,GACPskF,EAAQtkF,GACR8B,EAAQ9B,IACNumE,EAASr/D,GAUb,OANAgP,EAAOuzE,OAASS,EAAQ,CACvB3F,EAAOkF,OACP38E,EAAOA,EAAKvN,OAAImD,EAChB4hF,EAAQmF,OACR3nF,EAAQ2nF,QACNljB,EAASr/D,GACLgP,OAKR,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKk0E,GAAG,CAAC,SAAShrB,EAAQ5gE,EAAOD,GAGzD,IAAI6nC,EAAWg5B,EAAQ,IACnB1Z,EAAW0Z,EAAQ,IACnB4gB,EAAU5gB,EAAQ,IAEtBh5B,EAASi8C,KAAK,WAAY,CACzBgI,UAAW,CAEVC,eAAe,EAEfC,cAAc,GAEfhlE,MAAO,CACN3lB,KAAM,UAEP4qF,eAAgB,SAASnG,GACxB,IAAIj7D,EAAO,GACXA,EAAKnlB,KAAK,cAAgBogF,EAAM18E,GAAK,aAErC,IAAImF,EAAOu3E,EAAMv3E,KACbo2E,EAAWp2E,EAAKo2E,SAChBz2D,EAAS3f,EAAK2f,OAElB,GAAIy2D,EAASj8E,OACZ,IAAK,IAAIxI,EAAI,EAAGA,EAAIykF,EAAS,GAAGp2E,KAAK7F,SAAUxI,EAC9C2qB,EAAKnlB,KAAK,qCAAuCi/E,EAAS,GAAG78D,gBAAgB5nB,GAAK,aAC9EguB,EAAOhuB,IACV2qB,EAAKnlB,KAAKwoB,EAAOhuB,IAElB2qB,EAAKnlB,KAAK,SAKZ,OADAmlB,EAAKnlB,KAAK,SACHmlB,EAAKtkB,KAAK,KAElB+7E,OAAQ,CACPp0D,OAAQ,CACPg+D,eAAgB,SAASpG,GACxB,IAAIv3E,EAAOu3E,EAAMv3E,KACjB,OAAIA,EAAK2f,OAAOxlB,QAAU6F,EAAKo2E,SAASj8E,OAChC6F,EAAK2f,OAAOrlB,KAAI,SAASmnB,EAAO9vB,GACtC,IAAIilF,EAAOW,EAAMqC,eAAe,GAC5BgE,EAAK59E,EAAKo2E,SAAS,GACnByH,EAAMjH,EAAK52E,KAAKrO,GAChB8lF,EAASoG,GAAOA,EAAIpG,QAAU,GAC9BW,EAAwBlF,EAAQkF,sBAChC0F,EAAUvG,EAAMviF,QAAQ4jD,SAASilC,IAKrC,MAAO,CACNvhE,KAAMmF,EACNs8D,UANUtG,EAAOl+D,gBAAkBk+D,EAAOl+D,gBAAkB6+D,EAAsBwF,EAAGrkE,gBAAiB5nB,EAAGmsF,EAAQvkE,iBAOjHykE,YANYvG,EAAOtwC,YAAcswC,EAAOtwC,YAAcixC,EAAsBwF,EAAGz2C,YAAax1C,EAAGmsF,EAAQ32C,aAOvG82C,UANQxG,EAAOY,YAAcZ,EAAOY,YAAcD,EAAsBwF,EAAGvF,YAAa1mF,EAAGmsF,EAAQzF,aAOnGl/B,OAAQ/gD,MAAMwlF,EAAG59E,KAAKrO,KAAOilF,EAAK52E,KAAKrO,GAAGwnD,OAG1C/+C,MAAOzI,MAIH,KAITusF,QAAS,SAASj9E,EAAGk9E,GACpB,IAEIxsF,EAAGulF,EAAMN,EAFTx8E,EAAQ+jF,EAAW/jF,MACnBm9E,EAAQt/E,KAAKs/E,MAGjB,IAAK5lF,EAAI,EAAGulF,GAAQK,EAAMv3E,KAAKo2E,UAAY,IAAIj8E,OAAQxI,EAAIulF,IAAQvlF,GAClEilF,EAAOW,EAAMqC,eAAejoF,IAEnBqO,KAAK5F,KACbw8E,EAAK52E,KAAK5F,GAAO++C,QAAUy9B,EAAK52E,KAAK5F,GAAO++C,QAI9Co+B,EAAMvpB,WAKRowB,iBAAkB,GAGlB1B,UAAqB,GAAX9oF,KAAKm4C,GAGfsyC,cAAyB,EAAVzqF,KAAKm4C,GAGpBkqC,SAAU,CACTC,UAAW,CACV7mB,MAAO,WACN,MAAO,IAER5tC,MAAO,SAAS68D,EAAat+E,GAC5B,IAAIu+E,EAAYv+E,EAAK2f,OAAO2+D,EAAYlkF,OACpCxH,EAAQ,KAAOoN,EAAKo2E,SAASkI,EAAYjI,cAAcr2E,KAAKs+E,EAAYlkF,OAW5E,OATI84E,EAAQ92E,QAAQmiF,IAGnBA,EAAYA,EAAUjmF,SACZ,IAAM1F,EAEhB2rF,GAAa3rF,EAGP2rF,OAMXjlD,EAASi8C,KAAK,MAAOrC,EAAQ73D,MAAMie,EAASklD,WAC5CllD,EAASi8C,KAAK,MAAO,CACpB6I,iBAAkB,IAGnB1sF,EAAOD,QAAU,SAAS+uE,GAEzBA,EAAM+V,YAAYiI,SAAWhe,EAAM+V,YAAYkI,IAAMje,EAAMiW,kBAAkBruD,OAAO,CAEnFsuD,gBAAiB99B,EAAS8lC,IAE1BC,WAAYzL,EAAQ0L,KAGpBC,aAAc,SAASxI,GAGtB,IAFA,IAAIyI,EAAY,EAEPxxE,EAAI,EAAGA,EAAI+oE,IAAgB/oE,EAC/BrV,KAAKs/E,MAAMsC,iBAAiBvsE,MAC7BwxE,EAIJ,OAAOA,GAGR9wB,OAAQ,SAASipB,GAChB,IAAIJ,EAAK5+E,KACLs/E,EAAQV,EAAGU,MACXmE,EAAYnE,EAAMmE,UAClB1jC,EAAOu/B,EAAMviF,QACb8oF,EAAU9lC,EAAKY,SAASilC,IACxBkB,EAAiBrD,EAAU/yD,MAAQ+yD,EAAUhgE,KAAOoiE,EAAQzF,YAC5D2G,EAAkBtD,EAAU7zB,OAAS6zB,EAAUjgE,IAAMqiE,EAAQzF,YAC7D4G,EAAUrrF,KAAKoD,IAAI+nF,EAAgBC,GACnC/wD,EAAS,CAACzD,EAAG,EAAGkkB,EAAG,GACnBkoC,EAAOC,EAAGC,UACVsH,EAAmBpmC,EAAKomC,iBACxBC,EAAgBrmC,EAAKqmC,cAGzB,GAAIA,EAA0B,EAAVzqF,KAAKm4C,GAAU,CAClC,IAAImzC,EAAalnC,EAAK0kC,UAAsB,EAAV9oF,KAAKm4C,IAEnCozC,GADJD,GAAwB,EAAVtrF,KAAKm4C,IAAYmzC,GAActrF,KAAKm4C,IAAM,EAAImzC,GAActrF,KAAKm4C,GAAK,EAAI,IAC5DsyC,EACxBpyE,EAAQ,CAACue,EAAG52B,KAAKk4C,IAAIozC,GAAaxwC,EAAG96C,KAAKq4C,IAAIizC,IAC9ChzE,EAAM,CAACse,EAAG52B,KAAKk4C,IAAIqzC,GAAWzwC,EAAG96C,KAAKq4C,IAAIkzC,IAC1CC,EAAaF,GAAc,GAAKC,GAAY,GAAOD,GAAwB,EAAVtrF,KAAKm4C,IAAsB,EAAVn4C,KAAKm4C,IAAYozC,EACnGE,EAAcH,GAAwB,GAAVtrF,KAAKm4C,IAAsB,GAAVn4C,KAAKm4C,IAAYozC,GAAcD,GAAwB,IAAVtrF,KAAKm4C,IAAsB,IAAVn4C,KAAKm4C,IAAYozC,EAC5HG,EAAeJ,IAAetrF,KAAKm4C,KAAOn4C,KAAKm4C,IAAMozC,GAAcD,GAActrF,KAAKm4C,IAAMn4C,KAAKm4C,IAAMozC,EACvGI,EAAeL,GAAyB,IAAVtrF,KAAKm4C,IAAuB,IAAVn4C,KAAKm4C,IAAYozC,GAAcD,GAAwB,IAAVtrF,KAAKm4C,IAAsB,IAAVn4C,KAAKm4C,IAAYozC,EAC/HK,EAASpB,EAAmB,IAC5BpnF,EAAM,CAACwzB,EAAG80D,GAAe,EAAI1rF,KAAKoD,IAAIiV,EAAMue,GAAKve,EAAMue,EAAI,EAAI,EAAIg1D,GAAStzE,EAAIse,GAAKte,EAAIse,EAAI,EAAI,EAAIg1D,IAAU9wC,EAAG6wC,GAAe,EAAI3rF,KAAKoD,IAAIiV,EAAMyiC,GAAKziC,EAAMyiC,EAAI,EAAI,EAAI8wC,GAAStzE,EAAIwiC,GAAKxiC,EAAIwiC,EAAI,EAAI,EAAI8wC,KAC7MnhF,EAAM,CAACmsB,EAAG40D,EAAY,EAAIxrF,KAAKyK,IAAI4N,EAAMue,GAAKve,EAAMue,EAAI,EAAI,EAAIg1D,GAAStzE,EAAIse,GAAKte,EAAIse,EAAI,EAAI,EAAIg1D,IAAU9wC,EAAG2wC,EAAa,EAAIzrF,KAAKyK,IAAI4N,EAAMyiC,GAAKziC,EAAMyiC,EAAI,EAAI,EAAI8wC,GAAStzE,EAAIwiC,GAAKxiC,EAAIwiC,EAAI,EAAI,EAAI8wC,KACxM50E,EAAO,CAACsO,MAAyB,IAAjB7a,EAAImsB,EAAIxzB,EAAIwzB,GAAUrR,OAA0B,IAAjB9a,EAAIqwC,EAAI13C,EAAI03C,IAC/DuwC,EAAUrrF,KAAKoD,IAAI+nF,EAAiBn0E,EAAKsO,MAAO8lE,EAAkBp0E,EAAKuO,QACvE8U,EAAS,CAACzD,GAAsB,IAAlBnsB,EAAImsB,EAAIxzB,EAAIwzB,GAAWkkB,GAAsB,IAAlBrwC,EAAIqwC,EAAI13C,EAAI03C,IAGtD6oC,EAAMc,YAAcxB,EAAG4I,kBAAkB7I,EAAK52E,MAC9Cu3E,EAAMmI,YAAc9rF,KAAKyK,KAAK4gF,EAAU1H,EAAMc,aAAe,EAAG,GAChEd,EAAMoI,YAAc/rF,KAAKyK,IAAI+/E,EAAoB7G,EAAMmI,YAAc,IAAQtB,EAAoB,EAAG,GACpG7G,EAAMqI,cAAgBrI,EAAMmI,YAAcnI,EAAMoI,aAAepI,EAAMsI,yBACrEtI,EAAMuI,QAAU7xD,EAAOzD,EAAI+sD,EAAMmI,YACjCnI,EAAMwI,QAAU9xD,EAAOygB,EAAI6oC,EAAMmI,YAEjC9I,EAAKoJ,MAAQnJ,EAAGoJ,iBAEhBpJ,EAAG6I,YAAcnI,EAAMmI,YAAenI,EAAMqI,aAAe/I,EAAGgI,aAAahI,EAAGz8E,OAC9Ey8E,EAAG8I,YAAc/rF,KAAKyK,IAAIw4E,EAAG6I,YAAcnI,EAAMqI,aAAc,GAE/D1M,EAAQj4D,KAAK27D,EAAK52E,MAAM,SAAS69E,EAAKzjF,GACrCy8E,EAAGS,cAAcuG,EAAKzjF,EAAO68E,OAI/BK,cAAe,SAASuG,EAAKzjF,EAAO68E,GACnC,IAAIJ,EAAK5+E,KACLs/E,EAAQV,EAAGU,MACXmE,EAAYnE,EAAMmE,UAClB1jC,EAAOu/B,EAAMviF,QACbkrF,EAAgBloC,EAAKulC,UACrB4C,GAAWzE,EAAUhgE,KAAOggE,EAAU/yD,OAAS,EAC/Cy3D,GAAW1E,EAAUjgE,IAAMigE,EAAU7zB,QAAU,EAC/Cq3B,EAAalnC,EAAK0kC,SAClByC,EAAWnnC,EAAK0kC,SAChBlF,EAAUX,EAAGG,aACbqH,EAAgBpH,GAASiJ,EAAc1C,cAAgB,EAAIK,EAAI1kC,OAAS,EAAI09B,EAAGwJ,uBAAuB7I,EAAQx3E,KAAK5F,KAAW49C,EAAKqmC,eAAiB,EAAMzqF,KAAKm4C,KAC/J4zC,EAAc1I,GAASiJ,EAAczC,aAAe,EAAI5G,EAAG8I,YAC3DD,EAAczI,GAASiJ,EAAczC,aAAe,EAAI5G,EAAG6I,YAC3DtH,EAAwBlF,EAAQkF,sBAEpClF,EAAQ9qD,OAAOy1D,EAAK,CAEnB7F,cAAenB,EAAGz8E,MAClB69E,OAAQ79E,EAGR89E,OAAQ,CACP1tD,EAAG21D,EAAU5I,EAAMuI,QACnBpxC,EAAG0xC,EAAU7I,EAAMwI,QACnBb,WAAYA,EACZC,SAAUA,EACVd,cAAeA,EACfqB,YAAaA,EACbC,YAAaA,EACbl+D,MAAO22D,EAAsBZ,EAAQ/1D,MAAOrnB,EAAOm9E,EAAMv3E,KAAK2f,OAAOvlB,OAIvE,IAAIo+E,EAAQqF,EAAI3F,OAGZT,EAASoG,EAAIpG,QAAU,GACvB4D,EAAiBnI,EAAQkF,sBACzBkI,EAAcroF,KAAKs/E,MAAMviF,QAAQ4jD,SAASilC,IAC9CrF,EAAMj/D,gBAAkBk+D,EAAOl+D,gBAAkBk+D,EAAOl+D,gBAAkB8hE,EAAe7D,EAAQj+D,gBAAiBnf,EAAOkmF,EAAY/mE,iBACrIi/D,EAAMrxC,YAAcswC,EAAOtwC,YAAcswC,EAAOtwC,YAAck0C,EAAe7D,EAAQrwC,YAAa/sC,EAAOkmF,EAAYn5C,aACrHqxC,EAAMH,YAAcZ,EAAOY,YAAcZ,EAAOY,YAAcgD,EAAe7D,EAAQa,YAAaj+E,EAAOkmF,EAAYjI,aAGhHpB,GAAUiJ,EAAc1C,gBAE3BhF,EAAM0G,WADO,IAAV9kF,EACgB49C,EAAK0kC,SAEL7F,EAAGC,UAAU92E,KAAK5F,EAAQ,GAAG89E,OAAOiH,SAGxD3G,EAAM2G,SAAW3G,EAAM0G,WAAa1G,EAAM6F,eAG3CR,EAAItF,SAGL0H,eAAgB,WACf,IAGIrtF,EAHA4kF,EAAUv/E,KAAK++E,aACfJ,EAAO3+E,KAAK6+E,UACZkJ,EAAQ,EAcZ,OAXA9M,EAAQj4D,KAAK27D,EAAK52E,MAAM,SAASmb,EAAS/gB,GACzCxH,EAAQ4kF,EAAQx3E,KAAK5F,GAChBhC,MAAMxF,IAAWuoB,EAAQg+B,SAC7B6mC,GAASpsF,KAAKm4B,IAAIn5B,OAQbotF,GAGRK,uBAAwB,SAASztF,GAChC,IAAIotF,EAAQ/nF,KAAK6+E,UAAUkJ,MAC3B,OAAIA,EAAQ,IAAM5nF,MAAMxF,GACL,EAAVgB,KAAKm4C,IAAan4C,KAAKm4B,IAAIn5B,GAASotF,GAEtC,GAIRP,kBAAmB,SAASc,GAO3B,IANA,IAGIlI,EACAmI,EAJAniF,EAAM,EACNjE,EAAQnC,KAAKmC,MACbD,EAASomF,EAAKpmF,OAITxI,EAAI,EAAGA,EAAIwI,EAAQxI,IAC3B0mF,EAAckI,EAAK5uF,GAAGumF,OAASqI,EAAK5uF,GAAGumF,OAAOG,YAAc,EAI5Dh6E,GAHAmiF,EAAaD,EAAK5uF,GAAG8uF,OAASF,EAAK5uF,GAAG8uF,OAAOhM,OAAOz0E,KAAKo2E,SAASh8E,GAAO8iF,iBAAmB,IAE5F7+E,EAAMg6E,EAAch6E,EAAMg6E,EAAch6E,GACfmiF,EAAaniF,EAEvC,OAAOA,OAKR,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKqiF,GAAG,CAAC,SAASpuB,EAAQ5gE,EAAOD,GAGzD,IAAI6nC,EAAWg5B,EAAQ,IACnB1Z,EAAW0Z,EAAQ,IACnB4gB,EAAU5gB,EAAQ,IAEtBh5B,EAASi8C,KAAK,OAAQ,CACrBoL,WAAW,EACXC,UAAU,EAEVnoE,MAAO,CACN3lB,KAAM,SAGP0iF,OAAQ,CACPC,MAAO,CAAC,CACP15E,KAAM,WACNlB,GAAI,aAELi7E,MAAO,CAAC,CACP/5E,KAAM,SACNlB,GAAI,gBAKPnJ,EAAOD,QAAU,SAAS+uE,GAEzB,SAASqgB,EAAYrJ,EAASxiF,GAC7B,OAAOk+E,EAAQmI,eAAe7D,EAAQsJ,SAAU9rF,EAAQ2rF,WAGzDngB,EAAM+V,YAAYwK,KAAOvgB,EAAMiW,kBAAkBruD,OAAO,CAEvD44D,mBAAoBpoC,EAASm8B,KAE7B2B,gBAAiB99B,EAASojC,MAE1BhuB,OAAQ,SAASipB,GAChB,IAOItlF,EAAGulF,EAAMO,EAPTZ,EAAK5+E,KACL2+E,EAAOC,EAAGC,UACViK,EAAOnK,EAAKY,QACZyE,EAASrF,EAAK52E,MAAQ,GACtBhL,EAAU6hF,EAAGU,MAAMviF,QACnBisF,EAAqBjsF,EAAQ4jD,SAASmoC,KACtClqC,EAAQggC,EAAGe,cAAchB,EAAKmB,SAE9BP,EAAUX,EAAGG,aACb8J,EAAWD,EAAYrJ,EAASxiF,GAwCpC,IArCI8rF,IACHrJ,EAASsJ,EAAKtJ,QAAU,QAGC7hF,IAApB4hF,EAAQrkC,cAAmDv9C,IAAxB4hF,EAAQ0J,cAC/C1J,EAAQ0J,YAAc1J,EAAQrkC,SAI/B4tC,EAAKI,OAAStqC,EACdkqC,EAAK/I,cAAgBnB,EAAGz8E,MAExB2mF,EAAKK,UAAYnF,EAEjB8E,EAAK7I,OAAS,CAKb0I,SAAUpJ,EAAQoJ,SAAWpJ,EAAQoJ,SAAW5rF,EAAQ4rF,SACxDztC,QAASskC,EAAOtkC,QAAUskC,EAAOtkC,QAAU+/B,EAAQmI,eAAe7D,EAAQ0J,YAAaD,EAAmB9tC,SAC1G55B,gBAAiBk+D,EAAOl+D,gBAAkBk+D,EAAOl+D,gBAAmBi+D,EAAQj+D,iBAAmB0nE,EAAmB1nE,gBAClH8+D,YAAaZ,EAAOY,YAAcZ,EAAOY,YAAeb,EAAQa,aAAe4I,EAAmB5I,YAClGlxC,YAAaswC,EAAOtwC,YAAcswC,EAAOtwC,YAAeqwC,EAAQrwC,aAAe85C,EAAmB95C,YAClGk6C,eAAgB5J,EAAO4J,eAAiB5J,EAAO4J,eAAkB7J,EAAQ6J,gBAAkBJ,EAAmBI,eAC9GC,WAAY7J,EAAO6J,WAAa7J,EAAO6J,WAAc9J,EAAQ8J,YAAcL,EAAmBK,WAC9FC,iBAAkB9J,EAAO8J,iBAAmB9J,EAAO8J,iBAAoB/J,EAAQ+J,kBAAoBN,EAAmBM,iBACtHC,gBAAiB/J,EAAO+J,gBAAkB/J,EAAO+J,gBAAmBhK,EAAQgK,iBAAmBP,EAAmBO,gBAClH32C,KAAM4sC,EAAO5sC,KAAO4sC,EAAO5sC,UAAyBj1C,IAAjB4hF,EAAQ3sC,KAAqB2sC,EAAQ3sC,KAAOo2C,EAAmBp2C,KAClG42C,YAAahK,EAAOgK,YAAchK,EAAOgK,YAAcvO,EAAQmI,eAAe7D,EAAQiK,YAAaR,EAAmBS,SACtHC,uBAAwBlK,EAAOkK,uBAAyBlK,EAAOkK,uBAAyBzO,EAAQmI,eAAe7D,EAAQmK,uBAAwBV,EAAmBU,yBAGnKZ,EAAKxI,SAID5mF,EAAI,EAAGulF,EAAO+E,EAAO9hF,OAAQxI,EAAIulF,IAAQvlF,EAC7CklF,EAAGS,cAAc2E,EAAOtqF,GAAIA,EAAGslF,GAQhC,IALI6J,GAAoC,IAAxBC,EAAK7I,OAAO/kC,SAC3B0jC,EAAG+K,4BAICjwF,EAAI,EAAGulF,EAAO+E,EAAO9hF,OAAQxI,EAAIulF,IAAQvlF,EAC7CsqF,EAAOtqF,GAAG4mF,SAIZsJ,wBAAyB,SAAS94E,EAAO3O,GACxC,IAAImf,EAAkBthB,KAAKs/E,MAAMviF,QAAQ4jD,SAAS7vC,MAAMwQ,gBACpDi+D,EAAUv/E,KAAK++E,aACfS,EAAS1uE,EAAM0uE,QAAU,GAU7B,OARIA,EAAOl+D,gBACVA,EAAkBk+D,EAAOl+D,gBACfi+D,EAAQsK,qBAClBvoE,EAAkB25D,EAAQkF,sBAAsBZ,EAAQsK,qBAAsB1nF,EAAOmf,GAC3Ei+D,EAAQj+D,kBAClBA,EAAkBi+D,EAAQj+D,iBAGpBA,GAGRwoE,oBAAqB,SAASh5E,EAAO3O,GACpC,IAAI+sC,EAAclvC,KAAKs/E,MAAMviF,QAAQ4jD,SAAS7vC,MAAMo+B,YAChDqwC,EAAUv/E,KAAK++E,aACfS,EAAS1uE,EAAM0uE,QAAU,GAU7B,OARIA,EAAOtwC,YACVA,EAAcswC,EAAOtwC,YACXqwC,EAAQwK,iBAClB76C,EAAc+rC,EAAQkF,sBAAsBZ,EAAQwK,iBAAkB5nF,EAAO+sC,GACnEqwC,EAAQrwC,cAClBA,EAAcqwC,EAAQrwC,aAGhBA,GAGR86C,oBAAqB,SAASl5E,EAAO3O,GACpC,IAAIi+E,EAAcpgF,KAAKs/E,MAAMviF,QAAQ4jD,SAAS7vC,MAAMsvE,YAChDb,EAAUv/E,KAAK++E,aACfS,EAAS1uE,EAAM0uE,QAAU,GAU7B,OARKr/E,MAAMq/E,EAAOY,cAENjgF,MAAMo/E,EAAQ0K,mBAAqBhP,EAAQ92E,QAAQo7E,EAAQ0K,kBACtE7J,EAAcnF,EAAQkF,sBAAsBZ,EAAQ0K,iBAAkB9nF,EAAOi+E,GAClEjgF,MAAMo/E,EAAQa,eACzBA,EAAcb,EAAQa,aAJtBA,EAAcZ,EAAOY,YAOfA,GAGR8J,iBAAkB,SAASp5E,EAAO3O,GACjC,IAAIgoF,EAAgBnqF,KAAKs/E,MAAMviF,QAAQ4jD,SAAS7vC,MAAM2zE,SAClDlF,EAAUv/E,KAAK++E,aACfS,EAAS1uE,EAAM0uE,QAAU,GAO7B,OALKr/E,MAAMq/E,EAAOiF,UAENtkF,MAAMo/E,EAAQ4K,iBAAkBlP,EAAQ92E,QAAQo7E,EAAQ4K,iBACnEA,EAAgBlP,EAAQkF,sBAAsBZ,EAAQ4K,cAAehoF,EAAOgoF,IAF5EA,EAAgB3K,EAAOiF,SAIjB0F,GAGR9K,cAAe,SAASvuE,EAAO3O,EAAO68E,GACrC,IASIzsD,EAAGkkB,EATHmoC,EAAK5+E,KACL2+E,EAAOC,EAAGC,UACVW,EAAS1uE,EAAM0uE,QAAU,GACzBD,EAAUX,EAAGG,aACbX,EAAeQ,EAAGz8E,MAClBxH,EAAQ4kF,EAAQx3E,KAAK5F,GACrB+hF,EAAStF,EAAGe,cAAchB,EAAKmB,SAC/BmE,EAASrF,EAAGe,cAAchB,EAAKiB,SAC/BwK,EAAexL,EAAGU,MAAMviF,QAAQ4jD,SAAS7vC,WAIrBnT,IAAnB4hF,EAAQmF,aAAkD/mF,IAAxB4hF,EAAQ8K,cAC9C9K,EAAQ8K,YAAc9K,EAAQmF,aAEJ/mF,IAAtB4hF,EAAQgF,gBAAwD5mF,IAA3B4hF,EAAQ+K,iBACjD/K,EAAQ+K,eAAiB/K,EAAQgF,WAGlChyD,EAAI0xD,EAAOhC,iBAAkC,WAAjB,EAAOtnF,GAAqBA,EAAQiZ,IAAKzR,EAAOi8E,GAC5E3nC,EAAIuoC,EAAQkF,EAAOvD,eAAiB/B,EAAG2L,gBAAgB5vF,EAAOwH,EAAOi8E,GAGrEttE,EAAM4uE,QAAUuE,EAChBnzE,EAAM+uE,QAAUqE,EAChBpzE,EAAMivE,cAAgB3B,EACtBttE,EAAMkvE,OAAS79E,EAGf2O,EAAMmvE,OAAS,CACd1tD,EAAGA,EACHkkB,EAAGA,EACHkuC,KAAMnF,EAAOmF,MAAQxkF,MAAMoyB,IAAMpyB,MAAMs2C,GAEvCiuC,OAAQlF,EAAOkF,QAAUzJ,EAAQkF,sBAAsBZ,EAAQ8K,YAAaloF,EAAOioF,EAAa1F,QAChGF,WAAYhF,EAAOgF,YAAcvJ,EAAQkF,sBAAsBZ,EAAQiF,WAAYriF,EAAOioF,EAAa5F,YACvGC,SAAU7F,EAAGsL,iBAAiBp5E,EAAO3O,GACrCmf,gBAAiBs9D,EAAGgL,wBAAwB94E,EAAO3O,GACnD+sC,YAAa0vC,EAAGkL,oBAAoBh5E,EAAO3O,GAC3Ci+E,YAAaxB,EAAGoL,oBAAoBl5E,EAAO3O,GAC3C+4C,QAASyjC,EAAKY,QAAQU,OAAStB,EAAKY,QAAQU,OAAO/kC,QAAU,EAC7DsuC,cAAa7K,EAAKY,QAAQU,QAAStB,EAAKY,QAAQU,OAAOuJ,YAEvDjF,UAAW/E,EAAO+E,WAAatJ,EAAQkF,sBAAsBZ,EAAQ+K,eAAgBnoF,EAAOioF,EAAa7F,aAI3GgG,gBAAiB,SAAS5vF,EAAOwH,EAAOi8E,GACvC,IAMI1kF,EAAGisF,EAAI6E,EALPlL,EADKt/E,KACMs/E,MACXX,EAFK3+E,KAEK6+E,UACVqF,EAHKlkF,KAGO2/E,cAAchB,EAAKmB,SAC/B2K,EAAS,EACTC,EAAS,EAGb,GAAIxG,EAAOnnF,QAAQ0kF,QAAS,CAC3B,IAAK/nF,EAAI,EAAGA,EAAI0kF,EAAc1kF,IAG7B,GAFAisF,EAAKrG,EAAMv3E,KAAKo2E,SAASzkF,GAEL,UADpB8wF,EAASlL,EAAMqC,eAAejoF,IACnBoK,MAAmB0mF,EAAO1K,UAAYoE,EAAOthF,IAAM08E,EAAMsC,iBAAiBloF,GAAI,CACxF,IAAIixF,EAAoB5wD,OAAOmqD,EAAOvB,cAAcgD,EAAG59E,KAAK5F,KACxDwoF,EAAoB,EACvBD,GAAUC,GAAqB,EAE/BF,GAAUE,GAAqB,EAKlC,IAAIC,EAAa7wD,OAAOmqD,EAAOvB,cAAchoF,IAC7C,OAAIiwF,EAAa,EACT1G,EAAOjC,iBAAiByI,EAASE,GAElC1G,EAAOjC,iBAAiBwI,EAASG,GAGzC,OAAO1G,EAAOjC,iBAAiBtnF,IAGhCgvF,0BAA2B,WAC1B,IAIIjwF,EAAGulF,EAAasB,EAAOsK,EAHvBlM,EADK3+E,KACK6+E,UACViM,EAFK9qF,KAEKs/E,MAAMmE,UAChBO,EAAUrF,EAAK52E,MAAQ,GAU3B,SAASgjF,EAAgBC,EAAIjsF,EAAKqH,GACjC,OAAOzK,KAAKyK,IAAIzK,KAAKoD,IAAIisF,EAAI5kF,GAAMrH,GAGpC,GAVI4/E,EAAKY,QAAQU,OAAO0I,WACvB3E,EAASA,EAAO1hF,QAAO,SAAS0oF,GAC/B,OAAQA,EAAG/K,OAAO0E,SAQ+B,aAA/ChG,EAAKY,QAAQU,OAAOyJ,uBACvBzO,EAAQgQ,oBAAoBjH,QAE5B,IAAKtqF,EAAI,EAAGulF,EAAO+E,EAAO9hF,OAAQxI,EAAIulF,IAAQvlF,EAE7C6mF,EADQyD,EAAOtqF,GACDumF,OACd4K,EAAgB5P,EAAQiQ,YACvBjQ,EAAQkQ,aAAanH,EAAQtqF,GAAGumF,OAChCM,EACAtF,EAAQmQ,SAASpH,EAAQtqF,GAAGumF,OAC5BtB,EAAKY,QAAQU,OAAO/kC,SAErBqlC,EAAM8K,sBAAwBR,EAAcS,SAAS/4D,EACrDguD,EAAMgL,sBAAwBV,EAAcS,SAAS70C,EACrD8pC,EAAMiL,kBAAoBX,EAAcx0E,KAAKkc,EAC7CguD,EAAMkL,kBAAoBZ,EAAcx0E,KAAKogC,EAI/C,GApCSz2C,KAoCFs/E,MAAMviF,QAAQ4jD,SAASmoC,KAAK4C,gBAClC,IAAKhyF,EAAI,EAAGulF,EAAO+E,EAAO9hF,OAAQxI,EAAIulF,IAAQvlF,GAC7C6mF,EAAQyD,EAAOtqF,GAAGumF,QACZoL,sBAAwBN,EAAgBxK,EAAM8K,sBAAuBP,EAAKrnE,KAAMqnE,EAAKp6D,OAC3F6vD,EAAMgL,sBAAwBR,EAAgBxK,EAAMgL,sBAAuBT,EAAKtnE,IAAKsnE,EAAKl7B,QAC1F2wB,EAAMiL,kBAAoBT,EAAgBxK,EAAMiL,kBAAmBV,EAAKrnE,KAAMqnE,EAAKp6D,OACnF6vD,EAAMkL,kBAAoBV,EAAgBxK,EAAMkL,kBAAmBX,EAAKtnE,IAAKsnE,EAAKl7B,SAKrF0zB,KAAM,WACL,IAMIqI,EALArM,EADKt/E,KACMs/E,MACXX,EAFK3+E,KAEK6+E,UACVmF,EAASrF,EAAK52E,MAAQ,GACtB+iF,EAAOxL,EAAMmE,UACbxE,EAAO+E,EAAO9hF,OAEdxI,EAAI,EAkBR,IAhBIkvF,EATK5oF,KASU++E,aAAcO,EAAMviF,WACtC4uF,GAAmBhN,EAAKY,QAAQU,OAAOG,aAAe,GAAK,EAE3DnF,EAAQmB,OAAOmH,SAASjE,EAAMkE,IAAK,CAClC//D,KAAMqnE,EAAKrnE,KACXiN,MAAOo6D,EAAKp6D,MACZlN,IAAKsnE,EAAKtnE,IAAMmoE,EAChB/7B,OAAQk7B,EAAKl7B,OAAS+7B,IAGvBhN,EAAKY,QAAQ+D,OAEbrI,EAAQmB,OAAOsH,WAAWpE,EAAMkE,MAI1B9pF,EAAIulF,IAAQvlF,EAClBsqF,EAAOtqF,GAAG4pF,KAAKwH,IAIjBlG,cAAe,SAAS1hE,GAEvB,IAAIq8D,EAAUv/E,KAAKs/E,MAAMv3E,KAAKo2E,SAASj7D,EAAQ68D,eAC3C59E,EAAQ+gB,EAAQ88D,OAChBR,EAASt8D,EAAQs8D,QAAU,GAC3Be,EAAQr9D,EAAQ+8D,OAEpB/8D,EAAQ2hE,eAAiB,CACxBvjE,gBAAiBi/D,EAAMj/D,gBACvB4tB,YAAaqxC,EAAMrxC,YACnBkxC,YAAaG,EAAMH,YACnBsE,OAAQnE,EAAMmE,QAGfnE,EAAMj/D,gBAAkBk+D,EAAOsF,sBAAwB7J,EAAQkF,sBAAsBZ,EAAQqM,0BAA2BzpF,EAAO84E,EAAQ8J,cAAcxE,EAAMj/D,kBAC3Ji/D,EAAMrxC,YAAcswC,EAAOwF,kBAAoB/J,EAAQkF,sBAAsBZ,EAAQsM,sBAAuB1pF,EAAO84E,EAAQ8J,cAAcxE,EAAMrxC,cAC/IqxC,EAAMH,YAAcZ,EAAOyF,kBAAoBhK,EAAQkF,sBAAsBZ,EAAQuM,sBAAuB3pF,EAAOo+E,EAAMH,aACzHG,EAAMmE,OAASlF,EAAO0F,aAAejK,EAAQkF,sBAAsBZ,EAAQwM,iBAAkB5pF,EAAOnC,KAAKs/E,MAAMviF,QAAQ4jD,SAAS7vC,MAAMo0E,kBAKvI,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,KAAK8G,GAAG,CAAC,SAAS3xB,EAAQ5gE,EAAOD,GAGzD,IAAI6nC,EAAWg5B,EAAQ,IACnB1Z,EAAW0Z,EAAQ,IACnB4gB,EAAU5gB,EAAQ,IAEtBh5B,EAASi8C,KAAK,YAAa,CAC1B1+B,MAAO,CACN96C,KAAM,eACNmoF,WAAY,CACX3mF,SAAS,GAEVq4E,UAAW,CACVuO,UAAU,GAEXC,YAAa,CACZ7mF,SAAS,GAEV+8E,MAAO,CACN+J,aAAa,IAKf9G,UAAW,CACVC,eAAe,EACfC,cAAc,GAGfyB,YAAa,GAAMtrF,KAAKm4C,GACxB2xC,eAAgB,SAASnG,GACxB,IAAIj7D,EAAO,GACXA,EAAKnlB,KAAK,cAAgBogF,EAAM18E,GAAK,aAErC,IAAImF,EAAOu3E,EAAMv3E,KACbo2E,EAAWp2E,EAAKo2E,SAChBz2D,EAAS3f,EAAK2f,OAElB,GAAIy2D,EAASj8E,OACZ,IAAK,IAAIxI,EAAI,EAAGA,EAAIykF,EAAS,GAAGp2E,KAAK7F,SAAUxI,EAC9C2qB,EAAKnlB,KAAK,qCAAuCi/E,EAAS,GAAG78D,gBAAgB5nB,GAAK,aAC9EguB,EAAOhuB,IACV2qB,EAAKnlB,KAAKwoB,EAAOhuB,IAElB2qB,EAAKnlB,KAAK,SAKZ,OADAmlB,EAAKnlB,KAAK,SACHmlB,EAAKtkB,KAAK,KAElB+7E,OAAQ,CACPp0D,OAAQ,CACPg+D,eAAgB,SAASpG,GACxB,IAAIv3E,EAAOu3E,EAAMv3E,KACjB,OAAIA,EAAK2f,OAAOxlB,QAAU6F,EAAKo2E,SAASj8E,OAChC6F,EAAK2f,OAAOrlB,KAAI,SAASmnB,EAAO9vB,GACtC,IAAIilF,EAAOW,EAAMqC,eAAe,GAC5BgE,EAAK59E,EAAKo2E,SAAS,GAEnBqB,EADMb,EAAK52E,KAAKrO,GACH8lF,QAAU,GACvBW,EAAwBlF,EAAQkF,sBAChC0F,EAAUvG,EAAMviF,QAAQ4jD,SAASilC,IAKrC,MAAO,CACNvhE,KAAMmF,EACNs8D,UANUtG,EAAOl+D,gBAAkBk+D,EAAOl+D,gBAAkB6+D,EAAsBwF,EAAGrkE,gBAAiB5nB,EAAGmsF,EAAQvkE,iBAOjHykE,YANYvG,EAAOtwC,YAAcswC,EAAOtwC,YAAcixC,EAAsBwF,EAAGz2C,YAAax1C,EAAGmsF,EAAQ32C,aAOvG82C,UANQxG,EAAOY,YAAcZ,EAAOY,YAAcD,EAAsBwF,EAAGvF,YAAa1mF,EAAGmsF,EAAQzF,aAOnGl/B,OAAQ/gD,MAAMwlF,EAAG59E,KAAKrO,KAAOilF,EAAK52E,KAAKrO,GAAGwnD,OAG1C/+C,MAAOzI,MAIH,KAITusF,QAAS,SAASj9E,EAAGk9E,GACpB,IAEIxsF,EAAGulF,EAAMN,EAFTx8E,EAAQ+jF,EAAW/jF,MACnBm9E,EAAQt/E,KAAKs/E,MAGjB,IAAK5lF,EAAI,EAAGulF,GAAQK,EAAMv3E,KAAKo2E,UAAY,IAAIj8E,OAAQxI,EAAIulF,IAAQvlF,GAClEilF,EAAOW,EAAMqC,eAAejoF,IACvBqO,KAAK5F,GAAO++C,QAAUy9B,EAAK52E,KAAK5F,GAAO++C,OAG7Co+B,EAAMvpB,WAKRioB,SAAU,CACTC,UAAW,CACV7mB,MAAO,WACN,MAAO,IAER5tC,MAAO,SAASua,EAAMh8B,GACrB,OAAOA,EAAK2f,OAAOqc,EAAK5hC,OAAS,KAAO4hC,EAAKm6C,YAMjDzkF,EAAOD,QAAU,SAAS+uE,GAEzBA,EAAM+V,YAAY+N,UAAY9jB,EAAMiW,kBAAkBruD,OAAO,CAE5DsuD,gBAAiB99B,EAAS8lC,IAE1BC,WAAYzL,EAAQ0L,KAEpB5wB,OAAQ,SAASipB,GAChB,IAMItlF,EAAGulF,EAAMqN,EANT1N,EAAK5+E,KACLu/E,EAAUX,EAAGG,aACbJ,EAAOC,EAAGC,UACV7qE,EAAQ4qE,EAAGU,MAAMviF,QAAQkqF,YAAc,EACvCsF,EAAS3N,EAAG4N,QAAU,GACtBC,EAAS7N,EAAG8N,QAAU,GAO1B,IAJA9N,EAAG+N,gBAEHhO,EAAKvrD,MAAQwrD,EAAGgO,uBAEXlzF,EAAI,EAAGulF,EAAOM,EAAQx3E,KAAK7F,OAAQxI,EAAIulF,EAAMvlF,IACjD6yF,EAAO7yF,GAAKsa,EACZs4E,EAAQ1N,EAAGiO,cAAcnzF,GACzB+yF,EAAO/yF,GAAK4yF,EACZt4E,GAASs4E,EAGVrR,EAAQj4D,KAAK27D,EAAK52E,MAAM,SAAS69E,EAAKzjF,GACrCy8E,EAAGS,cAAcuG,EAAKzjF,EAAO68E,OAO/B2N,cAAe,WACd,IAAI/N,EAAK5+E,KACLs/E,EAAQV,EAAGU,MACXmE,EAAYnE,EAAMmE,UAClB1jC,EAAOu/B,EAAMviF,QACb8oF,EAAU9lC,EAAKY,SAASilC,IACxBoB,EAAUrrF,KAAKoD,IAAI0kF,EAAU/yD,MAAQ+yD,EAAUhgE,KAAMggE,EAAU7zB,OAAS6zB,EAAUjgE,KAEtF87D,EAAMmI,YAAc9rF,KAAKyK,KAAK4gF,EAAUnB,EAAQzF,YAAc,GAAK,EAAG,GACtEd,EAAMoI,YAAc/rF,KAAKyK,IAAI25C,EAAKomC,iBAAoB7G,EAAMmI,YAAc,IAAQ1nC,EAAKomC,iBAAoB,EAAG,GAC9G7G,EAAMqI,cAAgBrI,EAAMmI,YAAcnI,EAAMoI,aAAepI,EAAMsI,yBAErEhJ,EAAG6I,YAAcnI,EAAMmI,YAAenI,EAAMqI,aAAe/I,EAAGz8E,MAC9Dy8E,EAAG8I,YAAc9I,EAAG6I,YAAcnI,EAAMqI,cAGzCtI,cAAe,SAASuG,EAAKzjF,EAAO68E,GACnC,IAAIJ,EAAK5+E,KACLs/E,EAAQV,EAAGU,MACXC,EAAUX,EAAGG,aACbh/B,EAAOu/B,EAAMviF,QACbkrF,EAAgBloC,EAAKulC,UACrB1mC,EAAQ0gC,EAAM1gC,MACdl3B,EAAS43D,EAAMv3E,KAAK2f,OAEpBwgE,EAAUtpC,EAAMkuC,QAChB3E,EAAUvpC,EAAMmuC,QAGhBC,EAAoBjtC,EAAKknC,WACzBgG,EAAWrH,EAAI1kC,OAAS,EAAItC,EAAMsuC,8BAA8B3N,EAAQx3E,KAAK5F,IAC7E8kF,EAAarI,EAAG4N,QAAQrqF,GACxB+kF,EAAWD,GAAcrB,EAAI1kC,OAAS,EAAI09B,EAAG8N,QAAQvqF,IAErDgrF,EAAclF,EAAczC,aAAe,EAAI5mC,EAAMsuC,8BAA8B3N,EAAQx3E,KAAK5F,IAEpG84E,EAAQ9qD,OAAOy1D,EAAK,CAEnB7F,cAAenB,EAAGz8E,MAClB69E,OAAQ79E,EACR+mF,OAAQtqC,EAGRqhC,OAAQ,CACP1tD,EAAG21D,EACHzxC,EAAG0xC,EACHT,YAAa,EACbD,YAAazI,EAAQmO,EAAcF,EACnChG,WAAYjI,GAASiJ,EAAc1C,cAAgByH,EAAoB/F,EACvEC,SAAUlI,GAASiJ,EAAc1C,cAAgByH,EAAoB9F,EACrE19D,MAAOyxD,EAAQkF,sBAAsBz4D,EAAQvlB,EAAOulB,EAAOvlB,OAK7D,IAAIkmF,EAAcroF,KAAKs/E,MAAMviF,QAAQ4jD,SAASilC,IAC1CpG,EAASoG,EAAIpG,QAAU,GACvB4D,EAAiBnI,EAAQkF,sBACzBI,EAAQqF,EAAI3F,OAEhBM,EAAMj/D,gBAAkBk+D,EAAOl+D,gBAAkBk+D,EAAOl+D,gBAAkB8hE,EAAe7D,EAAQj+D,gBAAiBnf,EAAOkmF,EAAY/mE,iBACrIi/D,EAAMrxC,YAAcswC,EAAOtwC,YAAcswC,EAAOtwC,YAAck0C,EAAe7D,EAAQrwC,YAAa/sC,EAAOkmF,EAAYn5C,aACrHqxC,EAAMH,YAAcZ,EAAOY,YAAcZ,EAAOY,YAAcgD,EAAe7D,EAAQa,YAAaj+E,EAAOkmF,EAAYjI,aAErHwF,EAAItF,SAGLsM,qBAAsB,WACrB,IAAIrN,EAAUv/E,KAAK++E,aACfJ,EAAO3+E,KAAK6+E,UACZzrD,EAAQ,EAQZ,OANA6nD,EAAQj4D,KAAK27D,EAAK52E,MAAM,SAASmb,EAAS/gB,GACpChC,MAAMo/E,EAAQx3E,KAAK5F,KAAY+gB,EAAQg+B,QAC3C9tB,OAIKA,GAMRy5D,cAAe,SAAS1qF,GACvB,IAAIy8E,EAAK5+E,KACLozB,EAAQpzB,KAAK6+E,UAAUzrD,MACvBmsD,EAAUX,EAAGG,aACbJ,EAAOC,EAAGC,UAEd,GAAI1+E,MAAMo/E,EAAQx3E,KAAK5F,KAAWw8E,EAAK52E,KAAK5F,GAAO++C,OAClD,OAAO,EAIR,IAAIsgB,EAAU,CACb8d,MAAOV,EAAGU,MACV8F,UAAWjjF,EACXo9E,QAASA,EACTnB,aAAcQ,EAAGz8E,OAGlB,OAAO84E,EAAQl+E,QAAQooF,QAAQ,CAC9BvG,EAAGU,MAAMviF,QAAQ4jD,SAASilC,IAAI0G,MAC7B,EAAI3wF,KAAKm4C,GAAM1gB,GACdouC,EAASr/D,QAKb,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKirF,GAAG,CAAC,SAAS/yB,EAAQ5gE,EAAOD,GAGzD,IAAI6nC,EAAWg5B,EAAQ,IACnB1Z,EAAW0Z,EAAQ,IACnB4gB,EAAU5gB,EAAQ,IAEtBh5B,EAASi8C,KAAK,QAAS,CACtB1+B,MAAO,CACN96C,KAAM,gBAEP68C,SAAU,CACTmoC,KAAM,CACL5tC,QAAS,MAKZzhD,EAAOD,QAAU,SAAS+uE,GAEzBA,EAAM+V,YAAY+O,MAAQ9kB,EAAMiW,kBAAkBruD,OAAO,CAExD44D,mBAAoBpoC,EAASm8B,KAE7B2B,gBAAiB99B,EAASojC,MAE1B2C,WAAYzL,EAAQ0L,KAEpB5wB,OAAQ,SAASipB,GAChB,IAAIJ,EAAK5+E,KACL2+E,EAAOC,EAAGC,UACViK,EAAOnK,EAAKY,QACZyE,EAASrF,EAAK52E,KACdy3E,EAASsJ,EAAKtJ,QAAU,GACxBD,EAAUX,EAAGG,aACbiK,EAAqBpK,EAAGU,MAAMviF,QAAQ4jD,SAASmoC,KAC/ClqC,EAAQggC,EAAGU,MAAM1gC,WAGIjhD,IAApB4hF,EAAQrkC,cAAmDv9C,IAAxB4hF,EAAQ0J,cAC/C1J,EAAQ0J,YAAc1J,EAAQrkC,SAG/B+/B,EAAQ9qD,OAAOwuD,EAAKY,QAAS,CAE5BQ,cAAenB,EAAGz8E,MAClB+mF,OAAQtqC,EAERuqC,UAAWnF,EACXsJ,OAAO,EAEPrN,OAAQ,CAEP/kC,QAASskC,EAAOtkC,QAAUskC,EAAOtkC,QAAU+/B,EAAQmI,eAAe7D,EAAQ0J,YAAaD,EAAmB9tC,SAC1G55B,gBAAiBk+D,EAAOl+D,gBAAkBk+D,EAAOl+D,gBAAmBi+D,EAAQj+D,iBAAmB0nE,EAAmB1nE,gBAClH8+D,YAAaZ,EAAOY,YAAcZ,EAAOY,YAAeb,EAAQa,aAAe4I,EAAmB5I,YAClGlxC,YAAaswC,EAAOtwC,YAAcswC,EAAOtwC,YAAeqwC,EAAQrwC,aAAe85C,EAAmB95C,YAClG0D,KAAM4sC,EAAO5sC,KAAO4sC,EAAO5sC,UAAyBj1C,IAAjB4hF,EAAQ3sC,KAAqB2sC,EAAQ3sC,KAAOo2C,EAAmBp2C,KAClGw2C,eAAgB5J,EAAO4J,eAAiB5J,EAAO4J,eAAkB7J,EAAQ6J,gBAAkBJ,EAAmBI,eAC9GC,WAAY7J,EAAO6J,WAAa7J,EAAO6J,WAAc9J,EAAQ8J,YAAcL,EAAmBK,WAC9FC,iBAAkB9J,EAAO8J,iBAAmB9J,EAAO8J,iBAAoB/J,EAAQ+J,kBAAoBN,EAAmBM,iBACtHC,gBAAiB/J,EAAO+J,gBAAkB/J,EAAO+J,gBAAmBhK,EAAQgK,iBAAmBP,EAAmBO,mBAIpH5K,EAAKY,QAAQe,QAGbrF,EAAQj4D,KAAKghE,GAAQ,SAASlzE,EAAO3O,GACpCy8E,EAAGS,cAAcvuE,EAAO3O,EAAO68E,KAC7BJ,GAGHA,EAAG+K,6BAEJtK,cAAe,SAASvuE,EAAO3O,EAAO68E,GACrC,IAAIJ,EAAK5+E,KACLw/E,EAAS1uE,EAAM0uE,QAAU,GACzBD,EAAUX,EAAGG,aACbngC,EAAQggC,EAAGU,MAAM1gC,MACjB2uC,EAAsB3O,EAAGU,MAAMviF,QAAQ4jD,SAAS7vC,MAChD08E,EAAgB5uC,EAAM6uC,yBAAyBtrF,EAAOo9E,EAAQx3E,KAAK5F,SAG/CxE,IAAnB4hF,EAAQmF,aAAkD/mF,IAAxB4hF,EAAQ8K,cAC9C9K,EAAQ8K,YAAc9K,EAAQmF,aAEJ/mF,IAAtB4hF,EAAQgF,gBAAwD5mF,IAA3B4hF,EAAQ+K,iBACjD/K,EAAQ+K,eAAiB/K,EAAQgF,WAGlCtJ,EAAQ9qD,OAAOrf,EAAO,CAErBivE,cAAenB,EAAGz8E,MAClB69E,OAAQ79E,EACR+mF,OAAQtqC,EAGRqhC,OAAQ,CACP1tD,EAAGysD,EAAQpgC,EAAMkuC,QAAUU,EAAcj7D,EACzCkkB,EAAGuoC,EAAQpgC,EAAMmuC,QAAUS,EAAc/2C,EAGzCyE,QAASskC,EAAOtkC,QAAUskC,EAAOtkC,QAAU+/B,EAAQmI,eAAe7D,EAAQ0J,YAAarK,EAAGU,MAAMviF,QAAQ4jD,SAASmoC,KAAK5tC,SACtHwpC,OAAQlF,EAAOkF,OAASlF,EAAOkF,OAASzJ,EAAQkF,sBAAsBZ,EAAQ8K,YAAaloF,EAAOorF,EAAoB7I,QACtHpjE,gBAAiBk+D,EAAOl+D,gBAAkBk+D,EAAOl+D,gBAAkB25D,EAAQkF,sBAAsBZ,EAAQsK,qBAAsB1nF,EAAOorF,EAAoBjsE,iBAC1J4tB,YAAaswC,EAAOtwC,YAAcswC,EAAOtwC,YAAc+rC,EAAQkF,sBAAsBZ,EAAQwK,iBAAkB5nF,EAAOorF,EAAoBr+C,aAC1IkxC,YAAaZ,EAAOY,YAAcZ,EAAOY,YAAcnF,EAAQkF,sBAAsBZ,EAAQ0K,iBAAkB9nF,EAAOorF,EAAoBnN,aAC1IoE,WAAYhF,EAAOgF,WAAahF,EAAOgF,WAAavJ,EAAQkF,sBAAsBZ,EAAQiF,WAAYriF,EAAOorF,EAAoB/I,YACjIC,SAAUjF,EAAOiF,SAAWjF,EAAOiF,SAAWxJ,EAAQkF,sBAAsBZ,EAAQ4K,cAAehoF,EAAOorF,EAAoB9I,UAG9HF,UAAW/E,EAAO+E,UAAY/E,EAAO+E,UAAYtJ,EAAQkF,sBAAsBZ,EAAQ+K,eAAgBnoF,EAAOorF,EAAoBhJ,cAIpIzzE,EAAMmvE,OAAO0E,KAAOnF,EAAOmF,KAAOnF,EAAOmF,KAAQxkF,MAAM2Q,EAAMmvE,OAAO1tD,IAAMpyB,MAAM2Q,EAAMmvE,OAAOxpC,IAE9FkzC,0BAA2B,WAC1B,IAAIlG,EAAYzjF,KAAKs/E,MAAMmE,UACvB9E,EAAO3+E,KAAK6+E,UAEhB5D,EAAQj4D,KAAK27D,EAAK52E,MAAM,SAAS+I,EAAO3O,GACvC,IAAIo+E,EAAQzvE,EAAMmvE,OACd4K,EAAgB5P,EAAQiQ,YAC3BjQ,EAAQkQ,aAAaxM,EAAK52E,KAAM5F,GAAO,GAAM89E,OAC7CM,EACAtF,EAAQmQ,SAASzM,EAAK52E,KAAM5F,GAAO,GAAM89E,OACzCM,EAAMrlC,SAIPqlC,EAAM8K,sBAAwB1vF,KAAKyK,IAAIzK,KAAKoD,IAAI8rF,EAAcS,SAAS/4D,EAAGkxD,EAAU/yD,OAAQ+yD,EAAUhgE,MACtG88D,EAAMgL,sBAAwB5vF,KAAKyK,IAAIzK,KAAKoD,IAAI8rF,EAAcS,SAAS70C,EAAGgtC,EAAU7zB,QAAS6zB,EAAUjgE,KAEvG+8D,EAAMiL,kBAAoB7vF,KAAKyK,IAAIzK,KAAKoD,IAAI8rF,EAAcx0E,KAAKkc,EAAGkxD,EAAU/yD,OAAQ+yD,EAAUhgE,MAC9F88D,EAAMkL,kBAAoB9vF,KAAKyK,IAAIzK,KAAKoD,IAAI8rF,EAAcx0E,KAAKogC,EAAGgtC,EAAU7zB,QAAS6zB,EAAUjgE,KAG/F1S,EAAMwvE,YAIRsE,cAAe,SAAS9zE,GAEvB,IAAIyuE,EAAUv/E,KAAKs/E,MAAMv3E,KAAKo2E,SAASrtE,EAAMivE,eACzCP,EAAS1uE,EAAM0uE,QAAU,GACzBr9E,EAAQ2O,EAAMkvE,OACdO,EAAQzvE,EAAMmvE,OAElBnvE,EAAM+zE,eAAiB,CACtBvjE,gBAAiBi/D,EAAMj/D,gBACvB4tB,YAAaqxC,EAAMrxC,YACnBkxC,YAAaG,EAAMH,YACnBsE,OAAQnE,EAAMmE,QAGfnE,EAAMmE,OAASlF,EAAO0F,YAAc1F,EAAO0F,YAAcjK,EAAQkF,sBAAsBZ,EAAQwM,iBAAkB5pF,EAAOnC,KAAKs/E,MAAMviF,QAAQ4jD,SAAS7vC,MAAMo0E,aAC1J3E,EAAMj/D,gBAAkBk+D,EAAOsF,qBAAuBtF,EAAOsF,qBAAuB7J,EAAQkF,sBAAsBZ,EAAQqM,0BAA2BzpF,EAAO84E,EAAQ8J,cAAcxE,EAAMj/D,kBACxLi/D,EAAMrxC,YAAcswC,EAAOwF,iBAAmBxF,EAAOwF,iBAAmB/J,EAAQkF,sBAAsBZ,EAAQsM,sBAAuB1pF,EAAO84E,EAAQ8J,cAAcxE,EAAMrxC,cACxKqxC,EAAMH,YAAcZ,EAAOyF,iBAAmBzF,EAAOyF,iBAAmBhK,EAAQkF,sBAAsBZ,EAAQuM,sBAAuB3pF,EAAOo+E,EAAMH,kBAKnJ,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKsN,GAAG,CAAC,SAASrzB,EAAQ5gE,EAAOD,GAG1C6gE,EAAQ,IAEdijB,KAAK,UAAW,CACxB98D,MAAO,CACN3lB,KAAM,UAGP0iF,OAAQ,CACPC,MAAO,CAAC,CACP56E,GAAI,WACJkB,KAAM,SACN4O,SAAU,WAEXmrE,MAAO,CAAC,CACPj7E,GAAI,WACJkB,KAAM,SACN4O,SAAU,UAIZg2E,WAAW,EAEX1K,SAAU,CACTC,UAAW,CACV7mB,MAAO,WACN,MAAO,IAER5tC,MAAO,SAASua,GACf,MAAO,IAAMA,EAAKs6C,OAAS,KAAOt6C,EAAKm6C,OAAS,SAMpDzkF,EAAOD,QAAU,SAAS+uE,GAGzBA,EAAM+V,YAAYqP,QAAUplB,EAAM+V,YAAYwK,OAI7C,CAAC,GAAK,KAAK8E,GAAG,CAAC,SAASvzB,EAAQ5gE,EAAOD,GAGzC,IAAI6wD,EAAUgQ,EAAQ,IAElB7gE,EAAUC,EAAOD,QAAU6wD,EAAQl6B,OAAO,CAC7CmvD,MAAO,KACPuO,YAAa,EACbC,SAAU,GACVnuD,OAAQ,GACR5W,OAAQ,KAERglE,oBAAqB,KACrBC,oBAAqB,OAWtB5zF,OAAOC,eAAeb,EAAQ8B,UAAW,kBAAmB,CAC3Df,IAAK,WACJ,OAAOyF,QAUT5F,OAAOC,eAAeb,EAAQ8B,UAAW,gBAAiB,CACzDf,IAAK,WACJ,OAAOyF,KAAKs/E,OAEbr8E,IAAK,SAAStI,GACbqF,KAAKs/E,MAAQ3kF,MAIb,CAAC,GAAK,KAAKszF,GAAG,CAAC,SAAS5zB,EAAQ5gE,EAAOD,GAIzC,IAAI6nC,EAAWg5B,EAAQ,IACnB4gB,EAAU5gB,EAAQ,IAEtBh5B,EAASi8C,KAAK,SAAU,CACvBgI,UAAW,CACVnpD,SAAU,IACVwD,OAAQ,eACRuuD,WAAYjT,EAAQ0L,KACpBwH,WAAYlT,EAAQ0L,QAItBltF,EAAOD,QAAU,CAChB40F,cAAe,GACfC,WAAY,GACZC,WAAY,EACZC,QAAS,KAQTC,aAAc,SAASlP,EAAOgG,EAAWnpD,EAAUsyD,GAClD,IACI/0F,EAAGulF,EADHoP,EAAaruF,KAAKquF,WAStB,IANA/I,EAAUhG,MAAQA,EAEbmP,IACJnP,EAAMoP,WAAY,GAGdh1F,EAAI,EAAGulF,EAAOoP,EAAWnsF,OAAQxI,EAAIulF,IAAQvlF,EACjD,GAAI20F,EAAW30F,GAAG4lF,QAAUA,EAE3B,YADA+O,EAAW30F,GAAK4rF,GAKlB+I,EAAWnvF,KAAKomF,GAGU,IAAtB+I,EAAWnsF,QACdlC,KAAKihD,yBAIP0tC,gBAAiB,SAASrP,GACzB,IAAIn9E,EAAQ84E,EAAQv4E,UAAU1C,KAAKquF,YAAY,SAAS/I,GACvD,OAAOA,EAAUhG,QAAUA,MAGb,IAAXn9E,IACHnC,KAAKquF,WAAW1xE,OAAOxa,EAAO,GAC9Bm9E,EAAMoP,WAAY,IAIpBztC,sBAAuB,WACtB,IAAI29B,EAAK5+E,KACU,OAAf4+E,EAAG2P,UAIN3P,EAAG2P,QAAUtT,EAAQ2T,iBAAiB/0F,KAAKiC,QAAQ,WAClD8iF,EAAG2P,QAAU,KACb3P,EAAGiQ,mBAQNA,YAAa,WACZ,IAAIjQ,EAAK5+E,KACLunC,EAAY9zB,KAAKk1B,MACjBmmD,EAAe,EAEflQ,EAAG0P,WAAa,IACnBQ,EAAenzF,KAAKuE,MAAM0+E,EAAG0P,YAC7B1P,EAAG0P,WAAa1P,EAAG0P,WAAa,GAGjC1P,EAAGmQ,QAAQ,EAAID,GAEf,IAAIrnD,EAAUh0B,KAAKk1B,MAEnBi2C,EAAG0P,aAAe7mD,EAAUF,GAAaq3C,EAAGwP,cAGxCxP,EAAGyP,WAAWnsF,OAAS,GAC1B08E,EAAG39B,yBAOL8tC,QAAS,SAAS37D,GAKjB,IAJA,IACIkyD,EAAWhG,EADX+O,EAAaruF,KAAKquF,WAElB30F,EAAI,EAEDA,EAAI20F,EAAWnsF,QAErBo9E,GADAgG,EAAY+I,EAAW30F,IACL4lF,MAElBgG,EAAUuI,aAAevI,EAAUuI,aAAe,GAAKz6D,EACvDkyD,EAAUuI,YAAclyF,KAAKoD,IAAIumF,EAAUuI,YAAavI,EAAUwI,UAElE7S,EAAQzuC,SAAS84C,EAAUv8D,OAAQ,CAACu2D,EAAOgG,GAAYhG,GACvDrE,EAAQzuC,SAAS84C,EAAUyI,oBAAqB,CAACzI,GAAYhG,GAEzDgG,EAAUuI,aAAevI,EAAUwI,UACtC7S,EAAQzuC,SAAS84C,EAAU0I,oBAAqB,CAAC1I,GAAYhG,GAC7DA,EAAMoP,WAAY,EAClBL,EAAW1xE,OAAOjjB,EAAG,MAEnBA,KAMJ,CAAC,GAAK,GAAG,GAAK,KAAKs1F,GAAG,CAAC,SAAS30B,EAAQ5gE,EAAOD,GAGjD,IAAI0hF,EAAY7gB,EAAQ,IACpBg0B,EAAah0B,EAAQ,IACrBh5B,EAAWg5B,EAAQ,IACnB4gB,EAAU5gB,EAAQ,IAClB+gB,EAAc/gB,EAAQ,IACtBghB,EAAUhhB,EAAQ,IAClBihB,EAAWjhB,EAAQ,IACnBkhB,EAAUlhB,EAAQ,IAClBohB,EAAephB,EAAQ,IACvBshB,EAAUthB,EAAQ,IAEtB5gE,EAAOD,QAAU,SAAS+uE,GAoCzB,SAAS0mB,EAAa3P,GACrB,IAAIz3C,EAAay3C,EAAMviF,QAEvBk+E,EAAQj4D,KAAKs8D,EAAM/B,QAAQ,SAAS3+B,GACnCy8B,EAAQ6T,UAAU5P,EAAO1gC,MAG1B/W,EAAaozC,EAAQkU,YACpB5mB,EAAMlnC,SAASrlC,OACfusE,EAAMlnC,SAASi+C,EAAM9C,OAAO14E,MAC5B+jC,GAEDy3C,EAAMviF,QAAUuiF,EAAM9C,OAAOz/E,QAAU8qC,EACvCy3C,EAAM8P,sBACN9P,EAAM+P,sBAEN/P,EAAMgQ,QAAQhL,SAAWz8C,EAAWm2C,SACpCsB,EAAMgQ,QAAQ1T,aAGf,SAAS2T,EAAqB78E,GAC7B,MAAoB,QAAbA,GAAmC,WAAbA,EAtD9B61D,EAAMinB,MAAQ,GAIdjnB,EAAM95B,UAAY,GAGlB85B,EAAM+V,YAAc,GAkDpBrD,EAAQ9qD,OAAOo4C,EAAMjtE,UAA+B,CAInDm0F,UAAW,SAAS1rD,EAAMy4C,GACzB,IAAIoC,EAAK5+E,KAETw8E,EApDF,SAAoBA,GAKnB,IAAIz0E,GAJJy0E,EAASA,GAAU,IAIDz0E,KAAOy0E,EAAOz0E,MAAQ,GASxC,OARAA,EAAKo2E,SAAWp2E,EAAKo2E,UAAY,GACjCp2E,EAAK2f,OAAS3f,EAAK2f,QAAU,GAE7B80D,EAAOz/E,QAAUk+E,EAAQkU,YACxB9tD,EAASrlC,OACTqlC,EAASm7C,EAAO14E,MAChB04E,EAAOz/E,SAAW,IAEZy/E,EAsCGkT,CAAWlT,GAEpB,IAAIhb,EAAU8Z,EAASqU,eAAe5rD,EAAMy4C,GACxCJ,EAAS5a,GAAWA,EAAQ4a,OAC5Bl7D,EAASk7D,GAAUA,EAAOl7D,OAC1BD,EAAQm7D,GAAUA,EAAOn7D,MAE7B29D,EAAGh8E,GAAKq4E,EAAQ5+E,MAChBuiF,EAAG4E,IAAMhiB,EACTod,EAAGxC,OAASA,EACZwC,EAAGpC,OAASA,EACZoC,EAAG39D,MAAQA,EACX29D,EAAG19D,OAASA,EACZ09D,EAAGgR,YAAc1uE,EAASD,EAAQC,EAAS,KAC3C09D,EAAG7hF,QAAUy/E,EAAOz/E,QACpB6hF,EAAGiR,iBAAkB,EAUrBjR,EAAGU,MAAQV,EACXA,EAAGgE,WAAahE,EAGhBrW,EAAM95B,UAAUmwC,EAAGh8E,IAAMg8E,EAGzBxkF,OAAOC,eAAeukF,EAAI,OAAQ,CACjCrkF,IAAK,WACJ,OAAOqkF,EAAGpC,OAAOz0E,MAElB9E,IAAK,SAAStI,GACbikF,EAAGpC,OAAOz0E,KAAOpN,KAId6mE,GAAY4a,GASjBwC,EAAGhD,aACHgD,EAAG7oB,UALFn4B,QAAQzhC,MAAM,sEAWhBy/E,WAAY,WACX,IAAIgD,EAAK5+E,KAsBT,OAnBAu7E,EAAQjkB,OAAOsnB,EAAI,cAEnB3D,EAAQ6U,YAAYlR,EAAIA,EAAG7hF,QAAQgzF,kBAEnCnR,EAAG/xC,aAEC+xC,EAAG7hF,QAAQizF,YAEdpR,EAAG5mD,QAAO,GAIX4mD,EAAGwQ,sBACHxQ,EAAGyQ,sBACHzQ,EAAGqR,cAGH1U,EAAQjkB,OAAOsnB,EAAI,aAEZA,GAGRloB,MAAO,WAEN,OADAukB,EAAQmB,OAAO1lB,MAAM12D,MACdA,MAGRihC,KAAM,WAGL,OADAotD,EAAWM,gBAAgB3uF,MACpBA,MAGRg4B,OAAQ,SAASk4D,GAChB,IAAItR,EAAK5+E,KACLjD,EAAU6hF,EAAG7hF,QACbq/E,EAASwC,EAAGxC,OACZwT,EAAe7yF,EAAQozF,qBAAuBvR,EAAGgR,aAAgB,KAMjEQ,EAAWz0F,KAAKyK,IAAI,EAAGzK,KAAKuE,MAAM+6E,EAAQoV,gBAAgBjU,KAC1DkU,EAAY30F,KAAKyK,IAAI,EAAGzK,KAAKuE,MAAM0vF,EAAcQ,EAAWR,EAAc3U,EAAQsV,iBAAiBnU,KAEvG,IAAIwC,EAAG39D,QAAUmvE,GAAYxR,EAAG19D,SAAWovE,KAI3ClU,EAAOn7D,MAAQ29D,EAAG39D,MAAQmvE,EAC1BhU,EAAOl7D,OAAS09D,EAAG19D,OAASovE,EAC5BlU,EAAO/2E,MAAM4b,MAAQmvE,EAAW,KAChChU,EAAO/2E,MAAM6b,OAASovE,EAAY,KAElCrV,EAAQ6U,YAAYlR,EAAI7hF,EAAQgzF,mBAE3BG,GAAQ,CAEZ,IAAIM,EAAU,CAACvvE,MAAOmvE,EAAUlvE,OAAQovE,GACxC/U,EAAQjkB,OAAOsnB,EAAI,SAAU,CAAC4R,IAG1B5R,EAAG7hF,QAAQ0zF,UACd7R,EAAG7hF,QAAQ0zF,SAAS7R,EAAI4R,GAGzB5R,EAAG39C,OACH29C,EAAG7oB,OAAO,CACT55B,SAAUyiD,EAAG7hF,QAAQ2zF,gCAKxBtB,oBAAqB,WACpB,IAAIryF,EAAUiD,KAAKjD,QACf4zF,EAAgB5zF,EAAQwgF,QAAU,GAClCqT,EAAe7zF,EAAQ6hD,MAE3Bq8B,EAAQj4D,KAAK2tE,EAAcnT,OAAO,SAASqT,EAAc1uF,GACxD0uF,EAAajuF,GAAKiuF,EAAajuF,IAAO,UAAYT,KAGnD84E,EAAQj4D,KAAK2tE,EAAc9S,OAAO,SAASiT,EAAc3uF,GACxD2uF,EAAaluF,GAAKkuF,EAAaluF,IAAO,UAAYT,KAG/CyuF,IACHA,EAAahuF,GAAKguF,EAAahuF,IAAM,UAOvCysF,oBAAqB,WACpB,IAAIzQ,EAAK5+E,KACLjD,EAAU6hF,EAAG7hF,QACbwgF,EAASqB,EAAGrB,QAAU,GACtBwT,EAAQ,GACRC,EAAU52F,OAAOuI,KAAK46E,GAAQ5qC,QAAO,SAASiT,EAAKhjD,GAEtD,OADAgjD,EAAIhjD,IAAM,EACHgjD,IACL,IAEC7oD,EAAQwgF,SACXwT,EAAQA,EAAM/sF,QACZjH,EAAQwgF,OAAOC,OAAS,IAAIn7E,KAAI,SAASwuF,GACzC,MAAO,CAAC9zF,QAAS8zF,EAAcI,MAAO,WAAYC,UAAW,cAE7Dn0F,EAAQwgF,OAAOM,OAAS,IAAIx7E,KAAI,SAASyuF,GACzC,MAAO,CAAC/zF,QAAS+zF,EAAcG,MAAO,SAAUC,UAAW,aAK1Dn0F,EAAQ6hD,OACXmyC,EAAM7xF,KAAK,CACVnC,QAASA,EAAQ6hD,MACjBqyC,MAAO,eACPE,WAAW,EACXD,UAAW,cAIbjW,EAAQj4D,KAAK+tE,GAAO,SAAShtD,GAC5B,IAAI6sD,EAAe7sD,EAAKhnC,QACpB6F,EAAKguF,EAAahuF,GAClBwuF,EAAYnW,EAAQmI,eAAewN,EAAa9sF,KAAMigC,EAAKktD,OAE3D1B,EAAqBqB,EAAal+E,YAAc68E,EAAqBxrD,EAAKmtD,aAC7EN,EAAal+E,SAAWqxB,EAAKmtD,WAG9BF,EAAQpuF,IAAM,EACd,IAAIg8C,EAAQ,KACZ,GAAIh8C,KAAM26E,GAAUA,EAAO36E,GAAIkB,OAASstF,GACvCxyC,EAAQ2+B,EAAO36E,IACT7F,QAAU6zF,EAChBhyC,EAAM4kC,IAAM5E,EAAG4E,IACf5kC,EAAM0gC,MAAQV,MACR,CACN,IAAIyS,EAAa5V,EAAa6V,oBAAoBF,GAClD,IAAKC,EACJ,OAEDzyC,EAAQ,IAAIyyC,EAAW,CACtBzuF,GAAIA,EACJkB,KAAMstF,EACNr0F,QAAS6zF,EACTpN,IAAK5E,EAAG4E,IACRlE,MAAOV,IAERrB,EAAO3+B,EAAMh8C,IAAMg8C,EAGpBA,EAAM2yC,oBAKFxtD,EAAKotD,YACRvS,EAAGhgC,MAAQA,MAIbq8B,EAAQj4D,KAAKguE,GAAS,SAASQ,EAAY5uF,GACrC4uF,UACGjU,EAAO36E,MAIhBg8E,EAAGrB,OAASA,EAEZ9B,EAAagW,kBAAkBzxF,OAGhC0xF,yBAA0B,WACzB,IAAI9S,EAAK5+E,KACLwvF,EAAQ,GACRmC,EAAiB,GA4BrB,OA1BA1W,EAAQj4D,KAAK47D,EAAG72E,KAAKo2E,UAAU,SAASoB,EAASnB,GAChD,IAAIO,EAAOC,EAAG+C,eAAevD,GACzBt6E,EAAOy7E,EAAQz7E,MAAQ86E,EAAGpC,OAAO14E,KAUrC,GARI66E,EAAK76E,MAAQ66E,EAAK76E,OAASA,IAC9B86E,EAAGgT,mBAAmBxT,GACtBO,EAAOC,EAAG+C,eAAevD,IAE1BO,EAAK76E,KAAOA,EAEZ0rF,EAAMtwF,KAAKy/E,EAAK76E,MAEZ66E,EAAKiE,WACRjE,EAAKiE,WAAWiP,YAAYzT,GAC5BO,EAAKiE,WAAW8D,iBACV,CACN,IAAIoL,EAAkBvpB,EAAM+V,YAAYK,EAAK76E,MAC7C,QAAwBnG,IAApBm0F,EACH,MAAM,IAAIn8C,MAAM,IAAMgpC,EAAK76E,KAAO,0BAGnC66E,EAAKiE,WAAa,IAAIkP,EAAgBlT,EAAIR,GAC1CuT,EAAezyF,KAAKy/E,EAAKiE,eAExBhE,GAEI+S,GAORI,cAAe,WACd,IAAInT,EAAK5+E,KACTi7E,EAAQj4D,KAAK47D,EAAG72E,KAAKo2E,UAAU,SAASoB,EAASnB,GAChDQ,EAAG+C,eAAevD,GAAcwE,WAAW5D,UACzCJ,IAMJI,MAAO,WACNh/E,KAAK+xF,gBACL/xF,KAAKsvF,QAAQ1T,cAGd7lB,OAAQ,SAASymB,GAChB,IAAIoC,EAAK5+E,KAgBT,GAdKw8E,GAA4B,WAAlB,EAAOA,KAErBA,EAAS,CACRrgD,SAAUqgD,EACViS,KAAM/pF,UAAU,KAIlBuqF,EAAarQ,GAIbrD,EAAQyW,YAAYpT,IAEuB,IAAvCrD,EAAQjkB,OAAOsnB,EAAI,gBAAvB,CAKAA,EAAG0Q,QAAQ2C,MAAQrT,EAAG72E,KAGtB,IAAI4pF,EAAiB/S,EAAG8S,2BAGxBzW,EAAQj4D,KAAK47D,EAAG72E,KAAKo2E,UAAU,SAASoB,EAASnB,GAChDQ,EAAG+C,eAAevD,GAAcwE,WAAWsP,0BACzCtT,GAEHA,EAAGuT,eAGCvT,EAAG7hF,QAAQuoF,WAAa1G,EAAG7hF,QAAQuoF,UAAUnpD,UAChD8+C,EAAQj4D,KAAK2uE,GAAgB,SAAS/O,GACrCA,EAAW5D,WAIbJ,EAAGwT,iBAIHxT,EAAG0Q,QAAQ1T,aAIXgD,EAAGyT,WAAa,GAGhB9W,EAAQjkB,OAAOsnB,EAAI,eAEfA,EAAGiR,gBACNjR,EAAG0T,iBAAmB,CACrBn2D,SAAUqgD,EAAOrgD,SACjBwD,OAAQ68C,EAAO78C,OACf8uD,KAAMjS,EAAOiS,MAGd7P,EAAG71D,OAAOyzD,KASZ2V,aAAc,YAG8B,IAAvC5W,EAAQjkB,OAFHt3D,KAEc,kBAIvBq7E,EAAQtlB,OAAO/1D,KAAMA,KAAKihB,MAAOjhB,KAAKkhB,QAStCq6D,EAAQjkB,OAfCt3D,KAeU,oBACnBu7E,EAAQjkB,OAhBCt3D,KAgBU,iBAQpBoyF,eAAgB,WAGf,IAAmD,IAA/C7W,EAAQjkB,OAFHt3D,KAEc,wBAAvB,CAIA,IAAK,IAAItG,EAAI,EAAGulF,EANPj/E,KAMiB+H,KAAKo2E,SAASj8E,OAAQxI,EAAIulF,IAAQvlF,EANnDsG,KAOLuyF,cAAc74F,GAGlB6hF,EAAQjkB,OAVCt3D,KAUU,yBAQpBuyF,cAAe,SAASpwF,GACvB,IACIw8E,EADK3+E,KACK2hF,eAAex/E,GACzBiO,EAAO,CACVuuE,KAAMA,EACNx8E,MAAOA,IAGkD,IAAtDo5E,EAAQjkB,OAPHt3D,KAOc,sBAAuB,CAACoQ,MAI/CuuE,EAAKiE,WAAW7sB,SAEhBwlB,EAAQjkB,OAbCt3D,KAaU,qBAAsB,CAACoQ,MAG3C2Y,OAAQ,SAASyzD,GAChB,IAAIoC,EAAK5+E,KAEJw8E,GAA4B,WAAlB,EAAOA,KAErBA,EAAS,CACRrgD,SAAUqgD,EACViS,KAAM/pF,UAAU,KAIlB,IAAIy3B,EAAWqgD,EAAOrgD,SAClBsyD,EAAOjS,EAAOiS,KAElB,IAA2C,IAAvClT,EAAQjkB,OAAOsnB,EAAI,gBAAvB,CAIA,IAAI4T,EAAmB5T,EAAG7hF,QAAQuoF,UAC9B6I,EAAa,SAAS7I,GACzB/J,EAAQjkB,OAAOsnB,EAAI,eACnB3D,EAAQzuC,SAASgmD,GAAoBA,EAAiBrE,WAAY,CAAC7I,GAAY1G,IAGhF,GAAI4T,SAA0C,IAAbr2D,GAAyC,IAAbA,QAAwC,IAAbA,GAA0D,IAA9Bq2D,EAAiBr2D,UAAkB,CACtJ,IAAImpD,EAAY,IAAIpK,EAAU,CAC7B4S,UAAW3xD,GAAYq2D,EAAiBr2D,UAAY,MACpDwD,OAAQ68C,EAAO78C,QAAU6yD,EAAiB7yD,OAE1C5W,OAAQ,SAASu2D,EAAOmT,GACvB,IAAIC,EAAiBzX,EAAQt7C,OAAOiM,QAAQ6mD,EAAgB9yD,QACxDkuD,EAAc4E,EAAgB5E,YAC9B8E,EAAc9E,EAAc4E,EAAgB3E,SAEhDxO,EAAMgE,KAAKoP,EAAeC,GAAcA,EAAa9E,IAGtDE,oBAAqByE,EAAiBtE,WACtCF,oBAAqBG,IAGtBE,EAAWG,aAAa5P,EAAI0G,EAAWnpD,EAAUsyD,QAEjD7P,EAAG0E,OAGH6K,EAAW,IAAIjT,EAAU,CAAC4S,SAAU,EAAGxO,MAAOV,KAG/C,OAAOA,IAGR0E,KAAM,SAASsP,GACd,IAAIhU,EAAK5+E,KAET4+E,EAAGloB,QAECukB,EAAQiH,cAAc0Q,KACzBA,EAAc,GAGfhU,EAAG31C,WAAW2pD,GAEVhU,EAAG39D,OAAS,GAAK29D,EAAG19D,QAAU,IAIsB,IAApDq6D,EAAQjkB,OAAOsnB,EAAI,aAAc,CAACgU,MAKtC3X,EAAQj4D,KAAK47D,EAAGiU,OAAO,SAASh1D,GAC/BA,EAAIylD,KAAK1E,EAAG6E,aACV7E,GAECA,EAAGhgC,OACNggC,EAAGhgC,MAAM0kC,OAGV1E,EAAGkU,aAAaF,GAChBhU,EAAGmU,aAAaH,GAEhBrX,EAAQjkB,OAAOsnB,EAAI,YAAa,CAACgU,MAMlC3pD,WAAY,SAAS2pD,GAGpB,IAFA,IAESl5F,EAAI,EAAGulF,GAFPj/E,KAEkB+H,KAAKo2E,UAAY,IAAIj8E,OAAQxI,EAAIulF,IAAQvlF,EAF3DsG,KAGD4hF,iBAAiBloF,IAHhBsG,KAIJ2hF,eAAejoF,GAAGkpF,WAAW35C,WAAW2pD,GAJpC5yF,KAQNsvF,QAAQrmD,WAAW2pD,IAQvBE,aAAc,SAASF,GACtB,IAAIhU,EAAK5+E,KAET,IAAgE,IAA5Du7E,EAAQjkB,OAAOsnB,EAAI,qBAAsB,CAACgU,IAA9C,CAKA,IAAK,IAAIl5F,GAAKklF,EAAG72E,KAAKo2E,UAAY,IAAIj8E,OAAS,EAAGxI,GAAK,IAAKA,EACvDklF,EAAGgD,iBAAiBloF,IACvBklF,EAAGoU,YAAYt5F,EAAGk5F,GAIpBrX,EAAQjkB,OAAOsnB,EAAI,oBAAqB,CAACgU,MAQ1CI,YAAa,SAAS7wF,EAAOywF,GAC5B,IACIjU,EADK3+E,KACK2hF,eAAex/E,GACzBiO,EAAO,CACVuuE,KAAMA,EACNx8E,MAAOA,EACPywF,YAAaA,IAG0C,IAApDrX,EAAQjkB,OARHt3D,KAQc,oBAAqB,CAACoQ,MAI7CuuE,EAAKiE,WAAWU,KAAKsP,GAErBrX,EAAQjkB,OAdCt3D,KAcU,mBAAoB,CAACoQ,MAQzC2iF,aAAc,SAASH,GACtB,IACItD,EADKtvF,KACQsvF,QACbl/E,EAAO,CACVk/E,QAASA,EACTsD,YAAaA,IAG0C,IAApDrX,EAAQjkB,OAPHt3D,KAOc,oBAAqB,CAACoQ,MAI7Ck/E,EAAQhM,OAER/H,EAAQjkB,OAbCt3D,KAaU,mBAAoB,CAACoQ,MAKzC6iF,kBAAmB,SAASjqF,GAC3B,OAAOoyE,EAAY8X,MAAMC,OAAOnzF,KAAMgJ,IAGvCoqF,mBAAoB,SAASpqF,GAC5B,OAAOoyE,EAAY8X,MAAM1pE,MAAMxpB,KAAMgJ,EAAG,CAACqqF,WAAW,KAGrDC,mBAAoB,SAAStqF,GAC5B,OAAOoyE,EAAY8X,MAAM,UAAUlzF,KAAMgJ,EAAG,CAACqqF,WAAW,KAGzDE,0BAA2B,SAASvqF,EAAGnO,EAAMkC,GAC5C,IAAI0H,EAAS22E,EAAY8X,MAAMr4F,GAC/B,MAAsB,mBAAX4J,EACHA,EAAOzE,KAAMgJ,EAAGjM,GAGjB,IAGRy2F,kBAAmB,SAASxqF,GAC3B,OAAOoyE,EAAY8X,MAAM3T,QAAQv/E,KAAMgJ,EAAG,CAACqqF,WAAW,KAGvD1R,eAAgB,SAASvD,GACxB,IACImB,EADKv/E,KACQ+H,KAAKo2E,SAASC,GAC1BmB,EAAQkU,QACZlU,EAAQkU,MAAQ,IAGjB,IAAI9U,EAAOY,EAAQkU,MANVzzF,KAMmB4C,IAa5B,OAZK+7E,IACJA,EAAOY,EAAQkU,MARPzzF,KAQgB4C,IAAM,CAC7BkB,KAAM,KACNiE,KAAM,GACNw3E,QAAS,KACTqD,WAAY,KACZ1hC,OAAQ,KACR0+B,QAAS,KACTE,QAAS,OAIJnB,GAGRiJ,uBAAwB,WAEvB,IADA,IAAIx0D,EAAQ,EACH15B,EAAI,EAAGulF,EAAOj/E,KAAK+H,KAAKo2E,SAASj8E,OAAQxI,EAAIulF,IAAQvlF,EACzDsG,KAAK4hF,iBAAiBloF,IACzB05B,IAGF,OAAOA,GAGRwuD,iBAAkB,SAASxD,GAC1B,IAAIO,EAAO3+E,KAAK2hF,eAAevD,GAI/B,MAA8B,kBAAhBO,EAAKz9B,QAAwBy9B,EAAKz9B,QAAUlhD,KAAK+H,KAAKo2E,SAASC,GAAcl9B,QAG5FwyC,eAAgB,WACf,OAAO1zF,KAAKjD,QAAQ0oF,eAAezlF,OAMpC4xF,mBAAoB,SAASxT,GAC5B,IAAIx7E,EAAK5C,KAAK4C,GACV28E,EAAUv/E,KAAK+H,KAAKo2E,SAASC,GAC7BO,EAAOY,EAAQkU,OAASlU,EAAQkU,MAAM7wF,GAEtC+7E,IACHA,EAAKiE,WAAW95D,iBACTy2D,EAAQkU,MAAM7wF,KAIvBkmB,QAAS,WACR,IAEIpvB,EAAGulF,EAFHL,EAAK5+E,KACLo8E,EAASwC,EAAGxC,OAMhB,IAHAwC,EAAG39C,OAGEvnC,EAAI,EAAGulF,EAAOL,EAAG72E,KAAKo2E,SAASj8E,OAAQxI,EAAIulF,IAAQvlF,EACvDklF,EAAGgT,mBAAmBl4F,GAGnB0iF,IACHwC,EAAG+U,eACH1Y,EAAQmB,OAAO1lB,MAAMkoB,GACrBtD,EAASsY,eAAehV,EAAG4E,KAC3B5E,EAAGxC,OAAS,KACZwC,EAAG4E,IAAM,MAGVjI,EAAQjkB,OAAOsnB,EAAI,kBAEZrW,EAAM95B,UAAUmwC,EAAGh8E,KAG3BixF,cAAe,WACd,OAAO7zF,KAAKo8E,OAAO0X,UAAU3qF,MAAMnJ,KAAKo8E,OAAQ13E,YAGjDurF,YAAa,WACZ,IAAIrR,EAAK5+E,KACT4+E,EAAG0Q,QAAU,IAAI3T,EAAQ,CACxB6M,OAAQ5J,EACRmV,eAAgBnV,EAChBqT,MAAOrT,EAAG72E,KACVu8E,SAAU1F,EAAG7hF,QAAQihF,UACnBY,IAMJ/xC,WAAY,WACX,IAAI+xC,EAAK5+E,KACLg0F,EAAYpV,EAAGqV,WAAa,GAC5B/9B,EAAW,WACd0oB,EAAGsV,aAAa/qF,MAAMy1E,EAAIl6E,YAG3Bu2E,EAAQj4D,KAAK47D,EAAG7hF,QAAQo3F,QAAQ,SAASrwF,GACxCw3E,EAASvjD,iBAAiB6mD,EAAI96E,EAAMoyD,GACpC89B,EAAUlwF,GAAQoyD,KAKf0oB,EAAG7hF,QAAQizF,aACd95B,EAAW,WACV0oB,EAAG5mD,UAGJsjD,EAASvjD,iBAAiB6mD,EAAI,SAAU1oB,GACxC89B,EAAUh8D,OAASk+B,IAOrBy9B,aAAc,WACb,IAAI/U,EAAK5+E,KACLg0F,EAAYpV,EAAGqV,WACdD,WAIEpV,EAAGqV,WACVhZ,EAAQj4D,KAAKgxE,GAAW,SAAS99B,EAAUpyD,GAC1Cw3E,EAASp0B,oBAAoB03B,EAAI96E,EAAMoyD,QAIzCk+B,iBAAkB,SAASzzC,EAAU9lD,EAAMw5F,GAC1C,IACInxE,EAASxpB,EAAGulF,EADZx6E,EAAS4vF,EAAU,gBAAkB,mBAGzC,IAAK36F,EAAI,EAAGulF,EAAOt+B,EAASz+C,OAAQxI,EAAIulF,IAAQvlF,GAC/CwpB,EAAUy9B,EAASjnD,KAElBsG,KAAK2hF,eAAez+D,EAAQ68D,eAAe6C,WAAWn+E,GAAQye,IAQjEgxE,aAAc,SAASlrF,GACtB,IAAI41E,EAAK5+E,KACLsvF,EAAU1Q,EAAG0Q,QAEjB,IAA+C,IAA3C/T,EAAQjkB,OAAOsnB,EAAI,cAAe,CAAC51E,IAAvC,CAKA41E,EAAGiR,iBAAkB,EACrBjR,EAAG0T,iBAAmB,KAEtB,IAAIgC,EAAU1V,EAAG2V,YAAYvrF,GAKzBsmF,IACHgF,EAAUhF,EAAQkF,OACflF,EAAQiF,YAAYvrF,GACpBsrF,EAAUhF,EAAQiF,YAAYvrF,IAGlCuyE,EAAQjkB,OAAOsnB,EAAI,aAAc,CAAC51E,IAElC,IAAIyrF,EAAkB7V,EAAG0T,iBAmBzB,OAlBImC,EAEH7V,EAAG71D,OAAO0rE,GACAH,IAAY1V,EAAG8P,YAEzB9P,EAAG39C,OAIH29C,EAAG71D,OAAO,CACToT,SAAUyiD,EAAG7hF,QAAQyjB,MAAMk0E,kBAC3BjG,MAAM,KAIR7P,EAAGiR,iBAAkB,EACrBjR,EAAG0T,iBAAmB,KAEf1T,IASR2V,YAAa,SAASvrF,GACrB,IAGIsrF,EAHA1V,EAAK5+E,KACLjD,EAAU6hF,EAAG7hF,SAAW,GACxB43F,EAAe53F,EAAQyjB,MAsC3B,OAnCAo+D,EAAGyT,WAAazT,EAAGyT,YAAc,GAGlB,aAAXrpF,EAAElF,KACL86E,EAAG/4D,OAAS,GAEZ+4D,EAAG/4D,OAAS+4D,EAAG2U,0BAA0BvqF,EAAG2rF,EAAa95F,KAAM85F,GAKhE1Z,EAAQzuC,SAASzvC,EAAQ63F,SAAW73F,EAAQyjB,MAAMo0E,QAAS,CAAC5rF,EAAE0H,OAAQkuE,EAAG/4D,QAAS+4D,GAEnE,YAAX51E,EAAElF,MAAiC,UAAXkF,EAAElF,MACzB/G,EAAQkpF,SAEXlpF,EAAQkpF,QAAQpsF,KAAK+kF,EAAI51E,EAAE0H,OAAQkuE,EAAG/4D,QAKpC+4D,EAAGyT,WAAWnwF,QACjB08E,EAAGwV,iBAAiBxV,EAAGyT,WAAYsC,EAAa95F,MAAM,GAInD+jF,EAAG/4D,OAAO3jB,QAAUyyF,EAAa95F,MACpC+jF,EAAGwV,iBAAiBxV,EAAG/4D,OAAQ8uE,EAAa95F,MAAM,GAGnDy5F,GAAWrZ,EAAQ4Z,YAAYjW,EAAG/4D,OAAQ+4D,EAAGyT,YAG7CzT,EAAGyT,WAAazT,EAAG/4D,OAEZyuE,KAWT/rB,EAAMusB,WAAavsB,IAGlB,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKwsB,GAAG,CAAC,SAAS16B,EAAQ5gE,EAAOD,GAGjH,IAAIyhF,EAAU5gB,EAAQ,IAEtB5gE,EAAOD,QAAU,SAAS+uE,GAEzB,IAAIysB,EAAc,CAAC,OAAQ,MAAO,QAAS,SAAU,WAgDrD,SAASC,EAAoB1sF,EAAO2tD,GACnC,IAAIg/B,EAAO3sF,EAAM4sF,SACjB,GAAKD,EAAL,CAIA,IAAIlB,EAAYkB,EAAKlB,UACjB7xF,EAAQ6xF,EAAU9tF,QAAQgwD,IACf,IAAX/zD,GACH6xF,EAAUr3E,OAAOxa,EAAO,GAGrB6xF,EAAU9xF,OAAS,IAIvB8yF,EAAY5yF,SAAQ,SAASnH,UACrBsN,EAAMtN,aAGPsN,EAAM4sF,WAId5sB,EAAMiW,kBAAoB,SAASc,EAAOlB,GACzCp+E,KAAK47E,WAAW0D,EAAOlB,IAGxBnD,EAAQ9qD,OAAOo4C,EAAMiW,kBAAkBljF,UAAW,CAMjDytF,mBAAoB,KAMpBtK,gBAAiB,KAEjB7C,WAAY,SAAS0D,EAAOlB,GAClBp+E,KACNs/E,MAAQA,EADFt/E,KAENmC,MAAQi8E,EAFFp+E,KAGN0mF,aAHM1mF,KAINo1F,eAGJvD,YAAa,SAASzT,GACrBp+E,KAAKmC,MAAQi8E,GAGdsI,WAAY,WACX,IAAI9H,EAAK5+E,KACL2+E,EAAOC,EAAGC,UACVU,EAAUX,EAAGG,aAEI,OAAjBJ,EAAKiB,SAAsBjB,EAAKiB,WAAWhB,EAAGU,MAAM/B,SACvDoB,EAAKiB,QAAUL,EAAQK,SAAWhB,EAAGU,MAAMviF,QAAQwgF,OAAOC,MAAM,GAAG56E,IAE/C,OAAjB+7E,EAAKmB,SAAsBnB,EAAKmB,WAAWlB,EAAGU,MAAM/B,SACvDoB,EAAKmB,QAAUP,EAAQO,SAAWlB,EAAGU,MAAMviF,QAAQwgF,OAAOM,MAAM,GAAGj7E,KAIrEm8E,WAAY,WACX,OAAO/+E,KAAKs/E,MAAMv3E,KAAKo2E,SAASn+E,KAAKmC,QAGtC08E,QAAS,WACR,OAAO7+E,KAAKs/E,MAAMqC,eAAe3hF,KAAKmC,QAGvCw9E,cAAe,SAAS0V,GACvB,OAAOr1F,KAAKs/E,MAAM/B,OAAO8X,IAG1BrW,MAAO,WACNh/E,KAAK+1D,QAAO,IAMbjtC,QAAS,WACJ9oB,KAAKiyF,OACRgD,EAAoBj1F,KAAKiyF,MAAOjyF,OAIlCs1F,kBAAmB,WAClB,IACIxxF,EADK9D,KACK+oF,mBACd,OAAOjlF,GAAQ,IAAIA,EAAK,CACvB0kF,OAHQxoF,KAGGs/E,MACXS,cAJQ//E,KAIUmC,SAIpBozF,eAAgB,SAASpzF,GACxB,IACI2B,EADK9D,KACKy+E,gBACd,OAAO36E,GAAQ,IAAIA,EAAK,CACvB0kF,OAHQxoF,KAGGs/E,MACXS,cAJQ//E,KAIUmC,MAClB69E,OAAQ79E,KAIVizF,YAAa,WACZ,IAII17F,EAAGulF,EAHHN,EADK3+E,KACK6+E,UACV92E,EAFK/H,KAEK++E,aAAah3E,MAAQ,GAC/BytF,EAAW7W,EAAK52E,KAGpB,IAAKrO,EAAI,EAAGulF,EAAOl3E,EAAK7F,OAAQxI,EAAIulF,IAAQvlF,EAC3C87F,EAAS97F,GAAK87F,EAAS97F,IAPfsG,KAOwBu1F,eAAe77F,GAGhDilF,EAAKY,QAAUZ,EAAKY,SAVXv/E,KAUyBs1F,qBAGnCG,mBAAoB,SAAStzF,GAC5B,IAAI+gB,EAAUljB,KAAKu1F,eAAepzF,GAClCnC,KAAK6+E,UAAU92E,KAAK4U,OAAOxa,EAAO,EAAG+gB,GACrCljB,KAAKq/E,cAAcn8D,EAAS/gB,GAAO,IAGpC+vF,sBAAuB,WACtB,IA7KyB3pF,EAAO2tD,EA6K5B0oB,EAAK5+E,KACLu/E,EAAUX,EAAGG,aACbh3E,EAAOw3E,EAAQx3E,OAASw3E,EAAQx3E,KAAO,IAKvC62E,EAAGqT,QAAUlqF,IACZ62E,EAAGqT,OAENgD,EAAoBrW,EAAGqT,MAAOrT,GAvLA1oB,EA0LP0oB,GA1LAr2E,EA0LNR,GAzLVotF,SACT5sF,EAAM4sF,SAASnB,UAAU90F,KAAKg3D,IAI/B97D,OAAOC,eAAekO,EAAO,WAAY,CACxChI,cAAc,EACdjG,YAAY,EACZK,MAAO,CACNq5F,UAAW,CAAC99B,MAId8+B,EAAY5yF,SAAQ,SAASnH,GAC5B,IAAIwJ,EAAS,SAAWxJ,EAAI4V,OAAO,GAAG2sC,cAAgBviD,EAAIoF,MAAM,GAC5DqgF,EAAOn4E,EAAMtN,GAEjBb,OAAOC,eAAekO,EAAOtN,EAAK,CACjCsF,cAAc,EACdjG,YAAY,EACZK,MAAO,WACN,IAAIyV,EAAOlM,MAAM5I,UAAU+E,MAAMxG,KAAK6K,WAClCkQ,EAAM8rE,EAAKv3E,MAAMnJ,KAAMoQ,GAQ3B,OANA6qE,EAAQj4D,KAAKza,EAAM4sF,SAASnB,WAAW,SAAS54F,GACjB,mBAAnBA,EAAOqJ,IACjBrJ,EAAOqJ,GAAQ0E,MAAM/N,EAAQgV,MAIxBwE,SA4JRgqE,EAAGqT,MAAQlqF,GAKZ62E,EAAG8W,kBAGJ3/B,OAAQklB,EAAQ0L,KAEhB19C,WAAY,SAAS2pD,GAMpB,IALA,IAAIjU,EAAO3+E,KAAK6+E,UACZl+B,EAAWg+B,EAAK52E,MAAQ,GACxBk3E,EAAOt+B,EAASz+C,OAChBxI,EAAI,EAEDA,EAAIulF,IAAQvlF,EAClBinD,EAASjnD,GAAGuvC,WAAW2pD,GAGpBjU,EAAKY,SACRZ,EAAKY,QAAQt2C,WAAW2pD,IAI1BtP,KAAM,WACL,IAAI3E,EAAO3+E,KAAK6+E,UACZl+B,EAAWg+B,EAAK52E,MAAQ,GACxBk3E,EAAOt+B,EAASz+C,OAChBxI,EAAI,EAMR,IAJIilF,EAAKY,SACRZ,EAAKY,QAAQ+D,OAGP5pF,EAAIulF,IAAQvlF,EAClBinD,EAASjnD,GAAG4pF,QAIdqS,iBAAkB,SAASzyE,GAC1B+3D,EAAQ2a,MAAM1yE,EAAQ+8D,OAAQ/8D,EAAQ2hE,gBAAkB,WACjD3hE,EAAQ2hE,gBAGhBD,cAAe,SAAS1hE,GACvB,IAAIq8D,EAAUv/E,KAAKs/E,MAAMv3E,KAAKo2E,SAASj7D,EAAQ68D,eAC3C59E,EAAQ+gB,EAAQ88D,OAChBR,EAASt8D,EAAQs8D,QAAU,GAC3B4D,EAAiBnI,EAAQkF,sBACzB4E,EAAgB9J,EAAQ8J,cACxBxE,EAAQr9D,EAAQ+8D,OAEpB/8D,EAAQ2hE,eAAiB,CACxBvjE,gBAAiBi/D,EAAMj/D,gBACvB4tB,YAAaqxC,EAAMrxC,YACnBkxC,YAAaG,EAAMH,aAGpBG,EAAMj/D,gBAAkBk+D,EAAOsF,qBAAuBtF,EAAOsF,qBAAuB1B,EAAe7D,EAAQuF,qBAAsB3iF,EAAO4iF,EAAcxE,EAAMj/D,kBAC5Ji/D,EAAMrxC,YAAcswC,EAAOwF,iBAAmBxF,EAAOwF,iBAAmB5B,EAAe7D,EAAQyF,iBAAkB7iF,EAAO4iF,EAAcxE,EAAMrxC,cAC5IqxC,EAAMH,YAAcZ,EAAOyF,iBAAmBzF,EAAOyF,iBAAmB7B,EAAe7D,EAAQ0F,iBAAkB9iF,EAAOo+E,EAAMH,cAM/HsV,eAAgB,WACf,IACI/W,EADK3+E,KACK6+E,UACV92E,EAFK/H,KAEK++E,aAAah3E,KACvB8tF,EAAUlX,EAAK52E,KAAK7F,OACpB4zF,EAAU/tF,EAAK7F,OAEf4zF,EAAUD,EACblX,EAAK52E,KAAK4U,OAAOm5E,EAASD,EAAUC,GAC1BA,EAAUD,GARZ71F,KASL+1F,eAAeF,EAASC,EAAUD,IAOvCE,eAAgB,SAAS/hF,EAAOof,GAC/B,IAAK,IAAI15B,EAAI,EAAGA,EAAI05B,IAAS15B,EAC5BsG,KAAKy1F,mBAAmBzhF,EAAQta,IAOlCs8F,WAAY,WACXh2F,KAAK+1F,eAAe/1F,KAAK++E,aAAah3E,KAAK7F,OAAS,EAAGwC,UAAUxC,SAMlE+zF,UAAW,WACVj2F,KAAK6+E,UAAU92E,KAAKmuF,OAMrBC,YAAa,WACZn2F,KAAK6+E,UAAU92E,KAAKqgB,SAMrBguE,aAAc,SAASpiF,EAAOof,GAC7BpzB,KAAK6+E,UAAU92E,KAAK4U,OAAO3I,EAAOof,GAClCpzB,KAAK+1F,eAAe/hF,EAAOtP,UAAUxC,OAAS,IAM/Cm0F,cAAe,WACdr2F,KAAK+1F,eAAe,EAAGrxF,UAAUxC,WAInCqmE,EAAMiW,kBAAkBruD,OAAS8qD,EAAQqb,WAGxC,CAAC,GAAK,KAAKC,GAAG,CAAC,SAASl8B,EAAQ5gE,EAAOD,GAGzC,IAAIyhF,EAAU5gB,EAAQ,IAEtB5gE,EAAOD,QAAU,CAIhB8jF,KAAM,SAASpX,EAAO/0D,GACrB,OAAO8pE,EAAQ2a,MAAM51F,KAAKkmE,KAAWlmE,KAAKkmE,GAAS,IAAK/0D,MAIxD,CAAC,GAAK,KAAKqlF,GAAG,CAAC,SAASn8B,EAAQ5gE,EAAOD,GAGzC,IAAIyqC,EAAQo2B,EAAQ,GAChB4gB,EAAU5gB,EAAQ,IAmDtB,IAAIhQ,EAAU,SAASosC,GACtBxb,EAAQ9qD,OAAOnwB,KAAMy2F,GACrBz2F,KAAK47E,WAAWzyE,MAAMnJ,KAAM0E,YAG7Bu2E,EAAQ9qD,OAAOk6B,EAAQ/uD,UAAW,CAEjCsgF,WAAY,WACX57E,KAAKkhD,QAAS,GAGfo/B,MAAO,WACN,IAAI1B,EAAK5+E,KAKT,OAJK4+E,EAAG8X,QACP9X,EAAG8X,MAAQzb,EAAQ73D,MAAMw7D,EAAGqB,SAE7BrB,EAAG4V,OAAS,GACL5V,GAGR31C,WAAY,SAAS0tD,GACpB,IAAI/X,EAAK5+E,KACLugF,EAAQ3B,EAAGqB,OACXjsE,EAAQ4qE,EAAG4V,OACX51E,EAAOggE,EAAG8X,MAGd,OAAKnW,GAAkB,IAAToW,GAMT/3E,IACJA,EAAOggE,EAAG8X,MAAQ,IAGd1iF,IACJA,EAAQ4qE,EAAG4V,OAAS,IAvFvB,SAAqBxgF,EAAO4K,EAAM2hE,EAAOoW,GACxC,IACIj9F,EAAGulF,EAAMhkF,EAAK27F,EAAQC,EAAQ55F,EAAQ6G,EAAMgzF,EAAIC,EADhDp0F,EAAOvI,OAAOuI,KAAK49E,GAGvB,IAAK7mF,EAAI,EAAGulF,EAAOt8E,EAAKT,OAAQxI,EAAIulF,IAAQvlF,EAa3C,GAVAuD,EAASsjF,EAFTtlF,EAAM0H,EAAKjJ,IAMNklB,EAAKrjB,eAAeN,KACxB2jB,EAAK3jB,GAAOgC,IAGb25F,EAASh4E,EAAK3jB,MAECgC,GAAqB,MAAXhC,EAAI,GAA7B,CAYA,GARK+Y,EAAMzY,eAAeN,KACzB+Y,EAAM/Y,GAAO27F,GAGdC,EAAS7iF,EAAM/Y,IAEf6I,EAAO,EAAO7G,MAED,EAAO45F,GACnB,GAAa,WAAT/yF,GAEH,IADAgzF,EAAK7yD,EAAM4yD,IACJ/8D,QACNi9D,EAAK9yD,EAAMhnC,IACJ68B,MAAO,CACblb,EAAK3jB,GAAO87F,EAAG5pB,IAAI2pB,EAAIH,GAAMhtB,YAC7B,eAGI,GAAa,WAAT7lE,GAAqB4yC,SAASmgD,IAAWngD,SAASz5C,GAAS,CACrE2hB,EAAK3jB,GAAO47F,GAAU55F,EAAS45F,GAAUF,EACzC,SAIF/3E,EAAK3jB,GAAOgC,GA6CZ+5F,CAAYhjF,EAAO4K,EAAM2hE,EAAOoW,GAEzB/X,IAfNA,EAAG8X,MAAQnW,EACX3B,EAAG4V,OAAS,KACL5V,IAgBTqY,gBAAiB,WAChB,MAAO,CACN1kE,EAAGvyB,KAAKigF,OAAO1tD,EACfkkB,EAAGz2C,KAAKigF,OAAOxpC,IAIjB9c,SAAU,WACT,OAAOshD,EAAQ5rD,SAASrvB,KAAKigF,OAAO1tD,IAAM0oD,EAAQ5rD,SAASrvB,KAAKigF,OAAOxpC,MAIzE4T,EAAQl6B,OAAS8qD,EAAQqb,SAEzB78F,EAAOD,QAAU6wD,GAEf,CAAC,EAAI,EAAE,GAAK,KAAK6sC,GAAG,CAAC,SAAS78B,EAAQ5gE,EAAOD,GAK/C,IAAIyqC,EAAQo2B,EAAQ,GAChBh5B,EAAWg5B,EAAQ,IACnB4gB,EAAU5gB,EAAQ,IAClBohB,EAAephB,EAAQ,IAE3B5gE,EAAOD,QAAU,WA4ZhB,SAAS29F,EAAcC,EAAY5yB,EAAM6yB,GACxC,IAAIC,EAYJ,MAX0B,iBAAfF,GACVE,EAAgBz5E,SAASu5E,EAAY,KAEJ,IAA7BA,EAAWlxF,QAAQ,OAEtBoxF,EAAgBA,EAAgB,IAAM9yB,EAAKvpB,WAAWo8C,KAGvDC,EAAgBF,EAGVE,EAOR,SAASC,EAAmB58F,GAC3B,OAAOA,SAAmD,SAAVA,EAQjD,SAAS68F,EAAuBC,EAASC,EAAUC,GAClD,IAAI/4E,EAAOlZ,SAASwgD,YAChBjL,EAAaggC,EAAQ2c,eAAeH,GACpCI,EAAkBj5E,EAAKs/B,iBAAiBu5C,GAASC,GACjDI,EAAuBl5E,EAAKs/B,iBAAiBjD,GAAYy8C,GACzDK,EAAWR,EAAmBM,GAC9BG,EAAgBT,EAAmBO,GACnCG,EAAWl+D,OAAOm+D,kBAEtB,OAAIH,GAAYC,EACRr8F,KAAKoD,IACXg5F,EAAWZ,EAAcU,EAAiBJ,EAASE,GAAsBM,EACzED,EAAgBb,EAAcW,EAAsB78C,EAAY08C,GAAsBM,GAGjF,OApcRhd,EAAQkU,YAAc,WACrB,OAAOlU,EAAQ2a,MAAM3a,EAAQ73D,MAAM1e,UAAU,IAAK,GAAGrE,MAAMxG,KAAK6K,UAAW,GAAI,CAC9EyzF,OAAQ,SAASl9F,EAAKgC,EAAQD,EAAQD,GACrC,IAAIq7F,EAAOn7F,EAAOhC,IAAQ,GACtBo9F,EAAOr7F,EAAO/B,GAEN,WAARA,EAEHgC,EAAOhC,GAAOggF,EAAQqd,WAAWF,EAAMC,GACrB,UAARp9F,EAEVgC,EAAOhC,GAAOggF,EAAQ2a,MAAMwC,EAAM,CAAC3c,EAAa8c,iBAAiBF,EAAKv0F,MAAOu0F,IAE7Epd,EAAQud,QAAQv9F,EAAKgC,EAAQD,EAAQD,OAMzCk+E,EAAQqd,WAAa,WACpB,OAAOrd,EAAQ2a,MAAM3a,EAAQ73D,MAAM1e,UAAU,IAAK,GAAGrE,MAAMxG,KAAK6K,UAAW,GAAI,CAC9EyzF,OAAQ,SAASl9F,EAAKgC,EAAQD,EAAQD,GACrC,GAAY,UAAR9B,GAA2B,UAARA,EAAiB,CACvC,IACIvB,EAAGoK,EAAM86C,EADT65C,EAAOz7F,EAAO/B,GAAKiH,OAOvB,IAJKjF,EAAOhC,KACXgC,EAAOhC,GAAO,IAGVvB,EAAI,EAAGA,EAAI++F,IAAQ/+F,EACvBklD,EAAQ5hD,EAAO/B,GAAKvB,GACpBoK,EAAOm3E,EAAQmI,eAAexkC,EAAM96C,KAAc,UAAR7I,EAAkB,WAAa,UAErEvB,GAAKuD,EAAOhC,GAAKiH,QACpBjF,EAAOhC,GAAKiE,KAAK,KAGbjC,EAAOhC,GAAKvB,GAAGoK,MAAS86C,EAAM96C,MAAQ86C,EAAM96C,OAAS7G,EAAOhC,GAAKvB,GAAGoK,KAGxEm3E,EAAQ2a,MAAM34F,EAAOhC,GAAKvB,GAAI,CAAC+hF,EAAa8c,iBAAiBz0F,GAAO86C,IAGpEq8B,EAAQ2a,MAAM34F,EAAOhC,GAAKvB,GAAIklD,QAIhCq8B,EAAQud,QAAQv9F,EAAKgC,EAAQD,EAAQD,OAMzCk+E,EAAQyd,MAAQ,SAASC,EAAYC,GACpC,GAAI3d,EAAQ92E,QAAQw0F,IAAez0F,MAAM5I,UAAUgH,OAClD,OAAOq2F,EAAWr2F,OAAOs2F,GAE1B,IAAIC,EAAW,GAQf,OANA5d,EAAQj4D,KAAK21E,GAAY,SAAS50D,GAC7B60D,EAAe70D,IAClB80D,EAAS35F,KAAK6kC,MAIT80D,GAER5d,EAAQv4E,UAAYwB,MAAM5I,UAAUoH,UACnC,SAAS6F,EAAOikC,EAAU05B,GACzB,OAAO39D,EAAM7F,UAAU8pC,EAAU05B,IAElC,SAAS39D,EAAOikC,EAAU05B,GACzBA,OAAkBvoE,IAAVuoE,EAAsB39D,EAAQ29D,EACtC,IAAK,IAAIxsE,EAAI,EAAGulF,EAAO12E,EAAMrG,OAAQxI,EAAIulF,IAAQvlF,EAChD,GAAI8yC,EAAS3yC,KAAKqsE,EAAO39D,EAAM7O,GAAIA,EAAG6O,GACrC,OAAO7O,EAGT,OAAQ,GAEVuhF,EAAQ6d,cAAgB,SAASC,EAAeH,EAAgBI,GAE3D/d,EAAQiH,cAAc8W,KACzBA,GAAc,GAEf,IAAK,IAAIt/F,EAAIs/F,EAAa,EAAGt/F,EAAIq/F,EAAc72F,OAAQxI,IAAK,CAC3D,IAAIu/F,EAAcF,EAAcr/F,GAChC,GAAIk/F,EAAeK,GAClB,OAAOA,IAIVhe,EAAQie,kBAAoB,SAASH,EAAeH,EAAgBI,GAE/D/d,EAAQiH,cAAc8W,KACzBA,EAAaD,EAAc72F,QAE5B,IAAK,IAAIxI,EAAIs/F,EAAa,EAAGt/F,GAAK,EAAGA,IAAK,CACzC,IAAIu/F,EAAcF,EAAcr/F,GAChC,GAAIk/F,EAAeK,GAClB,OAAOA,IAMVhe,EAAQ5rD,SAAW,SAASl0B,GAC3B,OAAQgF,MAAMoe,WAAWpjB,KAAOu7C,SAASv7C,IAE1C8/E,EAAQke,aAAe,SAAS5mE,EAAGkkB,EAAG2iD,GACrC,OAAOz9F,KAAKm4B,IAAIvB,EAAIkkB,GAAK2iD,GAE1Bne,EAAQoe,YAAc,SAAS9mE,EAAG6mE,GACjC,IAAIE,EAAU39F,KAAKyiC,MAAM7L,GACzB,OAAU+mE,EAAUF,EAAW7mE,GAAQ+mE,EAAUF,EAAW7mE,GAE7D0oD,EAAQ70E,IAAM,SAASmC,GACtB,OAAOA,EAAMoqC,QAAO,SAASvsC,EAAKzL,GACjC,OAAKwF,MAAMxF,GAGJyL,EAFCzK,KAAKyK,IAAIA,EAAKzL,KAGpBo/B,OAAOw/D,oBAEXte,EAAQl8E,IAAM,SAASwJ,GACtB,OAAOA,EAAMoqC,QAAO,SAAS5zC,EAAKpE,GACjC,OAAKwF,MAAMxF,GAGJoE,EAFCpD,KAAKoD,IAAIA,EAAKpE,KAGpBo/B,OAAOm+D,oBAEXjd,EAAQroD,KAAOj3B,KAAKi3B,KACnB,SAASL,GACR,OAAO52B,KAAKi3B,KAAKL,IAElB,SAASA,GAER,OAAU,KADVA,GAAKA,IACUpyB,MAAMoyB,GACbA,EAEDA,EAAI,EAAI,GAAK,GAEtB0oD,EAAQue,MAAQ79F,KAAK69F,MACpB,SAASjnE,GACR,OAAO52B,KAAK69F,MAAMjnE,IAEnB,SAASA,GACR,IAAI4B,EAAWx4B,KAAKw3B,IAAIZ,GAAK52B,KAAK89F,OAG9BC,EAAY/9F,KAAKyiC,MAAMjK,GAG3B,OAFkB5B,IAAM52B,KAAK22B,IAAI,GAAIonE,GAEhBA,EAAYvlE,GAEnC8mD,EAAQ0e,UAAY,SAASzsB,GAC5B,OAAOA,GAAWvxE,KAAKm4C,GAAK,MAE7BmnC,EAAQ2e,UAAY,SAASC,GAC5B,OAAOA,GAAW,IAAMl+F,KAAKm4C,KAG9BmnC,EAAQ6e,kBAAoB,SAASC,EAAaC,GACjD,IAAIC,EAAsBD,EAAWznE,EAAIwnE,EAAYxnE,EACjD2nE,EAAsBF,EAAWvjD,EAAIsjD,EAAYtjD,EACjD0jD,EAA2Bx+F,KAAK24C,KAAK2lD,EAAsBA,EAAsBC,EAAsBA,GAEvG5N,EAAQ3wF,KAAKg0E,MAAMuqB,EAAqBD,GAM5C,OAJI3N,GAAU,GAAM3wF,KAAKm4C,KACxBw4C,GAAS,EAAM3wF,KAAKm4C,IAGd,CACNw4C,MAAOA,EACPW,SAAUkN,IAGZlf,EAAQmf,sBAAwB,SAASC,EAAKC,GAC7C,OAAO3+F,KAAK24C,KAAK34C,KAAK22B,IAAIgoE,EAAI/nE,EAAI8nE,EAAI9nE,EAAG,GAAK52B,KAAK22B,IAAIgoE,EAAI7jD,EAAI4jD,EAAI5jD,EAAG,KAEvEwkC,EAAQsf,WAAa,SAASC,GAC7B,OAAQA,EAAa,GAAM,EAAK,EAAI,IAErCvf,EAAQiQ,YAAc,SAASuP,EAAYC,EAAaC,EAAY//F,GAMnE,IAAI0wF,EAAWmP,EAAW9V,KAAO+V,EAAcD,EAC3CG,EAAUF,EACVrkF,EAAOskF,EAAWhW,KAAO+V,EAAcC,EAEvCE,EAAMl/F,KAAK24C,KAAK34C,KAAK22B,IAAIsoE,EAAQroE,EAAI+4D,EAAS/4D,EAAG,GAAK52B,KAAK22B,IAAIsoE,EAAQnkD,EAAI60C,EAAS70C,EAAG,IACvFqkD,EAAMn/F,KAAK24C,KAAK34C,KAAK22B,IAAIjc,EAAKkc,EAAIqoE,EAAQroE,EAAG,GAAK52B,KAAK22B,IAAIjc,EAAKogC,EAAImkD,EAAQnkD,EAAG,IAE/EskD,EAAMF,GAAOA,EAAMC,GACnBE,EAAMF,GAAOD,EAAMC,GAMnBG,EAAKrgG,GAHTmgG,EAAM56F,MAAM46F,GAAO,EAAIA,GAInBG,EAAKtgG,GAHTogG,EAAM76F,MAAM66F,GAAO,EAAIA,GAKvB,MAAO,CACN1P,SAAU,CACT/4D,EAAGqoE,EAAQroE,EAAI0oE,GAAM5kF,EAAKkc,EAAI+4D,EAAS/4D,GACvCkkB,EAAGmkD,EAAQnkD,EAAIwkD,GAAM5kF,EAAKogC,EAAI60C,EAAS70C,IAExCpgC,KAAM,CACLkc,EAAGqoE,EAAQroE,EAAI2oE,GAAM7kF,EAAKkc,EAAI+4D,EAAS/4D,GACvCkkB,EAAGmkD,EAAQnkD,EAAIykD,GAAM7kF,EAAKogC,EAAI60C,EAAS70C,MAI1CwkC,EAAQkgB,QAAUphE,OAAOohE,SAAW,MACpClgB,EAAQgQ,oBAAsB,SAASjH,GAMtC,IAUItqF,EAAG0hG,EAAaC,EAAcC,EA4B9BC,EAAQC,EAAOC,EAAMC,EA0BrBhqC,EAhEAiqC,GAAsB3X,GAAU,IAAI3hF,KAAI,SAASyO,GACpD,MAAO,CACNyvE,MAAOzvE,EAAMmvE,OACb2b,OAAQ,EACRC,GAAI,MAKFC,EAAYH,EAAmBz5F,OAEnC,IAAKxI,EAAI,EAAGA,EAAIoiG,IAAapiG,EAE5B,KADA2hG,EAAeM,EAAmBjiG,IACjB6mF,MAAMoE,KAAvB,CAMA,GAFAyW,EAAc1hG,EAAI,EAAIiiG,EAAmBjiG,EAAI,GAAK,MAClD4hG,EAAa5hG,EAAIoiG,EAAY,EAAIH,EAAmBjiG,EAAI,GAAK,QAC1C4hG,EAAW/a,MAAMoE,KAAM,CACzC,IAAIoX,EAAeT,EAAW/a,MAAMhuD,EAAI8oE,EAAa9a,MAAMhuD,EAG3D8oE,EAAaO,OAAyB,IAAhBG,GAAqBT,EAAW/a,MAAM9pC,EAAI4kD,EAAa9a,MAAM9pC,GAAKslD,EAAc,GAGlGX,GAAeA,EAAY7a,MAAMoE,KACrC0W,EAAaQ,GAAKR,EAAaO,QACpBN,GAAcA,EAAW/a,MAAMoE,KAC1C0W,EAAaQ,GAAKT,EAAYQ,OACpB57F,KAAK4yB,KAAKwoE,EAAYQ,UAAY57F,KAAK4yB,KAAKyoE,EAAaO,QACnEP,EAAaQ,GAAK,EAElBR,EAAaQ,IAAMT,EAAYQ,OAASP,EAAaO,QAAU,EAMjE,IAAKliG,EAAI,EAAGA,EAAIoiG,EAAY,IAAKpiG,EAChC2hG,EAAeM,EAAmBjiG,GAClC4hG,EAAaK,EAAmBjiG,EAAI,GAChC2hG,EAAa9a,MAAMoE,MAAQ2W,EAAW/a,MAAMoE,OAI5C1J,EAAQke,aAAakC,EAAaO,OAAQ,EAAG57F,KAAKm7F,SACrDE,EAAaQ,GAAKP,EAAWO,GAAK,GAInCN,EAASF,EAAaQ,GAAKR,EAAaO,OACxCJ,EAAQF,EAAWO,GAAKR,EAAaO,QACrCF,EAAmB//F,KAAK22B,IAAIipE,EAAQ,GAAK5/F,KAAK22B,IAAIkpE,EAAO,KACjC,IAIxBC,EAAO,EAAI9/F,KAAK24C,KAAKonD,GACrBL,EAAaQ,GAAKN,EAASE,EAAOJ,EAAaO,OAC/CN,EAAWO,GAAKL,EAAQC,EAAOJ,EAAaO,UAK7C,IAAKliG,EAAI,EAAGA,EAAIoiG,IAAapiG,GAC5B2hG,EAAeM,EAAmBjiG,IACjB6mF,MAAMoE,OAIvByW,EAAc1hG,EAAI,EAAIiiG,EAAmBjiG,EAAI,GAAK,KAClD4hG,EAAa5hG,EAAIoiG,EAAY,EAAIH,EAAmBjiG,EAAI,GAAK,KACzD0hG,IAAgBA,EAAY7a,MAAMoE,OACrCjzB,GAAU2pC,EAAa9a,MAAMhuD,EAAI6oE,EAAY7a,MAAMhuD,GAAK,EACxD8oE,EAAa9a,MAAM8K,sBAAwBgQ,EAAa9a,MAAMhuD,EAAIm/B,EAClE2pC,EAAa9a,MAAMgL,sBAAwB8P,EAAa9a,MAAM9pC,EAAIib,EAAS2pC,EAAaQ,IAErFP,IAAeA,EAAW/a,MAAMoE,OACnCjzB,GAAU4pC,EAAW/a,MAAMhuD,EAAI8oE,EAAa9a,MAAMhuD,GAAK,EACvD8oE,EAAa9a,MAAMiL,kBAAoB6P,EAAa9a,MAAMhuD,EAAIm/B,EAC9D2pC,EAAa9a,MAAMkL,kBAAoB4P,EAAa9a,MAAM9pC,EAAIib,EAAS2pC,EAAaQ,MAIvF5gB,EAAQmQ,SAAW,SAASuN,EAAYx2F,EAAOm2C,GAC9C,OAAIA,EACIn2C,GAASw2F,EAAWz2F,OAAS,EAAIy2F,EAAW,GAAKA,EAAWx2F,EAAQ,GAErEA,GAASw2F,EAAWz2F,OAAS,EAAIy2F,EAAWA,EAAWz2F,OAAS,GAAKy2F,EAAWx2F,EAAQ,IAEhG84E,EAAQkQ,aAAe,SAASwN,EAAYx2F,EAAOm2C,GAClD,OAAIA,EACIn2C,GAAS,EAAIw2F,EAAWA,EAAWz2F,OAAS,GAAKy2F,EAAWx2F,EAAQ,GAErEA,GAAS,EAAIw2F,EAAW,GAAKA,EAAWx2F,EAAQ,IAGxD84E,EAAQ+gB,QAAU,SAASnZ,EAAOzkD,GACjC,IAAIjK,EAAWx4B,KAAKuE,MAAM+6E,EAAQue,MAAM3W,IACpCoZ,EAAWpZ,EAAQlnF,KAAK22B,IAAI,GAAI6B,GAuBpC,OApBIiK,EACC69D,EAAW,IACC,EACLA,EAAW,EACN,EACLA,EAAW,EACN,EAEA,GAENA,GAAY,EACP,EACLA,GAAY,EACP,EACLA,GAAY,EACP,EAEA,IAGMtgG,KAAK22B,IAAI,GAAI6B,IAGpC8mD,EAAQ2T,iBACe,oBAAX9yF,OACH,SAAS0wC,GACfA,KAGK1wC,OAAOmlD,uBACbnlD,OAAOi9C,6BACPj9C,OAAOk9C,0BACPl9C,OAAOogG,wBACPpgG,OAAOqgG,yBACP,SAAS3vD,GACR,OAAO1wC,OAAOo8B,WAAWsU,EAAU,IAAO,KAI7CyuC,EAAQmhB,oBAAsB,SAAS/vC,EAAKizB,GAC3C,IAAI+c,EAAQC,EACRtzF,EAAIqjD,EAAIkZ,eAAiBlZ,EACzB+vB,EAAS/vB,EAAIpvD,QAAUovD,EAAIxE,WAC3B00C,EAAengB,EAAOt+C,wBAEtB4K,EAAU1/B,EAAE0/B,QACZA,GAAWA,EAAQxmC,OAAS,GAC/Bm6F,EAAS3zD,EAAQ,GAAGnb,QACpB+uE,EAAS5zD,EAAQ,GAAGjb,UAGpB4uE,EAASrzF,EAAEukB,QACX+uE,EAAStzF,EAAEykB,SAMZ,IAAI+nC,EAAcj3C,WAAW08D,EAAQuhB,SAASpgB,EAAQ,iBAClDj7B,EAAa5iC,WAAW08D,EAAQuhB,SAASpgB,EAAQ,gBACjD3mB,EAAel3C,WAAW08D,EAAQuhB,SAASpgB,EAAQ,kBACnDh7B,EAAgB7iC,WAAW08D,EAAQuhB,SAASpgB,EAAQ,mBACpDn7D,EAAQs7E,EAAa7rE,MAAQ6rE,EAAa94E,KAAO+xC,EAAcC,EAC/Dv0C,EAASq7E,EAAa3sC,OAAS2sC,EAAa/4E,IAAM29B,EAAaC,EAOnE,MAAO,CACN7uB,EAJD8pE,EAAS1gG,KAAKyiC,OAAOi+D,EAASE,EAAa94E,KAAO+xC,GAAgBv0C,EAASm7D,EAAOn7D,MAAQq+D,EAAMmd,yBAK/FhmD,EAJD6lD,EAAS3gG,KAAKyiC,OAAOk+D,EAASC,EAAa/4E,IAAM29B,GAAejgC,EAAUk7D,EAAOl7D,OAASo+D,EAAMmd,2BAyDjGxhB,EAAQyhB,mBAAqB,SAASjF,GACrC,OAAOD,EAAuBC,EAAS,YAAa,gBAGrDxc,EAAQ0hB,oBAAsB,SAASlF,GACtC,OAAOD,EAAuBC,EAAS,aAAc,iBAKtDxc,EAAQ2hB,kBAAoB,SAASv+C,EAAWl9B,EAAS07E,GAGxD,OAFA17E,EAAU85D,EAAQuhB,SAASn+C,EAAWl9B,IAEvBjb,QAAQ,MAAQ,EAAI22F,EAAkBh/E,SAASsD,EAAS,IAAMtD,SAASsD,EAAS,KAKhG85D,EAAQ2c,eAAiB,SAASH,GACjC,IAAIz4E,EAASy4E,EAAQx8C,WAIrB,OAHIj8B,GAAUA,EAAO89E,OACpB99E,EAASA,EAAO89E,MAEV99E,GAERi8D,EAAQoV,gBAAkB,SAASoH,GAClC,IAAIp5C,EAAY48B,EAAQ2c,eAAeH,GACvC,IAAKp5C,EACJ,OAAOo5C,EAAQjqE,YAGhB,IAAIA,EAAc6wB,EAAU7wB,YAIxBgpB,EAAIhpB,EAHUytD,EAAQ2hB,kBAAkBv+C,EAAW,eAAgB7wB,GACpDytD,EAAQ2hB,kBAAkBv+C,EAAW,gBAAiB7wB,GAGrEuvE,EAAK9hB,EAAQyhB,mBAAmBjF,GACpC,OAAOt3F,MAAM48F,GAAMvmD,EAAI76C,KAAKoD,IAAIy3C,EAAGumD,IAEpC9hB,EAAQsV,iBAAmB,SAASkH,GACnC,IAAIp5C,EAAY48B,EAAQ2c,eAAeH,GACvC,IAAKp5C,EACJ,OAAOo5C,EAAQ/pE,aAGhB,IAAIA,EAAe2wB,EAAU3wB,aAIzB4oB,EAAI5oB,EAHSutD,EAAQ2hB,kBAAkBv+C,EAAW,cAAe3wB,GACjDutD,EAAQ2hB,kBAAkBv+C,EAAW,iBAAkB3wB,GAGvE9X,EAAKqlE,EAAQ0hB,oBAAoBlF,GACrC,OAAOt3F,MAAMyV,GAAM0gC,EAAI36C,KAAKoD,IAAIu3C,EAAG1gC,IAEpCqlE,EAAQuhB,SAAW,SAASh2F,EAAInL,GAC/B,OAAOmL,EAAGi8D,aACTj8D,EAAGi8D,aAAapnE,GAChBqK,SAASwgD,YAAYhI,iBAAiB13C,EAAI,MAAMw3C,iBAAiB3iD,IAEnE4/E,EAAQ6U,YAAc,SAASxQ,EAAO0d,GACrC,IAAIC,EAAa3d,EAAMmd,wBAA0BO,GAAiC,oBAAXlhG,QAA0BA,OAAOi0F,kBAAqB,EAC7H,GAAmB,IAAfkN,EAAJ,CAIA,IAAI7gB,EAASkD,EAAMlD,OACfl7D,EAASo+D,EAAMp+D,OACfD,EAAQq+D,EAAMr+D,MAElBm7D,EAAOl7D,OAASA,EAAS+7E,EACzB7gB,EAAOn7D,MAAQA,EAAQg8E,EACvB3d,EAAMkE,IAAI5kC,MAAMq+C,EAAYA,GAKvB7gB,EAAO/2E,MAAM6b,QAAWk7D,EAAO/2E,MAAM4b,QACzCm7D,EAAO/2E,MAAM6b,OAASA,EAAS,KAC/Bk7D,EAAO/2E,MAAM4b,MAAQA,EAAQ,QAI/Bg6D,EAAQiiB,WAAa,SAASC,EAAWC,EAAWjjE,GACnD,OAAOijE,EAAY,IAAMD,EAAY,MAAQhjE,GAE9C8gD,EAAQoiB,YAAc,SAAS7Z,EAAK8Z,EAAMC,EAAeC,GAExD,IAAIz1F,GADJy1F,EAAQA,GAAS,IACAz1F,KAAOy1F,EAAMz1F,MAAQ,GAClC01F,EAAKD,EAAME,eAAiBF,EAAME,gBAAkB,GAEpDF,EAAMF,OAASA,IAClBv1F,EAAOy1F,EAAMz1F,KAAO,GACpB01F,EAAKD,EAAME,eAAiB,GAC5BF,EAAMF,KAAOA,GAGd9Z,EAAI8Z,KAAOA,EACX,IAAIK,EAAU,EACd1iB,EAAQj4D,KAAKu6E,GAAe,SAAS75B,GAEhCA,UAAoE,IAA3BuX,EAAQ92E,QAAQu/D,GAC5Di6B,EAAU1iB,EAAQ2iB,YAAYpa,EAAKz7E,EAAM01F,EAAIE,EAASj6B,GAC5CuX,EAAQ92E,QAAQu/D,IAG1BuX,EAAQj4D,KAAK0gD,GAAO,SAASm6B,GAExBA,SAAsD5iB,EAAQ92E,QAAQ05F,KACzEF,EAAU1iB,EAAQ2iB,YAAYpa,EAAKz7E,EAAM01F,EAAIE,EAASE,UAM1D,IAAIC,EAAQL,EAAGv7F,OAAS,EACxB,GAAI47F,EAAQP,EAAcr7F,OAAQ,CACjC,IAAK,IAAIxI,EAAI,EAAGA,EAAIokG,EAAOpkG,WACnBqO,EAAK01F,EAAG/jG,IAEhB+jG,EAAG9gF,OAAO,EAAGmhF,GAEd,OAAOH,GAER1iB,EAAQ2iB,YAAc,SAASpa,EAAKz7E,EAAM01F,EAAIE,EAASx1F,GACtD,IAAI41F,EAAYh2F,EAAKI,GAQrB,OAPK41F,IACJA,EAAYh2F,EAAKI,GAAUq7E,EAAIoa,YAAYz1F,GAAQ8Y,MACnDw8E,EAAGv+F,KAAKiJ,IAEL41F,EAAYJ,IACfA,EAAUI,GAEJJ,GAER1iB,EAAQ+iB,mBAAqB,SAAST,GACrC,IAAIU,EAAgB,EAQpB,OAPAhjB,EAAQj4D,KAAKu6E,GAAe,SAAS75B,GAChCuX,EAAQ92E,QAAQu/D,IACfA,EAAMxhE,OAAS+7F,IAClBA,EAAgBv6B,EAAMxhE,WAIlB+7F,GAGRhjB,EAAQh3C,MAASA,EAKhB,SAAStpC,GAMR,OAJIA,aAAiBujG,iBACpBvjG,EAAQ0mC,EAASrlC,OAAOmiG,cAGlBl6D,EAAMtpC,IAVd,SAASA,GAER,OADAijC,QAAQzhC,MAAM,uBACPxB,GAWTsgF,EAAQ8J,cAAgB,SAASqZ,GAEhC,OAAQA,aAAsBC,cAC7BD,EACAnjB,EAAQh3C,MAAMm6D,GAAYzxB,SAAS,IAAKD,OAAO,IAAK/C,eAIrD,CAAC,GAAK,GAAG,EAAI,EAAE,GAAK,GAAG,GAAK,KAAK20B,GAAG,CAAC,SAASjkC,EAAQ5gE,EAAOD,GAG/D,IAAIyhF,EAAU5gB,EAAQ,IAQtB,SAAS+hC,EAAoBpzF,EAAGs2E,GAC/B,OAAIt2E,EAAE0H,OACE,CACN6hB,EAAGvpB,EAAEupB,EACLkkB,EAAGztC,EAAEytC,GAIAwkC,EAAQmhB,oBAAoBpzF,EAAGs2E,GAQvC,SAASif,EAAkBjf,EAAOt2D,GACjC,IACI21D,EAAMjlF,EAAG2b,EAAG4pE,EAAMuf,EAEtB,IAAK9kG,EAAI,EAAGulF,EAHGK,EAAMv3E,KAAKo2E,SAGEj8E,OAAQxI,EAAIulF,IAAQvlF,EAC/C,GAAK4lF,EAAMsC,iBAAiBloF,GAK5B,IAAK2b,EAAI,EAAGmpF,GADZ7f,EAAOW,EAAMqC,eAAejoF,IACJqO,KAAK7F,OAAQmT,EAAImpF,IAAQnpF,EAAG,CACnD,IAAI6N,EAAUy7D,EAAK52E,KAAKsN,GACnB6N,EAAQwzE,MAAM/R,MAClB37D,EAAQ9F,IAYZ,SAASu7E,EAAkBnf,EAAO5sE,GACjC,IAAIiuC,EAAW,GAQf,OANA49C,EAAkBjf,GAAO,SAASp8D,GAC7BA,EAAQw7E,QAAQhsF,EAAS6f,EAAG7f,EAAS+jC,IACxCkK,EAASzhD,KAAKgkB,MAITy9B,EAWR,SAASg+C,EAAgBrf,EAAO5sE,EAAU2gF,EAAWuL,GACpD,IAAIC,EAAc9kE,OAAOm+D,kBACrB4G,EAAe,GAmBnB,OAjBAP,EAAkBjf,GAAO,SAASp8D,GACjC,IAAImwE,GAAcnwE,EAAQw7E,QAAQhsF,EAAS6f,EAAG7f,EAAS+jC,GAAvD,CAIA,IAAI2qC,EAASl+D,EAAQ67E,iBACjB9R,EAAW2R,EAAelsF,EAAU0uE,GAEpC6L,EAAW4R,GACdC,EAAe,CAAC57E,GAChB27E,EAAc5R,GACJA,IAAa4R,GAEvBC,EAAa5/F,KAAKgkB,OAIb47E,EAQR,SAASE,EAAyBl/C,GACjC,IAAIm/C,GAA8B,IAAvBn/C,EAAK55C,QAAQ,KACpBg5F,GAA8B,IAAvBp/C,EAAK55C,QAAQ,KAExB,OAAO,SAASm0F,EAAKC,GACpB,IAAI5oC,EAASutC,EAAOtjG,KAAKm4B,IAAIumE,EAAI9nE,EAAI+nE,EAAI/nE,GAAK,EAC1Co/B,EAASutC,EAAOvjG,KAAKm4B,IAAIumE,EAAI5jD,EAAI6jD,EAAI7jD,GAAK,EAC9C,OAAO96C,KAAK24C,KAAK34C,KAAK22B,IAAIo/B,EAAQ,GAAK/1D,KAAK22B,IAAIq/B,EAAQ,KAI1D,SAASwtC,EAAU7f,EAAOt2E,EAAGjM,GAC5B,IAAI2V,EAAW0pF,EAAoBpzF,EAAGs2E,GAEtCviF,EAAQ+iD,KAAO/iD,EAAQ+iD,MAAQ,IAC/B,IAAI8+C,EAAiBI,EAAyBjiG,EAAQ+iD,MAClDixC,EAAQh0F,EAAQs2F,UAAYoL,EAAkBnf,EAAO5sE,GAAYisF,EAAgBrf,EAAO5sE,GAAU,EAAOksF,GACzGj+C,EAAW,GAEf,OAAKowC,EAAM7uF,QAIXo9E,EAAMv3E,KAAKo2E,SAAS/7E,SAAQ,SAASm9E,EAASnB,GAC7C,GAAIkB,EAAMsC,iBAAiBxD,GAAe,CACzC,IACIl7D,EADOo8D,EAAMqC,eAAevD,GACbr2E,KAAKgpF,EAAM,GAAG/Q,QAG7B98D,IAAYA,EAAQwzE,MAAM/R,MAC7BhkC,EAASzhD,KAAKgkB,OAKVy9B,GAfC,GA+BTlnD,EAAOD,QAAU,CAEhB05F,MAAO,CACNC,OAAQ,SAAS7T,EAAOt2E,GACvB,IAAI0J,EAAW0pF,EAAoBpzF,EAAGs2E,GAClC3+B,EAAW,GASf,OAPA49C,EAAkBjf,GAAO,SAASp8D,GACjC,GAAIA,EAAQw7E,QAAQhsF,EAAS6f,EAAG7f,EAAS+jC,GAExC,OADAkK,EAASzhD,KAAKgkB,GACPy9B,KAIFA,EAAStgD,MAAM,EAAG,IAS1BmpB,MAAO21E,EAYPh9F,MAAOg9F,EAWP5f,QAAS,SAASD,EAAOt2E,EAAGjM,GAC3B,IAAI2V,EAAW0pF,EAAoBpzF,EAAGs2E,GACtCviF,EAAQ+iD,KAAO/iD,EAAQ+iD,MAAQ,KAC/B,IAAI8+C,EAAiBI,EAAyBjiG,EAAQ+iD,MAClDixC,EAAQh0F,EAAQs2F,UAAYoL,EAAkBnf,EAAO5sE,GAAYisF,EAAgBrf,EAAO5sE,GAAU,EAAOksF,GAM7G,OAJI7N,EAAM7uF,OAAS,IAClB6uF,EAAQzR,EAAMqC,eAAeoP,EAAM,GAAGhR,eAAeh4E,MAG/CgpF,GASR,SAAU,SAASzR,EAAOt2E,GACzB,OAAOm2F,EAAU7f,EAAOt2E,EAAG,CAACqqF,WAAW,KAWxCviF,MAAO,SAASwuE,EAAOt2E,GAEtB,OAAOy1F,EAAkBnf,EADV8c,EAAoBpzF,EAAGs2E,KAYvC8f,QAAS,SAAS9f,EAAOt2E,EAAGjM,GAC3B,IAAI2V,EAAW0pF,EAAoBpzF,EAAGs2E,GACtCviF,EAAQ+iD,KAAO/iD,EAAQ+iD,MAAQ,KAC/B,IAAI8+C,EAAiBI,EAAyBjiG,EAAQ+iD,MAClDg/C,EAAeH,EAAgBrf,EAAO5sE,EAAU3V,EAAQs2F,UAAWuL,GAmBvE,OAhBIE,EAAa58F,OAAS,GACzB48F,EAAavtE,MAAK,SAAStzB,EAAGiL,GAC7B,IAEIspC,EAFQv0C,EAAEohG,UACFn2F,EAAEm2F,UAQd,OALY,IAAR7sD,IAEHA,EAAMv0C,EAAE8hF,cAAgB72E,EAAE62E,eAGpBvtC,KAKFssD,EAAaz+F,MAAM,EAAG,IAW9BkyB,EAAG,SAAS+sD,EAAOt2E,EAAGjM,GACrB,IAAI2V,EAAW0pF,EAAoBpzF,EAAGs2E,GAClCyR,EAAQ,GACRuO,GAAiB,EAiBrB,OAfAf,EAAkBjf,GAAO,SAASp8D,GAC7BA,EAAQq8E,SAAS7sF,EAAS6f,IAC7Bw+D,EAAM7xF,KAAKgkB,GAGRA,EAAQw7E,QAAQhsF,EAAS6f,EAAG7f,EAAS+jC,KACxC6oD,GAAiB,MAMfviG,EAAQs2F,YAAciM,IACzBvO,EAAQ,IAEFA,GAWRt6C,EAAG,SAAS6oC,EAAOt2E,EAAGjM,GACrB,IAAI2V,EAAW0pF,EAAoBpzF,EAAGs2E,GAClCyR,EAAQ,GACRuO,GAAiB,EAiBrB,OAfAf,EAAkBjf,GAAO,SAASp8D,GAC7BA,EAAQs8E,SAAS9sF,EAAS+jC,IAC7Bs6C,EAAM7xF,KAAKgkB,GAGRA,EAAQw7E,QAAQhsF,EAAS6f,EAAG7f,EAAS+jC,KACxC6oD,GAAiB,MAMfviG,EAAQs2F,YAAciM,IACzBvO,EAAQ,IAEFA,MAKR,CAAC,GAAK,KAAK0O,GAAG,CAAC,SAASplC,EAAQ5gE,EAAOD,GAG1B6gE,EAAQ,IAEdijB,KAAK,SAAU,CACvB0S,YAAY,EACZU,4BAA6B,EAC7BP,qBAAqB,EACrBgE,OAAQ,CAAC,YAAa,WAAY,QAAS,aAAc,aACzD3zE,MAAO,CACNo0E,QAAS,KACT/5F,KAAM,UACNw4F,WAAW,EACXqB,kBAAmB,KAEpBzO,QAAS,KACTkY,aAAc,kBACduB,iBAAkB,OAClBC,kBAAmB,qDACnBC,gBAAiB,GACjBC,iBAAkB,SAClBnX,WAAW,EAGX/nC,SAAU,GAGVm/C,OAAQ,CACP3+E,QAAS,CACRqC,IAAK,EACLkN,MAAO,EACPk/B,OAAQ,EACRnsC,KAAM,MAKThqB,EAAOD,QAAU,WAGhB,IAAI+uE,EAAQ,SAASxkC,EAAMy4C,GAE1B,OADAx8E,KAAKyvF,UAAU1rD,EAAMy4C,GACdx8E,MAKR,OAFAuoE,EAAMA,MAAQA,EAEPA,IAGN,CAAC,GAAK,KAAKw3B,GAAG,CAAC,SAAS1lC,EAAQ5gE,EAAOD,GAGzC,IAAIyhF,EAAU5gB,EAAQ,IAEtB,SAAS2lC,EAAiBz3F,EAAOmK,GAChC,OAAOuoE,EAAQyd,MAAMnwF,GAAO,SAASguC,GACpC,OAAOA,EAAE7jC,WAAaA,KAIxB,SAASutF,EAAa13F,EAAO0pB,GAC5B1pB,EAAMnG,SAAQ,SAASm0C,EAAG78C,GAEzB,OADA68C,EAAE2pD,WAAaxmG,EACR68C,KAERhuC,EAAMgpB,MAAK,SAAStzB,EAAGiL,GACtB,IAAIi3F,EAAKluE,EAAU/oB,EAAIjL,EACnBmiG,EAAKnuE,EAAUh0B,EAAIiL,EACvB,OAAOi3F,EAAG9yB,SAAW+yB,EAAG/yB,OACvB8yB,EAAGD,WAAaE,EAAGF,WACnBC,EAAG9yB,OAAS+yB,EAAG/yB,UAEjB9kE,EAAMnG,SAAQ,SAASm0C,UACfA,EAAE2pD,cAwBXzmG,EAAOD,QAAU,CAChB6nC,SAAU,GAQVg/D,OAAQ,SAAS/gB,EAAOv7C,GAClBu7C,EAAMuT,QACVvT,EAAMuT,MAAQ,IAIf9uD,EAAKu8D,UAAYv8D,EAAKu8D,YAAa,EACnCv8D,EAAKrxB,SAAWqxB,EAAKrxB,UAAY,MACjCqxB,EAAKspC,OAAStpC,EAAKspC,QAAU,EAE7BiS,EAAMuT,MAAM3zF,KAAK6kC,IAQlBmrD,UAAW,SAAS5P,EAAOihB,GAC1B,IAAIp+F,EAAQm9E,EAAMuT,MAAQvT,EAAMuT,MAAM3sF,QAAQq6F,IAAe,GAC9C,IAAXp+F,GACHm9E,EAAMuT,MAAMl2E,OAAOxa,EAAO,IAU5Bq+F,UAAW,SAASlhB,EAAOv7C,EAAMhnC,GAMhC,IALA,IAGIyoB,EAHAi7E,EAAQ,CAAC,YAAa,WAAY,UAClCxhB,EAAOwhB,EAAMv+F,OACbxI,EAAI,EAGDA,EAAIulF,IAAQvlF,EAClB8rB,EAAOi7E,EAAM/mG,GACTqD,EAAQxB,eAAeiqB,KAC1Bue,EAAKve,GAAQzoB,EAAQyoB,KAYxBuwC,OAAQ,SAASupB,EAAOr+D,EAAOC,GAC9B,GAAKo+D,EAAL,CAIA,IAAIohB,EAAgBphB,EAAMviF,QAAQ+iG,QAAU,GACxC3+E,EAAU85D,EAAQl+E,QAAQ4jG,UAAUD,EAAcv/E,SAClDy/E,EAAcz/E,EAAQsC,KACtBo9E,EAAe1/E,EAAQuP,MACvBowE,EAAa3/E,EAAQqC,IACrBu9E,EAAgB5/E,EAAQyuC,OAExBoxC,EAAYhB,EAAiB1gB,EAAMuT,MAAO,QAC1CoO,EAAajB,EAAiB1gB,EAAMuT,MAAO,SAC3CqO,EAAWlB,EAAiB1gB,EAAMuT,MAAO,OACzCsO,EAAcnB,EAAiB1gB,EAAMuT,MAAO,UAC5CuO,EAAiBpB,EAAiB1gB,EAAMuT,MAAO,aAGnDoN,EAAae,GAAW,GACxBf,EAAagB,GAAY,GACzBhB,EAAaiB,GAAU,GACvBjB,EAAakB,GAAa,GAwC1B,IAAIE,EAAapgF,EAAQ2/E,EAAcC,EACnCS,EAAcpgF,EAAS4/E,EAAaC,EAEpCQ,EAAkBD,EAAc,EAGhCE,GAAoBvgF,EAJHogF,EAAa,IAIiBL,EAAU9+F,OAAS++F,EAAW/+F,QAG7Eu/F,GAAuBvgF,EAASqgF,IAAoBL,EAASh/F,OAASi/F,EAAYj/F,QAGlFw/F,EAAoBL,EACpBM,EAAqBL,EACrBM,EAAc,GAqBlB3mB,EAAQj4D,KAAKg+E,EAAUh9F,OAAOi9F,EAAYC,EAAUC,IAnBpD,SAA2BtjE,GAC1B,IAAImpD,EACAnG,EAAehjD,EAAIgjD,eAEnBA,GACHmG,EAAUnpD,EAAIk4B,OAAOl4B,EAAIyiE,UAAYe,EAAaK,EAAmBD,GACrEE,GAAsB3a,EAAQ9lE,SAE9B8lE,EAAUnpD,EAAIk4B,OAAOyrC,EAAkBG,GACvCD,GAAqB1a,EAAQ/lE,OAG9B2gF,EAAY1iG,KAAK,CAChB0hF,WAAYC,EACZmG,QAASA,EACTnpD,IAAKA,OAOP,IAAIgkE,EAA2B,EAC3BC,EAA4B,EAC5BC,EAAwB,EACxBC,EAA2B,EAE/B/mB,EAAQj4D,KAAKk+E,EAASl9F,OAAOm9F,IAAc,SAASc,GACnD,GAAIA,EAAcC,WAAY,CAC7B,IAAIC,EAAaF,EAAcC,aAC/BL,EAA2BlmG,KAAKyK,IAAIy7F,EAA0BM,EAAW1+E,MACzEq+E,EAA4BnmG,KAAKyK,IAAI07F,EAA2BK,EAAWzxE,WAI7EuqD,EAAQj4D,KAAKg+E,EAAUh9F,OAAOi9F,IAAa,SAASmB,GACnD,GAAIA,EAAYF,WAAY,CAC3B,IAAIC,EAAaC,EAAYF,aAC7BH,EAAwBpmG,KAAKyK,IAAI27F,EAAuBI,EAAW3+E,KACnEw+E,EAA2BrmG,KAAKyK,IAAI47F,EAA0BG,EAAWvyC,YAO3E,IAAIyyC,EAAsBzB,EACtB0B,EAAuBzB,EACvB0B,EAAsBzB,EACtB0B,EAAyBzB,EA2B7B9lB,EAAQj4D,KAAKg+E,EAAUh9F,OAAOi9F,GAAawB,GAE3CxnB,EAAQj4D,KAAKg+E,GAAW,SAASnjE,GAChCwkE,GAAuBxkE,EAAI5c,SAG5Bg6D,EAAQj4D,KAAKi+E,GAAY,SAASpjE,GACjCykE,GAAwBzkE,EAAI5c,SAI7Bg6D,EAAQj4D,KAAKk+E,EAASl9F,OAAOm9F,GAAcsB,GAG3CxnB,EAAQj4D,KAAKk+E,GAAU,SAASrjE,GAC/B0kE,GAAuB1kE,EAAI3c,UAG5B+5D,EAAQj4D,KAAKm+E,GAAa,SAAStjE,GAClC2kE,GAA0B3kE,EAAI3c,UAqB/B+5D,EAAQj4D,KAAKg+E,EAAUh9F,OAAOi9F,IAlB9B,SAA6BpjE,GAC5B,IAAI6kE,EAAaznB,EAAQ6d,cAAc8I,GAAa,SAAS5a,GAC5D,OAAOA,EAAQnpD,MAAQA,KAGpB8kE,EAAc,CACjBl/E,KAAM,EACNiN,MAAO,EACPlN,IAAK++E,EACL3yC,OAAQ4yC,GAGLE,GACH7kE,EAAIk4B,OAAO2sC,EAAW1b,QAAQ/lE,MAAO0gF,EAAoBgB,MAQ3DN,EAAsBzB,EACtB0B,EAAuBzB,EACvB0B,EAAsBzB,EACtB0B,EAAyBzB,EAEzB9lB,EAAQj4D,KAAKg+E,GAAW,SAASnjE,GAChCwkE,GAAuBxkE,EAAI5c,SAG5Bg6D,EAAQj4D,KAAKi+E,GAAY,SAASpjE,GACjCykE,GAAwBzkE,EAAI5c,SAG7Bg6D,EAAQj4D,KAAKk+E,GAAU,SAASrjE,GAC/B0kE,GAAuB1kE,EAAI3c,UAE5B+5D,EAAQj4D,KAAKm+E,GAAa,SAAStjE,GAClC2kE,GAA0B3kE,EAAI3c,UAI/B,IAAI0hF,EAAsBjnG,KAAKyK,IAAIy7F,EAA2BQ,EAAqB,GACnFA,GAAuBO,EACvBN,GAAwB3mG,KAAKyK,IAAI07F,EAA4BQ,EAAsB,GAEnF,IAAIO,EAAqBlnG,KAAKyK,IAAI27F,EAAwBQ,EAAqB,GAC/EA,GAAuBM,EACvBL,GAA0B7mG,KAAKyK,IAAI47F,EAA2BQ,EAAwB,GAKtF,IAAIM,EAAwB5hF,EAASqhF,EAAsBC,EACvDO,EAAuB9hF,EAAQohF,EAAsBC,EAErDS,IAAyBrB,GAAqBoB,IAA0BnB,IAC3E1mB,EAAQj4D,KAAKg+E,GAAW,SAASnjE,GAChCA,EAAI3c,OAAS4hF,KAGd7nB,EAAQj4D,KAAKi+E,GAAY,SAASpjE,GACjCA,EAAI3c,OAAS4hF,KAGd7nB,EAAQj4D,KAAKk+E,GAAU,SAASrjE,GAC1BA,EAAIyiE,YACRziE,EAAI5c,MAAQ8hF,MAId9nB,EAAQj4D,KAAKm+E,GAAa,SAAStjE,GAC7BA,EAAIyiE,YACRziE,EAAI5c,MAAQ8hF,MAIdpB,EAAqBmB,EACrBpB,EAAoBqB,GAIrB,IAAIt/E,EAAOm9E,EAAcgC,EACrBp/E,EAAMs9E,EAAa+B,EAwBvB5nB,EAAQj4D,KAAKg+E,EAAUh9F,OAAOk9F,GAAW8B,GAGzCv/E,GAAQi+E,EACRl+E,GAAOm+E,EAEP1mB,EAAQj4D,KAAKi+E,EAAY+B,GACzB/nB,EAAQj4D,KAAKm+E,EAAa6B,GAG1B1jB,EAAMmE,UAAY,CACjBhgE,KAAM4+E,EACN7+E,IAAK++E,EACL7xE,MAAO2xE,EAAsBX,EAC7B9xC,OAAQ2yC,EAAsBZ,GAI/B1mB,EAAQj4D,KAAKo+E,GAAgB,SAASvjE,GACrCA,EAAIpa,KAAO67D,EAAMmE,UAAUhgE,KAC3Boa,EAAIra,IAAM87D,EAAMmE,UAAUjgE,IAC1Bqa,EAAInN,MAAQ4uD,EAAMmE,UAAU/yD,MAC5BmN,EAAI+xB,OAAS0vB,EAAMmE,UAAU7zB,OAE7B/xB,EAAIk4B,OAAO2rC,EAAmBC,MAjL/B,SAASc,EAAO5kE,GACf,IAAI6kE,EAAaznB,EAAQ6d,cAAc8I,GAAa,SAASqB,GAC5D,OAAOA,EAAOplE,MAAQA,KAGvB,GAAI6kE,EACH,GAAI7kE,EAAIgjD,eAAgB,CACvB,IAAI8hB,EAAc,CACjBl/E,KAAM9nB,KAAKyK,IAAIi8F,EAAqBR,GACpCnxE,MAAO/0B,KAAKyK,IAAIk8F,EAAsBR,GACtCt+E,IAAK,EACLosC,OAAQ,GAKT/xB,EAAIk4B,OAAOl4B,EAAIyiE,UAAYe,EAAaK,EAAmBJ,EAAc,EAAGqB,QAE5E9kE,EAAIk4B,OAAO2sC,EAAW1b,QAAQ/lE,MAAO0gF,GAiHxC,SAASqB,EAASnlE,GACbA,EAAIgjD,gBACPhjD,EAAIpa,KAAOoa,EAAIyiE,UAAYM,EAAcyB,EACzCxkE,EAAInN,MAAQmN,EAAIyiE,UAAYr/E,EAAQ4/E,EAAewB,EAAsBX,EACzE7jE,EAAIra,IAAMA,EACVqa,EAAI+xB,OAASpsC,EAAMqa,EAAI3c,OAGvBsC,EAAMqa,EAAI+xB,SAIV/xB,EAAIpa,KAAOA,EACXoa,EAAInN,MAAQjN,EAAOoa,EAAI5c,MACvB4c,EAAIra,IAAM++E,EACV1kE,EAAI+xB,OAAS2yC,EAAsBZ,EAGnCl+E,EAAOoa,EAAInN,WAiCb,CAAC,GAAK,KAAKwyE,GAAG,CAAC,SAAS7oC,EAAQ5gE,EAAOD,GAGzC,IAAI6nC,EAAWg5B,EAAQ,IACnB4gB,EAAU5gB,EAAQ,IAEtBh5B,EAASi8C,KAAK,SAAU,CACvB/B,QAAS,KAQV9hF,EAAOD,QAAU,CAKhB2pG,SAAU,GAQVC,SAAU,EAMV7mD,SAAU,SAASg/B,GAClB,IAAI//E,EAAIwE,KAAKmjG,SACZ,GAAIn/F,OAAOu3E,GAASn5E,SAAQ,SAASihG,IACV,IAAvB7nG,EAAE0K,QAAQm9F,IACb7nG,EAAE0D,KAAKmkG,MAITrjG,KAAKojG,YAONE,WAAY,SAAS/nB,GACpB,IAAI//E,EAAIwE,KAAKmjG,SACZ,GAAIn/F,OAAOu3E,GAASn5E,SAAQ,SAASihG,GACrC,IAAIE,EAAM/nG,EAAE0K,QAAQm9F,IACP,IAATE,GACH/nG,EAAEmhB,OAAO4mF,EAAK,MAIhBvjG,KAAKojG,YAON1sC,MAAO,WACN12D,KAAKmjG,SAAW,GAChBnjG,KAAKojG,YAQNhwE,MAAO,WACN,OAAOpzB,KAAKmjG,SAASjhG,QAQtBshG,OAAQ,WACP,OAAOxjG,KAAKmjG,UAYb7rC,OAAQ,SAASgoB,EAAO3kC,EAAMvqC,GAC7B,IAEI1W,EAAG0D,EAAYimG,EAAQI,EAAQh/F,EAF/Bi/F,EAAc1jG,KAAK0jG,YAAYpkB,GAC/BL,EAAOykB,EAAYxhG,OAGvB,IAAKxI,EAAI,EAAGA,EAAIulF,IAAQvlF,EAIvB,GAAsB,mBADtB+K,GADA4+F,GADAjmG,EAAasmG,EAAYhqG,IACL2pG,QACJ1oD,OAEf8oD,EAAS,CAACnkB,GAAOt7E,OAAOoM,GAAQ,KACzBlR,KAAK9B,EAAWL,UACc,IAAjC0H,EAAO0E,MAAMk6F,EAAQI,IACxB,OAAO,EAKV,OAAO,GAQRC,YAAa,SAASpkB,GACrB,IAAIke,EAAQle,EAAMqkB,WAAarkB,EAAMqkB,SAAW,IAChD,GAAInG,EAAM56F,KAAO5C,KAAKojG,SACrB,OAAO5F,EAAMkG,YAGd,IAAInoB,EAAU,GACVmoB,EAAc,GACdlnB,EAAU8C,GAASA,EAAM9C,QAAW,GACpCz/E,EAAWy/E,EAAOz/E,SAAWy/E,EAAOz/E,QAAQw+E,SAAY,GA2B5D,OAzBAv7E,KAAKmjG,SAASn/F,OAAOw4E,EAAOjB,SAAW,IAAIn5E,SAAQ,SAASihG,GAE3D,IAAa,IADH9nB,EAAQr1E,QAAQm9F,GAC1B,CAIA,IAAIzgG,EAAKygG,EAAOzgG,GACZm9C,EAAOhjD,EAAQ6F,IACN,IAATm9C,KAIS,IAATA,IACHA,EAAOk7B,EAAQ73D,MAAMie,EAASrlC,OAAOu/E,QAAQ34E,KAG9C24E,EAAQr8E,KAAKmkG,GACbK,EAAYxkG,KAAK,CAChBmkG,OAAQA,EACRtmG,QAASgjD,GAAQ,UAInBy9C,EAAMkG,YAAcA,EACpBlG,EAAM56F,GAAK5C,KAAKojG,SACTM,GASR1R,YAAa,SAAS1S,UACdA,EAAMqkB,YAuNb,CAAC,GAAK,GAAG,GAAK,KAAKC,GAAG,CAAC,SAASvpC,EAAQ5gE,EAAOD,GAGjD,IAAI6nC,EAAWg5B,EAAQ,IACnBhQ,EAAUgQ,EAAQ,IAClB4gB,EAAU5gB,EAAQ,IAClBqhB,EAAQrhB,EAAQ,IA8DpB,SAASwpC,EAAgBxhB,GACxB,IACI3oF,EAAGulF,EADHv3D,EAAS,GAGb,IAAKhuB,EAAI,EAAGulF,EAAOoD,EAAMngF,OAAQxI,EAAIulF,IAAQvlF,EAC5CguB,EAAOxoB,KAAKmjF,EAAM3oF,GAAG8vB,OAGtB,OAAO9B,EAGR,SAASo8E,EAAallD,EAAOz8C,EAAOy7E,GACnC,IAAImmB,EAAYnlD,EAAM2jC,gBAAgBpgF,GAStC,OAPIy7E,IAEFmmB,GADa,IAAV5hG,GACWy8C,EAAM2jC,gBAAgB,GAAKwhB,GAAa,GAExCA,EAAYnlD,EAAM2jC,gBAAgBpgF,EAAQ,IAAM,GAGzD4hG,EAGR,SAASC,EAAgBxiC,EAASyiC,EAAM3G,GACvC,OAAOriB,EAAQ92E,QAAQ8/F,GACtBhpB,EAAQoiB,YAAY77B,EAAS87B,EAAM2G,GACnCziC,EAAQo8B,YAAYqG,GAAMhjF,MAG5B,SAASijF,EAAiBnnG,GACzB,IAAIqmF,EAAiBnI,EAAQmI,eACzB+gB,EAAiB9iE,EAASrlC,OAC1B2W,EAAOywE,EAAermF,EAAQqkB,SAAU+iF,EAAevE,iBACvDv6F,EAAQ+9E,EAAermF,EAAQqgG,UAAW+G,EAAetE,kBACzDuE,EAAShhB,EAAermF,EAAQo9B,WAAYgqE,EAAexE,mBAE/D,MAAO,CACNhtF,KAAMA,EACNtN,MAAOA,EACP++F,OAAQA,EACR9G,KAAMriB,EAAQiiB,WAAWvqF,EAAMtN,EAAO++F,IAIxC,SAASC,EAAgBtnG,GACxB,OAAOk+E,EAAQl+E,QAAQunG,aACtBrpB,EAAQmI,eAAermF,EAAQskB,WAAY,KAC3C45D,EAAQmI,eAAermF,EAAQqkB,SAAUigB,EAASrlC,OAAO4jG,kBA5G3Dv+D,EAASi8C,KAAK,QAAS,CACtBh4E,SAAS,EACToN,SAAU,OACVsjB,QAAQ,EAGR2nD,UAAW,CACVr4E,SAAS,EACT2+B,MAAO,qBACP+hD,UAAW,EACXue,YAAY,EACZC,iBAAiB,EACjBC,WAAW,EACXC,eAAgB,GAChBC,cAAe,EACfC,cAAe,mBACfC,mBAAoB,GACpBC,yBAA0B,EAC1BlnB,iBAAiB,EACjByL,WAAY,GACZC,iBAAkB,GAInByb,WAAY,CAEXz/F,SAAS,EAGT0/F,YAAa,GAGb3jF,WAAY,IAGZF,QAAS,CACRqC,IAAK,EACLosC,OAAQ,IAKVyyB,MAAO,CACN+J,aAAa,EACb6Y,YAAa,EACbC,YAAa,GACbC,QAAQ,EACRhkF,QAAS,EACT8Q,SAAS,EACT3sB,SAAS,EACT8/F,UAAU,EACVC,gBAAiB,EACjBC,YAAa,EAEb94D,SAAUkvC,EAAM6pB,WAAWp0F,OAC3B2pC,MAAO,GACPD,MAAO,MAuDTphD,EAAOD,QAAU6wD,EAAQl6B,OAAO,CAO/B+xE,WAAY,WAEX,MAAO,CACNz+E,KAFQzjB,KAECw1D,aAAe,EACxBhyC,IAHQxjB,KAGAmhD,YAAc,EACtBzwB,MAJQ1wB,KAIEy1D,cAAgB,EAC1B7F,OALQ5vD,KAKGohD,eAAiB,IAQ9BkhC,SAAU,WACT,OAAOtiF,KAAKwlG,QAObjU,kBAAmB,WAClB,IAAIlP,EAAQriF,KAAKjD,QAAQslF,MAWzB,IAAK,IAAIpnF,KAVW,IAAhBonF,EAAMvnC,QACTunC,EAAMvnC,MAAQ,CACbx1C,SAAS,KAGS,IAAhB+8E,EAAMxnC,QACTwnC,EAAMxnC,MAAQ,CACbv1C,SAAS,IAGK+8E,EACH,UAARpnF,GAA2B,UAARA,SACU,IAArBonF,EAAMvnC,MAAM7/C,KACtBonF,EAAMvnC,MAAM7/C,GAAOonF,EAAMpnF,SAEM,IAArBonF,EAAMxnC,MAAM5/C,KACtBonF,EAAMxnC,MAAM5/C,GAAOonF,EAAMpnF,MAK7BwqG,aAAc,WACbxqB,EAAQzuC,SAASxsC,KAAKjD,QAAQ0oG,aAAc,CAACzlG,QAG9C+1D,OAAQ,SAAS2vC,EAAUhhF,EAAWihF,GACrC,IACIjsG,EAAGulF,EAAMv3D,EAAQ8B,EAAO64D,EAAO4hB,EAD/BrlB,EAAK5+E,KAwDT,IApDA4+E,EAAG6mB,eAGH7mB,EAAG8mB,SAAWA,EACd9mB,EAAGl6D,UAAYA,EACfk6D,EAAG+mB,QAAU1qB,EAAQ9qD,OAAO,CAC3B1M,KAAM,EACNiN,MAAO,EACPlN,IAAK,EACLosC,OAAQ,GACN+1C,GACH/mB,EAAGgnB,iBAAmBhnB,EAAGgnB,kBAAoB,GAG7ChnB,EAAGinB,sBACHjnB,EAAGknB,gBACHlnB,EAAGmnB,qBAGHnnB,EAAGonB,mBACHpnB,EAAGqnB,sBACHrnB,EAAGsnB,kBASHtnB,EAAGunB,mBAIH9jB,EAAQzD,EAAGwnB,cAAgB,GAE3BxnB,EAAGynB,kBAEHznB,EAAG0nB,8BAKH5+E,EAASk3D,EAAG2nB,qBAAqBlkB,IAAUzD,EAAGyD,MAE9CzD,EAAG4nB,6BAEH5nB,EAAGyD,MAAQ36D,EAKNhuB,EAAI,EAAGulF,EAAOv3D,EAAOxlB,OAAQxI,EAAIulF,IAAQvlF,EAC7C8vB,EAAQ9B,EAAOhuB,IACfuqG,EAAO5hB,EAAM3oF,IAOZuqG,EAAKz6E,MAAQA,EALb64D,EAAMnjF,KAAK+kG,EAAO,CACjBz6E,MAAOA,EACPqxB,OAAO,IAoBV,OAbA+jC,EAAG4mB,OAASnjB,EAGZzD,EAAG6nB,8BACH7nB,EAAG8nB,wBACH9nB,EAAG+nB,6BAEH/nB,EAAGgoB,YACHhoB,EAAGioB,MACHjoB,EAAGkoB,WAEHloB,EAAGmoB,cAEInoB,EAAGoI,SAGX+f,YAAa,WACZ9rB,EAAQzuC,SAASxsC,KAAKjD,QAAQgqG,YAAa,CAAC/mG,QAK7C6lG,oBAAqB,WACpB5qB,EAAQzuC,SAASxsC,KAAKjD,QAAQ8oG,oBAAqB,CAAC7lG,QAErD8lG,cAAe,WACd,IAAIlnB,EAAK5+E,KAEL4+E,EAAGiC,gBAENjC,EAAG39D,MAAQ29D,EAAG8mB,SACd9mB,EAAGn7D,KAAO,EACVm7D,EAAGluD,MAAQkuD,EAAG39D,QAEd29D,EAAG19D,OAAS09D,EAAGl6D,UAGfk6D,EAAGp7D,IAAM,EACTo7D,EAAGhvB,OAASgvB,EAAG19D,QAIhB09D,EAAGppB,YAAc,EACjBopB,EAAGz9B,WAAa,EAChBy9B,EAAGnpB,aAAe,EAClBmpB,EAAGx9B,cAAgB,GAEpB2kD,mBAAoB,WACnB9qB,EAAQzuC,SAASxsC,KAAKjD,QAAQgpG,mBAAoB,CAAC/lG,QAIpDgmG,iBAAkB,WACjB/qB,EAAQzuC,SAASxsC,KAAKjD,QAAQipG,iBAAkB,CAAChmG,QAElDimG,oBAAqBhrB,EAAQ0L,KAC7Buf,gBAAiB,WAChBjrB,EAAQzuC,SAASxsC,KAAKjD,QAAQmpG,gBAAiB,CAAClmG,QAIjDmmG,iBAAkB,WACjBlrB,EAAQzuC,SAASxsC,KAAKjD,QAAQopG,iBAAkB,CAACnmG,QAElDomG,WAAYnrB,EAAQ0L,KACpB0f,gBAAiB,WAChBprB,EAAQzuC,SAASxsC,KAAKjD,QAAQspG,gBAAiB,CAACrmG,QAGjDsmG,4BAA6B,WAC5BrrB,EAAQzuC,SAASxsC,KAAKjD,QAAQupG,4BAA6B,CAACtmG,QAE7DumG,qBAAsB,WACrB,IAEIS,EAFKhnG,KAESjD,QAAQslF,MAFjBriF,KAGNqiF,MAHMriF,KAGKqiF,MAAMhgF,IAAI2kG,EAASC,cAAgBD,EAASx6D,SAAUxsC,OAErEwmG,2BAA4B,WAC3BvrB,EAAQzuC,SAASxsC,KAAKjD,QAAQypG,2BAA4B,CAACxmG,QAK5DymG,4BAA6B,WAC5BxrB,EAAQzuC,SAASxsC,KAAKjD,QAAQ0pG,4BAA6B,CAACzmG,QAE7D0mG,sBAAuB,WACtB,IAAI9nB,EAAK5+E,KACLwhE,EAAUod,EAAG4E,IACbwjB,EAAWpoB,EAAG7hF,QAAQslF,MACtB36D,EAASm8E,EAAgBjlB,EAAG4mB,QAI5B0B,EAAWhD,EAAiB8C,GAChCxlC,EAAQ87B,KAAO4J,EAAS5J,KAExB,IAAI6J,EAAgBH,EAAS/B,aAAe,EAE5C,GAAIv9E,EAAOxlB,QAAU08E,EAAG7hF,QAAQuI,SAAWs5E,EAAGiC,eAS7C,IARA,IAEIumB,EAFAC,EAAqBpsB,EAAQoiB,YAAY77B,EAAS0lC,EAAS5J,KAAM51E,EAAQk3D,EAAGgnB,kBAC5E0B,EAAaD,EAIbE,EAAY3oB,EAAG2D,gBAAgB,GAAK3D,EAAG2D,gBAAgB,GAAK,EAGzD+kB,EAAaC,GAAaJ,EAAgBH,EAAS9B,aAAa,CACtE,IAAIsC,EAAevsB,EAAQ0e,UAAUwN,GAIrC,GAHAC,EAAczrG,KAAKk4C,IAAI2zD,GACT7rG,KAAKq4C,IAAIwzD,GAELH,EAAqBzoB,EAAGl6D,UAAW,CAEpDyiF,IACA,MAGDA,IACAG,EAAaF,EAAcC,EAI7BzoB,EAAGuoB,cAAgBA,GAEpBR,2BAA4B,WAC3B1rB,EAAQzuC,SAASxsC,KAAKjD,QAAQ4pG,2BAA4B,CAAC3mG,QAK5D4mG,UAAW,WACV3rB,EAAQzuC,SAASxsC,KAAKjD,QAAQ6pG,UAAW,CAAC5mG,QAE3C6mG,IAAK,WACJ,IAAIjoB,EAAK5+E,KAELgnF,EAAUpI,EAAGoI,QAAU,CAC1B/lE,MAAO,EACPC,OAAQ,GAGLwG,EAASm8E,EAAgBjlB,EAAG4mB,QAE5BzlD,EAAO6+B,EAAG7hF,QACViqG,EAAWjnD,EAAKsiC,MAChBolB,EAAiB1nD,EAAKglD,WACtB2C,EAAe3nD,EAAK49B,UACpBr4E,EAAUy6C,EAAKz6C,QACfu7E,EAAejC,EAAGiC,eAElBqmB,EAAWhD,EAAiB8C,GAC5BtC,EAAiB3kD,EAAK49B,UAAU+mB,eAkBpC,GAbC1d,EAAQ/lE,MAFL4/D,EAEajC,EAAG+oB,cAAgB/oB,EAAG8mB,SAAW9mB,EAAG+mB,QAAQliF,KAAOm7D,EAAG+mB,QAAQj1E,MAAQkuD,EAAG8mB,SAEzEpgG,GAAWoiG,EAAajD,UAAYC,EAAiB,EAKrE1d,EAAQ9lE,OADL2/D,EACcv7E,GAAWoiG,EAAajD,UAAYC,EAAiB,EAErD9lB,EAAGl6D,UAIjB+iF,EAAeniG,SAAWA,EAAS,CACtC,IAEIsiG,EAFuBvD,EAAgBoD,GACnBxsB,EAAQl+E,QAAQ4jG,UAAU8G,EAAetmF,SACND,OAEvD2/D,EACHmG,EAAQ9lE,QAAU0mF,EAElB5gB,EAAQ/lE,OAAS2mF,EAKnB,GAAIZ,EAAS1hG,SAAWA,EAAS,CAChC,IAAIuiG,EAAmB5sB,EAAQoiB,YAAYze,EAAG4E,IAAK0jB,EAAS5J,KAAM51E,EAAQk3D,EAAGgnB,kBACzEkC,EAA4B7sB,EAAQ+iB,mBAAmBt2E,GACvDqgF,EAA4B,GAAhBb,EAASv0F,KACrBq1F,EAAcppB,EAAG7hF,QAAQslF,MAAMlhE,QAEnC,GAAI0/D,EAAc,CAEjBjC,EAAGqpB,kBAAoBJ,EAEvB,IAAIL,EAAevsB,EAAQ0e,UAAU/a,EAAGuoB,eACpCC,EAAczrG,KAAKk4C,IAAI2zD,GAIvBU,EAHcvsG,KAAKq4C,IAAIwzD,GAGMK,EAC7BX,EAASv0F,KAAOm1F,EAChBC,GAAaD,EAA4B,GAC1CC,EAEH/gB,EAAQ9lE,OAASvlB,KAAKoD,IAAI6/E,EAAGl6D,UAAWsiE,EAAQ9lE,OAASgnF,EAAcF,GAEvEppB,EAAG4E,IAAI8Z,KAAO4J,EAAS5J,KACvB,IAAI6K,EAAkBnE,EAAgBplB,EAAG4E,IAAK97D,EAAO,GAAIw/E,EAAS5J,MAC9D8K,EAAiBpE,EAAgBplB,EAAG4E,IAAK97D,EAAOA,EAAOxlB,OAAS,GAAIglG,EAAS5J,MAIxD,IAArB1e,EAAGuoB,eACNvoB,EAAGppB,YAAgC,WAAlBzV,EAAKrtC,SAAyB00F,EAAce,EAAmB,EAAKf,EAAcW,EAAa,EAChHnpB,EAAGnpB,aAAiC,WAAlB1V,EAAKrtC,SAAyB00F,EAAcW,EAAa,EAAKX,EAAcgB,EAAkB,IAEhHxpB,EAAGppB,YAAc2yC,EAAkB,EAAI,EACvCvpB,EAAGnpB,aAAe2yC,EAAiB,EAAI,QAKpCpB,EAAS7B,OACZ0C,EAAmB,EAInBA,GAAoBG,EAAcD,EAGnC/gB,EAAQ/lE,MAAQtlB,KAAKoD,IAAI6/E,EAAG8mB,SAAU1e,EAAQ/lE,MAAQ4mF,GAEtDjpB,EAAGz9B,WAAa+lD,EAASv0F,KAAO,EAChCisE,EAAGx9B,cAAgB8lD,EAASv0F,KAAO,EAIrCisE,EAAGypB,gBAEHzpB,EAAG39D,MAAQ+lE,EAAQ/lE,MACnB29D,EAAG19D,OAAS8lE,EAAQ9lE,QAOrBmnF,cAAe,WACd,IAAIzpB,EAAK5+E,KACL4+E,EAAG+mB,UACN/mB,EAAGppB,YAAc75D,KAAKyK,IAAIw4E,EAAGppB,YAAcopB,EAAG+mB,QAAQliF,KAAM,GAC5Dm7D,EAAGz9B,WAAaxlD,KAAKyK,IAAIw4E,EAAGz9B,WAAay9B,EAAG+mB,QAAQniF,IAAK,GACzDo7D,EAAGnpB,aAAe95D,KAAKyK,IAAIw4E,EAAGnpB,aAAempB,EAAG+mB,QAAQj1E,MAAO,GAC/DkuD,EAAGx9B,cAAgBzlD,KAAKyK,IAAIw4E,EAAGx9B,cAAgBw9B,EAAG+mB,QAAQ/1C,OAAQ,KAIpEk3C,SAAU,WACT7rB,EAAQzuC,SAASxsC,KAAKjD,QAAQ+pG,SAAU,CAAC9mG,QAI1C6gF,aAAc,WACb,MAAiC,QAA1B7gF,KAAKjD,QAAQ2V,UAAgD,WAA1B1S,KAAKjD,QAAQ2V,UAExDi1F,YAAa,WACZ,OAAQ3nG,KAAKjD,QAAQujG,WAItB3d,cAAe,SAAS2lB,GAEvB,GAAIrtB,EAAQiH,cAAcomB,GACzB,OAAO10F,IAGR,GAAwB,iBAAb00F,IAA0B5xD,SAAS4xD,GAC7C,OAAO10F,IAGR,GAAI00F,EACH,GAAItoG,KAAK6gF,gBACR,QAAmBljF,IAAf2qG,EAAS/1E,EACZ,OAAOvyB,KAAK2iF,cAAc2lB,EAAS/1E,QAE9B,QAAmB50B,IAAf2qG,EAAS7xD,EACnB,OAAOz2C,KAAK2iF,cAAc2lB,EAAS7xD,GAKrC,OAAO6xD,GAQRC,iBAAkBttB,EAAQ0L,KAS1B1E,iBAAkBhH,EAAQ0L,KAO1B6hB,iBAAkBvtB,EAAQ0L,KAM1BpE,gBAAiB,SAASpgF,GACzB,IAAIy8E,EAAK5+E,KACLg2B,EAAS4oD,EAAG7hF,QAAQi5B,OACxB,GAAI4oD,EAAGiC,eAAgB,CACtB,IACI0mB,GADa3oB,EAAG39D,OAAS29D,EAAGppB,YAAcopB,EAAGnpB,eACpB95D,KAAKyK,IAAKw4E,EAAG4mB,OAAOtjG,QAAU8zB,EAAS,EAAI,GAAK,GACzEyyE,EAASlB,EAAYplG,EAASy8E,EAAGppB,YAEjCx/B,IACHyyE,GAASlB,EAAY,GAGtB,IAAImB,EAAW9pB,EAAGn7D,KAAO9nB,KAAKyiC,MAAMqqE,GAEpC,OADAC,GAAY9pB,EAAG+oB,cAAgB/oB,EAAG+mB,QAAQliF,KAAO,EAGlD,IAAImZ,EAAcgiD,EAAG19D,QAAU09D,EAAGz9B,WAAay9B,EAAGx9B,eAClD,OAAOw9B,EAAGp7D,IAAOrhB,GAASy6B,GAAegiD,EAAG4mB,OAAOtjG,OAAS,KAO7DmiF,mBAAoB,SAASskB,GAC5B,IAAI/pB,EAAK5+E,KACT,GAAI4+E,EAAGiC,eAAgB,CACtB,IACI+nB,GADahqB,EAAG39D,OAAS29D,EAAGppB,YAAcopB,EAAGnpB,eACjBkzC,EAAW/pB,EAAGppB,YAE1CkzC,EAAW9pB,EAAGn7D,KAAO9nB,KAAKyiC,MAAMwqE,GAEpC,OADAF,GAAY9pB,EAAG+oB,cAAgB/oB,EAAG+mB,QAAQliF,KAAO,EAGlD,OAAOm7D,EAAGp7D,IAAOmlF,EAAU/pB,EAAG19D,QAO/By/D,aAAc,WACb,OAAO3gF,KAAKiiF,iBAAiBjiF,KAAK6oG,iBAGnCA,aAAc,WACb,IACI9pG,EADKiB,KACIjB,IACTqH,EAFKpG,KAEIoG,IAEb,OAJSpG,KAICosF,YAAc,EACvBrtF,EAAM,GAAKqH,EAAM,EAAIA,EACrBrH,EAAM,GAAKqH,EAAM,EAAIrH,EACrB,GAOF+pG,UAAW,SAASzmB,GACnB,IAAI0mB,EASArvG,EAAGuqG,EAGH+E,EAXApqB,EAAK5+E,KACL6gF,EAAejC,EAAGiC,eAClBooB,EAAcrqB,EAAG7hF,QAAQslF,MAAMvnC,MAC/BouD,EAAY7mB,EAAMngF,OAClBinG,EAAuBluB,EAAQ0e,UAAU/a,EAAGuoB,eAC5CC,EAAczrG,KAAKk4C,IAAIs1D,GACvBC,EAAsBxqB,EAAGqpB,kBAAoBb,EAC7CplG,EAAS,GAuBb,IAlBIinG,EAAYI,gBACfL,EAAWC,EAAYI,eAGpBxoB,IACHkoB,GAAY,GAEPK,EAAsBH,EAAY5D,iBAAmB6D,EAAatqB,EAAG39D,OAAS29D,EAAGppB,YAAcopB,EAAGnpB,gBACtGszC,EAAY,EAAIptG,KAAKuE,OAAQkpG,EAAsBH,EAAY5D,iBAAmB6D,GAActqB,EAAG39D,OAAS29D,EAAGppB,YAAcopB,EAAGnpB,iBAK7HuzC,GAAYE,EAAYF,IAC3BD,EAAYptG,KAAKyK,IAAI2iG,EAAWptG,KAAKuE,MAAMgpG,EAAYF,MAIpDtvG,EAAI,EAAGA,EAAIwvG,EAAWxvG,IAC1BuqG,EAAO5hB,EAAM3oF,IAGCqvG,EAAY,GAAKrvG,EAAIqvG,EAAY,GAAOrvG,EAAIqvG,GAAc,GAAKrvG,EAAIqvG,GAAaG,IAC5ExvG,IAAMwvG,EAAY,UAE5BjF,EAAKz6E,MAEbxnB,EAAO9C,KAAK+kG,GAEb,OAAOjiG,GAKRshF,KAAM,SAASG,GACd,IAAI7E,EAAK5+E,KACLjD,EAAU6hF,EAAG7hF,QACjB,GAAKA,EAAQuI,QAAb,CAIA,IAAIk8D,EAAUod,EAAG4E,IACb2gB,EAAiB9iE,EAASrlC,OAC1BitG,EAAclsG,EAAQslF,MAAMvnC,MAC5BwuD,EAAmBvsG,EAAQslF,MAAMxnC,OAASouD,EAC1CtrB,EAAY5gF,EAAQ4gF,UACpBonB,EAAahoG,EAAQgoG,WAErBwE,EAAiC,IAArB3qB,EAAGuoB,cACftmB,EAAejC,EAAGiC,eAElBwB,EAAQ4mB,EAAY7D,SAAWxmB,EAAGkqB,UAAUlqB,EAAG0D,YAAc1D,EAAG0D,WAChEknB,EAAgBvuB,EAAQmI,eAAe6lB,EAAYQ,UAAWtF,EAAezE,kBAC7EwH,EAAWhD,EAAiB+E,GAC5BS,EAAqBzuB,EAAQmI,eAAekmB,EAAiBG,UAAWtF,EAAezE,kBACvFiK,EAAgBzF,EAAiBoF,GAEjCM,EAAKjsB,EAAU8mB,UAAY9mB,EAAU+mB,eAAiB,EAEtDmF,EAAsB5uB,EAAQmI,eAAe2hB,EAAW0E,UAAWtF,EAAezE,kBAClFoK,EAAiB5F,EAAiBa,GAClCgF,EAAoB9uB,EAAQl+E,QAAQ4jG,UAAUoE,EAAW5jF,SACzDgoF,EAAuBluB,EAAQ0e,UAAU/a,EAAGuoB,eAE5C6C,EAAc,GAEdC,EAAYrrB,EAAG7hF,QAAQ4gF,UAAUqI,UACjCkkB,EAAkC,UAArBntG,EAAQ2V,SAAuBksE,EAAGn7D,KAAOm7D,EAAGluD,MAAQu5E,EAAYL,EAC7EO,EAAgC,UAArBptG,EAAQ2V,SAAuBksE,EAAGn7D,KAAOmmF,EAAKhrB,EAAGluD,MAC5D05E,EAAkC,WAArBrtG,EAAQ2V,SAAwBksE,EAAGp7D,IAAMymF,EAAYrrB,EAAGhvB,OAASg6C,EAAKK,EACnFI,EAAgC,WAArBttG,EAAQ2V,SAAwBksE,EAAGp7D,IAAMymF,EAAYL,EAAKhrB,EAAGhvB,OAASq6C,EAqKrF,GAnKAhvB,EAAQj4D,KAAKq/D,GAAO,SAAS4hB,EAAM9hG,GAElC,IAAI84E,EAAQiH,cAAc+hB,EAAKz6E,OAA/B,CAIA,IACIw8D,EAAWskB,EAAWjhB,EAAYC,EAelCihB,EAAKC,EAAKC,EAAKC,EAAKC,EAAIC,EAAI13E,EAAIu8C,EAAIo7B,EAAQC,EAhB5CthF,EAAQy6E,EAAKz6E,MAEbrnB,IAAUy8E,EAAGmsB,eAAiBhuG,EAAQi5B,SAAW2nD,EAAUC,iBAE9DoI,EAAYrI,EAAUgnB,cACtB2F,EAAY3sB,EAAUinB,cACtBvb,EAAa1L,EAAUknB,mBACvBvb,EAAmB3L,EAAUmnB,2BAE7B9e,EAAY/K,EAAQkF,sBAAsBxC,EAAUqI,UAAW7jF,GAC/DmoG,EAAYrvB,EAAQkF,sBAAsBxC,EAAU15C,MAAO9hC,GAC3DknF,EAAapO,EAAQmI,eAAezF,EAAU0L,WAAY8a,EAAe9a,YACzEC,EAAmBrO,EAAQmI,eAAezF,EAAU2L,iBAAkB6a,EAAe7a,mBAKtF,IAAI0hB,EAAY,SACZC,EAAe,SACfjD,EAAciB,EAAY9nF,QAE9B,GAAI0/D,EAAc,CACjB,IAAIqqB,EAAetB,EAAK5B,EAEC,WAArBjrG,EAAQ2V,UAEXu4F,EAAgB1B,EAAoB,SAAR,MAC5ByB,EAAazB,EAAuB,QAAX,SACzBuB,EAASlsB,EAAGp7D,IAAM0nF,IAGlBD,EAAgB1B,EAAuB,SAAX,SAC5ByB,EAAazB,EAAuB,OAAX,SACzBuB,EAASlsB,EAAGhvB,OAASs7C,GAGtB,IAAIC,EAAarH,EAAallB,EAAIz8E,EAAOw7E,EAAUC,iBAAmByE,EAAMngF,OAAS,GACjFipG,EAAavsB,EAAGn7D,OACnB6mF,EAAY,iBAEba,GAAclwB,EAAQsf,WAAWvU,GAEjC6kB,EAASjsB,EAAG2D,gBAAgBpgF,GAAS8mG,EAAY3D,YAEjDiF,EAAME,EAAME,EAAKz3E,EAAKi4E,EACtBX,EAAMJ,EACNM,EAAML,EACNO,EAAKnnB,EAAUjgE,IACfisD,EAAKgU,EAAU7zB,OAASq6C,MAClB,CACN,IACImB,EADAl4C,EAA8B,SAArBn2D,EAAQ2V,SAGjBu2F,EAAY9D,QACf6F,EAAY93C,EAAS,OAAS,QAC9Bk4C,EAAepD,IAEfgD,EAAY93C,EAAS,QAAU,OAC/Bk4C,EAAexB,EAAK5B,GAGrB6C,EAAS33C,EAAS0rB,EAAGluD,MAAQ06E,EAAexsB,EAAGn7D,KAAO2nF,EAEtD,IAAIC,EAAavH,EAAallB,EAAIz8E,EAAOw7E,EAAUC,iBAAmByE,EAAMngF,OAAS,GACjFmpG,EAAazsB,EAAGp7D,MACnB8mF,EAAY,iBAEbe,GAAcpwB,EAAQsf,WAAWvU,GAEjC8kB,EAASlsB,EAAG2D,gBAAgBpgF,GAAS8mG,EAAY3D,YAEjDiF,EAAML,EACNO,EAAMN,EACNQ,EAAKlnB,EAAUhgE,KACfyP,EAAKuwD,EAAU/yD,MAAQu5E,EACvBO,EAAME,EAAME,EAAKn7B,EAAK47B,EAGvBrB,EAAY9qG,KAAK,CAChBqrG,IAAKA,EACLC,IAAKA,EACLC,IAAKA,EACLC,IAAKA,EACLC,GAAIA,EACJC,GAAIA,EACJ13E,GAAIA,EACJu8C,GAAIA,EACJo7B,OAAQA,EACRC,OAAQA,EACRQ,QAAStlB,EACTulB,QAASjB,EACTkB,aAAcniB,EACdoiB,mBAAoBniB,EACpB7E,UAAW,EAAI0kB,EACf3/E,MAAOA,EACPqxB,MAAOopD,EAAKppD,MACZowD,aAAcA,EACdD,UAAWA,QAKb/vB,EAAQj4D,KAAKgnF,GAAa,SAAS0B,GA0BlC,GAzBI/tB,EAAUr4E,UACbk8D,EAAQmqC,OACRnqC,EAAQwkB,UAAY0lB,EAAWJ,QAC/B9pC,EAAQukB,YAAc2lB,EAAWH,QAC7B/pC,EAAQoqC,cACXpqC,EAAQoqC,YAAYF,EAAWF,cAC/BhqC,EAAQqqC,eAAiBH,EAAWD,oBAGrCjqC,EAAQsqC,YAEJnuB,EAAU8mB,YACbjjC,EAAQuqC,OAAOL,EAAWnB,IAAKmB,EAAWlB,KAC1ChpC,EAAQwqC,OAAON,EAAWjB,IAAKiB,EAAWhB,MAGvC/sB,EAAU6mB,kBACbhjC,EAAQuqC,OAAOL,EAAWf,GAAIe,EAAWd,IACzCppC,EAAQwqC,OAAON,EAAWx4E,GAAIw4E,EAAWj8B,KAG1CjO,EAAQyqC,SACRzqC,EAAQ0qC,WAGLjD,EAAY3jG,QAAS,CAExBk8D,EAAQmqC,OACRnqC,EAAQ/iB,UAAUitD,EAAWb,OAAQa,EAAWZ,QAChDtpC,EAAQ3iB,OAAO6sD,EAAWjnB,UAC1BjjB,EAAQ87B,KAAOoO,EAAW7wD,MAAQ8uD,EAAcrM,KAAO4J,EAAS5J,KAChE97B,EAAQskB,UAAY4lB,EAAW7wD,MAAQ6uD,EAAqBF,EAC5DhoC,EAAQypC,aAAeS,EAAWT,aAClCzpC,EAAQwpC,UAAYU,EAAWV,UAE/B,IAAIxhF,EAAQkiF,EAAWliF,MACvB,GAAIyxD,EAAQ92E,QAAQqlB,GAKnB,IAJA,IAAI2iF,EAAY3iF,EAAMtnB,OAClBmf,EAA6B,IAAhB6lF,EAASv0F,KACtB8jC,EAAImoC,EAAGiC,eAAiB,GAAKx/D,GAAc8qF,EAAY,GAAK,EAEvDzyG,EAAI,EAAGA,EAAIyyG,IAAazyG,EAEhC8nE,EAAQ4qC,SAAS,GAAK5iF,EAAM9vB,GAAI,EAAG+8C,GAEnCA,GAAKp1B,OAGNmgD,EAAQ4qC,SAAS5iF,EAAO,EAAG,GAE5Bg4C,EAAQ0qC,cAINnH,EAAWz/F,QAAS,CAEvB,IAAI+mG,EACAC,EACA7nB,EAAW,EACX8nB,EAAiBlI,EAAgBU,GAAc,EAEnD,GAAIlkB,EACHwrB,EAAcztB,EAAGn7D,MAASm7D,EAAGluD,MAAQkuD,EAAGn7D,MAAQ,EAChD6oF,EAAmC,WAArBvvG,EAAQ2V,SACnBksE,EAAGhvB,OAAS28C,EAAiBxC,EAAkBn6C,OAC/CgvB,EAAGp7D,IAAM+oF,EAAiBxC,EAAkBvmF,QACzC,CACN,IAAI0vC,EAA8B,SAArBn2D,EAAQ2V,SACrB25F,EAAcn5C,EACX0rB,EAAGn7D,KAAO8oF,EAAiBxC,EAAkBvmF,IAC7Co7D,EAAGluD,MAAQ67E,EAAiBxC,EAAkBvmF,IACjD8oF,EAAc1tB,EAAGp7D,KAAQo7D,EAAGhvB,OAASgvB,EAAGp7D,KAAO,EAC/CihE,EAAWvxB,GAAU,GAAMv3D,KAAKm4C,GAAK,GAAMn4C,KAAKm4C,GAGjD0tB,EAAQmqC,OACRnqC,EAAQ/iB,UAAU4tD,EAAaC,GAC/B9qC,EAAQ3iB,OAAO4lC,GACfjjB,EAAQwpC,UAAY,SACpBxpC,EAAQypC,aAAe,SACvBzpC,EAAQskB,UAAY+jB,EACpBroC,EAAQ87B,KAAOwM,EAAexM,KAC9B97B,EAAQ4qC,SAASrH,EAAWC,YAAa,EAAG,GAC5CxjC,EAAQ0qC,UAGT,GAAIvuB,EAAU4mB,WAAY,CAEzB/iC,EAAQwkB,UAAY/K,EAAQkF,sBAAsBxC,EAAUqI,UAAW,GACvExkB,EAAQukB,YAAc9K,EAAQkF,sBAAsBxC,EAAU15C,MAAO,GACrE,IAAI0mE,EAAK/rB,EAAGn7D,KACRyP,EAAK0rD,EAAGluD,MAAQu5E,EAChBW,EAAKhsB,EAAGp7D,IACRisD,EAAKmP,EAAGhvB,OAASq6C,EAEjB1P,EAAatf,EAAQsf,WAAW/4B,EAAQwkB,WACxCnF,GACH+pB,EAAKn7B,EAA0B,QAArB1yE,EAAQ2V,SAAqBksE,EAAGhvB,OAASgvB,EAAGp7D,IACtDonF,GAAMrQ,EACN9qB,GAAM8qB,IAENoQ,EAAKz3E,EAA0B,SAArBn2B,EAAQ2V,SAAsBksE,EAAGluD,MAAQkuD,EAAGn7D,KACtDknF,GAAMpQ,EACNrnE,GAAMqnE,GAGP/4B,EAAQsqC,YACRtqC,EAAQuqC,OAAOpB,EAAIC,GACnBppC,EAAQwqC,OAAO94E,EAAIu8C,GACnBjO,EAAQyqC,eAKT,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKO,GAAG,CAAC,SAASnyC,EAAQ5gE,EAAOD,GAGjE,IAAI6nC,EAAWg5B,EAAQ,IACnB4gB,EAAU5gB,EAAQ,IAClBghB,EAAUhhB,EAAQ,IAEtB5gE,EAAOD,QAAU,CAGhBizG,aAAc,GAKdprE,SAAU,GACVqrE,kBAAmB,SAAS5oG,EAAM6oG,EAAkBC,GACnD5sG,KAAKysG,aAAa3oG,GAAQ6oG,EAC1B3sG,KAAKqhC,SAASv9B,GAAQm3E,EAAQ73D,MAAMwpF,IAErCtb,oBAAqB,SAASxtF,GAC7B,OAAO9D,KAAKysG,aAAalxG,eAAeuI,GAAQ9D,KAAKysG,aAAa3oG,QAAQnG,GAE3E46F,iBAAkB,SAASz0F,GAE1B,OAAO9D,KAAKqhC,SAAS9lC,eAAeuI,GAAQm3E,EAAQ2a,MAAM,GAAI,CAACv0D,EAASud,MAAO5+C,KAAKqhC,SAASv9B,KAAU,IAExG+oG,oBAAqB,SAAS/oG,EAAMgpG,GAC1B9sG,KACFqhC,SAAS9lC,eAAeuI,KADtB9D,KAELqhC,SAASv9B,GAAQm3E,EAAQ9qD,OAFpBnwB,KAE8BqhC,SAASv9B,GAAOgpG,KAGxDrb,kBAAmB,SAASnS,GAE3BrE,EAAQj4D,KAAKs8D,EAAM/B,QAAQ,SAAS3+B,GAEnCA,EAAM0hD,UAAY1hD,EAAM7hD,QAAQujG,UAChC1hD,EAAMlsC,SAAWksC,EAAM7hD,QAAQ2V,SAC/BksC,EAAMyuB,OAASzuB,EAAM7hD,QAAQswE,OAC7BgO,EAAQglB,OAAO/gB,EAAO1gC,SAKvB,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKmuD,GAAG,CAAC,SAAS1yC,EAAQ5gE,EAAOD,GAGzD,IAAIyhF,EAAU5gB,EAAQ,IAMtB5gE,EAAOD,QAAU,CAKhB+rG,WAAY,CAOXp0F,OAAQ,SAASxW,GAChB,OAAOsgF,EAAQ92E,QAAQxJ,GAASA,EAAQ,GAAKA,GAW9C2gD,OAAQ,SAAS0xD,EAAW7qG,EAAOkgF,GAElC,IAAInU,EAAQmU,EAAMngF,OAAS,EAAImgF,EAAM,GAAKA,EAAM,GAAKA,EAAM,GAAKA,EAAM,GAGlE1mF,KAAKm4B,IAAIo6C,GAAS,GACjB8+B,IAAcrxG,KAAKuE,MAAM8sG,KAE5B9+B,EAAQ8+B,EAAYrxG,KAAKuE,MAAM8sG,IAIjC,IAAIC,EAAWhyB,EAAQue,MAAM79F,KAAKm4B,IAAIo6C,IAClCg/B,EAAa,GAEjB,GAAkB,IAAdF,EAEH,GADcrxG,KAAKyK,IAAIzK,KAAKm4B,IAAIuuD,EAAM,IAAK1mF,KAAKm4B,IAAIuuD,EAAMA,EAAMngF,OAAS,KAC3D,KAAM,CACnB,IAAIirG,EAAUlyB,EAAQue,MAAM79F,KAAKm4B,IAAIk5E,IACrCE,EAAaF,EAAUI,cAAczxG,KAAKuE,MAAMitG,GAAWxxG,KAAKuE,MAAM+sG,QAChE,CACN,IAAII,GAAc,EAAI1xG,KAAKuE,MAAM+sG,GACjCI,EAAa1xG,KAAKyK,IAAIzK,KAAKoD,IAAIsuG,EAAY,IAAK,GAChDH,EAAaF,EAAU36E,QAAQg7E,QAGhCH,EAAa,IAGd,OAAOA,GAGRI,YAAa,SAASN,EAAW7qG,EAAOkgF,GACvC,IAAIkrB,EAASP,EAAarxG,KAAK22B,IAAI,GAAI32B,KAAKuE,MAAM+6E,EAAQue,MAAMwT,KAEhE,OAAkB,IAAdA,EACI,IACc,IAAXO,GAA2B,IAAXA,GAA2B,IAAXA,GAA0B,IAAVprG,GAAeA,IAAUkgF,EAAMngF,OAAS,EAC3F8qG,EAAUI,gBAEX,OAKR,CAAC,GAAK,KAAKI,GAAG,CAAC,SAASnzC,EAAQ5gE,EAAOD,GAGzC,IAAI6nC,EAAWg5B,EAAQ,IACnBhQ,EAAUgQ,EAAQ,IAClB4gB,EAAU5gB,EAAQ,IAEtBh5B,EAASi8C,KAAK,SAAU,CACvBU,SAAU,CACTqW,SAAS,EACT7U,OAAQ,KACR3kF,KAAM,UACN6X,SAAU,UACV2gF,WAAW,EACX/xE,gBAAiB,kBACjBmsF,eAAgB,OAChBC,aAAc,EACdC,kBAAmB,EACnBC,eAAgB,OAChBC,WAAY,OACZC,YAAa,EACbC,cAAe,OACfC,UAAW,OACXC,gBAAiB,OACjBC,cAAe,EACfC,gBAAiB,EACjBC,gBAAiB,OACjBC,YAAa,OACbC,SAAU,EACVC,SAAU,EACVC,aAAc,EACdC,UAAW,EACXC,aAAc,EACdC,mBAAoB,OACpBC,eAAe,EACf1/D,YAAa,gBACbkxC,YAAa,EACbnC,UAAW,CAEV4wB,YAAa5zB,EAAQ0L,KACrBvvB,MAAO,SAAS03C,EAAc/mG,GAE7B,IAAIqvD,EAAQ,GACR1vC,EAAS3f,EAAK2f,OACdqnF,EAAarnF,EAASA,EAAOxlB,OAAS,EAE1C,GAAI4sG,EAAa5sG,OAAS,EAAG,CAC5B,IAAI6hC,EAAO+qE,EAAa,GAEpB/qE,EAAKs6C,OACRjnB,EAAQrzB,EAAKs6C,OACH0wB,EAAa,GAAKhrE,EAAK5hC,MAAQ4sG,IACzC33C,EAAQ1vC,EAAOqc,EAAK5hC,QAItB,OAAOi1D,GAER43C,WAAY/zB,EAAQ0L,KAGpBsoB,WAAYh0B,EAAQ0L,KAGpBuoB,YAAaj0B,EAAQ0L,KACrBn9D,MAAO,SAAS68D,EAAat+E,GAC5B,IAAIyhB,EAAQzhB,EAAKo2E,SAASkI,EAAYjI,cAAc50D,OAAS,GAM7D,OAJIA,IACHA,GAAS,MAEVA,GAAS68D,EAAYnI,OACd10D,GAER2lF,WAAY,SAAS9oB,EAAa/G,GACjC,IAEI1gE,EAFO0gE,EAAMqC,eAAe0E,EAAYjI,cACnBr2E,KAAKs+E,EAAYlkF,OACjBu0F,MACzB,MAAO,CACNxnD,YAAatwB,EAAKswB,YAClB5tB,gBAAiB1C,EAAK0C,kBAGxB8tF,eAAgB,WACf,OAAOpvG,KAAKskF,SAASypB,eAEtBsB,WAAYp0B,EAAQ0L,KAGpB2oB,UAAWr0B,EAAQ0L,KAGnB4oB,aAAct0B,EAAQ0L,KACtB6oB,OAAQv0B,EAAQ0L,KAChB8oB,YAAax0B,EAAQ0L,SAKxB,IAAI+oB,EAAc,CAOjBC,QAAS,SAAShvD,GACjB,IAAKA,EAASz+C,OACb,OAAO,EAGR,IAAIxI,EAAGwY,EACHqgB,EAAI,EACJkkB,EAAI,EACJrjB,EAAQ,EAEZ,IAAK15B,EAAI,EAAGwY,EAAMyuC,EAASz+C,OAAQxI,EAAIwY,IAAOxY,EAAG,CAChD,IAAI8M,EAAKm6C,EAASjnD,GAClB,GAAI8M,GAAMA,EAAGmzB,WAAY,CACxB,IAAIrnB,EAAM9L,EAAGywF,kBACb1kE,GAAKjgB,EAAIigB,EACTkkB,GAAKnkC,EAAImkC,IACPrjB,GAIJ,MAAO,CACNb,EAAG52B,KAAKyiC,MAAM7L,EAAIa,GAClBqjB,EAAG96C,KAAKyiC,MAAMqY,EAAIrjB,KAWpBgsE,QAAS,SAASz+C,EAAUivD,GAC3B,IAGIl2G,EAAGwY,EAAK29F,EAHRt9E,EAAIq9E,EAAcr9E,EAClBkkB,EAAIm5D,EAAcn5D,EAClBooD,EAAc9kE,OAAOm+D,kBAGzB,IAAKx+F,EAAI,EAAGwY,EAAMyuC,EAASz+C,OAAQxI,EAAIwY,IAAOxY,EAAG,CAChD,IAAI8M,EAAKm6C,EAASjnD,GAClB,GAAI8M,GAAMA,EAAGmzB,WAAY,CACxB,IAAIynD,EAAS56E,EAAGu4F,iBACZ/kG,EAAIihF,EAAQmf,sBAAsBwV,EAAexuB,GAEjDpnF,EAAI6kG,IACPA,EAAc7kG,EACd61G,EAAiBrpG,IAKpB,GAAIqpG,EAAgB,CACnB,IAAIC,EAAKD,EAAe5Y,kBACxB1kE,EAAIu9E,EAAGv9E,EACPkkB,EAAIq5D,EAAGr5D,EAGR,MAAO,CACNlkB,EAAGA,EACHkkB,EAAGA,KAQN,SAASs5D,EAAaC,EAAatsF,GAClC,IAAIugB,EAAQg3C,EAAQh3C,MAAM+rE,GAC1B,OAAO/rE,EAAM4kC,MAAMnlD,EAAUugB,EAAM4kC,SAASE,aAI7C,SAASknC,EAAavvB,EAAMwvB,GAU3B,OATIA,IACCj1B,EAAQ92E,QAAQ+rG,GAEnBhsG,MAAM5I,UAAU4D,KAAKiK,MAAMu3E,EAAMwvB,GAEjCxvB,EAAKxhF,KAAKgxG,IAILxvB,EASR,SAASyvB,EAAcvjG,GACtB,OAAoB,iBAARA,GAAoBA,aAAexO,SAAWwO,EAAI1G,QAAQ,OAAS,EACvE0G,EAAIhN,MAAM,MAEXgN,EA2BR,SAASwjG,EAAaC,GACrB,IAAIlM,EAAiB9iE,EAASrlC,OAC1BonF,EAAiBnI,EAAQmI,eAE7B,MAAO,CAENmrB,SAAU8B,EAAY9B,SACtBD,SAAU+B,EAAY/B,SACtBgC,OAAQD,EAAYC,OACpBC,OAAQF,EAAYE,OAGpBxC,cAAesC,EAAYtC,cAC3ByC,gBAAiBptB,EAAeitB,EAAYI,eAAgBtM,EAAexE,mBAC3E+Q,eAAgBttB,EAAeitB,EAAYM,cAAexM,EAAetE,kBACzE+Q,WAAYP,EAAYrC,UACxB6C,aAAcztB,EAAeitB,EAAYQ,aAAc1M,EAAevE,iBACtEkO,YAAauC,EAAYvC,YAGzBF,eAAgByC,EAAYzC,eAC5BkD,iBAAkB1tB,EAAeitB,EAAYU,gBAAiB5M,EAAexE,mBAC7EqR,gBAAiB5tB,EAAeitB,EAAY5C,eAAgBtJ,EAAetE,kBAC3EoR,cAAe7tB,EAAeitB,EAAYY,cAAe9M,EAAevE,iBACxEsR,YAAab,EAAYxC,WACzBH,aAAc2C,EAAY3C,aAC1BC,kBAAmB0C,EAAY1C,kBAG/BS,gBAAiBiC,EAAYjC,gBAC7B+C,kBAAmB/tB,EAAeitB,EAAYe,iBAAkBjN,EAAexE,mBAC/E0R,iBAAkBjuB,EAAeitB,EAAYpC,gBAAiB9J,EAAetE,kBAC7EyR,eAAgBluB,EAAeitB,EAAYiB,eAAgBnN,EAAevE,iBAC1E2R,aAAclB,EAAYhC,YAC1BH,cAAemC,EAAYnC,cAC3BC,gBAAiBkC,EAAYlC,gBAG7BM,UAAW4B,EAAY5B,UACvBC,aAAc2B,EAAY3B,aAC1BptF,gBAAiB+uF,EAAY/uF,gBAC7BoC,QAAS,EACT8tF,sBAAuBnB,EAAY1B,mBACnCC,cAAeyB,EAAYzB,cAC3B1/D,YAAamhE,EAAYnhE,YACzBkxC,YAAaiwB,EAAYjwB,aA0M3B,SAASqxB,EAAwBjlE,GAChC,OAAOyjE,EAAa,GAAIE,EAAc3jE,KAGzB/yC,EAAOD,QAAU6wD,EAAQl6B,OAAO,CAC7CyrD,WAAY,WACX57E,KAAKigF,OAASmwB,EAAapwG,KAAKskF,UAChCtkF,KAAK0xG,YAAc,IAKpBC,SAAU,WACT,IAAI/yB,EAAK5+E,KACL+/C,EAAO6+B,EAAG0F,SACVrG,EAAYl+B,EAAKk+B,UAEjB4wB,EAAc5wB,EAAU4wB,YAAY1lG,MAAMy1E,EAAIl6E,WAC9C0yD,EAAQ6mB,EAAU7mB,MAAMjuD,MAAMy1E,EAAIl6E,WAClCsqG,EAAa/wB,EAAU+wB,WAAW7lG,MAAMy1E,EAAIl6E,WAE5CktG,EAAQ,GAKZ,OAJAA,EAAQ3B,EAAa2B,EAAOzB,EAActB,IAC1C+C,EAAQ3B,EAAa2B,EAAOzB,EAAc/4C,IAC1Cw6C,EAAQ3B,EAAa2B,EAAOzB,EAAcnB,KAM3C6C,cAAe,WACd,OAAOJ,EAAwBzxG,KAAKskF,SAASrG,UAAUgxB,WAAW9lG,MAAMnJ,KAAM0E,aAI/EotG,QAAS,SAAShD,EAAc/mG,GAC/B,IAAI62E,EAAK5+E,KACLi+E,EAAYW,EAAG0F,SAASrG,UACxB8zB,EAAY,GAehB,OAbA92B,EAAQj4D,KAAK8rF,GAAc,SAASzoB,GACnC,IAAI2rB,EAAW,CACd1yF,OAAQ,GACRsyF,MAAO,GACPnsF,MAAO,IAERwqF,EAAa+B,EAAS1yF,OAAQ6wF,EAAclyB,EAAUixB,YAAYr1G,KAAK+kF,EAAIyH,EAAat+E,KACxFkoG,EAAa+B,EAASJ,MAAO3zB,EAAUz0D,MAAM3vB,KAAK+kF,EAAIyH,EAAat+E,IACnEkoG,EAAa+B,EAASvsF,MAAO0qF,EAAclyB,EAAUoxB,WAAWx1G,KAAK+kF,EAAIyH,EAAat+E,KAEtFgqG,EAAU7yG,KAAK8yG,MAGTD,GAIRE,aAAc,WACb,OAAOR,EAAwBzxG,KAAKskF,SAASrG,UAAUqxB,UAAUnmG,MAAMnJ,KAAM0E,aAK9EwtG,UAAW,WACV,IAAItzB,EAAK5+E,KACLi+E,EAAYW,EAAG0F,SAASrG,UAExBsxB,EAAetxB,EAAUsxB,aAAapmG,MAAMy1E,EAAIl6E,WAChD8qG,EAASvxB,EAAUuxB,OAAOrmG,MAAMy1E,EAAIl6E,WACpC+qG,EAAcxxB,EAAUwxB,YAAYtmG,MAAMy1E,EAAIl6E,WAE9CktG,EAAQ,GAKZ,OAJAA,EAAQ3B,EAAa2B,EAAOzB,EAAcZ,IAC1CqC,EAAQ3B,EAAa2B,EAAOzB,EAAcX,IAC1CoC,EAAQ3B,EAAa2B,EAAOzB,EAAcV,KAK3C15C,OAAQ,SAASu+B,GAChB,IA8BI56F,EAAGwY,EAzXkBgR,EACtB+gE,EACAC,EACA/hF,EACAi8E,EAuVCQ,EAAK5+E,KACL+/C,EAAO6+B,EAAG0F,SAKV6tB,EAAgBvzB,EAAGqB,OACnBM,EAAQ3B,EAAGqB,OAASmwB,EAAarwD,GACjCl6B,EAAS+4D,EAAGwzB,QAEZrqG,EAAO62E,EAAGqT,MAGV3mD,EAAY,CACfglE,OAAQ6B,EAAc7B,OACtBC,OAAQ4B,EAAc5B,QAEnB8B,EAAkB,CACrB9/E,EAAG4/E,EAAc5/E,EACjBkkB,EAAG07D,EAAc17D,GAEd67D,EAAc,CACjBrxF,MAAOkxF,EAAclxF,MACrBC,OAAQixF,EAAcjxF,QAEnB+1E,EAAkB,CACrB1kE,EAAG4/E,EAAcI,OACjB97D,EAAG07D,EAAcK,QAKlB,GAAI3sF,EAAO3jB,OAAQ,CAClBq+E,EAAM78D,QAAU,EAEhB,IAAI+uF,EAAc,GACdC,EAAkB,GACtBzb,EAAkByY,EAAY3vD,EAAKrtC,UAAU7Y,KAAK+kF,EAAI/4D,EAAQ+4D,EAAG+zB,gBAEjE,IAAI7D,EAAe,GACnB,IAAKp1G,EAAI,EAAGwY,EAAM2T,EAAO3jB,OAAQxI,EAAIwY,IAAOxY,EAC3Co1G,EAAa5vG,MApYUgkB,EAoYa2C,EAAOnsB,GAnY1CuqF,SACAC,SACA/hF,SACAi8E,SAHA6F,EAAS/gE,EAAQw8D,QACjBwE,EAAShhE,EAAQ28D,SAAW38D,EAAQgmE,OACpC/mF,EAAQ+gB,EAAQ88D,OAChB5B,EAAel7D,EAAQ68D,cAEpB,CACN1B,OAAQ4F,EAASA,EAAOskB,iBAAiBpmG,EAAOi8E,GAAgB,GAChEF,OAAQgG,EAASA,EAAOqkB,iBAAiBpmG,EAAOi8E,GAAgB,GAChEj8E,MAAOA,EACPi8E,aAAcA,EACd7rD,EAAGrP,EAAQ+8D,OAAO1tD,EAClBkkB,EAAGvzB,EAAQ+8D,OAAOxpC,KA4XbsJ,EAAKz9C,SACRwsG,EAAeA,EAAaxsG,QAAO,SAASrE,GAC3C,OAAO8hD,EAAKz9C,OAAOrE,EAAG8J,OAKpBg4C,EAAK6yD,WACR9D,EAAeA,EAAav9E,MAAK,SAAStzB,EAAGiL,GAC5C,OAAO62C,EAAK6yD,SAAS30G,EAAGiL,EAAGnB,OAK7BkzE,EAAQj4D,KAAK8rF,GAAc,SAASzoB,GACnCosB,EAAYvzG,KAAK6gD,EAAKk+B,UAAUkxB,WAAWt1G,KAAK+kF,EAAIyH,EAAazH,EAAG4J,SACpEkqB,EAAgBxzG,KAAK6gD,EAAKk+B,UAAUmxB,eAAev1G,KAAK+kF,EAAIyH,EAAazH,EAAG4J,YAK7EjI,EAAMnpB,MAAQwnB,EAAG+yB,SAAS7C,EAAc/mG,GACxCw4E,EAAM0uB,WAAarwB,EAAGizB,cAAc/C,EAAc/mG,GAClDw4E,EAAMxiD,KAAO6gD,EAAGkzB,QAAQhD,EAAc/mG,GACtCw4E,EAAM+uB,UAAY1wB,EAAGqzB,aAAanD,EAAc/mG,GAChDw4E,EAAMivB,OAAS5wB,EAAGszB,UAAUpD,EAAc/mG,GAG1Cw4E,EAAMhuD,EAAI52B,KAAKyiC,MAAM64D,EAAgB1kE,GACrCguD,EAAM9pC,EAAI96C,KAAKyiC,MAAM64D,EAAgBxgD,GACrC8pC,EAAMiuB,aAAezuD,EAAKyuD,aAC1BjuB,EAAMkyB,YAAcA,EACpBlyB,EAAMmyB,gBAAkBA,EAGxBnyB,EAAMsyB,WAAa/D,EAGnBwD,EAtWH,SAAwBhjB,EAAS/O,GAChC,IAAIiD,EAAM8L,EAAQ9G,OAAOhF,IAErBtiE,EAA0B,EAAjBq/D,EAAM+tB,SACfrtF,EAAQ,EAGR8c,EAAOwiD,EAAMxiD,KACb+0E,EAAqB/0E,EAAK4U,QAAO,SAASvf,EAAO4+E,GACpD,OAAO5+E,EAAQ4+E,EAAS1yF,OAAOpd,OAAS8vG,EAASJ,MAAM1vG,OAAS8vG,EAASvsF,MAAMvjB,SAC7E,GACH4wG,GAAsBvyB,EAAM0uB,WAAW/sG,OAASq+E,EAAM+uB,UAAUptG,OAEhE,IAAI6wG,EAAiBxyB,EAAMnpB,MAAMl1D,OAC7B8wG,EAAkBzyB,EAAMivB,OAAOttG,OAC/B+uG,EAAgB1wB,EAAM0wB,cACtBJ,EAAetwB,EAAMswB,aACrBS,EAAiB/wB,EAAM+wB,eAE3BpwF,GAAU6xF,EAAiB9B,EAC3B/vF,GAAU6xF,GAAkBA,EAAiB,GAAKxyB,EAAMmtB,aAAe,EACvExsF,GAAU6xF,EAAiBxyB,EAAMotB,kBAAoB,EACrDzsF,GAAU4xF,EAAqBjC,EAC/B3vF,GAAU4xF,GAAsBA,EAAqB,GAAKvyB,EAAMutB,YAAc,EAC9E5sF,GAAU8xF,EAAkBzyB,EAAM4tB,gBAAkB,EACpDjtF,GAAU8xF,EAAmB1B,EAC7BpwF,GAAU8xF,GAAmBA,EAAkB,GAAKzyB,EAAM2tB,cAAgB,EAG1E,IAAI+E,EAAe,EACfC,EAAe,SAASpqB,GAC3B7nE,EAAQtlB,KAAKyK,IAAI6a,EAAOuiE,EAAIoa,YAAY9U,GAAM7nE,MAAQgyF,IA4BvD,OAzBAzvB,EAAI8Z,KAAOriB,EAAQiiB,WAAW+T,EAAe1wB,EAAMywB,gBAAiBzwB,EAAMuwB,kBAC1E71B,EAAQj4D,KAAKu9D,EAAMnpB,MAAO87C,GAG1B1vB,EAAI8Z,KAAOriB,EAAQiiB,WAAW2T,EAActwB,EAAMmwB,eAAgBnwB,EAAMiwB,iBACxEv1B,EAAQj4D,KAAKu9D,EAAM0uB,WAAWjrG,OAAOu8E,EAAM+uB,WAAY4D,GAGvDD,EAAe1yB,EAAMquB,cAAiBiC,EAAe,EAAK,EAC1D51B,EAAQj4D,KAAK+a,GAAM,SAASi0E,GAC3B/2B,EAAQj4D,KAAKgvF,EAAS1yF,OAAQ4zF,GAC9Bj4B,EAAQj4D,KAAKgvF,EAASJ,MAAOsB,GAC7Bj4B,EAAQj4D,KAAKgvF,EAASvsF,MAAOytF,MAI9BD,EAAe,EAGfzvB,EAAI8Z,KAAOriB,EAAQiiB,WAAWoU,EAAgB/wB,EAAM8wB,iBAAkB9wB,EAAM4wB,mBAC5El2B,EAAQj4D,KAAKu9D,EAAMivB,OAAQ0D,GAKpB,CACNjyF,MAHDA,GAAS,EAAIs/D,EAAMguB,SAIlBrtF,OAAQA,GAySOiyF,CAAenzG,KAAMugF,GAGnC8xB,EA5NH,SAA4Be,EAAIzgG,EAAM24B,EAAWg0C,GAEhD,IAAI/sD,EAAI6gF,EAAG7gF,EACPkkB,EAAI28D,EAAG38D,EAEPg4D,EAAY2E,EAAG3E,UACfD,EAAe4E,EAAG5E,aAClBE,EAAe0E,EAAG1E,aAClB4B,EAAShlE,EAAUglE,OACnBC,EAASjlE,EAAUilE,OACnB8C,EAAiB5E,EAAYD,EAC7B8E,EAAmB5E,EAAeF,EAkCtC,MAhCe,UAAX8B,EACH/9E,GAAK5f,EAAKsO,MACW,WAAXqvF,KACV/9E,GAAM5f,EAAKsO,MAAQ,GACXtO,EAAKsO,MAAQq+D,EAAMr+D,QAC1BsR,EAAI+sD,EAAMr+D,MAAQtO,EAAKsO,OAEpBsR,EAAI,IACPA,EAAI,IAIS,QAAXg+E,EACH95D,GAAK48D,EAEL58D,GADqB,WAAX85D,EACL59F,EAAKuO,OAASmyF,EAEb1gG,EAAKuO,OAAS,EAGN,WAAXqvF,EACY,SAAXD,EACH/9E,GAAK8gF,EACgB,UAAX/C,IACV/9E,GAAK8gF,GAEe,SAAX/C,EACV/9E,GAAK+gF,EACgB,UAAXhD,IACV/9E,GAAK+gF,GAGC,CACN/gF,EAAGA,EACHkkB,EAAGA,GA6KgB88D,CAAmBhzB,EAAO+xB,EAF5ChnE,EAnSH,SAA4BgkD,EAAS38E,GACpC,IAYI6gG,EAAI34F,EACJ44F,EAAKC,EACLC,EAdApzB,EAAQ+O,EAAQrP,OAChBX,EAAQgQ,EAAQ9G,OAChB/E,EAAY6L,EAAQ9G,OAAO/E,UAC3B6sB,EAAS,SACTC,EAAS,SAEThwB,EAAM9pC,EAAI9jC,EAAKuO,OAClBqvF,EAAS,MACChwB,EAAM9pC,EAAK6oC,EAAMp+D,OAASvO,EAAKuO,SACzCqvF,EAAS,UAMV,IAAIqD,GAAQnwB,EAAUhgE,KAAOggE,EAAU/yD,OAAS,EAC5CmjF,GAAQpwB,EAAUjgE,IAAMigE,EAAU7zB,QAAU,EAEjC,WAAX2gD,GACHiD,EAAK,SAASjhF,GACb,OAAOA,GAAKqhF,GAEb/4F,EAAK,SAAS0X,GACb,OAAOA,EAAIqhF,KAGZJ,EAAK,SAASjhF,GACb,OAAOA,GAAM5f,EAAKsO,MAAQ,GAE3BpG,EAAK,SAAS0X,GACb,OAAOA,GAAM+sD,EAAMr+D,MAAStO,EAAKsO,MAAQ,IAI3CwyF,EAAM,SAASlhF,GACd,OAAOA,EAAI5f,EAAKsO,MAAQs/D,EAAMkuB,UAAYluB,EAAMiuB,aAAelvB,EAAMr+D,OAEtEyyF,EAAM,SAASnhF,GACd,OAAOA,EAAI5f,EAAKsO,MAAQs/D,EAAMkuB,UAAYluB,EAAMiuB,aAAe,GAEhEmF,EAAK,SAASl9D,GACb,OAAOA,GAAKo9D,EAAO,MAAQ,UAGxBL,EAAGjzB,EAAMhuD,IACZ+9E,EAAS,OAGLmD,EAAIlzB,EAAMhuD,KACb+9E,EAAS,SACTC,EAASoD,EAAGpzB,EAAM9pC,KAET57B,EAAG0lE,EAAMhuD,KACnB+9E,EAAS,QAGLoD,EAAInzB,EAAMhuD,KACb+9E,EAAS,SACTC,EAASoD,EAAGpzB,EAAM9pC,KAIpB,IAAIsJ,EAAOuvC,EAAQhL,SACnB,MAAO,CACNgsB,OAAQvwD,EAAKuwD,OAASvwD,EAAKuwD,OAASA,EACpCC,OAAQxwD,EAAKwwD,OAASxwD,EAAKwwD,OAASA,GAiOvBuD,CAAmB9zG,KAAMsyG,GAE+B1zB,EAAG4J,aAEvEjI,EAAM78D,QAAU,EAoBjB,OAjBA68D,EAAM+vB,OAAShlE,EAAUglE,OACzB/vB,EAAMgwB,OAASjlE,EAAUilE,OACzBhwB,EAAMhuD,EAAI8/E,EAAgB9/E,EAC1BguD,EAAM9pC,EAAI47D,EAAgB57D,EAC1B8pC,EAAMt/D,MAAQqxF,EAAYrxF,MAC1Bs/D,EAAMr/D,OAASoxF,EAAYpxF,OAG3Bq/D,EAAMgyB,OAAStb,EAAgB1kE,EAC/BguD,EAAMiyB,OAASvb,EAAgBxgD,EAE/BmoC,EAAGqB,OAASM,EAER+T,GAAWv0C,EAAKy/B,QACnBz/B,EAAKy/B,OAAO3lF,KAAK+kF,EAAI2B,GAGf3B,GAGRm1B,UAAW,SAASC,EAAcrhG,GACjC,IAAI6wE,EAAMxjF,KAAKwoF,OAAOhF,IAClB4vB,EAAKpzG,KAAK02F,MACVud,EAAgBj0G,KAAKk0G,iBAAiBF,EAAcrhG,EAAMygG,GAE9D5vB,EAAIwoB,OAAOiI,EAActJ,GAAIsJ,EAAcrJ,IAC3CpnB,EAAIwoB,OAAOiI,EAAc/gF,GAAI+gF,EAAcxkC,IAC3C+T,EAAIwoB,OAAOiI,EAAcE,GAAIF,EAAcG,KAE5CF,iBAAkB,SAASF,EAAcrhG,EAAMygG,GAC9C,IAAIzI,EAAIz3E,EAAIihF,EAAIvJ,EAAIn7B,EAAI2kC,EACpB3F,EAAY2E,EAAG3E,UACfC,EAAe0E,EAAG1E,aAClB4B,EAAS8C,EAAG9C,OACZC,EAAS6C,EAAG7C,OACZ8D,EAAML,EAAazhF,EACnB+hF,EAAMN,EAAav9D,EACnBx1B,EAAQtO,EAAKsO,MACbC,EAASvO,EAAKuO,OAElB,GAAe,WAAXqvF,EACH9gC,EAAK6kC,EAAOpzF,EAAS,EAEN,SAAXovF,GAEHp9E,GADAy3E,EAAK0J,GACK5F,EACV0F,EAAKxJ,EAELC,EAAKn7B,EAAKg/B,EACV2F,EAAK3kC,EAAKg/B,IAGVv7E,GADAy3E,EAAK0J,EAAMpzF,GACDwtF,EACV0F,EAAKxJ,EAELC,EAAKn7B,EAAKg/B,EACV2F,EAAK3kC,EAAKg/B,QAgBX,GAbe,SAAX6B,GAEH3F,GADAz3E,EAAKmhF,EAAM3F,EAAgBD,GACjBA,EACV0F,EAAKjhF,EAAKu7E,GACW,UAAX6B,GAEV3F,GADAz3E,EAAKmhF,EAAMpzF,EAAQytF,EAAeD,GACxBA,EACV0F,EAAKjhF,EAAKu7E,IAGV9D,GADAz3E,EAAKkgF,EAAGb,QACE9D,EACV0F,EAAKjhF,EAAKu7E,GAEI,QAAX8B,EAEH9gC,GADAm7B,EAAK0J,GACK7F,EACV2F,EAAKxJ,MACC,CAENn7B,GADAm7B,EAAK0J,EAAMpzF,GACDutF,EACV2F,EAAKxJ,EAEL,IAAI2J,EAAMJ,EACVA,EAAKxJ,EACLA,EAAK4J,EAGP,MAAO,CAAC5J,GAAIA,EAAIz3E,GAAIA,EAAIihF,GAAIA,EAAIvJ,GAAIA,EAAIn7B,GAAIA,EAAI2kC,GAAIA,IAGrDI,UAAW,SAASxpB,EAAIooB,EAAI5vB,EAAK9/D,GAChC,IAAI0zC,EAAQg8C,EAAGh8C,MAEf,GAAIA,EAAMl1D,OAAQ,CACjBshF,EAAIwnB,UAAYoI,EAAGlC,YACnB1tB,EAAIynB,aAAe,MAEnB,IAMIvxG,EAAGwY,EANH++F,EAAgBmC,EAAGnC,cACnBvD,EAAe0F,EAAG1F,aAMtB,IAJAlqB,EAAIsC,UAAYiqB,EAAaqD,EAAGxF,eAAgBlqF,GAChD8/D,EAAI8Z,KAAOriB,EAAQiiB,WAAW+T,EAAemC,EAAGpC,gBAAiBoC,EAAGtC,kBAG/Dp3G,EAAI,EAAGwY,EAAMklD,EAAMl1D,OAAQxI,EAAIwY,IAAOxY,EAC1C8pF,EAAI4oB,SAASh1C,EAAM19D,GAAIsxF,EAAGz4D,EAAGy4D,EAAGv0C,GAChCu0C,EAAGv0C,GAAKw6D,EAAgBvD,EAEpBh0G,EAAI,IAAM09D,EAAMl1D,SACnB8oF,EAAGv0C,GAAK28D,EAAGzF,kBAAoBD,KAMnC+G,SAAU,SAASzpB,EAAIooB,EAAI5vB,EAAK9/D,GAC/B,IAAImtF,EAAeuC,EAAGvC,aAClB/C,EAAcsF,EAAGtF,YACjB/vE,EAAOq1E,EAAGr1E,KAEdylD,EAAIwnB,UAAYoI,EAAGxC,WACnBptB,EAAIynB,aAAe,MACnBznB,EAAI8Z,KAAOriB,EAAQiiB,WAAW2T,EAAcuC,EAAG1C,eAAgB0C,EAAG5C,iBAGlE,IAAIkE,EAAe,EACfC,EAAiB,SAAS7rB,GAC7BtF,EAAI4oB,SAAStjB,EAAMkC,EAAGz4D,EAAImiF,EAAc1pB,EAAGv0C,GAC3Cu0C,EAAGv0C,GAAKo6D,EAAe/C,GAIxBtqB,EAAIsC,UAAYiqB,EAAaqD,EAAGrF,cAAerqF,GAC/Cu3D,EAAQj4D,KAAKowF,EAAGnE,WAAY0F,GAE5B,IAAIC,EAAiBxB,EAAGxE,cACxB8F,EAAeE,EAAkB/D,EAAe,EAAK,EAGrD51B,EAAQj4D,KAAK+a,GAAM,SAASi0E,EAAUt4G,GACrC,IAAIm7G,EAAY9E,EAAaqD,EAAGV,gBAAgBh5G,GAAIgqB,GACpD8/D,EAAIsC,UAAY+uB,EAChB55B,EAAQj4D,KAAKgvF,EAAS1yF,OAAQq1F,GAE9B15B,EAAQj4D,KAAKgvF,EAASJ,OAAO,SAAS9oB,GAEjC8rB,IAEHpxB,EAAIsC,UAAYiqB,EAAaqD,EAAG5B,sBAAuB9tF,GACvD8/D,EAAIsxB,SAAS9pB,EAAGz4D,EAAGy4D,EAAGv0C,EAAGo6D,EAAcA,GAGvCrtB,EAAIwC,UAAY,EAChBxC,EAAIuC,YAAcgqB,EAAaqD,EAAGX,YAAY/4G,GAAGw1C,YAAaxrB,GAC9D8/D,EAAIuxB,WAAW/pB,EAAGz4D,EAAGy4D,EAAGv0C,EAAGo6D,EAAcA,GAGzCrtB,EAAIsC,UAAYiqB,EAAaqD,EAAGX,YAAY/4G,GAAG4nB,gBAAiBoC,GAChE8/D,EAAIsxB,SAAS9pB,EAAGz4D,EAAI,EAAGy4D,EAAGv0C,EAAI,EAAGo6D,EAAe,EAAGA,EAAe,GAClErtB,EAAIsC,UAAY+uB,GAGjBF,EAAe7rB,MAGhB7N,EAAQj4D,KAAKgvF,EAASvsF,MAAOkvF,MAI9BD,EAAe,EAGfz5B,EAAQj4D,KAAKowF,EAAG9D,UAAWqF,GAC3B3pB,EAAGv0C,GAAKq3D,GAGTkH,WAAY,SAAShqB,EAAIooB,EAAI5vB,EAAK9/D,GACjC,IAAI8rF,EAAS4D,EAAG5D,OAEZA,EAAOttG,SACV8oF,EAAGv0C,GAAK28D,EAAGjF,gBAEX3qB,EAAIwnB,UAAYoI,EAAG7B,aACnB/tB,EAAIynB,aAAe,MAEnBznB,EAAIsC,UAAYiqB,EAAaqD,EAAGhF,gBAAiB1qF,GACjD8/D,EAAI8Z,KAAOriB,EAAQiiB,WAAWkW,EAAG9B,eAAgB8B,EAAG/B,iBAAkB+B,EAAGjC,mBAEzEl2B,EAAQj4D,KAAKwsF,GAAQ,SAAS1mB,GAC7BtF,EAAI4oB,SAAStjB,EAAMkC,EAAGz4D,EAAGy4D,EAAGv0C,GAC5Bu0C,EAAGv0C,GAAK28D,EAAG9B,eAAiB8B,EAAGlF,mBAKlC+G,eAAgB,SAASjqB,EAAIooB,EAAI5vB,EAAK8uB,EAAa5uF,GAClD8/D,EAAIsC,UAAYiqB,EAAaqD,EAAG9xF,gBAAiBoC,GACjD8/D,EAAIuC,YAAcgqB,EAAaqD,EAAGlkE,YAAaxrB,GAC/C8/D,EAAIwC,UAAYotB,EAAGhzB,YACnB,IAAIkwB,EAAS8C,EAAG9C,OACZC,EAAS6C,EAAG7C,OACZh+E,EAAIy4D,EAAGz4D,EACPkkB,EAAIu0C,EAAGv0C,EACPx1B,EAAQqxF,EAAYrxF,MACpBC,EAASoxF,EAAYpxF,OACrBwjE,EAAS0uB,EAAG1E,aAEhBlrB,EAAIsoB,YACJtoB,EAAIuoB,OAAOx5E,EAAImyD,EAAQjuC,GACR,QAAX85D,GACHvwG,KAAK+zG,UAAU/oB,EAAIsnB,GAEpB9uB,EAAIwoB,OAAOz5E,EAAItR,EAAQyjE,EAAQjuC,GAC/B+sC,EAAI0xB,iBAAiB3iF,EAAItR,EAAOw1B,EAAGlkB,EAAItR,EAAOw1B,EAAIiuC,GACnC,WAAX6rB,GAAkC,UAAXD,GAC1BtwG,KAAK+zG,UAAU/oB,EAAIsnB,GAEpB9uB,EAAIwoB,OAAOz5E,EAAItR,EAAOw1B,EAAIv1B,EAASwjE,GACnClB,EAAI0xB,iBAAiB3iF,EAAItR,EAAOw1B,EAAIv1B,EAAQqR,EAAItR,EAAQyjE,EAAQjuC,EAAIv1B,GACrD,WAAXqvF,GACHvwG,KAAK+zG,UAAU/oB,EAAIsnB,GAEpB9uB,EAAIwoB,OAAOz5E,EAAImyD,EAAQjuC,EAAIv1B,GAC3BsiE,EAAI0xB,iBAAiB3iF,EAAGkkB,EAAIv1B,EAAQqR,EAAGkkB,EAAIv1B,EAASwjE,GACrC,WAAX6rB,GAAkC,SAAXD,GAC1BtwG,KAAK+zG,UAAU/oB,EAAIsnB,GAEpB9uB,EAAIwoB,OAAOz5E,EAAGkkB,EAAIiuC,GAClBlB,EAAI0xB,iBAAiB3iF,EAAGkkB,EAAGlkB,EAAImyD,EAAQjuC,GACvC+sC,EAAI2xB,YAEJ3xB,EAAI5wC,OAEAwgE,EAAGhzB,YAAc,GACpBoD,EAAIyoB,UAIN3oB,KAAM,WACL,IAAIE,EAAMxjF,KAAKwoF,OAAOhF,IAClB4vB,EAAKpzG,KAAK02F,MAEd,GAAmB,IAAf0c,EAAG1vF,QAAP,CAIA,IAAI4uF,EAAc,CACjBrxF,MAAOmyF,EAAGnyF,MACVC,OAAQkyF,EAAGlyF,QAER8pE,EAAK,CACRz4D,EAAG6gF,EAAG7gF,EACNkkB,EAAG28D,EAAG38D,GAIH/yB,EAAU/nB,KAAKm4B,IAAIs/E,EAAG1vF,QAAU,MAAQ,EAAI0vF,EAAG1vF,QAG/C0xF,EAAoBhC,EAAGh8C,MAAMl1D,QAAUkxG,EAAGnE,WAAW/sG,QAAUkxG,EAAGr1E,KAAK77B,QAAUkxG,EAAG9D,UAAUptG,QAAUkxG,EAAG5D,OAAOttG,OAElHlC,KAAKskF,SAAS+P,SAAW+gB,IAE5Bp1G,KAAKi1G,eAAejqB,EAAIooB,EAAI5vB,EAAK8uB,EAAa5uF,GAG9CsnE,EAAGz4D,GAAK6gF,EAAG7E,SACXvjB,EAAGv0C,GAAK28D,EAAG9E,SAGXtuG,KAAKw0G,UAAUxpB,EAAIooB,EAAI5vB,EAAK9/D,GAG5B1jB,KAAKy0G,SAASzpB,EAAIooB,EAAI5vB,EAAK9/D,GAG3B1jB,KAAKg1G,WAAWhqB,EAAIooB,EAAI5vB,EAAK9/D,MAU/B6wE,YAAa,SAASvrF,GACrB,IAEIsrF,EAFA1V,EAAK5+E,KACLjD,EAAU6hF,EAAG0F,SA8BjB,OA3BA1F,EAAG8yB,YAAc9yB,EAAG8yB,aAAe,GAGpB,aAAX1oG,EAAElF,KACL86E,EAAGwzB,QAAU,GAEbxzB,EAAGwzB,QAAUxzB,EAAG4J,OAAO+K,0BAA0BvqF,EAAGjM,EAAQlC,KAAMkC,IAInEu3F,GAAWrZ,EAAQ4Z,YAAYjW,EAAGwzB,QAASxzB,EAAG8yB,gBAI7C9yB,EAAG8yB,YAAc9yB,EAAGwzB,SAEhBr1G,EAAQs3F,SAAWt3F,EAAQyiF,UAC9BZ,EAAG+zB,eAAiB,CACnBpgF,EAAGvpB,EAAEupB,EACLkkB,EAAGztC,EAAEytC,GAGNmoC,EAAG7oB,QAAO,GACV6oB,EAAG0B,UAIEgU,MAODob,YAAcA,GAGpB,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,KAAK2F,GAAG,CAAC,SAASh7C,EAAQ5gE,EAAOD,GAGzD,IAAI6nC,EAAWg5B,EAAQ,IACnBhQ,EAAUgQ,EAAQ,IAClB4gB,EAAU5gB,EAAQ,IAEtBh5B,EAASi8C,KAAK,SAAU,CACvB38B,SAAU,CACTilC,IAAK,CACJtkE,gBAAiB+f,EAASrlC,OAAOmiG,aACjCjvD,YAAa,OACbkxC,YAAa,MAKhB3mF,EAAOD,QAAU6wD,EAAQl6B,OAAO,CAC/BmlF,aAAc,SAASjZ,GACtB,IAAI+W,EAAKpzG,KAAK02F,MAEd,QAAI0c,GACKz3G,KAAK22B,IAAI+pE,EAAS+W,EAAG7gF,EAAG,GAAK52B,KAAK22B,IAAI8gF,EAAG1uB,OAAS0uB,EAAGluB,YAAa,IAK5EwZ,QAAS,SAAS6W,EAAQC,GACzB,IAAIpC,EAAKpzG,KAAK02F,MAEd,GAAI0c,EAAI,CAQP,IAPA,IAAIqC,EAAwBx6B,EAAQ6e,kBAAkBsZ,EAAI,CAAC7gF,EAAGgjF,EAAQ9+D,EAAG++D,IACrElpB,EAAQmpB,EAAsBnpB,MAC9BW,EAAWwoB,EAAsBxoB,SAGjChG,EAAamsB,EAAGnsB,WAChBC,EAAWksB,EAAGlsB,SACXA,EAAWD,GACjBC,GAAY,EAAMvrF,KAAKm4C,GAExB,KAAOw4C,EAAQpF,GACdoF,GAAS,EAAM3wF,KAAKm4C,GAErB,KAAOw4C,EAAQrF,GACdqF,GAAS,EAAM3wF,KAAKm4C,GAIrB,IAAI4hE,EAAiBppB,GAASrF,GAAcqF,GAASpF,EACjDyuB,EAAgB1oB,GAAYmmB,EAAG1rB,aAAeuF,GAAYmmB,EAAG3rB,YAEjE,OAAQiuB,GAAiBC,EAE1B,OAAO,GAGR5W,eAAgB,WACf,IAAIqU,EAAKpzG,KAAK02F,MACVkf,GAAaxC,EAAGnsB,WAAamsB,EAAGlsB,UAAY,EAC5C2uB,GAAczC,EAAG1rB,YAAc0rB,EAAG3rB,aAAe,EACrD,MAAO,CACNl1D,EAAG6gF,EAAG7gF,EAAI52B,KAAKk4C,IAAI+hE,GAAaC,EAChCp/D,EAAG28D,EAAG38D,EAAI96C,KAAKq4C,IAAI4hE,GAAaC,IAIlCxW,QAAS,WACR,IAAI+T,EAAKpzG,KAAK02F,MACd,OAAO/6F,KAAKm4C,KAAOs/D,EAAGlsB,SAAWksB,EAAGnsB,aAAe,EAAItrF,KAAKm4C,MAAQn4C,KAAK22B,IAAI8gF,EAAG3rB,YAAa,GAAK9rF,KAAK22B,IAAI8gF,EAAG1rB,YAAa,KAG5HuP,gBAAiB,WAChB,IAAImc,EAAKpzG,KAAK02F,MACVof,EAAc1C,EAAGnsB,YAAemsB,EAAGlsB,SAAWksB,EAAGnsB,YAAc,EAC/D8uB,GAAmB3C,EAAG3rB,YAAc2rB,EAAG1rB,aAAe,EAAI0rB,EAAG1rB,YAEjE,MAAO,CACNn1D,EAAG6gF,EAAG7gF,EAAK52B,KAAKk4C,IAAIiiE,GAAeC,EACnCt/D,EAAG28D,EAAG38D,EAAK96C,KAAKq4C,IAAI8hE,GAAeC,IAIrCzyB,KAAM,WACL,IAAIE,EAAMxjF,KAAKwoF,OAAOhF,IAClB4vB,EAAKpzG,KAAK02F,MACVsf,EAAK5C,EAAGnsB,WACRgvB,EAAK7C,EAAGlsB,SAEZ1D,EAAIsoB,YAEJtoB,EAAIoC,IAAIwtB,EAAG7gF,EAAG6gF,EAAG38D,EAAG28D,EAAG3rB,YAAauuB,EAAIC,GACxCzyB,EAAIoC,IAAIwtB,EAAG7gF,EAAG6gF,EAAG38D,EAAG28D,EAAG1rB,YAAauuB,EAAID,GAAI,GAE5CxyB,EAAI2xB,YACJ3xB,EAAIuC,YAAcqtB,EAAGlkE,YACrBs0C,EAAIwC,UAAYotB,EAAGhzB,YAEnBoD,EAAIsC,UAAYstB,EAAG9xF,gBAEnBkiE,EAAI5wC,OACJ4wC,EAAI0yB,SAAW,QAEX9C,EAAGhzB,aACNoD,EAAIyoB,aAKL,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKkK,GAAG,CAAC,SAAS97C,EAAQ5gE,EAAOD,GAGzD,IAAI6nC,EAAWg5B,EAAQ,IACnBhQ,EAAUgQ,EAAQ,IAClB4gB,EAAU5gB,EAAQ,IAElB8pC,EAAiB9iE,EAASrlC,OAE9BqlC,EAASi8C,KAAK,SAAU,CACvB38B,SAAU,CACTmoC,KAAM,CACL5tC,QAAS,GACT55B,gBAAiB6iF,EAAehG,aAChC/d,YAAa,EACblxC,YAAai1D,EAAehG,aAC5B/U,eAAgB,OAChBC,WAAY,GACZC,iBAAkB,EAClBC,gBAAiB,QACjBmC,iBAAiB,EACjB94C,MAAM,MAKTn5C,EAAOD,QAAU6wD,EAAQl6B,OAAO,CAC/BmzD,KAAM,WACL,IAOInhF,EAAOy4F,EAAStP,EAAU8qB,EAN1BhD,EADKpzG,KACG02F,MACRlT,EAFKxjF,KAEIwoF,OAAOhF,IAChBmF,EAAWyqB,EAAGzqB,SACd3E,EAJKhkF,KAIOmpF,UAAU9oF,QACtBg2G,EAA2BlS,EAAexjD,SAASmoC,KACnDwtB,GAAkB,EA2BtB,IAjCSt2G,KAUFstF,OAAStJ,EAAO9hF,QACtB8hF,EAAO9kF,KAAK8kF,EAAO,IAGpBR,EAAImoB,OAGJnoB,EAAI+yB,QAAUnD,EAAGhqB,gBAAkBitB,EAAyBjtB,eAGxD5F,EAAIooB,aACPpoB,EAAIooB,YAAYwH,EAAG/pB,YAAcgtB,EAAyBhtB,YAG3D7F,EAAIqoB,eAAiBuH,EAAG9pB,kBAAoB+sB,EAAyB/sB,iBACrE9F,EAAI0yB,SAAW9C,EAAG7pB,iBAAmB8sB,EAAyB9sB,gBAC9D/F,EAAIwC,UAAYotB,EAAGhzB,aAAei2B,EAAyBj2B,YAC3DoD,EAAIuC,YAAcqtB,EAAGlkE,aAAei1D,EAAehG,aAGnD3a,EAAIsoB,YACJwK,GAAkB,EAEbn0G,EAAQ,EAAGA,EAAQ6hF,EAAO9hF,SAAUC,EACxCy4F,EAAU5W,EAAO7hF,GACjBmpF,EAAWrQ,EAAQkQ,aAAanH,EAAQ7hF,GACxCi0G,EAAYxb,EAAQlE,MAGN,IAAVv0F,EACEi0G,EAAUzxB,OACdnB,EAAIuoB,OAAOqK,EAAU7jF,EAAG6jF,EAAU3/D,GAClC6/D,EAAiBn0G,IAGlBmpF,GAA+B,IAApBgrB,EAAwBhrB,EAAWtH,EAAOsyB,GAEhDF,EAAUzxB,OACT2xB,IAAoBn0G,EAAQ,IAAOwmF,IAAiC,IAApB2tB,EAEpD9yB,EAAIuoB,OAAOqK,EAAU7jF,EAAG6jF,EAAU3/D,GAGlCwkC,EAAQmB,OAAO4vB,OAAOxoB,EAAK8H,EAASoL,MAAOkE,EAAQlE,OAEpD4f,EAAiBn0G,IAKpBqhF,EAAIyoB,SACJzoB,EAAI0oB,cAIJ,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKsK,GAAG,CAAC,SAASn8C,EAAQ5gE,EAAOD,GAGzD,IAAI6nC,EAAWg5B,EAAQ,IACnBhQ,EAAUgQ,EAAQ,IAClB4gB,EAAU5gB,EAAQ,IAElB8jC,EAAe98D,EAASrlC,OAAOmiG,aAkBnC,SAASsY,EAAOpa,GACf,IAAI+W,EAAKpzG,KAAK02F,MACd,QAAO0c,GAAMz3G,KAAKm4B,IAAIuoE,EAAS+W,EAAG7gF,GAAK6gF,EAAG1uB,OAAS0uB,EAAG7uB,UAlBvDljD,EAASi8C,KAAK,SAAU,CACvB38B,SAAU,CACT7vC,MAAO,CACN4zE,OAAQ,EACRF,WAAY,SACZljE,gBAAiB68E,EACjBjvD,YAAaivD,EACb/d,YAAa,EAEbmE,UAAW,EACXW,YAAa,EACbD,iBAAkB,MAerBxrF,EAAOD,QAAU6wD,EAAQl6B,OAAO,CAC/BuuE,QAAS,SAASrC,EAAQC,GACzB,IAAI8W,EAAKpzG,KAAK02F,MACd,QAAO0c,GAAOz3G,KAAK22B,IAAI+pE,EAAS+W,EAAG7gF,EAAG,GAAK52B,KAAK22B,IAAIgqE,EAAS8W,EAAG38D,EAAG,GAAM96C,KAAK22B,IAAI8gF,EAAG7uB,UAAY6uB,EAAG1uB,OAAQ,IAG7G4wB,aAAcmB,EACdlX,SAAUkX,EACVjX,SAbD,SAAgBlD,GACf,IAAI8W,EAAKpzG,KAAK02F,MACd,QAAO0c,GAAMz3G,KAAKm4B,IAAIwoE,EAAS8W,EAAG38D,GAAK28D,EAAG1uB,OAAS0uB,EAAG7uB,WAatDwa,eAAgB,WACf,IAAIqU,EAAKpzG,KAAK02F,MACd,MAAO,CACNnkE,EAAG6gF,EAAG7gF,EACNkkB,EAAG28D,EAAG38D,IAIR4oD,QAAS,WACR,OAAO1jG,KAAKm4C,GAAKn4C,KAAK22B,IAAItyB,KAAK02F,MAAMhS,OAAQ,IAG9CuS,gBAAiB,WAChB,IAAImc,EAAKpzG,KAAK02F,MACd,MAAO,CACNnkE,EAAG6gF,EAAG7gF,EACNkkB,EAAG28D,EAAG38D,EACNt1B,QAASiyF,EAAG1uB,OAAS0uB,EAAGhzB,cAI1BkD,KAAM,SAASG,GACd,IAAI2vB,EAAKpzG,KAAK02F,MACVnW,EAAQvgF,KAAKigF,OACbuD,EAAMxjF,KAAKwoF,OAAOhF,IAClBgB,EAAa4uB,EAAG5uB,WAChBC,EAAW2uB,EAAG3uB,SACdC,EAAS0uB,EAAG1uB,OACZnyD,EAAI6gF,EAAG7gF,EACPkkB,EAAI28D,EAAG38D,EAGP28D,EAAGzuB,YAKWhnF,IAAd8lF,GAA4BlD,EAAMhuD,GAAKkxD,EAAUhgE,MAPrC,KAO6CggE,EAAU/yD,OAAqB6vD,EAAMhuD,GAAKguD,EAAM9pC,GAAKgtC,EAAUjgE,KAP5G,KAOmHigE,EAAU7zB,QAAsB2wB,EAAM9pC,KACxK+sC,EAAIuC,YAAcqtB,EAAGlkE,aAAeivD,EACpC3a,EAAIwC,UAAY/K,EAAQmI,eAAegwB,EAAGhzB,YAAa/+C,EAASrlC,OAAO2kD,SAAS7vC,MAAMsvE,aACtFoD,EAAIsC,UAAYstB,EAAG9xF,iBAAmB68E,EACtCljB,EAAQmB,OAAOs6B,UAAUlzB,EAAKgB,EAAYE,EAAQnyD,EAAGkkB,EAAGguC,QAKzD,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKkyB,GAAG,CAAC,SAASt8C,EAAQ5gE,EAAOD,GAGzD,IAAI6nC,EAAWg5B,EAAQ,IACnBhQ,EAAUgQ,EAAQ,IAatB,SAASu8C,EAAWr4B,GACnB,YAA2B5gF,IAApB4gF,EAAImY,MAAMz1E,MASlB,SAAS41F,EAAat4B,GACrB,IACIosB,EAAIz3E,EAAI03E,EAAIn7B,EADZ2jC,EAAK70B,EAAImY,MAGb,GAAIkgB,EAAWr4B,GAAM,CAEpB,IAAIu4B,EAAY1D,EAAGnyF,MAAQ,EAC3B0pF,EAAKyI,EAAG7gF,EAAIukF,EACZ5jF,EAAKkgF,EAAG7gF,EAAIukF,EACZlM,EAAKjvG,KAAKoD,IAAIq0G,EAAG38D,EAAG28D,EAAG1yB,MACvBjR,EAAK9zE,KAAKyK,IAAIgtG,EAAG38D,EAAG28D,EAAG1yB,UACjB,CAEN,IAAIq2B,EAAa3D,EAAGlyF,OAAS,EAC7BypF,EAAKhvG,KAAKoD,IAAIq0G,EAAG7gF,EAAG6gF,EAAG1yB,MACvBxtD,EAAKv3B,KAAKyK,IAAIgtG,EAAG7gF,EAAG6gF,EAAG1yB,MACvBkqB,EAAKwI,EAAG38D,EAAIsgE,EACZtnC,EAAK2jC,EAAG38D,EAAIsgE,EAGb,MAAO,CACNtzF,KAAMknF,EACNnnF,IAAKonF,EACLl6E,MAAOwC,EACP08B,OAAQ6f,GA7CVpuC,EAASi8C,KAAK,SAAU,CACvB38B,SAAU,CACTm9B,UAAW,CACVx8D,gBAAiB+f,EAASrlC,OAAOmiG,aACjCjvD,YAAa7N,EAASrlC,OAAOmiG,aAC7BpgB,cAAe,SACfqC,YAAa,MA2ChB3mF,EAAOD,QAAU6wD,EAAQl6B,OAAO,CAC/BmzD,KAAM,WACL,IAEI7/D,EAAMiN,EAAOlN,EAAKosC,EAAQonD,EAAOC,EAAOl5B,EAFxCyF,EAAMxjF,KAAKwoF,OAAOhF,IAClB4vB,EAAKpzG,KAAK02F,MAEVtW,EAAcgzB,EAAGhzB,YAwBrB,GAtBKgzB,EAAGxyB,YAWPn9D,EAAO2vF,EAAG1yB,KACVhwD,EAAQ0iF,EAAG7gF,EACX/O,EAAM4vF,EAAG38D,EAAI28D,EAAGlyF,OAAS,EACzB0uC,EAASwjD,EAAG38D,EAAI28D,EAAGlyF,OAAS,EAC5B81F,EAAQtmF,EAAQjN,EAAO,GAAK,EAC5BwzF,EAAQ,EACRl5B,EAAgBq1B,EAAGr1B,eAAiB,SAfpCt6D,EAAO2vF,EAAG7gF,EAAI6gF,EAAGnyF,MAAQ,EACzByP,EAAQ0iF,EAAG7gF,EAAI6gF,EAAGnyF,MAAQ,EAC1BuC,EAAM4vF,EAAG38D,EAETugE,EAAQ,EACRC,GAFArnD,EAASwjD,EAAG1yB,MAEKl9D,EAAM,GAAK,EAC5Bu6D,EAAgBq1B,EAAGr1B,eAAiB,UAcjCqC,EAAa,CAEhB,IAAI82B,EAAUv7G,KAAKoD,IAAIpD,KAAKm4B,IAAIrQ,EAAOiN,GAAQ/0B,KAAKm4B,IAAItQ,EAAMosC,IAE1DunD,GADJ/2B,EAAcA,EAAc82B,EAAUA,EAAU92B,GACjB,EAE3Bg3B,EAAa3zF,GAA0B,SAAlBs6D,EAA2Bo5B,EAAaH,EAAQ,GACrEK,EAAc3mF,GAA2B,UAAlBqtD,GAA6Bo5B,EAAaH,EAAQ,GACzEnuE,EAAYrlB,GAAyB,QAAlBu6D,EAA0Bo5B,EAAaF,EAAQ,GAClEK,EAAe1nD,GAA4B,WAAlBmuB,GAA8Bo5B,EAAaF,EAAQ,GAE5EG,IAAeC,IAClB7zF,EAAMqlB,EACN+mB,EAAS0nD,GAGNzuE,IAAcyuE,IACjB7zF,EAAO2zF,EACP1mF,EAAQ2mF,GAIV7zB,EAAIsoB,YACJtoB,EAAIsC,UAAYstB,EAAG9xF,gBACnBkiE,EAAIuC,YAAcqtB,EAAGlkE,YACrBs0C,EAAIwC,UAAY5F,EAKhB,IAAIm3B,EAAU,CACb,CAAC9zF,EAAMmsC,GACP,CAACnsC,EAAMD,GACP,CAACkN,EAAOlN,GACR,CAACkN,EAAOk/B,IAKL4nD,EADU,CAAC,SAAU,OAAQ,MAAO,SACdtxG,QAAQ63E,EAAe,GAKjD,SAAS05B,EAASt1G,GACjB,OAAOo1G,GAASC,EAAcr1G,GAAS,IALnB,IAAjBq1G,IACHA,EAAc,GAQf,IAAIE,EAASD,EAAS,GACtBj0B,EAAIuoB,OAAO2L,EAAO,GAAIA,EAAO,IAE7B,IAAK,IAAIh+G,EAAI,EAAGA,EAAI,EAAGA,IACtBg+G,EAASD,EAAS/9G,GAClB8pF,EAAIwoB,OAAO0L,EAAO,GAAIA,EAAO,IAG9Bl0B,EAAI5wC,OACAwtC,GACHoD,EAAIyoB,UAIN/qF,OAAQ,WACP,IAAIkyF,EAAKpzG,KAAK02F,MACd,OAAO0c,EAAG1yB,KAAO0yB,EAAG38D,GAGrBioD,QAAS,SAASrC,EAAQC,GACzB,IAAIoC,GAAU,EAEd,GAAI1+F,KAAK02F,MAAO,CACf,IAAIihB,EAASd,EAAa72G,MAC1B0+F,EAAUrC,GAAUsb,EAAOl0F,MAAQ44E,GAAUsb,EAAOjnF,OAAS4rE,GAAUqb,EAAOn0F,KAAO84E,GAAUqb,EAAO/nD,OAGvG,OAAO8uC,GAGR4W,aAAc,SAASjZ,EAAQC,GAE9B,IADSt8F,KACD02F,MACP,OAAO,EAGR,IACIihB,EAASd,EANJ72G,MAcT,OANI42G,EARK52G,MASEq8F,GAAUsb,EAAOl0F,MAAQ44E,GAAUsb,EAAOjnF,MAE1C4rE,GAAUqb,EAAOn0F,KAAO84E,GAAUqb,EAAO/nD,QAMrD2vC,SAAU,SAASlD,GAClB,IAAIsb,EAASd,EAAa72G,MAC1B,OAAOq8F,GAAUsb,EAAOl0F,MAAQ44E,GAAUsb,EAAOjnF,OAGlD8uE,SAAU,SAASlD,GAClB,IAAIqb,EAASd,EAAa72G,MAC1B,OAAOs8F,GAAUqb,EAAOn0F,KAAO84E,GAAUqb,EAAO/nD,QAGjDmvC,eAAgB,WACf,IACIxsE,EAAGkkB,EADH28D,EAAKpzG,KAAK02F,MAUd,OARIkgB,EAAW52G,OACduyB,EAAI6gF,EAAG7gF,EACPkkB,GAAK28D,EAAG38D,EAAI28D,EAAG1yB,MAAQ,IAEvBnuD,GAAK6gF,EAAG7gF,EAAI6gF,EAAG1yB,MAAQ,EACvBjqC,EAAI28D,EAAG38D,GAGD,CAAClkB,EAAGA,EAAGkkB,EAAGA,IAGlB4oD,QAAS,WACR,IAAI+T,EAAKpzG,KAAK02F,MACd,OAAO0c,EAAGnyF,MAAQtlB,KAAKm4B,IAAIs/E,EAAG38D,EAAI28D,EAAG1yB,OAGtCuW,gBAAiB,WAChB,IAAImc,EAAKpzG,KAAK02F,MACd,MAAO,CACNnkE,EAAG6gF,EAAG7gF,EACNkkB,EAAG28D,EAAG38D,OAKP,CAAC,GAAK,GAAG,GAAK,KAAKmhE,GAAG,CAAC,SAASv9C,EAAQ5gE,EAAOD,GAGjDC,EAAOD,QAAU,GACjBC,EAAOD,QAAQitF,IAAMpsB,EAAQ,IAC7B5gE,EAAOD,QAAQsjF,KAAOziB,EAAQ,IAC9B5gE,EAAOD,QAAQuqF,MAAQ1pB,EAAQ,IAC/B5gE,EAAOD,QAAQklF,UAAYrkB,EAAQ,KAEjC,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKw9C,GAAG,CAAC,SAASx9C,EAAQ5gE,EAAOD,GAGjE,IAAIyhF,EAAU5gB,EAAQ,IAKlB7gE,EAAUC,EAAOD,QAAU,CAK9Bk9D,MAAO,SAAS4oB,GACfA,EAAMkE,IAAIs0B,UAAU,EAAG,EAAGx4B,EAAMr+D,MAAOq+D,EAAMp+D,SAc9C62F,YAAa,SAASv0B,EAAKjxD,EAAGkkB,EAAGx1B,EAAOC,EAAQwjE,GAC/C,GAAIA,EAAQ,CAGX,IACIlqF,EAAImB,KAAKoD,IAAI2lF,EAASxjE,EAAS,EADrB,KACoCD,EAAQ,EAD5C,MAGduiE,EAAIuoB,OAAOx5E,EAAI/3B,EAAGi8C,GAClB+sC,EAAIwoB,OAAOz5E,EAAItR,EAAQzmB,EAAGi8C,GAC1B+sC,EAAIw0B,MAAMzlF,EAAItR,EAAOw1B,EAAGlkB,EAAItR,EAAOw1B,EAAIj8C,EAAGA,GAC1CgpF,EAAIwoB,OAAOz5E,EAAItR,EAAOw1B,EAAIv1B,EAAS1mB,GACnCgpF,EAAIw0B,MAAMzlF,EAAItR,EAAOw1B,EAAIv1B,EAAQqR,EAAItR,EAAQzmB,EAAGi8C,EAAIv1B,EAAQ1mB,GAC5DgpF,EAAIwoB,OAAOz5E,EAAI/3B,EAAGi8C,EAAIv1B,GACtBsiE,EAAIw0B,MAAMzlF,EAAGkkB,EAAIv1B,EAAQqR,EAAGkkB,EAAIv1B,EAAS1mB,EAAGA,GAC5CgpF,EAAIwoB,OAAOz5E,EAAGkkB,EAAIj8C,GAClBgpF,EAAIw0B,MAAMzlF,EAAGkkB,EAAGlkB,EAAI/3B,EAAGi8C,EAAGj8C,GAC1BgpF,EAAI2xB,YACJ3xB,EAAIuoB,OAAOx5E,EAAGkkB,QAEd+sC,EAAIv1B,KAAK17B,EAAGkkB,EAAGx1B,EAAOC,IAIxBw1F,UAAW,SAASlzB,EAAKn+E,EAAOq/E,EAAQnyD,EAAGkkB,EAAGguC,GAC7C,IAAI3gF,EAAMm0G,EAAYC,EAASC,EAASj3F,EAAQvO,EAGhD,GAFA8xE,EAAWA,GAAY,GAEnBp/E,GAA0B,WAAjB,EAAOA,IAEN,+BADbvB,EAAOuB,EAAMjF,aACwC,+BAAT0D,GAM7C,KAAI3D,MAAMukF,IAAWA,GAAU,GAA/B,CASA,OALAlB,EAAImoB,OACJnoB,EAAI/kC,UAAUlsB,EAAGkkB,GACjB+sC,EAAI3kC,OAAO4lC,EAAW9oF,KAAKm4C,GAAK,KAChC0vC,EAAIsoB,YAEIzmG,GAER,QACCm+E,EAAIoC,IAAI,EAAG,EAAGlB,EAAQ,EAAa,EAAV/oF,KAAKm4C,IAC9B0vC,EAAI2xB,YACJ,MACD,IAAK,WAEJj0F,GADA+2F,EAAa,EAAIvzB,EAAS/oF,KAAK24C,KAAK,IACd34C,KAAK24C,KAAK,GAAK,EACrCkvC,EAAIuoB,QAAQkM,EAAa,EAAG/2F,EAAS,GACrCsiE,EAAIwoB,OAAOiM,EAAa,EAAG/2F,EAAS,GACpCsiE,EAAIwoB,OAAO,GAAI,EAAI9qF,EAAS,GAC5BsiE,EAAI2xB,YACJ,MACD,IAAK,OACJxiG,EAAO,EAAIhX,KAAKy8G,MAAQ1zB,EACxBlB,EAAIv1B,MAAMt7C,GAAOA,EAAM,EAAIA,EAAM,EAAIA,GACrC,MACD,IAAK,cACJ,IAAIqjB,EAAS0uD,EAAS/oF,KAAKy8G,MACvBC,GAASriF,EACTsiF,GAAQtiF,EACRuiF,EAAW58G,KAAKy8G,MAAQ1zB,EAM5B1kF,KAAK+3G,YAAYv0B,EAAK60B,EAAOC,EAAMC,EAAUA,EAAmB,KAAT7zB,GACvD,MACD,IAAK,UACJ/xE,EAAO,EAAIhX,KAAKy8G,MAAQ1zB,EACxBlB,EAAIuoB,QAAQp5F,EAAM,GAClB6wE,EAAIwoB,OAAO,EAAGr5F,GACd6wE,EAAIwoB,OAAOr5F,EAAM,GACjB6wE,EAAIwoB,OAAO,GAAIr5F,GACf6wE,EAAI2xB,YACJ,MACD,IAAK,QACJ3xB,EAAIuoB,OAAO,EAAGrnB,GACdlB,EAAIwoB,OAAO,GAAItnB,GACflB,EAAIuoB,QAAQrnB,EAAQ,GACpBlB,EAAIwoB,OAAOtnB,EAAQ,GACnB,MACD,IAAK,WACJwzB,EAAUv8G,KAAKk4C,IAAIl4C,KAAKm4C,GAAK,GAAK4wC,EAClCyzB,EAAUx8G,KAAKq4C,IAAIr4C,KAAKm4C,GAAK,GAAK4wC,EAClClB,EAAIuoB,QAAQmM,GAAUC,GACtB30B,EAAIwoB,OAAOkM,EAASC,GACpB30B,EAAIuoB,QAAQmM,EAASC,GACrB30B,EAAIwoB,OAAOkM,GAAUC,GACrB,MACD,IAAK,OACJ30B,EAAIuoB,OAAO,EAAGrnB,GACdlB,EAAIwoB,OAAO,GAAItnB,GACflB,EAAIuoB,QAAQrnB,EAAQ,GACpBlB,EAAIwoB,OAAOtnB,EAAQ,GACnBwzB,EAAUv8G,KAAKk4C,IAAIl4C,KAAKm4C,GAAK,GAAK4wC,EAClCyzB,EAAUx8G,KAAKq4C,IAAIr4C,KAAKm4C,GAAK,GAAK4wC,EAClClB,EAAIuoB,QAAQmM,GAAUC,GACtB30B,EAAIwoB,OAAOkM,EAASC,GACpB30B,EAAIuoB,QAAQmM,EAASC,GACrB30B,EAAIwoB,OAAOkM,GAAUC,GACrB,MACD,IAAK,OACJ30B,EAAIuoB,QAAQrnB,EAAQ,GACpBlB,EAAIwoB,OAAOtnB,EAAQ,GACnB,MACD,IAAK,OACJlB,EAAIuoB,OAAO,EAAG,GACdvoB,EAAIwoB,OAAOtnB,EAAQ,GAIpBlB,EAAI5wC,OACJ4wC,EAAIyoB,SACJzoB,EAAI0oB,gBA1FF1oB,EAAIg1B,UAAUnzG,EAAOktB,EAAIltB,EAAM4b,MAAQ,EAAGw1B,EAAIpxC,EAAM6b,OAAS,EAAG7b,EAAM4b,MAAO5b,EAAM6b,SA6FtFqiE,SAAU,SAASC,EAAKsH,GACvBtH,EAAImoB,OACJnoB,EAAIsoB,YACJtoB,EAAIv1B,KAAK68B,EAAKrnE,KAAMqnE,EAAKtnE,IAAKsnE,EAAKp6D,MAAQo6D,EAAKrnE,KAAMqnE,EAAKl7B,OAASk7B,EAAKtnE,KACzEggE,EAAIrnC,QAGLunC,WAAY,SAASF,GACpBA,EAAI0oB,WAGLF,OAAQ,SAASxoB,EAAK8H,EAAUruF,EAAQw7G,GACvC,GAAIx7G,EAAOusF,YAOV,MAN4B,UAAvBvsF,EAAOusF,cAA4BivB,GAAiC,UAAvBx7G,EAAOusF,aAA2BivB,EACnFj1B,EAAIwoB,OAAO1gB,EAAS/4D,EAAGt1B,EAAOw5C,GAE9B+sC,EAAIwoB,OAAO/uG,EAAOs1B,EAAG+4D,EAAS70C,QAE/B+sC,EAAIwoB,OAAO/uG,EAAOs1B,EAAGt1B,EAAOw5C,GAIxBx5C,EAAOi+C,QAKZsoC,EAAIk1B,cACHD,EAAOntB,EAASD,sBAAwBC,EAASE,kBACjDitB,EAAOntB,EAASC,sBAAwBD,EAASG,kBACjDgtB,EAAOx7G,EAAOuuF,kBAAoBvuF,EAAOouF,sBACzCotB,EAAOx7G,EAAOwuF,kBAAoBxuF,EAAOsuF,sBACzCtuF,EAAOs1B,EACPt1B,EAAOw5C,GAVP+sC,EAAIwoB,OAAO/uG,EAAOs1B,EAAGt1B,EAAOw5C,KAuB/BwkC,EAAQvkB,MAAQl9D,EAAQk9D,MASxBukB,EAAQ09B,qBAAuB,SAASn1B,GACvCA,EAAIsoB,YACJtyG,EAAQu+G,YAAY5uG,MAAM3P,EAASkL,aAGlC,CAAC,GAAK,KAAKk0G,GAAG,CAAC,SAASv+C,EAAQ5gE,EAAOD,GAMzC,IAYMoJ,EAZFq4E,EAAU,CAIb0L,KAAM,aAONtqF,KACKuG,EAAK,EACF,WACN,OAAOA,MAUTs/E,cAAe,SAASvnF,GACvB,OAAOA,SASRwJ,QAASD,MAAMC,QAAUD,MAAMC,QAAU,SAASxJ,GACjD,MAAiD,mBAA1CP,OAAOkB,UAAU8E,SAASvG,KAAKc,IASvCuD,SAAU,SAASvD,GAClB,OAAiB,OAAVA,GAA4D,oBAA1CP,OAAOkB,UAAU8E,SAASvG,KAAKc,IASzDyoF,eAAgB,SAASzoF,EAAO6+B,GAC/B,YAAwB,IAAV7+B,EAAwB6+B,EAAe7+B,GAUtDwlF,sBAAuB,SAASxlF,EAAOwH,EAAOq3B,GAC7C,OAAOyhD,EAAQmI,eAAenI,EAAQ92E,QAAQxJ,GAASA,EAAMwH,GAASxH,EAAO6+B,IAW9EgT,SAAU,SAAS7rC,EAAIyP,EAAMyoG,GAC5B,GAAIl4G,GAAyB,mBAAZA,EAAG9G,KACnB,OAAO8G,EAAGwI,MAAM0vG,EAASzoG,IAa3B4S,KAAM,SAAS81F,EAAUn4G,EAAIk4G,EAAS5mF,GACrC,IAAIv4B,EAAGwY,EAAKvP,EACZ,GAAIs4E,EAAQ92E,QAAQ20G,GAEnB,GADA5mG,EAAM4mG,EAAS52G,OACX+vB,EACH,IAAKv4B,EAAIwY,EAAM,EAAGxY,GAAK,EAAGA,IACzBiH,EAAG9G,KAAKg/G,EAASC,EAASp/G,GAAIA,QAG/B,IAAKA,EAAI,EAAGA,EAAIwY,EAAKxY,IACpBiH,EAAG9G,KAAKg/G,EAASC,EAASp/G,GAAIA,QAG1B,GAAIuhF,EAAQ/8E,SAAS46G,GAG3B,IADA5mG,GADAvP,EAAOvI,OAAOuI,KAAKm2G,IACR52G,OACNxI,EAAI,EAAGA,EAAIwY,EAAKxY,IACpBiH,EAAG9G,KAAKg/G,EAASC,EAASn2G,EAAKjJ,IAAKiJ,EAAKjJ,KAY5Cm7F,YAAa,SAASkkB,EAAIC,GACzB,IAAIt/G,EAAGulF,EAAMkhB,EAAIC,EAEjB,IAAK2Y,IAAOC,GAAMD,EAAG72G,SAAW82G,EAAG92G,OAClC,OAAO,EAGR,IAAKxI,EAAI,EAAGulF,EAAO85B,EAAG72G,OAAQxI,EAAIulF,IAAQvlF,EAIzC,GAHAymG,EAAK4Y,EAAGr/G,GACR0mG,EAAK4Y,EAAGt/G,GAEJymG,aAAcj8F,OAASk8F,aAAcl8F,OACxC,IAAK+2E,EAAQ4Z,YAAYsL,EAAIC,GAC5B,OAAO,OAEF,GAAID,IAAOC,EAEjB,OAAO,EAIT,OAAO,GAQRh9E,MAAO,SAASpmB,GACf,GAAIi+E,EAAQ92E,QAAQnH,GACnB,OAAOA,EAAOqF,IAAI44E,EAAQ73D,OAG3B,GAAI63D,EAAQ/8E,SAASlB,GAAS,CAM7B,IALA,IAAIC,EAAS,GACT0F,EAAOvI,OAAOuI,KAAK3F,GACnBi8G,EAAOt2G,EAAKT,OACZ+P,EAAI,EAEDA,EAAIgnG,IAAQhnG,EAClBhV,EAAO0F,EAAKsP,IAAMgpE,EAAQ73D,MAAMpmB,EAAO2F,EAAKsP,KAG7C,OAAOhV,EAGR,OAAOD,GAQRw7F,QAAS,SAASv9F,EAAKgC,EAAQD,EAAQD,GACtC,IAAIq7F,EAAOn7F,EAAOhC,GACdo9F,EAAOr7F,EAAO/B,GAEdggF,EAAQ/8E,SAASk6F,IAASnd,EAAQ/8E,SAASm6F,GAC9Cpd,EAAQ2a,MAAMwC,EAAMC,EAAMt7F,GAE1BE,EAAOhC,GAAOggF,EAAQ73D,MAAMi1E,IAQ9B6gB,UAAW,SAASj+G,EAAKgC,EAAQD,GAChC,IAAIo7F,EAAOn7F,EAAOhC,GACdo9F,EAAOr7F,EAAO/B,GAEdggF,EAAQ/8E,SAASk6F,IAASnd,EAAQ/8E,SAASm6F,GAC9Cpd,EAAQk+B,QAAQ/gB,EAAMC,GACXp7F,EAAO1B,eAAeN,KACjCgC,EAAOhC,GAAOggF,EAAQ73D,MAAMi1E,KAa9BzC,MAAO,SAAS34F,EAAQD,EAAQD,GAC/B,IAEI64F,EAAOl8F,EAAGiJ,EAAMs2G,EAAMhnG,EAFtBmnG,EAAUn+B,EAAQ92E,QAAQnH,GAAUA,EAAS,CAACA,GAC9CiiF,EAAOm6B,EAAQl3G,OAGnB,IAAK+4E,EAAQ/8E,SAASjB,GACrB,OAAOA,EAMR,IAFA24F,GADA74F,EAAUA,GAAW,IACLo7F,QAAUld,EAAQud,QAE7B9+F,EAAI,EAAGA,EAAIulF,IAAQvlF,EAEvB,GADAsD,EAASo8G,EAAQ1/G,GACZuhF,EAAQ/8E,SAASlB,GAKtB,IAAKiV,EAAI,EAAGgnG,GADZt2G,EAAOvI,OAAOuI,KAAK3F,IACKkF,OAAQ+P,EAAIgnG,IAAQhnG,EAC3C2jF,EAAMjzF,EAAKsP,GAAIhV,EAAQD,EAAQD,GAIjC,OAAOE,GAURk8G,QAAS,SAASl8G,EAAQD,GACzB,OAAOi+E,EAAQ2a,MAAM34F,EAAQD,EAAQ,CAACm7F,OAAQld,EAAQi+B,aAUvD/oF,OAAQ,SAASlzB,GAIhB,IAHA,IAAIo8G,EAAQ,SAAS1+G,EAAOM,GAC3BgC,EAAOhC,GAAON,GAENjB,EAAI,EAAGulF,EAAOv6E,UAAUxC,OAAQxI,EAAIulF,IAAQvlF,EACpDuhF,EAAQj4D,KAAKte,UAAUhL,GAAI2/G,GAE5B,OAAOp8G,GAMRq5F,SAAU,SAASgjB,GAClB,IAAI16B,EAAK5+E,KACLu5G,EAAgBD,GAAcA,EAAW/9G,eAAe,eAAkB+9G,EAAWnyG,YAAc,WACtG,OAAOy3E,EAAGz1E,MAAMnJ,KAAM0E,YAGnB80G,EAAY,WACfx5G,KAAKmH,YAAcoyG,GAYpB,OATAC,EAAUl+G,UAAYsjF,EAAGtjF,UACzBi+G,EAAaj+G,UAAY,IAAIk+G,EAC7BD,EAAappF,OAAS8qD,EAAQqb,SAE1BgjB,GACHr+B,EAAQ9qD,OAAOopF,EAAaj+G,UAAWg+G,GAGxCC,EAAaE,UAAY76B,EAAGtjF,UACrBi+G,IAIT9/G,EAAOD,QAAUyhF,EAWjBA,EAAQy+B,aAAez+B,EAAQzuC,SAU/ByuC,EAAQ/0E,QAAU,SAASqC,EAAOw7B,EAAMt9B,GACvC,OAAOvC,MAAM5I,UAAU4K,QAAQrM,KAAK0O,EAAOw7B,EAAMt9B,IAUlDw0E,EAAQ0+B,kBAAoB1+B,EAAQmI,eASpCnI,EAAQ2+B,yBAA2B3+B,EAAQkF,uBAEzC,IAAI05B,GAAG,CAAC,SAASx/C,EAAQ5gE,EAAOD,GAGlC,IAAIyhF,EAAU5gB,EAAQ,IAOlBzuB,EAAU,CACb0P,OAAQ,SAAS1gD,GAChB,OAAOA,GAGRo4C,WAAY,SAASp4C,GACpB,OAAOA,EAAIA,GAGZq4C,YAAa,SAASr4C,GACrB,OAAQA,GAAKA,EAAI,IAGlBs4C,cAAe,SAASt4C,GACvB,OAAKA,GAAK,IAAO,EACT,GAAMA,EAAIA,GAEV,MAAUA,GAAMA,EAAI,GAAK,IAGlCu4C,YAAa,SAASv4C,GACrB,OAAOA,EAAIA,EAAIA,GAGhBw4C,aAAc,SAASx4C,GACtB,OAAQA,GAAQ,GAAKA,EAAIA,EAAI,GAG9By4C,eAAgB,SAASz4C,GACxB,OAAKA,GAAK,IAAO,EACT,GAAMA,EAAIA,EAAIA,EAEf,KAAQA,GAAK,GAAKA,EAAIA,EAAI,IAGlC04C,YAAa,SAAS14C,GACrB,OAAOA,EAAIA,EAAIA,EAAIA,GAGpB24C,aAAc,SAAS34C,GACtB,SAAUA,GAAQ,GAAKA,EAAIA,EAAIA,EAAI,IAGpC44C,eAAgB,SAAS54C,GACxB,OAAKA,GAAK,IAAO,EACT,GAAMA,EAAIA,EAAIA,EAAIA,GAElB,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,IAGvC64C,YAAa,SAAS74C,GACrB,OAAOA,EAAIA,EAAIA,EAAIA,EAAIA,GAGxB84C,aAAc,SAAS94C,GACtB,OAAQA,GAAQ,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,GAGtC+4C,eAAgB,SAAS/4C,GACxB,OAAKA,GAAK,IAAO,EACT,GAAMA,EAAIA,EAAIA,EAAIA,EAAIA,EAEvB,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,IAG1Cg5C,WAAY,SAASh5C,GACpB,OAAsC,EAA9Be,KAAKk4C,IAAIj5C,GAAKe,KAAKm4C,GAAK,KAGjCC,YAAa,SAASn5C,GACrB,OAAOe,KAAKq4C,IAAIp5C,GAAKe,KAAKm4C,GAAK,KAGhCG,cAAe,SAASr5C,GACvB,OAAQ,IAAOe,KAAKk4C,IAAIl4C,KAAKm4C,GAAKl5C,GAAK,IAGxCs5C,WAAY,SAASt5C,GACpB,OAAc,IAANA,EAAW,EAAIe,KAAK22B,IAAI,EAAG,IAAM13B,EAAI,KAG9Cu5C,YAAa,SAASv5C,GACrB,OAAc,IAANA,EAAW,EAA4B,EAAvBe,KAAK22B,IAAI,GAAI,GAAK13B,IAG3Cw5C,cAAe,SAASx5C,GACvB,OAAU,IAANA,EACI,EAEE,IAANA,EACI,GAEHA,GAAK,IAAO,EACT,GAAMe,KAAK22B,IAAI,EAAG,IAAM13B,EAAI,IAE7B,IAAiC,EAAzBe,KAAK22B,IAAI,GAAI,KAAO13B,KAGpCy5C,WAAY,SAASz5C,GACpB,OAAIA,GAAK,EACDA,IAECe,KAAK24C,KAAK,EAAI15C,EAAIA,GAAK,IAGjC25C,YAAa,SAAS35C,GACrB,OAAOe,KAAK24C,KAAK,GAAK15C,GAAQ,GAAKA,IAGpC45C,cAAe,SAAS55C,GACvB,OAAKA,GAAK,IAAO,GACR,IAAOe,KAAK24C,KAAK,EAAI15C,EAAIA,GAAK,GAEhC,IAAOe,KAAK24C,KAAK,GAAK15C,GAAK,GAAKA,GAAK,IAG7C65C,cAAe,SAAS75C,GACvB,IAAIa,EAAI,QACJD,EAAI,EACJyC,EAAI,EACR,OAAU,IAANrD,EACI,EAEE,IAANA,EACI,GAEHY,IACJA,EAAI,IAEDyC,EAAI,GACPA,EAAI,EACJxC,EAAID,EAAI,GAERC,EAAID,GAAK,EAAIG,KAAKm4C,IAAMn4C,KAAK+4C,KAAK,EAAIz2C,IAE9BA,EAAItC,KAAK22B,IAAI,EAAG,IAAM13B,GAAK,IAAMe,KAAKq4C,KAAKp5C,EAAIa,IAAM,EAAIE,KAAKm4C,IAAMt4C,KAG9Em5C,eAAgB,SAAS/5C,GACxB,IAAIa,EAAI,QACJD,EAAI,EACJyC,EAAI,EACR,OAAU,IAANrD,EACI,EAEE,IAANA,EACI,GAEHY,IACJA,EAAI,IAEDyC,EAAI,GACPA,EAAI,EACJxC,EAAID,EAAI,GAERC,EAAID,GAAK,EAAIG,KAAKm4C,IAAMn4C,KAAK+4C,KAAK,EAAIz2C,GAEhCA,EAAItC,KAAK22B,IAAI,GAAI,GAAK13B,GAAKe,KAAKq4C,KAAKp5C,EAAIa,IAAM,EAAIE,KAAKm4C,IAAMt4C,GAAK,IAG3Eo5C,iBAAkB,SAASh6C,GAC1B,IAAIa,EAAI,QACJD,EAAI,EACJyC,EAAI,EACR,OAAU,IAANrD,EACI,EAEW,IAAdA,GAAK,IACF,GAEHY,IACJA,EAAI,KAEDyC,EAAI,GACPA,EAAI,EACJxC,EAAID,EAAI,GAERC,EAAID,GAAK,EAAIG,KAAKm4C,IAAMn4C,KAAK+4C,KAAK,EAAIz2C,GAEnCrD,EAAI,EACQqD,EAAItC,KAAK22B,IAAI,EAAG,IAAM13B,GAAK,IAAMe,KAAKq4C,KAAKp5C,EAAIa,IAAM,EAAIE,KAAKm4C,IAAMt4C,IAA3E,GAEFyC,EAAItC,KAAK22B,IAAI,GAAI,IAAM13B,GAAK,IAAMe,KAAKq4C,KAAKp5C,EAAIa,IAAM,EAAIE,KAAKm4C,IAAMt4C,GAAK,GAAM,IAExFq5C,WAAY,SAASj6C,GACpB,IAAIa,EAAI,QACR,OAAOb,EAAIA,IAAMa,EAAI,GAAKb,EAAIa,IAG/Bq5C,YAAa,SAASl6C,GACrB,IAAIa,EAAI,QACR,OAAQb,GAAQ,GAAKA,IAAMa,EAAI,GAAKb,EAAIa,GAAK,GAG9Cs5C,cAAe,SAASn6C,GACvB,IAAIa,EAAI,QACR,OAAKb,GAAK,IAAO,EACFA,EAAIA,IAAuB,GAAhBa,GAAM,QAAeb,EAAIa,GAA3C,GAED,KAAQb,GAAK,GAAKA,IAAuB,GAAhBa,GAAM,QAAeb,EAAIa,GAAK,IAG/Du5C,aAAc,SAASp6C,GACtB,OAAO,EAAIgxC,EAAQqJ,cAAc,EAAIr6C,IAGtCq6C,cAAe,SAASr6C,GACvB,OAAIA,EAAK,EAAI,KACL,OAASA,EAAIA,EAEjBA,EAAK,EAAI,KACL,QAAUA,GAAM,IAAM,MAASA,EAAI,IAEvCA,EAAK,IAAM,KACP,QAAUA,GAAM,KAAO,MAASA,EAAI,MAErC,QAAUA,GAAM,MAAQ,MAASA,EAAI,SAG7Cs6C,gBAAiB,SAASt6C,GACzB,OAAIA,EAAI,GAC8B,GAA9BgxC,EAAQoJ,aAAiB,EAAJp6C,GAEa,GAAnCgxC,EAAQqJ,cAAkB,EAAJr6C,EAAQ,GAAW,KAIlDnB,EAAOD,QAAU,CAChBoyC,QAASA,GAYVqvC,EAAQ6+B,cAAgBluE,GAEtB,CAAC,GAAK,KAAKmuE,GAAG,CAAC,SAAS1/C,EAAQ5gE,EAAOD,GAGzC,IAAIyhF,EAAU5gB,EAAQ,IAMtB5gE,EAAOD,QAAU,CAShB8qG,aAAc,SAAS3pG,EAAOgY,GAC7B,IAAI23C,GAAW,GAAK3vD,GAAOmS,MAAM,wCACjC,IAAKw9C,GAA0B,WAAfA,EAAQ,GACvB,OAAc,IAAP33C,EAKR,OAFAhY,GAAS2vD,EAAQ,GAETA,EAAQ,IAChB,IAAK,KACJ,OAAO3vD,EACR,IAAK,IACJA,GAAS,IAMV,OAAOgY,EAAOhY,GAUfgmG,UAAW,SAAShmG,GACnB,IAAIC,EAAGJ,EAAG0O,EAAGvP,EAWb,OATIshF,EAAQ/8E,SAASvD,IACpBC,GAAKD,EAAM6oB,KAAO,EAClBhpB,GAAKG,EAAM+1B,OAAS,EACpBxnB,GAAKvO,EAAMi1D,QAAU,EACrBj2D,GAAKgB,EAAM8oB,MAAQ,GAEnB7oB,EAAIJ,EAAI0O,EAAIvP,GAAKgB,GAAS,EAGpB,CACN6oB,IAAK5oB,EACL81B,MAAOl2B,EACPo1D,OAAQ1mD,EACRua,KAAM9pB,EACNunB,OAAQtmB,EAAIsO,EACZ+X,MAAOtnB,EAAIa,IAab2qF,QAAS,SAAS60B,EAAQx4C,EAASr/D,GAClC,IAAIzI,EAAGulF,EAAMtkF,EAEb,IAAKjB,EAAI,EAAGulF,EAAO+6B,EAAO93G,OAAQxI,EAAIulF,IAAQvlF,EAE7C,QAAciE,KADdhD,EAAQq/G,EAAOtgH,WAICiE,IAAZ6jE,GAA0C,mBAAV7mE,IACnCA,EAAQA,EAAM6mE,SAED7jE,IAAVwE,GAAuB84E,EAAQ92E,QAAQxJ,KAC1CA,EAAQA,EAAMwH,SAEDxE,IAAVhD,GACH,OAAOA,KAMT,CAAC,GAAK,KAAKs/G,GAAG,CAAC,SAAS5/C,EAAQ5gE,EAAOD,GAGzCC,EAAOD,QAAU6gE,EAAQ,IACzB5gE,EAAOD,QAAQmmC,OAAS06B,EAAQ,IAChC5gE,EAAOD,QAAQ4iF,OAAS/hB,EAAQ,IAChC5gE,EAAOD,QAAQuD,QAAUs9D,EAAQ,KAE/B,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,KAAK6/C,GAAG,CAAC,SAAS7/C,EAAQ5gE,EAAOD,GAMjEC,EAAOD,QAAU,CAChBm2F,eAAgB,SAAS5rD,GAMxB,OALIA,GAAQA,EAAKq4C,SAEhBr4C,EAAOA,EAAKq4C,QAGNr4C,GAAQA,EAAKo2E,WAAW,OAAS,QAIxC,IAAIC,GAAG,CAAC,SAAS//C,EAAQ5gE,EAAOD,GAOlC,IAAIyhF,EAAU5gB,EAAQ,IAElBggD,EAAc,WACdC,EAAa,WACbC,EAAqBD,EAAa,iBAClCE,EAAuBF,EAAa,mBACpCG,EAAyB,CAAC,iBAAkB,wBAO5CC,EAAc,CACjBC,WAAY,YACZC,UAAW,YACXC,SAAU,UACVC,aAAc,aACdC,YAAa,YACbC,YAAa,YACbC,UAAW,UACXC,aAAc,WACdC,WAAY,YAYb,SAASC,EAAal4F,EAAS7nB,GAC9B,IAAIV,EAAQsgF,EAAQuhB,SAASt5E,EAAS7nB,GAClCivD,EAAU3vD,GAASA,EAAMmS,MAAM,qBACnC,OAAOw9C,EAAUvwB,OAAOuwB,EAAQ,SAAM3sD,EA+DvC,IAiBI09G,IAjBgC,WACnC,IAAIC,GAAW,EACf,IACC,IAAIv+G,EAAU3C,OAAOC,eAAe,GAAI,UAAW,CAClDE,IAAK,WACJ+gH,GAAW,KAGbx/G,OAAOi8B,iBAAiB,IAAK,KAAMh7B,GAClC,MAAOiM,IAGT,OAAOsyG,EAZ4B,IAiBsB,CAACC,SAAS,GAEpE,SAASxjF,EAAiBysC,EAAM1gE,EAAMoyD,GACrCsO,EAAKzsC,iBAAiBj0B,EAAMoyD,EAAUmlD,GAGvC,SAASn0D,EAAoBsd,EAAM1gE,EAAMoyD,GACxCsO,EAAKtd,oBAAoBpjD,EAAMoyD,EAAUmlD,GAG1C,SAASlvD,EAAYroD,EAAMw7E,EAAO/sD,EAAGkkB,EAAG+kE,GACvC,MAAO,CACN13G,KAAMA,EACNw7E,MAAOA,EACP5uE,OAAQ8qG,GAAe,KACvBjpF,OAAS50B,IAAN40B,EAAkBA,EAAI,KACzBkkB,OAAS94C,IAAN84C,EAAkBA,EAAI,MA4H3B,SAASglE,EAAkBj3C,EAAMtO,EAAUopB,GAC1C,IAnHkB3+E,EAAIk4G,EAClB6C,EACAtrG,EAiHAmlC,EAAUivB,EAAK61C,KAAiB71C,EAAK61C,GAAe,IAGpDsB,EAAUpmE,EAAQomE,QAnGvB,SAAuB3yF,GACtB,IAAI2yF,EAAUj2G,SAASf,cAAc,OACjCkmD,EAAMyvD,EAAa,eAEnBj1G,EACH,oHAUDs2G,EAAQt2G,MAAMu2G,QAAUv2G,EACxBs2G,EAAQ59D,UAAY8M,EACpB8wD,EAAQ9iE,UACP,eAAiBgS,EAAM,mBAAqBxlD,EAAQ,0GASnCwlD,EAAM,mBAAqBxlD,EAAQ,qFAUrD,IAAIw2G,EAASF,EAAQtvF,WAAW,GAC5ByvF,EAASH,EAAQtvF,WAAW,GAEhCsvF,EAAQI,OAAS,WAChBF,EAAOhmE,WAtCM,IAuCbgmE,EAAOvtF,UAvCM,IAwCbwtF,EAAOjmE,WAxCM,IAyCbimE,EAAOxtF,UAzCM,KA2Cd,IAAIwnC,EAAW,WACd6lD,EAAQI,SACR/yF,KAMD,OAHA+O,EAAiB8jF,EAAQ,SAAU/lD,EAAS56D,KAAK2gH,EAAQ,WACzD9jF,EAAiB+jF,EAAQ,SAAUhmD,EAAS56D,KAAK4gH,EAAQ,WAElDH,EA6CyBK,EAtHdr7G,EAsHsC,WACvD,GAAI40C,EAAQomE,QACX,OAAOzlD,EAAS/J,EAAY,SAAUmzB,KAvHpCo8B,GAAU,EACVtrG,EAAO,GAEJ,WACNA,EAAOlM,MAAM5I,UAAU+E,MAAMxG,KAAK6K,WAClCm0G,EAAUA,GAAW74G,KAEhB07G,IACJA,GAAU,EACVzgC,EAAQ2T,iBAAiB/0F,KAAKiC,QAAQ,WACrC4/G,GAAU,EACV/6G,EAAGwI,MAAM0vG,EAASzoG,WAiEtB,SAAwBo0D,EAAMx7C,GAC7B,IAAIusB,EAAUivB,EAAK61C,KAAiB71C,EAAK61C,GAAe,IACpDjpF,EAAQmkB,EAAQ0mE,YAAc,SAASjzG,GACtCA,EAAE+yB,gBAAkBy+E,GACvBxxF,KAIFiyD,EAAQj4D,KAAKy3F,GAAwB,SAAS32G,GAC7Ci0B,EAAiBysC,EAAM1gE,EAAMstB,MAQ9BmkB,EAAQ2mE,SAAW13C,EAAKzuB,aAExByuB,EAAK9lC,UAAUof,IAAIy8D,GA8BnB4B,CAAe33C,GAAM,WACpB,GAAIjvB,EAAQomE,QAAS,CACpB,IAAIt9D,EAAYmmB,EAAKvpB,WACjBoD,GAAaA,IAAcs9D,EAAQ1gE,YACtCoD,EAAUyf,aAAa69C,EAASt9D,EAAU+9D,YAI3CT,EAAQI,aAKX,SAASM,EAAqB73C,GAC7B,IAAIjvB,EAAUivB,EAAK61C,IAAgB,GAC/BsB,EAAUpmE,EAAQomE,eAEfpmE,EAAQomE,QA5ChB,SAA0Bn3C,GACzB,IAAIjvB,EAAUivB,EAAK61C,IAAgB,GAC/BjpF,EAAQmkB,EAAQ0mE,YAEhB7qF,IACH6pD,EAAQj4D,KAAKy3F,GAAwB,SAAS32G,GAC7CojD,EAAoBsd,EAAM1gE,EAAMstB,aAG1BmkB,EAAQ0mE,aAGhBz3C,EAAK9lC,UAAUzf,OAAOs7F,GAiCtB+B,CAAiB93C,GAEbm3C,GAAWA,EAAQ1gE,YACtB0gE,EAAQ1gE,WAAWyE,YAAYi8D,GAiBjCliH,EAAOD,QAAU,CAMhB+iH,SAA4B,oBAAXzgH,QAA8C,oBAAb4J,SAElDk2E,WAAY,WACX,IAtBiBN,EAAUv6D,EAExB1b,EAoBCm3G,EAAY,kCAtBWz7F,EA2B1B,sBAAwBy5F,EAAuB,IAAMgC,EAAY,eACjDhC,EAAuB,IAAMgC,EAAY,KACnDjC,EAAqB,sBACHC,EAAuB,qBAC/BA,EAAuB,YA7BrCn1G,GAFci2E,EAwBPt7E,MAtBUy8G,QAAU/2G,SAASf,cAAc,SACjD22E,EAASmhC,SACbnhC,EAASmhC,OAASp3G,EAClB0b,EAAM,mBAAqBA,EAC3B1b,EAAMm5C,aAAa,OAAQ,YAC3B94C,SAASozC,qBAAqB,QAAQ,GAAGvzC,YAAYF,IAGtDA,EAAME,YAAYG,SAASg3G,eAAe37F,KA0B1C4uE,eAAgB,SAAS5rD,EAAMy4C,GACV,iBAATz4C,EACVA,EAAOr+B,SAASi3G,eAAe54E,GACrBA,EAAK7hC,SAEf6hC,EAAOA,EAAK,IAGTA,GAAQA,EAAKq4C,SAEhBr4C,EAAOA,EAAKq4C,QAMb,IAAI5a,EAAUz9B,GAAQA,EAAKo2E,YAAcp2E,EAAKo2E,WAAW,MASzD,OAAI34C,GAAWA,EAAQ4a,SAAWr4C,GAtTpC,SAAoBq4C,EAAQI,GAC3B,IAAIn3E,EAAQ+2E,EAAO/2E,MAIfu3G,EAAexgC,EAAOh+B,aAAa,UACnCy+D,EAAczgC,EAAOh+B,aAAa,SAoBtC,GAjBAg+B,EAAOi+B,GAAe,CACrByC,QAAS,CACR57F,OAAQ07F,EACR37F,MAAO47F,EACPx3G,MAAO,CACNC,QAASD,EAAMC,QACf4b,OAAQ7b,EAAM6b,OACdD,MAAO5b,EAAM4b,SAQhB5b,EAAMC,QAAUD,EAAMC,SAAW,QAEb,OAAhBu3G,GAAwC,KAAhBA,EAAoB,CAC/C,IAAIE,EAAe3B,EAAah/B,EAAQ,cACnBz+E,IAAjBo/G,IACH3gC,EAAOn7D,MAAQ87F,GAIjB,GAAqB,OAAjBH,GAA0C,KAAjBA,EAC5B,GAA4B,KAAxBxgC,EAAO/2E,MAAM6b,OAIhBk7D,EAAOl7D,OAASk7D,EAAOn7D,OAASu7D,EAAOz/E,QAAQ6yF,aAAe,OACxD,CACN,IAAIotB,EAAgB5B,EAAah/B,EAAQ,eACpBz+E,IAAjBo/G,IACH3gC,EAAOl7D,OAAS87F,IA6QjBC,CAAWl5E,EAAMy4C,GACVhb,GAGD,MAGRoyB,eAAgB,SAASpyB,GACxB,IAAI4a,EAAS5a,EAAQ4a,OACrB,GAAKA,EAAOi+B,GAAZ,CAIA,IAAIyC,EAAU1gC,EAAOi+B,GAAayC,QAClC,CAAC,SAAU,SAAS16G,SAAQ,SAASojB,GACpC,IAAI7qB,EAAQmiH,EAAQt3F,GAChBy1D,EAAQiH,cAAcvnF,GACzByhF,EAAO8gC,gBAAgB13F,GAEvB42D,EAAO59B,aAAah5B,EAAM7qB,MAI5BsgF,EAAQj4D,KAAK85F,EAAQz3G,OAAS,IAAI,SAAS1K,EAAOM,GACjDmhF,EAAO/2E,MAAMpK,GAAON,KAOrByhF,EAAOn7D,MAAQm7D,EAAOn7D,aAEfm7D,EAAOi+B,KAGftiF,iBAAkB,SAASunD,EAAOx7E,EAAMoyD,GACvC,IAAIkmB,EAASkD,EAAMlD,OACnB,GAAa,WAATt4E,EAAJ,CAMA,IAAIyxC,EAAU2gB,EAASmkD,KAAiBnkD,EAASmkD,GAAe,IAMhEtiF,EAAiBqkD,EAAQt4E,GALXyxC,EAAQ4nE,UAAY5nE,EAAQ4nE,QAAU,KAChC79B,EAAM18E,GAAK,IAAMkB,GAAQ,SAASg0B,GACrDo+B,EA1QH,SAAyBp+B,EAAOwnD,GAC/B,IAAIx7E,EAAO42G,EAAY5iF,EAAMh0B,OAASg0B,EAAMh0B,KACxCwO,EAAM2oE,EAAQmhB,oBAAoBtkE,EAAOwnD,GAC7C,OAAOnzB,EAAYroD,EAAMw7E,EAAOhtE,EAAIigB,EAAGjgB,EAAImkC,EAAG3e,GAuQnCslF,CAAgBtlF,EAAOwnD,WAPhCm8B,EAAkBr/B,EAAQlmB,EAAUopB,IAatCp4B,oBAAqB,SAASo4B,EAAOx7E,EAAMoyD,GAC1C,IAAIkmB,EAASkD,EAAMlD,OACnB,GAAa,WAATt4E,EAAJ,CAMA,IAEIstB,IAFU8kC,EAASmkD,IAAgB,IACjB8C,SAAW,IACb79B,EAAM18E,GAAK,IAAMkB,GAChCstB,GAIL81B,EAAoBk1B,EAAQt4E,EAAMstB,QAXjCirF,EAAqBjgC,KA0BxBnB,EAAQoiC,SAAWtlF,EAWnBkjD,EAAQqiC,YAAcp2D,GAEpB,CAAC,GAAK,KAAKq2D,GAAG,CAAC,SAASljD,EAAQ5gE,EAAOD,GAGzC,IAAIyhF,EAAU5gB,EAAQ,IAClBmjD,EAAQnjD,EAAQ,IAChBojD,EAAMpjD,EAAQ,IAGdqjD,EAAiBD,EAAIlB,SAAWkB,EAAMD,EAO1C/jH,EAAOD,QAAUyhF,EAAQ9qD,OAAO,CAI/ByrD,WAAY,aASZ+T,eAAgB,aAQhBiE,eAAgB,aAShB77D,iBAAkB,aAQlBmvB,oBAAqB,cAEnBw2D,IAqBD,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKC,GAAG,CAAC,SAAStjD,EAAQ5gE,EAAOD,GAGzDC,EAAOD,QAAU,GACjBC,EAAOD,QAAQokH,OAASvjD,EAAQ,IAChC5gE,EAAOD,QAAQsiF,OAASzhB,EAAQ,IAChC5gE,EAAOD,QAAQ49D,MAAQiD,EAAQ,KAE7B,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKwjD,GAAG,CAAC,SAASxjD,EAAQ5gE,EAAOD,GASzD,IAAI6nC,EAAWg5B,EAAQ,IACnB1Z,EAAW0Z,EAAQ,IACnB4gB,EAAU5gB,EAAQ,IAEtBh5B,EAASi8C,KAAK,SAAU,CACvB/B,QAAS,CACRqiC,OAAQ,CACPE,WAAW,MAKd,IAAIC,EAAU,CACbx+B,QAAS,SAASviF,GACjB,IAAImF,EAAQnF,EAAO41C,KACf0sC,EAAQtiF,EAAOsiF,MACfX,EAAOW,EAAMqC,eAAex/E,GAE5B6hF,EADUrF,GAAQW,EAAMsC,iBAAiBz/E,IACpBw8E,EAAKY,QAAQ4J,WAAc,GAChDjnF,EAAS8hF,EAAO9hF,QAAU,EAE9B,OAAQA,EAAgB,SAAS4O,EAAOpX,GACvC,OAAQA,EAAIwI,GAAU8hF,EAAOtqF,GAAGg9F,OAAU,MAD1B,MAKlBsnB,SAAU,SAAShhH,GAClB,IAAIghH,EAAWhhH,EAAOghH,SAClBzrF,EAAIyrF,EAAWA,EAASzrF,EAAI,KAC5BkkB,EAAIunE,EAAWA,EAASvnE,EAAI,KAEhC,OAAO,SAAS3lC,GACf,MAAO,CACNyhB,EAAS,OAANA,EAAazhB,EAAMyhB,EAAIA,EAC1BkkB,EAAS,OAANA,EAAa3lC,EAAM2lC,EAAIA,MAO9B,SAASwnE,EAAWz3G,EAAIrE,EAAOixB,GAC9B,IAEIn2B,EAFAsjF,EAAQ/5E,EAAGy5E,QAAU,GACrBrtC,EAAO2tC,EAAM3tC,KAOjB,QAJaj1C,IAATi1C,IACHA,IAAS2tC,EAAMj/D,kBAGH,IAATsxB,GAA2B,OAATA,EACrB,OAAO,EAGR,IAAa,IAATA,EACH,MAAO,SAIR,GADA31C,EAASshB,WAAWq0B,EAAM,IACtB8D,SAASz5C,IAAWtB,KAAKuE,MAAMjD,KAAYA,EAK9C,MAJgB,MAAZ21C,EAAK,IAA0B,MAAZA,EAAK,KAC3B31C,EAASkF,EAAQlF,KAGdA,IAAWkF,GAASlF,EAAS,GAAKA,GAAUm2B,IAIzCn2B,EAGR,OAAQ21C,GAER,IAAK,SACJ,MAAO,QACR,IAAK,MACJ,MAAO,MACR,IAAK,OACJ,MAAO,SAER,IAAK,SACL,IAAK,QACL,IAAK,MACJ,OAAOA,EAER,QACC,OAAO,GAIT,SAASsrE,EAAgBlhH,GACxB,IAII4jF,EAJAL,EAAQvjF,EAAOwJ,GAAGy5E,QAAU,GAC5BrhC,EAAQ5hD,EAAOwJ,GAAG0iF,QAAU,GAC5Bt2C,EAAO51C,EAAO41C,KACd31C,EAAS,KAGb,GAAIy5C,SAAS9D,GACZ,OAAO,KAmBR,GAZa,UAATA,EACH31C,OAA+BU,IAAtB4iF,EAAM49B,YAA4Bv/D,EAAMgR,OAAS2wB,EAAM49B,YAC7C,QAATvrE,EACV31C,OAA4BU,IAAnB4iF,EAAM69B,SAAyBx/D,EAAMp7B,IAAM+8D,EAAM69B,cAC5BzgH,IAApB4iF,EAAM89B,UAChBphH,EAASsjF,EAAM89B,UACLz/D,EAAM0/D,gBAChBrhH,EAAS2hD,EAAM0/D,kBACL1/D,EAAM+hC,eAChB1jF,EAAS2hD,EAAM+hC,gBAGZ1jF,QAAyC,CAC5C,QAAiBU,IAAbV,EAAOs1B,QAAgC50B,IAAbV,EAAOw5C,EACpC,OAAOx5C,EAGR,GAAsB,iBAAXA,GAAuBy5C,SAASz5C,GAE1C,MAAO,CACNs1B,GAFDquD,EAAahiC,EAAMiiC,gBAEF5jF,EAAS,KACzBw5C,EAAGmqC,EAAa,KAAO3jF,GAK1B,OAAO,KAGR,SAASshH,EAAcnF,EAASj3G,EAAO27G,GACtC,IAGI7gH,EAFA21C,EADSwmE,EAAQj3G,GACHywC,KACd4rE,EAAU,CAACr8G,GAGf,IAAK27G,EACJ,OAAOlrE,EAGR,MAAgB,IAATA,IAA6C,IAA3B4rE,EAAQt4G,QAAQ0sC,IAAc,CACtD,IAAK8D,SAAS9D,GACb,OAAOA,EAIR,KADA31C,EAASm8G,EAAQxmE,IAEhB,OAAO,EAGR,GAAI31C,EAAOuxB,QACV,OAAOokB,EAGR4rE,EAAQt/G,KAAK0zC,GACbA,EAAO31C,EAAO21C,KAGf,OAAO,EAGR,SAAS6rE,EAAazhH,GACrB,IAAI41C,EAAO51C,EAAO41C,KACd9uC,EAAO,UAEX,OAAa,IAAT8uC,EACI,MAGH8D,SAAS9D,KACb9uC,EAAO,YAGDi6G,EAAQj6G,GAAM9G,IAGtB,SAAS0hH,EAAW5tG,GACnB,OAAOA,IAAUA,EAAM6zE,KAGxB,SAASg6B,EAASn7B,EAAKo7B,EAAQC,EAAQC,EAAMC,GAC5C,IAAIrlH,EAEJ,GAAKolH,GAASC,EAAd,CAMA,IADAv7B,EAAIuoB,OAAO6S,EAAO,GAAGrsF,EAAGqsF,EAAO,GAAGnoE,GAC7B/8C,EAAI,EAAGA,EAAIolH,IAAQplH,EACvBuhF,EAAQmB,OAAO4vB,OAAOxoB,EAAKo7B,EAAOllH,EAAI,GAAIklH,EAAOllH,IAOlD,IAHA8pF,EAAIwoB,OAAO6S,EAAOE,EAAO,GAAGxsF,EAAGssF,EAAOE,EAAO,GAAGtoE,GAG3C/8C,EAAIqlH,EAAO,EAAGrlH,EAAI,IAAKA,EAC3BuhF,EAAQmB,OAAO4vB,OAAOxoB,EAAKq7B,EAAOnlH,GAAImlH,EAAOnlH,EAAI,IAAI,IAiDvDD,EAAOD,QAAU,CAChBoJ,GAAI,SAEJo8G,oBAAqB,SAAS1/B,EAAOviF,GACpC,IAGI4hF,EAAMjlF,EAAG8M,EAAIxJ,EAHbo2B,GAASksD,EAAMv3E,KAAKo2E,UAAY,IAAIj8E,OACpC47G,EAAY/gH,EAAQ+gH,UACpB1E,EAAU,GAGd,IAAK1/G,EAAI,EAAGA,EAAI05B,IAAS15B,EAGxBsD,EAAS,MADTwJ,GADAm4E,EAAOW,EAAMqC,eAAejoF,IAClB6lF,UAGA/4E,EAAGy5E,QAAUz5E,aAAcm6C,EAASm8B,OAC7C9/E,EAAS,CACRwxB,QAAS8wD,EAAMsC,iBAAiBloF,GAChCk5C,KAAMqrE,EAAWz3G,EAAI9M,EAAG05B,GACxBksD,MAAOA,EACP94E,GAAIA,IAINm4E,EAAKsgC,QAAUjiH,EACfo8G,EAAQl6G,KAAKlC,GAGd,IAAKtD,EAAI,EAAGA,EAAI05B,IAAS15B,GACxBsD,EAASo8G,EAAQ1/G,MAKjBsD,EAAO41C,KAAO2rE,EAAcnF,EAAS1/G,EAAGokH,GACxC9gH,EAAOghH,SAAWE,EAAgBlhH,GAClCA,EAAOkiH,OAAST,EAAazhH,KAI/BmiH,kBAAmB,SAAS7/B,EAAOlvE,GAClC,IAAIuuE,EAAOvuE,EAAKuuE,KAAKsgC,QACrB,GAAKtgC,EAAL,CAIA,IAAI6E,EAAMlE,EAAMkE,IACZh9E,EAAKm4E,EAAKn4E,GACVoY,EAAOpY,EAAGkwF,MACV1S,EAASx9E,EAAG2iF,WAAa,GACzB+1B,EAASvgC,EAAKugC,OACdj7E,EAAQrlB,EAAK0C,iBAAmB+f,EAASrlC,OAAOmiG,aAEhD+gB,GAAUj7E,GAAS+/C,EAAO9hF,SAC7B+4E,EAAQmB,OAAOmH,SAASC,EAAKlE,EAAMmE,WAlGtC,SAAgBD,EAAKQ,EAAQk7B,EAAQtgG,EAAMqlB,EAAOqU,GACjD,IAMI5+C,EAAGulF,EAAM98E,EAAOi9G,EAAIC,EAAIC,EAAIC,EAN5BnsF,EAAQ4wD,EAAO9hF,OACfs9G,EAAO5gG,EAAK+pE,SACZi2B,EAAS,GACTC,EAAS,GACTC,EAAO,EACPC,EAAO,EAKX,IAFAv7B,EAAIsoB,YAECpyG,EAAI,EAAGulF,EAAQ7rD,IAAUklB,EAAO5+C,EAAIulF,IAAQvlF,EAGhD2lH,EAAKH,EADLE,EAAKp7B,EADL7hF,EAAQzI,EAAI05B,GACOsjE,MACHv0F,EAAOyc,GACvB0gG,EAAKZ,EAAWU,GAChBG,EAAKb,EAAWW,GAEZC,GAAMC,GACTT,EAAOF,EAAO1/G,KAAKkgH,GACnBL,EAAOF,EAAO3/G,KAAKmgH,IACTP,GAAQC,IACbS,GAMAF,GACHV,EAAO1/G,KAAKkgH,GAETG,GACHV,EAAO3/G,KAAKmgH,KATbV,EAASn7B,EAAKo7B,EAAQC,EAAQC,EAAMC,GACpCD,EAAOC,EAAO,EACdH,EAAS,GACTC,EAAS,KAYZF,EAASn7B,EAAKo7B,EAAQC,EAAQC,EAAMC,GAEpCv7B,EAAI2xB,YACJ3xB,EAAIsC,UAAY7hD,EAChBu/C,EAAI5wC,OAyDF6sE,CAAOj8B,EAAKQ,EAAQk7B,EAAQtgG,EAAMqlB,EAAOz9B,EAAG8mF,OAC5CrS,EAAQmB,OAAOsH,WAAWF,QAK3B,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKk8B,GAAG,CAAC,SAASrlD,EAAQ5gE,EAAOD,GAGzD,IAAI6nC,EAAWg5B,EAAQ,IACnBhQ,EAAUgQ,EAAQ,IAClB4gB,EAAU5gB,EAAQ,IAClBghB,EAAUhhB,EAAQ,IAElBssB,EAAO1L,EAAQ0L,KAmFnB,SAASg5B,EAAYC,EAAWx+F,GAC/B,OAAOw+F,EAAUC,cAChBz+F,EAAWzlB,KAAKy8G,MAChBwH,EAAUE,SApFZz+E,EAASi8C,KAAK,SAAU,CACvBxB,OAAQ,CACPx2E,SAAS,EACToN,SAAU,MACV4tF,WAAW,EACXruE,SAAS,EACTo7C,OAAQ,IAGR4Y,QAAS,SAASj9E,EAAGk9E,GACpB,IAAI/jF,EAAQ+jF,EAAW9H,aACnB2hC,EAAK//G,KAAKs/E,MACVX,EAAOohC,EAAGp+B,eAAex/E,GAG7Bw8E,EAAKz9B,OAAyB,OAAhBy9B,EAAKz9B,QAAmB6+D,EAAGh4G,KAAKo2E,SAASh8E,GAAO++C,OAAS,KAGvE6+D,EAAGhqD,UAGJ6+B,QAAS,KAETltE,OAAQ,CACPo4F,SAAU,GACV3+F,QAAS,GAYTukE,eAAgB,SAASpG,GACxB,IAAIv3E,EAAOu3E,EAAMv3E,KACjB,OAAOkzE,EAAQ92E,QAAQ4D,EAAKo2E,UAAYp2E,EAAKo2E,SAAS97E,KAAI,SAASk9E,EAAS7lF,GAC3E,MAAO,CACN2qB,KAAMk7D,EAAQ/1D,MACds8D,UAAa7K,EAAQ92E,QAAQo7E,EAAQj+D,iBAA6Ci+D,EAAQj+D,gBAAgB,GAAlDi+D,EAAQj+D,gBAChE4/B,QAASo+B,EAAMsC,iBAAiBloF,GAChC68G,QAASh3B,EAAQ6J,eACjB42B,SAAUzgC,EAAQ8J,WAClBwiB,eAAgBtsB,EAAQ+J,iBACxB4sB,SAAU32B,EAAQgK,gBAClBvD,UAAWzG,EAAQa,YACnB2F,YAAaxG,EAAQrwC,YACrBs1C,WAAYjF,EAAQiF,WAGpBpG,aAAc1kF,KAEbsG,MAAQ,MAKdylF,eAAgB,SAASnG,GACxB,IAAIj7D,EAAO,GACXA,EAAKnlB,KAAK,cAAgBogF,EAAM18E,GAAK,aACrC,IAAK,IAAIlJ,EAAI,EAAGA,EAAI4lF,EAAMv3E,KAAKo2E,SAASj8E,OAAQxI,IAC/C2qB,EAAKnlB,KAAK,qCAAuCogF,EAAMv3E,KAAKo2E,SAASzkF,GAAG4nB,gBAAkB,aACtFg+D,EAAMv3E,KAAKo2E,SAASzkF,GAAG8vB,OAC1BnF,EAAKnlB,KAAKogF,EAAMv3E,KAAKo2E,SAASzkF,GAAG8vB,OAElCnF,EAAKnlB,KAAK,SAGX,OADAmlB,EAAKnlB,KAAK,SACHmlB,EAAKtkB,KAAK,OAmBnB,IAAI87E,EAASxxB,EAAQl6B,OAAO,CAE3ByrD,WAAY,SAASY,GACpBvB,EAAQ9qD,OAAOnwB,KAAMw8E,GAGrBx8E,KAAKigH,eAAiB,GAGtBjgH,KAAKkgH,cAAe,GAOrBza,aAAc9e,EACd5wB,OAAQ,SAAS2vC,EAAUhhF,EAAWihF,GACrC,IAAI/mB,EAAK5+E,KA0BT,OAvBA4+E,EAAG6mB,eAGH7mB,EAAG8mB,SAAWA,EACd9mB,EAAGl6D,UAAYA,EACfk6D,EAAG+mB,QAAUA,EAGb/mB,EAAGinB,sBACHjnB,EAAGknB,gBACHlnB,EAAGmnB,qBAEHnnB,EAAGuhC,oBACHvhC,EAAGwhC,cACHxhC,EAAGyhC,mBAGHzhC,EAAGgoB,YACHhoB,EAAGioB,MACHjoB,EAAGkoB,WAEHloB,EAAGmoB,cAEInoB,EAAGoI,SAEX+f,YAAapgB,EAIbkf,oBAAqBlf,EACrBmf,cAAe,WACd,IAAIlnB,EAAK5+E,KAEL4+E,EAAGiC,gBAENjC,EAAG39D,MAAQ29D,EAAG8mB,SACd9mB,EAAGn7D,KAAO,EACVm7D,EAAGluD,MAAQkuD,EAAG39D,QAEd29D,EAAG19D,OAAS09D,EAAGl6D,UAGfk6D,EAAGp7D,IAAM,EACTo7D,EAAGhvB,OAASgvB,EAAG19D,QAIhB09D,EAAGppB,YAAc,EACjBopB,EAAGz9B,WAAa,EAChBy9B,EAAGnpB,aAAe,EAClBmpB,EAAGx9B,cAAgB,EAGnBw9B,EAAGoI,QAAU,CACZ/lE,MAAO,EACPC,OAAQ,IAGV6kF,mBAAoBpf,EAIpBw5B,kBAAmBx5B,EACnBy5B,YAAa,WACZ,IAAIxhC,EAAK5+E,KACL4/G,EAAYhhC,EAAG7hF,QAAQ2qB,QAAU,GACjC44F,EAAcrlC,EAAQzuC,SAASozE,EAAUl6B,eAAgB,CAAC9G,EAAGU,OAAQV,IAAO,GAE5EghC,EAAUt9G,SACbg+G,EAAcA,EAAYh+G,QAAO,SAASyhC,GACzC,OAAO67E,EAAUt9G,OAAOyhC,EAAM66C,EAAGU,MAAMv3E,UAIrC62E,EAAG7hF,QAAQk1B,SACdquF,EAAYruF,UAGb2sD,EAAG0hC,YAAcA,GAElBD,iBAAkB15B,EAIlBigB,UAAWjgB,EACXkgB,IAAK,WACJ,IAAIjoB,EAAK5+E,KACL+/C,EAAO6+B,EAAG7hF,QACV6iH,EAAY7/D,EAAKr4B,OACjBpiB,EAAUy6C,EAAKz6C,QAEfk+E,EAAM5E,EAAG4E,IAET+8B,EAAgBl/E,EAASrlC,OACzBonF,EAAiBnI,EAAQmI,eACzBhiE,EAAWgiE,EAAew8B,EAAUx+F,SAAUm/F,EAAc3gB,iBAC5DxC,EAAYha,EAAew8B,EAAUxiB,UAAWmjB,EAAc1gB,kBAC9D1lE,EAAaipD,EAAew8B,EAAUzlF,WAAYomF,EAAc5gB,mBAChE6gB,EAAYvlC,EAAQiiB,WAAW97E,EAAUg8E,EAAWjjE,GAGpDsmF,EAAW7hC,EAAGqhC,eAAiB,GAE/Bj5B,EAAUpI,EAAGoI,QACbnG,EAAejC,EAAGiC,eAWtB,GATIA,GACHmG,EAAQ/lE,MAAQ29D,EAAG8mB,SACnB1e,EAAQ9lE,OAAS5b,EAAU,GAAK,IAEhC0hF,EAAQ/lE,MAAQ3b,EAAU,GAAK,EAC/B0hF,EAAQ9lE,OAAS09D,EAAGl6D,WAIjBpf,EAGH,GAFAk+E,EAAI8Z,KAAOkjB,EAEP3/B,EAAc,CAIjB,IAAI6/B,EAAa9hC,EAAG8hC,WAAa,CAAC,GAC9BC,EAAc/hC,EAAG0hC,YAAYp+G,OAASkf,EAAYw+F,EAAUz+F,QAAW,EAE3EqiE,EAAIwnB,UAAY,OAChBxnB,EAAIynB,aAAe,MAEnBhwB,EAAQj4D,KAAK47D,EAAG0hC,aAAa,SAASp6B,EAAYxsF,GACjD,IACIunB,EADW0+F,EAAYC,EAAWx+F,GACdA,EAAW,EAAKoiE,EAAIoa,YAAY1X,EAAW7hE,MAAMpD,MAErEy/F,EAAWA,EAAWx+G,OAAS,GAAK+e,EAAQ2+F,EAAUz+F,SAAWy9D,EAAG39D,QACvE0/F,GAAev/F,EAAYw+F,EAAUz+F,QACrCu/F,EAAWA,EAAWx+G,QAAU08E,EAAGn7D,MAIpCg9F,EAAS/mH,GAAK,CACb+pB,KAAM,EACND,IAAK,EACLvC,MAAOA,EACPC,OAAQE,GAGTs/F,EAAWA,EAAWx+G,OAAS,IAAM+e,EAAQ2+F,EAAUz+F,WAGxD6lE,EAAQ9lE,QAAUy/F,MAEZ,CACN,IAAIC,EAAWhB,EAAUz+F,QACrB0/F,EAAejiC,EAAGiiC,aAAe,GACjCC,EAAalB,EAAUz+F,QACvB4/F,EAAkB,EAClBC,EAAmB,EACnBC,EAAa7/F,EAAWw/F,EAE5B3lC,EAAQj4D,KAAK47D,EAAG0hC,aAAa,SAASp6B,EAAYxsF,GACjD,IACIwnH,EADWvB,EAAYC,EAAWx+F,GACVA,EAAW,EAAKoiE,EAAIoa,YAAY1X,EAAW7hE,MAAMpD,MAGzE+/F,EAAmBC,EAAaj6B,EAAQ9lE,SAC3C4/F,GAAcC,EAAkBnB,EAAUz+F,QAC1C0/F,EAAa3hH,KAAK6hH,GAElBA,EAAkB,EAClBC,EAAmB,GAIpBD,EAAkBplH,KAAKyK,IAAI26G,EAAiBG,GAC5CF,GAAoBC,EAGpBR,EAAS/mH,GAAK,CACb+pB,KAAM,EACND,IAAK,EACLvC,MAAOigG,EACPhgG,OAAQE,MAIV0/F,GAAcC,EACdF,EAAa3hH,KAAK6hH,GAClB/5B,EAAQ/lE,OAAS6/F,EAInBliC,EAAG39D,MAAQ+lE,EAAQ/lE,MACnB29D,EAAG19D,OAAS8lE,EAAQ9lE,QAErB4lF,SAAUngB,EAGV9F,aAAc,WACb,MAAiC,QAA1B7gF,KAAKjD,QAAQ2V,UAAgD,WAA1B1S,KAAKjD,QAAQ2V,UAIxD4wE,KAAM,WACL,IAAI1E,EAAK5+E,KACL+/C,EAAO6+B,EAAG7hF,QACV6iH,EAAY7/D,EAAKr4B,OACjB64F,EAAgBl/E,EAASrlC,OACzBmlH,EAAcZ,EAAc5/D,SAASmoC,KACrCs4B,EAAcxiC,EAAG39D,MACjBy/F,EAAa9hC,EAAG8hC,WAEpB,GAAI3gE,EAAKz6C,QAAS,CACjB,IAOIitD,EAPAixB,EAAM5E,EAAG4E,IACTJ,EAAiBnI,EAAQmI,eACzBqmB,EAAYrmB,EAAew8B,EAAUnW,UAAW8W,EAAc7gB,kBAC9Dt+E,EAAWgiE,EAAew8B,EAAUx+F,SAAUm/F,EAAc3gB,iBAC5DxC,EAAYha,EAAew8B,EAAUxiB,UAAWmjB,EAAc1gB,kBAC9D1lE,EAAaipD,EAAew8B,EAAUzlF,WAAYomF,EAAc5gB,mBAChE6gB,EAAYvlC,EAAQiiB,WAAW97E,EAAUg8E,EAAWjjE,GAIxDqpD,EAAIwnB,UAAY,OAChBxnB,EAAIynB,aAAe,SACnBznB,EAAIwC,UAAY,GAChBxC,EAAIuC,YAAc0jB,EAClBjmB,EAAIsC,UAAY2jB,EAChBjmB,EAAI8Z,KAAOkjB,EAEX,IAAIV,EAAWH,EAAYC,EAAWx+F,GAClCq/F,EAAW7hC,EAAGqhC,eA8Ddp/B,EAAejC,EAAGiC,eAErBtuB,EADGsuB,EACM,CACRtuD,EAAGqsD,EAAGn7D,MAAS29F,EAAcV,EAAW,IAAM,EAC9CjqE,EAAGmoC,EAAGp7D,IAAMo8F,EAAUz+F,QACtB2nE,KAAM,GAGE,CACRv2D,EAAGqsD,EAAGn7D,KAAOm8F,EAAUz+F,QACvBs1B,EAAGmoC,EAAGp7D,IAAMo8F,EAAUz+F,QACtB2nE,KAAM,GAIR,IAAIm4B,EAAa7/F,EAAWw+F,EAAUz+F,QACtC85D,EAAQj4D,KAAK47D,EAAG0hC,aAAa,SAASp6B,EAAYxsF,GACjD,IAAIqkG,EAAYva,EAAIoa,YAAY1X,EAAW7hE,MAAMpD,MAC7CA,EAAQ6+F,EAAY1+F,EAAW,EAAK28E,EACpCxrE,EAAIggC,EAAOhgC,EACXkkB,EAAI8b,EAAO9b,EAEXoqC,EACCtuD,EAAItR,GAASmgG,IAChB3qE,EAAI8b,EAAO9b,GAAKwqE,EAChB1uD,EAAOu2B,OACPv2D,EAAIggC,EAAOhgC,EAAIqsD,EAAGn7D,MAAS29F,EAAcV,EAAWnuD,EAAOu2B,OAAS,GAE3DryC,EAAIwqE,EAAariC,EAAGhvB,SAC9Br9B,EAAIggC,EAAOhgC,EAAIA,EAAIqsD,EAAGiiC,aAAatuD,EAAOu2B,MAAQ82B,EAAUz+F,QAC5Ds1B,EAAI8b,EAAO9b,EAAImoC,EAAGp7D,IAAMo8F,EAAUz+F,QAClCoxC,EAAOu2B,QA1FW,SAASv2D,EAAGkkB,EAAGyvC,GAClC,KAAI/lF,MAAM2/G,IAAaA,GAAY,GAAnC,CAKAt8B,EAAImoB,OAEJnoB,EAAIsC,UAAY1C,EAAe8C,EAAWJ,UAAWy6B,EAAcpiB,cACnE3a,EAAI+yB,QAAUnzB,EAAe8C,EAAWqwB,QAAS4K,EAAY/3B,gBAC7D5F,EAAIqoB,eAAiBzoB,EAAe8C,EAAW2lB,eAAgBsV,EAAY73B,kBAC3E9F,EAAI0yB,SAAW9yB,EAAe8C,EAAWgwB,SAAUiL,EAAY53B,iBAC/D/F,EAAIwC,UAAY5C,EAAe8C,EAAWF,UAAWm7B,EAAY/gC,aACjEoD,EAAIuC,YAAc3C,EAAe8C,EAAWH,YAAaw6B,EAAcpiB,cACvE,IAAIkjB,EAAqF,IAAlEj+B,EAAe8C,EAAWF,UAAWm7B,EAAY/gC,aAOxE,GALIoD,EAAIooB,aAEPpoB,EAAIooB,YAAYxoB,EAAe8C,EAAW85B,SAAUmB,EAAY93B,aAG7DtpC,EAAKr4B,QAAUq4B,EAAKr4B,OAAOm4F,cAAe,CAG7C,IAAIn7B,EAAStjE,EAAWzlB,KAAKy8G,MAAQ,EACjCkJ,EAAS58B,EAAS/oF,KAAKy8G,MACvBlwB,EAAU31D,EAAI+uF,EACdn5B,EAAU1xC,EAAI6qE,EAGlBrmC,EAAQmB,OAAOs6B,UAAUlzB,EAAK0C,EAAW1B,WAAYE,EAAQwD,EAASC,QAGjEk5B,GACJ79B,EAAIuxB,WAAWxiF,EAAGkkB,EAAGqpE,EAAU1+F,GAEhCoiE,EAAIsxB,SAASviF,EAAGkkB,EAAGqpE,EAAU1+F,GAG9BoiE,EAAI0oB,WAsDJqV,CAAchvF,EAAGkkB,EAAGyvC,GAEpBu6B,EAAS/mH,GAAG+pB,KAAO8O,EACnBkuF,EAAS/mH,GAAG8pB,IAAMizB,EAvDJ,SAASlkB,EAAGkkB,EAAGyvC,EAAY6X,GACzC,IAAIyjB,EAAepgG,EAAW,EAC1BqgG,EAAQ3B,EAAW0B,EAAejvF,EAClCmvF,EAAUjrE,EAAI+qE,EAElBh+B,EAAI4oB,SAASlmB,EAAW7hE,KAAMo9F,EAAOC,GAEjCx7B,EAAWhlC,SAEdsiC,EAAIsoB,YACJtoB,EAAIwC,UAAY,EAChBxC,EAAIuoB,OAAO0V,EAAOC,GAClBl+B,EAAIwoB,OAAOyV,EAAQ1jB,EAAW2jB,GAC9Bl+B,EAAIyoB,UA6CLG,CAAS75E,EAAGkkB,EAAGyvC,EAAY6X,GAEvBld,EACHtuB,EAAOhgC,GAAKtR,EAAS2+F,EAAUz+F,QAE/BoxC,EAAO9b,GAAKwqE,OAahB1sB,YAAa,SAASvrF,GACrB,IAAI41E,EAAK5+E,KACL+/C,EAAO6+B,EAAG7hF,QACV+G,EAAkB,YAAXkF,EAAElF,KAAqB,QAAUkF,EAAElF,KAC1CwwF,GAAU,EAEd,GAAa,cAATxwF,GACH,IAAKi8C,EAAK60C,QACT,WAEK,IAAa,UAAT9wF,EAKV,OAJA,IAAKi8C,EAAKkmC,QACT,OAOF,IAAI1zD,EAAIvpB,EAAEupB,EACNkkB,EAAIztC,EAAEytC,EAEV,GAAIlkB,GAAKqsD,EAAGn7D,MAAQ8O,GAAKqsD,EAAGluD,OAAS+lB,GAAKmoC,EAAGp7D,KAAOizB,GAAKmoC,EAAGhvB,OAG3D,IADA,IAAI+xD,EAAK/iC,EAAGqhC,eACHvmH,EAAI,EAAGA,EAAIioH,EAAGz/G,SAAUxI,EAAG,CACnC,IAAIkoH,EAASD,EAAGjoH,GAEhB,GAAI64B,GAAKqvF,EAAOn+F,MAAQ8O,GAAKqvF,EAAOn+F,KAAOm+F,EAAO3gG,OAASw1B,GAAKmrE,EAAOp+F,KAAOizB,GAAKmrE,EAAOp+F,IAAMo+F,EAAO1gG,OAAQ,CAE9G,GAAa,UAATpd,EAAkB,CAErBi8C,EAAKkmC,QAAQpsF,KAAK+kF,EAAI51E,EAAE0H,OAAQkuE,EAAG0hC,YAAY5mH,IAC/C46F,GAAU,EACV,MACM,GAAa,cAATxwF,EAAsB,CAEhCi8C,EAAK60C,QAAQ/6F,KAAK+kF,EAAI51E,EAAE0H,OAAQkuE,EAAG0hC,YAAY5mH,IAC/C46F,GAAU,EACV,QAMJ,OAAOA,KAIT,SAASutB,EAAyBviC,EAAOwiC,GACxC,IAAIhmC,EAAS,IAAID,EAAO,CACvB2H,IAAKlE,EAAMkE,IACXzmF,QAAS+kH,EACTxiC,MAAOA,IAGRjE,EAAQmlB,UAAUlhB,EAAOxD,EAAQgmC,GACjCzmC,EAAQglB,OAAO/gB,EAAOxD,GACtBwD,EAAMxD,OAASA,EAGhBriF,EAAOD,QAAU,CAChBoJ,GAAI,SASJm5E,SAAUF,EAEVkmC,WAAY,SAASziC,GACpB,IAAIwiC,EAAaxiC,EAAMviF,QAAQ++E,OAE3BgmC,GACHD,EAAyBviC,EAAOwiC,IAIlCrc,aAAc,SAASnmB,GACtB,IAAIwiC,EAAaxiC,EAAMviF,QAAQ++E,OAC3BA,EAASwD,EAAMxD,OAEfgmC,GACH7mC,EAAQk+B,QAAQ2I,EAAYzgF,EAASrlC,OAAO8/E,QAExCA,GACHT,EAAQmlB,UAAUlhB,EAAOxD,EAAQgmC,GACjChmC,EAAO/+E,QAAU+kH,GAEjBD,EAAyBviC,EAAOwiC,IAEvBhmC,IACVT,EAAQ6T,UAAU5P,EAAOxD,UAClBwD,EAAMxD,SAIfkmC,WAAY,SAAS1iC,EAAOt2E,GAC3B,IAAI8yE,EAASwD,EAAMxD,OACfA,GACHA,EAAOyY,YAAYvrF,MAKpB,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKi5G,GAAG,CAAC,SAAS5nD,EAAQ5gE,EAAOD,GAGjE,IAAI6nC,EAAWg5B,EAAQ,IACnBhQ,EAAUgQ,EAAQ,IAClB4gB,EAAU5gB,EAAQ,IAClBghB,EAAUhhB,EAAQ,IAElBssB,EAAO1L,EAAQ0L,KAEnBtlD,EAASi8C,KAAK,SAAU,CACvBlmB,MAAO,CACN9xD,SAAS,EACT83F,UAAW,OACXkD,WAAW,EACXj/E,WAAY,IACZF,QAAS,GACTzO,SAAU,MACV2R,KAAM,GACNgpD,OAAQ,OAOV,IAAI2O,EAAQ3xB,EAAQl6B,OAAO,CAC1ByrD,WAAY,SAASY,GAEpBvB,EAAQ9qD,OADCnwB,KACUw8E,GADVx8E,KAINigH,eAAiB,IAKrBxa,aAAc9e,EACd5wB,OAAQ,SAAS2vC,EAAUhhF,EAAWihF,GACrC,IAAI/mB,EAAK5+E,KA0BT,OAvBA4+E,EAAG6mB,eAGH7mB,EAAG8mB,SAAWA,EACd9mB,EAAGl6D,UAAYA,EACfk6D,EAAG+mB,QAAUA,EAGb/mB,EAAGinB,sBACHjnB,EAAGknB,gBACHlnB,EAAGmnB,qBAEHnnB,EAAGuhC,oBACHvhC,EAAGwhC,cACHxhC,EAAGyhC,mBAGHzhC,EAAGgoB,YACHhoB,EAAGioB,MACHjoB,EAAGkoB,WAEHloB,EAAGmoB,cAEInoB,EAAGoI,SAGX+f,YAAapgB,EAIbkf,oBAAqBlf,EACrBmf,cAAe,WACd,IAAIlnB,EAAK5+E,KAEL4+E,EAAGiC,gBAENjC,EAAG39D,MAAQ29D,EAAG8mB,SACd9mB,EAAGn7D,KAAO,EACVm7D,EAAGluD,MAAQkuD,EAAG39D,QAEd29D,EAAG19D,OAAS09D,EAAGl6D,UAGfk6D,EAAGp7D,IAAM,EACTo7D,EAAGhvB,OAASgvB,EAAG19D,QAIhB09D,EAAGppB,YAAc,EACjBopB,EAAGz9B,WAAa,EAChBy9B,EAAGnpB,aAAe,EAClBmpB,EAAGx9B,cAAgB,EAGnBw9B,EAAGoI,QAAU,CACZ/lE,MAAO,EACPC,OAAQ,IAGV6kF,mBAAoBpf,EAIpBw5B,kBAAmBx5B,EACnBy5B,YAAaz5B,EACb05B,iBAAkB15B,EAIlBigB,UAAWjgB,EACXkgB,IAAK,WACJ,IAAIjoB,EAAK5+E,KACLojF,EAAiBnI,EAAQmI,eACzBrjC,EAAO6+B,EAAG7hF,QACVuI,EAAUy6C,EAAKz6C,QACf8b,EAAWgiE,EAAerjC,EAAK3+B,SAAUigB,EAASrlC,OAAO4jG,iBACzD5Y,EAAUpI,EAAGoI,QACbmlB,EAAYlxB,EAAQ92E,QAAQ47C,EAAK17B,MAAQ07B,EAAK17B,KAAKniB,OAAS,EAC5Dmf,EAAa45D,EAAQl+E,QAAQunG,aAAavkD,EAAK1+B,WAAYD,GAC3D8gG,EAAW58G,EAAW6mG,EAAY9qF,EAA8B,EAAf0+B,EAAK5+B,QAAe,EAErEy9D,EAAGiC,gBACNmG,EAAQ/lE,MAAQ29D,EAAG8mB,SACnB1e,EAAQ9lE,OAASghG,IAEjBl7B,EAAQ/lE,MAAQihG,EAChBl7B,EAAQ9lE,OAAS09D,EAAGl6D,WAGrBk6D,EAAG39D,MAAQ+lE,EAAQ/lE,MACnB29D,EAAG19D,OAAS8lE,EAAQ9lE,QAGrB4lF,SAAUngB,EAGV9F,aAAc,WACb,IAAIvuE,EAAMtS,KAAKjD,QAAQ2V,SACvB,MAAe,QAARJ,GAAyB,WAARA,GAIzBgxE,KAAM,WACL,IAAI1E,EAAK5+E,KACLwjF,EAAM5E,EAAG4E,IACTJ,EAAiBnI,EAAQmI,eACzBrjC,EAAO6+B,EAAG7hF,QACVonG,EAAiB9iE,EAASrlC,OAE9B,GAAI+jD,EAAKz6C,QAAS,CACjB,IAWIogG,EAAUyc,EAAQC,EAXlBhhG,EAAWgiE,EAAerjC,EAAK3+B,SAAU+iF,EAAevE,iBACxDxC,EAAYha,EAAerjC,EAAKq9C,UAAW+G,EAAetE,kBAC1D1lE,EAAaipD,EAAerjC,EAAK5lB,WAAYgqE,EAAexE,mBAC5D0iB,EAAYpnC,EAAQiiB,WAAW97E,EAAUg8E,EAAWjjE,GACpD9Y,EAAa45D,EAAQl+E,QAAQunG,aAAavkD,EAAK1+B,WAAYD,GAC3D4U,EAAS3U,EAAa,EAAI0+B,EAAK5+B,QAC/BsjE,EAAW,EACXjhE,EAAMo7D,EAAGp7D,IACTC,EAAOm7D,EAAGn7D,KACVmsC,EAASgvB,EAAGhvB,OACZl/B,EAAQkuD,EAAGluD,MAGf8yD,EAAIsC,UAAY1C,EAAerjC,EAAK0pD,UAAWtF,EAAezE,kBAC9Dlc,EAAI8Z,KAAO+kB,EAGPzjC,EAAGiC,gBACNshC,EAAS1+F,GAASiN,EAAQjN,GAAQ,EAClC2+F,EAAS5+F,EAAMwS,EACf0vE,EAAWh1E,EAAQjN,IAEnB0+F,EAA2B,SAAlBpiE,EAAKrtC,SAAsB+Q,EAAOuS,EAAStF,EAAQsF,EAC5DosF,EAAS5+F,GAAQosC,EAASpsC,GAAO,EACjCkiF,EAAW91C,EAASpsC,EACpBihE,EAAW9oF,KAAKm4C,IAAwB,SAAlBiM,EAAKrtC,UAAuB,GAAM,KAGzD8wE,EAAImoB,OACJnoB,EAAI/kC,UAAU0jE,EAAQC,GACtB5+B,EAAI3kC,OAAO4lC,GACXjB,EAAIwnB,UAAY,SAChBxnB,EAAIynB,aAAe,SAEnB,IAAI5mF,EAAO07B,EAAK17B,KAChB,GAAI42D,EAAQ92E,QAAQkgB,GAEnB,IADA,IAAIoyB,EAAI,EACC/8C,EAAI,EAAGA,EAAI2qB,EAAKniB,SAAUxI,EAClC8pF,EAAI4oB,SAAS/nF,EAAK3qB,GAAI,EAAG+8C,EAAGivD,GAC5BjvD,GAAKp1B,OAGNmiE,EAAI4oB,SAAS/nF,EAAM,EAAG,EAAGqhF,GAG1BliB,EAAI0oB,cAKP,SAASoW,EAA6BhjC,EAAOijC,GAC5C,IAAInrD,EAAQ,IAAI4kB,EAAM,CACrBwH,IAAKlE,EAAMkE,IACXzmF,QAASwlH,EACTjjC,MAAOA,IAGRjE,EAAQmlB,UAAUlhB,EAAOloB,EAAOmrD,GAChClnC,EAAQglB,OAAO/gB,EAAOloB,GACtBkoB,EAAMkjC,WAAaprD,EAGpB39D,EAAOD,QAAU,CAChBoJ,GAAI,QASJm5E,SAAUC,EAEV+lC,WAAY,SAASziC,GACpB,IAAIijC,EAAYjjC,EAAMviF,QAAQq6D,MAE1BmrD,GACHD,EAA6BhjC,EAAOijC,IAItC9c,aAAc,SAASnmB,GACtB,IAAIijC,EAAYjjC,EAAMviF,QAAQq6D,MAC1BorD,EAAaljC,EAAMkjC,WAEnBD,GACHtnC,EAAQk+B,QAAQoJ,EAAWlhF,EAASrlC,OAAOo7D,OAEvCorD,GACHnnC,EAAQmlB,UAAUlhB,EAAOkjC,EAAYD,GACrCC,EAAWzlH,QAAUwlH,GAErBD,EAA6BhjC,EAAOijC,IAE3BC,IACVnnC,EAAQ6T,UAAU5P,EAAOkjC,UAClBljC,EAAMkjC,eAKd,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKC,GAAG,CAAC,SAASpoD,EAAQ5gE,EAAOD,GAGjE,IAAIgiF,EAAQnhB,EAAQ,IAChBohB,EAAephB,EAAQ,IAE3B5gE,EAAOD,QAAU,WAGhB,IAIIkpH,EAAelnC,EAAMrrD,OAAO,CAM/BwyF,UAAW,WACV,IAAI56G,EAAO/H,KAAKs/E,MAAMv3E,KACtB,OAAO/H,KAAKjD,QAAQ2qB,SAAW1nB,KAAK6gF,eAAiB94E,EAAK66G,QAAU76G,EAAK86G,UAAY96G,EAAK2f,QAG3Fu+E,oBAAqB,WACpB,IAIIvjG,EAJAk8E,EAAK5+E,KACL0nB,EAASk3D,EAAG+jC,YAChB/jC,EAAGkkC,SAAW,EACdlkC,EAAGmkC,SAAWr7F,EAAOxlB,OAAS,OAGDvE,IAAzBihF,EAAG7hF,QAAQslF,MAAMtjF,MAEpB2D,EAAYglB,EAAOxhB,QAAQ04E,EAAG7hF,QAAQslF,MAAMtjF,KAC5C6/E,EAAGkkC,UAA0B,IAAfpgH,EAAmBA,EAAYk8E,EAAGkkC,eAGpBnlH,IAAzBihF,EAAG7hF,QAAQslF,MAAMj8E,MAEpB1D,EAAYglB,EAAOxhB,QAAQ04E,EAAG7hF,QAAQslF,MAAMj8E,KAC5Cw4E,EAAGmkC,UAA0B,IAAfrgH,EAAmBA,EAAYk8E,EAAGmkC,UAGjDnkC,EAAG7/E,IAAM2oB,EAAOk3D,EAAGkkC,UACnBlkC,EAAGx4E,IAAMshB,EAAOk3D,EAAGmkC,WAGpB3c,WAAY,WACX,IAAIxnB,EAAK5+E,KACL0nB,EAASk3D,EAAG+jC,YAEhB/jC,EAAGyD,MAAyB,IAAhBzD,EAAGkkC,UAAkBlkC,EAAGmkC,WAAar7F,EAAOxlB,OAAS,EAAKwlB,EAASA,EAAOrnB,MAAMu+E,EAAGkkC,SAAUlkC,EAAGmkC,SAAW,IAGxHxa,iBAAkB,SAASpmG,EAAOi8E,GACjC,IAAIQ,EAAK5+E,KACL+H,EAAO62E,EAAGU,MAAMv3E,KAChB84E,EAAejC,EAAGiC,eAEtB,OAAI94E,EAAK86G,UAAYhiC,EACbjC,EAAG+D,cAAc56E,EAAKo2E,SAASC,GAAcr2E,KAAK5F,IAEnDy8E,EAAGyD,MAAMlgF,EAAQy8E,EAAGkkC,WAI5B7gC,iBAAkB,SAAStnF,EAAOwH,GACjC,IAOI6gH,EAPApkC,EAAK5+E,KACLg2B,EAAS4oD,EAAG7hF,QAAQi5B,OAEpBitF,EAAYtnH,KAAKyK,IAAKw4E,EAAGmkC,SAAW,EAAInkC,EAAGkkC,UAAY9sF,EAAS,EAAI,GAAK,GAQ7E,GAHIr7B,UACHqoH,EAAgBpkC,EAAGiC,eAAiBlmF,EAAM43B,EAAI53B,EAAM87C,QAE/B94C,IAAlBqlH,QAA0CrlH,IAAVhD,GAAuBwF,MAAMgC,GAAS,CAEzExH,EAAQqoH,GAAiBroH,EACzB,IAAI4oG,EAFS3kB,EAAG+jC,YAECz8G,QAAQvL,GACzBwH,GAAiB,IAATohG,EAAaA,EAAMphG,EAG5B,GAAIy8E,EAAGiC,eAAgB,CACtB,IAAIqiC,EAAatkC,EAAG39D,MAAQgiG,EACxBE,EAAeD,GAAc/gH,EAAQy8E,EAAGkkC,UAM5C,OAJI9sF,IACHmtF,GAAgBD,EAAa,GAGvBtkC,EAAGn7D,KAAO9nB,KAAKyiC,MAAM+kF,GAE7B,IAAIC,EAAcxkC,EAAG19D,OAAS+hG,EAC1BI,EAAgBD,GAAejhH,EAAQy8E,EAAGkkC,UAM9C,OAJI9sF,IACHqtF,GAAiBD,EAAc,GAGzBxkC,EAAGp7D,IAAM7nB,KAAKyiC,MAAMilF,IAE5B9gC,gBAAiB,SAASpgF,GACzB,OAAOnC,KAAKiiF,iBAAiBjiF,KAAKqiF,MAAMlgF,GAAQA,EAAQnC,KAAK8iH,SAAU,OAExEta,iBAAkB,SAASC,GAC1B,IAAI7pB,EAAK5+E,KACLg2B,EAAS4oD,EAAG7hF,QAAQi5B,OAEpBitF,EAAYtnH,KAAKyK,IAAKw4E,EAAG4mB,OAAOtjG,QAAU8zB,EAAS,EAAI,GAAK,GAC5DstF,EAAO1kC,EAAGiC,eACV0iC,GAAkBD,EAAO1kC,EAAG39D,MAAQ29D,EAAG19D,QAAU+hG,EAcrD,OAZAxa,GAAS6a,EAAO1kC,EAAGn7D,KAAOm7D,EAAGp7D,IAEzBwS,IACHyyE,GAAU8a,EAAiB,IAGxB9a,GAAS,EACJ,EAEA9sG,KAAKyiC,MAAMqqE,EAAQ8a,IAGb3kC,EAAGkkC,UAEnBniC,aAAc,WACb,OAAO3gF,KAAK4vD,UAId6rB,EAAaixB,kBAAkB,WAAYgW,EA7HvB,CACnBhwG,SAAU,aA+HV,CAAC,GAAK,GAAG,GAAK,KAAK8wG,GAAG,CAAC,SAASnpD,EAAQ5gE,EAAOD,GAGjD,IAAI6nC,EAAWg5B,EAAQ,IACnB4gB,EAAU5gB,EAAQ,IAClBohB,EAAephB,EAAQ,IACvBqhB,EAAQrhB,EAAQ,IAEpB5gE,EAAOD,QAAU,SAAS+uE,GAEzB,IAAIk7C,EAAgB,CACnB/wG,SAAU,OACV2vE,MAAO,CACN71C,SAAUkvC,EAAM6pB,WAAWjqD,SAIzBooE,EAAcn7C,EAAMo7C,gBAAgBxzF,OAAO,CAE9C81E,oBAAqB,WACpB,IAAIrnB,EAAK5+E,KACL+/C,EAAO6+B,EAAG7hF,QACVuiF,EAAQV,EAAGU,MAEXnB,EADOmB,EAAMv3E,KACGo2E,SAChB0C,EAAejC,EAAGiC,eAItB,SAAS+iC,EAAUjlC,GAClB,OAAOkC,EAAelC,EAAKiB,UAAYhB,EAAGh8E,GAAK+7E,EAAKmB,UAAYlB,EAAGh8E,GAIpEg8E,EAAG7/E,IAAM,KACT6/E,EAAGx4E,IAAM,KAET,IAAIy9G,EAAY9jE,EAAK0hC,QAerB,QAdkB9jF,IAAdkmH,GACH5oC,EAAQj4D,KAAKm7D,GAAU,SAASoB,EAASnB,GACxC,IAAIylC,EAAJ,CAIA,IAAIllC,EAAOW,EAAMqC,eAAevD,GAC5BkB,EAAMsC,iBAAiBxD,IAAiBwlC,EAAUjlC,SACtChhF,IAAfghF,EAAKG,QACL+kC,GAAY,OAKX9jE,EAAK0hC,SAAWoiC,EAAW,CAC9B,IAAIC,EAAiB,GAErB7oC,EAAQj4D,KAAKm7D,GAAU,SAASoB,EAASnB,GACxC,IAAIO,EAAOW,EAAMqC,eAAevD,GAC5BnjF,EAAM,CACT0jF,EAAK76E,UAEcnG,IAAjBoiD,EAAK0hC,cAAwC9jF,IAAfghF,EAAKG,MAAuBV,EAAe,GAC3EO,EAAKG,OACJ/+E,KAAK,UAEqBpC,IAAxBmmH,EAAe7oH,KAClB6oH,EAAe7oH,GAAO,CACrB8oH,eAAgB,GAChBC,eAAgB,KAKlB,IAAID,EAAiBD,EAAe7oH,GAAK8oH,eACrCC,EAAiBF,EAAe7oH,GAAK+oH,eAErC1kC,EAAMsC,iBAAiBxD,IAAiBwlC,EAAUjlC,IACrD1D,EAAQj4D,KAAKu8D,EAAQx3E,MAAM,SAASugG,EAAUnmG,GAC7C,IAAIxH,GAASikF,EAAG+D,cAAc2lB,GAC1BnoG,MAAMxF,IAAUgkF,EAAK52E,KAAK5F,GAAO++C,SAIrC6iE,EAAe5hH,GAAS4hH,EAAe5hH,IAAU,EACjD6hH,EAAe7hH,GAAS6hH,EAAe7hH,IAAU,EAE7C49C,EAAKkkE,eACRF,EAAe5hH,GAAS,IACdxH,EAAQ,EAClBqpH,EAAe7hH,IAAUxH,EAEzBopH,EAAe5hH,IAAUxH,SAM7BsgF,EAAQj4D,KAAK8gG,GAAgB,SAASI,GACrC,IAAI/yG,EAAS+yG,EAAcH,eAAe//G,OAAOkgH,EAAcF,gBAC3DG,EAASlpC,EAAQl8E,IAAIoS,GACrBizG,EAASnpC,EAAQ70E,IAAI+K,GACzBytE,EAAG7/E,IAAiB,OAAX6/E,EAAG7/E,IAAeolH,EAASxoH,KAAKoD,IAAI6/E,EAAG7/E,IAAKolH,GACrDvlC,EAAGx4E,IAAiB,OAAXw4E,EAAGx4E,IAAeg+G,EAASzoH,KAAKyK,IAAIw4E,EAAGx4E,IAAKg+G,WAItDnpC,EAAQj4D,KAAKm7D,GAAU,SAASoB,EAASnB,GACxC,IAAIO,EAAOW,EAAMqC,eAAevD,GAC5BkB,EAAMsC,iBAAiBxD,IAAiBwlC,EAAUjlC,IACrD1D,EAAQj4D,KAAKu8D,EAAQx3E,MAAM,SAASugG,EAAUnmG,GAC7C,IAAIxH,GAASikF,EAAG+D,cAAc2lB,GAC1BnoG,MAAMxF,IAAUgkF,EAAK52E,KAAK5F,GAAO++C,SAItB,OAAX09B,EAAG7/E,IACN6/E,EAAG7/E,IAAMpE,EACCA,EAAQikF,EAAG7/E,MACrB6/E,EAAG7/E,IAAMpE,GAGK,OAAXikF,EAAGx4E,IACNw4E,EAAGx4E,IAAMzL,EACCA,EAAQikF,EAAGx4E,MACrBw4E,EAAGx4E,IAAMzL,UAOdikF,EAAG7/E,IAAM23C,SAASkoC,EAAG7/E,OAASoB,MAAMy+E,EAAG7/E,KAAO6/E,EAAG7/E,IAxG/B,EAyGlB6/E,EAAGx4E,IAAMswC,SAASkoC,EAAGx4E,OAASjG,MAAMy+E,EAAGx4E,KAAOw4E,EAAGx4E,IAxG/B,EA2GlBpG,KAAKqkH,0BAENC,aAAc,WACb,IAAItb,EAEAhC,EADKhnG,KACSjD,QAAQslF,MAE1B,GAHSriF,KAGF6gF,eACNmoB,EAAWrtG,KAAKoD,IAAIioG,EAASqC,cAAgBrC,EAASqC,cAAgB,GAAI1tG,KAAKsE,KAJvED,KAI+EihB,MAAQ,SACzF,CAEN,IAAIsjG,EAAetpC,EAAQmI,eAAe4jB,EAAS5lF,SAAUigB,EAASrlC,OAAO4jG,iBAC7EoJ,EAAWrtG,KAAKoD,IAAIioG,EAASqC,cAAgBrC,EAASqC,cAAgB,GAAI1tG,KAAKsE,KARvED,KAQ+EkhB,QAAU,EAAIqjG,KAGtG,OAAOvb,GAGRwb,yBAA0B,WACpBxkH,KAAK6gF,gBAET7gF,KAAKqiF,MAAMpwD,WAGbs2E,iBAAkB,SAASpmG,EAAOi8E,GACjC,OAAQp+E,KAAK2iF,cAAc3iF,KAAKs/E,MAAMv3E,KAAKo2E,SAASC,GAAcr2E,KAAK5F,KAGxE8/E,iBAAkB,SAAStnF,GAG1B,IAAIikF,EAAK5+E,KACLgU,EAAQ4qE,EAAG5qE,MAEX42E,GAAchM,EAAG+D,cAAchoF,GAE/BkoF,EAAQjE,EAAG3qE,IAAMD,EAOrB,OALI4qE,EAAGiC,eACEjC,EAAGn7D,KAAQm7D,EAAG39D,MAAQ4hE,GAAS+H,EAAa52E,GAE5C4qE,EAAGhvB,OAAUgvB,EAAG19D,OAAS2hE,GAAS+H,EAAa52E,IAIzDw0F,iBAAkB,SAASC,GAC1B,IAAI7pB,EAAK5+E,KACL6gF,EAAejC,EAAGiC,eAClB4jC,EAAiB5jC,EAAejC,EAAG39D,MAAQ29D,EAAG19D,OAC9C8U,GAAU6qD,EAAe4nB,EAAQ7pB,EAAGn7D,KAAOm7D,EAAGhvB,OAAS64C,GAASgc,EACpE,OAAO7lC,EAAG5qE,OAAU4qE,EAAG3qE,IAAM2qE,EAAG5qE,OAASgiB,GAE1CusD,gBAAiB,SAASpgF,GACzB,OAAOnC,KAAKiiF,iBAAiBjiF,KAAK0kH,eAAeviH,OAInDs5E,EAAaixB,kBAAkB,SAAUgX,EAAaD,KAGrD,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKkB,GAAG,CAAC,SAAStqD,EAAQ5gE,EAAOD,GAGjE,IAAIyhF,EAAU5gB,EAAQ,IAClBmhB,EAAQnhB,EAAQ,IAkEpB5gE,EAAOD,QAAU,SAAS+uE,GAEzB,IAAIoe,EAAO1L,EAAQ0L,KAEnBpe,EAAMo7C,gBAAkBnoC,EAAMrrD,OAAO,CACpCwyD,cAAe,SAAShoF,GACvB,MAAqB,iBAAVA,GACFA,EAEF6gF,EAAMlgF,UAAUqnF,cAAc9oF,KAAKmG,KAAMrF,IAGjD0pH,uBAAwB,WACvB,IAAIzlC,EAAK5+E,KAELgnG,EADOpoB,EAAG7hF,QACMslF,MAKpB,GAAI2kB,EAAS5a,YAAa,CACzB,IAAIw4B,EAAU3pC,EAAQroD,KAAKgsD,EAAG7/E,KAC1B8lH,EAAU5pC,EAAQroD,KAAKgsD,EAAGx4E,KAE1Bw+G,EAAU,GAAKC,EAAU,EAE5BjmC,EAAGx4E,IAAM,EACCw+G,EAAU,GAAKC,EAAU,IAEnCjmC,EAAG7/E,IAAM,GAIX,IAAI+lH,OAA0BnnH,IAAjBqpG,EAASjoG,UAA+CpB,IAA1BqpG,EAAS+d,aAChDC,OAA0BrnH,IAAjBqpG,EAAS5gG,UAA+CzI,IAA1BqpG,EAASie,kBAE/BtnH,IAAjBqpG,EAASjoG,IACZ6/E,EAAG7/E,IAAMioG,EAASjoG,SACkBpB,IAA1BqpG,EAAS+d,eACJ,OAAXnmC,EAAG7/E,IACN6/E,EAAG7/E,IAAMioG,EAAS+d,aAElBnmC,EAAG7/E,IAAMpD,KAAKoD,IAAI6/E,EAAG7/E,IAAKioG,EAAS+d,oBAIhBpnH,IAAjBqpG,EAAS5gG,IACZw4E,EAAGx4E,IAAM4gG,EAAS5gG,SACkBzI,IAA1BqpG,EAASie,eACJ,OAAXrmC,EAAGx4E,IACNw4E,EAAGx4E,IAAM4gG,EAASie,aAElBrmC,EAAGx4E,IAAMzK,KAAKyK,IAAIw4E,EAAGx4E,IAAK4gG,EAASie,eAIjCH,IAAWE,GAKVpmC,EAAG7/E,KAAO6/E,EAAGx4E,MACZ0+G,EACHlmC,EAAGx4E,IAAMw4E,EAAG7/E,IAAM,EAElB6/E,EAAG7/E,IAAM6/E,EAAGx4E,IAAM,GAKjBw4E,EAAG7/E,MAAQ6/E,EAAGx4E,MACjBw4E,EAAGx4E,MAEE4gG,EAAS5a,aACbxN,EAAG7/E,QAINulH,aAAc39B,EACd69B,yBAA0B79B,EAE1Byf,WAAY,WACX,IAAIxnB,EAAK5+E,KAELgnG,EADOpoB,EAAG7hF,QACMslF,MAMhB2mB,EAAWpqB,EAAG0lC,eAGdY,EAA0B,CAC7Blc,SAHDA,EAAWrtG,KAAKyK,IAAI,EAAG4iG,GAItBjqG,IAAKioG,EAASjoG,IACdqH,IAAK4gG,EAAS5gG,IACd++G,UAAWne,EAASme,UACpBC,SAAUnqC,EAAQmI,eAAe4jB,EAASqe,cAAere,EAASoe,WAE/D/iC,EAAQzD,EAAGyD,MA9JlB,SAAuBijC,EAAmBC,GACzC,IAKIC,EACAL,EACAM,EAPApjC,EAAQ,GASZ,GAAIijC,EAAkBF,UAAYE,EAAkBF,SAAW,EAC9DK,EAAUH,EAAkBF,aACtB,CACN,IAAIM,EAAYzqC,EAAQ+gB,QAAQupB,EAAUn/G,IAAMm/G,EAAUxmH,KAAK,GAC/D0mH,EAAUxqC,EAAQ+gB,QAAQ0pB,GAAaJ,EAAkBtc,SAAW,IAAI,QAGtDrrG,KADlBwnH,EAAYG,EAAkBH,aAG7BK,EAAS7pH,KAAK22B,IAAI,GAAI6yF,GACtBM,EAAU9pH,KAAKsE,KAAKwlH,EAAUD,GAAUA,GAG1C,IAAIG,EAAUhqH,KAAKuE,MAAMqlH,EAAUxmH,IAAM0mH,GAAWA,EAChDG,EAAUjqH,KAAKsE,KAAKslH,EAAUn/G,IAAMq/G,GAAWA,EAG9CxqC,EAAQiH,cAAcojC,EAAkBvmH,MAASk8E,EAAQiH,cAAcojC,EAAkBl/G,OAAQk/G,EAAkBF,UAEnHnqC,EAAQoe,aAAaisB,EAAkBl/G,IAAMk/G,EAAkBvmH,KAAOumH,EAAkBF,SAAUK,EAAU,OAC/GE,EAAUL,EAAkBvmH,IAC5B6mH,EAAUN,EAAkBl/G,KAI9B,IAAIy/G,GAAaD,EAAUD,GAAWF,EAGrCI,EADG5qC,EAAQke,aAAa0sB,EAAWlqH,KAAKyiC,MAAMynF,GAAYJ,EAAU,KACxD9pH,KAAKyiC,MAAMynF,GAEXlqH,KAAKsE,KAAK4lH,GAGvBV,EAAY,EACRM,EAAU,IACbN,EAAYxpH,KAAK22B,IAAI,GAAI,EAAI32B,KAAKuE,MAAM+6E,EAAQue,MAAMisB,KACtDE,EAAUhqH,KAAKyiC,MAAMunF,EAAUR,GAAaA,EAC5CS,EAAUjqH,KAAKyiC,MAAMwnF,EAAUT,GAAaA,GAE7C9iC,EAAMnjF,UAA+BvB,IAA1B2nH,EAAkBvmH,IAAoBumH,EAAkBvmH,IAAM4mH,GACzE,IAAK,IAAItwG,EAAI,EAAGA,EAAIwwG,IAAaxwG,EAChCgtE,EAAMnjF,KAAKvD,KAAKyiC,OAAOunF,EAAUtwG,EAAIowG,GAAWN,GAAaA,GAI9D,OAFA9iC,EAAMnjF,UAA+BvB,IAA1B2nH,EAAkBl/G,IAAoBk/G,EAAkBl/G,IAAMw/G,GAElEvjC,EAuGkByjC,CAAcZ,EAAyBtmC,GAE9DA,EAAG4lC,2BAIH5lC,EAAGx4E,IAAM60E,EAAQ70E,IAAIi8E,GACrBzD,EAAG7/E,IAAMk8E,EAAQl8E,IAAIsjF,GAEjB2kB,EAAS/0E,SACZowD,EAAMpwD,UAEN2sD,EAAG5qE,MAAQ4qE,EAAGx4E,IACdw4E,EAAG3qE,IAAM2qE,EAAG7/E,MAEZ6/E,EAAG5qE,MAAQ4qE,EAAG7/E,IACd6/E,EAAG3qE,IAAM2qE,EAAGx4E,MAGdmgG,qBAAsB,WACrB,IAAI3nB,EAAK5+E,KACT4+E,EAAG8lC,eAAiB9lC,EAAGyD,MAAMhiF,QAC7Bu+E,EAAGmsB,cAAgBnsB,EAAGyD,MAAMn8E,QAAQ,GAEpCs1E,EAAMlgF,UAAUirG,qBAAqB1sG,KAAK+kF,QAK3C,CAAC,GAAK,GAAG,GAAK,KAAKmnC,GAAG,CAAC,SAAS1rD,EAAQ5gE,EAAOD,GAGjD,IAAIyhF,EAAU5gB,EAAQ,IAClBmhB,EAAQnhB,EAAQ,IAChBohB,EAAephB,EAAQ,IACvBqhB,EAAQrhB,EAAQ,IAsDpB5gE,EAAOD,QAAU,SAAS+uE,GAEzB,IAAIk7C,EAAgB,CACnB/wG,SAAU,OAGV2vE,MAAO,CACN71C,SAAUkvC,EAAM6pB,WAAW+H,cAIzB0Y,EAAmBxqC,EAAMrrD,OAAO,CACnC81E,oBAAqB,WACpB,IAAIrnB,EAAK5+E,KACL+/C,EAAO6+B,EAAG7hF,QACVuiF,EAAQV,EAAGU,MAEXnB,EADOmB,EAAMv3E,KACGo2E,SAChB0C,EAAejC,EAAGiC,eACtB,SAAS+iC,EAAUjlC,GAClB,OAAOkC,EAAelC,EAAKiB,UAAYhB,EAAGh8E,GAAK+7E,EAAKmB,UAAYlB,EAAGh8E,GAIpEg8E,EAAG7/E,IAAM,KACT6/E,EAAGx4E,IAAM,KACTw4E,EAAGqnC,WAAa,KAEhB,IAAIpC,EAAY9jE,EAAK0hC,QAerB,QAdkB9jF,IAAdkmH,GACH5oC,EAAQj4D,KAAKm7D,GAAU,SAASoB,EAASnB,GACxC,IAAIylC,EAAJ,CAIA,IAAIllC,EAAOW,EAAMqC,eAAevD,GAC5BkB,EAAMsC,iBAAiBxD,IAAiBwlC,EAAUjlC,SACtChhF,IAAfghF,EAAKG,QACL+kC,GAAY,OAKX9jE,EAAK0hC,SAAWoiC,EAAW,CAC9B,IAAIC,EAAiB,GAErB7oC,EAAQj4D,KAAKm7D,GAAU,SAASoB,EAASnB,GACxC,IAAIO,EAAOW,EAAMqC,eAAevD,GAC5BnjF,EAAM,CACT0jF,EAAK76E,UAEcnG,IAAjBoiD,EAAK0hC,cAAwC9jF,IAAfghF,EAAKG,MAAuBV,EAAe,GAC3EO,EAAKG,OACJ/+E,KAAK,KAEHu/E,EAAMsC,iBAAiBxD,IAAiBwlC,EAAUjlC,UACzBhhF,IAAxBmmH,EAAe7oH,KAClB6oH,EAAe7oH,GAAO,IAGvBggF,EAAQj4D,KAAKu8D,EAAQx3E,MAAM,SAASugG,EAAUnmG,GAC7C,IAAIgP,EAAS2yG,EAAe7oH,GACxBN,GAASikF,EAAG+D,cAAc2lB,GAE1BnoG,MAAMxF,IAAUgkF,EAAK52E,KAAK5F,GAAO++C,QAAUvmD,EAAQ,IAGvDwW,EAAOhP,GAASgP,EAAOhP,IAAU,EACjCgP,EAAOhP,IAAUxH,UAKpBsgF,EAAQj4D,KAAK8gG,GAAgB,SAASI,GACrC,GAAIA,EAAchiH,OAAS,EAAG,CAC7B,IAAIiiH,EAASlpC,EAAQl8E,IAAImlH,GACrBE,EAASnpC,EAAQ70E,IAAI89G,GACzBtlC,EAAG7/E,IAAiB,OAAX6/E,EAAG7/E,IAAeolH,EAASxoH,KAAKoD,IAAI6/E,EAAG7/E,IAAKolH,GACrDvlC,EAAGx4E,IAAiB,OAAXw4E,EAAGx4E,IAAeg+G,EAASzoH,KAAKyK,IAAIw4E,EAAGx4E,IAAKg+G,YAKvDnpC,EAAQj4D,KAAKm7D,GAAU,SAASoB,EAASnB,GACxC,IAAIO,EAAOW,EAAMqC,eAAevD,GAC5BkB,EAAMsC,iBAAiBxD,IAAiBwlC,EAAUjlC,IACrD1D,EAAQj4D,KAAKu8D,EAAQx3E,MAAM,SAASugG,EAAUnmG,GAC7C,IAAIxH,GAASikF,EAAG+D,cAAc2lB,GAE1BnoG,MAAMxF,IAAUgkF,EAAK52E,KAAK5F,GAAO++C,QAAUvmD,EAAQ,IAIxC,OAAXikF,EAAG7/E,IACN6/E,EAAG7/E,IAAMpE,EACCA,EAAQikF,EAAG7/E,MACrB6/E,EAAG7/E,IAAMpE,GAGK,OAAXikF,EAAGx4E,IACNw4E,EAAGx4E,IAAMzL,EACCA,EAAQikF,EAAGx4E,MACrBw4E,EAAGx4E,IAAMzL,GAGI,IAAVA,IAAkC,OAAlBikF,EAAGqnC,YAAuBtrH,EAAQikF,EAAGqnC,cACxDrnC,EAAGqnC,WAAatrH,UAQrBqF,KAAKqkH,0BAENA,uBAAwB,WACvB,IAAIzlC,EAAK5+E,KAELgnG,EADOpoB,EAAG7hF,QACMslF,MAChBe,EAAiBnI,EAAQmI,eAI7BxE,EAAG7/E,IAAMqkF,EAAe4jB,EAASjoG,IAAK6/E,EAAG7/E,KACzC6/E,EAAGx4E,IAAMg9E,EAAe4jB,EAAS5gG,IAAKw4E,EAAGx4E,KAErCw4E,EAAG7/E,MAAQ6/E,EAAGx4E,MACF,IAAXw4E,EAAG7/E,KAAwB,OAAX6/E,EAAG7/E,KACtB6/E,EAAG7/E,IAAMpD,KAAK22B,IAAI,GAAI32B,KAAKuE,MAAM+6E,EAAQue,MAAM5a,EAAG7/E,MAAQ,GAC1D6/E,EAAGx4E,IAAMzK,KAAK22B,IAAI,GAAI32B,KAAKuE,MAAM+6E,EAAQue,MAAM5a,EAAGx4E,MAAQ,KAE1Dw4E,EAAG7/E,IAXa,EAYhB6/E,EAAGx4E,IAXa,KAcH,OAAXw4E,EAAG7/E,MACN6/E,EAAG7/E,IAAMpD,KAAK22B,IAAI,GAAI32B,KAAKuE,MAAM+6E,EAAQue,MAAM5a,EAAGx4E,MAAQ,IAE5C,OAAXw4E,EAAGx4E,MACNw4E,EAAGx4E,IAAiB,IAAXw4E,EAAG7/E,IACTpD,KAAK22B,IAAI,GAAI32B,KAAKuE,MAAM+6E,EAAQue,MAAM5a,EAAG7/E,MAAQ,GAnBnC,IAsBI,OAAlB6/E,EAAGqnC,aACFrnC,EAAG7/E,IAAM,EACZ6/E,EAAGqnC,WAAarnC,EAAG7/E,IACT6/E,EAAGx4E,IAAM,EACnBw4E,EAAGqnC,WAAatqH,KAAK22B,IAAI,GAAI32B,KAAKuE,MAAM+6E,EAAQue,MAAM5a,EAAGx4E,OAEzDw4E,EAAGqnC,WA7Ba,IAiCnB7f,WAAY,WACX,IAAIxnB,EAAK5+E,KAELgnG,EADOpoB,EAAG7hF,QACMslF,MAChBpwD,GAAW2sD,EAAGiC,eAEdykC,EAAoB,CACvBvmH,IAAKioG,EAASjoG,IACdqH,IAAK4gG,EAAS5gG,KAEXi8E,EAAQzD,EAAGyD,MAlNlB,SAAuBijC,EAAmBC,GACzC,IAWI/pE,EAAK0qE,EAXL7jC,EAAQ,GACRe,EAAiBnI,EAAQmI,eAMzB+iC,EAAU/iC,EAAekiC,EAAkBvmH,IAAKpD,KAAK22B,IAAI,GAAI32B,KAAKuE,MAAM+6E,EAAQue,MAAM+rB,EAAUxmH,QAEhGqnH,EAASzqH,KAAKuE,MAAM+6E,EAAQue,MAAM+rB,EAAUn/G,MAC5CigH,EAAiB1qH,KAAKsE,KAAKslH,EAAUn/G,IAAMzK,KAAK22B,IAAI,GAAI8zF,IAG5C,IAAZD,GACH3qE,EAAM7/C,KAAKuE,MAAM+6E,EAAQue,MAAM+rB,EAAUU,aACzCC,EAAcvqH,KAAKuE,MAAMqlH,EAAUU,WAAatqH,KAAK22B,IAAI,GAAIkpB,IAE7D6mC,EAAMnjF,KAAKinH,GACXA,EAAUD,EAAcvqH,KAAK22B,IAAI,GAAIkpB,KAErCA,EAAM7/C,KAAKuE,MAAM+6E,EAAQue,MAAM2sB,IAC/BD,EAAcvqH,KAAKuE,MAAMimH,EAAUxqH,KAAK22B,IAAI,GAAIkpB,KAEjD,IAAI2pE,EAAY3pE,EAAM,EAAI7/C,KAAK22B,IAAI,GAAI32B,KAAKm4B,IAAI0nB,IAAQ,EAExD,GACC6mC,EAAMnjF,KAAKinH,GAGS,OADlBD,IAEDA,EAAc,EAEdf,IADE3pE,GACiB,EAAI,EAAI2pE,GAG5BgB,EAAUxqH,KAAKyiC,MAAM8nF,EAAcvqH,KAAK22B,IAAI,GAAIkpB,GAAO2pE,GAAaA,QAC5D3pE,EAAM4qE,GAAW5qE,IAAQ4qE,GAAUF,EAAcG,GAE1D,IAAIC,EAAWljC,EAAekiC,EAAkBl/G,IAAK+/G,GAGrD,OAFA9jC,EAAMnjF,KAAKonH,GAEJjkC,EAwKkByjC,CAAcR,EAAmB1mC,GAIxDA,EAAGx4E,IAAM60E,EAAQ70E,IAAIi8E,GACrBzD,EAAG7/E,IAAMk8E,EAAQl8E,IAAIsjF,GAEjB2kB,EAAS/0E,SACZA,GAAWA,EACX2sD,EAAG5qE,MAAQ4qE,EAAGx4E,IACdw4E,EAAG3qE,IAAM2qE,EAAG7/E,MAEZ6/E,EAAG5qE,MAAQ4qE,EAAG7/E,IACd6/E,EAAG3qE,IAAM2qE,EAAGx4E,KAET6rB,GACHowD,EAAMpwD,WAGRs0E,qBAAsB,WACrBvmG,KAAKumH,WAAavmH,KAAKqiF,MAAMhiF,QAE7Bm7E,EAAMlgF,UAAUirG,qBAAqB1sG,KAAKmG,OAG3CuoG,iBAAkB,SAASpmG,EAAOi8E,GACjC,OAAQp+E,KAAK2iF,cAAc3iF,KAAKs/E,MAAMv3E,KAAKo2E,SAASC,GAAcr2E,KAAK5F,KAExEogF,gBAAiB,SAASpgF,GACzB,OAAOnC,KAAKiiF,iBAAiBjiF,KAAKumH,WAAWpkH,KAQ9CqkH,mBAAoB,SAAS7rH,GAC5B,IAAI6gD,EAAM7/C,KAAKuE,MAAM+6E,EAAQue,MAAM7+F,IAGnC,OAFkBgB,KAAKuE,MAAMvF,EAAQgB,KAAK22B,IAAI,GAAIkpB,IAE7B7/C,KAAK22B,IAAI,GAAIkpB,IAEnCymC,iBAAkB,SAAStnF,GAC1B,IAKI8pH,EAAgBhc,EAAOz0F,EAAOC,EAAK2e,EALnCgsD,EAAK5+E,KACLiyB,EAAU2sD,EAAG7hF,QAAQslF,MAAMpwD,QAC3BunE,EAAQve,EAAQue,MAChBitB,EAAiB7nC,EAAG4nC,mBAAmB5nC,EAAGqnC,YAC1CjwF,EAAS,EAmCb,OAhCAr7B,GAASikF,EAAG+D,cAAchoF,GACtBs3B,GACHje,EAAQ4qE,EAAG3qE,IACXA,EAAM2qE,EAAG5qE,MACT4e,GAAQ,IAER5e,EAAQ4qE,EAAG5qE,MACXC,EAAM2qE,EAAG3qE,IACT2e,EAAO,GAEJgsD,EAAGiC,gBACN4jC,EAAiB7lC,EAAG39D,MACpBwnF,EAAQx2E,EAAU2sD,EAAGluD,MAAQkuD,EAAGn7D,OAEhCghG,EAAiB7lC,EAAG19D,OACpB0R,IAAS,EACT61E,EAAQx2E,EAAU2sD,EAAGp7D,IAAMo7D,EAAGhvB,QAE3Bj1D,IAAUqZ,IACC,IAAVA,IAKHywG,GAJAzuF,EAASilD,EAAQ0+B,kBAChB/6B,EAAG7hF,QAAQslF,MAAMjhE,SACjBmnD,EAAMlnC,SAASrlC,OAAO4jG,iBAGvB5rF,EAAQyyG,GAEK,IAAV9rH,IACHq7B,GAAUyuF,GAAkBjrB,EAAMvlF,GAAOulF,EAAMxlF,KAAWwlF,EAAM7+F,GAAS6+F,EAAMxlF,KAEhFy0F,GAAS71E,EAAOoD,GAEVyyE,GAERD,iBAAkB,SAASC,GAC1B,IAIIgc,EAAgBzwG,EAAOC,EAAKtZ,EAJ5BikF,EAAK5+E,KACLiyB,EAAU2sD,EAAG7hF,QAAQslF,MAAMpwD,QAC3BunE,EAAQve,EAAQue,MAChBitB,EAAiB7nC,EAAG4nC,mBAAmB5nC,EAAGqnC,YAiB9C,GAdIh0F,GACHje,EAAQ4qE,EAAG3qE,IACXA,EAAM2qE,EAAG5qE,QAETA,EAAQ4qE,EAAG5qE,MACXC,EAAM2qE,EAAG3qE,KAEN2qE,EAAGiC,gBACN4jC,EAAiB7lC,EAAG39D,MACpBtmB,EAAQs3B,EAAU2sD,EAAGluD,MAAQ+3E,EAAQA,EAAQ7pB,EAAGn7D,OAEhDghG,EAAiB7lC,EAAG19D,OACpBvmB,EAAQs3B,EAAUw2E,EAAQ7pB,EAAGp7D,IAAMo7D,EAAGhvB,OAAS64C,GAE5C9tG,IAAUqZ,EAAO,CACpB,GAAc,IAAVA,EAAa,CAChB,IAAIgiB,EAASilD,EAAQ0+B,kBACpB/6B,EAAG7hF,QAAQslF,MAAMjhE,SACjBmnD,EAAMlnC,SAASrlC,OAAO4jG,iBAEvBjlG,GAASq7B,EACTyuF,GAAkBzuF,EAClBhiB,EAAQyyG,EAET9rH,GAAS6+F,EAAMvlF,GAAOulF,EAAMxlF,GAC5BrZ,GAAS8pH,EACT9pH,EAAQgB,KAAK22B,IAAI,GAAIknE,EAAMxlF,GAASrZ,GAErC,OAAOA,KAIT8gF,EAAaixB,kBAAkB,cAAesZ,EAAkBvC,KAG/D,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKiD,GAAG,CAAC,SAASrsD,EAAQ5gE,EAAOD,GAGjE,IAAI6nC,EAAWg5B,EAAQ,IACnB4gB,EAAU5gB,EAAQ,IAClBohB,EAAephB,EAAQ,IACvBqhB,EAAQrhB,EAAQ,IAEpB5gE,EAAOD,QAAU,SAAS+uE,GAEzB,IAAI47B,EAAiB9iE,EAASrlC,OAE1BynH,EAAgB,CACnBn+G,SAAS,EAGTilC,SAAS,EACT73B,SAAU,YAEVu5E,WAAY,CACX3mF,SAAS,EACT2+B,MAAO,qBACP+hD,UAAW,GAGZrI,UAAW,CACVuO,UAAU,GAIX7J,MAAO,CAENskC,mBAAmB,EAGnBC,cAAe,yBAGfC,iBAAkB,EAGlBC,iBAAkB,EAElBt6E,SAAUkvC,EAAM6pB,WAAWjqD,QAG5B6wC,YAAa,CAEZ7mF,SAAS,EAGT8b,SAAU,GAGVorB,SAAU,SAAShjB,GAClB,OAAOA,KAKV,SAASu9F,EAAcnoE,GACtB,IAAImB,EAAOnB,EAAM7hD,QACjB,OAAOgjD,EAAKksC,WAAW3mF,SAAWy6C,EAAKosC,YAAY7mF,QAAUs5C,EAAM0gC,MAAMv3E,KAAK2f,OAAOxlB,OAAS,EAG/F,SAAS8kH,EAAyBpoE,GACjC,IAAIqoE,EAAoBroE,EAAM7hD,QAAQovF,YAClC/qE,EAAW65D,EAAQmI,eAAe6jC,EAAkB7lG,SAAU+iF,EAAevE,iBAC7ExC,EAAYniB,EAAQmI,eAAe6jC,EAAkB7pB,UAAW+G,EAAetE,kBAC/E1lE,EAAa8gD,EAAQmI,eAAe6jC,EAAkB9sF,WAAYgqE,EAAexE,mBAGrF,MAAO,CACNhtF,KAAMyO,EACN/b,MAAO+3F,EACPgH,OAAQjqE,EACRmjE,KANUriB,EAAQiiB,WAAW97E,EAAUg8E,EAAWjjE,IAwBpD,SAAS+sF,EAAgB56B,EAAOh6E,EAAKK,EAAM5T,EAAKqH,GAC/C,OAAIkmF,IAAUvtF,GAAOutF,IAAUlmF,EACvB,CACN4N,MAAO1B,EAAOK,EAAO,EACrBsB,IAAK3B,EAAOK,EAAO,GAEV25E,EAAQvtF,GAAOutF,EAAQlmF,EAC1B,CACN4N,MAAO1B,EAAMK,EAAO,EACpBsB,IAAK3B,GAIA,CACN0B,MAAO1B,EACP2B,IAAK3B,EAAMK,EAAO,GAkGpB,SAASw0G,EAAqB76B,GAC7B,OAAc,IAAVA,GAAyB,MAAVA,EACX,SACGA,EAAQ,IACX,OAGD,QAGR,SAAS8f,EAAS5oB,EAAKn/D,EAAM3R,EAAU0O,GACtC,GAAI65D,EAAQ92E,QAAQkgB,GAInB,IAHA,IAAIoyB,EAAI/jC,EAAS+jC,EACbgvE,EAAU,IAAMrkG,EAEX1nB,EAAI,EAAGA,EAAI2qB,EAAKniB,SAAUxI,EAClC8pF,EAAI4oB,SAAS/nF,EAAK3qB,GAAIgZ,EAAS6f,EAAGkkB,GAClCA,GAAKgvE,OAGNjiC,EAAI4oB,SAAS/nF,EAAM3R,EAAS6f,EAAG7f,EAAS+jC,GAI1C,SAAS2wE,EAAkC96B,EAAO41B,EAAUxvG,GAC7C,KAAV45E,GAA0B,MAAVA,EACnB55E,EAAS+jC,GAAMyrE,EAAS5rE,EAAI,GAClBg2C,EAAQ,KAAOA,EAAQ,MACjC55E,EAAS+jC,GAAKyrE,EAAS5rE,GAiFzB,SAAS+wE,EAAaC,GACrB,OAAOrsC,EAAQ5rD,SAASi4F,GAASA,EAAQ,EAG1C,IAAIC,EAAoBh/C,EAAMo7C,gBAAgBxzF,OAAO,CACpD21E,cAAe,WACd,IAAIlnB,EAAK5+E,KACL+/C,EAAO6+B,EAAG7hF,QACViqG,EAAWjnD,EAAKsiC,MAEpBzD,EAAG39D,MAAQ29D,EAAG8mB,SACd9mB,EAAG19D,OAAS09D,EAAGl6D,UACfk6D,EAAGkO,QAAUnxF,KAAKyiC,MAAMwgD,EAAG39D,MAAQ,GACnC29D,EAAGmO,QAAUpxF,KAAKyiC,MAAMwgD,EAAG19D,OAAS,GAEpC,IAAI8lE,EAAU/L,EAAQl8E,IAAI,CAAC6/E,EAAG19D,OAAQ09D,EAAG39D,QACrCsjG,EAAetpC,EAAQmI,eAAe4jB,EAAS5lF,SAAU+iF,EAAevE,iBAC5EhhB,EAAG4oC,YAAcznE,EAAKz6C,QAAW0hF,EAAU,GAAMu9B,EAAe,EAAIvd,EAAS6f,kBAAqB7/B,EAAU,GAE7Gif,oBAAqB,WACpB,IAAIrnB,EAAK5+E,KACLs/E,EAAQV,EAAGU,MACXvgF,EAAMg7B,OAAOm+D,kBACb9xF,EAAM2zB,OAAOw/D,kBAEjBte,EAAQj4D,KAAKs8D,EAAMv3E,KAAKo2E,UAAU,SAASoB,EAASnB,GACnD,GAAIkB,EAAMsC,iBAAiBxD,GAAe,CACzC,IAAIO,EAAOW,EAAMqC,eAAevD,GAEhCnD,EAAQj4D,KAAKu8D,EAAQx3E,MAAM,SAASugG,EAAUnmG,GAC7C,IAAIxH,GAASikF,EAAG+D,cAAc2lB,GAC1BnoG,MAAMxF,IAAUgkF,EAAK52E,KAAK5F,GAAO++C,SAIrCniD,EAAMpD,KAAKoD,IAAIpE,EAAOoE,GACtBqH,EAAMzK,KAAKyK,IAAIzL,EAAOyL,WAKzBw4E,EAAG7/E,IAAOA,IAAQg7B,OAAOm+D,kBAAoB,EAAIn5F,EACjD6/E,EAAGx4E,IAAOA,IAAQ2zB,OAAOw/D,kBAAoB,EAAInzF,EAGjDw4E,EAAGylC,0BAEJC,aAAc,WACb,IAAItd,EAAWhnG,KAAKjD,QAAQslF,MACxBkiC,EAAetpC,EAAQmI,eAAe4jB,EAAS5lF,SAAU+iF,EAAevE,iBAC5E,OAAOjkG,KAAKoD,IAAIioG,EAASqC,cAAgBrC,EAASqC,cAAgB,GAAI1tG,KAAKsE,KAAKD,KAAKwnH,aAAe,IAAMjD,MAE3Ghe,qBAAsB,WACrB,IAAI3nB,EAAK5+E,KAETuoE,EAAMo7C,gBAAgBroH,UAAUirG,qBAAqB1sG,KAAK+kF,GAG1DA,EAAGuN,YAAcvN,EAAGU,MAAMv3E,KAAK2f,OAAOrlB,IAAIu8E,EAAG7hF,QAAQovF,YAAY3/C,SAAUoyC,IAE5E2pB,iBAAkB,SAASpmG,EAAOi8E,GACjC,OAAQp+E,KAAK2iF,cAAc3iF,KAAKs/E,MAAMv3E,KAAKo2E,SAASC,GAAcr2E,KAAK5F,KAExE0kG,IAAK,WAlLN,IAAajoD,EACR6oE,EAkLCznH,KAAKjD,QAAQovF,YAAY7mF,QAxQ/B,SAA4Bs5C,GA6B3B,IAYIllD,EAAGwoH,EAAU10B,EAZbk6B,EAASV,EAAyBpoE,GAIlC6oE,EAAwB9rH,KAAKoD,IAAI6/C,EAAM19B,OAAS,EAAG09B,EAAM39B,MAAQ,GACjE0mG,EAAiB,CACpBntH,EAAGokD,EAAM39B,MACTtnB,EAAG,EACHiB,EAAGgkD,EAAM19B,OACThY,EAAG,GAEA0+G,EAAiB,GAGrBhpE,EAAM4kC,IAAI8Z,KAAOoqB,EAAOpqB,KACxB1+C,EAAMipE,iBAAmB,GAEzB,IAlFyBrkC,EAAKpiE,EAAUoI,EAkFpCs+F,EAAaf,EAAcnoE,GAC/B,IAAKllD,EAAI,EAAGA,EAAIouH,EAAYpuH,IAAK,CAChC8zF,EAAgB5uC,EAAMmpE,iBAAiBruH,EAAG+tH,GApFlBjkC,EAqFI5kC,EAAM4kC,IArFLpiE,EAqFUsmG,EAAO/0G,KArFP6W,EAqFao1B,EAAMutC,YAAYzyF,IAAM,GAA5EwoH,EApFGjnC,EAAQ92E,QAAQqlB,GACZ,CACNgtB,EAAGykC,EAAQoiB,YAAY7Z,EAAKA,EAAI8Z,KAAM9zE,GACtC8sB,EAAI9sB,EAAMtnB,OAASkf,EAAkC,KAApBoI,EAAMtnB,OAAS,GAAWkf,GAItD,CACNo1B,EAAGgtC,EAAIoa,YAAYp0E,GAAOvI,MAC1Bq1B,EAAGl1B,GA4EHw9B,EAAMipE,iBAAiBnuH,GAAKwoH,EAG5B,IAAI1a,EAAe5oD,EAAMopE,cAActuH,GACnC4yF,EAAQrR,EAAQ2e,UAAU4N,GAAgB,IAC1CygB,EAAUf,EAAgB56B,EAAOkB,EAAcj7D,EAAG2vF,EAAS1rE,EAAG,EAAG,KACjE0xE,EAAUhB,EAAgB56B,EAAOkB,EAAc/2C,EAAGyrE,EAAS5rE,EAAG,GAAI,KAElE2xE,EAAQj0G,MAAQ2zG,EAAehuH,IAClCguH,EAAehuH,EAAIsuH,EAAQj0G,MAC3B4zG,EAAejuH,EAAI6tG,GAGhBygB,EAAQh0G,IAAM0zG,EAAentH,IAChCmtH,EAAentH,EAAIytH,EAAQh0G,IAC3B2zG,EAAeptH,EAAIgtG,GAGhB0gB,EAAQl0G,MAAQ2zG,EAAe/sH,IAClC+sH,EAAe/sH,EAAIstH,EAAQl0G,MAC3B4zG,EAAehtH,EAAI4sG,GAGhB0gB,EAAQj0G,IAAM0zG,EAAez+G,IAChCy+G,EAAez+G,EAAIg/G,EAAQj0G,IAC3B2zG,EAAe1+G,EAAIs+F,GAIrB5oD,EAAMupE,cAAcV,EAAuBE,EAAgBC,GA0LzDQ,CAAmBpoH,OApLT4+C,EAsLN5+C,KArLFynH,EAAwB9rH,KAAKoD,IAAI6/C,EAAM19B,OAAS,EAAG09B,EAAM39B,MAAQ,GACrE29B,EAAM4oE,YAAc7rH,KAAKyiC,MAAMqpF,GAC/B7oE,EAAMypE,eAAe,EAAG,EAAG,EAAG,KA0L9BF,cAAe,SAASV,EAAuBE,EAAgBC,GAC9D,IACIU,EAAsBX,EAAehuH,EAAIgC,KAAKq4C,IAAI4zE,EAAejuH,GACjE4uH,EAAuB5sH,KAAKyK,IAAIuhH,EAAentH,EAF1CwF,KAEiDihB,MAAO,GAAKtlB,KAAKq4C,IAAI4zE,EAAeptH,GAC1FguH,GAAsBb,EAAe/sH,EAAIe,KAAKk4C,IAAI+zE,EAAehtH,GACjE6tH,GAAyB9sH,KAAKyK,IAAIuhH,EAAez+G,EAJ5ClJ,KAImDkhB,OAAQ,GAAKvlB,KAAKk4C,IAAI+zE,EAAe1+G,GAEjGo/G,EAAsBjB,EAAaiB,GACnCC,EAAuBlB,EAAakB,GACpCC,EAAqBnB,EAAamB,GAClCC,EAAwBpB,EAAaoB,GAT5BzoH,KAWNwnH,YAAc7rH,KAAKoD,IACrBpD,KAAKyiC,MAAMqpF,GAAyBa,EAAsBC,GAAwB,GAClF5sH,KAAKyiC,MAAMqpF,GAAyBe,EAAqBC,GAAyB,IAb1EzoH,KAcNqoH,eAAeC,EAAqBC,EAAsBC,EAAoBC,IAElFJ,eAAgB,SAASK,EAAcC,EAAeC,EAAaC,GAClE,IAAIjqC,EAAK5+E,KACL8oH,EAAWlqC,EAAG39D,MAAQ0nG,EAAgB/pC,EAAG4oC,YACzCuB,EAAUL,EAAe9pC,EAAG4oC,YAC5BwB,EAASJ,EAAchqC,EAAG4oC,YAC1ByB,EAAYrqC,EAAG19D,OAAS2nG,EAAiBjqC,EAAG4oC,YAEhD5oC,EAAGkO,QAAUnxF,KAAKyiC,OAAQ2qF,EAAUD,GAAY,EAAKlqC,EAAGn7D,MACxDm7D,EAAGmO,QAAUpxF,KAAKyiC,OAAQ4qF,EAASC,GAAa,EAAKrqC,EAAGp7D,MAGzDwkG,cAAe,SAAS7lH,GASvB,OAAOA,GAR0B,EAAVxG,KAAKm4C,GAAUizE,EAAc/mH,QACnCA,KAAKs/E,MAAMviF,SAAWiD,KAAKs/E,MAAMviF,QAAQkqF,WACzDjnF,KAAKs/E,MAAMviF,QAAQkqF,WACnB,GAEoCtrF,KAAKm4C,GAAK,EAAI,KAKpDo5C,8BAA+B,SAASvyF,GACvC,IAAIikF,EAAK5+E,KAET,GAAc,OAAVrF,EACH,OAAO,EAIR,IAAIuuH,EAAgBtqC,EAAG4oC,aAAe5oC,EAAGx4E,IAAMw4E,EAAG7/E,KAClD,OAAI6/E,EAAG7hF,QAAQslF,MAAMpwD,SACZ2sD,EAAGx4E,IAAMzL,GAASuuH,GAEnBvuH,EAAQikF,EAAG7/E,KAAOmqH,GAE3BnB,iBAAkB,SAAS5lH,EAAOgnH,GACjC,IACIC,EADKppH,KACUgoH,cAAc7lH,GAAUxG,KAAKm4C,GAAK,EACrD,MAAO,CACNvhB,EAAG52B,KAAKyiC,MAAMziC,KAAKk4C,IAAIu1E,GAAaD,GAH5BnpH,KAGqD8sF,QAC7Dr2C,EAAG96C,KAAKyiC,MAAMziC,KAAKq4C,IAAIo1E,GAAaD,GAJ5BnpH,KAIqD+sF,UAG/DU,yBAA0B,SAAStrF,EAAOxH,GACzC,OAAOqF,KAAK+nH,iBAAiB5lH,EAAOnC,KAAKktF,8BAA8BvyF,KAGxE2jH,gBAAiB,WAChB,IACIv/G,EADKiB,KACIjB,IACTqH,EAFKpG,KAEIoG,IAEb,OAJSpG,KAICytF,yBAAyB,EAJ1BztF,KAKLosF,YAAc,EACjBrtF,EAAM,GAAKqH,EAAM,EAAIA,EACrBrH,EAAM,GAAKqH,EAAM,EAAIrH,EACrB,IAGFukF,KAAM,WACL,IAAI1E,EAAK5+E,KACL+/C,EAAO6+B,EAAG7hF,QACV2qG,EAAe3nD,EAAK49B,UACpBqpB,EAAWjnD,EAAKsiC,MAChBe,EAAiBnI,EAAQmI,eAE7B,GAAIrjC,EAAKz6C,QAAS,CACjB,IAAIk+E,EAAM5E,EAAG4E,IACTyD,EAAajnF,KAAKgoH,cAAc,GAGhCzD,EAAenhC,EAAe4jB,EAAS5lF,SAAU+iF,EAAevE,iBAChEypB,EAAgBjmC,EAAe4jB,EAAS5J,UAAW+G,EAAetE,kBAClEypB,EAAiBlmC,EAAe4jB,EAAS7sE,WAAYgqE,EAAexE,mBACpE4pB,EAAgBtuC,EAAQiiB,WAAWqnB,EAAc8E,EAAeC,GAEpEruC,EAAQj4D,KAAK47D,EAAGyD,OAAO,SAAS74D,EAAOrnB,GAEtC,GAAIA,EAAQ,GAAK6kG,EAAS/0E,QAAS,CAClC,IAAIu3F,EAAgB5qC,EAAGsO,8BAA8BtO,EAAG8lC,eAAeviH,IAOvE,GAJIulG,EAAapiG,SAAqB,IAAVnD,GA/MjC,SAAwBy8C,EAAO8oD,EAAchjB,EAAQviF,GACpD,IAAIqhF,EAAM5kC,EAAM4kC,IAIhB,GAHAA,EAAIuC,YAAc9K,EAAQkF,sBAAsBunB,EAAazjE,MAAO9hC,EAAQ,GAC5EqhF,EAAIwC,UAAY/K,EAAQkF,sBAAsBunB,EAAa1hB,UAAW7jF,EAAQ,GAE1Ey8C,EAAM7hD,QAAQ4gF,UAAUuO,SAE3B1I,EAAIsoB,YACJtoB,EAAIoC,IAAIhnC,EAAMkuC,QAASluC,EAAMmuC,QAASrI,EAAQ,EAAa,EAAV/oF,KAAKm4C,IACtD0vC,EAAI2xB,YACJ3xB,EAAIyoB,aACE,CAEN,IAAI6b,EAAaf,EAAcnoE,GAE/B,GAAmB,IAAfkpE,EACH,OAGDtkC,EAAIsoB,YACJ,IAAIte,EAAgB5uC,EAAMmpE,iBAAiB,EAAGrjC,GAC9ClB,EAAIuoB,OAAOve,EAAcj7D,EAAGi7D,EAAc/2C,GAE1C,IAAK,IAAI/8C,EAAI,EAAGA,EAAIouH,EAAYpuH,IAC/B8zF,EAAgB5uC,EAAMmpE,iBAAiBruH,EAAGgrF,GAC1ClB,EAAIwoB,OAAOxe,EAAcj7D,EAAGi7D,EAAc/2C,GAG3C+sC,EAAI2xB,YACJ3xB,EAAIyoB,UAmLAwd,CAAe7qC,EAAI8oB,EAAc8hB,EAAernH,GAG7C6kG,EAAS1hG,QAAS,CACrB,IAAIkkG,EAAgBpmB,EAAe4jB,EAASyC,UAAWtF,EAAezE,kBAOtE,GANAlc,EAAI8Z,KAAOisB,EAEX/lC,EAAImoB,OACJnoB,EAAI/kC,UAAUmgC,EAAGkO,QAASlO,EAAGmO,SAC7BvJ,EAAI3kC,OAAOooC,GAEP+f,EAAS2f,kBAAmB,CAC/B,IAAIrf,EAAa9jB,EAAIoa,YAAYp0E,GAAOvI,MACxCuiE,EAAIsC,UAAYkhB,EAAS4f,cACzBpjC,EAAIsxB,UACFxN,EAAa,EAAIN,EAAS8f,kBAC1B0C,EAAgBjF,EAAe,EAAIvd,EAAS6f,iBAC7Cvf,EAAyC,EAA5BN,EAAS8f,iBACtBvC,EAA2C,EAA5Bvd,EAAS6f,kBAI1BrjC,EAAIwnB,UAAY,SAChBxnB,EAAIynB,aAAe,SACnBznB,EAAIsC,UAAY0jB,EAChBhmB,EAAI4oB,SAAS5iF,EAAO,GAAIggG,GACxBhmC,EAAI0oB,gBAKHnsD,EAAKksC,WAAW3mF,SAAWy6C,EAAKosC,YAAY7mF,UA3RnD,SAAyBs5C,GACxB,IAAI4kC,EAAM5kC,EAAM4kC,IACZzjC,EAAOnB,EAAM7hD,QACb2sH,EAAgB3pE,EAAKksC,WACrB09B,EAAiB5pE,EAAKosC,YAE1B3I,EAAIwC,UAAY0jC,EAAc1jC,UAC9BxC,EAAIuC,YAAc2jC,EAAczlF,MAEhC,IAAI2lF,EAAgBhrE,EAAMsuC,8BAA8BntC,EAAKsiC,MAAMpwD,QAAU2sB,EAAM7/C,IAAM6/C,EAAMx4C,KAG3FshH,EAASV,EAAyBpoE,GAEtC4kC,EAAIynB,aAAe,MAEnB,IAAK,IAAIvxG,EAAIqtH,EAAcnoE,GAAS,EAAGllD,GAAK,EAAGA,IAAK,CACnD,GAAIgwH,EAAcpkH,QAAS,CAC1B,IAAIukH,EAAgBjrE,EAAMmpE,iBAAiBruH,EAAGkwH,GAC9CpmC,EAAIsoB,YACJtoB,EAAIuoB,OAAOntD,EAAMkuC,QAASluC,EAAMmuC,SAChCvJ,EAAIwoB,OAAO6d,EAAct3F,EAAGs3F,EAAcpzE,GAC1C+sC,EAAIyoB,SACJzoB,EAAI2xB,YAGL,GAAIwU,EAAerkH,QAAS,CAE3B,IAAIwkH,EAAqBlrE,EAAMmpE,iBAAiBruH,EAAGkwH,EAAgB,GAG/DG,EAAsB9uC,EAAQkF,sBAAsBwpC,EAAelgB,UAAW/vG,EAAGyqG,EAAezE,kBACpGlc,EAAI8Z,KAAOoqB,EAAOpqB,KAClB9Z,EAAIsC,UAAYikC,EAEhB,IAAIviB,EAAe5oD,EAAMopE,cAActuH,GACnC4yF,EAAQrR,EAAQ2e,UAAU4N,GAC9BhkB,EAAIwnB,UAAYmc,EAAqB76B,GACrC86B,EAAkC96B,EAAO1tC,EAAMipE,iBAAiBnuH,GAAIowH,GACpE1d,EAAS5oB,EAAK5kC,EAAMutC,YAAYzyF,IAAM,GAAIowH,EAAoBpC,EAAO/0G,QAqPpEq3G,CAAgBprC,OAMpBnD,EAAaixB,kBAAkB,eAAgB6a,EAAmB9D,KAGjE,CAAC,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,KAAKwG,GAAG,CAAC,SAAS5vD,EAAQ5gE,EAAOD,GAIjE,IAAI0wH,EAAS7vD,EAAQ,GACrB6vD,EAA2B,mBAAXA,EAAwBA,EAASpuH,OAAOouH,OAExD,IAAI7oF,EAAWg5B,EAAQ,IACnB4gB,EAAU5gB,EAAQ,IAClBmhB,EAAQnhB,EAAQ,IAChBohB,EAAephB,EAAQ,IAGvB8vD,EAAcpwF,OAAOulC,mBAAqB,iBAC1C8qD,EAAcrwF,OAAOslC,kBAAoB,iBAEzCgrD,EAAY,CACfC,YAAa,CACZC,QAAQ,EACR53G,KAAM,EACN63G,MAAO,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,MAExCh4G,OAAQ,CACP+3G,QAAQ,EACR53G,KAAM,IACN63G,MAAO,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,KAE1BC,OAAQ,CACPF,QAAQ,EACR53G,KAAM,IACN63G,MAAO,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,KAE1BE,KAAM,CACLH,QAAQ,EACR53G,KAAM,KACN63G,MAAO,CAAC,EAAG,EAAG,EAAG,EAAG,KAErBG,IAAK,CACJJ,QAAQ,EACR53G,KAAM,MACN63G,MAAO,CAAC,EAAG,EAAG,IAEfI,KAAM,CACLL,QAAQ,EACR53G,KAAM,OACN63G,MAAO,CAAC,EAAG,EAAG,EAAG,IAElBK,MAAO,CACNN,QAAQ,EACR53G,KAAM,OACN63G,MAAO,CAAC,EAAG,EAAG,IAEfM,QAAS,CACRP,QAAQ,EACR53G,KAAM,OACN63G,MAAO,CAAC,EAAG,EAAG,EAAG,IAElBO,KAAM,CACLR,QAAQ,EACR53G,KAAM,SAIJq4G,EAAQ5wH,OAAOuI,KAAK0nH,GAExB,SAASY,EAAOhtH,EAAGiL,GAClB,OAAOjL,EAAIiL,EAGZ,SAASgiH,EAAYn6B,GACpB,IAEIr3F,EAAGulF,EAAMl7C,EAFTonF,EAAO,GACPC,EAAM,GAGV,IAAK1xH,EAAI,EAAGulF,EAAO8R,EAAM7uF,OAAQxI,EAAIulF,IAAQvlF,EAEvCyxH,EADLpnF,EAAOgtD,EAAMr3F,MAEZyxH,EAAKpnF,IAAQ,EACbqnF,EAAIlsH,KAAK6kC,IAIX,OAAOqnF,EAsFR,SAASp0B,EAAYq0B,EAAOC,EAAMjzB,EAAMkzB,GACvC,IAAI1oC,EAjCL,SAAgBwoC,EAAOpwH,EAAKN,GAK3B,IAJA,IAEI6wH,EAAKC,EAAIC,EAFTC,EAAK,EACL38C,EAAKq8C,EAAMnpH,OAAS,EAGjBypH,GAAM,GAAKA,GAAM38C,GAAI,CAK3B,GAHAy8C,EAAKJ,GADLG,EAAOG,EAAK38C,GAAO,GACF,IAAM,KACvB08C,EAAKL,EAAMG,IAENC,EAEJ,MAAO,CAACE,GAAI,KAAM38C,GAAI08C,GAChB,GAAIA,EAAGzwH,GAAON,EACpBgxH,EAAKH,EAAM,MACL,MAAIC,EAAGxwH,GAAON,GAGpB,MAAO,CAACgxH,GAAIF,EAAIz8C,GAAI08C,GAFpB18C,EAAKw8C,EAAM,GAOb,MAAO,CAACG,GAAID,EAAI18C,GAAI,MAUR48C,CAAOP,EAAOC,EAAMjzB,GAG5BtpE,EAAQ8zD,EAAM8oC,GAAiB9oC,EAAM7T,GAA+B6T,EAAM8oC,GAAhCN,EAAMA,EAAMnpH,OAAS,GAA5CmpH,EAAM,GACzBh1G,EAAQwsE,EAAM8oC,GAAiB9oC,EAAM7T,GAA+B6T,EAAM7T,GAAhCq8C,EAAMA,EAAMnpH,OAAS,GAA5CmpH,EAAM,GAEzB7L,EAAOnpG,EAAKi1G,GAAQv8F,EAAKu8F,GACzB7+C,EAAQ+yC,GAAQnnB,EAAOtpE,EAAKu8F,IAAS9L,EAAO,EAC5CxpF,GAAU3f,EAAKk1G,GAAQx8F,EAAKw8F,IAAS9+C,EAEzC,OAAO19C,EAAKw8F,GAAQv1F,EAOrB,SAAS61F,EAAUlxH,EAAOoC,GACzB,IAAI+uH,EAAS/uH,EAAQ+uH,OACjBxqD,EAASvkE,EAAQ+uH,QAAU/uH,EAAQukE,OAEvC,MAAsB,mBAAXwqD,EACHA,EAAOnxH,GAGM,iBAAVA,GAAwC,iBAAX2mE,EAChC4oD,EAAOvvH,EAAO2mE,IAGhB3mE,aAAiBuvH,IACtBvvH,EAAQuvH,EAAOvvH,IAGZA,EAAMq+B,UACFr+B,EAKc,mBAAX2mE,EACHA,EAAO3mE,GAGRA,GAGR,SAASoxH,EAAMtrH,EAAOm+C,GACrB,GAAIq8B,EAAQiH,cAAczhF,GACzB,OAAO,KAGR,IAAI1D,EAAU6hD,EAAM7hD,QAAQivH,KACxBrxH,EAAQkxH,EAAUjtE,EAAM+jC,cAAcliF,GAAQ1D,GAClD,OAAKpC,EAAMq+B,WAIPj8B,EAAQqhC,OACXzjC,EAAMsxH,QAAQlvH,EAAQqhC,OAGhBzjC,EAAMkG,WAPL,KAwET,SAASqrH,EAAmBC,GAC3B,IAAK,IAAIzyH,EAAIsxH,EAAM9kH,QAAQimH,GAAQ,EAAGltC,EAAO+rC,EAAM9oH,OAAQxI,EAAIulF,IAAQvlF,EACtE,GAAI2wH,EAAUW,EAAMtxH,IAAI6wH,OACvB,OAAOS,EAAMtxH,GAWhB,SAAS0yH,EAASrtH,EAAKqH,EAAKimH,EAAUtvH,GACrC,IAUIivH,EAVAM,EAAWvvH,EAAQivH,KACnBlxE,EAAQwxE,EAASH,MAlDtB,SAAmCI,EAASxtH,EAAKqH,EAAKimH,GACrD,IACI3yH,EAAG8yH,EAAUhH,EADbvmC,EAAO+rC,EAAM9oH,OAGjB,IAAKxI,EAAIsxH,EAAM9kH,QAAQqmH,GAAU7yH,EAAIulF,EAAO,IAAKvlF,EAIhD,GAFA8rH,GADAgH,EAAWnC,EAAUW,EAAMtxH,KACT8wH,MAAQgC,EAAShC,MAAMgC,EAAShC,MAAMtoH,OAAS,GAAKkoH,EAElEoC,EAASjC,QAAU5uH,KAAKsE,MAAMmG,EAAMrH,IAAQymH,EAASgH,EAAS75G,QAAU05G,EAC3E,OAAOrB,EAAMtxH,GAIf,OAAOsxH,EAAM/rC,EAAO,GAqCSwtC,CAA0BH,EAASC,QAASxtH,EAAKqH,EAAKimH,GAC/ExxE,EAAQqxE,EAAmBpxE,GAC3BsqE,EAAWnqC,EAAQmI,eAAekpC,EAASlH,SAAUkH,EAASI,cAC9DC,EAAoB,SAAV7xE,GAAmBwxE,EAASM,WACtCC,EAAoB9vH,EAAQslF,MAAMxnC,MAAMw5C,QACxCm4B,EAAWnC,EAAUvvE,GACrBvoC,EAAQ23G,EAAOnrH,GACfqtB,EAAO89F,EAAO9jH,GACdi8E,EAAQ,GAgCZ,IA7BK+iC,IACJA,EAtFF,SAA2BrmH,EAAKqH,EAAK+lH,EAAME,GAC1C,IAII3yH,EAAGulF,EAAMumC,EAJT3iC,EAAQz8E,EAAMrH,EACdytH,EAAWnC,EAAU8B,GACrBW,EAAeN,EAAS75G,KACxB63G,EAAQgC,EAAShC,MAGrB,IAAKA,EACJ,OAAO7uH,KAAKsE,KAAK4iF,GAASwpC,EAAWS,IAGtC,IAAKpzH,EAAI,EAAGulF,EAAOurC,EAAMtoH,OAAQxI,EAAIulF,IACpCumC,EAASgF,EAAM9wH,KACXiC,KAAKsE,KAAK4iF,GAASiqC,EAAetH,KAAY6G,MAFN3yH,GAO7C,OAAO8rH,EAoEKuH,CAAkBhuH,EAAKqH,EAAK00C,EAAOuxE,IAI3CM,IACHp6G,EAAQA,EAAMq6G,WAAWD,GACzBvgG,EAAOA,EAAKwgG,WAAWD,IAIxBp6G,EAAQA,EAAM05G,QAAQU,EAAU,MAAQ7xE,IACxC1uB,EAAOA,EAAK6/F,QAAQU,EAAU,MAAQ7xE,IAG3B10C,GACVgmB,EAAK0xB,IAAI,EAAGhD,GAGbkxE,EAAO9B,EAAO33G,GAEVs6G,GAAqBhyE,IAAU8xE,IAAYL,EAASluF,QAIvD4tF,EAAKC,QAAQpxE,GACbmxE,EAAKluE,QAAQvrC,EAAQy5G,IAASQ,EAAS75G,KAAOyyG,IAAaA,EAAUtqE,IAG/DkxE,EAAO5/F,EAAM4/F,EAAKluE,IAAIsnE,EAAUtqE,GACtCunC,EAAMnjF,MAAM8sH,GAKb,OAFA3pC,EAAMnjF,MAAM8sH,GAEL3pC,EAwER5oF,EAAOD,QAAU,WAEhB,IA8DIwzH,EAAYxxC,EAAMrrD,OAAO,CAC5ByrD,WAAY,WACX,IAAKsuC,EACJ,MAAM,IAAIv0E,MAAM,wIAGjB31C,KAAKuxF,oBAEL/V,EAAMlgF,UAAUsgF,WAAW/hF,KAAKmG,OAGjC+1D,OAAQ,WACP,IAAI6oB,EAAK5+E,KACLjD,EAAU6hF,EAAG7hF,QAOjB,OAJIA,EAAQivH,MAAQjvH,EAAQivH,KAAK1qD,QAChC1jC,QAAQqvF,KAAK,0EAGPzxC,EAAMlgF,UAAUy6D,OAAO5sD,MAAMy1E,EAAIl6E,YAMzCi+E,cAAe,SAAS2lB,GAIvB,OAHIA,QAA2B3qG,IAAf2qG,EAAS1tG,IACxB0tG,EAAWA,EAAS1tG,GAEd4gF,EAAMlgF,UAAUqnF,cAAc9oF,KAAKmG,KAAMsoG,IAGjDrC,oBAAqB,WACpB,IASIvsG,EAAG2b,EAAG4pE,EAAMuf,EAAMz2F,EAAMmlH,EATxBtuC,EAAK5+E,KACLs/E,EAAQV,EAAGU,MACXgtC,EAAW1tC,EAAG7hF,QAAQivH,KACtBG,EAAOG,EAASH,MAAQ,MACxBptH,EAAMqrH,EACNhkH,EAAM+jH,EACNgD,EAAa,GACbhvC,EAAW,GACXz2D,EAAS,GAIb,IAAKhuB,EAAI,EAAGulF,EAAOK,EAAMv3E,KAAK2f,OAAOxlB,OAAQxI,EAAIulF,IAAQvlF,EACxDguB,EAAOxoB,KAAK6sH,EAAMzsC,EAAMv3E,KAAK2f,OAAOhuB,GAAIklF,IAIzC,IAAKllF,EAAI,EAAGulF,GAAQK,EAAMv3E,KAAKo2E,UAAY,IAAIj8E,OAAQxI,EAAIulF,IAAQvlF,EAClE,GAAI4lF,EAAMsC,iBAAiBloF,GAI1B,GAHAqO,EAAOu3E,EAAMv3E,KAAKo2E,SAASzkF,GAAGqO,KAG1BkzE,EAAQ/8E,SAAS6J,EAAK,IAGzB,IAFAo2E,EAASzkF,GAAK,GAET2b,EAAI,EAAGmpF,EAAOz2F,EAAK7F,OAAQmT,EAAImpF,IAAQnpF,EAC3C63G,EAAYnB,EAAMhkH,EAAKsN,GAAIupE,GAC3BuuC,EAAWjuH,KAAKguH,GAChB/uC,EAASzkF,GAAG2b,GAAK63G,OAGlBC,EAAWjuH,KAAKiK,MAAMgkH,EAAYzlG,GAClCy2D,EAASzkF,GAAKguB,EAAOrnB,MAAM,QAG5B89E,EAASzkF,GAAK,GAIZguB,EAAOxlB,SAEVwlB,EAASwjG,EAAYxjG,GAAQ6J,KAAK05F,GAClClsH,EAAMpD,KAAKoD,IAAIA,EAAK2oB,EAAO,IAC3BthB,EAAMzK,KAAKyK,IAAIA,EAAKshB,EAAOA,EAAOxlB,OAAS,KAGxCirH,EAAWjrH,SACdirH,EAAajC,EAAYiC,GAAY57F,KAAK05F,GAC1ClsH,EAAMpD,KAAKoD,IAAIA,EAAKouH,EAAW,IAC/B/mH,EAAMzK,KAAKyK,IAAIA,EAAK+mH,EAAWA,EAAWjrH,OAAS,KAGpDnD,EAAMgtH,EAAMO,EAASvtH,IAAK6/E,IAAO7/E,EACjCqH,EAAM2lH,EAAMO,EAASlmH,IAAKw4E,IAAOx4E,EAGjCrH,EAAMA,IAAQqrH,GAAeF,IAAS+B,QAAQE,GAAQptH,EACtDqH,EAAMA,IAAQ+jH,GAAeD,IAASkD,MAAMjB,GAAQ,EAAI/lH,EAGxDw4E,EAAG7/E,IAAMpD,KAAKoD,IAAIA,EAAKqH,GACvBw4E,EAAGx4E,IAAMzK,KAAKyK,IAAIrH,EAAM,EAAGqH,GAG3Bw4E,EAAGyuC,YAAczuC,EAAGiC,eACpBjC,EAAG0uC,OAAS,GACZ1uC,EAAG2uC,YAAc,CAChBxlH,KAAMolH,EACNhvC,SAAUA,EACVz2D,OAAQA,IAIV0+E,WAAY,WACX,IAOI1sG,EAAGulF,EAAMiuC,EAPTtuC,EAAK5+E,KACLjB,EAAM6/E,EAAG7/E,IACTqH,EAAMw4E,EAAGx4E,IACTrJ,EAAU6hF,EAAG7hF,QACbuvH,EAAWvvH,EAAQivH,KACnBmB,EAAa,GACb9qC,EAAQ,GAGZ,OAAQtlF,EAAQslF,MAAMrlF,QACtB,IAAK,OACJmwH,EAAavuC,EAAG2uC,YAAYxlH,KAC5B,MACD,IAAK,SACJolH,EAAavuC,EAAG2uC,YAAY7lG,OAC5B,MACD,IAAK,OACL,QACCylG,EAAaf,EAASrtH,EAAKqH,EAAKw4E,EAAG4uC,iBAAiBzuH,GAAMhC,GAa3D,IAVuB,UAAnBA,EAAQ46G,QAAsBwV,EAAWjrH,SAC5CnD,EAAMouH,EAAW,GACjB/mH,EAAM+mH,EAAWA,EAAWjrH,OAAS,IAItCnD,EAAMgtH,EAAMO,EAASvtH,IAAK6/E,IAAO7/E,EACjCqH,EAAM2lH,EAAMO,EAASlmH,IAAKw4E,IAAOx4E,EAG5B1M,EAAI,EAAGulF,EAAOkuC,EAAWjrH,OAAQxI,EAAIulF,IAAQvlF,GACjDwzH,EAAYC,EAAWzzH,KACNqF,GAAOmuH,GAAa9mH,GACpCi8E,EAAMnjF,KAAKguH,GAcb,OAVAtuC,EAAG7/E,IAAMA,EACT6/E,EAAGx4E,IAAMA,EAGTw4E,EAAG6uC,MAAQnB,EAASH,MA3WvB,SAAoC9pC,EAAOkqC,EAASxtH,EAAKqH,GACxD,IAEI1M,EAAGyyH,EAFHhwF,EAAW+tF,EAAO/tF,SAAS+tF,EAAO9jH,GAAKyjD,KAAKqgE,EAAOnrH,KAIvD,IAAKrF,EAHMsxH,EAAM9oH,OAGD,EAAGxI,GAAKsxH,EAAM9kH,QAAQqmH,GAAU7yH,IAE/C,GADAyyH,EAAOnB,EAAMtxH,GACT2wH,EAAU8B,GAAM5B,QAAUpuF,EAASuxF,GAAGvB,IAAS9pC,EAAMngF,OACxD,OAAOiqH,EAIT,OAAOnB,EAAMuB,EAAUvB,EAAM9kH,QAAQqmH,GAAW,GA+VlBoB,CAA2BtrC,EAAOiqC,EAASC,QAAS3tC,EAAG7/E,IAAK6/E,EAAGx4E,KAC3Fw4E,EAAGgvC,WAAa1B,EAAmBttC,EAAG6uC,OACtC7uC,EAAG0uC,OAjiBN,SAA0BH,EAAYpuH,EAAKqH,EAAKynH,GAC/C,GAAqB,WAAjBA,IAA8BV,EAAWjrH,OAC5C,MAAO,CACN,CAAC8pH,KAAMjtH,EAAKuT,IAAK,GACjB,CAAC05G,KAAM5lH,EAAKkM,IAAK,IAInB,IAEI5Y,EAAGulF,EAAMlwD,EAAMqzD,EAAM/rE,EAFrBg1G,EAAQ,GACRt6B,EAAQ,CAAChyF,GAGb,IAAKrF,EAAI,EAAGulF,EAAOkuC,EAAWjrH,OAAQxI,EAAIulF,IAAQvlF,GACjD0oF,EAAO+qC,EAAWzzH,IACPqF,GAAOqjF,EAAOh8E,GACxB2qF,EAAM7xF,KAAKkjF,GAMb,IAFA2O,EAAM7xF,KAAKkH,GAEN1M,EAAI,EAAGulF,EAAO8R,EAAM7uF,OAAQxI,EAAIulF,IAAQvlF,EAC5C2c,EAAO06E,EAAMr3F,EAAI,GACjBq1B,EAAOgiE,EAAMr3F,EAAI,GACjB0oF,EAAO2O,EAAMr3F,QAGAiE,IAAToxB,QAA+BpxB,IAAT0Y,GAAsB1a,KAAKyiC,OAAO/nB,EAAO0Y,GAAQ,KAAOqzD,GACjFipC,EAAMnsH,KAAK,CAAC8sH,KAAM5pC,EAAM9vE,IAAK5Y,GAAKulF,EAAO,KAI3C,OAAOosC,EAigBOyC,CAAiBlvC,EAAG2uC,YAAYxlH,KAAMhJ,EAAKqH,EAAKrJ,EAAQ8wH,cACpEjvC,EAAGmvC,SA1RN,SAAwB1C,EAAOhpC,EAAOtjF,EAAKqH,EAAKrJ,GAC/C,IAEIixH,EAAOC,EAFPxqG,EAAO,EACPiN,EAAQ,EAsBZ,OAnBI3zB,EAAQi5B,QAAUqsD,EAAMngF,SACtBnF,EAAQivH,KAAKjtH,MACjBivH,EAAQ3rC,EAAMngF,OAAS,EAAImgF,EAAM,GAAKj8E,EACtC6nH,EAAQ5rC,EAAM,GACd5+D,GACCuzE,EAAYq0B,EAAO,OAAQ2C,EAAO,OAClCh3B,EAAYq0B,EAAO,OAAQ4C,EAAO,QAC/B,GAEAlxH,EAAQivH,KAAK5lH,MACjB4nH,EAAQ3rC,EAAMA,EAAMngF,OAAS,GAC7B+rH,EAAQ5rC,EAAMngF,OAAS,EAAImgF,EAAMA,EAAMngF,OAAS,GAAKnD,EACrD2xB,GACCsmE,EAAYq0B,EAAO,OAAQ2C,EAAO,OAClCh3B,EAAYq0B,EAAO,OAAQ4C,EAAO,QAC/B,IAIC,CAACxqG,KAAMA,EAAMiN,MAAOA,GAkQXw9F,CAAetvC,EAAG0uC,OAAQjrC,EAAOtjF,EAAKqH,EAAKrJ,GACzD6hF,EAAGuvC,aA/ON,SAA8BpmH,EAAMukH,GACnC,IAAI5yH,EAAG00H,EAAYC,EACfpvC,EAAOl3E,EAAK7F,OAIhB,IAAKxI,EAAI,EAAGA,EAAIulF,EAAMvlF,IAAK,CAE1B,GAAiC,KADjC00H,EAAavC,EAAU9jH,EAAKrO,GAAI4yH,IACjBhC,cACd,MAAO,4BAEoB,IAAxB8D,EAAW57G,UAA0C,IAAxB47G,EAAW3D,UAAwC,IAAtB2D,EAAW1D,SACxE2D,GAAU,GAGZ,OAAIA,EACI,wBAED,cA6NaC,CAAqB1vC,EAAG2uC,YAAYxlH,KAAMukH,GAhQ/D,SAA6Bn7G,EAAQo9G,GACpC,IACI70H,EAAGulF,EAAMtkF,EAAOkgD,EADhBwnC,EAAQ,GAGZ,IAAK3oF,EAAI,EAAGulF,EAAO9tE,EAAOjP,OAAQxI,EAAIulF,IAAQvlF,EAC7CiB,EAAQwW,EAAOzX,GACfmhD,IAAQ0zE,GAAY5zH,KAAWuvH,EAAOvvH,GAAOsxH,QAAQsC,GAErDlsC,EAAMnjF,KAAK,CACVvE,MAAOA,EACPkgD,MAAOA,IAIT,OAAOwnC,EAoPEmsC,CAAoBnsC,EAAOzD,EAAGgvC,aAGtCrlB,iBAAkB,SAASpmG,EAAOi8E,GACjC,IACIr2E,EADK/H,KACKs/E,MAAMv3E,KAChBukH,EAFKtsH,KAESjD,QAAQivH,KACtBxiG,EAAQzhB,EAAK2f,QAAUvlB,EAAQ4F,EAAK2f,OAAOxlB,OAAS6F,EAAK2f,OAAOvlB,GAAS,GACzExH,EAAQoN,EAAKo2E,SAASC,GAAcr2E,KAAK5F,GAK7C,OAHI84E,EAAQ/8E,SAASvD,KACpB6uB,EAPQxpB,KAOG2iF,cAAchoF,IAEtB2xH,EAASmC,cACL5C,EAAUriG,EAAO8iG,GAAUhrD,OAAOgrD,EAASmC,eAE9B,iBAAVjlG,EACHA,EAGDqiG,EAAUriG,EAAO8iG,GAAUhrD,OAhBzBthE,KAgBmCmuH,eAO7CO,mBAAoB,SAASzqB,EAAM9hG,EAAOkgF,EAAOssC,GAChD,IACI5xH,EADKiD,KACQjD,QACbivH,EAAO/nB,EAAKpjG,UACZojE,EAAUlnE,EAAQivH,KAAK4C,eACvBC,EAAc5qD,EAJTjkE,KAIoBytH,OACzBc,EALKvuH,KAKU4tH,WACfkB,EAAc7qD,EAAQsqD,GACtBQ,EAAY9qB,EAAK7gF,QAAQ6oG,QAAQsC,GAAW1tH,UAC5CmuH,EAAgBjyH,EAAQslF,MAAMxnC,MAC9BA,EAAQm0E,EAAc36B,SAAWk6B,GAAaO,GAAe9C,IAAS+C,EACtEvlG,EAAQy6E,EAAK3iC,OAAOqtD,IAAkC9zE,EAAQi0E,EAAcD,IAC5E7nB,EAAWnsD,EAAQm0E,EAAgBjyH,EAAQslF,MAAMvnC,MACjDm0E,EAAYh0C,EAAQmI,eAAe4jB,EAASx6D,SAAUw6D,EAASC,cAEnE,OAAOgoB,EAAYA,EAAUzlG,EAAOrnB,EAAOkgF,GAAS74D,GAGrD+8E,qBAAsB,SAASlkB,GAC9B,IACI3oF,EAAGulF,EADHv3D,EAAS,GAGb,IAAKhuB,EAAI,EAAGulF,EAAOoD,EAAMngF,OAAQxI,EAAIulF,IAAQvlF,EAC5CguB,EAAOxoB,KAAKc,KAAK0uH,mBAAmBxE,EAAO7nC,EAAM3oF,GAAGiB,OAAQjB,EAAG2oF,IAGhE,OAAO36D,GAMRwnG,kBAAmB,SAASlD,GAC3B,IAAIptC,EAAK5+E,KACL2S,EAAOisE,EAAGyuC,YAAczuC,EAAG39D,MAAQ29D,EAAG19D,OACtClN,EAAQ4qE,EAAGyuC,YAAczuC,EAAGn7D,KAAOm7D,EAAGp7D,IACtClR,EAAM0kF,EAAYpY,EAAG0uC,OAAQ,OAAQtB,EAAM,OAE/C,OAAOh4G,EAAQrB,GAAQisE,EAAGmvC,SAAStqG,KAAOnR,IAAQssE,EAAGmvC,SAAStqG,KAAO,EAAIm7D,EAAGmvC,SAASr9F,QAGtFuxD,iBAAkB,SAAStnF,EAAOwH,EAAOi8E,GACxC,IACI4tC,EAAO,KAUX,QARcruH,IAAVwE,QAAwCxE,IAAjBygF,IAC1B4tC,EAJQhsH,KAIEutH,YAAYpvC,SAASC,GAAcj8E,IAGjC,OAAT6pH,IACHA,EAAOD,EAAMpxH,EARLqF,OAWI,OAATgsH,EACH,OAZQhsH,KAYEkvH,kBAAkBlD,IAI9BzpC,gBAAiB,SAASpgF,GACzB,IAAIkgF,EAAQriF,KAAKsiF,WACjB,OAAOngF,GAAS,GAAKA,EAAQkgF,EAAMngF,OAClClC,KAAKkvH,kBAAkB7sC,EAAMlgF,GAAOxH,OACpC,MAGF6tG,iBAAkB,SAASC,GAC1B,IAAI7pB,EAAK5+E,KACL2S,EAAOisE,EAAGyuC,YAAczuC,EAAG39D,MAAQ29D,EAAG19D,OACtClN,EAAQ4qE,EAAGyuC,YAAczuC,EAAGn7D,KAAOm7D,EAAGp7D,IACtClR,GAAOK,GAAQ81F,EAAQz0F,GAASrB,EAAO,IAAMisE,EAAGmvC,SAAStqG,KAAO,EAAIm7D,EAAGmvC,SAAStqG,MAAQm7D,EAAGmvC,SAASr9F,MACpGs7F,EAAOh1B,EAAYpY,EAAG0uC,OAAQ,MAAOh7G,EAAK,QAE9C,OAAO43G,EAAO8B,IAOfmD,cAAe,SAAS3lG,GACvB,IACI4lG,EADKpvH,KACUjD,QAAQslF,MACvBgtC,EAFKrvH,KAEewjF,IAAIoa,YAAYp0E,GAAOvI,MAC3CqrE,EAAQrR,EAAQ0e,UAAUy1B,EAAUlqB,aACpCkC,EAAczrG,KAAKk4C,IAAIy4C,GACvBgjC,EAAc3zH,KAAKq4C,IAAIs4C,GAG3B,OAAQ+iC,EAAiBjoB,EAFNnsB,EAAQmI,eAAegsC,EAAUhuG,SAAUigB,EAASrlC,OAAO4jG,iBAEtB0vB,GAMzD9B,iBAAkB,SAAS+B,GAC1B,IAAI3wC,EAAK5+E,KAEL2uH,EAAiB/vC,EAAG7hF,QAAQivH,KAAK4C,eAAetE,YAEhDkF,EAAe5wC,EAAG8vC,mBAAmBxE,EAAOqF,GAAc,EAAG,GAAIZ,GACjEU,EAAiBzwC,EAAGuwC,cAAcK,GAClCnnF,EAAau2C,EAAGiC,eAAiBjC,EAAG39D,MAAQ29D,EAAG19D,OAE/CmrG,EAAW1wH,KAAKuE,MAAMmoC,EAAagnF,GACvC,OAAOhD,EAAW,EAAIA,EAAW,KAInC5wC,EAAaixB,kBAAkB,OAAQsgB,EAjWnB,CACnBt6G,SAAU,SASVm7G,aAAc,SASdlW,OAAQ,OAERqU,KAAM,CACLF,QAAQ,EACRxqD,QAAQ,EACR6qD,MAAM,EACN/tF,OAAO,EACPqxF,eAAe,EACf7C,YAAY,EACZL,QAAS,cAGTqC,eAAgB,CACftE,YAAa,gBACb93G,OAAQ,YACRi4G,OAAQ,SACRC,KAAM,KACNC,IAAK,QACLC,KAAM,KACNC,MAAO,WACPC,QAAS,cACTC,KAAM,SAGR1oC,MAAO,CACN+iB,UAAU,EAUVpoG,OAAQ,OAER69C,MAAO,CACNw5C,SAAS,QA2SX,CAAC,EAAI,EAAE,GAAK,GAAG,GAAK,GAAG,GAAK,GAAG,GAAK,MAAM,GAAG,CAAC,GA7mc8T,CA6mc1T,Q,wDCrncpD,IAAIjtF,EAAI,EAAQ,GACZ08C,EAAa,EAAQ,IAAgCphD,UACrD4E,EAAmB,EAAQ,IAG3BC,GAAc,EADD,aAIC,IAAIrD,MAAM,GAAa,WAAE,WAAcqD,GAAc,KAIvEH,EAAE,CAAEnK,OAAQ,QAASuK,OAAO,EAAM9J,OAAQ6J,GAAe,CACvD7E,UAAW,SAAmBb,GAC5B,OAAOiiD,EAAW9jD,KAAM6B,EAAY6C,UAAUxC,OAAS,EAAIwC,UAAU,QAAK/G,MAK9E2J,EAfiB,c,gBCLjB,IAAIF,EAAI,EAAQ,GAEZ+rB,EAAMx3B,KAAKw3B,IACXsmE,EAAS99F,KAAK89F,OAIlBryF,EAAE,CAAEnK,OAAQ,OAAQO,MAAM,GAAQ,CAChCg8F,MAAO,SAAejnE,GACpB,OAAOY,EAAIZ,GAAKknE,M,gBCTZ,EAAQ,EAKhBryF,CAAE,CAAEnK,OAAQ,OAAQO,MAAM,GAAQ,CAChCo1B,KALS,EAAQ,Q,cCCnBn5B,EAAOD,QAAUmC,KAAKi3B,MAAQ,SAAcL,GAE1C,OAAmB,IAAXA,GAAKA,IAAWA,GAAKA,EAAIA,EAAIA,EAAI,GAAK,EAAI,I,gBCJ5C,EAAQ,EAIhBnrB,CAAE,CAAEnK,OAAQ,SAAUO,MAAM,GAAQ,CAClC29F,QAASx/F,KAAK22B,IAAI,GAAI,O,8CCCbt2B,EAAQspD,E;;;;;;GAARtpD,OAIT,EAJiBspD,EAIX,SAAUijB,GAIlB,IAAI0S,GAFJ1S,EAAQA,GAASA,EAAMhtE,eAAe,WAAagtE,EAAK,QAAcA,GAElD0S,QAEhB8U,EAAoB,WACvB,GAAsB,oBAAXj0F,OAAwB,CAClC,GAAIA,OAAOi0F,iBACV,OAAOj0F,OAAOi0F,iBAMf,IAAI2/B,EAAS5zH,OAAO4zH,OACpB,GAAIA,EACH,OAAQA,EAAOC,YAAc,IAAMD,EAAOE,aAAe,GAI3D,OAAO,EAfgB,GAkBpBC,EAAQ,CAEXC,YAAa,SAAS9V,GACrB,IACIv5G,EADAmxG,EAAQ,GAIZ,IADAoI,EAAS,GAAGh2G,OAAOg2G,GACZA,EAAO93G,QAEQ,iBADrBzB,EAAQu5G,EAAO9jB,OAEd0b,EAAMl8D,QAAQvsC,MAAMyoG,EAAOnxG,EAAMb,MAAM,OAC7BsE,MAAMC,QAAQ1D,GACxBu5G,EAAO96G,KAAKiK,MAAM6wG,EAAQv5G,GACfw6E,EAAQiH,cAAc83B,IACjCpI,EAAMl8D,QAAQ,GAAKj1C,GAIrB,OAAOmxG,GAKRme,aAAc,SAASzyB,GACtB,OAAKA,GAAQriB,EAAQiH,cAAcob,EAAK3qF,OAASsoE,EAAQiH,cAAcob,EAAK8G,QACpE,MAGA9G,EAAKj4F,MAAQi4F,EAAKj4F,MAAQ,IAAM,KACpCi4F,EAAKjwB,OAASiwB,EAAKjwB,OAAS,IAAM,IACnCiwB,EAAK3qF,KAAO,MACZ2qF,EAAK8G,QAKT8d,SAAU,SAAS1+B,EAAKouB,EAAOtU,GAC9B,IAII5jG,EAJAq3F,EAAQ,GAAG/sF,OAAO4tG,GAClB3yB,EAAO8R,EAAM7uF,OACb6sB,EAAOy0D,EAAI8Z,KACXr8E,EAAQ,EAKZ,IAFAuiE,EAAI8Z,KAAOA,EAAKn1F,OAEXzO,EAAI,EAAGA,EAAIulF,IAAQvlF,EACvBunB,EAAQtlB,KAAKyK,IAAIo9E,EAAIoa,YAAY7M,EAAMr3F,IAAIunB,MAAOA,GAKnD,OAFAuiE,EAAI8Z,KAAOvuE,EAEJ,CACN7N,OAAQ+9D,EAAOqe,EAAKj8E,WACpBJ,MAAOA,IAKT+uG,UAAW,SAASr1H,GACnB,IAAIqB,EAASusE,EAAMlnC,SAASrlC,OACxB2W,EAAOsoE,EAAQmI,eAAezoF,EAAMgY,KAAM3W,EAAO4jG,iBACjDtC,EAAO,CACV8G,OAAQnpB,EAAQmI,eAAezoF,EAAMypG,OAAQpoG,EAAO2jG,mBACpDt+E,WAAY45D,EAAQl+E,QAAQunG,aAAa3pG,EAAM0mB,WAAY1O,GAC3DA,KAAMA,EACNtN,MAAO41E,EAAQmI,eAAezoF,EAAM0K,MAAOrJ,EAAO6jG,kBAClDxyB,OAAQ4N,EAAQmI,eAAezoF,EAAM0yE,OAAQ,MAC7CllE,OAAQ,IAIT,OADAm1F,EAAKn1F,OAAS0nH,EAAME,aAAazyB,GAC1BA,GAQR2yB,MAAO,SAASlxH,EAAKpE,EAAOyL,GAC3B,OAAOzK,KAAKyK,IAAIrH,EAAKpD,KAAKoD,IAAIpE,EAAOyL,KAQtC8pH,UAAW,SAASnX,EAAIC,GACvB,IAEIt/G,EAAG2b,EAAG4pE,EAAM1oC,EAFZxnB,EAAOgqF,EAAG14G,QACV8vH,EAAU,GAGd,IAAKz2H,EAAI,EAAGulF,EAAO+5B,EAAG92G,OAAQxI,EAAIulF,IAAQvlF,EACzC68C,EAAIyiE,EAAGt/G,IAGI,KAFX2b,EAAI0Z,EAAK7oB,QAAQqwC,IAGhB45E,EAAQjxH,KAAK,CAACq3C,EAAG,IAEjBxnB,EAAKpS,OAAOtH,EAAG,GAIjB,IAAK3b,EAAI,EAAGulF,EAAOlwD,EAAK7sB,OAAQxI,EAAIulF,IAAQvlF,EAC3Cy2H,EAAQjxH,KAAK,CAAC6vB,EAAKr1B,IAAK,IAGzB,OAAOy2H,GAMRC,UAAW,SAAS75E,GACnB,OAAO56C,KAAKyiC,MAAMmY,EAAIw5C,GAAoBA,IAI5C,SAASsgC,EAAOv/G,EAAO+lF,GACtB,IAAIy5B,EAAKz5B,EAAOtkE,EACZg+F,EAAK15B,EAAOpgD,EAEhB,GAAW,OAAP65E,EACH,MAAO,CAAC/9F,EAAG,EAAGkkB,GAAI,GAEnB,GAAW,OAAP85E,EACH,MAAO,CAACh+F,EAAG,EAAGkkB,EAAG,GAGlB,IAAI2E,EAAKtqC,EAAMyhB,EAAI+9F,EACfE,EAAK1/G,EAAM2lC,EAAI85E,EACfE,EAAK90H,KAAK24C,KAAK8G,EAAKA,EAAKo1E,EAAKA,GAElC,MAAO,CACNj+F,EAAGk+F,EAAKr1E,EAAKq1E,EAAK,EAClBh6E,EAAGg6E,EAAKD,EAAKC,GAAM,GAmDrB,IAAIC,EAAW,EACXC,EAAS,EACTC,EAAU,EACVC,EAAW,EACXC,EAAQ,EAEZ,SAASC,EAAOx+F,EAAGkkB,EAAGwX,GACrB,IAAIr5C,EAAM87G,EAaV,OAXIn+F,EAAI07B,EAAKxqC,KACZ7O,GAAO+7G,EACGp+F,EAAI07B,EAAKv9B,QACnB9b,GAAOg8G,GAEJn6E,EAAIwX,EAAKzqC,IACZ5O,GAAOk8G,EACGr6E,EAAIwX,EAAK2B,SACnBh7C,GAAOi8G,GAGDj8G,EAuDR,SAASo8G,EAAQnuC,EAAOrG,GACvB,IAEIjqD,EAAGkkB,EAFHw6E,EAASz0C,EAAOy0C,OAChBC,EAAUruC,EAkBd,OAfIrG,EAAO20C,QACVD,EA1DF,SAAiBA,EAASpmC,GAUzB,IATA,IAMItwF,EAAG+3B,EAAGkkB,EANN65E,EAAKY,EAAQZ,GACbC,EAAKW,EAAQX,GACb5lB,EAAKumB,EAAQvmB,GACbC,EAAKsmB,EAAQtmB,GACbwmB,EAAKL,EAAOT,EAAIC,EAAIzlC,GACpBumC,EAAKN,EAAOpmB,EAAIC,EAAI9f,GAKjBsmC,EAAKC,KAAQD,EAAKC,KAMxB72H,EAAI42H,GAAMC,GAEFP,GACPv+F,EAAI+9F,GAAM3lB,EAAK2lB,IAAOxlC,EAAKtnE,IAAM+sG,IAAO3lB,EAAK2lB,GAC7C95E,EAAIq0C,EAAKtnE,KACChpB,EAAIq2H,GACdt+F,EAAI+9F,GAAM3lB,EAAK2lB,IAAOxlC,EAAKl7B,OAAS2gE,IAAO3lB,EAAK2lB,GAChD95E,EAAIq0C,EAAKl7B,QACCp1D,EAAIo2H,GACdn6E,EAAI85E,GAAM3lB,EAAK2lB,IAAOzlC,EAAKp6D,MAAQ4/F,IAAO3lB,EAAK2lB,GAC/C/9F,EAAIu4D,EAAKp6D,OACCl2B,EAAIm2H,IACdl6E,EAAI85E,GAAM3lB,EAAK2lB,IAAOzlC,EAAKrnE,KAAO6sG,IAAO3lB,EAAK2lB,GAC9C/9F,EAAIu4D,EAAKrnE,MAGNjpB,IAAM42H,EAGTA,EAAKL,EAFLT,EAAK/9F,EACLg+F,EAAK95E,EACeq0C,GAIpBumC,EAAKN,EAFLpmB,EAAKp4E,EACLq4E,EAAKn0D,EACeq0C,GAItB,MAAO,CACNwlC,GAAIA,EACJ3lB,GAAIA,EACJ4lB,GAAIA,EACJ3lB,GAAIA,GAUM0mB,CAAQJ,EAAS10C,EAAOsO,OAGpB,UAAXmmC,GACH1+F,EAAI2+F,EAAQZ,GACZ75E,EAAIy6E,EAAQX,IACS,QAAXU,GACV1+F,EAAI2+F,EAAQvmB,GACZl0D,EAAIy6E,EAAQtmB,KAEZr4E,GAAK2+F,EAAQZ,GAAKY,EAAQvmB,IAAM,EAChCl0D,GAAKy6E,EAAQX,GAAKW,EAAQtmB,IAAM,GA3IlC,SAAiBr4E,EAAGkkB,EAAG86E,EAAIC,EAAIC,GAC9B,OAAQA,GACR,IAAK,SACJF,EAAKC,EAAK,EACV,MACD,IAAK,SACJD,EAAK,EACLC,EAAK,EACL,MACD,IAAK,QACJD,EAAK,EACLC,EAAK,EACL,MACD,IAAK,OACJD,GAAM,EACNC,EAAK,EACL,MACD,IAAK,MACJD,EAAK,EACLC,GAAM,EACN,MACD,IAAK,QACJD,GAAMA,EACNC,GAAMA,EACN,MACD,IAAK,MAEJ,MACD,QAECC,GAAU91H,KAAKm4C,GAAK,IACpBy9E,EAAK51H,KAAKk4C,IAAI49E,GACdD,EAAK71H,KAAKq4C,IAAIy9E,GAIf,MAAO,CACNl/F,EAAGA,EACHkkB,EAAGA,EACH86E,GAAIA,EACJC,GAAIA,GAsGEE,CAAQn/F,EAAGkkB,EAAGosC,EAAM0uC,GAAI1uC,EAAM2uC,GAAIh1C,EAAOi1C,OAGjD,IAAI/hB,EAAc,CACjB9pB,IAAK,SAASwtB,EAAI52B,GACjB,IAAI8P,GAAS8mB,EAAGnsB,WAAamsB,EAAGlsB,UAAY,EACxCqqC,EAAK51H,KAAKk4C,IAAIy4C,GACdklC,EAAK71H,KAAKq4C,IAAIs4C,GACd8kC,EAAKhe,EAAG1rB,YACR2pC,EAAKje,EAAG3rB,YAEZ,OAAOupC,EAAQ,CACdV,GAAIld,EAAG7gF,EAAIg/F,EAAKH,EAChBb,GAAInd,EAAG38D,EAAI+6E,EAAKJ,EAChBzmB,GAAIyI,EAAG7gF,EAAIg/F,EAAKF,EAChBzmB,GAAIwI,EAAG38D,EAAI+6E,EAAKH,EAChBE,GAAIA,EACJC,GAAIA,GACFh1C,IAGJ1rE,MAAO,SAASsiG,EAAI52B,GACnB,IAAIjmC,EAAI85E,EAAOjd,EAAI52B,EAAOqa,QACtBhiF,EAAK0hC,EAAEhkB,EAAI6gF,EAAG1uB,OACditC,EAAKp7E,EAAEE,EAAI28D,EAAG1uB,OAElB,OAAOssC,EAAQ,CACdV,GAAIld,EAAG7gF,EAAI1d,EACX07G,GAAInd,EAAG38D,EAAIk7E,EACXhnB,GAAIyI,EAAG7gF,EAAI1d,EACX+1F,GAAIwI,EAAG38D,EAAIk7E,EACXJ,GAAIh7E,EAAEhkB,EACNi/F,GAAIj7E,EAAEE,GACJ+lC,IAGJvuB,KAAM,SAASmlD,EAAI52B,GAClB,IAAIjmC,EAAI85E,EAAOjd,EAAI52B,EAAOqa,QACtBtkE,EAAI6gF,EAAG7gF,EACPkkB,EAAI28D,EAAG38D,EACPm7E,EAAK,EACLC,EAAK,EAUT,OARIze,EAAGxyB,YACNruD,EAAI52B,KAAKoD,IAAIq0G,EAAG7gF,EAAG6gF,EAAG1yB,MACtBkxC,EAAKj2H,KAAKm4B,IAAIs/E,EAAG1yB,KAAO0yB,EAAG7gF,KAE3BkkB,EAAI96C,KAAKoD,IAAIq0G,EAAG38D,EAAG28D,EAAG1yB,MACtBmxC,EAAKl2H,KAAKm4B,IAAIs/E,EAAG1yB,KAAO0yB,EAAG38D,IAGrBu6E,EAAQ,CACdV,GAAI/9F,EACJg+F,GAAI95E,EAAIo7E,EACRlnB,GAAIp4E,EAAIq/F,EACRhnB,GAAIn0D,EACJ86E,GAAIh7E,EAAEhkB,EACNi/F,GAAIj7E,EAAEE,GACJ+lC,IAGJvgD,SAAU,SAASm3E,EAAI52B,GACtB,IAAIjmC,EAAI85E,EAAOjd,EAAI52B,EAAOqa,QAE1B,OAAOm6B,EAAQ,CACdV,GAAIld,EAAG7gF,EACPg+F,GAAInd,EAAG38D,EACPk0D,GAAIyI,EAAG7gF,EACPq4E,GAAIwI,EAAG38D,EACP86E,GAAIh7E,EAAEhkB,EACNi/F,GAAIj7E,EAAEE,GACJ+lC,KAIDs1C,EAAYvpD,EAAM0S,QAClBm1C,EAAYP,EAAMO,UA0BtB,SAAS2B,EAAevrH,GACvB,IAAIo6E,EAAap6E,EAAGy5E,OAAOW,WACvBhiC,EAAQp4C,EAAG0iF,QAAWtI,GAAcp6E,EAAGk5E,SAAYl5E,EAAGq5E,QAE1D,IAAKjhC,EACJ,OAAO,KAGR,QAAsBjhD,IAAlBihD,EAAMkuC,cAA2CnvF,IAAlBihD,EAAMmuC,QACxC,MAAO,CAACx6D,EAAGqsB,EAAMkuC,QAASr2C,EAAGmI,EAAMmuC,SAGpC,IAAI0b,EAAQ7pD,EAAM+hC,eAClB,OAAOC,EACN,CAACruD,EAAGk2E,EAAOhyD,EAAG,MACd,CAAClkB,EAAG,KAAMkkB,EAAGgyD,GAsEf,SAASupB,EAAaxuC,EAAKn/D,EAAM4tG,GAChC,IAAIC,EAAS1uC,EAAI2uC,WACbC,EAAUH,EAAIG,QACd7/F,EAAI69F,EAAU6B,EAAI1/F,GAClBkkB,EAAI25E,EAAU6B,EAAIx7E,GAClBD,EAAI45E,EAAU6B,EAAIz7E,GAElB47E,GACH5uC,EAAI6uC,WAAWhuG,EAAMkO,EAAGkkB,EAAGD,GAGxBy7E,EAAIK,SACHJ,GAAUE,IAGb5uC,EAAI2uC,WAAa,GAGlB3uC,EAAI4oB,SAAS/nF,EAAMkO,EAAGkkB,EAAGD,GAErB07E,GAAUE,IACb5uC,EAAI2uC,WAAaD,IAiDpB,IAAIK,EAAQ,SAAS/1C,EAAQgH,EAAKh9E,EAAIrE,GACrC,IAAIy8E,EAAK5+E,KAET4+E,EAAG4zC,QAAUh2C,EACboC,EAAGoB,OAAS79E,EACZy8E,EAAGqB,OAAS,KACZrB,EAAG6zC,OAAS,KACZ7zC,EAAG8zC,KAAOlvC,EACV5E,EAAG+zC,IAAMnsH,GAGVsrH,EAAU3hG,OAAOoiG,EAAMj3H,UAAW,CAIjCs3H,UAAW,SAASttH,EAASssG,EAAOp1B,EAAQhb,GAC3C,IAzJqBh7D,EA0JjBrE,EADKnC,KACMggF,OACXmF,EAAU2sC,EAAU/0H,QAAQooF,QAC5BmY,EAAOuyB,EAAMG,UAAU7qC,EAAQ,CAAC3I,EAAO8gB,KAAM,IAAK97B,EAASr/D,IAC3D8hC,EAAQkhD,EAAQ,CAAC3I,EAAOv4C,MAAOskC,EAAMlnC,SAASrlC,OAAO0jG,kBAAmBl+B,EAASr/D,GAErF,MAAO,CACNsvH,MAAOtsC,EAAQ,CAAC3I,EAAOi1C,MAAO,UAAWjwD,EAASr/D,GAClD8uH,OAAQ9rC,EAAQ,CAAC3I,EAAOy0C,OAAQ,UAAWzvD,EAASr/D,GACpD2oF,KAAMtpB,EAAQ8d,MAAMmE,UACpBniE,gBAAiB6jE,EAAQ,CAAC3I,EAAOl7D,gBAAiB,MAAOkgD,EAASr/D,GAClE+sC,YAAai2C,EAAQ,CAAC3I,EAAOttC,YAAa,MAAOsyB,EAASr/D,GAC1D8sC,aAAck2C,EAAQ,CAAC3I,EAAOvtC,aAAc,GAAIuyB,EAASr/D,GACzDi+E,YAAa+E,EAAQ,CAAC3I,EAAO4D,YAAa,GAAI5e,EAASr/D,GACvDgvH,MAAOhsC,EAAQ,CAAC3I,EAAO20C,OAAO,GAAQ3vD,EAASr/D,GAC/Cg6C,KAAMgpC,EAAQ,CAAC3I,EAAOrgC,MAAM,GAAQqlB,EAASr/D,GAC7C8hC,MAAOA,EACP3+B,QAASA,EACTg4F,KAAMA,EACNsU,MAAOA,EACP57E,OAAQmvD,EAAQ,CAAC3I,EAAOxmD,OAAQ,GAAIwrC,EAASr/D,GAC7CuhB,QAASyhE,EAAQ,CAAC3I,EAAO94D,QAAS,GAAI89C,EAASr/D,GAC/C00F,OAAQk7B,EAtBA/xH,KAsBkB2yH,KAC1BxxG,QAAS2wG,EAAU/0H,QAAQ4jG,UAAUxb,EAAQ,CAAC3I,EAAOr7D,QAAS,GAAIqgD,EAASr/D,IAC3E0wH,YAjLoBrsH,EAyJZxG,KAwBqB2yH,IAhL3BnsH,aAAc+hE,EAAM5nB,SAAS8lC,IACzBipB,EAAY9pB,IAEhBp/E,aAAc+hE,EAAM5nB,SAASojC,MACzB2rB,EAAY5+F,MAEhBtK,aAAc+hE,EAAM5nB,SAAS+9B,UACzBgxB,EAAYzhD,KAEbyhD,EAAYzzE,UAwKjBwoD,SAAUU,EAAQ,CAAC3I,EAAOiI,SAAU,GAAIjjB,EAASr/D,IAAUxG,KAAKm4C,GAAK,KACrEnhC,KAAMk9G,EAAM3N,SA1BJliH,KA0BgB0yH,KAAM9gB,EAAOtU,GACrC0N,UAAW7lB,EAAQ,CAAC3I,EAAOwuB,UAAW,SAAUxpC,EAASr/D,GACzD2wH,eAAgB3tC,EAAQ,CAAC3I,EAAOs2C,eAAgB,GAAItxD,EAASr/D,GAC7D4wH,gBAAiB5tC,EAAQ,CAAC3I,EAAOu2C,gBAAiB9uF,GAAQu9B,EAASr/D,GACnE6wH,gBAAiB7tC,EAAQ,CAAC3I,EAAOw2C,gBAAiB/uF,GAAQu9B,EAASr/D,GACnE8wH,gBAAiB9tC,EAAQ,CAAC3I,EAAOy2C,gBAAiB,GAAIzxD,EAASr/D,KAIjE4zD,OAAQ,SAASyL,GAChB,IAKI7mE,EAAO6uB,EAAOooF,EALdhzB,EAAK5+E,KACLugF,EAAQ,KACRrB,EAAQ,KACR/8E,EAAQy8E,EAAGoB,OACXxD,EAASoC,EAAG4zC,QAKZltH,EAAUwsH,EAAU/0H,QAAQooF,QAAQ,CAAC3I,EAAOl3E,SAAS,GAAOk8D,EAASr/D,GAErEmD,IACH3K,EAAQ6mE,EAAQ+d,QAAQx3E,KAAK5F,GAC7BqnB,EAAQsoG,EAAU1uC,eAAe0uC,EAAUtlF,SAASgwC,EAAOyyC,UAAW,CAACt0H,EAAO6mE,IAAW7mE,IACzFi3G,EAAQkgB,EAAU5vC,cAAc14D,GAAS,GAAKqmG,EAAMC,YAAYtmG,IAEtDtnB,SAETg9E,EAzPJ,SAAuBqB,GACtB,IAAIH,EAAcG,EAAMH,aAAe,EACnCj/D,EAAUo/D,EAAMp/D,QAChB+xG,EAAK3yC,EAAM5tE,KAAKuO,OAChBiyG,EAAK5yC,EAAM5tE,KAAKsO,MAChBmyG,GAAMD,EAAK,EACXE,GAAMH,EAAK,EAEf,MAAO,CACNpwD,MAAO,CACNvwC,EAAG6gG,EAAKjyG,EAAQsC,KAAO28D,EACvB3pC,EAAG48E,EAAKlyG,EAAQqC,IAAM48D,EACtB5pC,EAAG28E,EAAKhyG,EAAQF,MAAsB,EAAdm/D,EACxB9pC,EAAG48E,EAAK/xG,EAAQD,OAAuB,EAAdk/D,GAE1B/7D,KAAM,CACLkO,EAAG6gG,EACH38E,EAAG48E,EACH78E,EAAG28E,EACH78E,EAAG48E,IAsOMI,CADR/yC,EAAQ3B,EAAGg0C,UAAUttH,EAASssG,EAAOp1B,EAAQhb,MAK/Cod,EAAGqB,OAASM,EACZ3B,EAAG6zC,OAASvzC,GAGbq0C,SAAU,WACT,OAAOvzH,KAAKyyH,OAASzyH,KAAKyyH,OAAO3vD,MAAQ,IAG1C2hB,SAAU,WACT,OAAOzkF,KAAKigF,OAASjgF,KAAKigF,OAAOwE,SAAW,GAG7Cj2D,QAAS,WACR,OAAOxuB,KAAKigF,QAAUjgF,KAAKigF,OAAOv8D,SAGnC68D,MAAO,WACN,OAAOvgF,KAAKigF,QAGbqD,KAAM,SAAShE,EAAO8B,GACrB,IAII0J,EAHAtH,EAAMlE,EAAMkE,IACZjD,EAFKvgF,KAEMigF,OACXf,EAHKl/E,KAGMyyH,OAGVzyH,KAAKwuB,YAIVg1D,EAAImoB,OAEAprB,EAAMpkC,OACT2uC,EAAOvK,EAAMuK,KACbtH,EAAIsoB,YACJtoB,EAAIv1B,KACH68B,EAAKrnE,KACLqnE,EAAKtnE,IACLsnE,EAAKp6D,MAAQo6D,EAAKrnE,KAClBqnE,EAAKl7B,OAASk7B,EAAKtnE,KACpBggE,EAAIrnC,QAGLqnC,EAAIgwC,YAAc3D,EAAMI,MAAM,EAAG1vC,EAAM78D,QAAS,GAChD8/D,EAAI/kC,UAAU2xE,EAAUhvC,EAAO7uD,GAAI69F,EAAUhvC,EAAO3qC,IACpD+sC,EAAI3kC,OAAO0hC,EAAMkE,UApPnB,SAAmBjB,EAAKv1B,EAAMsyB,GAC7B,IAAIkzC,EAAUlzC,EAAMj/D,gBAChB4tB,EAAcqxC,EAAMrxC,YACpBkxC,EAAcG,EAAMH,aAEnBqzC,GAAavkF,GAAgBkxC,KAIlCoD,EAAIsoB,YAEJgmB,EAAU11C,OAAO27B,YAChBv0B,EACA4sC,EAAUniE,EAAK17B,GAAK6tD,EAAc,EAClCgwC,EAAUniE,EAAKxX,GAAK2pC,EAAc,EAClCgwC,EAAUniE,EAAKzX,GAAK4pC,EACpBgwC,EAAUniE,EAAK3X,GAAK8pC,EACpBG,EAAMtxC,cAEPu0C,EAAI2xB,YAEAse,IACHjwC,EAAIsC,UAAY2tC,EAChBjwC,EAAI5wC,QAGD1D,GAAekxC,IAClBoD,EAAIuC,YAAc72C,EAClBs0C,EAAIwC,UAAY5F,EAChBoD,EAAI0yB,SAAW,QACf1yB,EAAIyoB,WAwNJynB,CAAUlwC,EAAKtE,EAAMpc,MAAOyd,GAtK9B,SAAkBiD,EAAKouB,EAAO3jD,EAAMsyB,GACnC,IAQI7mF,EARA+3H,EAAQlxC,EAAMyqB,UACd/mE,EAAQs8C,EAAMt8C,MACdquF,IAAWruF,EACXq5D,EAAO/c,EAAM+c,KACbre,EAAO2yB,EAAM1vG,OACbyxH,EAAcpzC,EAAMyyC,gBACpBY,EAAcrzC,EAAM0yC,gBACpBb,EAAUuB,GAAeC,EAG7B,GAAK30C,IAAUqzC,GAAWF,GAsB1B,IAjBAnkE,EA9DD,SAAsBA,EAAMwjE,EAAOn0B,GAClC,IAAIhnD,EAAIgnD,EAAKj8E,WACTm1B,EAAIyX,EAAKzX,EACTjkB,EAAI07B,EAAK17B,EASb,MANc,WAAVk/F,EACHl/F,GAAKikB,EAAI,EACW,QAAVi7E,GAA6B,UAAVA,IAC7Bl/F,GAAKikB,GAGC,CACNF,EAAGA,EACHE,EAAGA,EACHjkB,EAAGA,EACHkkB,EAZOwX,EAAKxX,EAAIH,EAAI,GA0Ddu9E,CAAa5lE,EAAMwjE,EAAOn0B,GAEjC9Z,EAAI8Z,KAAOA,EAAKn1F,OAChBq7E,EAAIwnB,UAAYymB,EAChBjuC,EAAIynB,aAAe,SACnBznB,EAAI2uC,WAAa5xC,EAAMuyC,eACvBtvC,EAAIswC,YAAcvzC,EAAMwyC,gBAEpBT,IACH9uC,EAAIsC,UAAY7hD,GAEbmuF,IACH5uC,EAAI0yB,SAAW,QACf1yB,EAAIwC,UAAY4tC,EAChBpwC,EAAIuC,YAAc4tC,GAGdj6H,EAAI,EAAGulF,EAAO2yB,EAAM1vG,OAAQxI,EAAIulF,IAAQvlF,EAC5Cs4H,EAAaxuC,EAAKouB,EAAMl4G,GAAI,CAC3B04H,QAASA,EACTE,OAAQA,EACR97E,EAAGyX,EAAKzX,EACRjkB,EAAG07B,EAAK17B,EACRkkB,EAAGwX,EAAKxX,EAAIwX,EAAK3X,EAAI58C,IAgItBq6H,CAASvwC,EAAKjD,EAAMqxB,MAAO1yB,EAAM76D,KAAMk8D,GAEvCiD,EAAI0oB,cAIN,IAAI8nB,EAAYzrD,EAAM0S,QAElBkvC,EAAcpwF,OAAOulC,mBAAqB,iBAC1C8qD,EAAcrwF,OAAOslC,kBAAoB,iBAE7C,SAAS40D,EAAQnjH,EAAOswE,EAAQkL,GAC/B,IAAIz4C,EAAMl4C,KAAKk4C,IAAIy4C,GACft4C,EAAMr4C,KAAKq4C,IAAIs4C,GACf4nC,EAAK9yC,EAAO7uD,EACZ4hG,EAAK/yC,EAAO3qC,EAEhB,MAAO,CACNlkB,EAAG2hG,EAAKrgF,GAAO/iC,EAAMyhB,EAAI2hG,GAAMlgF,GAAOljC,EAAM2lC,EAAI09E,GAChD19E,EAAG09E,EAAKngF,GAAOljC,EAAMyhB,EAAI2hG,GAAMrgF,GAAO/iC,EAAM2lC,EAAI09E,IAIlD,SAASC,EAAUpwC,EAAQlkC,GAC1B,IAGIpmD,EAAGsxF,EAAIumC,EAAIC,EAAI6C,EAHft1H,EAAMqrH,EACNhkH,EAAM+jH,EACNtzB,EAAS/2C,EAAK+2C,OAGlB,IAAKn9F,EAAI,EAAGA,EAAIsqF,EAAO9hF,SAAUxI,EAEhC63H,GADAvmC,EAAKhH,EAAOtqF,IACJ64B,EAAIskE,EAAOtkE,EACnBi/F,EAAKxmC,EAAGv0C,EAAIogD,EAAOpgD,EACnB49E,EAAKv0E,EAAKyxE,GAAKA,EAAKzxE,EAAK0xE,GAAKA,EAC9BzyH,EAAMpD,KAAKoD,IAAIA,EAAKs1H,GACpBjuH,EAAMzK,KAAKyK,IAAIA,EAAKiuH,GAGrB,MAAO,CACNt1H,IAAKA,EACLqH,IAAKA,GAIP,SAASkuH,EAAOlV,EAAIC,GACnB,IAAIkS,EAAKlS,EAAG9sF,EAAI6sF,EAAG7sF,EACfi/F,EAAKnS,EAAG5oE,EAAI2oE,EAAG3oE,EACfg6E,EAAK90H,KAAK24C,KAAKi9E,EAAKA,EAAKC,EAAKA,GAElC,MAAO,CACND,IAAKlS,EAAG9sF,EAAI6sF,EAAG7sF,GAAKk+F,EACpBe,IAAKnS,EAAG5oE,EAAI2oE,EAAG3oE,GAAKg6E,EACpB55B,OAAQuoB,EACRqR,GAAIA,GAIN,IAAI8D,EAAS,WACZv0H,KAAKw0H,UAAY,EACjBx0H,KAAKy0H,MAAQ,CACZliG,EAAG,EACHkkB,EAAG,EACHD,EAAG,EACHF,EAAG,IAsFL,SAASo+E,EAAY91G,EAAM2hE,EAAOgzC,GACjC,IAAIziH,EAAQyvE,EAAMsyC,WAAWj0G,EAAM2hE,GAC/BgxC,EAAKzgH,EAAMygH,GACXC,EAAK1gH,EAAM0gH,GAEf,IAAKD,IAAOC,EAEX,MAAO,CAACj/F,EAAGzhB,EAAMyhB,EAAGkkB,EAAG3lC,EAAM2lC,GAG9B,IAAID,EAAI+8E,EAAS/8E,EACbF,EAAIi9E,EAASj9E,EAGbmuC,EAAWlE,EAAMkE,SACjBrpC,EAAKz/C,KAAKm4B,IAAI0iB,EAAI,EAAI76C,KAAKk4C,IAAI4wC,IAAa9oF,KAAKm4B,IAAIwiB,EAAI,EAAI36C,KAAKq4C,IAAIywC,IACtE+rC,EAAK70H,KAAKm4B,IAAI0iB,EAAI,EAAI76C,KAAKq4C,IAAIywC,IAAa9oF,KAAKm4B,IAAIwiB,EAAI,EAAI36C,KAAKk4C,IAAI4wC,IAKtEkwC,EAAK,EAAIh5H,KAAKyK,IAAIzK,KAAKm4B,IAAIy9F,GAAK51H,KAAKm4B,IAAI09F,IAQ7C,OAPAp2E,GAAMm2E,EAAKoD,EACXnE,GAAMgB,EAAKmD,EAGXv5E,GAAMmlC,EAAMvqD,OAASu7F,EACrBf,GAAMjwC,EAAMvqD,OAASw7F,EAEd,CACNj/F,EAAGzhB,EAAMyhB,EAAI6oB,EACb3E,EAAG3lC,EAAM2lC,EAAI+5E,GAjHfwD,EAAU7jG,OAAOokG,EAAOj5H,UAAW,CAClC8lF,OAAQ,WACP,IAAI5mF,EAAIwF,KAAKy0H,MACb,MAAO,CACNliG,EAAG/3B,EAAE+3B,EAAI/3B,EAAEg8C,EAAI,EACfC,EAAGj8C,EAAEi8C,EAAIj8C,EAAE87C,EAAI,IAIjByf,OAAQ,SAASqrB,EAAQnzB,EAAMw2B,GAC9BzkF,KAAKw0H,UAAY/vC,EACjBzkF,KAAKy0H,MAAQ,CACZliG,EAAG07B,EAAK17B,EAAI6uD,EAAO7uD,EACnBkkB,EAAGwX,EAAKxX,EAAI2qC,EAAO3qC,EACnBD,EAAGyX,EAAKzX,EACRF,EAAG2X,EAAK3X,IAIV8Q,SAAU,SAASt2C,GAClB,IAEIm9C,EAFKjuD,KAEKy0H,MAId,SAFA3jH,EAAQmjH,EAAQnjH,EAJP9Q,KAIiBohF,UAJjBphF,KAI+Bw0H,YAEzBjiG,EAAI07B,EAAK17B,EALX,GAMTzhB,EAAM2lC,EAAIwX,EAAKxX,EANN,GAOT3lC,EAAMyhB,EAAI07B,EAAK17B,EAAI07B,EAAKzX,EAAIrH,GAC5Br+B,EAAM2lC,EAAIwX,EAAKxX,EAAIwX,EAAK3X,EAAInH,IAKjCylF,WAAY,SAASC,GACpB,IAMIn7H,EAAGo7H,EAAKC,EANR3D,EAAKpxH,KAAKg1H,UACV3D,EAAKwD,EAAMG,UACXC,EAAO,CACVX,EAAOlD,EAAG,GAAIA,EAAG,IACjBkD,EAAOlD,EAAG,GAAIA,EAAG,KAalB,IATIpxH,KAAKw0H,YAAcK,EAAML,WAG5BS,EAAK/1H,KACJo1H,EAAOjD,EAAG,GAAIA,EAAG,IACjBiD,EAAOjD,EAAG,GAAIA,EAAG,KAId33H,EAAI,EAAGA,EAAIu7H,EAAK/yH,SAAUxI,EAI9B,GAHAo7H,EAAMV,EAAUhD,EAAI6D,EAAKv7H,IACzBq7H,EAAMX,EAAU/C,EAAI4D,EAAKv7H,IAErBo7H,EAAI1uH,IAAM2uH,EAAIh2H,KAAOg2H,EAAI3uH,IAAM0uH,EAAI/1H,IACtC,OAAO,EAIT,OAAO,GAMRi2H,QAAS,WACR,IACI/mE,EADKjuD,KACKy0H,MACVnoC,EAFKtsF,KAEMw0H,UACXpzC,EAHKphF,KAGOohF,SAEhB,MAAO,CACN6yC,EAAQ,CAAC1hG,EAAG07B,EAAK17B,EAAGkkB,EAAGwX,EAAKxX,GAAI2qC,EAAQkL,GACxC2nC,EAAQ,CAAC1hG,EAAG07B,EAAK17B,EAAI07B,EAAKzX,EAAGC,EAAGwX,EAAKxX,GAAI2qC,EAAQkL,GACjD2nC,EAAQ,CAAC1hG,EAAG07B,EAAK17B,EAAI07B,EAAKzX,EAAGC,EAAGwX,EAAKxX,EAAIwX,EAAK3X,GAAI8qC,EAAQkL,GAC1D2nC,EAAQ,CAAC1hG,EAAG07B,EAAK17B,EAAGkkB,EAAGwX,EAAKxX,EAAIwX,EAAK3X,GAAI8qC,EAAQkL,OA0FpD,IAAIwT,EAAS,CACZo1B,QAAS,SAAS/2C,GACjB,IACIzkF,EAAG2b,EAAG4pE,EAAMuf,EAAMh1E,EADlB9B,EAAS,GAGb,IAAKhuB,EAAI,EAAGulF,EAAOd,EAASj8E,OAAQxI,EAAIulF,IAAQvlF,EAC/C,IAAK2b,EAAI,EAAGmpF,EAAOrgB,EAASzkF,GAAGwI,OAAQmT,EAAImpF,IAAQnpF,EAClDmU,EAAQ20D,EAASzkF,GAAG2b,GACpBqS,EAAOxoB,KAAKsqB,GACZA,EAAM2rG,QAAU,CACfC,KAAM,IAAIb,EACVc,UAAU,EACVC,UAAU,EACVh4C,KAAM5jF,EACN67H,KAAMlgH,GAmBT,OAXAqS,EAAO6J,MAAK,SAAStzB,EAAGiL,GACvB,IAAIssH,EAAKv3H,EAAEk3H,QACPM,EAAKvsH,EAAEisH,QAEX,OAAOK,EAAGD,OAASE,EAAGF,KACnBE,EAAGn4C,KAAOk4C,EAAGl4C,KACbm4C,EAAGF,KAAOC,EAAGD,QAGjBv1H,KAAK+1D,OAAOruC,GAELA,GAGRquC,OAAQ,SAASruC,GAChB,IACIhuB,EAAGulF,EAAMz1D,EAAO+2D,EAAO18E,EADvB6xH,GAAQ,EAGZ,IAAKh8H,EAAI,EAAGulF,EAAOv3D,EAAOxlB,OAAQxI,EAAIulF,IAAQvlF,EAE7C6mF,GADA/2D,EAAQ9B,EAAOhuB,IACD6mF,SACd18E,EAAQ2lB,EAAM2rG,SACRE,SAAW90C,GAA2B,SAAlBA,EAAMj7E,QAChCzB,EAAMyxH,SAAW9rG,EAAMgF,UACvBknG,GAAS7xH,EAAMwxH,SAGZK,GA7EN,SAAmBhuG,GAClB,IAAIhuB,EAAGulF,EAAMz1D,EAAO3lB,EAAO0vH,EAAUnyC,EAGrC,IAAK1nF,EAAI,EAAGulF,EAAOv3D,EAAOxlB,OAAQxI,EAAIulF,IAAQvlF,GAE7CmK,GADA2lB,EAAQ9B,EAAOhuB,IACDy7H,SAEJG,WACT/B,EAAW/pG,EAAM+pG,WACjBnyC,EAASszC,EAAYlrG,EAAMmpG,IAAI1yC,OAAQz2D,EAAM+2D,QAASgzC,GACtD1vH,EAAMuxH,KAAKr/D,OAAOqrB,EAAQmyC,EAAU/pG,EAAMi7D,cAjC7C,SAAiB/8D,EAAQiuG,GACxB,IAAIj8H,EAAG2b,EAAGugH,EAAIC,EAMd,IAAKn8H,EAAIguB,EAAOxlB,OAAS,EAAGxI,GAAK,IAAKA,EAGrC,IAFAk8H,EAAKluG,EAAOhuB,GAAGy7H,QAEV9/G,EAAI3b,EAAI,EAAG2b,GAAK,GAAKugH,EAAGN,WAAYjgH,GACxCwgH,EAAKnuG,EAAOrS,GAAG8/G,SAERG,UAAYM,EAAGR,KAAKR,WAAWiB,EAAGT,OACxCO,EAASC,EAAIC,GAwBTC,CAAQpuG,GAAQ,SAASkuG,EAAIC,GACnC,IAAIE,EAAKH,EAAGP,SACRW,EAAKH,EAAGR,SAEPU,GAAMC,GAAOA,EACjBH,EAAGP,UAAW,EACJS,IACVH,EAAGN,UAAW,MAuDdW,CAAUvuG,IAIZkkG,OAAQ,SAASlkG,EAAQ5W,GACxB,IAAIpX,EAAGmK,EAKP,IAAKnK,EAAIguB,EAAOxlB,OAAS,EAAGxI,GAAK,IAAKA,EAGrC,IAFAmK,EAAQ6jB,EAAOhuB,GAAGy7H,UAELtxH,EAAMyxH,UAAYzxH,EAAMuxH,KAAKhuE,SAASt2C,GAClD,OAAO4W,EAAOhuB,GAIhB,OAAO,MAGR4pF,KAAM,SAAShE,EAAO53D,GACrB,IAAIhuB,EAAGulF,EAAMz1D,EAAO3lB,EAAO0vH,EAAUnyC,EAErC,IAAK1nF,EAAI,EAAGulF,EAAOv3D,EAAOxlB,OAAQxI,EAAIulF,IAAQvlF,GAE7CmK,GADA2lB,EAAQ9B,EAAOhuB,IACDy7H,SAEJG,WACT/B,EAAW/pG,EAAM+pG,WACjBnyC,EAASszC,EAAYlrG,EAAMmpG,IAAIj8B,MAAOltE,EAAM+2D,QAASgzC,GACrD1vH,EAAMuxH,KAAKr/D,OAAOqrB,EAAQmyC,EAAU/pG,EAAMi7D,YAC1Cj7D,EAAM85D,KAAKhE,EAAO8B,MAMlB80C,EAAY3tD,EAAM0S,QA+BlB55C,EAAW,CACdowF,MAAO,SACPR,OAAQ,SACR3vG,gBAAiB,KACjB4tB,YAAa,KACbD,aAAc,EACdmxC,YAAa,EACb+wC,OAAO,EACPh1E,MAAM,EACNlY,WAAOtmC,EACP2H,SAAS,EACTg4F,KAAM,CACL8G,YAAQzmG,EACR0jB,WAAY,IACZ1O,UAAMhV,EACN0H,WAAO1H,EACP0vE,OAAQ,MAET4hD,UA/Ce,SAASt0H,GACxB,GAAIu7H,EAAUh0C,cAAcvnF,GAC3B,OAAO,KAGR,IACIgI,EAAMs2G,EAAMhnG,EADZuX,EAAQ7uB,EAEZ,GAAIu7H,EAAUh4H,SAASvD,GACtB,GAAKu7H,EAAUh0C,cAAcvnF,EAAM6uB,OAE5B,GAAK0sG,EAAUh0C,cAAcvnF,EAAMH,GAKzC,IAFAgvB,EAAQ,GAEHvX,EAAI,EAAGgnG,GADZt2G,EAAOvI,OAAOuI,KAAKhI,IACKuH,OAAQ+P,EAAIgnG,IAAQhnG,EAC3CuX,IAAgB,IAANvX,EAAU,KAAO,IAAMtP,EAAKsP,GAAK,KAAOtX,EAAMgI,EAAKsP,SAL9DuX,EAAQ7uB,EAAMH,OAFdgvB,EAAQ7uB,EAAM6uB,MAYhB,MAAO,GAAKA,GA2BZ9B,YAAQ/pB,EACRq2F,UAAW,GACXh+D,OAAQ,EACRtS,QAAS,EACTvC,QAAS,CACRqC,IAAK,EACLkN,MAAO,EACPk/B,OAAQ,EACRnsC,KAAM,GAEPghE,SAAU,EACVumB,UAAW,QACXgoB,qBAAiBr1H,EACjBs1H,gBAAiB,EACjBH,eAAgB,EAChBC,qBAAiBp1H,GAOdw4H,EAAY5tD,EAAM0S,QAClBo/B,EAAc,cACd+b,EAAc,WAoDlB,SAASrmG,EAAcuvD,EAAO0U,EAAWxqE,GACxC,GAAKwqE,EAAL,CAIA,IAEIxnD,EAFAg1B,EAAUh4C,EAAM6sG,SAChB9gH,EAASiU,EAAM8sG,QAGdtiC,EAAUz+E,EAAO+nE,QAItB9wC,EAAWwnD,EAAUz+E,EAAO+nE,MAAM/nE,EAAOghH,SAKO,IAA5CJ,EAAU3pF,SAASA,EAAU,CAACg1B,MAKjC8d,EAAM+6B,GAAamc,QAAS,EAC5BhtG,EAAMusC,OAAOyL,KA2Bf,SAASi1D,EAAiBn3C,EAAOxnD,GAChC,IAEIwzD,EAAU9hE,EAFV+rB,EAAU+pC,EAAM+6B,GAChBrmB,EAAYz+C,EAAQ0+C,WAGxB,GAAKD,EAAU7rE,OAAU6rE,EAAU0iC,MAAnC,CAIA,GAAmB,cAAf5+F,EAAMh0B,KACT0lB,EAAQs2E,EAAO8rB,OAAOr2E,EAAQohF,QAAS7+F,QACjC,GAAmB,aAAfA,EAAMh0B,KAChB,OAGDwnF,EAAW/1C,EAAQqhF,SACnBrhF,EAAQqhF,SAAWptG,EAvCpB,SAA4B81D,EAAO0U,EAAW1I,EAAU9hE,GACvD,IAAIrB,EAAOuuG,GAENprC,GAAa9hE,KAIb8hE,EAEO9hE,EAED8hE,IAAa9hE,IACvBktG,EAAQvuG,GAAQ,GAFhBuuG,GAAQ,EAFRvuG,GAAQ,EAOLuuG,GACH3mG,EAAcuvD,EAAO0U,EAAU0iC,MAAOprC,GAEnCnjE,GACH4H,EAAcuvD,EAAO0U,EAAU7rE,MAAOqB,IAqBvCqtG,CAAmBv3C,EAAO0U,EAAW1I,EAAU9hE,IAiChD++C,EAAMlnC,SAASrlC,OAAOu/E,QAAQu7C,WAAaz1F,EAE3C,IAAIgiE,EAAS,CACZzgG,GAAI,aAEJm/G,WAAY,SAASziC,GACpBA,EAAM+6B,GAAe,CACpB0c,SAAU,KAIZtxB,aAAc,SAASnmB,GACtB,IAAI/pC,EAAU+pC,EAAM+6B,GACpB9kE,EAAQyhF,WAAY,EACpBzhF,EAAQ0+C,WAAa,GACrB1+C,EAAQ0hF,UAAY,GACpB1hF,EAAQohF,QAAU,IAGnBO,mBAAoB,SAAS53C,EAAOlvE,EAAMrT,GACzC,IAQIrD,EAAG2b,EAAG4pE,EAAMuf,EAAMyzB,EAAKh3H,EAAKuL,EAAIgjB,EARhC40D,EAAehuE,EAAKjO,MACpBozC,EAAU+pC,EAAM+6B,GAChB3yF,EAAS6tB,EAAQ0hF,UAAU74C,GAAgB,GAC3C5vD,EAAU8wD,EAAMsC,iBAAiBxD,GACjCmB,EAAUD,EAAMv3E,KAAKo2E,SAASC,GAC9B5B,EAhLN,SAAmB+C,EAASxiF,GAC3B,IACIi3F,EAEAtsE,EAAQ/kB,EAHRq3D,EAAWulB,EAAQu3C,WAEnBK,EAAU,GAGd,OAAiB,IAAbn9D,EACI,OAES,IAAbA,IACHA,EAAW,IAGZj9D,EAAUo5H,EAAUvgC,MAAM,GAAI,CAAC74F,EAASi9D,IACxCtyC,EAAS3qB,EAAQ2qB,QAAU,GAC3B/kB,EAAOvI,OAAOuI,KAAK+kB,UACZ3qB,EAAQ2qB,OAEX/kB,EAAKT,OACRS,EAAKP,SAAQ,SAASnH,GACjBysB,EAAOzsB,IACVk8H,EAAQj4H,KAAKi3H,EAAUvgC,MAAM,GAAI,CAChC74F,EACA2qB,EAAOzsB,GACP,CAACs7H,KAAMt7H,SAMVk8H,EAAQj4H,KAAKnC,GAIdi3F,EAAYmjC,EAAQxkF,QAAO,SAAS11C,EAAQu/E,GAO3C,OANA25C,EAAUnzG,KAAKw5D,EAAOwX,WAAa,IAAI,SAASrzF,EAAIm3B,GACnD76B,EAAO66B,GAAS76B,EAAO66B,IAAU,GACjC76B,EAAO66B,GAAO0kD,EAAO+5C,MAAQH,GAAez1H,YAGtC67E,EAAOwX,UACP/2F,IACL,IAEI,CACNyqB,OAAQyvG,EACRnjC,UAAWA,IAkIEwM,CAAUjhB,EAASxiF,GAC5B4jD,EAAWvwC,EAAKuuE,KAAK52E,MAAQ,GAC7By7E,EAAMlE,EAAMkE,IAKhB,IAFAA,EAAImoB,OAECjyG,EAAI,EAAGulF,EAAOt+B,EAASz+C,OAAQxI,EAAIulF,IAAQvlF,EAI/C,IAHA8M,EAAKm6C,EAASjnD,IACX2gH,GAAe,GAEd7rF,GAAWhoB,IAAOA,EAAG06C,SAAW16C,EAAGy5E,OAAO0E,KAC7C,IAAKtvE,EAAI,EAAGmpF,EAAOhiB,EAAO90D,OAAOxlB,OAAQmT,EAAImpF,IAAQnpF,EAEpDpa,GADAg3H,EAAMz1C,EAAO90D,OAAOrS,IACVkhH,MAEV/sG,EAAQ,IAAI+oG,EAAMN,EAAKzuC,EAAKh9E,EAAI9M,IAC1B48H,QAAU,CACfh5C,KAAMc,EACNm4C,KAAMt7H,GAAOm7H,GAEd5sG,EAAM6sG,SAAW,CAChBxwG,QAAQ,EACRy5D,MAAOA,EACP8F,UAAW1rF,EACX6lF,QAASA,EACTnB,aAAcA,GAGf50D,EAAMusC,OAAOvsC,EAAM6sG,UACnB7vH,EAAG6zG,GAAan7G,KAAKsqB,GACrB9B,EAAOxoB,KAAKsqB,GAKfg6D,EAAI0oB,UAIJiqB,EAAUvgC,MAAMrgD,EAAQ0+C,WAAYzX,EAAOwX,UAAW,CACrDmE,OAAQ,SAASrgE,EAAO76B,EAAQD,GAC/BC,EAAO66B,GAAS76B,EAAO66B,IAAU,GACjC76B,EAAO66B,GAAO1nB,EAAKjO,OAASnF,EAAO86B,GACnCyd,EAAQyhF,WAAY,MAKvBjwB,YAAa,SAASznB,EAAOviF,GAC5BuiF,EAAM+6B,GAAasc,QAAU72B,EAAOo1B,QACnC51C,EAAM+6B,GAAa4c,UACnBl6H,IAMFq6H,kBAAmB,SAAS93C,GAC3BwgB,EAAOxc,KAAKhE,EAAOA,EAAM+6B,GAAasc,UAGvCU,YAAa,SAAS/3C,EAAOxnD,GAI5B,GAAIwnD,EAAM+6B,GAAa2c,UACtB,OAAQl/F,EAAMh0B,MACd,IAAK,YACL,IAAK,WACJ2yH,EAAiBn3C,EAAOxnD,GACxB,MACD,IAAK,SA/HR,SAA2BwnD,EAAOxnD,GACjC,IAAIyd,EAAU+pC,EAAM+6B,GAChB1uD,EAAWpW,EAAQ0+C,WAAWn6B,MAC9BtwC,EAAQmiC,GAAYm0C,EAAO8rB,OAAOr2E,EAAQohF,QAAS7+F,GACnDtO,GACHuG,EAAcuvD,EAAO3zB,EAAUniC,GA2H7B8tG,CAAkBh4C,EAAOxnD,KAO5BkqF,WAAY,SAAS1iC,GACpB,IAII5lF,EAAGulF,EAAM5pE,EAAGmpF,EAAMzoC,EAAQvsC,EAAO9B,EAJjC6tB,EAAU+pC,EAAM+6B,GAChB/uB,EAAW/1C,EAAQwhF,SACnBQ,EAAUhiF,EAAQwhF,SAAWz3C,EAAM+S,YAAc,GACjD89B,EAAUN,EAAMK,UAAU5kC,EAAUisC,GAGxC,IAAK79H,EAAI,EAAGulF,EAAOkxC,EAAQjuH,OAAQxI,EAAIulF,IAAQvlF,EAE9C,IADAq8D,EAASo6D,EAAQz2H,IACN,GAEV,IAAK2b,EAAI,EAAGmpF,GADZ92E,EAASquC,EAAO,GAAGskD,IAAgB,IACTn4G,OAAQmT,EAAImpF,IAAQnpF,GAC7CmU,EAAQ9B,EAAOrS,IACTghH,SAASxwG,OAAwB,IAAdkwC,EAAO,GAChCvsC,EAAMusC,OAAOvsC,EAAM6sG,WAKlB9gF,EAAQihF,QAAUrG,EAAQjuH,UAC7B49F,EAAO/pC,OAAOxgB,EAAQohF,SAjJzB,SAAoBr3C,GACnB,IAAIA,EAAMoP,UAAV,CAOA,IADA,IAAIL,EAAa9lB,EAAM4S,iBAAiBkT,WAC/B30F,EAAI,EAAGulF,EAAOoP,EAAWnsF,OAAQxI,EAAIulF,IAAQvlF,EACrD,GAAI20F,EAAW30F,GAAG4lF,QAAUA,EAC3B,OAOFA,EAAMv2D,OAAO,CAACoT,SAAU,EAAGsyD,MAAM,KAiI/B+oC,CAAWl4C,WAGL/pC,EAAQihF,SAOjB,OADAjuD,EAAMgT,QAAQ+nB,WAAWD,GAClBA,GA91CY,YAAnB,oBAAO7pG,QAAP,cAAOA,gBAA0C,IAAXC,EAAyBA,EAAOD,QAAU8rD,EAAQ+U,EAAQ,MAC9E,mBAAXhZ,QAAyBA,MAAaA,OAAO,CAAC,YAAaiE,IACjEtpD,EAASA,GAAUD,MAAa07H,gBAAkBnyE,EAAQtpD,EAAOusE,S,kDCRlE,IAAInhE,EAAI,EAAQ,GACZswH,EAAa,EAAQ,KAKzBtwH,EAAE,CAAEnK,OAAQ,SAAUuK,OAAO,EAAM9J,OAJN,EAAQ,IAIMi6H,CAAuB,WAAa,CAC7E1G,OAAQ,SAAgBh3H,GACtB,OAAOy9H,EAAW13H,KAAM,IAAK,OAAQ/F,O,gBCTzC,IAAI4E,EAAyB,EAAQ,IAEjC+4H,EAAO,KAIXn+H,EAAOD,QAAU,SAAU2O,EAAQ6G,EAAKw2D,EAAW7qE,GACjD,IAAI8X,EAAIrU,OAAOS,EAAuBsJ,IAClCk3G,EAAK,IAAMrwG,EAEf,MADkB,KAAdw2D,IAAkB65C,GAAM,IAAM75C,EAAY,KAAOpnE,OAAOzD,GAAOyN,QAAQwvH,EAAM,UAAY,KACtFvY,EAAK,IAAM5sG,EAAI,KAAOzD,EAAM,M,gBCVrC,IAAIhR,EAAQ,EAAQ,GAIpBvE,EAAOD,QAAU,SAAU8O,GACzB,OAAOtK,GAAM,WACX,IAAIiL,EAAO,GAAGX,GAAa,KAC3B,OAAOW,IAASA,EAAKZ,eAAiBY,EAAKrJ,MAAM,KAAKsC,OAAS,O,cCPnEzI,EAAOD,QAAU8lF,O;;;yCCGf,SAAUrhF,EAAGiL,GACX,mBAAqBm4C,QAAUA,MAAaA,OAAOn4C,GAAK,+BAAmB1P,QAAnB,cAAmBA,UAAUC,EAAOD,QAAU0P,IAAMpN,OAAO+7H,WAAa3uH,IADlI,CAEA,GAAM,WA+iCJ,OA7iCQ,SAAUjL,EAAGiL,EAAGnP,EAAGC,GACvB,IAAIgP,EAAI,CACJ8uH,SAAU,KACV58H,KAAM,SAAU+C,EAAGiL,EAAGnP,EAAGC,GACrB,IAAIgP,GAAKhP,EAAI,SAAW,OAAS,gBACjCkP,EAAIA,EAAEtJ,MAAM,KACZ,IAAK,IAAInD,EAAI,EAAGA,EAAIyM,EAAEhH,OAAQzF,IAAKyM,EAAEzM,IAAMwB,EAAE+K,GAAGE,EAAEzM,GAAI1C,GAAG,IAE7DoK,QAAS,SAAUlG,GACf,OAAOA,aAAaiG,OAExB6zH,SAAU,SAAU95H,EAAGiL,GACnB,IAAInP,EAAI2L,SAASf,cAAcuE,GAAK,OACpC,OAAOjL,IAAMlE,EAAEgkD,UAAY9/C,GAAIlE,GAEnCi+H,WAAY,WACR,IAAI/5H,EAAInC,OAAOoiC,YACf,YAAO,IAAWjgC,EAAIA,EAAIyH,SAASu4B,gBAAgB3P,WAEvDye,OAAQ,SAAU9uC,EAAGiL,EAAGnP,GACpBiP,EAAE9N,KAAK+C,EAAGiL,EAAGnP,GAAG,IAEpBglB,YAAa,SAAU9gB,EAAGiL,GACtB,IAAInP,EAAI,IAAIuS,OAAO,UAAYpD,EAAI,WACnCjL,EAAE8/C,UAAY9/C,EAAE8/C,UAAU31C,QAAQrO,EAAG,KAAKqO,QAAQ,SAAU,IAAIA,QAAQ,SAAU,KAEtFsZ,SAAU,SAAUzjB,EAAGiL,GACnBF,EAAEkW,SAASjhB,EAAGiL,KAAOjL,EAAE8/C,YAAc9/C,EAAE8/C,UAAY,IAAM,IAAM70C,IAEnEgW,SAAU,SAAUjhB,EAAGiL,GACnB,OAAOjL,EAAE8/C,WAAa,IAAIzxC,OAAO,UAAYpD,EAAI,WAAWD,KAAKhL,EAAE8/C,YAEvEk6E,gBAAiB,SAAUh6H,EAAGiL,GAC1B,IAAK,IAAInP,EAAIkE,EAAEm+G,WAAYriH,GAAI,CAC3B,GAAIiP,EAAEkW,SAASnlB,EAAGmP,GAAI,OAAOnP,EAC7BA,EAAIA,EAAEm+H,cAGdC,YAAa,SAAUl6H,EAAGiL,EAAGnP,GACzB,IAAK,IAAIC,EAAIiE,EAAEiE,OAAQlI,KACnB,GAAIiE,EAAEjE,GAAGD,KAAOmP,EAAG,OAAOlP,EAC9B,OAAQ,GAEZm2B,OAAQ,SAAUlyB,EAAGiL,EAAGnP,GACpB,IAAK,IAAIC,KAAKkP,EACV,GAAIA,EAAE3N,eAAevB,GAAI,CACrB,GAAID,GAAKkE,EAAE1C,eAAevB,GAAI,SAC9BiE,EAAEjE,GAAKkP,EAAElP,KAGrB2lC,OAAQ,CACJy4F,KAAM,CACFhN,IAAK,SAAUntH,GACX,OAAOtC,KAAKq4C,IAAI/1C,GAAKtC,KAAKm4C,GAAK,KAEnCukF,MAAO,SAAUp6H,GACb,QAAStC,KAAKk4C,IAAIl4C,KAAKm4C,GAAK71C,GAAK,GAAK,IAG9Cq6H,MAAO,CACHlN,IAAK,SAAUntH,GACX,QAASA,EAAIA,EAAIA,EAAI,KAIjCs6H,eAAgB,WACZ,GAAIvvH,EAAE8uH,SAAU,OAAO9uH,EAAE8uH,SACzB,IACI5uH,EADIF,EAAE+uH,WACA1yH,MACNtL,EAAI,GACJC,EAAI,GACR,GAAIA,EAAEw+H,MAAQ9yH,SAAS+yH,MAAQ/yH,SAASqyB,iBAAkB/9B,EAAEkvC,MAAQ,iBAAkBptC,OAAQA,OAAOmlD,wBAA0BjnD,EAAE0+H,IAAM58H,OAAOmlD,sBAAuBjnD,EAAE2+H,IAAM78H,OAAO88H,sBAAuB5+H,EAAE6+H,aAAejwG,UAAUkwG,gBAAkBlwG,UAAUmwG,kBAAmB/+H,EAAE6+H,aAAc,CACjS,IAAIp8H,EAAImsB,UAAUC,UAClB,GAAI,cAAc5f,KAAK2f,UAAU0yD,UAAW,CACxC,IAAIvyE,EAAI6f,UAAUowG,WAAWlsH,MAAM,0BACnC/D,GAAKA,EAAE7G,OAAS,KAAM6G,EAAI8U,SAAS9U,EAAE,GAAI,MAAU,GAAK,EAAIA,IAAM/O,EAAEi/H,eAAgB,IAExF,IAAI3iF,EAAI75C,EAAEqQ,MAAM,uBACZpT,EAAI48C,EAAIA,EAAE,GAAK,GACnB58C,EAAI6kB,WAAW7kB,KAAS,IAAM,IAAMA,IAAMM,EAAEk/H,cAAe,GAAKl/H,EAAEm/H,eAAiBz/H,GAAIM,EAAEo/H,cAAgB,yBAAyBnwH,KAAKxM,GAE3I,IAAK,IAAI4Y,EAAGpD,EAAGtY,EAAI,CAAC,YAAa,cAAe,iBAAkBG,EAAI,CAAC,GAAI,SAAU,MAAO,KAAM,KAAMqB,EAAI,EAAG,EAAIA,EAAGA,IAAK,CACvHpB,EAAID,EAAEqB,GACN,IAAK,IAAIhB,EAAI,EAAG,EAAIA,EAAGA,IAAKkb,EAAI1b,EAAEQ,GAAI8X,EAAIlY,GAAKA,EAAIsb,EAAExE,OAAO,GAAG2sC,cAAgBnoC,EAAEhV,MAAM,GAAKgV,IAAKrb,EAAEqb,IAAMpD,KAAK/I,IAAMlP,EAAEqb,GAAKpD,GAC3HlY,IAAMC,EAAE0+H,MAAQ3+H,EAAIA,EAAEsO,cAAerO,EAAE0+H,IAAM58H,OAAO/B,EAAI,yBAA0BC,EAAE0+H,MAAQ1+H,EAAE2+H,IAAM78H,OAAO/B,EAAI,yBAA2B+B,OAAO/B,EAAI,iCAEzJ,IAAKC,EAAE0+H,IAAK,CACR,IAAIl9H,EAAI,EACRxB,EAAE0+H,IAAM,SAAUz6H,GACd,IAAIiL,GAAK,IAAIuK,MAAME,UACf5Z,EAAI4B,KAAKyK,IAAI,EAAG,IAAM8C,EAAI1N,IAC1BxB,EAAI8B,OAAOo8B,YAAW,WAClBj6B,EAAEiL,EAAInP,KACPA,GACP,OAAOyB,EAAI0N,EAAInP,EAAGC,GACnBA,EAAE2+H,IAAM,SAAU16H,GACjB4iD,aAAa5iD,IAGrB,OAAOjE,EAAEq/H,MAAQ3zH,SAAS+5C,mBAAqB/5C,SAAS+5C,gBAAgB,6BAA8B,OAAO65E,cAAetwH,EAAE8uH,SAAW99H,EAAGA,IAGpJgP,EAAEuvH,iBAAkBvvH,EAAE8uH,SAASU,QAAUxvH,EAAE9N,KAAO,SAAU+C,EAAGiL,EAAGnP,EAAGC,GACjEkP,EAAIA,EAAEtJ,MAAM,KACZ,IAAK,IAAIoJ,EAAGvM,GAAKzC,EAAI,SAAW,UAAY,QAAS+O,EAAI,WACjDhP,EAAEw6F,YAAY16F,KAAKE,IACpBu8C,EAAI,EAAGA,EAAIptC,EAAEhH,OAAQo0C,IACxB,GAAIttC,EAAIE,EAAEotC,GACN,GAAI,UAAY,EAAOv8C,IAAKA,EAAEw6F,YAAa,CACvC,GAAIv6F,GACA,IAAKD,EAAE,QAAUiP,GAAI,OAAO,OACzBjP,EAAE,QAAUiP,GAAKD,EACxB9K,EAAExB,GAAG,KAAOuM,EAAGjP,EAAE,QAAUiP,SACxB/K,EAAExB,GAAG,KAAOuM,EAAGjP,KAElC,IAAI0C,EAAIuD,KAGJtG,EAAI,CACA6/H,gBAAgB,EAChB9T,QAAS,IACT+T,UAAW,EACXC,WAAW,EACXnhF,MAAM,EACNohF,cAAc,EACdC,eAAe,EACfC,qBAAqB,EACrBC,kBAAmB,IACnBC,sBAAuB,IACvBC,sBAAuB,IACvBC,iBAAiB,EACjBttG,OAAO,EACPutG,QAAQ,EACRC,WAAW,EACXC,sBAAuB,IACvBC,eAAgB,IAChBC,mBAAoB,SAAUp8H,GAC1B,MAAO,MAAQA,EAAE4/C,SAErBy8E,iBAAkB,SAAUr8H,EAAGiL,GAC3B,OAAOjL,EAAI,EAAIiL,EAAEqxH,iBAAmB,GAAK,EAAI,MAEjDC,cAAe,KACfC,OAAO,EACPC,UAAW,OAEnB1xH,EAAEmnB,OAAOz2B,EAAGM,GACZ,IAAIqb,EAAGpD,EAAGtY,EAAGG,EAAGqB,EAAGhB,EAAGqB,EAAG0gB,EAAG1hB,EAAGiB,EAAGb,EAAG46C,EAAGe,EAAGC,EAAGjkB,EAAGkkB,EAAGt6B,EAAG/J,EAAG8tC,EAAGh5C,EAAGo5C,EAAGnuC,EAAGpM,EAAGq6C,EAAG7I,EAAG0I,EAAG06E,EAAGC,EAAGhjF,EAAGoI,EAAGvI,EAAGh5C,EAAGC,EAAG6hD,EAAGpoC,EAAG1F,EAAGmkC,EAAGikF,EAAG/zH,EAAGq5C,EAAG26E,EAAGz6E,EAAG06E,EAAG3zH,EAAG6b,EAAO+3G,EAAIC,GAAIC,GAAIC,GAAIlgC,GAAImgC,GAAIC,GAAIC,GAAIC,GAAIC,GAM/KC,GALW,CACHlpG,EAAG,EACHkkB,EAAG,GAIXilF,GANW,CACHnpG,EAAG,EACHkkB,EAAG,GAKXklF,GAPW,CACHppG,EAAG,EACHkkB,EAAG,GAMXmlF,GAAK,GACLC,GAAK,EACLC,GAAK,GACLtG,GAXW,CACHjjG,EAAG,EACHkkB,EAAG,GAUXslF,GAAK,EACLC,IAAK,EACLC,GAAK,GACLC,GAAK,GACLC,IAAK,EACLC,GAAK,SAAUn+H,EAAGiL,GACdF,EAAEmnB,OAAO1zB,EAAGyM,EAAEmzH,eAAgBJ,GAAG/8H,KAAKjB,IAE1Cq+H,GAAK,SAAUr+H,GACX,IAAIiL,EAAIqzH,KACR,OAAOt+H,EAAIiL,EAAI,EAAIjL,EAAIiL,EAAI,EAAIjL,EAAIiL,EAAIjL,EAAIA,GAE/Cu+H,GAAK,GACLC,GAAK,SAAUx+H,EAAGiL,GACd,OAAOszH,GAAGv+H,KAAOu+H,GAAGv+H,GAAK,IAAKu+H,GAAGv+H,GAAGiB,KAAKgK,IAE7CwzH,GAAK,SAAUz+H,GACX,IAAIiL,EAAIszH,GAAGv+H,GACX,GAAIiL,EAAG,CACH,IAAInP,EAAImK,MAAM5I,UAAU+E,MAAMxG,KAAK6K,WACnC3K,EAAEquB,QACF,IAAK,IAAIpuB,EAAI,EAAGA,EAAIkP,EAAEhH,OAAQlI,IAAKkP,EAAElP,GAAGmP,MAAM1M,EAAG1C,KAGzD4iI,GAAK,WACD,OAAQ,IAAIlpH,MAAME,WAEtBipH,GAAK,SAAU3+H,GACXq9H,GAAKr9H,EAAGxB,EAAEogI,GAAGx3H,MAAMqe,QAAUzlB,EAAIvE,EAAE8/H,WAEvCsD,GAAK,SAAU7+H,EAAGiL,EAAGnP,EAAGC,EAAGgP,KACrBmzH,IAAMnzH,GAAKA,IAAMvM,EAAEsgI,YAAc/iI,GAAKgP,EAAIA,EAAEg0H,SAAWvgI,EAAEsgI,SAASC,UAAW/+H,EAAEkU,GAAKqjC,EAAItsC,EAAI,OAASnP,EAAI,KAAOw8C,EAAI,UAAYv8C,EAAI,KAE1IijI,GAAK,SAAUh/H,GACXi9H,KAAOj9H,IAAMxC,EAAIgB,EAAEsgI,SAASC,SAAWb,KAAOe,GAAGzgI,EAAEsgI,UAAU,GAAI,GAAKZ,IAAK,GAAMA,KAAOe,GAAGzgI,EAAEsgI,UAAWZ,IAAK,IAAMW,GAAG5B,GAAIS,GAAGppG,EAAGopG,GAAGllF,EAAGh7C,KAE1I0hI,GAAK,SAAUl/H,GACXA,EAAEogD,WAAay+E,GAAG7+H,EAAEogD,UAAUh5C,MAAOpH,EAAEm/H,gBAAgB7qG,EAAGt0B,EAAEm/H,gBAAgB3mF,EAAGx4C,EAAEs8H,iBAAkBt8H,IAEvGo/H,GAAK,SAAUp/H,EAAGiL,GACdA,EAAEiJ,GAAKqjC,EAAIv3C,EAAI,UAAYs4C,GAE/B+mF,GAAK,SAAUr/H,EAAGiL,GACd,IAAKxP,EAAE4+C,MAAQpvC,EAAG,CACd,IAAInP,EAAID,GAAK07H,GAAGjjG,EAAIspG,GAAK59H,GAAKu3H,GAAGjjG,EAC7Bv4B,EAAI2B,KAAKyiC,MAAMngC,EAAIw3H,GAAGljG,IACzB,EAAIx4B,GAAKC,EAAI,GAAKD,GAAKwiI,KAAO,GAAK,EAAIviI,KAAOiE,EAAIw3H,GAAGljG,EAAIv4B,EAAIN,EAAEygI,uBAEpE1E,GAAGljG,EAAIt0B,EAAGo/H,GAAGp/H,EAAG9C,IAEpBoiI,GAAK,SAAUt/H,EAAGiL,GACd,IAAInP,EAAIyjI,GAAGv/H,GAAK69H,GAAG79H,GACnB,OAAOy9H,GAAGz9H,GAAKw9H,GAAGx9H,GAAKlE,EAAIA,GAAKmP,EAAItO,IAExC6iI,GAAK,SAAUx/H,EAAGiL,GACdjL,EAAEs0B,EAAIrpB,EAAEqpB,EAAGt0B,EAAEw4C,EAAIvtC,EAAEutC,EAAGvtC,EAAEtG,KAAO3E,EAAE2E,GAAKsG,EAAEtG,KAE5C86H,GAAK,SAAUz/H,GACXA,EAAEs0B,EAAI52B,KAAKyiC,MAAMngC,EAAEs0B,GAAIt0B,EAAEw4C,EAAI96C,KAAKyiC,MAAMngC,EAAEw4C,IAE9CknF,GAAK,KACLC,GAAK,SAALA,IACID,KAAO30H,EAAE+jC,OAAOrnC,SAAU,YAAak4H,GAAK50H,EAAE0Y,SAASzjB,EAAG,mBAAoBvE,EAAE+/H,WAAY,EAAIiD,GAAG,cAAeiB,GAAKzlG,YAAW,WAC9HylG,GAAK,OACN,MAQPE,GAAK,SAAU5/H,EAAGiL,GACd,IAAInP,EAAI+jI,GAAGrhI,EAAEsgI,SAAUnB,GAAI39H,GAC3B,OAAOiL,IAAM+xH,GAAKlhI,GAAIA,GAE1BgkI,GAAK,SAAU9/H,GACX,OAAOA,IAAMA,EAAIxB,EAAEsgI,UAAW9+H,EAAEs8H,kBAEpCyD,GAAK,SAAU//H,GACX,OAAOA,IAAMA,EAAIxB,EAAEsgI,UAAW9+H,EAAEu4C,EAAI,EAAI98C,EAAE8gI,cAAgB,GAE9DyD,GAAK,SAAUhgI,EAAGiL,EAAGnP,EAAGC,GACpB,OAAOA,IAAMyC,EAAEsgI,SAASxC,kBAAoBxgI,EAAEkE,GAAKxB,EAAEsgI,SAASK,gBAAgBn/H,IAAI,IAAOlE,EAAEkE,GAAKs/H,GAAGt/H,EAAGjE,GAAID,EAAEkE,GAAKiL,EAAEnK,IAAId,IAAMlE,EAAEkE,GAAKiL,EAAEnK,IAAId,IAAI,GAAMlE,EAAEkE,GAAKiL,EAAE9C,IAAInI,KAAMlE,EAAEkE,GAAKiL,EAAE9C,IAAInI,IAAI,KA0B5LigI,GAAK,SAAUjgI,GACX,IAAIiL,EAAI,GACRxP,EAAEugI,QAAU,KAAOh8H,EAAEgwB,QAAU/kB,EAAI,QAAUxP,EAAEwgI,YAAc,KAAOj8H,EAAEgwB,QAAU/kB,EAAI,OAAS,KAAOjL,EAAEgwB,UAAY/kB,EAAI,SAAUA,IAAMjL,EAAEm1D,SAAWn1D,EAAEksB,QAAUlsB,EAAEwuB,UAAYxuB,EAAE2zD,UAAY3zD,EAAEmrB,eAAiBnrB,EAAEmrB,iBAAmBnrB,EAAEkgI,aAAc,EAAI1hI,EAAEyM,QAE7Pk1H,GAAK,SAAUngI,GACXA,IAAM68H,GAAK36E,GAAKg7E,IAAM1oH,KAAOxU,EAAEmrB,iBAAkBnrB,EAAE8mB,oBAEvDs5G,GAAK,WACD5hI,EAAE6hI,gBAAgB,EAAGt1H,EAAEgvH,eAE3BuG,GAAK,GACLC,GAAK,EACLC,GAAK,SAAUxgI,GACXsgI,GAAGtgI,KAAOsgI,GAAGtgI,GAAGy6H,KAAOz4E,EAAEs+E,GAAGtgI,GAAGy6H,KAAM8F,YAAaD,GAAGtgI,KAEzDygI,GAAK,SAAUzgI,GACXsgI,GAAGtgI,IAAMwgI,GAAGxgI,GAAIsgI,GAAGtgI,KAAOugI,KAAMD,GAAGtgI,GAAK,KAE5C0gI,GAAK,WACD,IAAK,IAAI1gI,KAAKsgI,GAAIA,GAAGhjI,eAAe0C,IAAMwgI,GAAGxgI,IAEjD2gI,GAAK,SAAU3gI,EAAGiL,EAAGnP,EAAGC,EAAGgP,EAAGvM,EAAGsM,GAC7B,IAAIutC,EAAG58C,EAAIijI,KACX+B,GAAGzgI,IACK,SAAJoX,IACA,GAAIkpH,GAAGtgI,GAAI,CACP,IAAIq4C,EAAIqmF,KAAOjjI,IAAQM,EAAG,OAAOykI,GAAGxgI,GAAIxB,EAAE1C,QAASgP,GAAKA,KACxDtM,GAAG1C,EAAImP,GAAKF,EAAEstC,EAAIt8C,GAAKkP,GAAIq1H,GAAGtgI,GAAGy6H,IAAMnhF,EAAEliC,IAGjDA,IAEJwpH,GAAK,CACDC,MAAOpC,GACPqC,OAAQtC,GACRuC,aAAcpD,GACd7+H,QAASrD,EACTulI,sBAAuB,WACnB,OAAO9D,IAEX+D,aAAc,WACV,OAAOzjI,GAEX0jI,gBAAiB,WACb,OAAOrlI,GAEXslI,WAAY,WACR,OAAOvE,GAEXwE,UAAW,WACP,OAAOp8G,GAEXq7G,gBAAiB,SAAUrgI,EAAGiL,GAC1B4yH,GAAGvpG,EAAIt0B,EAAG+hD,EAAI87E,GAAGrlF,EAAIvtC,EAAGwzH,GAAG,qBAAsBZ,KAErDwD,aAAc,SAAUrhI,EAAGiL,EAAGnP,EAAGC,GAC7B2hI,GAAGppG,EAAIrpB,EAAGyyH,GAAGllF,EAAI18C,EAAG0B,EAAIwC,EAAGg/H,GAAGjjI,IAElCqgC,KAAM,WACF,IAAKhlB,IAAMpD,EAAG,CACV,IAAIlY,EACJ0C,EAAE8iI,UAAYv2H,EAAGvM,EAAE+iI,SAAWvhI,EAAGxB,EAAEogI,GAAK7zH,EAAEivH,gBAAgBh6H,EAAG,YAAa08H,EAAI18H,EAAE8/C,UAAW1oC,GAAI,EAAIoiC,EAAIzuC,EAAEuvH,iBAAkBhhF,EAAIE,EAAEihF,IAAKz4E,EAAIxI,EAAEkhF,IAAKxmH,EAAIslC,EAAEqP,UAAWlP,EAAIH,EAAE+gF,MAAO/7H,EAAEgjI,WAAaz2H,EAAEivH,gBAAgBh6H,EAAG,qBAAsBxB,EAAE4hD,UAAYr1C,EAAEivH,gBAAgBx7H,EAAEgjI,WAAY,mBAAoBtkI,EAAIsB,EAAE4hD,UAAUh5C,MAAO5I,EAAEijI,YAAcjpF,EAAI,CAAC,CACnVjwC,GAAI/J,EAAE4hD,UAAUrjC,SAAS,GACzBjM,KAAM,EACN5M,OAAQ,GACT,CACCqE,GAAI/J,EAAE4hD,UAAUrjC,SAAS,GACzBjM,KAAM,EACN5M,OAAQ,GACT,CACCqE,GAAI/J,EAAE4hD,UAAUrjC,SAAS,GACzBjM,KAAM,EACN5M,OAAQ,IACRs0C,EAAE,GAAGjwC,GAAGnB,MAAMC,QAAUmxC,EAAE,GAAGjwC,GAAGnB,MAAMC,QAAU,OAjG3D,WACD,GAAI6M,EAAG,CACH,IAAIjJ,EAAIuuC,EAAEkoF,cAAgBv/E,EAC1B,OAAO5K,EAAI,aAAetsC,EAAI,MAAQ,UAAWqtC,EAAIkB,EAAEkoF,YAAc,SAAW,KAEpFxtH,EAAI,OAAQnJ,EAAE0Y,SAASzjB,EAAG,YAAao/H,GAAK,SAAUp/H,EAAGiL,GACrDA,EAAEua,KAAOxlB,EAAI,MACdk/H,GAAK,SAAUl/H,GACd,IAAIiL,EAAIjL,EAAE++H,SAAW,EAAI,EAAI/+H,EAAE++H,SAC3BjjI,EAAIkE,EAAEogD,UAAUh5C,MAChBrL,EAAIkP,EAAIjL,EAAEu4C,EACVxtC,EAAIE,EAAIjL,EAAEq4C,EACdv8C,EAAEknB,MAAQjnB,EAAI,KAAMD,EAAEmnB,OAASlY,EAAI,KAAMjP,EAAE0pB,KAAOxlB,EAAEm/H,gBAAgB7qG,EAAI,KAAMx4B,EAAEypB,IAAMvlB,EAAEm/H,gBAAgB3mF,EAAI,MAC7GwmF,GAAK,WACJ,GAAI/B,GAAI,CACJ,IAAIj9H,EAAIi9H,GACJhyH,EAAIzM,EAAEsgI,SACNhjI,EAAImP,EAAE8zH,SAAW,EAAI,EAAI9zH,EAAE8zH,SAC3BhjI,EAAID,EAAImP,EAAEstC,EACVxtC,EAAIjP,EAAImP,EAAEotC,EACdr4C,EAAEgjB,MAAQjnB,EAAI,KAAMiE,EAAEijB,OAASlY,EAAI,KAAM/K,EAAEwlB,KAAOk4G,GAAGppG,EAAI,KAAMt0B,EAAEulB,IAAMm4G,GAAGllF,EAAI,OA6ElBmpF,GAAMplI,EAAI,CAClEw9B,OAAQv7B,EAAEojI,WACVjkG,OAAQyiG,GACR35D,QAASw5D,GACTpkE,MAAOskE,IAEX,IAAIpkI,EAAIy9C,EAAEwhF,eAAiBxhF,EAAEyhF,cAAgBzhF,EAAE2hF,cAC/C,IAAK3hF,EAAE1b,eAAiB0b,EAAEqP,YAAc9sD,IAAMN,EAAEqgI,sBAAwBrgI,EAAEogI,sBAAwB,GAAI//H,EAAI,EAAGA,EAAIkiI,GAAG/5H,OAAQnI,IAAK0C,EAAE,OAASw/H,GAAGliI,MAC/I,GAAImP,GACQzM,EAAEqjI,GAAK,IAAI52H,EAAEzM,EAAGuM,IACtBqxB,OAENqiG,GAAG,eAAgB5iI,EAAIA,GAAKJ,EAAEyI,OAAS,GAAIhC,MAAMrG,IAAM,EAAIA,GAAKA,GAAKyiI,QAAUziI,EAAI,GAAI2C,EAAEsgI,SAAWgD,GAAGjmI,IAAK29C,EAAEwhF,eAAiBxhF,EAAEyhF,gBAAkB8C,IAAK,GAAK/9H,EAAEugD,aAAa,cAAe,SAAU9kD,EAAE+gI,QAAUuB,GAAK/9H,EAAEoH,MAAMqN,SAAW,SAAWzU,EAAEoH,MAAMqN,SAAW,WAAYzU,EAAEoH,MAAMme,IAAMxa,EAAEgvH,aAAe,YAAQ,IAAWh4E,IAAM08E,GAAG,iBAAkB18E,EAAI46E,EAAI5xH,EAAEgvH,cAC1W,IAAIr+H,EAAI,cACR,IAAKD,EAAEsmI,YAAcrmI,GAAKD,EAAEsmI,UAAY,KAAMtmI,EAAEsgI,kBAAoBrgI,GAAK,0BAA2BA,GAAKymD,EAAI,cAAgB,gBAAiBzmD,GAAK89C,EAAE1b,cAAgB,uBAAyB,GAAIpiC,GAAK89C,EAAE4hF,IAAM,aAAe,GAAIrwH,EAAE0Y,SAASzjB,EAAGtE,GAAI8C,EAAEojI,aAAc1lI,GAAK,EAAG4hI,GAAK,KAAMhiI,EAAI,EA/OnS,EA+O0SA,EAAGA,IAAKsjI,IAAItjI,EAAII,GAAKq7H,GAAGjjG,EAAGkkB,EAAE18C,GAAGyM,GAAGnB,OACrUuyC,GAAK5uC,EAAE9N,KAAKuB,EAAEgjI,WAAYvjH,EAAGzf,GAAIggI,GAAG,oBAAoB,WACpDhgI,EAAEwjI,WAAWxpF,EAAE,GAAI38C,EAAI,GAAI2C,EAAEwjI,WAAWxpF,EAAE,GAAI38C,EAAI,GAAI28C,EAAE,GAAGjwC,GAAGnB,MAAMC,QAAUmxC,EAAE,GAAGjwC,GAAGnB,MAAMC,QAAU,QAAS5L,EAAEgzB,OAASzuB,EAAEyuB,QAnIxI1jB,EAAE9N,KAAKwK,SAAU,UAAWjJ,GAAIg7C,EAAEqP,WAAa99C,EAAE9N,KAAKuB,EAAEgjI,WAAY,QAAShjI,GAAI/C,EAAE+/H,WAAazwH,EAAE9N,KAAKwK,SAAU,YAAak4H,IAAK50H,EAAE9N,KAAKY,OAAQ,gBAAiBW,GAAIigI,GAAG,iBAoI9JjgI,EAAEwjI,WAAWxpF,EAAE,GAAI38C,GAAI2C,EAAEyjI,iBAAkBxD,GAAG,aAAcV,KAAOxlF,EAAIse,aAAY,WACnF0pE,IAAM3D,GAAK53G,GAAKxnB,IAAMgB,EAAEsgI,SAASxC,kBAAoB99H,EAAEojI,eACxD,MAAO72H,EAAE0Y,SAASzjB,EAAG,mBAGhC6H,MAAO,WACHuP,IAAMA,GAAI,EAAIpD,GAAI,EAAIyqH,GAAG,SAvI7B1zH,EAAE+jC,OAAOjxC,OAAQ,SAAUW,GAAIuM,EAAE+jC,OAAOjxC,OAAQ,SAAUtB,EAAEohC,QAAS5yB,EAAE+jC,OAAOrnC,SAAU,UAAWjJ,GAAIuM,EAAE+jC,OAAOrnC,SAAU,YAAak4H,IAAKnmF,EAAEqP,WAAa99C,EAAE+jC,OAAOtwC,EAAEgjI,WAAY,QAAShjI,GAAIo+H,GAAK7xH,EAAE+jC,OAAOjxC,OAAQN,EAAGiB,GAAIigI,GAAG,gBAuIlLyD,GAAG1jI,EAAEsgI,SAAU,MAAM,EAAItgI,EAAEqsB,WAExEA,QAAS,WACL4zG,GAAG,WAAY0D,IAAMv/E,aAAau/E,IAAKniI,EAAEugD,aAAa,cAAe,QAASvgD,EAAE8/C,UAAY48E,EAAGnkF,GAAK+d,cAAc/d,GAAIxtC,EAAE+jC,OAAOtwC,EAAEgjI,WAAYvjH,EAAGzf,GAAIuM,EAAE+jC,OAAOjxC,OAAQ,SAAUW,GAAI4jI,KAAM1B,KAAMnC,GAAK,MAExM8D,MAAO,SAAUriI,EAAGiL,EAAGnP,GACnBA,IAAMkE,EAAIg9H,GAAGl8H,IAAIwzB,EAAIt0B,EAAIg9H,GAAGl8H,IAAIwzB,EAAIt0B,EAAIg9H,GAAG70H,IAAImsB,IAAMt0B,EAAIg9H,GAAG70H,IAAImsB,GAAIrpB,EAAI+xH,GAAGl8H,IAAI03C,EAAIvtC,EAAI+xH,GAAGl8H,IAAI03C,EAAIvtC,EAAI+xH,GAAG70H,IAAIqwC,IAAMvtC,EAAI+xH,GAAG70H,IAAIqwC,IAAKklF,GAAGppG,EAAIt0B,EAAG09H,GAAGllF,EAAIvtC,EAAG+zH,MAE3J1oC,YAAa,SAAUt2F,GACnBA,EAAIA,GAAKnC,OAAOg8B,MAAOt9B,EAAEyD,EAAE6F,OAAStJ,EAAEyD,EAAE6F,MAAM7F,IAElDsiI,KAAM,SAAUtiI,GAEZ,IAAIiL,GADJjL,EAAIq+H,GAAGr+H,IACKnE,EACZiiI,GAAK7yH,EAAGpP,EAAImE,EAAGxB,EAAEsgI,SAAWgD,GAAGjmI,GAAI+hI,IAAM3yH,EAAGo0H,GAAG9H,GAAGjjG,EAAIspG,IAAK8C,KAAMxD,IAAK,EAAI1+H,EAAEyjI,kBAEhF7pH,KAAM,WACF5Z,EAAE8jI,KAAKzmI,EAAI,IAEfi1B,KAAM,WACFtyB,EAAE8jI,KAAKzmI,EAAI,IAEf0mI,mBAAoB,SAAUviI,GAC1B,GAAIA,GAAKy+H,GAAG,eAAgB,GAAIjmF,EAAE,GAAGjwC,GAAGwU,SAAS9Y,OAAQ,CACrD,IAAIgH,EAAIutC,EAAE,GAAGjwC,GAAGwU,SAAS,GACzBkgH,GAAKlyH,EAAEkW,SAAShW,EAAG,mBAAqBA,EAAE7D,MAAQ,UAC/C61H,GAAK,KACZD,GAAKx+H,EAAEsgI,SAASplB,OAAQ/8G,EAAIa,EAAIgB,EAAEsgI,SAASxC,iBAAkBoB,GAAGppG,EAAI0oG,GAAG75C,OAAO7uD,EAAGopG,GAAGllF,EAAIwkF,GAAG75C,OAAO3qC,EAAGx4C,GAAKy+H,GAAG,gBAEjH+D,oBAAqB,WACjBluG,GAAI,EACJ,IAAK,IAAIt0B,EAAI,EAvRjB,EAuRwBA,EAAGA,IAAKw4C,EAAEx4C,GAAG8lC,OAAS0S,EAAEx4C,GAAG8lC,KAAK28F,aAAc,IAEtER,eAAgB,SAAUjiI,GACtB,GAAI,IAAM89H,GAAI,CACV,IAAI7yH,EAAGnP,EAAI4B,KAAKm4B,IAAIioG,IACpB,KAAM99H,GAAK,EAAIlE,GAAI,CACf0C,EAAEsgI,SAAWgD,GAAGjmI,GAAIqiI,IAAK,EAAIO,GAAG,eAAgBX,IAAKhiI,GA7RjE,IA6R4EI,GAAK4hI,IAAMA,GAAK,GA7R5F,KA6RyGhiI,EA7RzG,GA8RY,IAAK,IAAIC,EAAI,EAAGD,EAAIC,EAAGA,IAAK+hI,GAAK,GAAK7yH,EAAIutC,EAAEruB,QAASquB,EAAEH,GAASptC,EAAQm0H,MAALljI,EAAa,GAAKq7H,GAAGjjG,EAAGrpB,EAAE1C,GAAGnB,OAAQ5I,EAAEwjI,WAAW/2H,EAAGpP,EAAIC,EAAIC,EAAI,EAAI,KAAOkP,EAAIutC,EAAEy/C,MAAOz/C,EAAEf,QAAQxsC,GAASm0H,KAALljI,EAAYq7H,GAAGjjG,EAAGrpB,EAAE1C,GAAGnB,OAAQ5I,EAAEwjI,WAAW/2H,EAAGpP,EAAIC,EAAIC,EAAI,EAAI,IACzO,GAAIkhI,IAAM,IAAMv/H,KAAKm4B,IAAIioG,IAAK,CAC1B,IAAI/yH,EAAI+2H,GAAG5jH,GACXnT,EAAEuxH,mBAAqB9+H,IAAMqiI,GAAG90H,EAAG4yH,IAAKsB,GAAGl0H,GAAIm0H,GAAGn0H,IAEtD+yH,GAAK,EAAGt/H,EAAE+jI,qBAAsBrkH,EAAIriB,EAAG4iI,GAAG,kBAItDmD,WAAY,SAAU32H,GAClB,IAAK8yH,IAAMtiI,EAAE+gI,MAAO,CAChB,IAAI1gI,EAAIiP,EAAEgvH,aACV,GAAIh4E,IAAMjmD,IAAMkE,EAAEoH,MAAMme,IAAMzpB,EAAI,KAAMimD,EAAIjmD,IAAKmP,GAAKgzH,GAAG3pG,IAAMz2B,OAAOusC,YAAc6zF,GAAGzlF,IAAM36C,OAAO8gC,YAAa,OACjHs/F,GAAG3pG,EAAIz2B,OAAOusC,WAAY6zF,GAAGzlF,EAAI36C,OAAO8gC,YAAa3+B,EAAEoH,MAAM6b,OAASg7G,GAAGzlF,EAAI,KAEjF,GAAImlF,GAAGrpG,EAAI91B,EAAEgjI,WAAWjyG,YAAaouG,GAAGnlF,EAAIh6C,EAAEgjI,WAAW/xG,aAAc2wG,KAAM7I,GAAGjjG,EAAIqpG,GAAGrpG,EAAI52B,KAAKyiC,MAAMw9F,GAAGrpG,EAAI74B,EAAE+rH,SAAU+P,GAAG/+E,EAAImlF,GAAGnlF,EAAG6mF,GAAG9H,GAAGjjG,EAAIspG,IAAKa,GAAG,qBAAiB,IAAWviI,EAAG,CACnL,IAAK,IAAIH,EAAG+O,EAAGsM,EAAGpD,EAAI,EA9S9B,EA8SqCA,EAAGA,IAAKjY,EAAIy8C,EAAExkC,GAAIorH,IAAIprH,EAAI9X,GAAKq7H,GAAGjjG,EAAGv4B,EAAEwM,GAAGnB,OAAQgQ,EAAIvb,EAAImY,EAAI,EAAGvY,EAAE4+C,MAAQikF,KAAO,IAAMlnH,EAAIinH,GAAGjnH,KAAKtM,EAAIg3H,GAAG1qH,MAAUkd,GAAKxpB,EAAE23H,cAAgB33H,EAAE4uG,SAAWl7G,EAAEkkI,WAAW53H,GAAItM,EAAEwjI,WAAWjmI,EAAGqb,GAAI,IAAMpD,IAAMxV,EAAEsgI,SAAWh0H,EAAGtM,EAAE+jI,oBAAmB,IAAMz3H,EAAE23H,aAAc,IAAO,IAAM1mI,EAAEmI,OAASkT,GAAK,GAAK5Y,EAAEwjI,WAAWjmI,EAAGqb,GAAItM,GAAKA,EAAEs1C,YAAcy/E,GAAG/0H,EAAG6yH,IAAKsB,GAAGn0H,GAAIo0H,GAAGp0H,IAClYwpB,GAAI,EAER33B,EAAIa,EAAIgB,EAAEsgI,SAASxC,kBAAkBU,GAAKx+H,EAAEsgI,SAASplB,UAAegkB,GAAGppG,EAAI0oG,GAAG75C,OAAO7uD,EAAGopG,GAAGllF,EAAIwkF,GAAG75C,OAAO3qC,EAAGwmF,IAAG,IAAMP,GAAG,WAE5HkE,OAAQ,SAAU3iI,EAAGiL,EAAGnP,EAAGC,EAAGyC,GAC1ByM,IAAMtO,EAAIa,EAAG+hI,GAAGjrG,EAAI52B,KAAKm4B,IAAI5qB,EAAEqpB,GAAKopG,GAAGppG,EAAGirG,GAAG/mF,EAAI96C,KAAKm4B,IAAI5qB,EAAEutC,GAAKklF,GAAGllF,EAAGgnF,GAAG/B,GAAIC,KAC9E,IAAI5yH,EAAI80H,GAAG5/H,GAAG,GACVq4C,EAAI,GACR2nF,GAAG,IAAKl1H,EAAGutC,EAAGr4C,GAAIggI,GAAG,IAAKl1H,EAAGutC,EAAGr4C,GAChC,IAAIvE,EAAI+B,EACJ4Z,EACOsmH,GAAGppG,EADVld,EAEOsmH,GAAGllF,EAEdinF,GAAGpnF,GACH,IAAIrkC,EAAI,SAAU/I,GACd,IAAMA,GAAKzN,EAAIwC,EAAG09H,GAAGppG,EAAI+jB,EAAE/jB,EAAGopG,GAAGllF,EAAIH,EAAEG,IAAMh7C,GAAKwC,EAAIvE,GAAKwP,EAAIxP,EAAGiiI,GAAGppG,GAAK+jB,EAAE/jB,EAAIld,GAAOnM,EAAImM,EAAKsmH,GAAGllF,GAAKH,EAAEG,EAAIphC,GAAOnM,EAAImM,GAAM5Y,GAAKA,EAAEyM,GAAI+zH,GAAG,IAAM/zH,IAEvJnP,EAAI6kI,GAAG,eAAgB,EAAG,EAAG7kI,EAAGC,GAAKgP,EAAE22B,OAAOy4F,KAAKC,MAAOpmH,GAAKA,EAAE,KAKzE4uH,GAAK,GACLC,GAAK,GACLC,GAAK,GACLC,GAAK,GACLC,GAAK,GACLC,GAAK,GACLC,GAAK,GACLC,GAAK,GACLC,GAAK,GACLC,GAAK,EACLC,GAjTW,CACHhvG,EAAG,EACHkkB,EAAG,GAgTX+qF,GAAK,EACL/L,GAnTW,CACHljG,EAAG,EACHkkB,EAAG,GAkTX+mF,GApTW,CACHjrG,EAAG,EACHkkB,EAAG,GAmTXgrF,GArTW,CACHlvG,EAAG,EACHkkB,EAAG,GA0TXirF,GAAK,SAAUzjI,EAAGiL,GACd,OAAOm4H,GAAG9uG,EAAI52B,KAAKm4B,IAAI71B,EAAEs0B,EAAIrpB,EAAEqpB,GAAI8uG,GAAG5qF,EAAI96C,KAAKm4B,IAAI71B,EAAEw4C,EAAIvtC,EAAEutC,GAAI96C,KAAK24C,KAAK+sF,GAAG9uG,EAAI8uG,GAAG9uG,EAAI8uG,GAAG5qF,EAAI4qF,GAAG5qF,IAErG4pF,GAAK,WACDhgF,IAAMJ,EAAEI,GAAIA,EAAI,OAWpBshF,GAAK,GACLC,GAAK,SAAU3jI,EAAGiL,GACd,OAAOy4H,GAAGE,SALT,SAALC,EAAe7jI,EAAGiL,GACd,SAAOjL,GAAKA,IAAMyH,cAAWzH,EAAEmgD,aAAa,UAAYngD,EAAEmgD,aAAa,SAASl4C,QAAQ,sBAAwB,KAASgD,EAAEjL,GAAKA,EAAI6jI,EAAG7jI,EAAEg9C,WAAY/xC,KAIhI44H,CAAG7jI,EAAEhB,OAAQvD,EAAE2gI,oBAAqBqC,GAAG,mBAAoBz+H,EAAGiL,EAAGy4H,IAAKA,GAAGE,SAElGE,GAAK,SAAU9jI,EAAGiL,GACd,OAAOA,EAAEqpB,EAAIt0B,EAAE2oD,MAAO19C,EAAEutC,EAAIx4C,EAAE0oD,MAAOz9C,EAAEtG,GAAK3E,EAAE+jI,WAAY94H,GAE9D+4H,GAAK,SAAUhkI,EAAGiL,EAAGnP,GACjBA,EAAEw4B,EAAI,IAAMt0B,EAAEs0B,EAAIrpB,EAAEqpB,GAAIx4B,EAAE08C,EAAI,IAAMx4C,EAAEw4C,EAAIvtC,EAAEutC,IAQhDyrF,GAAK,WACD,IAAIjkI,EAAI09H,GAAGllF,EAAIh6C,EAAEsgI,SAASK,gBAAgB3mF,EAC1C,OAAO,EAAI96C,KAAKm4B,IAAI71B,GAAK29H,GAAGnlF,EAAI,KAEpC0rF,GAAK,GACLC,GAAK,GACLC,GAAK,GACLC,GAAK,SAAUrkI,GACX,KAAOokI,GAAGngI,OAAS,GAAImgI,GAAGnsC,MAC1B,OAAOnwF,GAAKy1H,GAAK,EAAG0F,GAAG9+H,SAAQ,SAAUnE,GACrC,IAAMu9H,GAAK6G,GAAG,GAAKpkI,EAAI,IAAMu9H,KAAO6G,GAAG,GAAKpkI,GAAIu9H,SAC9Cv9H,EAAE6F,KAAKoC,QAAQ,UAAY,EAAIjI,EAAEyqC,SAAWzqC,EAAEyqC,QAAQxmC,OAAS,IAAMmgI,GAAG,GAAKN,GAAG9jI,EAAEyqC,QAAQ,GAAIy5F,IAAKlkI,EAAEyqC,QAAQxmC,OAAS,IAAMmgI,GAAG,GAAKN,GAAG9jI,EAAEyqC,QAAQ,GAAI05F,OAASD,GAAG5vG,EAAIt0B,EAAE2oD,MAAOu7E,GAAG1rF,EAAIx4C,EAAE0oD,MAAOw7E,GAAGv/H,GAAK,GAAIy/H,GAAG,GAAKF,IAAKE,IAEjOE,GAAK,SAAUtkI,EAAGiL,GACd,IAAInP,EAAGC,EAAGgP,EAAGD,EACTsM,EAAIsmH,GAAG19H,GAAKiL,EAAEjL,GACdgU,EAAI/I,EAAEjL,GAAK,EACXtE,EAAI87H,GAAGljG,EAAIrpB,EAAEqpB,EACbz4B,EAAI27H,GAAGljG,EAAI4uG,GAAG5uG,EAClB,OAAOx4B,EAAIsb,EAAI4lH,GAAGl8H,IAAId,IAAMoX,EAAI4lH,GAAG70H,IAAInI,GAAKvE,EAAE0gI,eAAiB,EAAG/kH,EAAIsmH,GAAG19H,GAAKiL,EAAEjL,GAAKlE,GAAIL,EAAE6/H,gBAAkB99H,IAAMgB,EAAEsgI,SAASxC,mBAAqBW,GAAK,MAAQjgC,IAAM,MAAQh9F,GAAKkiD,IAAMluC,GAAKoD,EAAI4lH,GAAGl8H,IAAId,KAAOlE,EAAIL,EAAE0gI,eAAoBa,GAAGl8H,IAAId,GAAKoX,EAAGrb,EAAIihI,GAAGl8H,IAAId,GAAKy9H,GAAGz9H,KAAM,GAAKjE,GAAK,EAAIF,IAAMyiI,KAAO,GAAKxzH,EAAIpP,EAAG,EAAIG,GAAKH,EAAIwnI,GAAG5uG,IAAMxpB,EAAIo4H,GAAG5uG,IAAM0oG,GAAGl8H,IAAIwzB,IAAM0oG,GAAG70H,IAAImsB,IAAMvpB,EAAIqM,KAAOA,EAAI4lH,GAAG70H,IAAInI,KAAOlE,EAAIL,EAAE0gI,eAAoB/kH,EAAI4lH,GAAG70H,IAAInI,GAAIjE,EAAI0hI,GAAGz9H,GAAKg9H,GAAG70H,IAAInI,KAAM,GAAKjE,GAAKF,EAAI,IAAMyiI,KAAO,GAAKxzH,EAAIpP,EAAGG,EAAI,GAAKH,EAAIwnI,GAAG5uG,IAAMxpB,EAAIo4H,GAAG5uG,IAAM0oG,GAAGl8H,IAAIwzB,IAAM0oG,GAAG70H,IAAImsB,IAAMvpB,EAAIqM,KAAOtM,EAAIpP,EAAG,MAAQsE,QAAUk9H,IAAMJ,GAAKt/H,EAAIgB,EAAEsgI,SAASC,WAAarB,GAAG19H,IAAMiL,EAAEjL,GAAKlE,UAAO,IAAWgP,IAAMu0H,GAAGv0H,GAAG,GAAKgyH,EAAIhyH,IAAMo4H,GAAG5uG,GAAc0oG,GAAGl8H,IAAIwzB,IAAM0oG,GAAG70H,IAAImsB,SAAM,IAAWvpB,EAAI2yH,GAAGppG,EAAIvpB,EAAI+xH,IAAMY,GAAGppG,GAAKrpB,EAAEqpB,EAAIx4B,SAAK,IAAWgP,IAE9yBy5H,GAAK,SAAUvkI,GACX,KAAM,cAAgBA,EAAE6F,MAAQ7F,EAAEsoD,OAAS,GAAI,CAC3C,GAAIk8E,GAAI,YAAYxkI,EAAEmrB,iBACtB,IAAKwtB,GAAK,cAAgB34C,EAAE6F,KAAM,CAC9B,GAAI89H,GAAG3jI,GAAG,IAAOA,EAAEmrB,iBAAkBszG,GAAG,eAAgB32H,EAAG,CACvD,IAAImD,EAAIF,EAAEmvH,YAAY+I,GAAIjjI,EAAEykI,UAAW,MACvC,EAAIx5H,IAAMA,EAAIg4H,GAAGh/H,QAASg/H,GAAGh4H,GAAK,CAC9BqpB,EAAGt0B,EAAE2oD,MACLnQ,EAAGx4C,EAAE0oD,MACL/jD,GAAI3E,EAAEykI,WAGd,IAAI3oI,EAAIuoI,GAAGrkI,GACPjE,EAAID,EAAEmI,OACVkF,EAAI,KAAMu3H,KAAM9D,GAAK,IAAM7gI,IAAM6gI,EAAIO,IAAK,EAAIpyH,EAAE9N,KAAKY,OAAQN,EAAGiB,GAAI0b,EAAIojH,GAAKF,GAAK5oH,EAAIsoH,EAAID,EAAIh0H,EAAIq5C,GAAI,EAAI86C,GAAK,KAAMyhC,GAAG,kBAAmB3iI,GAAI0jI,GAAG/B,GAAIC,IAAKF,GAAGlpG,EAAIkpG,GAAGhlF,EAAI,EAAGgnF,GAAGuD,GAAIjnI,EAAE,IAAK0jI,GAAGwD,GAAID,IAAKG,GAAG5uG,EAAIijG,GAAGjjG,EAAIspG,GAAIuF,GAAK,CAAC,CAC1N7uG,EAAGyuG,GAAGzuG,EACNkkB,EAAGuqF,GAAGvqF,IACN/3C,EAAID,EAAIk+H,KAAMkB,GAAGpiI,GAAG,GAAK4kI,KA/DpC,SAALsC,IACI9H,IAAMx6E,EAAI9I,EAAEorF,GAAKC,MA8D0BD,KAAQ1/G,GAAKjpB,EAAI,IAAMmhI,KAAOJ,IAAMngI,EAAIa,EAAG0kD,GAAI,EAAIl9B,EAAInc,GAAI,EAAI20H,GAAGhlF,EAAIglF,GAAGlpG,EAAI,EAAGkrG,GAAG/B,GAAIC,IAAK8B,GAAGoD,GAAI9mI,EAAE,IAAK0jI,GAAGqD,GAAI/mI,EAAE,IAAKkoI,GAAGpB,GAAIC,GAAIW,IAAKjE,GAAGjrG,EAAI52B,KAAKm4B,IAAI2tG,GAAGlvG,GAAKopG,GAAGppG,EAAGirG,GAAG/mF,EAAI96C,KAAKm4B,IAAI2tG,GAAGhrF,GAAKklF,GAAGllF,EAAQukF,EAAK0G,GAAGb,GAAIC,QAIpQ+B,GAAK,SAAU5kI,GACX,GAAIA,EAAEmrB,iBAAkBrjB,EAAG,CACvB,IAAImD,EAAIF,EAAEmvH,YAAY+I,GAAIjjI,EAAEykI,UAAW,MACvC,GAAIx5H,GAAK,EAAG,CACR,IAAInP,EAAImnI,GAAGh4H,GACXnP,EAAEw4B,EAAIt0B,EAAE2oD,MAAO7sD,EAAE08C,EAAIx4C,EAAE0oD,OAG/B,GAAIk0E,EAAG,CACH,IAAI7gI,EAAIsoI,GAAGrkI,GACX,GAAIg9F,IAAM6/B,GAAK73G,EAAG7b,EAAIpN,OACjB,GAAIy7H,GAAGljG,IAAMijG,GAAGjjG,EAAIspG,GAAI5gC,GAAK,QAC7B,CACD,IAAIx+F,EAAId,KAAKm4B,IAAI95B,EAAE,GAAGu4B,EAAIyuG,GAAGzuG,GAAK52B,KAAKm4B,IAAI95B,EAAE,GAAGy8C,EAAIuqF,GAAGvqF,GACvD96C,KAAKm4B,IAAIr3B,IA7GhB,KA6G6Bw+F,GAAKx+F,EAAI,EAAI,IAAM,IAAK2K,EAAIpN,MAI9D4oI,GAAK,WACD,GAAIx7H,EAAG,CACH,IAAInJ,EAAImJ,EAAElF,OACV,GAAI,IAAMjE,EACN,GAAIw/H,GAAGoD,GAAIz5H,EAAE,IAAK25H,GAAGxuG,EAAIsuG,GAAGtuG,EAAIyuG,GAAGzuG,EAAGwuG,GAAGtqF,EAAIoqF,GAAGpqF,EAAIuqF,GAAGvqF,EAAGxzB,GAAKhlB,EAAI,EAAG,CAClE,GAAI+iI,GAAGzuG,EAAIsuG,GAAGtuG,EAAGyuG,GAAGvqF,EAAIoqF,GAAGpqF,GAAIsqF,GAAGxuG,IAAMwuG,GAAGtqF,GAtGtD,SAAUx4C,EAAGiL,GACd,OAAOjL,EAAEs0B,IAAMrpB,EAAEqpB,GAAKt0B,EAAEw4C,IAAMvtC,EAAEutC,EAqG4BqsF,CAAG17H,EAAE,GAAI05H,IAAK,OAC9DrD,GAAGqD,GAAI15H,EAAE,IAAK+4C,IAAMA,GAAI,EAAIu8E,GAAG,uBAC/B,IAAIxzH,EAAIw4H,GAAGb,GAAIC,IACX/mI,EAAIgpI,GAAG75H,GACXnP,EAAI0C,EAAEsgI,SAASxC,iBAAmB99H,EAAEsgI,SAASxC,iBAAmB,KAAOgB,IAAK,GAC5E,IAAIvhI,EAAI,EACJgP,EAAI+0H,KACJh1H,EAAIi1H,KACR,GAAIh1H,EAAIjP,EACJ,GAAIL,EAAEggI,eAAiB6B,IAAM3gI,GAAK6B,EAAEsgI,SAASxC,iBAAkB,CAC3D,IACIllH,EAAI,GADArM,EAAIjP,IACKiP,EAAI,KACrB4zH,GAAGvnH,GAAIqnH,GAAG,eAAgBrnH,GAAIgmH,IAAK,OAChCrhI,GAAKgP,EAAIjP,GAAKiP,GAAO,IAAMhP,EAAI,GAAID,EAAIiP,EAAIhP,GAAKgP,EAAI,QAC1DjP,EAAIgP,KAAM/O,GAAKD,EAAIgP,IAAM,EAAIC,IAAQ,IAAMhP,EAAI,GAAID,EAAIgP,EAAI/O,EAAIgP,GACpE,EAAIhP,IAAMA,EAAI,GAASkP,EAAG+4H,GAAGpB,GAAIC,GAAIS,IAAK9F,GAAGlpG,GAAKgvG,GAAGhvG,EAAIkvG,GAAGlvG,EAAGkpG,GAAGhlF,GAAK8qF,GAAG9qF,EAAIgrF,GAAGhrF,EAAGgnF,GAAGgE,GAAIF,IAAK5F,GAAGppG,EAAIgrG,GAAG,IAAKxjI,GAAI4hI,GAAGllF,EAAI8mF,GAAG,IAAKxjI,GAAIoe,EAAIpe,EAAI0B,EAAGA,EAAI1B,EAAGkjI,SACrJ,CACH,IAAKhiC,GAAI,OACT,GAAImgC,KAAOA,IAAK,EAAIz/H,KAAKm4B,IAAIitG,GAAGxuG,IAxI3C,KAwIwDwuG,GAAGxuG,GAAKnrB,EAAE,GAAGmrB,EAAI0uG,GAAG1uG,GAAI52B,KAAKm4B,IAAIitG,GAAGtqF,IAxI5F,KAwIyGsqF,GAAGtqF,GAAKrvC,EAAE,GAAGqvC,EAAIwqF,GAAGxqF,IAAKuqF,GAAGzuG,EAAIsuG,GAAGtuG,EAAGyuG,GAAGvqF,EAAIoqF,GAAGpqF,EAAG,IAAMsqF,GAAGxuG,GAAK,IAAMwuG,GAAGtqF,EAAG,OAC3K,GAAI,MAAQwkD,IAAMvhG,EAAEkgI,qBAzGvB,QAAUlgI,EAAEghI,WAAaj/H,IAAMgB,EAAEsgI,SAASxC,iBAyGW,CAC9CkB,GAAGhlF,GAAKsqF,GAAGtqF,EAAGklF,GAAGllF,GAAKsqF,GAAGtqF,EACzB,IAAIxkC,EAAIiwH,KACR,OAAOzvH,GAAI,EAAIiqH,GAAG,iBAAkBzqH,GAAI2qH,GAAG3qH,QAASgrH,MA7FnE,SAAUh/H,EAAGiL,EAAGnP,GACjB,GAAIkE,EAAIS,EAAI,GAAI,CACZ,IAAI1E,EAAIonI,GAAGl/H,OAAS,EAAIk/H,GAAGh5G,QAAU,GACrCpuB,EAAEu4B,EAAIrpB,EAAGlP,EAAEy8C,EAAI18C,EAAGqnI,GAAGliI,KAAKlF,GAAI0E,EAAIT,IA4F1B+kI,CAAGrG,KAAMkE,GAAGtuG,EAAGsuG,GAAGpqF,GAAIqkF,GAAI,EAAIG,GAAKx+H,EAAEsgI,SAASplB,OACtC4qB,GAAG,IAAKxB,MACVwB,GAAG,IAAKxB,IAAKrD,GAAG/B,IAAKsB,SAI3CgG,GAAK,SAAUhlI,GACX,GAAIw5C,EAAEyhF,aAAc,CAChB,GAAItiF,GAAK,YAAc34C,EAAE6F,KAAM,OAC/B7F,EAAE6F,KAAKoC,QAAQ,UAAY,IAAM26C,aAAajK,GAAIA,EAAI1e,YAAW,WAC7D0e,EAAI,IACL,MAGP,IAAI1tC,EACJ,GAFAwzH,GAAG,aAAckF,GAAG3jI,GAAG,IAAOA,EAAEmrB,iBAE5BrjB,EAAG,CACH,IAAIhM,EAAIiP,EAAEmvH,YAAY+I,GAAIjjI,EAAEykI,UAAW,MACvC,GAAI3oI,GAAK,EACL,GAAImP,EAAIg4H,GAAGvkH,OAAO5iB,EAAG,GAAG,GAAI6uB,UAAUkwG,eAAgB5vH,EAAEpF,KAAO7F,EAAEm2D,aAAe,YAC3E,CAMDlrD,EAAEpF,KALM,CACJkqE,EAAG,QACHxF,EAAG,QACH0B,EAAG,OAEIjsE,EAAEm2D,aAAclrD,EAAEpF,OAASoF,EAAEpF,KAAO7F,EAAEm2D,aAAe,UAG5E,IAAIrrD,EAAGutC,EAAIgsF,GAAGrkI,GACVoX,EAAIihC,EAAEp0C,OACV,GAAI,YAAcjE,EAAE6F,OAASuR,EAAI,GAAI,IAAMA,EAAG,OAAOjO,EAAI,MAAM,EAC/D,IAAMiO,GAAKooH,GAAGwD,GAAI3qF,EAAE,IAAK,IAAMjhC,GAAK4lF,IAAMkgC,KAAOjyH,IAAM,YAAcjL,EAAE6F,KAAOoF,EAAI,CAC9EqpB,EAAGt0B,EAAE2oD,MACLnQ,EAAGx4C,EAAE0oD,MACL7iD,KAAM,SACN7F,EAAEurC,gBAAkBvrC,EAAEurC,eAAe,KAAOtgC,EAAI,CAChDqpB,EAAGt0B,EAAEurC,eAAe,GAAGod,MACvBnQ,EAAGx4C,EAAEurC,eAAe,GAAGmd,MACvB7iD,KAAM,WACL44H,GAAG,eAAgBz+H,EAAGiL,IAC3B,IAAI+I,GAAK,EACT,GAAI,IAAMoD,IAAMwlH,GAAI,EAAI7xH,EAAE+jC,OAAOjxC,OAAQN,EAAGiB,GAAI4jI,KAAMp9G,EAAIhR,EAAI,GAAK,IAAMuvH,KAAOvvH,EAAI0qH,KAAO6E,KAAMA,GAAK,IAAMnsH,EAAIsnH,MAAQ,EAAG5zH,GAAK,IAAMkJ,GAAK,IAAMA,EAAI,OAAS,QAASgR,GAAK,EAAI5N,IAAM4N,GAAI,EAAI,IAAM5N,IAAMtM,EAAI,iBAAkB2zH,GAAG,qBAAsBt1H,EAAI,KAAM0zH,GAAK36E,GAAKg7E,IAAM1oH,EAC/Q,GAAIksH,KAAMp+E,IAAMA,EAAI2iF,MAAO3iF,EAAE4iF,oBAAoB,KAAM1wH,EAAG,CAEtD,GADQyvH,KACAxoI,EAAEmgI,kBAAmBp9H,EAAEqJ,YAC1B,CACD,IAAIhM,EAAI6hI,GAAGllF,EACPt7C,EAAImgI,GACRsD,GAAG,eAAgB,EAAG,EAAG,IAAK51H,EAAE22B,OAAO24F,MAAMlN,KAAK,SAAUntH,GACxD09H,GAAGllF,GAAKh6C,EAAEsgI,SAASK,gBAAgB3mF,EAAI38C,GAAKmE,EAAInE,EAAG8iI,IAAI,EAAIzhI,GAAK8C,EAAI9C,GAAI8hI,QACxEP,GAAG,iBAAkB,QAE1B,CACH,IAAK3B,GAAKI,KAAO,IAAM9lH,EAAG,CAEtB,GADQ+tH,GAAGr6H,EAAGw3C,GACP,OACPx3C,EAAI,gBAER,IAAKoyH,GAAI,MAAO,UAAYpyH,OAASs6H,WAAatI,GAAKt/H,EAAIgB,EAAEsgI,SAASC,UAAYsG,GAAG/iF,MAGjG2iF,GAAK,WACD,IAAIjlI,EAAGiL,EAAGnP,EAAI,CACVwpI,gBAAiB,GACjBC,cAAe,GACfC,eAAgB,GAChBC,cAAe,GACfC,qBAAsB,GACtBC,uBAAwB,GACxBC,0BAA2B,GAC3BC,eAAgB,GAChBC,oBAAqB,GACrBC,gBAAiB,GACjBb,oBAAqB,SAAUnpI,GAC3BonI,GAAGl/H,OAAS,GAAKjE,EAAI0+H,KAAOj+H,EAAI,GAAIwK,EAAIk4H,GAAGA,GAAGl/H,OAAS,GAAGlI,KAAOiE,EAAI0+H,KAAOl+H,EAAGyK,EAAI+3H,GAAGjnI,IAAKD,EAAEwpI,gBAAgBvpI,GAAKgnI,GAAGhnI,GAAKkP,EAAGnP,EAAEypI,cAAcxpI,GAAK2B,KAAKm4B,IAAI/5B,EAAEwpI,gBAAgBvpI,IAAKD,EAAEypI,cAAcxpI,GAAK,GAAKD,EAAE0pI,eAAezpI,GAAKD,EAAEwpI,gBAAgBvpI,GAAKiE,EAAIlE,EAAE0pI,eAAezpI,GAAK,EAAG2B,KAAKm4B,IAAI/5B,EAAE0pI,eAAezpI,IAAM,KAAOD,EAAE0pI,eAAezpI,GAAK,GAAID,EAAE2pI,cAAc1pI,GAAK,IAAKD,EAAE4pI,qBAAqB3pI,GAAK,EAAID,EAAE2pI,cAAc1pI,GAAID,EAAE6pI,uBAAuB5pI,GAAK,GAEvciqI,8BAA+B,SAAUhmI,EAAGiL,GACxCnP,EAAEiqI,gBAAgB/lI,KAAO09H,GAAG19H,GAAKg9H,GAAGl8H,IAAId,GAAKlE,EAAEgqI,oBAAoB9lI,GAAKg9H,GAAGl8H,IAAId,GAAK09H,GAAG19H,GAAKg9H,GAAG70H,IAAInI,KAAOlE,EAAEgqI,oBAAoB9lI,GAAKg9H,GAAG70H,IAAInI,SAAK,IAAWlE,EAAEgqI,oBAAoB9lI,KAAOlE,EAAE2pI,cAAczlI,GAAK,GAAIlE,EAAE4pI,qBAAqB1lI,GAAK,EAAIlE,EAAE2pI,cAAczlI,GAAIlE,EAAE8pI,0BAA0B5lI,GAAK,MAAQlE,EAAE0pI,eAAexlI,GAAK,EAAGlE,EAAEiqI,gBAAgB/lI,IAAK,EAAI2gI,GAAG,gBAAkB3gI,EAAG09H,GAAG19H,GAAIlE,EAAEgqI,oBAAoB9lI,GAAIiL,GAAK,IAAKF,EAAE22B,OAAOy4F,KAAKhN,KAAK,SAAUliH,GAC/byyH,GAAG19H,GAAKiL,EAAG+zH,YAGnBiH,oBAAqB,SAAUjmI,GAC3BlE,EAAEiqI,gBAAgB/lI,KAAOlE,EAAE6pI,uBAAuB3lI,GAAKlE,EAAE6pI,uBAAuB3lI,IAAMlE,EAAE2pI,cAAczlI,GAAKlE,EAAE4pI,qBAAqB1lI,GAAKlE,EAAE4pI,qBAAqB1lI,GAAKlE,EAAEoqI,SAAW,IAAKpqI,EAAE8pI,0BAA0B5lI,GAAKtC,KAAKm4B,IAAI/5B,EAAE0pI,eAAexlI,GAAKlE,EAAE6pI,uBAAuB3lI,IAAKlE,EAAE+pI,eAAe7lI,GAAKlE,EAAE0pI,eAAexlI,GAAKlE,EAAE6pI,uBAAuB3lI,GAAKlE,EAAEoqI,SAAUxI,GAAG19H,IAAMlE,EAAE+pI,eAAe7lI,KAEvYmmI,YAAa,WACT,OAAO7F,GAAG8F,UAAY9F,GAAG8F,QAAQ3L,IAAMnhF,EAAEx9C,EAAEqqI,aAAcrqI,EAAE4uC,IAAMg0F,KAAM5iI,EAAEoqI,SAAWpqI,EAAE4uC,IAAM5uC,EAAEuqI,QAASvqI,EAAEuqI,QAAUvqI,EAAE4uC,IAAK5uC,EAAEmqI,oBAAoB,KAAMnqI,EAAEmqI,oBAAoB,KAAMjH,KAAMljI,EAAEkqI,8BAA8B,KAAMlqI,EAAEkqI,8BAA8B,KAAMlqI,EAAE8pI,0BAA0BtxG,EAAI,KAAOx4B,EAAE8pI,0BAA0BptF,EAAI,MAAQklF,GAAGppG,EAAI52B,KAAKyiC,MAAMu9F,GAAGppG,GAAIopG,GAAGllF,EAAI96C,KAAKyiC,MAAMu9F,GAAGllF,GAAIwmF,UAAWwB,GAAG,iBAAc,IAGza,OAAO1kI,GAEXupI,GAAK,SAAUrlI,GACX,OAAOA,EAAEklI,oBAAoB,KAAMlI,GAAKx+H,EAAEsgI,SAASplB,OAAQ15G,EAAE8lI,oBAAsB,GAAI9lI,EAAE+lI,gBAAkB,GAAIroI,KAAKm4B,IAAI71B,EAAEwlI,eAAelxG,IAAM,KAAO52B,KAAKm4B,IAAI71B,EAAEwlI,eAAehtF,IAAM,KAAOx4C,EAAE4lI,0BAA0BtxG,EAAIt0B,EAAE4lI,0BAA0BptF,EAAI,EAAGx4C,EAAEgmI,8BAA8B,KAAMhmI,EAAEgmI,8BAA8B,MAAM,IAAOvF,GAAG,WAAYzgI,EAAEqmI,QAAU3H,UAAW1+H,EAAEmmI,gBAE/XhB,GAAK,SAAUnlI,EAAGiL,GACd,IAAInP,EAEAC,EAMAqb,EALJ,GAFA8lH,KAAOmG,GAAKxnI,GAER,UAAYmE,EAAG,CACf,IAAI8K,EAAIi4H,GAAGzuG,EAAI0uG,GAAG1uG,EACd+jB,EAAIptC,EAAEs6H,cAAcjxG,EAAI,GAC5BxpB,EAnPH,KAmPcutC,GAAKptC,EAAEq6H,gBAAgBhxG,EAAI,IAAMv4B,GAAK,GAnPpD,GAmP8D+O,IAAMutC,GAAKptC,EAAEq6H,gBAAgBhxG,GAAK,MAAQv4B,EAAI,GAG7GA,IAAc,GAARF,GAAKE,IAAYF,EAAIJ,EAAE4+C,KAAOikF,KAAO,EAAI,EAAGlnH,GAAI,GAAMvb,GAAKyiI,OAASziI,EAAIJ,EAAE4+C,KAAO,EAAIikF,KAAO,EAAGlnH,GAAI,KAAOA,GAAK3b,EAAE4+C,QAAUyjF,IAAM/hI,EAAG6hI,IAAM7hI,EAAGD,GAAI,IACvJ,IAAIkY,EAAGtY,EAAI67H,GAAGjjG,EAAIspG,GACd1gI,EAAIQ,KAAKm4B,IAAIn6B,EAAI87H,GAAGljG,GACxB,OAAOx4B,GAAKJ,EAAI87H,GAAGljG,GAAKrpB,EAAEu6H,eAAelxG,EAAI,GAAKtgB,EAAItW,KAAKm4B,IAAI5qB,EAAEu6H,eAAelxG,GAAK,EAAIp3B,EAAIQ,KAAKm4B,IAAI5qB,EAAEu6H,eAAelxG,GAAK,IAAKtgB,EAAItW,KAAKoD,IAAIkT,EAAG,KAAMA,EAAItW,KAAKyK,IAAI6L,EAAG,MAAQA,EAAI,IAAKqvH,KAAOxnI,IAAMC,GAAI,GAAKohI,IAAK,EAAIuB,GAAG,uBAAwBkC,GAAG,aAAcnJ,GAAGljG,EAAG54B,EAAGsY,EAAGjJ,EAAE22B,OAAO24F,MAAMlN,IAAKkS,IAAI,WACnSqB,KAAMxD,IAAK,EAAImG,IAAM,GAAIvnI,GAAKunI,KAAOxnI,IAAM2C,EAAEyjI,iBAAkBxD,GAAG,6BAClE3iI,GAAK0C,EAAEyjI,gBAAe,GAAKnmI,GAEnCgpI,GAAK,SAAU9kI,GACX,OAAO,EAAI+8H,EAAK/8H,EAAIrD,GAExByoI,GAAK,WACD,IAAIplI,EAAIxC,EACJyN,EAAI60H,KACJhkI,EAAIikI,KACR90H,EAAIzN,EAAIwC,EAAIiL,EAAIzN,EAAI1B,IAAMkE,EAAIlE,GAC9B,IAAIC,EACAs8C,EAAIglF,GACR,OAAOD,KAAOljH,IAAMojH,IAAMryH,EAAIzN,GAAKgB,EAAEqJ,SAAS,IAAOu1H,KAAOrhI,EAAI,SAAUiE,GACtE2+H,IAHO,EAGCtmF,GAAKr4C,EAAIq4C,KACjB75C,EAAEmkI,OAAO3iI,EAAG,EAAG,IAAK+K,EAAE22B,OAAO24F,MAAMlN,IAAKpxH,IAAI,IAExDoiI,GAAG,WAAY,CACXC,cAAe,CACXkI,aAAc,WACV,IAAItmI,EAAI,SAAUA,EAAGiL,EAAGnP,EAAGC,EAAGgP,GAC1BoJ,EAAInU,EAAIiL,EAAGg3C,EAAIjiD,EAAIlE,EAAGmN,EAAIjJ,EAAIjE,EAAGsmD,EAAIt3C,EAAI/K,EAAI+K,EAAI,KAErDjD,EAAI0xC,EAAEohF,eAAmBphF,EAAEvO,QAAUuO,EAAEvO,OAAQ,GAAKnjC,EAAI6iB,UAAUkwG,eAAiB76H,EAAE,UAAW,OAAQ,OAAQ,KAAM,UAAYA,EAAE,YAAa,OAAQ,OAAQ,KAAM,UAAYw5C,EAAEvO,OAASjrC,EAAE,QAAS,QAAS,OAAQ,MAAO,UAAWmiD,GAAI,GAAMniD,EAAE,QAAS,OAAQ,OAAQ,MAAOzC,EAAI0kD,EAAI,IAAMh5C,EAAI,IAAMo5C,EAAGpkC,EAAI9J,EAAGrM,IAAMq6C,IAAMA,EAAIx3B,UAAU+kC,eAAiB,GAAK/kC,UAAUklC,iBAAmB,GAAIrxD,EAAE+nI,kBAAoBpkF,EAAG5lD,EAAE4X,GAAKowH,GAAIhoI,EAAE0lD,GAAK2iF,GAAIroI,EAAE0M,GAAK+7H,GAAI3iF,IAAM9lD,EAAE8lD,GAAK9lD,EAAE0M,IAAKuwC,EAAEvO,QAAUhtB,GAAK,aAAc1gB,GAAK,qBAAsBhB,EAAEkuD,UAAYluD,EAAE4X,GAAI5X,EAAEiqI,UAAYjqI,EAAE0lD,GAAI1lD,EAAEouD,QAAUpuD,EAAE0M,IAAKk5C,IAAM1mD,EAAE6/H,gBAAiB,OAInnB,IAAI6G,GAAIsE,GAAIC,GAAIlC,GAAI1C,GAAIxD,GAAQ4D,GAAK,SAAUj3H,EAAGnP,EAAGC,EAAG+O,GAEhD,IAAIutC,EADJ8pF,IAAMv/E,aAAau/E,IAAKqC,IAAK,EAAIkC,IAAK,EAEtCz7H,EAAE07H,eAAiBtuF,EAAIptC,EAAE07H,cAAe17H,EAAE07H,cAAgB,MAAQtuF,EAAI58C,EAAEmrI,kBAAoBnrI,EAAEmrI,iBAAiB/qI,GAC/G,IAAIub,EAAIrb,EAAIN,EAAEogI,sBAAwBpgI,EAAEqgI,sBACpC9nH,EAAI,WACAwsH,GAAG,eAAgBzkI,GAAKyC,EAAE+iI,SAAStiB,gBAAgB,SAAUzgH,EAAEogI,GAAG3f,gBAAgB,WAAa0f,GAAG,GAAI7iI,IAAMA,EAAEsL,MAAMC,QAAU,SAAU0D,EAAE0Y,SAASzjB,EAAG,qBAAsBy+H,GAAG,eAAiB1iI,EAAI,SAAW,WAAY+O,GAAKA,IAAK05H,IAAK,GAElP,IAAKptH,IAAMihC,QAAK,IAAWA,EAAE/jB,EAAG,OAAOmqG,GAAG,eAAiB1iI,EAAI,MAAQ,OAAQyB,EAAIyN,EAAEqxH,iBAAkBkD,GAAG9B,GAAIzyH,EAAEk0H,iBAAkBH,KAAMh/H,EAAEoH,MAAMqe,QAAU1pB,EAAI,EAAI,EAAG4iI,GAAG,QAASvnH,EAAI6iB,YAAW,WAC5LjmB,MACDoD,GAAKpD,MACA,WACJ,IAAIlY,EAAIJ,EACJoP,GAAKtM,EAAEsgI,SAASv3H,KAAO/I,EAAEsgI,SAAS+H,WAAaprI,EAAEsgI,gBACrD9wH,EAAE67H,UAAY77H,EAAE67H,QAAQ1/H,MAAM2/H,yBAA2B,UAAWhrI,IAAMyB,EAAI66C,EAAEE,EAAIttC,EAAEstC,EAAGmlF,GAAGppG,EAAI+jB,EAAE/jB,EAAGopG,GAAGllF,EAAIH,EAAEG,EAAImkF,EAAGn+H,EAAEsM,EAAI,WAAa,MAAM1D,MAAMqe,QAAU,KAAMu5G,MAAOyB,GAAG,eAAgB1kI,IAAMD,GAAKiP,EAAE+V,YAAY9gB,EAAG,qBAAsB8K,IAAM/O,EAAIgP,GAAGjP,EAAI,SAAW,OAAS,SAASkE,EAAG,yBAA2Bi6B,YAAW,WACnUlvB,EAAE0Y,SAASzjB,EAAG,2BACf,KAAMmiI,GAAKloG,YAAW,WACrB,GAAIwkG,GAAG,eAAiB1iI,EAAI,MAAQ,OAAQA,EAAG,CAC3C,IAAIyC,EAAI65C,EAAEE,EAAIttC,EAAEstC,EACZ98C,EAAI,CACA64B,EAAGopG,GAAGppG,EACNkkB,EAAGklF,GAAGllF,GAEV98C,EAAI8B,EACJ3B,EAAIwhI,GACJngI,EAAI,SAAU+N,GACV,IAAMA,GAAKzN,EAAIgB,EAAGk/H,GAAGppG,EAAI+jB,EAAE/jB,EAAGopG,GAAGllF,EAAIH,EAAEG,EAAIuJ,IAAMvkD,GAAKgB,EAAI9C,GAAKuP,EAAIvP,EAAGgiI,GAAGppG,GAAK+jB,EAAE/jB,EAAI74B,EAAE64B,GAAKrpB,EAAIxP,EAAE64B,EAAGopG,GAAGllF,GAAKH,EAAEG,EAAIuJ,EAAItmD,EAAE+8C,GAAKvtC,EAAIxP,EAAE+8C,GAAIwmF,KAAMl0H,EAAI9K,EAAEoH,MAAMqe,QAAU,EAAIxa,EAAI0zH,GAAG9iI,EAAIoP,EAAIpP,IAE9LC,EAAI6kI,GAAG,cAAe,EAAG,EAAGvpH,EAAGrM,EAAE22B,OAAO24F,MAAMlN,IAAKjwH,EAAG8W,IAAM9W,EAAE,GAAIilI,GAAKloG,WAAWjmB,EAAGoD,EAAI,UACtF5Z,EAAIyN,EAAEqxH,iBAAkBkD,GAAG9B,GAAIzyH,EAAEk0H,iBAAkBH,KAAML,GAAG,GAAI7zH,EAAI9K,EAAEoH,MAAMqe,QAAU,EAAIk5G,GAAG,GAAIwD,GAAKloG,WAAWjmB,EAAGoD,EAAI,MAChIrb,EAAI,GAAK,IAEhBmB,IAEJ8pI,GAAK,GACLC,GAAK,GACLC,GAAK,CACDhjI,MAAO,EACPijI,SAAU,wGACVC,yBAAyB,EACzBC,QAAS,CAAC,EAAG,GACbC,cAAe,WACX,OAAOb,GAAGxiI,SAuBlB47H,GAAK,SAAU7/H,EAAGiL,EAAGnP,GACjB,GAAIkE,EAAEuH,MAAQvH,EAAE6mI,UAAW,CACvB,IAAI9qI,GAAKD,EACT,GAAIC,IAAMiE,EAAEunI,OAASvnI,EAAEunI,KAAO,CACtBhiH,IAAK,EACLosC,OAAQ,IACR8sE,GAAG,sBAAuBz+H,IAAKgnI,GAAG1yG,EAAIrpB,EAAEqpB,EAAG0yG,GAAGxuF,EAAIvtC,EAAEutC,EAAIx4C,EAAEunI,KAAKhiH,IAAMvlB,EAAEunI,KAAK51E,OAAQ51D,EAAG,CAC3F,IAAIgP,EAAIi8H,GAAG1yG,EAAIt0B,EAAEu4C,EACb/5C,EAAIwoI,GAAGxuF,EAAIx4C,EAAEq4C,EACjBr4C,EAAE++H,SAAWvgI,EAAIuM,EAAIA,EAAIvM,EACzB,IAAIsM,EAAIrP,EAAEghI,UACV,SAAW3xH,EAAIhP,EAAI,EAAI,QAAUgP,IAAMhP,EAAIkE,EAAE++H,UAAWjjI,EAAI,IAAMA,EAAI,GAAIkE,EAAEs8H,iBAAmBxgI,EAAGkE,EAAE05G,SAAW15G,EAAE05G,OA9BlH,CACHv2B,OAAQ,CACJ7uD,EAAG,EACHkkB,EAAG,GAEPrwC,IAAK,CACDmsB,EAAG,EACHkkB,EAAG,GAEP13C,IAAK,CACDwzB,EAAG,EACHkkB,EAAG,KAqBP,IAAK18C,EAAG,OACR,OAlBH,SAAUkE,EAAGiL,EAAGnP,GACjB,IAAIC,EAAIiE,EAAE05G,OACV39G,EAAEonF,OAAO7uD,EAAI52B,KAAKyiC,OAAO6mG,GAAG1yG,EAAIrpB,GAAK,GAAIlP,EAAEonF,OAAO3qC,EAAI96C,KAAKyiC,OAAO6mG,GAAGxuF,EAAI18C,GAAK,GAAKkE,EAAEunI,KAAKhiH,IAAKxpB,EAAEoM,IAAImsB,EAAIrpB,EAAI+7H,GAAG1yG,EAAI52B,KAAKyiC,MAAM6mG,GAAG1yG,EAAIrpB,GAAKlP,EAAEonF,OAAO7uD,EAAGv4B,EAAEoM,IAAIqwC,EAAI18C,EAAIkrI,GAAGxuF,EAAI96C,KAAKyiC,MAAM6mG,GAAGxuF,EAAI18C,GAAKkE,EAAEunI,KAAKhiH,IAAMxpB,EAAEonF,OAAO3qC,EAAGz8C,EAAE+E,IAAIwzB,EAAIrpB,EAAI+7H,GAAG1yG,EAAI,EAAIv4B,EAAEonF,OAAO7uD,EAAGv4B,EAAE+E,IAAI03C,EAAI18C,EAAIkrI,GAAGxuF,EAAIx4C,EAAEunI,KAAKhiH,IAAMxpB,EAAEonF,OAAO3qC,EAgBjSgnD,CAAGx/F,EAAGA,EAAEu4C,EAAIz8C,EAAGkE,EAAEq4C,EAAIv8C,GAAIC,GAAKD,IAAMkE,EAAEs8H,mBAAqBt8H,EAAEm/H,gBAAkBn/H,EAAE05G,OAAOv2B,QAASnjF,EAAE05G,OAE9G,OAAO15G,EAAEu4C,EAAIv4C,EAAEq4C,EAAI,EAAGr4C,EAAEs8H,iBAAmBt8H,EAAE++H,SAAW,EAAG/+H,EAAE05G,OAnCtD,CACHv2B,OAAQ,CACJ7uD,EAAG,EACHkkB,EAAG,GAEPrwC,IAAK,CACDmsB,EAAG,EACHkkB,EAAG,GAEP13C,IAAK,CACDwzB,EAAG,EACHkkB,EAAG,IAwBiEx4C,EAAEm/H,gBAAkBn/H,EAAE05G,OAAOv2B,OAAQnjF,EAAE05G,QAEvH8tB,GAAK,SAAUxnI,EAAGiL,EAAGnP,EAAGC,EAAGgP,EAAGD,GAC1BG,EAAE47H,WAAa9qI,IAAMkP,EAAEw8H,eAAgB,EAAIxI,GAAGh0H,EAAGlP,EAAGkP,IAAMzM,EAAEsgI,UAAYZ,IAAKpiI,EAAEwL,YAAYvL,GAAI+O,GAAKmvB,YAAW,WAC3GhvB,GAAKA,EAAEy8H,QAAUz8H,EAAE2Y,cAAgB3Y,EAAE2Y,YAAYxc,MAAMC,QAAU,OAAQ4D,EAAE2Y,YAAc,QAC1F,OAEP+jH,GAAK,SAAU3nI,GACXA,EAAE4nI,SAAU,EAAI5nI,EAAE0nI,QAAS,EAC3B,IAAIz8H,EAAIjL,EAAEqpD,IAAMt+C,EAAE+uH,SAAS,YAAa,OACpCh+H,EAAI,WACAkE,EAAE4nI,SAAU,EAAI5nI,EAAE0nI,QAAS,EAAI1nI,EAAE6nI,aAAe7nI,EAAE6nI,aAAa7nI,GAAKA,EAAEqpD,IAAM,KAAMp+C,EAAE68H,OAAS78H,EAAE88H,QAAU,KAAM98H,EAAI,MAE3H,OAAOA,EAAE68H,OAAShsI,EAAGmP,EAAE88H,QAAU,WAC7B/nI,EAAE6mI,WAAY,EAAI/qI,KACnBmP,EAAE1D,IAAMvH,EAAEuH,IAAK0D,GAEtB+8H,GAAK,SAAUhoI,EAAGiL,GACd,OAAOjL,EAAEuH,KAAOvH,EAAE6mI,WAAa7mI,EAAEogD,WAAan1C,IAAMjL,EAAEogD,UAAUxF,UAAY,IAAK56C,EAAEogD,UAAUxF,UAAYn/C,EAAE0rI,SAASh9H,QAAQ,QAASnK,EAAEuH,MAAM,QAAM,GAEvJ03H,GAAK,SAAUj/H,EAAGiL,EAAGnP,GACjB,GAAIkE,EAAEuH,IAAK,CACP0D,IAAMA,EAAIjL,EAAEogD,UAAU6nF,WACtB,IAAIlsI,EAAID,EAAIkE,EAAEu4C,EAAI76C,KAAKyiC,MAAMngC,EAAEu4C,EAAIv4C,EAAE++H,UACjCh0H,EAAIjP,EAAIkE,EAAEq4C,EAAI36C,KAAKyiC,MAAMngC,EAAEq4C,EAAIr4C,EAAE++H,UACrC/+H,EAAE4jB,cAAgB5jB,EAAE0nI,SAAW1nI,EAAE4jB,YAAYxc,MAAM4b,MAAQjnB,EAAI,KAAMiE,EAAE4jB,YAAYxc,MAAM6b,OAASlY,EAAI,MAAOE,EAAE7D,MAAM4b,MAAQjnB,EAAI,KAAMkP,EAAE7D,MAAM6b,OAASlY,EAAI,OAGpKm9H,GAAK,WACD,GAAIjB,GAAGhjI,OAAQ,CACX,IAAK,IAAIjE,EAAGiL,EAAI,EAAGA,EAAIg8H,GAAGhjI,OAAQgH,KAAKjL,EAAIinI,GAAGh8H,IAAMu7D,OAAOtiE,QAAUlE,EAAEkE,OAASsjI,GAAGxnI,EAAEkE,MAAOlE,EAAE8lC,KAAM9lC,EAAEmoI,QAASnoI,EAAEqpD,IAAK,EAAIrpD,EAAEooI,kBAC5HnB,GAAK,KAGjB9I,GAAG,aAAc,CACbC,cAAe,CACXiK,aAAc,SAAUroI,GACpBA,EAAIq+H,GAAGr+H,GACP,IAAIiL,EAAI62H,GAAG9hI,GACXiL,KAAOA,EAAEy8H,SAAWz8H,EAAE28H,SAAWtzG,KAAOmqG,GAAG,cAAez+H,EAAGiL,GAAIA,EAAE1D,KAAOogI,GAAG18H,KAEjFq9H,eAAgB,WACZv9H,EAAEmnB,OAAOz2B,EAAGyrI,IAAI,GAAK1oI,EAAEs0F,MAAQ2zC,GAAK3qI,EAAGgmI,GAAKtjI,EAAE+pI,UAAWjK,GAAK7iI,EAAE6rI,cAAoB7rI,EAAE4+C,KAAMikF,KAAO,IAAM7iI,EAAE4+C,MAAO,GAAKmkF,GAAG,gBAAgB,SAAUx+H,GAChJ,IAAIiL,EAAGnP,EAAIL,EAAE4rI,QACTtrI,EAAI,OAASiE,GAASA,GAAK,EAC3B+K,EAAIrN,KAAKoD,IAAIhF,EAAE,GAAIwiI,MACnBxzH,EAAIpN,KAAKoD,IAAIhF,EAAE,GAAIwiI,MACvB,IAAKrzH,EAAI,GACJlP,EAAI+O,EAAIC,IAAME,EAAGA,IAAKzM,EAAE6pI,aAAaxsI,EAAIoP,GAC9C,IAAKA,EAAI,GACJlP,EAAIgP,EAAID,IAAMG,EAAGA,IAAKzM,EAAE6pI,aAAaxsI,EAAIoP,MAC9CuzH,GAAG,iBAAiB,WACpBhgI,EAAEsgI,SAAS6H,cAAgBlrI,EAAEmrI,kBAAoBnrI,EAAEmrI,iBAAiB/qI,MACpE2iI,GAAG,yBAA0B0J,IAAK1J,GAAG,mBAAoB0J,IAAK1J,GAAG,WAAW,WAC5E,IAAK,IAAIx+H,EAAGiL,EAAI,EAAGA,EAAIw7H,GAAGxiI,OAAQgH,KAAKjL,EAAIymI,GAAGx7H,IAAMm1C,YAAcpgD,EAAEogD,UAAY,MAAOpgD,EAAE4jB,cAAgB5jB,EAAE4jB,YAAc,MAAO5jB,EAAEqpD,MAAQrpD,EAAEqpD,IAAM,MAAOrpD,EAAEwoI,YAAcxoI,EAAEwoI,UAAY,MAAOxoI,EAAE6mI,YAAc7mI,EAAE0nI,OAAS1nI,EAAE6mI,WAAY,GACvOI,GAAK,SAGbsB,UAAW,SAAUvoI,GACjB,OAAOA,GAAK,QAAK,IAAWymI,GAAGzmI,IAAKymI,GAAGzmI,IAE3CyoI,oBAAqB,WACjB,OAAOhtI,EAAE2rI,0BAA4BjlF,GAAK1mD,EAAE+/H,WAAa/J,OAAOzuG,MAAQ,MAE5Eg/G,WAAY,SAAUhiI,EAAGiL,GACrBxP,EAAE4+C,OAASpvC,EAAIozH,GAAGpzH,IAClB,IAAInP,EAAI0C,EAAE+pI,UAAUvoI,EAAEkE,OACtBpI,IAAMA,EAAEskD,UAAY,MACpB,IAAIrkD,EAAG+O,EAAItM,EAAE+pI,UAAUt9H,GACvB,GAAKH,EAAL,CACA2zH,GAAG,cAAexzH,EAAGH,GAAI9K,EAAEkE,MAAQ+G,EAAGjL,EAAE8lC,KAAOh7B,EAC/C,IAAIutC,EAAIvtC,EAAEs1C,UAAYr1C,EAAE+uH,SAAS,mBACjC,IAAKhvH,EAAEvD,KAAOuD,EAAEjE,OAASiE,EAAEjE,KAAK+4C,QAAUvH,EAAE/wC,YAAYwD,EAAEjE,MAAQwxC,EAAEuC,UAAY9vC,EAAEjE,MAAOmhI,GAAGl9H,GAAI+0H,GAAG/0H,EAAG6yH,KAAM7yH,EAAEvD,KAAOuD,EAAE+7H,WAAa/7H,EAAE48H,OAAQ58H,EAAEvD,MAAQuD,EAAE+7H,aAAc9qI,EAAIgP,EAAE+uH,SAAS,YAAa,QAAU1yH,MAAMqe,QAAU,EAAG1pB,EAAEwL,IAAMuD,EAAEvD,IAAK03H,GAAGn0H,EAAG/O,GAAIyrI,GAAGv8H,EAAGH,EAAGutC,EAAGt8C,QACjQ,CACD,GAAI+O,EAAE+8H,aAAe,SAAU/rI,GACvB,GAAIsb,EAAG,CACH,GAAIpX,GAAKA,EAAEkE,QAAU+G,EAAG,CACpB,GAAI+8H,GAAGlsI,GAAG,GAAK,OAAOA,EAAE+rI,aAAe/rI,EAAEutD,IAAM,KAAMw2E,GAAG/jI,EAAG6hI,IAAKuB,GAAGpjI,QAASkE,EAAEkE,QAAUrI,GAAK2C,EAAE+jI,sBAC/FzmI,EAAE2rI,eAAiBjD,IAAM1oI,EAAE8nB,cAAgB9nB,EAAE8nB,YAAYxc,MAAMC,QAAU,OAAQvL,EAAE8nB,YAAc,MAAQ41B,EAAEqP,YAAcq0E,IAAMsH,IAAMyC,GAAGhmI,KAAK,CACzI6kC,KAAMhqC,EACNqsI,QAAS9vF,EACTgR,IAAKvtD,EAAEutD,IACPnlD,MAAO+G,EACPu7D,OAAQxmE,EACRooI,kBAAkB,IACjBZ,GAAGv8H,EAAGnP,EAAGu8C,EAAGv8C,EAAEutD,IAAK6zE,GAAU,GAEtCphI,EAAE+rI,aAAe,KAAM/rI,EAAEutD,IAAM,KAAMo1E,GAAG,oBAAqBxzH,EAAGnP,KAErEiP,EAAE8uH,SAAShxE,UAAW,CACzB,IAAI70C,EAAI,mCACRA,GAAKlJ,EAAE49H,KAAO,GAAK,iCACnB,IAAIhtI,EAAIqP,EAAE+uH,SAAS9lH,EAAGlJ,EAAE49H,KAAO,MAAQ,IACvC59H,EAAE49H,OAAShtI,EAAE6L,IAAMuD,EAAE49H,MAAOzJ,GAAGn0H,EAAGpP,GAAI28C,EAAE/wC,YAAY5L,GAAIoP,EAAE8Y,YAAcloB,EAE5EoP,EAAE88H,SAAWD,GAAG78H,GAAItM,EAAEiqI,yBAA2B/B,IAAMltF,EAAEqP,UAAYo+E,GAAGhmI,KAAK,CACzE6kC,KAAMh7B,EACNq9H,QAAS9vF,EACTgR,IAAKv+C,EAAEu+C,IACPnlD,MAAO+G,EACPu7D,OAAQxmE,IACPwnI,GAAGv8H,EAAGH,EAAGutC,EAAGvtC,EAAEu+C,IAAK,GAAI,IAEhCq9E,IAAMz7H,IAAMpP,EAAIqjI,GAAGp0H,IAAMmyH,GAAK5kF,EAAEjxC,MAAO86H,GAAGp3H,EAAG/O,GAAK+O,EAAEu+C,MAAOrpD,EAAEuI,GAAGqyC,UAAY,GAAI56C,EAAEuI,GAAGjB,YAAY+wC,QAlC7Er4C,EAAEuI,GAAGqyC,UAAY,IAoCzC8nF,WAAY,SAAU1iI,GAClBA,EAAEqpD,MAAQrpD,EAAEqpD,IAAIy+E,OAAS9nI,EAAEqpD,IAAI0+E,QAAU,MAAO/nI,EAAE0nI,OAAS1nI,EAAE4nI,QAAU5nI,EAAEqpD,IAAMrpD,EAAEynI,eAAgB,MAI7G,IAAIkB,GAmCAC,GAnCIC,GAAK,GACTC,GAAK,SAAU9oI,EAAGiL,EAAGnP,GACjB,IAAIC,EAAI0L,SAASymD,YAAY,eACzBnjD,EAAI,CACAg+H,UAAW/oI,EACXhB,OAAQgB,EAAEhB,OACVgqI,aAAc/9H,EACdkrD,YAAar6D,GAAK,SAE1BC,EAAEsyD,gBAAgB,WAAW,GAAI,EAAItjD,GAAI/K,EAAEhB,OAAO8yB,cAAc/1B,IAExEoiI,GAAG,MAAO,CACNC,cAAe,CACX6K,QAAS,WACLzK,GAAG,kBAAmBhgI,EAAE0qI,YAAa1K,GAAG,eAAgBhgI,EAAE2qI,cAAe3K,GAAG,WAAW,WACnFqK,GAAK,GAAIF,GAAK,SAGtBO,WAAY,SAAUlpI,GAClBA,EAAEiE,OAAS,IAAM2+C,aAAa+lF,IAAKA,GAAK,OAE5CQ,aAAc,SAAUnpI,EAAGiL,GACvB,GAAIA,IAAM4xH,IAAMh0H,IAAM03H,GAAI,CACtB,IAAIzkI,EAAImP,EACR,GAAI09H,KAAO/lF,aAAa+lF,IAAKA,GAAK,KAxdzC,SAAU3oI,EAAGiL,GACd,OAAOvN,KAAKm4B,IAAI71B,EAAEs0B,EAAIrpB,EAAEqpB,GA1VxB,IA0VkC52B,KAAKm4B,IAAI71B,EAAEw4C,EAAIvtC,EAAEutC,GA1VnD,GAizBgD4wF,CAAGttI,EAAG+sI,KAAM,YAAYpK,GAAG,YAAa3iI,GAChF,GAAI,UAAYmP,EAAEpF,KAAM,YAAYijI,GAAG9oI,EAAGiL,EAAG,SAE7C,GAAI,WADIjL,EAAEhB,OAAO4gD,QAAQL,eACHx0C,EAAEkW,SAASjhB,EAAEhB,OAAQ,oBAAqB,YAAY8pI,GAAG9oI,EAAGiL,GAClFu0H,GAAGqJ,GAAI/sI,GAAI6sI,GAAK1uG,YAAW,WACvB6uG,GAAG9oI,EAAGiL,GAAI09H,GAAK,OAChB,UAMnBxK,GAAG,cAAe,CACdC,cAAe,CACXiL,gBAAiB,WACb1vF,IAAMwI,EAAIq8E,GAAG,aAAa,WACtBhgI,EAAE8qI,sBACD9qI,EAAE8qI,kBAAiB,KAE5BA,iBAAkB,SAAUr+H,GACxB29H,GAAK,GACL,IAAI9sI,EAAI,kCACR0iI,GAAG,cAAc,WACbzzH,EAAE9N,KAAK+C,EAAGlE,EAAG0C,EAAE+qI,qBACf/K,GAAG,gBAAgB,WACnBoK,IAAM79H,EAAE+jC,OAAO9uC,EAAGlE,EAAG0C,EAAE+qI,qBACvB/qI,EAAEgrI,eAAgB,EACtB,IAAIztI,EAAG+O,EAAI,WACHtM,EAAEgrI,gBAAkBz+H,EAAE+V,YAAY9gB,EAAG,mBAAoBxB,EAAEgrI,eAAgB,GAAK,EAAIhsI,EAAIuN,EAAE0Y,SAASzjB,EAAG,sBAAwB+K,EAAE+V,YAAY9gB,EAAG,sBAAuBq4C,KAE1KA,EAAI,WACAt8C,IAAMgP,EAAE+V,YAAY9gB,EAAG,kBAAmBjE,GAAI,IAEtDyiI,GAAG,SAAU1zH,GAAI0zH,GAAG,cAAe1zH,GAAI0zH,GAAG,eAAe,WACrDhgI,EAAEgrI,gBAAkBztI,GAAI,EAAIgP,EAAE0Y,SAASzjB,EAAG,sBAC1Cw+H,GAAG,YAAanmF,GAAIptC,GAAKH,KAEjCy+H,iBAAkB,SAAUvpI,GACxB,GAAIxC,GAAKgB,EAAEsgI,SAASC,SAAU,OAAOtjI,EAAE+gI,SAAW/gI,EAAEigI,eAAiB6E,IAAM3D,EAAI58H,EAAEmrB,iBAAmBjX,GAAKxW,KAAKm4B,IAAI71B,EAAE0zD,QAAU,IAAMh4D,GAAI,EAAI8C,EAAEqJ,WAAW,EACzJ,GAAI7H,EAAE8mB,kBAAmB8hH,GAAGt0G,EAAI,EAAG,WAAYt0B,EAAG,IAAMA,EAAEk0D,WAAa00E,GAAGt0G,EAAI,GAAKt0B,EAAEyzD,OAAQm1E,GAAGpwF,EAAI,GAAKx4C,EAAE0zD,SAAWk1E,GAAGt0G,EAAIt0B,EAAEyzD,OAAQm1E,GAAGpwF,EAAIx4C,EAAE0zD,aAC3I,GAAI,eAAgB1zD,EAAGA,EAAEg0D,cAAgB40E,GAAGt0G,GAAK,IAAMt0B,EAAEg0D,aAAch0D,EAAEi0D,YAAc20E,GAAGpwF,GAAK,IAAMx4C,EAAEi0D,YAAc20E,GAAGpwF,GAAK,IAAMx4C,EAAEm0D,eACrI,CACD,KAAM,WAAYn0D,GAAI,OACtB4oI,GAAGpwF,EAAIx4C,EAAEypI,OAEb7J,GAAGpiI,GAAG,GACN,IAAIyN,EAAIyyH,GAAGppG,EAAIs0G,GAAGt0G,EACdx4B,EAAI4hI,GAAGllF,EAAIowF,GAAGpwF,GACjB/8C,EAAE+gI,OAASvxH,GAAK+xH,GAAGl8H,IAAIwzB,GAAKrpB,GAAK+xH,GAAG70H,IAAImsB,GAAKx4B,GAAKkhI,GAAGl8H,IAAI03C,GAAK18C,GAAKkhI,GAAG70H,IAAIqwC,IAAMx4C,EAAEmrB,iBAAkB3sB,EAAE6jI,MAAMp3H,EAAGnP,IAEpH4tI,kBAAmB,SAAUz+H,GACzBA,EAAIA,GAAK,CACLqpB,EAAGqpG,GAAGrpG,EAAI,EAAIupG,GAAGvpG,EACjBkkB,EAAGmlF,GAAGnlF,EAAI,EAAIqlF,GAAGrlF,GAErB,IAAI18C,EAAIL,EAAE4gI,kBAAiB,EAAI79H,EAAEsgI,UAC7B/iI,EAAIyB,IAAM1B,EACd0C,EAAEgrI,eAAiBztI,EAAGyC,EAAEmkI,OAAO5mI,EAAIyC,EAAEsgI,SAASxC,iBAAmBxgI,EAAGmP,EAAG,KAAMF,GAAGhP,EAAI,SAAW,OAAS,SAASiE,EAAG,uBAIhI,IAAI2pI,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAK,CACjD99F,SAAS,EACT+9F,WAAY,GAEhBC,GAAK,WACD,OAAOJ,GAAGnd,KAAK54E,UAAU,IAE7Bo2F,GAAK,WACDf,IAAM/mF,aAAa+mF,IAAKE,IAAMjnF,aAAainF,KAE/Cc,GAAK,WACD,IAAI3qI,EAAIyqI,KACJx/H,EAAI,GACR,GAAIjL,EAAEiE,OAAS,EAAG,OAAOgH,EACzB,IAAInP,EAAGC,EAAIiE,EAAE2B,MAAM,KACnB,IAAK7F,EAAI,EAAGA,EAAIC,EAAEkI,OAAQnI,IACtB,GAAIC,EAAED,GAAI,CACN,IAAIiP,EAAIhP,EAAED,GAAG6F,MAAM,KACnBoJ,EAAE9G,OAAS,IAAMgH,EAAEF,EAAE,IAAMA,EAAE,IAErC,GAAItP,EAAEmvI,YAAa,CACf,IAAIpsI,EAAIyM,EAAE4/H,IACV,IAAK5/H,EAAE4/H,IAAM,EAAG/uI,EAAI,EAAGA,EAAI2qI,GAAGxiI,OAAQnI,IAClC,GAAI2qI,GAAG3qI,GAAG+uI,MAAQrsI,EAAG,CACjByM,EAAE4/H,IAAM/uI,EACR,YAELmP,EAAE4/H,IAAMjrH,SAAS3U,EAAE4/H,IAAK,IAAM,EACrC,OAAO5/H,EAAE4/H,IAAM,IAAM5/H,EAAE4/H,IAAM,GAAI5/H,GAErC6/H,GAAK,SAALA,IACI,GAAIjB,IAAMjnF,aAAainF,IAAKtJ,IAAM3D,EAAeiN,GAAK5vG,WAAW6wG,EAAI,SAArE,CACAhB,GAAKlnF,aAAagnF,IAAME,IAAK,EAC7B,IAAI9pI,EAAInE,EAAI,EACRoP,EAAI62H,GAAGjmI,GACXoP,EAAE3N,eAAe,SAAW0C,EAAIiL,EAAE4/H,KAClC,IAAI/uI,EAAImuI,GAAK,QAAUxuI,EAAE+uI,WAAa,QAAUxqI,EAChDkqI,KAAO,IAAMG,GAAGnd,KAAKjlH,QAAQnM,KAAOsuI,IAAK,GACzC,IAAIruI,EAAIsuI,GAAGvjE,KAAKnlE,MAAM,KAAK,GAAK,IAAM7F,EACtCwuI,GAAK,IAAMxuI,IAAM+B,OAAOktI,SAAS7d,MAAQzgF,QAAQy9F,GAAK,eAAiB,aAAa,GAAIziI,SAAS0xD,MAAOp9D,GAAKmuI,GAAKG,GAAGlgI,QAAQpO,GAAKsuI,GAAGnd,KAAOpxH,EAAGouI,IAAK,EAAIN,GAAK3vG,YAAW,WACpK6vG,IAAK,IACN,MAEX3L,GAAG,UAAW,CACVC,cAAe,CACX4M,YAAa,WACT,GAAIjgI,EAAEmnB,OAAOz2B,EAAG8uI,IAAI,GAAK9uI,EAAEgxC,QAAS,CAChC49F,GAAKxsI,OAAOktI,SAAUX,IAAK,EAAID,IAAK,EAAID,IAAK,EAAID,GAAKQ,KAAMH,GAAK,cAAe79F,QAASw9F,GAAGhiI,QAAQ,SAAW,IAAiCgiI,IAA3BA,GAAKA,GAAGtoI,MAAM,SAAS,IAAYA,MAAM,SAAS,IAAK68H,GAAG,cAAehgI,EAAEysI,WAAYzM,GAAG,gBAAgB,WAC3NzzH,EAAE+jC,OAAOjxC,OAAQ,aAAcW,EAAE0sI,iBAErC,IAAIlrI,EAAI,WACJgqI,IAAK,EAAIG,KAAOC,GAAK39F,QAAQ0+F,OAASlB,GAAKI,GAAGnd,KAAO+c,GAAKK,GAAK79F,QAAQ2+F,UAAU,GAAI3jI,SAAS0xD,MAAOkxE,GAAGgB,SAAWhB,GAAGiB,QAAUjB,GAAGnd,KAAO,IAAKwd,MAEnJlM,GAAG,gBAAgB,WACf9iI,GAAKsE,OACLw+H,GAAG,WAAW,WACdwL,IAAMhqI,OACNw+H,GAAG,eAAe,WAClB3iI,EAAI8uI,KAAKE,OAEb,IAAI5/H,EAAIg/H,GAAGhiI,QAAQ,QACnBgD,GAAK,IAA+B,OAAzBg/H,GAAKA,GAAG31F,UAAU,EAAGrpC,IAAe7I,OAAO,KAAO6nI,GAAKA,GAAG7nI,MAAM,GAAI,KAAM63B,YAAW,WAC5F7iB,GAAKrM,EAAE9N,KAAKY,OAAQ,aAAcW,EAAE0sI,gBACrC,MAGXA,aAAc,WACV,OAAOT,OAASR,IAAME,IAAK,OAAS3rI,EAAEqJ,cAAgBiiI,KAAOC,IAAK,EAAIvrI,EAAE8jI,KAAKqI,KAAKE,KAAMd,IAAK,KAEjGkB,UAAW,WACPP,KAAMX,KAAOG,GAAKP,GAAK1vG,WAAW6wG,GAAI,KAAOA,UAGrD//H,EAAEmnB,OAAO1zB,EAAGoiI,QAQtB,SAAU5gI,EAAGiL,GACX,mBAAqBm4C,QAAUA,MAAaA,OAAOn4C,GAAK,+BAAmB1P,QAAnB,cAAmBA,UAAUC,EAAOD,QAAU0P,IAAMpN,OAAO0tI,qBAAuBtgI,IAD5I,CAEA,GAAM,WAwTJ,OAtTQ,SAAUjL,EAAGiL,GACjB,IAAInP,EAAGC,EAAGgP,EAAGvM,EAAGsM,EAAGutC,EAAG58C,EAAG2b,EAAGpD,EAAGtY,EAAGG,EAAGqB,EAAGhB,EAAGqB,EAAG0gB,EAAG1hB,EAAMI,EAAG46C,EAAGe,EAAIv2C,KAC7Dw2C,GAAI,EACJjkB,GAAI,EACJkkB,GAAI,EACJt6B,EAAI,CACAstH,SAAU,CACNjmH,IAAK,GACLosC,OAAQ,QAEZ85E,eAAgB,CAAC,OAAQ,UAAW,YAAa,KAAM,WACvDC,WAAY,IACZC,kBAAmB,IACnBC,sBAAuB,IACvBC,iBAAkB,SAAU7rI,EAAGiL,GAC3B,OAAOjL,EAAEm5D,OAASluD,EAAE8R,SAAS,GAAG69B,UAAY56C,EAAEm5D,OAAO,IAAOluD,EAAE8R,SAAS,GAAG69B,UAAY,IAAI,IAE9FkxF,SAAS,EACTC,WAAW,EACXC,cAAc,EACdC,QAAQ,EACRC,SAAS,EACTC,WAAW,EACXC,SAAS,EACTC,aAAa,EACbC,YAAY,EACZC,qBAAqB,EACrBC,yBAAyB,EACzBC,aAAc,CAAC,CACX9nI,GAAI,WACJ4mB,MAAO,oBACPmhH,IAAK,wDACN,CACC/nI,GAAI,UACJ4mB,MAAO,QACPmhH,IAAK,8DACN,CACC/nI,GAAI,YACJ4mB,MAAO,SACPmhH,IAAK,oGACN,CACC/nI,GAAI,WACJ4mB,MAAO,iBACPmhH,IAAK,oBACLC,UAAU,IAEdC,oBAAqB,WACjB,OAAO5sI,EAAE8+H,SAASv3H,KAAO,IAE7BslI,mBAAoB,WAChB,OAAOhvI,OAAOktI,SAASjkE,MAE3BgmE,gBAAiB,WACb,OAAO9sI,EAAE8+H,SAAS3lE,OAAS,IAE/B4zE,kBAAmB,MACnBC,iBAAkB,MAEtB74H,EAAI,SAAUnU,GACV,GAAIzD,EAAG,OAAO,EACdyD,EAAIA,GAAKnC,OAAOg8B,MAAO5b,EAAEytH,YAAcztH,EAAEu9G,YAAcxnH,GAAK2oH,IAC5D,IAAK,IAAI7gI,EAAGC,EAAiCyC,GAA1BwB,EAAEhB,QAAUgB,EAAE4pD,YAAkBzJ,aAAa,UAAY,GAAIr1C,EAAI,EAAGA,EAAI0J,EAAEvQ,OAAQ6G,KAAKhP,EAAI0Y,EAAE1J,IAAMmiI,OAASzuI,EAAEyJ,QAAQ,SAAWnM,EAAEE,OAAS,IAAMF,EAAEmxI,QAASlxI,GAAI,GACpL,GAAIA,EAAG,CACHiE,EAAE8mB,iBAAmB9mB,EAAE8mB,kBAAmBvqB,GAAI,EAC9C,IAAI87C,EAAIptC,EAAE4uH,SAASoB,aAAe,IAAM,GACpChhG,YAAW,WACX19B,GAAI,IACL87C,KAMXpvC,EAAI,SAAUjJ,EAAGlE,EAAGC,GAChBkP,GAAGlP,EAAI,MAAQ,UAAY,SAASiE,EAAG,SAAWlE,IAEtDumD,EAAI,WACA,IAAIriD,EAAI,IAAMie,EAAEqpH,gBAChBtnI,IAAMzC,IAAM0L,EAAElN,EAAG,gBAAiBiE,GAAIzC,EAAIyC,IAE9CkU,EAAI,WACAjL,EAAExN,EAAG,sBAAuB+8C,IAEhC1wC,EAAI,WACA,OAAO0wC,GAAKA,IAAQvtC,EAAE6V,YAAYrlB,EAAG,8BAA+Bw+B,YAAW,WAC3Eue,GAAKtkC,MACN,OAASA,IAAK+lB,YAAW,WACxBue,GAAKvtC,EAAEwY,SAAShoB,EAAG,gCACpB,KAAM+8C,GAAKc,KAAK,GAEvB6I,EAAI,SAAUl3C,GAEV,IAAInP,GADJmP,EAAIA,GAAKpN,OAAOg8B,OACN76B,QAAUiM,EAAE2+C,WACtB,OAAO5pD,EAAE6gI,MAAM,iBAAkB51H,EAAGnP,KAAIA,EAAEgrE,SAAOhrE,EAAEytE,aAAa,cAAoB1rE,OAAO6J,KAAK5L,EAAEgrE,KAAM,aAAc,2FAA6FjpE,OAAO4zH,OAAS/zH,KAAKyiC,MAAMsxF,OAAOzuG,MAAQ,EAAI,KAAO,MAAOw1B,GAAK1wC,KAAK,KAE7RwxC,EAAI,WACA,IAAK,IAAIt5C,EAAMlE,EAAGC,EAAGgP,EAAGvM,EAAI,GAAIsM,EAAI,EAAGA,EAAImT,EAAEwuH,aAAaxoI,OAAQ6G,IAAK9K,EAAIie,EAAEwuH,aAAa3hI,GAAIhP,EAAImiB,EAAE2uH,oBAAoB5sI,GAAIjE,EAAIkiB,EAAE4uH,mBAAmB7sI,GAAI+K,EAAIkT,EAAE6uH,gBAAgB9sI,GAAoLxB,GAAK,YAAjLwB,EAAE0sI,IAAIviI,QAAQ,UAAW+iI,mBAAmBnxI,IAAIoO,QAAQ,gBAAiB+iI,mBAAmBpxI,IAAIqO,QAAQ,oBAAqBrO,GAAGqO,QAAQ,WAAY+iI,mBAAmBniI,IAA4B,yCAA2C/K,EAAE2E,GAAK,KAAO3E,EAAE2sI,SAAW,WAAa,IAAM,IAAM3sI,EAAEurB,MAAQ,OAAQtN,EAAEkvH,sBAAwB3uI,EAAIyf,EAAEkvH,oBAAoBntI,EAAGxB,IACliB/C,EAAEshB,SAAS,GAAG69B,UAAYp8C,EAAG/C,EAAEshB,SAAS,GAAG4+C,QAAUxZ,GAEzDH,EAAI,SAAUhiD,GACV,IAAK,IAAIlE,EAAI,EAAGA,EAAImiB,EAAEwtH,eAAexnI,OAAQnI,IACzC,GAAImP,EAAEgW,SAASjhB,EAAG,SAAWie,EAAEwtH,eAAe3vI,IAAK,OAAO,GAElE4gI,EAAI,EACJC,EAAI,WACA/5E,aAAarL,GAAImlF,EAAI,EAAG1oH,GAAKskC,EAAE80F,SAAQ,IAE3CzzF,EAAI,SAAU35C,GAEV,IAAIiL,GADJjL,EAAIA,GAAQnC,OAAOg8B,OACTqV,eAAiBlvC,EAAEivC,UAC7BhkC,GAAK,SAAWA,EAAE8sC,WAAa6K,aAAarL,GAAIA,EAAItd,YAAW,WAC3Dqe,EAAE80F,SAAQ,KACXnvH,EAAE0tH,qBAcTnrI,EAAI,SAAUR,GACV9C,IAAM8C,IAAMiJ,EAAEpN,EAAG,qBAAsBmE,GAAI9C,EAAI8C,IAEnDS,EAAI,SAAUT,GACV,IAAIlE,EAAIkE,EAAEunI,KACV,IA5DQvnI,EAAEumI,mBAAqBtoH,EAAEu9G,WAAa/J,OAAOzuG,MAAQ/E,EAAE+uH,iBA4DtD,CACL,IAAIliI,EAAImT,EAAEutH,SACV,GAAIvtH,EAAE8tH,WAAa,SAAWjhI,EAAE6mD,OAC5B,GAAInzD,KAAMA,EAAIyM,EAAE6uH,SAAS,sCAAwCxyH,YAAY2D,EAAE6uH,SAAS,0BAA2B/9H,EAAE8jE,aAAarhE,EAAGuM,GAAIE,EAAEwY,SAAS1nB,EAAG,kBAAmBkiB,EAAE4tH,iBAAiB7rI,EAAGxB,GAAG,GAAK,CACpM,IAAI65C,EAAI75C,EAAEixB,aACV3zB,EAAE61D,OAAS/xC,SAASy4B,EAAG,KAAO,QAC3Bv8C,EAAE61D,OAAS7mD,EAAEya,SACnBzpB,EAAE61D,OAAS,SAAW7mD,EAAE6mD,OAAS,EAAI7mD,EAAE6mD,OAC5C71D,EAAEypB,IAAMza,EAAEya,SACPzpB,EAAEypB,IAAMzpB,EAAE61D,OAAS,GAoB9Bn9C,EAAI,CAAC,CACDxY,KAAM,UACNirB,OAAQ,YACRomH,OAAQ,SAAUrtI,GACd+K,EAAI/K,IAET,CACChE,KAAM,cACNirB,OAAQ,UACRomH,OAAQ,SAAUrtI,GACdvE,EAAIuE,GAERitI,MAAO,WACHnlI,MAEL,CACC9L,KAAM,gBACNirB,OAAQ,UACRomH,OAAQ,SAAUrtI,GACdq4C,EAAIr4C,GAERitI,MAAO,WACHnlI,MAEL,CACC9L,KAAM,eACNirB,OAAQ,SACRgmH,MAAOjtI,EAAE0pI,mBACV,CACC1tI,KAAM,UACNirB,OAAQ,YACRomH,OAAQ,SAAUrtI,GACd8K,EAAI9K,IAET,CACChE,KAAM,gBACNirB,OAAQ,UACRgmH,MAAOjtI,EAAE6H,OACV,CACC7L,KAAM,sBACNirB,OAAQ,UACRgmH,MAAOjtI,EAAE8wB,MACV,CACC90B,KAAM,uBACNirB,OAAQ,UACRgmH,MAAOjtI,EAAEoY,MACV,CACCpc,KAAM,aACNirB,OAAQ,eACRgmH,MAAO,WACHnxI,EAAEwxI,eAAiBxxI,EAAEyxI,OAASzxI,EAAEouB,UAErC,CACCluB,KAAM,YACNirB,OAAQ,cACRomH,OAAQ,SAAUrtI,GACdnE,EAAImE,KAehBs4C,EAAElc,KAAO,WACLnxB,EAAEinB,OAAOlyB,EAAElB,QAASof,GAAG,GAAKD,EAAIje,EAAElB,QAAS/C,EAAIkP,EAAE+uH,gBAAgBh6H,EAAEwhI,WAAY,YAAa9lI,EAAIsE,EAAE8gI,OAnF9F,WAIA,IAAI9gI,EAHJtE,EAAE,kBAAkB,SAAUsE,GAC1Bs0B,GAAK,IAAMt0B,EAAIs4C,EAAEk1F,gBAAkBl5G,GAAKt0B,GAAK,KAAOs4C,EAAEm1F,kBAG1D/xI,EAAE,gBAAgB,SAAUuP,GACxBqpB,GAAK,GAAKrpB,GAAKqtC,EAAEk1F,eAAgBxtI,GAAI,GAAMA,IAAMs0B,GAAKrpB,EAAI,IAAMqtC,EAAEm1F,kBAClE/xI,EAAE,oBAAoB,YACtBsE,GAAI,KAAUs0B,GAAKgkB,EAAEm1F,kBA2E6EvzH,GAAKxe,EAAE,eAAgB48C,EAAEwf,QAASp8D,EAAE,aAAa,SAAUuP,GACjK,IAAInP,EAAIkE,EAAE8+H,SAASxC,iBACnBt8H,EAAEihI,iBAAmBnlI,EAAIkE,EAAE2iI,OAAO7mI,EAAGmP,EAAG,KAAOjL,EAAE2iI,OAAO1kH,EAAEo+G,kBAAiB,EAAIr8H,EAAE8+H,UAAW7zH,EAAG,QAC/FvP,EAAE,oBAAoB,SAAUsE,EAAGiL,EAAGnP,GACtC,IAAIC,EAAIiE,EAAEhB,QAAUgB,EAAE4pD,WACtB7tD,GAAKA,EAAEokD,aAAa,UAAYngD,EAAE6F,KAAKoC,QAAQ,UAAY,IAAMlM,EAAEokD,aAAa,SAASl4C,QAAQ,aAAe,GAAK,qBAAqB+C,KAAKjP,EAAE6jD,YAAc9jD,EAAE8nI,SAAU,MAC3KloI,EAAE,cAAc,WAChBuP,EAAEhO,KAAKlB,EAAG,gBAAiBoY,GAAIlJ,EAAEhO,KAAK+C,EAAEwhI,WAAY,UAAWlpF,EAAEo1F,aAAc1tI,EAAEumI,mBAAqBt7H,EAAEhO,KAAK+C,EAAEwhI,WAAY,YAAalpF,EAAEq1F,gBAC1IjyI,EAAE,gBAAgB,WAClB88C,GAAK1wC,IAAKnL,GAAK25D,cAAc35D,GAAIsO,EAAE6jC,OAAOrnC,SAAU,WAAYkyC,GAAI1uC,EAAE6jC,OAAOrnC,SAAU,YAAak1H,GAAI1xH,EAAE6jC,OAAO/yC,EAAG,gBAAiBoY,GAAIlJ,EAAE6jC,OAAO9uC,EAAEwhI,WAAY,UAAWlpF,EAAEo1F,aAAcziI,EAAE6jC,OAAO9uC,EAAEwhI,WAAY,YAAalpF,EAAEq1F,aAAc7xI,IAAMmP,EAAE6jC,OAAOrnC,SAAU3L,EAAE8xI,OAAQt1F,EAAEu1F,kBAAmB/xI,EAAEwxI,iBAAmBrvH,EAAE49G,sBAAwB,EAAG//H,EAAEyxI,QAASzxI,EAAI,SACxWJ,EAAE,WAAW,WACbuiB,EAAE8tH,YAAcvtI,GAAKzC,EAAE0lD,YAAYjjD,GAAIyM,EAAE6V,YAAY/V,EAAG,yBAA0BtP,IAAMA,EAAEshB,SAAS,GAAG4+C,QAAU,MAAO1wD,EAAE6V,YAAY/kB,EAAG,wBAAyBkP,EAAEwY,SAAS1nB,EAAG,oBAAqBu8C,EAAE80F,SAAQ,MAC9MnvH,EAAE69G,uBAAyB7wH,EAAE6V,YAAY/kB,EAAG,oBAAqBL,EAAE,iBAAiB,WACpFuiB,EAAE69G,uBAAyB7wH,EAAE6V,YAAY/kB,EAAG,uBAC5CL,EAAE,kBAAkB,WACpBuP,EAAEwY,SAAS1nB,EAAG,uBACdL,EAAE,sBAAuB+E,GA7BzB,WACA,IAAIT,EAAGlE,EAAGiP,EAAGvM,EAAI,SAAUzC,GACvB,GAAIA,EACA,IAAK,IAAIyC,EAAIzC,EAAEkI,OAAQ6G,EAAI,EAAGtM,EAAIsM,EAAGA,IAAK,CACtC9K,EAAIjE,EAAE+O,GAAIhP,EAAIkE,EAAE8/C,UAChB,IAAK,IAAIzH,EAAI,EAAGA,EAAI7jC,EAAEvQ,OAAQo0C,IAAKttC,EAAIyJ,EAAE6jC,GAAIv8C,EAAEmM,QAAQ,SAAW8C,EAAE/O,OAAS,IAAMiiB,EAAElT,EAAEkc,SAAWhc,EAAE6V,YAAY9gB,EAAG,2BAA4B+K,EAAEsiI,QAAUtiI,EAAEsiI,OAAOrtI,IAAMiL,EAAEwY,SAASzjB,EAAG,8BAGpMxB,EAAEzC,EAAEghB,UACJ,IAAIjS,EAAIG,EAAE+uH,gBAAgBj+H,EAAG,iBAC7B+O,GAAKtM,EAAEsM,EAAEiS,UAmBoB47B,GAAK16B,EAAEiuH,SAAW7zF,GAAK58C,IAAM+8C,GAAI,GAAK6J,IAzGnEpkC,EAAEytH,YAAchwI,EAAE,aAAa,WAC3BuP,EAAEhO,KAAKwK,SAAU,YAAak1H,GAAI1xH,EAAEhO,KAAKwK,SAAU,WAAYkyC,GAAIh9C,EAAIk6D,aAAY,WAC1E,KAAL6lE,GAAgBpkF,EAAE80F,SAAQ,KAC3BnvH,EAAEytH,WAAa,MA/BtBztH,EAAE+tH,eAAiB/gI,EAAE4uH,SAASoB,eAAiBn/H,IAAMA,EAAIw8C,EAAEw1F,oBAAqBhyI,GAAKmP,EAAEhO,KAAKwK,SAAU3L,EAAE8xI,OAAQt1F,EAAEu1F,kBAAmBv1F,EAAEu1F,mBAAoB5iI,EAAEwY,SAASzjB,EAAEuhI,SAAU,sBAAwBt2H,EAAE6V,YAAY9gB,EAAEuhI,SAAU,sBAGpOtjH,EAAEouH,cAAgB7rI,GAAE,GAAK9E,EAAE,gBAAgB,WACvCknD,aAAa1mD,GAAIA,EAAI+9B,YAAW,WAC5Bj6B,EAAE8+H,UAAY9+H,EAAE8+H,SAAS8I,UAAY5nI,EAAEyoI,uBAAyBzoI,EAAE8+H,SAASz1E,MAAQrpD,EAAE8+H,SAASz1E,IAAI0kF,eAAiBvtI,GAAE,GAAMA,GAAE,KAC9Hyd,EAAE2tH,0BACLlwI,EAAE,qBAAqB,SAAUuP,EAAGnP,GACpCkE,EAAE8+H,WAAahjI,GAAK0E,GAAE,QA8H/B83C,EAAE80F,QAAU,SAAUptI,GACrBgU,EAAIhU,EAAGiJ,EAAElN,EAAG,WAAYiE,IACzBs4C,EAAEwf,OAAS,WACVxjC,GAAKt0B,EAAE8+H,UAAYxmF,EAAE01F,uBAAwB/vH,EAAE8tH,YAAc9tH,EAAE4tH,iBAAiB7rI,EAAE8+H,SAAU/zH,GAAI9B,EAAE8B,EAAG,kBAAmB/K,EAAE8+H,SAAS3lE,QAAS5gB,GAAI,GAAMA,GAAI,EAAIC,GAAK1wC,IAAKu6C,KACzK/J,EAAEu1F,iBAAmB,SAAU9xI,GAC9BA,GAAKk+B,YAAW,WACZj6B,EAAEqgI,gBAAgB,EAAGp1H,EAAE8uH,gBACxB,IAAK9uH,GAAGnP,EAAEwxI,eAAiB,MAAQ,UAAY,SAASttI,EAAEuhI,SAAU,aACxEjpF,EAAE01F,qBAAuB,WACxB/vH,EAAEkuH,YAAcrhI,EAAE8vC,UAAY56C,EAAEkhI,kBAAoB,EAAIjjH,EAAE8uH,kBAAoB9uH,EAAEqpH,kBACjFhvF,EAAEo1F,YAAc,SAAU5xI,GAEzB,IAAIC,GADJD,EAAIA,GAAK+B,OAAOg8B,OACN76B,QAAUlD,EAAE8tD,WACtB,IAAKrtD,EACD,GAAIT,EAAE2tI,QAAU,UAAY3tI,EAAE2tI,OAAOtzE,YAAa,CAC9C,GAAInU,EAAEjmD,GAAI,YAAYiE,EAAE6H,QACxBoD,EAAEgW,SAASllB,EAAG,eAAiB,IAAMiE,EAAEihI,gBAAkBjhI,EAAEihI,gBAAkBjhI,EAAE8+H,SAASC,SAAW9gH,EAAEuuH,yBAA2BxsI,EAAE6H,QAAU7H,EAAE0pI,kBAAkB5tI,EAAE2tI,OAAOT,oBACtK,GAAI/qH,EAAEsuH,sBAAwBj4G,EAAIgkB,EAAEk1F,eAAiBl1F,EAAEm1F,gBAAiBxvH,EAAEquH,aAAerhI,EAAEgW,SAASllB,EAAG,cAAgBimD,EAAEjmD,IAAK,YAAYiE,EAAE6H,SACxJywC,EAAEq1F,YAAc,SAAU3tI,GAEzB,IAAIiL,GADJjL,EAAIA,GAAKnC,OAAOg8B,OACN76B,QAAUgB,EAAE4pD,WACtB3gD,EAAElN,EAAG,iBAAkBimD,EAAE/2C,KAC1BqtC,EAAEk1F,aAAe,WAChBviI,EAAEwY,SAAS1nB,EAAG,oBAAqBu4B,GAAI,GACxCgkB,EAAEm1F,aAAe,WAChBn5G,GAAI,EAAIikB,GAAKD,EAAEwf,SAAU7sD,EAAE6V,YAAY/kB,EAAG,qBAC3Cu8C,EAAE21F,mBAAqB,WACtB,IAAIjuI,EAAIyH,SACR,SAAUzH,EAAEkuI,gBAAkBluI,EAAEmuI,qBAAuBnuI,EAAEouI,sBAAwBpuI,EAAEquI,mBACpF/1F,EAAEw1F,iBAAmB,WACpB,IAAI7iI,EAAGnP,EAAI2L,SAASu4B,gBAChBjkC,EAAI,mBACR,OAAOD,EAAEwyI,kBAAoBrjI,EAAI,CAC7BsjI,OAAQ,oBACRC,MAAO,iBACPC,SAAU,oBACVb,OAAQ7xI,GACRD,EAAE4yI,qBAAuBzjI,EAAI,CAC7BsjI,OAAQ,uBACRC,MAAO,sBACPC,SAAU,uBACVb,OAAQ,MAAQ7xI,GAChBD,EAAE6yI,wBAA0B1jI,EAAI,CAChCsjI,OAAQ,0BACRC,MAAO,uBACPC,SAAU,0BACVb,OAAQ,SAAW7xI,GACnBD,EAAE8yI,sBAAwB3jI,EAAI,CAC9BsjI,OAAQ,sBACRC,MAAO,mBACPC,SAAU,sBACVb,OAAQ,uBACR3iI,IAAMA,EAAEif,MAAQ,WAChB,OAAO9S,EAAI6G,EAAEy9G,cAAez9G,EAAEy9G,eAAgB,EAAI,4BAA8B35H,KAAKwsI,OAASvuI,EAAEuhI,SAASx/H,KAAKwsI,eAAiBvuI,EAAEuhI,SAASx/H,KAAKwsI,QAAQniF,QAAQyiF,uBAChK5jI,EAAEsiI,KAAO,WACR,OAAOtvH,EAAEy9G,cAAgBtkH,EAAG3P,SAAS1F,KAAKysI,UAC3CvjI,EAAEqiI,aAAe,WAChB,OAAO7lI,SAAS1F,KAAK0sI,YACrBxjI,QAMY,SAAU6jI,GAmMlC,IA/LA,IAsDIC,EAAoB,SAAUhkI,IAC9BA,EAAIA,GAAKlN,OAAOg8B,OACd1O,eAAiBpgB,EAAEogB,iBAAmBpgB,EAAEm1H,aAAc,EAExD,IAGI8O,EAZM,SAASrgH,EAAQpmB,EAAI7F,GAC/B,OAAO6F,IAAO7F,EAAG6F,GAAMA,EAAKomB,EAAQpmB,EAAGy0C,WAAYt6C,IAW7BisB,CAHR5jB,EAAE/L,QAAU+L,EAAE6+C,YAGW,SAAUrhD,GAC7C,OAAQA,EAAGq3C,SAAwC,WAA7Br3C,EAAGq3C,QAAQL,iBAGrC,GAAKyvF,EAAL,CAYA,IANA,IAII9qI,EAJA+qI,EAAiBD,EAAgBhyF,WACjC5uB,EAAa4gH,EAAgBhyF,WAAW5uB,WACxC8gH,EAAgB9gH,EAAWnqB,OAC3BkrI,EAAY,EAGP1zI,EAAI,EAAGA,EAAIyzI,EAAezzI,IAC/B,GAA+B,IAA3B2yB,EAAW3yB,GAAG27C,SAAlB,CAIA,GAAIhpB,EAAW3yB,KAAOuzI,EAAiB,CACnC9qI,EAAQirI,EACR,MAEJA,IASJ,OAJIjrI,GAAS,GAETkrI,EAAelrI,EAAO+qI,IAEnB,IA+BPG,EAAiB,SAAUlrI,EAAOmrI,EAAgBC,EAAkBC,GACpE,IAEIzwI,EACAg0F,EAHA08C,EAAc/nI,SAAS+4B,iBAAiB,SAAS,GA6BrD,GAxBAsyD,EApIyB,SAAUvqF,GASnC,IARA,IAGIknI,EACAC,EACAh7H,EACAoxB,EANA6pG,EAAgBpnI,EAAG6lB,WACnBwhH,EAAWD,EAAc1rI,OACzB6uF,EAAQ,GAMHr3F,EAAI,EAAGA,EAAIm0I,EAAUn0I,IAKA,KAH1Bg0I,EAAWE,EAAcl0I,IAGZ27C,WAMb1iC,GAFAg7H,EAASD,EAAS1yH,SAAS,IAEbojC,aAAa,aAAax+C,MAAM,KAG9CmkC,EAAO,CACHv+B,IAAKmoI,EAAOvvF,aAAa,QACzB5H,EAAG34B,SAASlL,EAAK,GAAI,IACrB2jC,EAAGz4B,SAASlL,EAAK,GAAI,KAKrB+6H,EAAS1yH,SAAS9Y,OAAS,IAE3B6hC,EAAKqzB,MAAQs2E,EAAS1yH,SAAS,GAAG69B,WAGlC80F,EAAO3yH,SAAS9Y,OAAS,IAEzB6hC,EAAK4iG,KAAOgH,EAAO3yH,SAAS,GAAGojC,aAAa,QAGhDra,EAAKv9B,GAAKknI,EACV38C,EAAM7xF,KAAK6kC,IAGf,OAAOgtD,EAuFC+8C,CAAuBR,GAG/BvwI,EAAU,CAGN0rI,WAAY6E,EAAelvF,aAAa,iBAExCymF,iBAAkB,SAAU1iI,GAExB,IAAI4rI,EAAYh9C,EAAM5uF,GAAOqE,GAAGsyC,qBAAqB,OAAO,GACxDk1F,EAAclyI,OAAOoiC,aAAex4B,SAASu4B,gBAAgB3P,UAC7D2/B,EAAO8/E,EAAUjwG,wBAErB,MAAO,CACHvL,EAAG07B,EAAKxqC,KACRgzB,EAAGwX,EAAKzqC,IAAMwqH,EACdx3F,EAAGyX,EAAKhtC,SAOhBusH,EACA,GAAIzwI,EAAQ8rI,aAGR,IAAK,IAAIxzH,EAAI,EAAGA,EAAI07E,EAAM7uF,OAAQmT,IAC9B,GAAI07E,EAAM17E,GAAGyzH,KAAO3mI,EAAO,CACvBpF,EAAQoF,MAAQkT,EAChB,YAKRtY,EAAQoF,MAAQ0b,SAAS1b,EAAO,IAAM,OAG1CpF,EAAQoF,MAAQ0b,SAAS1b,EAAO,IAIhChC,MAAMpD,EAAQoF,SAIdorI,IACAxwI,EAAQg9H,sBAAwB,GAI1B,IAAIlC,WAAW4V,EAAajE,qBAAsBz4C,EAAOh0F,GAC3Ds9B,SAIR4zG,EAAkBvoI,SAAS+4B,iBAAiBsuG,GAEvCrzI,EAAI,EAAGC,EAAIs0I,EAAgB/rI,OAAQxI,EAAIC,EAAGD,IAC/Cu0I,EAAgBv0I,GAAG8kD,aAAa,gBAAiB9kD,EAAI,GACrDu0I,EAAgBv0I,GAAGkgE,QAAUozE,EAIjC,IAAIkB,EAlGsB,WACtB,IAAI/iB,EAAOrvH,OAAOktI,SAAS7d,KAAK54E,UAAU,GACtCkxD,EAAS,GAEb,GAAI0nB,EAAKjpH,OAAS,EACd,OAAOuhG,EAIX,IADA,IAAI0qC,EAAOhjB,EAAKvrH,MAAM,KACblG,EAAI,EAAGA,EAAIy0I,EAAKjsI,OAAQxI,IAC7B,GAAKy0I,EAAKz0I,GAAV,CAGA,IAAIihF,EAAOwzD,EAAKz0I,GAAGkG,MAAM,KACrB+6E,EAAKz4E,OAAS,IAGlBuhG,EAAO9oB,EAAK,IAAMA,EAAK,IAO3B,OAJI8oB,EAAO2qC,MACP3qC,EAAO2qC,IAAMvwH,SAAS4lF,EAAO2qC,IAAK,KAG/B3qC,EA0EI4qC,GACXH,EAASpF,KAAOoF,EAASE,KACzBf,EAAea,EAASpF,IAAKmF,EAAgBC,EAASE,IAAM,IAAI,GAAM,GAK9EE,CAAsB,mB,mEClkDXhpF,E;;;;GAAAA,EAaT,SAAUohB,EAAQt/D,GAMlB,IAmvCiCu+D,EAjvC/B1iD,EAAIyjD,EAAOzjD,EAOb,SAASsrH,EAAW3tE,EAAQ56B,GAE1B,IAqCmCwoG,EArC/BC,EAAWzuI,KACbkjB,EAAU09C,EAAOP,MAAM,GACvBquE,EAAexrH,EAAQvoB,MACvBg0I,EAAmB/tE,EAAOP,MAAMt4D,KAAK,SACrC6mI,EAAcD,GAAoBD,EAClCG,EAAeF,EAAmB3oG,EAASi7B,aAAej7B,EAASs7B,OACnEwtE,EAAQ,WAEN,OAAO5rH,EAAQu/C,aAGqB,OAAlCv/C,EAAQu/C,aAAankB,UAG0B,OAA/CJ,iBAAiB0iB,EAAOD,MAAM,IAAIriB,WAGxCmwF,EAASzoG,SAAWA,EACpByoG,EAASpuE,MAAQO,EAAOP,MAGxBouE,EAAS/uG,MAAQ,CACf3gC,IAAK,iBACLqH,IAAK,iBACLuiC,IAAK,aACLtP,OAAQ,wBACRgqC,UAAW,iCACXzkD,KAAM,gCACNmwH,QAAS,aACTC,OAAQ,YAIVP,EAAS1qG,KAAO,GAEhB0qG,EAAS1qG,KAAK2yB,MAAQ,KACtB+3E,EAAS1qG,KAAKgrG,SAAW/oG,EAAS+oG,SAAW,IAAI1uI,MAAM,GACvDouI,EAAS1qG,KAAKirG,UACqB,KADAR,EAEhCC,EAAS1qG,KAAKgrG,SADW,GAAcP,EAAmBpmH,SAAW,GAGxEqmH,EACAxrI,IAAI,MAAO+iC,EAASjnC,KACpBkE,IAAI,MAAO+iC,EAAS5/B,KACpBnD,IAAI,OAIA2rI,EACFH,EAASxrI,IAAI,SAAU2rI,EAAa,CAClCttE,OAAQutE,EACRr1G,cAAc,IAMhBi1G,EACAxrI,IAAI,SAAU,MACdA,IAAI,YAAawrI,EAAS1qG,KAAK4E,KAKjC8lG,EAASxzI,IAAM,CACb07G,GAAI,EACJR,IAAK,EACLK,GAAI,WACF,OAAOs4B,KAAW,EAAI,GAExBz5B,GAAI,WACF,OAAOy5B,IAAU,GAAK,GAExB3rE,GAAI,SAAU8rE,GACZ,IAAIC,EAAoBT,EAAS1qG,KAAKs/B,UACpC8rE,EAAa,IAAI17H,KAAKy7H,EAAkBnkB,KAAMmkB,EAAkBrkB,MAAOqkB,EAAkBE,KAAOH,GAClGR,EAASxrI,IACP,YACAksI,EAAY,CACV3iB,SAAUyiB,IAGdjvI,KAAK+oB,WAMT63C,EACA97C,GAAG,UAAU,WACX87C,EAAOD,MAAMl+D,KAAK,IAAMujC,EAASh6B,MAAMqjI,aAAavqH,GAAG,UAAU,WAC/D,IAAInqB,EAAQqF,KAAKrF,MACbA,IACFimE,EAAO39D,IAAI,YAAa,CAAC29D,EAAOrmE,IAAI,QAAQwwH,KAAMpwH,EAAOimE,EAAOrmE,IAAI,aAAa60I,OACjFxuE,EAAOD,MAAMl+D,KAAK,IAAMujC,EAASh6B,MAAMqjI,aAAa/lH,QAAQ,aAGhEs3C,EAAOD,MAAMl+D,KAAK,IAAMujC,EAASh6B,MAAMsjI,YAAYxqH,GAAG,UAAU,WAC9D,IAAInqB,EAAQqF,KAAKrF,MACbA,IACFimE,EAAO39D,IAAI,YAAa,CAACtI,EAAOimE,EAAOrmE,IAAI,QAAQswH,MAAOjqD,EAAOrmE,IAAI,aAAa60I,OAClFxuE,EAAOD,MAAMl+D,KAAK,IAAMujC,EAASh6B,MAAMsjI,YAAYhmH,QAAQ,eAG9D,GACHxE,GAAG,QAAQ,WACT,IAAIyqH,EAAe,GACfd,EAAS7oH,SAAS6oH,EAASl0I,IAAI,UACjCg1I,EAAe,SAAWvpG,EAASh6B,MAAMwjI,YAAc,KAEzD5uE,EAAOD,MAAMl+D,KAAK,SAAW8sI,EAAe,YAAY3uH,KAAK,YAAY,KACxE,GACHkE,GAAG,SAAS,WACV87C,EAAOD,MAAMl+D,KAAK,kBAAkBme,KAAK,YAAY,KACpD,GAQL2tH,EAAWjzI,UAAU2H,IAAM,SAAUa,EAAMnJ,EAAOoC,GAEhD,IAAI0xI,EAAWzuI,KACbyvI,EAAehB,EAAS1qG,KAG1B,OAAc,OAAVppC,GACU,SAARmJ,IAAiBA,EAAO,UAC5B2rI,EAAa3rI,GAAQnJ,EACd8zI,IAOTgB,EAAsB,UAAR3rI,EAAmB,UAAoB,QAARA,EAAiB,SAAWA,GAAS2qI,EAAS/uG,MAAM57B,GAAMlE,MAAM,KAAKyC,KAAI,SAAUoC,GAE9H,OADA9J,EAAQ8zI,EAAShqI,GAAQX,EAAMnJ,EAAOoC,MAErCm5F,MAGS,UAARpyF,EACF2qI,EAASxrI,IAAI,YAAawsI,EAAap2G,OAAQt8B,GAC9B,aAAR+G,EACT2qI,EAASxrI,IAAI,OAAQwsI,EAAapsE,UAAWtmE,GACpC+G,EAAKgJ,MAAM,qCAChB2iI,EAAap2G,QAAUo1G,EAAS7oH,SAAS6pH,EAAap2G,SACxDo1G,EAASxrI,IAAI,SAAUwsI,EAAap2G,OAAQt8B,GAE1C0yI,EAAapsE,WAAaorE,EAAS7oH,SAAS6pH,EAAapsE,YAC3DorE,EAASxrI,IAAI,YAAawsI,EAAapsE,UAAWtmE,IAI/C0xI,IAOTF,EAAWjzI,UAAUf,IAAM,SAAUuJ,GACnC,OAAO9D,KAAK+jC,KAAKjgC,IAOnByqI,EAAWjzI,UAAUN,OAAS,SAAU8I,EAAMnJ,EAAOoC,GAEnD,IAAI2yI,EAmCJ,OA/BA/0I,OAAkBgD,IAAVhD,EAAsBmJ,EAAOnJ,KAIxB,KAAaA,GAAS21B,IACjCo/G,EAAkB/0I,EAIXyM,EAAEkuC,cAAc36C,IAAUsoB,EAAEmjD,UAAUzrE,EAAMsqE,MACnDtqE,EAAQA,EAAMirD,IAKPx+C,EAAEjD,QAAQxJ,IACjBA,EAAQ,IAAI8Y,KAAK9Y,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAC3CA,EAAQsoB,EAAEkjD,OAAOxrE,GAASA,EApBfqF,KAoBgChF,SAAS4qD,KAKpDjrD,EADOsoB,EAAEmjD,UAAUzrE,IAAUsoB,EAAEkjD,OAAOxrE,GAxB3BqF,KAyBMgI,UAAU,IAAIyL,KAAK9Y,GAAQoC,GAzBjCiD,KA8BM2oC,IAAI7kC,EAAMnJ,EAAOoC,GAI7B,CACLguH,KAAM2kB,GAAmB/0I,EAAMg1I,cAC/B9kB,MAAO6kB,GAAmB/0I,EAAMi1I,WAChCR,KAAMM,GAAmB/0I,EAAM0rE,UAC/BskD,IAAK+kB,GAAmB/0I,EAAMk1I,SAC9BjqF,IAAK8pF,GAAmB/0I,EACxBsqE,KAAMyqE,GAAmB/0I,EAAMgZ,YASnC46H,EAAWjzI,UAAUw0I,YAAc,SAAU/yH,EAAMC,GAEjD,IAAIyxH,EAAWzuI,KACb+vI,EAAa,SAAUX,GACrB,OAAa,IAATA,GAAiBhoI,EAAEjD,QAAQirI,IAASnsH,EAAEkjD,OAAOipE,GACxCX,EAASzzI,OAAOo0I,GAElBA,GAkBX,OAdKnsH,EAAEmjD,UAAUrpD,KACfA,EAAOgzH,EAAWhzH,IAEfkG,EAAEmjD,UAAUppD,KACfA,EAAK+yH,EAAW/yH,IAIdiG,EAAEmjD,UAAUrpD,IAAS3V,EAAEkuC,cAAct4B,GACvCD,EAAO,CAACC,EAAG+tG,KAAM/tG,EAAG6tG,MAAO7tG,EAAGoyH,KAAOryH,GAC5BkG,EAAEmjD,UAAUppD,IAAO5V,EAAEkuC,cAAcv4B,KAC5CC,EAAK,CAACD,EAAKguG,KAAMhuG,EAAK8tG,MAAO9tG,EAAKqyH,KAAOpyH,IAGpC,CACLD,KAAMgzH,EAAWhzH,GACjBC,GAAI+yH,EAAW/yH,KAQnBuxH,EAAWjzI,UAAU00I,YAAc,SAAUntD,EAAOotD,GAElD,OADAptD,EAAQ7iF,KAAK8vI,YAAYjtD,EAAM9lE,KAAM8lE,EAAM7lE,IACpCizH,EAAShrE,MAAQ4d,EAAM9lE,KAAKkoD,MAAQgrE,EAAShrE,MAAQ4d,EAAM7lE,GAAGioD,MAOvEspE,EAAWjzI,UAAU40I,cAAgB,SAAUzjG,EAAK0jG,GAQlD,OAHA1jG,EAHezsC,KAGA8vI,YAAYrjG,EAAI1vB,KAAM0vB,EAAIzvB,IACzCmzH,EAJenwI,KAIA8vI,YAAYK,EAAIpzH,KAAMozH,EAAInzH,IAJ1Bhd,KAMCgwI,YAAYvjG,EAAK0jG,EAAIpzH,OANtB/c,KAMwCgwI,YAAYvjG,EAAK0jG,EAAInzH,KAN7Dhd,KAOJgwI,YAAYG,EAAK1jG,EAAI1vB,OAPjB/c,KAOmCgwI,YAAYG,EAAK1jG,EAAIzvB,KAOzEuxH,EAAWjzI,UAAUqtC,IAAM,SAAU7kC,EAAMnJ,EAAOoC,GAKhD,OAJApC,EAAQ,IAAI8Y,KACR1W,GAAWA,EAAQqzI,KACrBz1I,EAAM01I,QAAQ11I,EAAM0rE,UAAYtpE,EAAQqzI,KAEnCpwI,KAAKgI,UAAUrN,EAAOoC,IAO/BwxI,EAAWjzI,UAAUg1I,SAAW,SAAUxsI,EAAMnJ,EAAOoC,GAErD,IAAIwzI,EACFC,EACAC,EACAtB,EACAuB,EAAgBtpI,EAAEjD,QAAQxJ,GAC1Bg2I,EAAiBvpI,EAAEkuC,cAAc36C,GACjCi2I,EAAgB5wI,KAAK+jC,KAAKnlB,KAK5B,GAAI8xH,GAAiBC,EAAgB,CA0BnC,IAxBIA,GACFH,EAAa71I,EAAMowH,KACnB0lB,EAAc91I,EAAMkwH,MACpBskB,EAAax0I,EAAMy0I,OAEnBoB,GAAc71I,EAAM,GACpB81I,GAAe91I,EAAM,GACrBw0I,GAAcx0I,EAAM,IAKlBoC,GAAWA,EAAQioE,KAAO4rE,GAAiBA,EAAc/lB,QAAU4lB,IACrED,EAAaI,EAAc7lB,KAC3B0lB,EAAcG,EAAc/lB,OAK9B2lB,GADAD,EAAmB,IAAI98H,KAAK+8H,EAAYC,GAAe1zI,GAAWA,EAAQioE,IAAMjoE,EAAQioE,IAAM,GAAI,IACpE2qE,cAC9Bc,EAAcF,EAAiBX,WAIT,IAAIn8H,KAAK+8H,EAAYC,EAAatB,GAAYS,aAAea,GACjFtB,GAAc,EAOhBx0I,EAAQ,CAAC61I,EAAYC,EAAatB,GAGpC,OAAOx0I,GAOT4zI,EAAWjzI,UAAU0M,UAAY,SAAUrN,GAEzC,OADAA,EAAMk2I,SAAS,EAAG,EAAG,EAAG,GACjBl2I,GAOT4zI,EAAWjzI,UAAUw1I,QAAU,SAAUhtI,EAAMnJ,GAqB7C,OAhBIsoB,EAAEmjD,UAAUzrE,GACdA,EAJaqF,KAII2oC,IAAI7kC,EAAMnJ,EAAO,CAChCy1I,IAAKz1I,IAKCA,EAKe,iBAATA,IACdA,EAhBaqF,KAgBI+rH,MAAMjoH,EAAMnJ,IAL7BA,EAAgB,OAARmJ,GAAgB,IAAYwsB,IAQ/B31B,GAOT4zI,EAAWjzI,UAAUy1I,QAAU,SAAUjtI,EAAMktI,GAC7C,OAAOhxI,KAAKhF,OAAO,CAACg2I,EAAWjmB,KAAMimB,EAAWnmB,MAAO,KAOzD0jB,EAAWjzI,UAAUqrB,SAAW,SAAU7iB,EAAMktI,EAAYj0I,GAE1D,IAYEk0I,EAAwBC,EAOxBC,EAAYC,EAnBV3C,EAAWzuI,KAGbqxI,EAAqBL,EAGrBxkB,EAAWzvH,GAAWA,EAAQyvH,SAAWzvH,EAAQyvH,SAAW,EAG5D8kB,GAA0C,IAA1B7C,EAAS1qG,KAAKirG,OAM9BuC,EAAiB9C,EAAS1qG,KAAKhlC,IAC/ByyI,EAAiB/C,EAAS1qG,KAAK39B,IAM/BqrI,EAAqBH,GAAiB7C,EAAS1qG,KAAKgrG,QAAQzsI,QAAO,SAAU3H,GAG3E,GAAIyM,EAAEjD,QAAQxJ,GAAQ,CACpB,IAAI+2I,EAAWjD,EAASzzI,OAAOL,GAAOsqE,KAClCysE,EAAWV,EAAW/rE,KAAMgsE,GAAyB,EAChDS,EAAWV,EAAW/rE,OAAMisE,GAAwB,GAI/D,OAAOjuH,EAAEmjD,UAAUzrE,MAClBuH,OAiBL,KAAKnF,IAAaA,EAAQioE,MAAQjoE,EAAQy8B,iBAGpC83G,GAAiB7C,EAAS7oH,SAASorH,IAEpCM,GAAiB7C,EAAS7oH,SAASorH,KAAgBS,GAAsBR,GAA0BC,KAElGI,IAAkBN,EAAW/rE,MAAQssE,EAAetsE,MAAQ+rE,EAAW/rE,MAAQusE,EAAevsE,OAYhG,IANIqsE,IAAkBG,KAAyBP,GAAyB1kB,EAAW,IAAQykB,GAA0BzkB,EAAW,KAC9HA,IAAa,GAKOiiB,EAAS7oH,SAASorH,KASlCr1I,KAAKm4B,IAAI04F,GAAY,IAAMwkB,EAAWnmB,MAAQwmB,EAAmBxmB,OAASmmB,EAAWnmB,MAAQwmB,EAAmBxmB,SAClHmmB,EAAaK,EACb7kB,EAAWA,EAAW,EAAI,GAAK,GAK7BwkB,EAAW/rE,MAAQssE,EAAetsE,MACpCksE,GAAa,EACb3kB,EAAW,EACXwkB,EAAavC,EAASzzI,OAAO,CAC3Bu2I,EAAexmB,KACfwmB,EAAe1mB,MACf0mB,EAAenC,MAAQ4B,EAAW/rE,OAASssE,EAAetsE,KAAO,GAAK,MAE/D+rE,EAAW/rE,MAAQusE,EAAevsE,OAC3CmsE,GAAa,EACb5kB,GAAY,EACZwkB,EAAavC,EAASzzI,OAAO,CAC3Bw2I,EAAezmB,KACfymB,EAAe3mB,MACf2mB,EAAepC,MAAQ4B,EAAW/rE,OAASusE,EAAevsE,KAAO,EAAI,OAMrEksE,IAAcC,IAMlBJ,EAAavC,EAASzzI,OAAO,CAACg2I,EAAWjmB,KAAMimB,EAAWnmB,MAAOmmB,EAAW5B,KAAO5iB,IAOzF,OAAOwkB,GAOTzC,EAAWjzI,UAAUsqB,SAAW,SAAU+rH,GAExC,IACElD,EAAWzuI,KAGX4xI,EAAkBnD,EAAS1qG,KAAKgrG,QAAQzsI,QAAO,SAAUuvI,GAGvD,OAAI5uH,EAAEmjD,UAAUyrE,GACPF,EAAahnB,OAAS8jB,EAASzoG,SAAS8rG,SAAWD,EAAgBA,EAAgB,GAAK,EAI7FzqI,EAAEjD,QAAQ0tI,IAAkB5uH,EAAEkjD,OAAO0rE,GAChCF,EAAa1sE,OAASwpE,EAASzzI,OAAO62I,GAAe5sE,KAI1D79D,EAAEkuC,cAAcu8F,GACXpD,EAASuB,YAAY6B,EAAeF,QAD7C,KAaJ,OAPAC,EAAkBA,EAAgB1vI,SAAW0vI,EAAgBtvI,QAAO,SAAUuvI,GAC5E,OAAOzqI,EAAEjD,QAAQ0tI,IAAsC,YAApBA,EAAc,IAC/CzqI,EAAEkuC,cAAcu8F,IAAkBA,EAAcE,YACjD7vI,QAI8B,IAA1BusI,EAAS1qG,KAAKirG,QAAiB4C,EAAkBA,GACtDD,EAAa1sE,KAAOwpE,EAAS1qG,KAAKhlC,IAAIkmE,MACtC0sE,EAAa1sE,KAAOwpE,EAAS1qG,KAAK39B,IAAI6+D,MAQ1CspE,EAAWjzI,UAAUywH,MAAQ,SAAUjoH,EAAMnJ,EAAOoC,GAElD,IAAI0xI,EAAWzuI,KACbgyI,EAAgB,GAGlB,OAAKr3I,GAAyB,iBAATA,GAKfoC,GAAWA,EAAQukE,UACvBvkE,EAAUA,GAAW,IACbukE,OAASmtE,EAASzoG,SAASs7B,QAIrCmtE,EAASxqE,QAAQguE,QAAQl1I,EAAQukE,QAAQj/D,KAAI,SAAUmnB,GAErD,IAEE0oH,EAAkBzD,EAASxqE,QAAQz6C,GAInC2oH,EAAeD,EAAkBjvH,EAAEqG,QAAQ4oH,EAAiBzD,EAAU,CAAC9zI,EAAOq3I,IAAkBxoH,EAAMphB,QAAQ,KAAM,IAAIlG,OAItHgwI,IACFF,EAAcxoH,GAAS7uB,EAAMmiD,OAAO,EAAGq1F,IAIzCx3I,EAAQA,EAAMmiD,OAAOq1F,MAIhB,CACLH,EAAcI,MAAQJ,EAAcK,KAClCL,EAAcM,IAAMN,EAAcl4I,GAAK,EACzCk4I,EAAcO,IAAMP,EAAch4I,IAlC3BW,GA0CX4zI,EAAWjzI,UAAU2oE,QAAW,WAG9B,SAASuuE,EAA4BrqI,EAAQwwF,EAAYq4C,GAIvD,IAAIyB,EAAOtqI,EAAO2E,MAAM,qBAAqB,GAQ7C,OALKkkI,EAAWsB,IAAOtB,EAAWl3I,IAChCk3I,EAAWl3I,EAAI6+F,EAAWzyF,QAAQusI,GAAQ,GAIrCA,EAAKvwI,OAId,SAASwwI,EAAmBvqI,GAC1B,OAAOA,EAAO2E,MAAM,OAAO,GAAG5K,OAGhC,MAAO,CAELlI,EAAG,SAAUmO,EAAQ6oI,GAInB,OAAO7oI,EAAS8a,EAAEtF,OAAOxV,GAAU6oI,EAAW5B,MAEhDmD,GAAI,SAAUpqI,EAAQ6oI,GAIpB,OAAO7oI,EAAS,EAAI8a,EAAEgjD,KAAK+qE,EAAW5B,OAExCuD,IAAK,SAAUxqI,EAAQ6oI,GAIrB,OAAO7oI,EAASuqI,EAAmBvqI,GAAUnI,KAAKgmC,SAAS4sG,cAAc5B,EAAWrmB,MAEtFkoB,KAAM,SAAU1qI,EAAQ6oI,GAItB,OAAO7oI,EAASuqI,EAAmBvqI,GAAUnI,KAAKgmC,SAAS8sG,aAAa9B,EAAWrmB,MAErF7wH,EAAG,SAAUqO,EAAQ6oI,GAInB,OAAO7oI,EAAS8a,EAAEtF,OAAOxV,GAAU6oI,EAAWnmB,MAAQ,GAExDynB,GAAI,SAAUnqI,EAAQ6oI,GAIpB,OAAO7oI,EAAS,EAAI8a,EAAEgjD,KAAK+qE,EAAWnmB,MAAQ,IAEhDkoB,IAAK,SAAU5qI,EAAQ6oI,GAErB,IAAIr4C,EAAa34F,KAAKgmC,SAASgtG,YAI/B,OAAO7qI,EAASqqI,EAA4BrqI,EAAQwwF,EAAYq4C,GAAcr4C,EAAWq4C,EAAWnmB,QAEtGooB,KAAM,SAAU9qI,EAAQ6oI,GAEtB,IAAIr4C,EAAa34F,KAAKgmC,SAASktG,WAI/B,OAAO/qI,EAASqqI,EAA4BrqI,EAAQwwF,EAAYq4C,GAAcr4C,EAAWq4C,EAAWnmB,QAEtGwnB,GAAI,SAAUlqI,EAAQ6oI,GAIpB,OAAO7oI,EAAS,GAAK,GAAK6oI,EAAWjmB,MAAM1qH,MAAM,IAEnD+xI,KAAM,SAAUjqI,EAAQ6oI,GAItB,OAAO7oI,EAAS,EAAI6oI,EAAWjmB,MAIjCknB,QAAS,SAAUpD,GACjB,OAAOA,EAAajvI,MAAM,gCAI5BQ,SAAU,SAAUyuI,EAAcsE,GAChC,IAAI1E,EAAWzuI,KACf,OAAOyuI,EAASxqE,QAAQguE,QAAQpD,GAAcxsI,KAAI,SAAUmnB,GAC1D,OAAOvG,EAAEqG,QAAQmlH,EAASxqE,QAAQz6C,GAAQilH,EAAU,CAAC,EAAG0E,KAAgB3pH,EAAMphB,QAAQ,KAAM,OAC3FrI,KAAK,MApGkB,GA+GhCwuI,EAAWjzI,UAAU83I,YAAc,SAAU3mG,EAAK0jG,GAKhD,OACGltH,EAAEmjD,UAAU35B,IAAQxpB,EAAEmjD,UAAU+pE,IAClB,kBAAP1jG,GAAkC,kBAAP0jG,EAE5B1jG,IAAQ0jG,GAKdltH,EAAEkjD,OAAO15B,IAAQrlC,EAAEjD,QAAQsoC,MAC3BxpB,EAAEkjD,OAAOgqE,IAAQ/oI,EAAEjD,QAAQgsI,IAbfnwI,KAeGhF,OAAOyxC,GAAKw4B,OAffjlE,KAeiChF,OAAOm1I,GAAKlrE,QAIxD79D,EAAEkuC,cAAc7I,KAAQrlC,EAAEkuC,cAAc66F,KAnB7BnwI,KAoBGozI,YAAY3mG,EAAI1vB,KAAMozH,EAAIpzH,OApB7B/c,KAoB+CozI,YAAY3mG,EAAIzvB,GAAImzH,EAAInzH,KAUxFuxH,EAAWjzI,UAAU+3I,cAAgB,SAAU5mG,EAAK0jG,GAElD,IACE2B,EADa9xI,KACOgmC,SAAS8rG,SAAW,EAAI,EAG9C,OAAI7uH,EAAEmjD,UAAU35B,KAASxpB,EAAEkjD,OAAOgqE,IAAQ/oI,EAAEjD,QAAQgsI,KAClD1jG,EAAMA,EAAM,EAAIqlG,KALH9xI,KAMWhF,OAAOm1I,GAAKxlB,IAAM,EAExC1nG,EAAEmjD,UAAU+pE,KAASltH,EAAEkjD,OAAO15B,IAAQrlC,EAAEjD,QAAQsoC,KAClD0jG,EAAMA,EAAM,EAAI2B,KATH9xI,KAUWhF,OAAOyxC,GAAKk+E,IAAM,KAIxCvjH,EAAEkuC,cAAc7I,KAAQrlC,EAAEkuC,cAAc66F,KAd7BnwI,KAeGkwI,cAAczjG,EAAK0jG,IAUvC5B,EAAWjzI,UAAUg4I,WAAa,SAAU1yI,GAC1C,IAAIuyI,EAAanzI,KAAK+jC,KACtBovG,EAAWnE,OAASpuI,KAA8B,GAAtBuyI,EAAWnE,OAAe,GAAK,IAO7DT,EAAWjzI,UAAUi4I,WAAa,SAAUzvI,EAAM0vI,GAEhD,IAAI/E,EAAWzuI,KACbyzI,EAAgBhF,EAAS1qG,KAAKgrG,QAAQ1uI,MAAM,GA6C9C,MAzCsB,QAAlBmzI,EACF/E,EAAS6E,cACmB,IAAnBE,GACT/E,EAAS6E,WAAW,GACpBG,EAAgB,KACY,IAAnBD,GACT/E,EAAS6E,YAAY,GACrBG,EAAgB,IAMhBD,EAAenxI,KAAI,SAAUqxI,GAM3B,IAJA,IAAIC,EAIKxxI,EAAQ,EAAGA,EAAQsxI,EAAcvxI,OAAQC,GAAS,EACzD,GAAIssI,EAAS2E,YAAYM,EAAeD,EAActxI,IAAS,CAC7DwxI,GAAa,EACb,MAKCA,IAED1wH,EAAEmjD,UAAUstE,IACZzwH,EAAEkjD,OAAOutE,IACTtsI,EAAEjD,QAAQuvI,IACTtsI,EAAEkuC,cAAco+F,IAAkBA,EAAc32H,MAAQ22H,EAAc12H,KAEvEy2H,EAAcv0I,KAAKw0I,MAOpBD,GAOTlF,EAAWjzI,UAAUs4I,SAAW,SAAU9vI,EAAM+vI,GAE9C,IAAIpF,EAAWzuI,KACbyzI,EAAgBhF,EAAS1qG,KAAKgrG,QAC9B+E,EAAqBL,EAAcvxI,OA6ErC,MA1EqB,QAAjB2xI,EACFpF,EAAS6E,cACkB,IAAlBO,GACTpF,EAAS6E,WAAW,GACpBG,EAAgB,KACW,IAAlBI,GACTpF,EAAS6E,YAAY,GACrBG,EAAgB,IAMhBI,EAAcxxI,KAAI,SAAU0xI,GAE1B,IAAIJ,EACFK,EACA7xI,EACA8xI,EAGF,IAAK9xI,EAAQ,EAAGA,EAAQ2xI,EAAoB3xI,GAAS,EAAG,CAKtD,GAHA6xI,EAAeP,EAActxI,GAGzBssI,EAAS2E,YAAYY,EAAcD,GAAe,CACpDJ,EAAaF,EAActxI,GAAS,KACpC8xI,GAAe,EACf,MAIG,GAAIxF,EAAS4E,cAAcW,EAAcD,GAAe,CACvD3sI,EAAEkuC,cAAcy+F,IAClBA,EAAahC,UAAW,EACxB4B,EAAaI,GACJ3sI,EAAEjD,QAAQ4vI,IACnBJ,EAAaI,GACG,IAAIJ,EAAWz0I,KAAK,YAC3B+jB,EAAEkjD,OAAO4tE,KAClBJ,EAAa,CAACI,EAAapE,cAAeoE,EAAanE,WAAYmE,EAAa1tE,UAAW,aAE7F,OAKJ,GAAIstE,EACF,IAAKxxI,EAAQ,EAAGA,EAAQ2xI,EAAoB3xI,GAAS,EACnD,GAAIssI,EAAS2E,YAAYK,EAActxI,GAAQ4xI,GAAe,CAC5DN,EAActxI,GAAS,KACvB,MAMN,GAAI8xI,EACF,IAAK9xI,EAAQ,EAAGA,EAAQ2xI,EAAoB3xI,GAAS,EACnD,GAAIssI,EAAS4E,cAAcI,EAActxI,GAAQ4xI,GAAe,CAC9DN,EAActxI,GAAS,KACvB,MAKFwxI,GACFF,EAAcv0I,KAAKy0I,MAMlBF,EAAcnxI,QAAO,SAAU1B,GACpC,OAAc,MAAPA,MAQX2tI,EAAWjzI,UAAUqqD,MAAQ,SAAUuuF,GAErC,IAeyBv7C,EAAYw7C,EAdnC1F,EAAWzuI,KACXgmC,EAAWyoG,EAASzoG,SACpBypG,EAAehB,EAAS1qG,KACxBqwG,EAAY3E,EAAa9mG,IACzB0rG,EAAiB5E,EAAap2G,OAC9B61G,EAAoBO,EAAapsE,UACjCutE,EAAgBnB,EAAa7wH,KAC7B01H,EAAqB7E,EAAaV,QAClCwC,EAAiB9B,EAAa1wI,IAC9ByyI,EAAiB/B,EAAarpI,IAK9BmuI,GAAuB57C,GA4BnB3yD,EAASwuG,iBAAmBxuG,EAAS8sG,aAAe9sG,EAAS4sG,eAAevyI,MAAM,GA5BnD8zI,EA4BuDnuG,EAAS8sG,aAAazyI,MAAM,GAzBhH2lC,EAAS8rG,WACXn5C,EAAWz5F,KAAKy5F,EAAWvwE,SAC3B+rH,EAAej1I,KAAKi1I,EAAe/rH,UAI9BnF,EAAEuhD,KACP,QACAvhD,EAAEuhD,KACA,KACAvhD,EAAE2iD,MAAM,CACN7mE,IAAK,EACLqH,IAAKquI,EACL/6I,EAAG,EACH8qE,KAAM,KACNzgC,KAAM,SAAUiiC,GACd,MAAO,CACL2yB,EAAW3yB,GACXhgC,EAASh6B,MAAM0oI,SACf,oBAAsBP,EAAenuE,GAAW,WAU5D2uE,EAAiB,SAAUt+H,GAGzB,OAAO4M,EAAEuhD,KACP,SACA,IACAx+B,EAASh6B,MAAM,OAASqK,EAAO,OAAS,UAGrCA,GAAQu6H,EAAc7lB,MAAQymB,EAAezmB,MAAQ6lB,EAAc/lB,OAAS2mB,EAAe3mB,QAC1Fx0G,GAAQu6H,EAAc7lB,MAAQwmB,EAAexmB,MAAQ6lB,EAAc/lB,OAAS0mB,EAAe1mB,MAC7F,IAAM7kF,EAASh6B,MAAM84D,YAAc,IAErC,aAAezuD,IAAS,GAAK,IAC7B4M,EAAEqjD,SAAS,CACT3hD,KAAM,SAENiwH,SAAUnG,EAASpuE,MAAM,GAAGz9D,GAAK,WAC9B,YACQyT,EAAO2vB,EAAS6uG,eAAiB7uG,EAAS8uG,gBAAkB,MAM7EC,EAAmB,WAEjB,IAAIC,EAAmBhvG,EAASivG,gBAAkBjvG,EAASgtG,YAAchtG,EAASktG,WAGlF,OAAIltG,EAASkvG,aAEJjyH,EAAEuhD,KAAK,SACZvhD,EAAE2iD,MAAM,CACN7mE,IAAK,EACLqH,IAAK,GACL1M,EAAG,EACH8qE,KAAM,SACNzgC,KAAM,SAAUoxG,GAEd,MAAO,CAGLH,EAAiBG,GAAc,EAG/B,SAAWA,GACVvE,EAAc/lB,OAASsqB,EAAc,YAAc,KAG/CvE,EAAc7lB,MAAQwmB,EAAexmB,MAAQoqB,EAAc5D,EAAe1mB,OAC1E+lB,EAAc7lB,MAAQymB,EAAezmB,MAAQoqB,EAAc3D,EAAe3mB,MAE7E,YAAc,QAKtB7kF,EAASh6B,MAAMqjI,aACd6E,EAAS,GAAK,YAAc,IAC7BjxH,EAAEqjD,SAAS,CACTsuE,SAAUnG,EAASpuE,MAAM,GAAGz9D,GAAK,WAC9B,WACOojC,EAASovG,iBAAmB,KAKrCnyH,EAAEuhD,KAAK,MAAOwwE,EAAiBpE,EAAc/lB,OAAQ7kF,EAASh6B,MAAM6+G,QAK7EwqB,EAAkB,WAEhB,IAAIC,EAAc1E,EAAc7lB,KAI9BwqB,GAAuC,IAAzBvvG,EAASwvG,YAAuB,KAAOxvG,EAASwvG,YAAc,GAG9E,GAAID,EAAa,CAEf,IACEE,EAAUlE,EAAexmB,KACzB2qB,EAAUlE,EAAezmB,KACzB4qB,EAAaL,EAAcC,EAC3BK,EAAcN,EAAcC,EAY9B,GARIE,EAAUE,IACZC,GAAeH,EAAUE,EACzBA,EAAaF,GAMXC,EAAUE,EAAa,CAEzB,IAAIC,EAAiBF,EAAaF,EAChCK,EAAcF,EAAcF,EAE9BC,GAAcE,EAAiBC,EAAcA,EAAcD,EAC3DD,EAAcF,EAGhB,OAAOzyH,EAAEuhD,KAAK,SACZvhD,EAAE2iD,MAAM,CACN7mE,IAAK42I,EACLvvI,IAAKwvI,EACLl8I,EAAG,EACH8qE,KAAM,SACNzgC,KAAM,SAAUgyG,GACd,MAAO,CAGLA,EAAY,EAGZ,SAAWA,GAAcT,GAAeS,EAAa,YAAc,QAIzE/vG,EAASh6B,MAAMsjI,YACd4E,EAAS,GAAK,YAAc,IAAMjxH,EAAEqjD,SAAS,CAC5CsuE,SAAUnG,EAASpuE,MAAM,GAAGz9D,GAAK,WAC9B,WACOojC,EAASgwG,gBAAkB,KAK3C,OAAO/yH,EAAEuhD,KAAK,MAAO8wE,EAAatvG,EAASh6B,MAAM++G,OAKrD,OAAO9nG,EAAEuhD,KACL,OACCx+B,EAASwvG,YAAcH,IAAoBN,IAAqBA,IAAqBM,KACtFV,IAAmBA,EAAe,GAClC3uG,EAASh6B,MAAMiqI,QACbhzH,EAAEuhD,KACJ,QACA+vE,EACAtxH,EAAEuhD,KACA,QACAvhD,EAAE2iD,MAAM,CACN7mE,IAAK,EACLqH,IAAK8vI,EACLx8I,EAAG,EACH8qE,KAAM,KACNzgC,KAAM,SAAUoyG,GAGd,IAAIC,EAAcpwG,EAAS8rG,UAAkF,IAAtErD,EAASzzI,OAAO,CAAC41I,EAAc7lB,KAAM6lB,EAAc/lB,MAAO,IAAIF,KAAa,EAAI,EAEtH,MAAO,CACL1nG,EAAE2iD,MAAM,CACN7mE,IA1oCG,EA0oCiBo3I,EAAavF,EAAcjmB,IAAMyrB,EAAc,EACnEhwI,IAAK,WACH,OAAOpG,KAAKjB,IA5oCX,EA4oCgC,GAEnCrF,EAAG,EACH8qE,KAAM,KACNzgC,KAAM,SAAUorG,GAGdA,EAAaV,EAASzzI,OAAO,CAAC41I,EAAc7lB,KAAM6lB,EAAc/lB,MAAOskB,GAAcnpG,EAAS8rG,SAAW,EAAI,KAE7G,IASe7xE,EATX7tB,EAAaiiG,GAAkBA,EAAepvE,MAAQkqE,EAAWlqE,KACnEoxE,EAAgBnH,GAAqBA,EAAkBjqE,MAAQkqE,EAAWlqE,KAC1E7kD,EAAak0H,GAAsB7F,EAAS7oH,SAASupH,IAAeA,EAAWlqE,KAAOssE,EAAetsE,MAAQkqE,EAAWlqE,KAAOusE,EAAevsE,KAC9IqxE,EAAgBrzH,EAAEqG,QAAQmlH,EAASxqE,QAAQ7jE,SAAUquI,EAAU,CAACzoG,EAASs7B,OAAQ6tE,IAEnF,MAAO,CACLlsH,EAAEuhD,KACA,MACA2qE,EAAWC,MACAnvE,EA0BR,CAACj6B,EAASh6B,MAAM2+G,KAvBjB1qD,EAAQ/gE,KAAK0xI,EAAc/lB,OAASskB,EAAWtkB,MAAQ7kF,EAASh6B,MAAMuqI,QAAUvwG,EAASh6B,MAAMwqI,UAG3FpC,EAAUnvE,MAAQkqE,EAAWlqE,MAC/BhF,EAAQ/gE,KAAK8mC,EAASh6B,MAAM28B,KAI1ByJ,GACF6tB,EAAQ/gE,KAAK8mC,EAASh6B,MAAM6f,UAI1BwqH,GACFp2E,EAAQ/gE,KAAK8mC,EAASh6B,MAAMo3D,aAI1BhjD,GACF6/C,EAAQ/gE,KAAK8mC,EAASh6B,MAAM4Z,UAGvBq6C,EAAQlgE,KAAK,MAEtB,aAAeovI,EAAWlqE,KAAO,IAAMhiD,EAAEqjD,SAAS,CAChD3hD,KAAM,WACN6E,MAAO8sH,EACPzqH,YAAUumB,GAAcq8F,EAASpuE,MAAMz/D,QAAU01I,IAAuB,KACxEG,mBAAkBJ,GAAuB,KACzCzwH,WAAUxF,GAAoB,QAGlC,GACA6C,EAAEqjD,SAAS,CACT3hD,KAAM,0BAStBqhB,EAASh6B,MAAMq/G,MACf,OAASojB,EAASpuE,MAAM,GAAGz9D,GAAK,WAAkBqgB,EAAEqjD,SAAS,CAC3D3hD,KAAM,OACNiwH,SAAUnG,EAASpuE,MAAM,GAAGz9D,GAC5Bo/D,UAAU,KAKd/+C,EAAEuhD,KACA,MACAvhD,EAAEuhD,KAAK,SAAUx+B,EAAS0wG,MAAO1wG,EAASh6B,MAAMwjI,YAC9C,yBAA2B4E,EAAUnvE,MACpCivE,IAAWzF,EAAS7oH,SAASwuH,GAAa,GAAK,aAAe,IAC/DnxH,EAAEqjD,SAAS,CACTsuE,SAAUnG,EAASpuE,MAAM,GAAGz9D,MAEhCqgB,EAAEuhD,KAAK,SAAUx+B,EAAS0wB,MAAO1wB,EAASh6B,MAAM2qI,YAC9C,4BACCzC,EAAS,GAAK,aAAe,IAC9BjxH,EAAEqjD,SAAS,CACTsuE,SAAUnG,EAASpuE,MAAM,GAAGz9D,MAEhCqgB,EAAEuhD,KAAK,SAAUx+B,EAASlgC,MAAOkgC,EAASh6B,MAAM4qI,YAC9C,gCACC1C,EAAS,GAAK,aAAe,IAC9BjxH,EAAEqjD,SAAS,CACTsuE,SAAUnG,EAASpuE,MAAM,GAAGz9D,MAEhCojC,EAASh6B,MAAMwjG,SAUrB++B,EAAWltG,SAEF,CAGLwzG,eAAgB,aAChBC,eAAgB,iBAGhBM,iBAAkB,iBAClBY,gBAAiB,gBAGjB9C,WAAY,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YAC3HF,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3FF,aAAc,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YACjFF,cAAe,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAG1D8D,MAAO,QACPhgF,MAAO,QACP5wD,MAAO,QAGPw9D,eAAe,EACf4B,cAAc,EAGdnB,aAAa,EAGbzC,OAAQ,eAGRt1D,MAAO,CAELq/G,OApC2B1lD,EAmE9Be,EAAOzG,UAAUW,OAAS,MA/BP,QAEhBq1E,OAAQtwE,EAAS,SAEjBkxE,QAASlxE,EAAS,yBAClBmxE,QAASnxE,EAAS,yBAClBb,YAAaa,EAAS,gBAEtBklD,MAAOllD,EAAS,QAChBolD,KAAMplD,EAAS,OAEf0pE,YAAa1pE,EAAS,gBACtB2pE,WAAY3pE,EAAS,eAErB+uE,SAAU/uE,EAAS,UAEnBglD,IAAKhlD,EAAS,MACd//C,SAAU+/C,EAAS,gBACnB95C,SAAU85C,EAAS,gBACnBvC,YAAauC,EAAS,mBACtBh9B,IAAKg9B,EAAS,aACd4wE,QAAS5wE,EAAS,eAClB6wE,SAAU7wE,EAAS,gBAEnB6pC,OAAQ7pC,EAAS,SAEjBgxE,YAAahxE,EAAS,gBACtB6pE,YAAa7pE,EAAS,gBACtBixE,YAAajxE,EAAS,kBAY5Be,EAAOv2C,OAAO,YAAao+G,IA/0CN,mBAAVltF,QAAwBA,MACjCA,OAAO,CAAC,SAAU,UAAWiE,GAGJ,WAAlB,oBAAO9rD,QAAP,cAAOA,UACdC,EAAOD,QAAU8rD,EAAQ+U,EAAQ,KAAgBA,EAAQ,MAGtD/U,EAAQohB,OAAQ7/C,QA40CvBzf,EAAE+oB,OAAO/oB,EAAEzG,GAAGo2I,UAAU11G,SAAU,CAChC6zG,cAAc,EACdM,YAAa,GAEbpzE,SAAU,WACR,IAAI40E,EAAkBh3I,KAAK2gE,MAEvBoqD,EAAO/qH,KAAKzF,IAAI,YAAa,QAC7BowH,EAAM3qH,KAAKzF,IAAI,YAAa,MAC5BswH,EAAQ7qH,KAAKzF,IAAI,YAAa,OAC9B08I,EAA4Bj3I,KAAKzF,IAAI,YAAa,QAAQ8F,MAAM,EAAG,GACnE62I,EAAersB,EAAMh6G,OAAO,GAAG2sC,cAAgBqtE,EAAMxqH,MAAM,GAE/D22I,EAAgBv0I,KAAK,mBAAmBqf,QAAQ,0EAA4Em1H,EAA4B,mDAAqDC,EAAe,qDAAuDvsB,EAAM,yDAA2DI,EAAO,yBAI/V3jH,EAAE,kBAAkB0d,GAAG,SAAS,SAAUgT,GACxCA,EAAM1O,iBACN0O,EAAM/S,kBAEN,IAAMoyH,EAAkBr/G,EAAM76B,OAAOsiF,QAAQ55E,KAC9ByB,EAAE,IAAD,OAAK+vI,IAAmBJ,YAClBA,UAAU,UAEzBpxI,Y,mECr3CmqB2/C,E,gXAA3qB,SAASl+C,GAAG,IAAIgwI,EAAU,CAACn0I,IAAI,CAAC64C,OAAO,EAAE3qC,OAAO,EAAEmQ,gBAAgB,EAAE+1H,YAAY,EAAEC,kBAAkB,EAAE5qH,MAAM,GAAGnyB,IAAI,CAACg9I,gBAAgB,EAAEC,gBAAgB,EAAEC,UAAU,EAAEC,WAAW,IAAItwI,EAAEzG,GAAGg3I,UAAU,SAAS56I,GAAS,IAAmBsF,EAAIrC,KAAKgb,SAAS,yBAAyBjT,KAAK,aAAa,GAAG,WAAWhL,EAAQ66I,EAAIC,IAAIC,KAAKpzI,UAAU,IAAIA,UAAU,OAAO,CAAC,IAAI,QAAQ3H,GAAS,QAAQA,IAAUq6I,EAAUr6I,GAAS2H,UAAU,IAAI,OAA8ErC,EAAItF,GAAhE2H,UAAU,GAAGmM,OAAO,GAAG2sC,cAAc94C,UAAU,GAAGo4C,OAAO,KAA2B3zC,MAAM9G,EAAI6B,MAAM5I,UAAU+E,MAAMxG,KAAK6K,UAAU,KAAI3H,EAAQA,GAAS,IAAWshD,UAAUr+C,KAAKqC,EAAI,IAAIu1I,EAAIC,IAAI96I,GAAS,OAAOiD,MAAnpB,CAA0pB6mB,QAAiBy+B,EAA2I,SAASl+C,GAAG,SAAS4hB,EAAQ8O,GAAO,IAAIigH,EAASjgH,GAAOh8B,OAAOg8B,MAAM1nB,EAAK/P,EAAMxG,KAAK6K,UAAU,GAAGwpE,EAAM,EAAExc,EAAO,EAAEC,EAAO,EAAEqmF,EAAS,EAAE,IAAGlgH,EAAM1wB,EAAE0wB,MAAMmgH,IAAIF,IAAgBj0I,KAAK,aAAa,WAAWi0I,IAAWpmF,GAAQ,EAAEomF,EAASrQ,QAAQ,eAAeqQ,IAAWpmF,EAAOomF,EAAS3lF,YAAY,gBAAgB2lF,IAAWpmF,EAAOomF,EAAS7lF,aAAa,gBAAgB6lF,IAAWrmF,GAAQ,EAAEqmF,EAAS9lF,aAAa,SAAS8lF,GAAUA,EAASj4F,OAAOi4F,EAASG,kBAAkBxmF,GAAQ,EAAEC,EAAOA,EAAO,GAAGuc,EAAM,IAAIvc,EAAOD,EAAOC,EAAO,WAAWomF,IAAqC7pE,EAA1Bvc,GAAQ,EAAEomF,EAASpmF,QAAqB,WAAWomF,IAAWrmF,EAAOqmF,EAASrmF,OAAO,IAAIC,IAASuc,GAAO,EAAExc,IAAS,IAAIC,GAAQ,IAAID,EAAO,CAAC,GAAG,IAAIqmF,EAAS5lF,UAAU,CAAC,IAAI9wC,EAAWja,EAAEW,KAAK/H,KAAK,0BAA0BkuE,GAAO7sD,EAAWswC,GAAQtwC,EAAWqwC,GAAQrwC,OAAgB,GAAG,IAAI02H,EAAS5lF,UAAU,CAAC,IAAIgmF,EAAW/wI,EAAEW,KAAK/H,KAAK,0BAA0BkuE,GAAOiqE,EAAWxmF,GAAQwmF,EAAWzmF,GAAQymF,EAAW,OAAOH,EAASr8I,KAAKyK,IAAIzK,KAAKm4B,IAAI69B,GAAQh2D,KAAKm4B,IAAI49B,MAAW0mF,GAAaA,EAAYJ,KAAYI,EAAYJ,EAASK,EAAsBN,EAASC,KAAYI,GAAa,KAAKC,EAAsBN,EAASC,KAAY9pE,GAAO,GAAGxc,GAAQ,GAAGC,GAAQ,IAAIuc,EAAMvyE,KAAKuyE,GAAO,EAAE,QAAQ,QAAQA,EAAMkqE,GAAa1mF,EAAO/1D,KAAK+1D,GAAQ,EAAE,QAAQ,QAAQA,EAAO0mF,GAAazmF,EAAOh2D,KAAKg2D,GAAQ,EAAE,QAAQ,QAAQA,EAAOymF,GAAatgH,EAAM45B,OAAOA,EAAO55B,EAAM65B,OAAOA,EAAO75B,EAAMwgH,YAAYF,EAAYtgH,EAAMq6B,UAAU,EAAE/hD,EAAKslC,QAAQ5d,EAAMo2C,EAAMxc,EAAOC,GAAQ4mF,GAAwB13F,aAAa03F,GAAwBA,EAAuBrgH,WAAWsgH,EAAgB,MAAMpxI,EAAE0wB,MAAM2gH,UAAUrxI,EAAE0wB,MAAM4gH,QAAQvvI,MAAMnJ,KAAKoQ,IAAO,SAASooI,IAAkBJ,EAAY,KAAK,SAASC,EAAsBN,EAASC,GAAU,OAAOW,EAAQ3yG,SAAS4yG,iBAAiB,eAAeb,EAASj0I,MAAMk0I,EAAS,KAAM,EAAE,IAAIO,EAAuBH,EAAYS,EAAM,CAAC,QAAQ,aAAa,iBAAiB,uBAAuBC,EAAO,YAAYpzI,UAAUA,SAASkzC,cAAc,EAAE,CAAC,SAAS,CAAC,aAAa,iBAAiB,uBAAuBv4C,EAAM6D,MAAM5I,UAAU+E,MAAM,GAAG+G,EAAE0wB,MAAMihH,SAAS,IAAI,IAAIr/I,EAAEm/I,EAAM32I,OAAOxI,GAAG0N,EAAE0wB,MAAMihH,SAASF,IAAQn/I,IAAI0N,EAAE0wB,MAAMkhH,WAAW,IAAIL,EAAQvxI,EAAE0wB,MAAM6gH,QAAQM,WAAW,CAAC95I,QAAQ,QAAQ+5I,MAAM,WAAW,GAAGl5I,KAAK+3B,iBAAiB,IAAI,IAAIr+B,EAAEo/I,EAAO52I,OAAOxI,GAAGsG,KAAK+3B,iBAAiB+gH,IAASp/I,GAAGsvB,GAAQ,QAAShpB,KAAKszD,aAAatqC,EAAQ5hB,EAAEW,KAAK/H,KAAK,yBAAyB24I,EAAQQ,cAAcn5I,OAAOoH,EAAEW,KAAK/H,KAAK,yBAAyB24I,EAAQS,cAAcp5I,QAAQq5I,SAAS,WAAW,GAAGr5I,KAAKknD,oBAAoB,IAAI,IAAIxtD,EAAEo/I,EAAO52I,OAAOxI,GAAGsG,KAAKknD,oBAAoB4xF,IAASp/I,GAAGsvB,GAAQ,QAAShpB,KAAKszD,aAAa,MAAM6lF,cAAc,SAAS3qG,GAAM,OAAO3wB,SAASzW,EAAEonC,GAAM,iBAAiBpnC,EAAEzG,GAAG,eAAe,YAAYogB,IAAI,YAAY,KAAKq4H,cAAc,SAAS5qG,GAAM,OAAOpnC,EAAEonC,GAAMttB,UAAU8kB,SAAS,CAAC4yG,iBAAgB,IAAKxxI,EAAEzG,GAAGwvB,OAAO,CAAC8oH,WAAW,SAASt4I,GAAI,OAAOA,EAAGX,KAAK9E,KAAK,aAAayF,GAAIX,KAAKspB,QAAQ,eAAegwH,aAAa,SAAS34I,GAAI,OAAOX,KAAK+sC,OAAO,aAAapsC,OAAvoG,mBAAmB0gD,QAAQA,MAAWA,OAAO,CAAC,UAAUiE,GAAS,+BAAiB9rD,QAAjB,cAAiBA,UAAQC,EAAOD,QAAQ8rD,EAAQA,EAAQz+B,QAAuhG,IAAI+wH,EAAI,CAACthD,SAAS,SAAS1rC,EAAM5rC,GAAQ,SAASu6H,KAAQA,EAAKj+I,UAAU0jB,EAAO1jB,UAAUsvD,EAAMtvD,UAAU,IAAIi+I,EAAK3uF,EAAMtvD,UAAU6L,YAAYyjD,EAAMA,EAAM4uF,YAAYx6H,GAAQy6H,MAAM,SAASx8I,EAAOD,GAAQ,IAAIwoB,EAAK,IAAIA,KAAQxoB,EAAO1B,UAAU0B,EAAO1B,UAAUC,eAAeiqB,KAAQvoB,EAAO3B,UAAUkqB,GAAMxoB,EAAO1B,UAAUkqB,KAAQzmB,IAAI,SAASoS,GAAQ,IAAIzX,EAAEqF,EAAIg7B,OAAO2/G,UAAU,GAAGvoI,aAAkBjN,MAAM,IAAIxK,EAAE,EAAEA,EAAEyX,EAAOjP,OAAOxI,IAAIyX,EAAOzX,GAAGqF,IAAMA,EAAIoS,EAAOzX,SAAS,IAAIA,KAAKyX,EAAOA,EAAOzX,GAAGqF,IAAMA,EAAIoS,EAAOzX,IAAI,OAAOqF,GAAKqH,IAAI,SAAS+K,GAAQ,IAAIzX,EAAE0M,EAAI2zB,OAAO4/G,UAAU,GAAGxoI,aAAkBjN,MAAM,IAAIxK,EAAE,EAAEA,EAAEyX,EAAOjP,OAAOxI,IAAIyX,EAAOzX,GAAG0M,IAAMA,EAAI+K,EAAOzX,SAAS,IAAIA,KAAKyX,EAAOA,EAAOzX,GAAG0M,IAAMA,EAAI+K,EAAOzX,IAAI,OAAO0M,GAAKzD,KAAK,SAASvH,GAAQ,IAAIH,EAAI0H,EAAK,GAAG,IAAI1H,KAAOG,EAAOuH,EAAKzD,KAAKjE,GAAK,OAAO0H,GAAMwO,OAAO,SAAS/V,GAAQ,IAAIH,EAAIvB,EAAEyX,EAAO,GAAG,IAAIzX,EAAE,EAAEA,EAAEgL,UAAUxC,OAAOxI,IAAyB,IAAIuB,KAAxBG,EAAOsJ,UAAUhL,GAAqByX,EAAOjS,KAAK9D,EAAOH,IAAM,OAAOkW,GAAQyoI,gBAAgB,SAASjP,GAAK,IAAIkP,EAAS,IAAIjC,EAAIxwI,EAAE0yI,SAASxyF,EAAIswF,EAAIxwI,EAAE,UAAU,OAAOkgD,EAAInrD,OAAM,WAAW09I,EAASE,YAAWx1G,MAAK,WAAWs1G,EAAS10D,QAAQ79B,MAAOA,EAAI1mC,KAAK,MAAM+pH,GAAKkP,GAAUG,WAAW,SAASv+I,GAAG,MAAM,aAAawN,KAAKxN,KAAKm8I,EAAIxwI,EAAEyf,OAAO3iB,MAAM5I,UAAU4K,UAAUhC,MAAM5I,UAAU4K,QAAQ,SAASoH,EAAc7G,GAAW,IAAIwL,EAAE,GAAG,MAAMjS,KAAK,MAAM,IAAI7B,UAAU,iCAAiC,IAAIM,EAAErE,OAAO4F,MAAMkS,EAAIzT,EAAEyD,SAAS,EAAE,GAAG,IAAIgQ,EAAI,OAAO,EAAE,IAAI/W,GAAGsL,GAAW,EAAE,GAAG,MAAM9K,KAAKm4B,IAAI34B,KAAKA,EAAE,GAAGA,GAAG+W,EAAI,OAAO,EAAE,IAAID,EAAEtW,KAAKyK,IAAIjL,GAAG,EAAEA,EAAE+W,EAAIvW,KAAKm4B,IAAI34B,GAAG,GAAG+W,EAAID,GAAG,CAAC,GAAGA,KAAKxT,GAAGA,EAAEwT,KAAK3E,EAAc,OAAO2E,EAAEA,IAAI,OAAO,IAAI2lI,EAAIqC,gBAAgB,SAAShgJ,EAAKuiF,GAAQx8E,KAAKwkE,KAAKxkE,KAAK2E,cAAc1K,GAAM+F,KAAK/F,KAAKA,EAAK+F,KAAKuP,WAAW,GAAGitE,GAAQx8E,KAAKiD,IAAIu5E,IAASo7D,EAAIqC,gBAAgB3+I,UAAU2H,IAAI,SAAS5H,EAASV,GAAO,IAAIM,EAAI,GAAG,YAAiBI,GAAS,IAAIJ,KAAOI,EAAS2E,KAAKuP,WAAWtU,GAAKI,EAASJ,GAAK+E,KAAKk6I,UAAUj/I,EAAII,EAASJ,SAAW+E,KAAKuP,WAAWlU,GAAUV,EAAMqF,KAAKk6I,UAAU7+I,EAASV,IAAQi9I,EAAIqC,gBAAgB3+I,UAAUf,IAAI,SAASc,GAAU,OAAO2E,KAAKuP,WAAWlU,IAAWu8I,EAAIqC,gBAAgB3+I,UAAU4+I,UAAU,SAAS7+I,EAASV,GAAOqF,KAAKwkE,KAAKhmB,aAAanjD,EAASV,IAAQi9I,EAAIqC,gBAAgB3+I,UAAU2jB,OAAO,WAAW24H,EAAIxwI,EAAEpH,KAAKwkE,MAAMvlD,UAAU24H,EAAIuC,sBAAsB,SAAS97F,EAAUp9B,EAAMC,GAAQlhB,KAAKq+C,UAAUA,EAAUr+C,KAAKo6I,QAAQn5H,EAAMC,GAAQlhB,KAAKq6I,YAAY,IAAIzC,EAAI53I,KAAKs6I,YAAY,gBAAgBt6I,KAAKwkE,KAAKj/D,YAAYvF,KAAKq6I,YAAY71E,MAAMxkE,KAAKq+C,UAAU94C,YAAYvF,KAAKwkE,OAAOozE,EAAIuC,sBAAsB7+I,UAAUwiD,IAAI,SAAS56B,EAAQ0iD,IAAOA,EAAMA,GAAO5lE,KAAKq6I,aAAkBv8F,IAAI56B,GAASA,EAAQk5D,OAAOp8E,MAAM43I,EAAIuC,sBAAsB7+I,UAAUi/I,QAAQ,SAAS/9D,EAAOn3E,EAAMugE,GAAO,IAAIp/D,EAAG,IAAIoxI,EAAI53I,KAAKs6I,YAAY,eAAe99D,EAAOn3E,GAAO,OAAOrF,KAAK89C,IAAIt3C,EAAGo/D,GAAOp/D,GAAIoxI,EAAIuC,sBAAsB7+I,UAAUk/I,UAAU,SAASh+D,EAAOn3E,EAAMugE,GAAO,IAAIp/D,EAAG,IAAIoxI,EAAI53I,KAAKs6I,YAAY,iBAAiB99D,EAAOn3E,GAAO,OAAOrF,KAAK89C,IAAIt3C,EAAGo/D,GAAOp/D,GAAIoxI,EAAIuC,sBAAsB7+I,UAAUm/I,SAAS,SAASj+D,EAAOn3E,EAAMugE,GAAO,IAAIp/D,EAAG,IAAIoxI,EAAI53I,KAAKs6I,YAAY,gBAAgB99D,EAAOn3E,GAAO,OAAOrF,KAAK89C,IAAIt3C,EAAGo/D,GAAOp/D,GAAIoxI,EAAIuC,sBAAsB7+I,UAAUo/I,QAAQ,SAASl+D,EAAOn3E,EAAMugE,GAAO,IAAIp/D,EAAG,IAAIoxI,EAAI53I,KAAKs6I,YAAY,eAAe99D,EAAOn3E,GAAO,OAAOrF,KAAK89C,IAAIt3C,EAAGo/D,GAAOp/D,GAAIoxI,EAAIuC,sBAAsB7+I,UAAUq/I,SAAS,SAASC,GAAa,IAAIp0I,EAAG,IAAIoxI,EAAI53I,KAAKs6I,YAAY,gBAAgB,OAAOM,EAAYA,EAAYp2E,KAAKj/D,YAAYiB,EAAGg+D,MAAMxkE,KAAKwkE,KAAKj/D,YAAYiB,EAAGg+D,MAAMh+D,EAAG41E,OAAOp8E,KAAKwG,GAAIoxI,EAAIiD,qBAAqB,SAAS5gJ,EAAKuiF,EAAOn3E,GAAOrF,KAAKqF,MAAMA,GAAO,GAAGrF,KAAKqF,MAAMu1F,QAAQ56F,KAAKqF,MAAMu1F,SAAS,GAAG56F,KAAK86I,WAAU,EAAG96I,KAAKoyC,YAAW,EAAGpyC,KAAK+6I,eAAenD,EAAIiD,qBAAqBv/I,UAAU0/I,SAAS,SAAS3/I,EAASV,GAAO,IAAI46D,EAAO,GAAG,YAAiBl6D,GAASk6D,EAAOl6D,EAASk6D,EAAOl6D,GAAUV,EAAMi9I,EAAIxwI,EAAE+oB,OAAOnwB,KAAKqF,MAAMu1F,QAAQrlC,GAAQv1D,KAAK+6I,eAAenD,EAAIiD,qBAAqBv/I,UAAUy/I,YAAY,WAAW,IAAIE,EAAM,GAAGrD,EAAIiD,qBAAqBK,YAAYD,EAAMj7I,KAAKqF,MAAMy3G,SAAS86B,EAAIiD,qBAAqBK,YAAYD,EAAMj7I,KAAKqF,MAAMu1F,SAAS56F,KAAK86I,WAAWlD,EAAIiD,qBAAqBK,YAAYD,EAAMj7I,KAAKqF,MAAMmb,OAAOxgB,KAAKoyC,aAAawlG,EAAIiD,qBAAqBK,YAAYD,EAAMj7I,KAAKqF,MAAMwmB,UAAU7rB,KAAK86I,WAAWlD,EAAIiD,qBAAqBK,YAAYD,EAAMj7I,KAAKqF,MAAM81I,gBAAgBn7I,KAAKiD,IAAIg4I,IAAQrD,EAAIiD,qBAAqBK,YAAY,SAAS3lF,EAAO6lF,GAAW,IAAIngJ,EAA4B,IAAIA,KAA5BmgJ,EAAUA,GAAW,GAAwB,OAAOA,EAAUngJ,UAAYs6D,EAAOt6D,GAAKs6D,EAAOt6D,GAAKmgJ,EAAUngJ,IAAM28I,EAAIp+F,WAAW,WAAWo+F,EAAIp+F,WAAWggG,YAAYrwI,MAAMnJ,KAAK0E,YAAYkzI,EAAIthD,SAASshD,EAAIp+F,WAAWo+F,EAAIqC,iBAAiBrC,EAAIp+F,WAAW6hG,MAAM,6BAA6BzD,EAAIp+F,WAAWl+C,UAAUqJ,cAAc,SAASk5C,GAAS,OAAOn4C,SAAS+5C,gBAAgBm4F,EAAIp+F,WAAW6hG,MAAMx9F,IAAU+5F,EAAIp+F,WAAWl+C,UAAUomB,SAAS,SAASq8B,GAAW/9C,KAAKwkE,KAAKhmB,aAAa,QAAQT,IAAY65F,EAAIp+F,WAAWl+C,UAAUggJ,cAAc,SAASC,GAAK,OAAO3D,EAAI,MAAM2D,IAAM3D,EAAIp+F,WAAWl+C,UAAU6iD,QAAQ,WAAW,OAAOn+C,KAAKwkE,KAAKrmB,WAAWy5F,EAAI4D,gBAAgB,WAAW5D,EAAI4D,gBAAgBhC,YAAY3/I,KAAKmG,KAAK,MAAM43I,EAAIthD,SAASshD,EAAI4D,gBAAgB5D,EAAIp+F,YAAYo+F,EAAI4D,gBAAgBlgJ,UAAUwiD,IAAI,SAAS56B,GAASljB,KAAKwkE,KAAKj/D,YAAY2d,EAAQshD,OAAOozE,EAAI6D,iBAAiB,WAAWz7I,KAAKs6I,YAAY,MAAM1C,EAAI6D,iBAAiBjC,YAAY3/I,KAAKmG,KAAK,OAAOA,KAAK07I,YAAY,IAAI9D,EAAIp+F,WAAW,QAAQx5C,KAAKwkE,KAAKj/D,YAAYvF,KAAK07I,YAAYl3E,MAAMozE,EAAIuC,sBAAsBhxI,MAAMnJ,KAAK0E,YAAYkzI,EAAIthD,SAASshD,EAAI6D,iBAAiB7D,EAAIp+F,YAAYo+F,EAAI6B,MAAM7B,EAAI6D,iBAAiB7D,EAAIuC,uBAAuBvC,EAAI6D,iBAAiBngJ,UAAU8+I,QAAQ,SAASn5H,EAAMC,GAAQlhB,KAAKihB,MAAMA,EAAMjhB,KAAKkhB,OAAOA,EAAOlhB,KAAKwkE,KAAKhmB,aAAa,QAAQv9B,GAAOjhB,KAAKwkE,KAAKhmB,aAAa,SAASt9B,IAAS02H,EAAI6D,iBAAiBngJ,UAAUqgJ,qBAAqB,SAAS/8F,EAAMg9F,EAAOC,GAAQ77I,KAAK4+C,MAAMA,EAAM5+C,KAAK47I,OAAOA,EAAO57I,KAAK67I,OAAOA,EAAO77I,KAAKq6I,YAAY71E,KAAKhmB,aAAa,YAAY,SAASI,EAAM,eAAeg9F,EAAO,KAAKC,EAAO,MAAMjE,EAAIkE,gBAAgB,SAAS7hJ,EAAKuiF,GAAQo7D,EAAIkE,gBAAgBtC,YAAY3/I,KAAKmG,KAAK/F,EAAKuiF,GAAQo7D,EAAIiD,qBAAqB1xI,MAAMnJ,KAAK0E,YAAYkzI,EAAIthD,SAASshD,EAAIkE,gBAAgBlE,EAAIp+F,YAAYo+F,EAAI6B,MAAM7B,EAAIkE,gBAAgBlE,EAAIiD,sBAAsBjD,EAAIkE,gBAAgBxgJ,UAAU4+I,UAAU,SAASt5H,EAAKjmB,GAAO,IAAIohJ,EAAUC,EAAQl6I,EAAK9B,KAAK,SAAS4gB,GAAMg3H,EAAIoC,WAAWr/I,GAAOi9I,EAAIkE,gBAAgBG,OAAOthJ,GAAOqF,KAAKk6I,UAAU,OAAO,aAAatC,EAAIkE,gBAAgBG,OAAOthJ,GAAO,KAAKi9I,EAAIgC,gBAAgBj/I,GAAOuhJ,MAAK,SAAS50F,IAAK00F,EAAQ,IAAIpE,EAAIp+F,WAAW,UAAiBgrB,KAAK23E,eAAe,+BAA+B,OAAOxhJ,GAAOqhJ,EAAQ9B,UAAU,IAAI,KAAK8B,EAAQ9B,UAAU,IAAI,KAAK8B,EAAQ9B,UAAU,QAAQ5yF,EAAI,GAAGrmC,OAAO+6H,EAAQ9B,UAAU,SAAS5yF,EAAI,GAAGpmC,SAAQ66H,EAAU,IAAInE,EAAIp+F,WAAW,YAAqB0gG,UAAU,KAAK,QAAQtC,EAAIkE,gBAAgBM,cAAcL,EAAU7B,UAAU,IAAI,GAAG6B,EAAU7B,UAAU,IAAI,GAAG6B,EAAU7B,UAAU,QAAQ5yF,EAAI,GAAGrmC,MAAM,GAAG86H,EAAU7B,UAAU,SAAS5yF,EAAI,GAAGpmC,OAAO,GAAG66H,EAAU7B,UAAU,UAAU,OAAO5yF,EAAI,GAAGrmC,MAAM,IAAIqmC,EAAI,GAAGpmC,QAAQ66H,EAAU7B,UAAU,eAAe,kBAAkB6B,EAAUv3E,KAAKj/D,YAAYy2I,EAAQx3E,MAAM1iE,EAAKs6E,OAAOs/D,YAAYl3E,KAAKj/D,YAAYw2I,EAAUv3E,MAAMozE,EAAIkE,gBAAgBG,OAAOthJ,GAAOi9I,EAAIkE,gBAAgBM,eAAet6I,EAAKo4I,UAAU,OAAO,aAAatC,EAAIkE,gBAAgBG,OAAOthJ,GAAO,QAAOi9I,EAAIkE,gBAAgBtC,YAAYl+I,UAAU4+I,UAAU/wI,MAAMnJ,KAAK0E,YAAYkzI,EAAIkE,gBAAgBM,aAAa,EAAExE,EAAIkE,gBAAgBG,OAAO,GAAGrE,EAAIyE,eAAe,SAAS7/D,EAAOn3E,GAAOuyI,EAAIyE,eAAe7C,YAAY3/I,KAAKmG,KAAK,OAAOw8E,EAAOn3E,GAAOrF,KAAKwkE,KAAKhmB,aAAa,YAAY,YAAYo5F,EAAIthD,SAASshD,EAAIyE,eAAezE,EAAIkE,iBAAiBlE,EAAI0E,iBAAiB,SAAS9/D,EAAOn3E,GAAOuyI,EAAI0E,iBAAiB9C,YAAY3/I,KAAKmG,KAAK,SAASw8E,EAAOn3E,IAAQuyI,EAAIthD,SAASshD,EAAI0E,iBAAiB1E,EAAIkE,iBAAiBlE,EAAI2E,gBAAgB,SAAS//D,EAAOn3E,GAAOuyI,EAAI2E,gBAAgB/C,YAAY3/I,KAAKmG,KAAK,QAAQw8E,EAAOn3E,IAAQuyI,EAAIthD,SAASshD,EAAI2E,gBAAgB3E,EAAIkE,iBAAiBlE,EAAI2E,gBAAgBjhJ,UAAU4+I,UAAU,SAASt5H,EAAKjmB,GAAO,IAAImH,EAAK9B,KAAK,SAAS4gB,EAAKg3H,EAAIgC,gBAAgBj/I,GAAOuhJ,MAAK,SAAS50F,GAAKxlD,EAAK0iE,KAAK23E,eAAe,+BAA+B,OAAOxhJ,GAAOmH,EAAKmf,MAAMqmC,EAAI,GAAGrmC,MAAMnf,EAAKof,OAAOomC,EAAI,GAAGpmC,OAAOpf,EAAKo4I,UAAU,QAAQp4I,EAAKmf,OAAOnf,EAAKo4I,UAAU,SAASp4I,EAAKof,QAAQpf,EAAKo4I,UAAU,IAAIp4I,EAAKoyH,GAAGpyH,EAAKmf,MAAM,GAAGnf,EAAKo4I,UAAU,IAAIp4I,EAAKqyH,GAAGryH,EAAKof,OAAO,GAAG02H,EAAIxwI,EAAEtF,EAAK0iE,MAAMl7C,QAAQ,cAAc,CAACg+B,OAAQ,MAAM1mC,GAAM5gB,KAAKk0H,GAAGv5H,EAAMqF,KAAKihB,OAAOjhB,KAAKk6I,UAAU,IAAIv/I,EAAMqF,KAAKihB,MAAM,IAAI,MAAML,GAAM5gB,KAAKm0H,GAAGx5H,EAAMqF,KAAKkhB,QAAQlhB,KAAKk6I,UAAU,IAAIv/I,EAAMqF,KAAKkhB,OAAO,IAAI02H,EAAI2E,gBAAgB/C,YAAYl+I,UAAU4+I,UAAU/wI,MAAMnJ,KAAK0E,YAAYkzI,EAAI4E,eAAe,SAAShgE,EAAOn3E,GAAOuyI,EAAI4E,eAAehD,YAAY3/I,KAAKmG,KAAK,OAAOw8E,EAAOn3E,IAAQuyI,EAAIthD,SAASshD,EAAI4E,eAAe5E,EAAIkE,iBAAiBlE,EAAI4E,eAAelhJ,UAAU4+I,UAAU,SAASt5H,EAAKjmB,GAAO,SAASimB,EAAK5gB,KAAKwkE,KAAKt3C,YAAYvyB,EAAMi9I,EAAI4E,eAAehD,YAAYl+I,UAAU4+I,UAAU/wI,MAAMnJ,KAAK0E,YAAYkzI,EAAI6E,WAAW,WAAW7E,EAAI6E,WAAWC,gBAAgB9E,EAAI6E,WAAWE,gBAAgB/E,EAAI6E,WAAWjD,YAAYrwI,MAAMnJ,KAAK0E,YAAYkzI,EAAIthD,SAASshD,EAAI6E,WAAW7E,EAAIqC,iBAAiBrC,EAAI6E,WAAWC,gBAAe,EAAG9E,EAAI6E,WAAWE,cAAc,WAAW,IAAIj3I,SAASk3I,WAAWC,MAAMn3I,SAASk3I,WAAW9+F,IAAI,OAAO,iCAAiC85F,EAAI6E,WAAWnhJ,UAAUqJ,cAAc,SAASk5C,GAAS,OAAOn4C,SAASf,cAAc,SAASk5C,EAAQ,mBAAmB,MAAM70C,GAAG4uI,EAAI6E,WAAWnhJ,UAAUqJ,cAAc,SAASk5C,GAAS,OAAOn4C,SAASf,cAAc,IAAIk5C,EAAQ,yDAAyDn4C,SAASo3I,mBAAmBC,QAAQ,QAAQ,8BAA8BnF,EAAI6E,WAAWC,gBAAe,GAAI9E,EAAI6E,WAAWnhJ,UAAUggJ,cAAc,SAASC,GAAK,OAAO3D,EAAI,MAAM2D,IAAM3D,EAAI6E,WAAWnhJ,UAAUomB,SAAS,SAASq8B,GAAW65F,EAAIxwI,EAAEpH,KAAKwkE,MAAM9iD,SAASq8B,IAAY65F,EAAI6E,WAAWnhJ,UAAU4+I,UAAU,SAASt5H,EAAKjmB,GAAOqF,KAAKwkE,KAAK5jD,GAAMjmB,GAAOi9I,EAAI6E,WAAWnhJ,UAAU6iD,QAAQ,WAAW,IAAIqmB,EAAKozE,EAAIxwI,EAAEpH,KAAKwkE,MAAM,MAAM,CAACjyC,EAAEiyC,EAAK9xD,WAAW+Q,KAAKzjB,KAAKo8E,OAAOx9B,MAAMnI,EAAE+tB,EAAK9xD,WAAW8Q,IAAIxjB,KAAKo8E,OAAOx9B,MAAM39B,MAAMujD,EAAKvjD,QAAQjhB,KAAKo8E,OAAOx9B,MAAM19B,OAAOsjD,EAAKtjD,SAASlhB,KAAKo8E,OAAOx9B,QAAQg5F,EAAIoF,gBAAgB,WAAWpF,EAAIoF,gBAAgBxD,YAAY3/I,KAAKmG,KAAK,SAASA,KAAKwkE,KAAKn/D,MAAMoe,KAAK,MAAMzjB,KAAKwkE,KAAKn/D,MAAMme,IAAI,MAAMxjB,KAAKwkE,KAAKy4E,YAAY,OAAOrF,EAAIthD,SAASshD,EAAIoF,gBAAgBpF,EAAI6E,YAAY7E,EAAIoF,gBAAgB1hJ,UAAUwiD,IAAI,SAAS56B,GAASljB,KAAKwkE,KAAKj/D,YAAY2d,EAAQshD,OAAOozE,EAAIsF,iBAAiB,WAAWl9I,KAAKs6I,YAAY,MAAM1C,EAAIsF,iBAAiB1D,YAAY3/I,KAAKmG,KAAK,SAAS43I,EAAIuC,sBAAsBhxI,MAAMnJ,KAAK0E,WAAW1E,KAAKwkE,KAAKn/D,MAAMqN,SAAS,YAAYklI,EAAIthD,SAASshD,EAAIsF,iBAAiBtF,EAAI6E,YAAY7E,EAAI6B,MAAM7B,EAAIsF,iBAAiBtF,EAAIuC,uBAAuBvC,EAAIsF,iBAAiB5hJ,UAAU8+I,QAAQ,SAASn5H,EAAMC,GAAQ,IAAIi8H,EAAM5nI,EAAO7b,EAAEC,EAAE,GAAGqG,KAAKihB,MAAMA,EAAMjhB,KAAKkhB,OAAOA,EAAOlhB,KAAKwkE,KAAKn/D,MAAM4b,MAAMA,EAAM,KAAKjhB,KAAKwkE,KAAKn/D,MAAM6b,OAAOA,EAAO,KAAKlhB,KAAKwkE,KAAK44E,UAAUn8H,EAAM,IAAIC,EAAOlhB,KAAKwkE,KAAKy4E,YAAY,MAAMj9I,KAAKq6I,YAAY,CAAC,IAA8D3gJ,EAAE,EAAEC,GAA9DwjJ,EAAMn9I,KAAKq6I,YAAY71E,KAAK1rB,qBAAqB,UAAqB52C,OAAOvI,EAAED,EAAEA,IAAIyjJ,EAAMzjJ,GAAG0jJ,UAAUn8H,EAAM,IAAIC,EAAOi8H,EAAMzjJ,GAAG2L,MAAM4b,MAAMA,EAAM,KAAKk8H,EAAMzjJ,GAAG2L,MAAM6b,OAAOA,EAAO,KAAK,IAAmDxnB,EAAE,EAAEC,GAAnD4b,EAAOvV,KAAKwkE,KAAK1rB,qBAAqB,UAAsB52C,OAAOvI,EAAED,EAAEA,IAAI6b,EAAO7b,GAAG0jJ,UAAUn8H,EAAM,IAAIC,EAAO3L,EAAO7b,GAAG2L,MAAM4b,MAAMA,EAAM,KAAK1L,EAAO7b,GAAG2L,MAAM6b,OAAOA,EAAO,OAAO02H,EAAIsF,iBAAiB5hJ,UAAUqgJ,qBAAqB,SAAS/8F,EAAMg9F,EAAOC,GAAQ77I,KAAK4+C,MAAMA,EAAM5+C,KAAK47I,OAAOA,EAAO57I,KAAK67I,OAAOA,EAAO77I,KAAKq6I,YAAY71E,KAAKy4E,YAAYj9I,KAAKihB,MAAM26H,EAAO57I,KAAKihB,MAAM,IAAI,KAAKjhB,KAAKkhB,OAAO26H,EAAO77I,KAAKkhB,OAAO,KAAKlhB,KAAKq6I,YAAY71E,KAAK44E,UAAUp9I,KAAKihB,MAAM29B,EAAM,IAAI5+C,KAAKkhB,OAAO09B,GAAOg5F,EAAIyF,gBAAgB,SAASpjJ,EAAKuiF,GAAQo7D,EAAIyF,gBAAgB7D,YAAY3/I,KAAKmG,KAAK/F,EAAKuiF,GAAQx8E,KAAKs9I,YAAY,IAAI1F,EAAI6E,WAAW,QAAQz8I,KAAKu9I,cAAc,IAAI3F,EAAI6E,WAAW,UAAUz8I,KAAKwkE,KAAKj/D,YAAYvF,KAAKs9I,YAAY94E,MAAMxkE,KAAKwkE,KAAKj/D,YAAYvF,KAAKu9I,cAAc/4E,MAAMxkE,KAAKwkE,KAAK4tD,SAAQ,EAAGwlB,EAAIiD,qBAAqB1xI,MAAMnJ,KAAK0E,YAAYkzI,EAAIthD,SAASshD,EAAIyF,gBAAgBzF,EAAI6E,YAAY7E,EAAI6B,MAAM7B,EAAIyF,gBAAgBzF,EAAIiD,sBAAsBjD,EAAIyF,gBAAgB/hJ,UAAU4+I,UAAU,SAASt5H,EAAKjmB,GAAO,OAAOimB,GAAM,IAAI,OAAO5gB,KAAKwkE,KAAKg5E,UAAU7iJ,EAAM,MAAM,IAAI,eAAeqF,KAAKs9I,YAAY94E,KAAK9gD,QAAQ/nB,KAAKyiC,MAAM,IAAIzjC,GAAO,IAAI,MAAM,IAAI,SAASqF,KAAKwkE,KAAK4tD,QAAQ,SAASz3H,EAAYqF,KAAKwkE,KAAKi5E,YAAY9iJ,EAAM,MAAM,IAAI,iBAAiBqF,KAAKu9I,cAAc/4E,KAAK9gD,QAAQ/nB,KAAKyiC,MAAM,IAAIzjC,GAAO,IAAI,MAAM,IAAI,eAAeqF,KAAKwkE,KAAK4tD,QAAQ,IAAIv0G,SAASljB,EAAM,IAAUqF,KAAKwkE,KAAKk5E,aAAa/iJ,EAAM,MAAM,IAAI,IAAIqF,KAAKwkE,KAAKngE,KAAKuzI,EAAI+F,eAAeC,aAAajjJ,GAAO,MAAM,QAAQi9I,EAAIyF,gBAAgB7D,YAAYl+I,UAAU4+I,UAAU/wI,MAAMnJ,KAAK0E,aAAakzI,EAAI+F,eAAe,SAASnhE,EAAOn3E,GAAO,IAAIu5C,EAAM,IAAIg5F,EAAI6E,WAAW,QAAQ7E,EAAI+F,eAAenE,YAAY3/I,KAAKmG,KAAK,QAAQw8E,EAAOn3E,GAAOrF,KAAKwkE,KAAKy4E,YAAY,MAAMr+F,EAAM4lB,KAAK1/C,IAAG,EAAG85B,EAAM4lB,KAAKq5E,OAAO,oBAAoBj/F,EAAM4lB,KAAKxuC,OAAO,MAAMh2B,KAAKwkE,KAAKj/D,YAAYq5C,EAAM4lB,OAAOozE,EAAIthD,SAASshD,EAAI+F,eAAe/F,EAAIyF,iBAAiBzF,EAAI+F,eAAeriJ,UAAU4+I,UAAU,SAASt5H,EAAKjmB,GAAO,MAAMimB,EAAK5gB,KAAKwkE,KAAKngE,KAAKuzI,EAAI+F,eAAeC,aAAajjJ,GAAOi9I,EAAIyF,gBAAgB/hJ,UAAU4+I,UAAUrgJ,KAAKmG,KAAK4gB,EAAKjmB,IAAQi9I,EAAI+F,eAAeC,aAAa,SAASv5I,GAAM,IAAIy5I,EAAMC,EAAM7pB,EAAG,EAAEC,EAAG,EAAE,OAAO9vH,EAAKA,EAAK+D,QAAQ,mBAAmB,MAAUA,QAAQ,sDAAqD,SAAS8oH,EAAQ1hG,EAAOwuH,IAAQA,EAAOA,EAAO51I,QAAQ,SAAS,QAAQA,QAAQ,QAAQ,IAAIA,QAAQ,QAAQ,IAAIA,QAAQ,OAAO,KAAKxI,MAAM,MAAY,IAAIo+I,EAAO51H,QAAQ,IAAI,IAAI1uB,EAAE,EAAEC,EAAEqkJ,EAAO97I,OAAOvI,EAAED,EAAEA,IAAIskJ,EAAOtkJ,GAAGiC,KAAKyiC,MAAM,IAAI4/G,EAAOtkJ,IAAI,OAAO81B,GAAQ,IAAI,IAAI,OAAO0kG,GAAI8pB,EAAO,GAAG7pB,GAAI6pB,EAAO,GAAG,IAAIA,EAAOj+I,KAAK,KAAK,IAAI,IAAI,OAAOm0H,EAAG8pB,EAAO,GAAG7pB,EAAG6pB,EAAO,GAAG,IAAIA,EAAOj+I,KAAK,KAAK,IAAI,IAAI,OAAOm0H,GAAI8pB,EAAO,GAAG7pB,GAAI6pB,EAAO,GAAG,IAAIA,EAAOj+I,KAAK,KAAK,IAAI,IAAI,OAAOm0H,EAAG8pB,EAAO,GAAG7pB,EAAG6pB,EAAO,GAAG,IAAIA,EAAOj+I,KAAK,KAAK,IAAI,IAAI,OAAOm0H,GAAI8pB,EAAO,GAAG,IAAIA,EAAO,GAAG,KAAK,IAAI,IAAI,MAAoB,KAAb9pB,EAAG8pB,EAAO,IAAU,IAAI7pB,EAAG,IAAI,IAAI,OAAOA,GAAI6pB,EAAO,GAAG,MAAMA,EAAO,GAAG,IAAI,IAAI,OAAO7pB,EAAG6pB,EAAO,GAAG,IAAI9pB,EAAG,IAAIC,EAAG,IAAI,IAAI,OAAO2pB,EAAM5pB,EAAG8pB,EAAOA,EAAO97I,OAAO,GAAG67I,EAAM5pB,EAAG6pB,EAAOA,EAAO97I,OAAO,GAAGgyH,GAAI8pB,EAAOA,EAAO97I,OAAO,GAAGiyH,GAAI6pB,EAAOA,EAAO97I,OAAO,GAAG,IAAI87I,EAAOj+I,KAAK,KAAK,IAAI,IAAI,OAAO+9I,EAAME,EAAOA,EAAO97I,OAAO,GAAG67I,EAAMC,EAAOA,EAAO97I,OAAO,GAAGgyH,EAAG8pB,EAAOA,EAAO97I,OAAO,GAAGiyH,EAAG6pB,EAAOA,EAAO97I,OAAO,GAAG,IAAI87I,EAAOj+I,KAAK,KAAK,IAAI,IAAI,OAAOi+I,EAAOtoG,QAAQy+E,EAAG4pB,GAAOC,EAAOtoG,QAAQw+E,EAAG4pB,GAAOA,EAAM5pB,EAAG8pB,EAAOA,EAAO97I,OAAO,GAAG67I,EAAM5pB,EAAG6pB,EAAOA,EAAO97I,OAAO,GAAGgyH,GAAI8pB,EAAOA,EAAO97I,OAAO,GAAGiyH,GAAI6pB,EAAOA,EAAO97I,OAAO,GAAG,IAAI87I,EAAOj+I,KAAK,KAAK,IAAI,IAAI,OAAOi+I,EAAOtoG,QAAQy+E,EAAGA,EAAG4pB,GAAOC,EAAOtoG,QAAQw+E,EAAGA,EAAG4pB,GAAOA,EAAME,EAAOA,EAAO97I,OAAO,GAAG67I,EAAMC,EAAOA,EAAO97I,OAAO,GAAGgyH,EAAG8pB,EAAOA,EAAO97I,OAAO,GAAGiyH,EAAG6pB,EAAOA,EAAO97I,OAAO,GAAG,IAAI87I,EAAOj+I,KAAK,KAAK,MAAM,MAAKqI,QAAQ,KAAK,MAAMwvI,EAAIqG,iBAAiB,SAASzhE,EAAOn3E,GAAOuyI,EAAIqG,iBAAiBzE,YAAY3/I,KAAKmG,KAAK,OAAOw8E,EAAOn3E,IAAQuyI,EAAIthD,SAASshD,EAAIqG,iBAAiBrG,EAAIyF,iBAAiBzF,EAAIqG,iBAAiB3iJ,UAAU4+I,UAAU,SAASt5H,EAAKjmB,GAAO,OAAOimB,GAAM,IAAI,IAAI5gB,KAAKwkE,KAAKn/D,MAAM4b,MAAM,EAAEtmB,EAAM,KAAKqF,KAAKwkE,KAAKn/D,MAAM6b,OAAO,EAAEvmB,EAAM,KAAKqF,KAAKk6I,UAAU,KAAKl6I,KAAKzF,IAAI,OAAO,GAAGyF,KAAKk6I,UAAU,KAAKl6I,KAAKzF,IAAI,OAAO,GAAG,MAAM,IAAI,KAAK,IAAII,EAAM,OAAOqF,KAAKwkE,KAAKn/D,MAAMoe,KAAK9oB,GAAOqF,KAAKzF,IAAI,MAAM,GAAG,KAAK,MAAM,IAAI,KAAK,IAAII,EAAM,OAAOqF,KAAKwkE,KAAKn/D,MAAMme,IAAI7oB,GAAOqF,KAAKzF,IAAI,MAAM,GAAG,KAAK,MAAM,QAAQq9I,EAAIqG,iBAAiBzE,YAAYl+I,UAAU4+I,UAAUrgJ,KAAKmG,KAAK4gB,EAAKjmB,KAASi9I,EAAIsG,aAAa,SAAS7/F,EAAUp9B,EAAMC,GAAQ,OAAOlhB,KAAKnF,KAAKiB,OAAOqiJ,SAAS,MAAM,MAAMn+I,KAAKo+I,KAAK,OAAOp+I,KAAKnF,KAAK,IAAI+8I,EAAI6D,iBAAiBp9F,EAAUp9B,EAAMC,GAAQ,IAAI02H,EAAIsF,iBAAiB7+F,EAAUp9B,EAAMC,GAAQlhB,KAAKo+I,KAAKvjJ,KAAKmF,KAAKnF,KAAKmF,KAAKo+I,MAAMxG,EAAIyG,YAAY,SAASz/F,GAAO5+C,KAAK4+C,MAAMA,GAAOg5F,EAAIyG,YAAY/iJ,UAAUgjJ,SAAS,SAAS3jJ,GAAO,OAAOA,GAAOi9I,EAAI2G,aAAa,SAAS3/F,GAAO5+C,KAAK4+C,MAAMA,GAAOg5F,EAAI2G,aAAajjJ,UAAUgjJ,SAAS,SAAS3jJ,GAAO,OAAOqF,KAAK4+C,MAAMjkD,IAAQi9I,EAAI2G,aAAajjJ,UAAUgnF,SAAS,WAAW,IAAIrnF,EAAIonF,EAAM,GAAG,IAAIpnF,KAAO+E,KAAK4+C,MAAMyjC,EAAMnjF,KAAK,CAACsqB,MAAMvuB,EAAIN,MAAMqF,KAAK4+C,MAAM3jD,KAAO,OAAOonF,GAAOu1D,EAAI4G,aAAa,SAAS5/F,EAAM04F,EAAkBzyG,EAASC,GAAU9kC,KAAK4+C,MAAM,GAAG04F,EAAkBA,GAAmB,SAAS14F,GAAO5+C,KAAKy+I,SAAS7/F,GAAO04F,GAAmBt3I,KAAK0+I,qBAAqBpH,QAAmB,IAAoBzyG,GAAU7kC,KAAK8kH,OAAOjgF,QAAU,IAAoBC,GAAU9kC,KAAKglH,OAAOlgF,IAAW8yG,EAAI4G,aAAaljJ,UAAU,CAACwpH,OAAO,SAAS/lH,GAAKiB,KAAK2+I,cAAc5/I,EAAIiB,KAAK6kC,SAAS,mBAAmB7kC,KAAKgI,UAAUhI,KAAKgI,UAAUjJ,GAAKA,GAAKimH,OAAO,SAAS5+G,GAAKpG,KAAK4+I,cAAcx4I,EAAIpG,KAAK8kC,SAAS,mBAAmB9kC,KAAKgI,UAAUhI,KAAKgI,UAAU5B,GAAKA,GAAKq4I,SAAS,SAAS7/F,GAAO,IAAIllD,EAAE,IAAIsG,KAAK4+C,MAAM,GAAGllD,EAAE,EAAEA,EAAEklD,EAAM18C,OAAOxI,IAAIsG,KAAK4+C,MAAMllD,GAAG,CAACklD,EAAMllD,KAAKglJ,qBAAqB,SAASjiJ,GAAG,eAAeA,EAAEuD,KAAKgI,UAAU,SAASrN,GAAO,OAAOgB,KAAK22B,IAAI33B,EAAM,KAAK,WAAW8B,SAASuD,KAAKgI,UAAUhI,KAAKgI,UAAUvL,EAAEuD,KAAK8kH,OAAO9kH,KAAK2+I,eAAe3+I,KAAKglH,OAAOhlH,KAAK4+I,gBAAgBN,SAAS,SAAS3jJ,GAAO,IAAIhB,EAAEI,EAAE8kJ,EAAS,GAAGC,EAAW,EAAEplJ,EAAE,EAAE,IAAI,mBAAmBsG,KAAKgI,YAAYrN,EAAMqF,KAAKgI,UAAUrN,IAAQjB,EAAE,EAAEA,EAAEsG,KAAK4+C,MAAM18C,OAAO,EAAExI,IAAIC,EAAEqG,KAAK++I,aAAa/+I,KAAKg/I,eAAeh/I,KAAK4+C,MAAMllD,EAAE,GAAGsG,KAAK4+C,MAAMllD,KAAKmlJ,EAAS3/I,KAAKvF,GAAGmlJ,GAAYnlJ,EAAE,IAAII,GAAGiG,KAAK8kC,SAAS9kC,KAAK6kC,UAAUi6G,EAAWplJ,EAAE,EAAEA,EAAEmlJ,EAAS38I,OAAOxI,IAAImlJ,EAASnlJ,IAAIK,EAAE,IAAIL,EAAE,EAAEiB,GAAOqF,KAAK6kC,SAASlqC,EAAMkkJ,EAASnlJ,IAAI,GAAGiB,GAAOkkJ,EAASnlJ,GAAGA,IAAI,OAAasG,KAAKi/I,YAAYvlJ,GAAGsG,KAAK4+C,MAAM18C,OAAO,EAAElC,KAAK4+C,MAAMllD,GAAGsG,KAAKk/I,UAAUl/I,KAAK4+C,MAAMllD,GAAGsG,KAAKm/I,WAAWn/I,KAAKg/I,eAAeh/I,KAAK4+C,MAAMllD,EAAE,GAAGsG,KAAK4+C,MAAMllD,IAAIiB,EAAMkkJ,EAASnlJ,OAAOulJ,YAAY,SAASG,GAAQ,IAAI1lJ,EAAE0vE,EAAI,EAAE,IAAI1vE,EAAE,EAAEA,EAAE0lJ,EAAOl9I,OAAOxI,IAAI0vE,GAAKztE,KAAKyiC,MAAMghH,EAAO1lJ,IAAIiC,KAAK22B,IAAI,IAAI8sH,EAAOl9I,OAAOxI,EAAE,GAAG,OAAO0vE,GAAK41E,eAAe,SAASK,EAAQC,GAAS,IAAI5lJ,EAAE0lJ,EAAO,GAAG,IAAI1lJ,EAAE,EAAEA,EAAE2lJ,EAAQn9I,OAAOxI,IAAI0lJ,EAAO1lJ,GAAG2lJ,EAAQ3lJ,GAAG4lJ,EAAQ5lJ,GAAG,OAAO0lJ,GAAQF,UAAU,SAASG,EAAQC,GAAS,IAAI5lJ,EAAE0lJ,EAAO,GAAG,IAAI1lJ,EAAE,EAAEA,EAAE2lJ,EAAQn9I,OAAOxI,IAAI0lJ,EAAO1lJ,GAAG2lJ,EAAQ3lJ,GAAG4lJ,EAAQ5lJ,GAAG,OAAO0lJ,GAAQD,WAAW,SAASC,EAAOh2E,GAAK,IAAI1vE,EAAEsI,EAAO,GAAG,IAAItI,EAAE,EAAEA,EAAE0lJ,EAAOl9I,OAAOxI,IAAIsI,EAAOtI,GAAG0lJ,EAAO1lJ,GAAG0vE,EAAI,OAAOpnE,GAAQ+8I,aAAa,SAASK,GAAQ,IAAI1lJ,EAAEsI,EAAO,EAAE,IAAItI,EAAE,EAAEA,EAAE0lJ,EAAOl9I,OAAOxI,IAAIsI,GAAQo9I,EAAO1lJ,GAAG0lJ,EAAO1lJ,GAAG,OAAOiC,KAAK24C,KAAKtyC,IAASsgF,SAAS,WAAW,IAAI2hB,EAAK1tD,EAAMgpG,EAAO,CAACv/I,KAAK2+I,cAAc3+I,KAAK4+I,eAAep/B,EAAK+/B,EAAO,GAAGA,EAAO,GAAGn8F,EAAKznD,KAAK22B,IAAI,GAAG32B,KAAKuE,MAAMvE,KAAKw3B,IAAIqsF,EAA/G,GAAuH7jH,KAAK6jJ,OAAO95E,EAAnI,EAAyI85C,EAAKp8D,EAAKi/B,EAAM,GAAG,IAAI,KAAK3c,EAAItiB,GAAM,GAAG,KAAKsiB,EAAItiB,GAAM,EAAE,KAAKsiB,IAAMtiB,GAAM,GAAGm8F,EAAO,GAAG5jJ,KAAKuE,MAAMq/I,EAAO,GAAGn8F,GAAMA,EAAKm8F,EAAO,GAAG5jJ,KAAKsE,KAAKs/I,EAAO,GAAGn8F,GAAMA,EAAK6gD,EAAKs7C,EAAO,GAAGt7C,GAAMs7C,EAAO,IAAIhpG,EAAE0tD,GAAMs7C,EAAO,GAAGv/I,KAAK2+I,cAAc16C,GAAMs7C,EAAO,GAAGv/I,KAAK4+I,cAAc36C,EAAK5hB,EAAMnjF,KAAK,CAACsqB,MAAMy6E,EAAKtpG,MAAMqF,KAAKs+I,SAAS/nG,KAAK0tD,GAAM7gD,EAAK,OAAOi/B,IAAQu1D,EAAI6H,WAAW,WAAW7H,EAAI6H,WAAWjG,YAAYrwI,MAAMnJ,KAAK0E,YAAYkzI,EAAIthD,SAASshD,EAAI6H,WAAW7H,EAAI4G,cAAc5G,EAAI6H,WAAWnkJ,UAAUmjJ,SAAS,SAAS7/F,GAAO,IAAIllD,EAAE,IAAIA,EAAE,EAAEA,EAAEklD,EAAM18C,OAAOxI,IAAIsG,KAAK4+C,MAAMllD,GAAGk+I,EAAI6H,WAAWC,WAAW9gG,EAAMllD,KAAKk+I,EAAI6H,WAAWnkJ,UAAUgjJ,SAAS,SAAS3jJ,GAAO,OAAOi9I,EAAI6H,WAAWE,SAAS/H,EAAI6H,WAAWjG,YAAYl+I,UAAUgjJ,SAASzkJ,KAAKmG,KAAKrF,KAASi9I,EAAI6H,WAAWG,WAAW,SAASC,GAAI,IAAI7lJ,EAAEN,EAAEivE,EAAI,IAAI,IAAIjvE,EAAE,EAAEA,EAAEmmJ,EAAG39I,OAAOxI,IAAyBivE,GAAK,IAA1B3uE,EAAE6lJ,EAAGnmJ,GAAG0G,SAAS,KAAc8B,OAAO,IAAIlI,EAAEA,EAAE,OAAO2uE,GAAKivE,EAAI6H,WAAWE,SAAS,SAASv2E,GAAK,IAAIA,EAAIA,EAAIhpE,SAAS,IAAIgpE,EAAIlnE,OAAO,GAAGknE,EAAI,IAAIA,EAAI,MAAM,IAAIA,GAAKwuE,EAAI6H,WAAWC,WAAW,SAAS/2E,GAAK,OAAOA,EAAIA,EAAI7rB,OAAO,GAAG,CAACj/B,SAAS8qD,EAAI7rB,OAAO,EAAE,GAAG,IAAIj/B,SAAS8qD,EAAI7rB,OAAO,EAAE,GAAG,IAAIj/B,SAAS8qD,EAAI7rB,OAAO,EAAE,GAAG,MAAM86F,EAAI/7D,OAAO,SAAS4nB,GAAQzjG,KAAKyjG,OAAOA,GAAQ,GAAGzjG,KAAKqC,IAAIrC,KAAKyjG,OAAOphG,IAAIrC,KAAK8/I,OAAO9/I,KAAKyjG,OAAOq8C,OAAO9/I,KAAK+9B,KAAK65G,EAAIxwI,EAAE,UAAUpH,KAAK+9B,KAAKrc,SAAS,qBAAqB1hB,KAAKyjG,OAAOs8C,UAAU//I,KAAK+9B,KAAKrc,SAAS1hB,KAAKyjG,OAAOs8C,UAAUt8C,EAAOu8C,SAAShgJ,KAAKqC,IAAI49I,kBAAkB/9H,OAAOliB,KAAK+9B,MAAM/9B,KAAKqC,IAAI69I,oBAAoBh+H,OAAOliB,KAAK+9B,MAAM/9B,KAAK+oB,UAAU6uH,EAAI/7D,OAAOvgF,UAAUytB,OAAO,WAAW,IAAIrvB,EAAEuqG,EAAKk8C,EAAO32H,EAAM64D,EAAMriF,KAAK8/I,OAAOlhG,MAAM0jC,WAAW89D,EAAMxI,EAAIxwI,EAAE,UAAUsa,SAAS,2BAA2B,IAAI1hB,KAAK+9B,KAAKj5B,KAAK,IAAI9E,KAAKyjG,OAAOrsC,OAAOp3D,KAAK+9B,KAAK7b,OAAO01H,EAAIxwI,EAAE,UAAUsa,SAAS,2BAA2B5c,KAAK9E,KAAKyjG,OAAOrsC,QAAQp3D,KAAK+9B,KAAK7b,OAAOk+H,GAAO1mJ,EAAE,EAAEA,EAAE2oF,EAAMngF,OAAOxI,IAAI,CAAC,OAAOuqG,EAAK2zC,EAAIxwI,EAAE,UAAUsa,SAAS,0BAA0By+H,EAAOvI,EAAIxwI,EAAE,UAAUsa,SAAS,iCAAiC1hB,KAAK8/I,OAAOr8C,OAAOj+B,WAAW,IAAI,OAAOoyE,EAAIoC,WAAW33D,EAAM3oF,GAAGiB,OAAOwlJ,EAAOp/H,IAAI,aAAa,OAAOshE,EAAM3oF,GAAGiB,MAAM,KAAKwlJ,EAAOp/H,IAAI,aAAashE,EAAM3oF,GAAGiB,OAAO,MAAM,IAAI,SAASwlJ,EAAOp/H,IAAI,aAAashE,EAAM3oF,GAAGiB,OAAO,MAAM,IAAI,QAAQwlJ,EAAOp/H,IAAI,aAAa,OAAOshE,EAAM3oF,GAAGiB,MAAM,6BAA6B,MAAM,IAAI,IAAIi9I,EAAIxwI,EAAE,UAAU2Z,IAAI,CAAC,gBAAgBshE,EAAM3oF,GAAGiB,MAAM4mB,OAAOvhB,KAAKqC,IAAIohG,OAAO48C,YAAYvjC,QAAQ,gBAAgB,MAAM98G,KAAKqC,IAAIohG,OAAO48C,YAAYvjC,QAAQ7Q,OAAO,SAAShrF,MAAM,EAAEohE,EAAM3oF,GAAGiB,MAAM,KAAKumB,OAAO,EAAEmhE,EAAM3oF,GAAGiB,MAAM,KAAK2lJ,WAAWtgJ,KAAKqC,IAAIohG,OAAO48C,YAAYvjC,QAAQlqE,OAAO9vB,SAASq9H,GAAQl8C,EAAK/hF,OAAOi+H,GAAQ32H,EAAM64D,EAAM3oF,GAAG8vB,MAAMxpB,KAAKyjG,OAAO88C,cAAc/2H,EAAMxpB,KAAKyjG,OAAO88C,YAAY/2H,IAAQy6E,EAAK/hF,OAAO01H,EAAIxwI,EAAE,QAAQoiB,EAAM,WAAW9H,SAAS,gCAAgC0+H,EAAMl+H,OAAO+hF,GAAMm8C,EAAMl+H,OAAO01H,EAAIxwI,EAAE,UAAU2Z,IAAI,QAAQ,UAAU62H,EAAI4I,WAAW,SAAS/8C,EAAO9iD,EAASt+C,GAAK,IAAIsqG,GAAiBlJ,EAAOA,GAAQ,IAAUj+B,UAAUi+B,EAAOj+B,WAAW,OAAOxlE,KAAK2gD,SAASA,EAAS3gD,KAAKyjG,OAAOA,EAAOzjG,KAAKqC,IAAIA,EAAIohG,EAAO9xD,YAAY3xC,KAAKygJ,cAAch9C,EAAO9xD,YAAYimG,EAAIxwI,EAAEjD,QAAQs/F,EAAO7kD,QAAQ+tD,EAAiB,SAASlJ,EAAOj+B,WAAW,WAAWi+B,EAAOj+B,UAAUoyE,EAAI6H,WAAW7H,EAAI4G,aAAax+I,KAAK4+C,MAAM,IAAI+tD,EAAiBlJ,EAAO7kD,MAAM6kD,EAAO6zC,kBAAkB7zC,EAAO1kG,IAAI0kG,EAAOr9F,MAAMpG,KAAK4+C,MAAM6kD,EAAO7kD,MAAM,IAAIg5F,EAAI2G,aAAa96C,EAAO7kD,OAAO,IAAIg5F,EAAIyG,YAAY56C,EAAO7kD,OAAO5+C,KAAKmR,OAAOsyF,EAAOtyF,QAAQ,GAAGnR,KAAKwqE,UAAUxqE,KAAKmR,QAAQnR,KAAKyjG,OAAO3nB,SAAS97E,KAAK87E,OAAO,IAAI87D,EAAI/7D,OAAOz0E,EAAE+oB,OAAO,CAAC9tB,IAAIrC,KAAKqC,IAAIy9I,OAAO9/I,MAAMA,KAAKyjG,OAAO3nB,WAAW87D,EAAI4I,WAAWllJ,UAAU,CAACmlJ,cAAc,SAASxlJ,EAAI2lB,GAAM,IAAIhD,EAAKq9H,EAAMhgJ,EAAI,GAAG,iBAAiBA,EAAI+E,KAAK2gD,SAAS1lD,IAAM+E,KAAK2gD,SAAS1lD,GAAK+/I,SAASh7I,KAAKyjG,OAAOj+B,UAAU5kD,QAAW,IAAIhD,KAAQq9H,EAAMj7I,KAAK2gD,SAAS/iC,IAAO5d,KAAK2gD,SAAS/iC,GAAMsF,QAAQ83H,SAASh7I,KAAKyjG,OAAOj+B,UAAUy1E,EAAMr9H,KAAQ4sD,UAAU,SAASr5D,GAAQ,IAAIvQ,EAAIqkI,EAAG7+H,GAAK2zB,OAAO2/G,UAAU36I,EAAIg7B,OAAO2/G,UAAUuB,EAAM,GAAG,GAAGj7I,KAAK4+C,iBAAiBg5F,EAAI2G,cAAcv+I,KAAK4+C,iBAAiBg5F,EAAIyG,YAAY,IAAIpZ,KAAM9zH,EAAO8pI,EAAMhW,GAAI9zH,EAAO8zH,GAAIjlI,KAAK4+C,MAAM0/F,SAASntI,EAAO8zH,IAAKjlI,KAAK2gD,SAASskF,GAAI/hH,QAAQ7d,MAAMy3G,QAAQ98G,KAAKyjG,OAAOj+B,eAAe,CAAC,QAAG,IAAoBxlE,KAAKyjG,OAAO1kG,UAAK,IAAoBiB,KAAKyjG,OAAOr9F,IAAI,IAAI6+H,KAAM9zH,GAAOvQ,EAAI2d,WAAWpN,EAAO8zH,KAAS7+H,IAAMA,EAAIxF,GAAK7B,EAAI6B,IAAM7B,EAAI6B,GAA6O,IAAIqkI,UAA5O,IAAoBjlI,KAAKyjG,OAAO1kG,KAAKiB,KAAK4+C,MAAMkmE,OAAO/lH,GAAKiB,KAAKyjG,OAAO1kG,IAAIA,GAAKiB,KAAK4+C,MAAMkmE,OAAO9kH,KAAKyjG,OAAO1kG,UAAK,IAAoBiB,KAAKyjG,OAAOr9F,KAAKpG,KAAK4+C,MAAMomE,OAAO5+G,GAAKpG,KAAKyjG,OAAOr9F,IAAIA,GAAKpG,KAAK4+C,MAAMomE,OAAOhlH,KAAKyjG,OAAOr9F,KAAe+K,EAAO,WAAW8zH,IAAKrkI,EAAI2d,WAAWpN,EAAO8zH,IAAKgW,EAAMhW,GAAI9kI,MAAMS,GAAKZ,KAAK2gD,SAASskF,GAAI/hH,QAAQ7d,MAAMy3G,QAAQ98G,KAAKyjG,OAAOj+B,WAAWxlE,KAAK4+C,MAAM0/F,SAAS19I,IAAMZ,KAAKygJ,cAAcxF,GAAOrD,EAAIxwI,EAAE+oB,OAAOnwB,KAAKmR,OAAOA,IAASulD,MAAM,WAAW,IAAIz7D,EAAIggJ,EAAM,GAAG,IAAIhgJ,KAAO+E,KAAKmR,OAAOnR,KAAK2gD,SAAS1lD,KAAOggJ,EAAMhgJ,GAAK+E,KAAK2gD,SAAS1lD,GAAKioB,QAAQw9H,MAAMr7I,MAAMy3G,QAAQ98G,KAAKyjG,OAAOj+B,YAAYxlE,KAAKygJ,cAAcxF,GAAOj7I,KAAKmR,OAAO,IAAIstI,SAAS,SAAS7/F,GAAO5+C,KAAK4+C,MAAM6/F,SAAS7/F,GAAO5+C,KAAKmR,QAAQnR,KAAKwqE,UAAUxqE,KAAKmR,SAASutI,qBAAqB,SAASjiJ,GAAGuD,KAAK4+C,MAAM8/F,qBAAqBjiJ,GAAGuD,KAAKmR,QAAQnR,KAAKwqE,UAAUxqE,KAAKmR,UAAUymI,EAAI+I,KAAK,CAACC,OAAO,IAAIjlJ,KAAKm4C,GAAG+sG,OAAOllJ,KAAKm4C,GAAG,IAAI4wC,OAAO,QAAQo8D,IAAI,SAAS3lJ,GAAG,OAAOA,EAAE,EAAE,EAAE,EAAEA,GAAG,EAAEA,GAAG4lJ,KAAK,SAASC,EAAIC,EAAIlnJ,GAAG,MAAM,CAACw4B,EAAEvyB,KAAK0kF,QAAQu8D,EAAIlnJ,GAAGiG,KAAK6gJ,OAAOpqG,GAAGz2C,KAAK0kF,OAAO/oF,KAAKw3B,IAAIx3B,KAAKo+E,KAAK,GAAG,GAAGinE,GAAKhhJ,KAAK6gJ,SAAS,KAAKK,SAAS,SAAS3uH,EAAEkkB,EAAE18C,GAAG,MAAM,CAACinJ,KAAK,IAAIrlJ,KAAKwlJ,KAAKxlJ,KAAK6/C,IAAI,GAAG/E,EAAEz2C,KAAK0kF,SAAS,EAAE/oF,KAAKm4C,GAAG,GAAG9zC,KAAK4gJ,OAAOK,KAAKlnJ,EAAEiG,KAAK6gJ,OAAOtuH,EAAEvyB,KAAK0kF,QAAQ1kF,KAAK4gJ,SAASQ,KAAK,SAASJ,EAAIC,EAAIlnJ,GAAG,MAAM,CAACw4B,EAAEvyB,KAAK0kF,QAAQu8D,EAAIlnJ,GAAGiG,KAAK6gJ,OAAOpqG,GAAGz2C,KAAK0kF,OAAO/oF,KAAKw3B,IAAIx3B,KAAKo+E,IAAIp+E,KAAKm4C,GAAG,EAAEktG,EAAIrlJ,KAAKm4C,GAAG,QAAQutG,SAAS,SAAS9uH,EAAEkkB,EAAE18C,GAAG,MAAM,CAACinJ,KAAK,EAAErlJ,KAAKwlJ,KAAKxlJ,KAAK6/C,IAAI/E,EAAEz2C,KAAK0kF,SAAS/oF,KAAKm4C,GAAG,GAAG9zC,KAAK4gJ,OAAOK,KAAKlnJ,EAAEiG,KAAK6gJ,OAAOtuH,EAAEvyB,KAAK0kF,QAAQ1kF,KAAK4gJ,SAASU,IAAI,SAASN,EAAIC,EAAIlnJ,GAAG,IAAUwnJ,EAAQxnJ,EAAEiG,KAAK6gJ,OAAOW,EAAI,KAAKxhJ,KAAK6gJ,OAAOY,EAAI,KAAKzhJ,KAAK6gJ,OAAOa,EAAGV,EAAIhhJ,KAAK6gJ,OAAOc,EAAOV,EAAIjhJ,KAAK6gJ,OAAO1lJ,GAAGQ,KAAKq4C,IAAIwtG,GAAK7lJ,KAAKq4C,IAAIytG,IAAM,EAAEv6I,EAAEvL,KAAKk4C,IAAI2tG,GAAK7lJ,KAAKk4C,IAAI2tG,GAAK,EAAErmJ,EAAEQ,KAAKq4C,IAAIwtG,GAAKI,EAAMzmJ,GAAGwmJ,EAAOJ,GAASM,EAAGlmJ,KAAK24C,KAAKptC,EAAE,EAAE/L,EAAEQ,KAAKq4C,IAAI0tG,IAAKvmJ,EAAE2mJ,EAAInmJ,KAAK24C,KAAKptC,EAAE,EAAE/L,EAAEQ,KAAKq4C,IAAnR,IAA6R74C,EAAE,MAAM,CAACo3B,EAAEsvH,EAAGlmJ,KAAKq4C,IAAI4tG,GAAO5hJ,KAAK0kF,OAAOjuC,IAAIqrG,EAAID,EAAGlmJ,KAAKk4C,IAAI+tG,IAAQ5hJ,KAAK0kF,SAASq9D,QAAQ,SAASC,EAAOC,EAAOloJ,GAAG,IAAIw4B,EAAEyvH,EAAOhiJ,KAAK0kF,OAAOjuC,EAAEwrG,EAAOjiJ,KAAK0kF,OAAa68D,EAAQxnJ,EAAEiG,KAAK6gJ,OAAOW,EAAI,KAAKxhJ,KAAK6gJ,OAAOY,EAAI,KAAKzhJ,KAAK6gJ,OAAO1lJ,GAAGQ,KAAKq4C,IAAIwtG,GAAK7lJ,KAAKq4C,IAAIytG,IAAM,EAAEv6I,EAAEvL,KAAKk4C,IAAI2tG,GAAK7lJ,KAAKk4C,IAAI2tG,GAAK,EAAErmJ,EAAEQ,KAAKq4C,IAAIwtG,GAAKM,EAAInmJ,KAAK24C,KAAKptC,EAAE,EAAE/L,EAAEQ,KAAKq4C,IAA7K,IAAuL74C,EAAE0mJ,EAAGlmJ,KAAK24C,KAAK/hB,EAAEA,GAAGuvH,EAAIrrG,IAAIqrG,EAAIrrG,IAAImrG,EAAMjmJ,KAAKwlJ,KAAK5uH,GAAGuvH,EAAIrrG,IAAI,MAAM,CAACuqG,IAAIrlJ,KAAK+4C,MAAMxtC,EAAE26I,EAAGA,EAAG1mJ,EAAEA,IAAI,EAAEA,IAAI6E,KAAK4gJ,OAAOK,KAAKM,EAAQK,EAAMzmJ,GAAG6E,KAAK4gJ,SAASsB,IAAI,SAASlB,EAAIC,EAAIlnJ,GAAG,IAAUwnJ,EAAQxnJ,EAAEiG,KAAK6gJ,OAAOc,EAAOV,EAAIjhJ,KAAK6gJ,OAAOW,EAAI,GAAGxhJ,KAAK6gJ,OAAOY,EAAI,GAAGzhJ,KAAK6gJ,OAAOa,EAAGV,EAAIhhJ,KAAK6gJ,OAAO1lJ,EAAEQ,KAAKw3B,IAAIx3B,KAAKk4C,IAAI2tG,IAAM,EAAE7lJ,KAAKk4C,IAAI4tG,KAAO9lJ,KAAKw3B,IAAIx3B,KAAKo+E,IAAIp+E,KAAKm4C,GAAG,EAAE2tG,EAAI,IAAI,EAAE9lJ,KAAKo+E,IAAIp+E,KAAKm4C,GAAG,EAAE0tG,EAAI,KAAKz7I,EAAEpK,KAAKk4C,IAAI2tG,GAAK7lJ,KAAK22B,IAAI32B,KAAKo+E,IAAIp+E,KAAKm4C,GAAG,EAAE0tG,EAAI,GAAGrmJ,GAAGA,EAAE0mJ,EAAG97I,EAAEpK,KAAK22B,IAAI,EAAE32B,KAAKo+E,IAAIp+E,KAAKm4C,GAAG,EAAE4tG,EAAG,GAAGvmJ,GAAG2mJ,EAAI/7I,EAAEpK,KAAK22B,IAAI,EAAE32B,KAAKo+E,IAAIp+E,KAAKm4C,GAAG,EAAEquG,GAAOhnJ,GAAG,MAAM,CAACo3B,EAAEsvH,EAAGlmJ,KAAKq4C,IAAI74C,GAAGwmJ,EAAOJ,IAAUvhJ,KAAK0kF,OAAOjuC,IAAIqrG,EAAID,EAAGlmJ,KAAKk4C,IAAI14C,GAAGwmJ,EAAOJ,KAAWvhJ,KAAK0kF,SAAS09D,QAAQ,SAASJ,EAAOC,EAAOloJ,GAAG,IAAIw4B,EAAEyvH,EAAOhiJ,KAAK0kF,OAAOjuC,EAAEwrG,EAAOjiJ,KAAK0kF,OAAa68D,EAAQxnJ,EAAEiG,KAAK6gJ,OAAOW,EAAI,GAAGxhJ,KAAK6gJ,OAAOY,EAAI,GAAGzhJ,KAAK6gJ,OAAO1lJ,EAAEQ,KAAKw3B,IAAIx3B,KAAKk4C,IAAI2tG,IAAM,EAAE7lJ,KAAKk4C,IAAI4tG,KAAO9lJ,KAAKw3B,IAAIx3B,KAAKo+E,IAAIp+E,KAAKm4C,GAAG,EAAE2tG,EAAI,IAAI,EAAE9lJ,KAAKo+E,IAAIp+E,KAAKm4C,GAAG,EAAE0tG,EAAI,KAAKz7I,EAAEpK,KAAKk4C,IAAI2tG,GAAK7lJ,KAAK22B,IAAI32B,KAAKo+E,IAAIp+E,KAAKm4C,GAAG,EAAE0tG,EAAI,GAAGrmJ,GAAGA,EAAE2mJ,EAAI/7I,EAAEpK,KAAK22B,IAAI,EAAE32B,KAAKo+E,IAAIp+E,KAAKm4C,GAAG,EAAEquG,GAAOhnJ,GAAG0mJ,EAAG7hJ,KAAK8gJ,IAAI3lJ,GAAGQ,KAAK24C,KAAK/hB,EAAEA,GAAGuvH,EAAIrrG,IAAIqrG,EAAIrrG,IAAImrG,EAAMjmJ,KAAKwlJ,KAAK5uH,GAAGuvH,EAAIrrG,IAAI,MAAM,CAACuqG,KAAK,EAAErlJ,KAAKwlJ,KAAKxlJ,KAAK22B,IAAIvsB,EAAE87I,EAAG,EAAE1mJ,IAAIQ,KAAKm4C,GAAG,GAAG9zC,KAAK4gJ,OAAOK,KAAKM,EAAQK,EAAMzmJ,GAAG6E,KAAK4gJ,UAAUhJ,EAAIyK,UAAU,aAAazK,EAAIyK,UAAU/mJ,UAAUgnJ,aAAa,SAASrnJ,GAAc,OAAY+E,KAAKw8E,OAAOhzD,MAAM,mBAAmBxpB,KAAKw8E,OAAOhzD,MAAMT,OAAO/oB,KAAKw8E,OAAOhzD,MAAMT,OAAO9tB,GAAKA,EAAI,MAAM28I,EAAIyK,UAAU/mJ,UAAUinJ,gBAAgB,SAAStnJ,GAAK,IAAIunJ,EAAQ,OAAOxiJ,KAAKw8E,OAAOhzD,QAAQ,mBAAmBxpB,KAAKw8E,OAAOhzD,MAAMg5H,QAAQA,EAAQxiJ,KAAKw8E,OAAOhzD,MAAMg5H,QAAQvnJ,GAAK,YAAiB+E,KAAKw8E,OAAOhzD,MAAMg5H,WAAUA,EAAQxiJ,KAAKw8E,OAAOhzD,MAAMg5H,QAAQvnJ,KAAOunJ,GAAS,CAAC,EAAE,IAAI5K,EAAIyK,UAAU/mJ,UAAUmnJ,WAAW,SAAS3H,GAAW96I,KAAK86I,YAAYA,IAAY96I,KAAK86I,UAAUA,EAAU96I,KAAK0gJ,MAAM5F,UAAUA,EAAU96I,KAAK0gJ,MAAM3F,cAAc/6I,KAAKwpB,QAAQxpB,KAAKwpB,MAAMsxH,UAAUA,EAAU96I,KAAKwpB,MAAMuxH,iBAAiBnD,EAAIyK,UAAU/mJ,UAAUonJ,YAAY,SAAStwG,GAAYpyC,KAAKoyC,aAAaA,IAAapyC,KAAKoyC,WAAWA,EAAWpyC,KAAK0gJ,MAAMtuG,WAAWA,EAAWpyC,KAAK0gJ,MAAM3F,cAAc/6I,KAAKwpB,QAAQxpB,KAAKwpB,MAAM4oB,WAAWA,EAAWpyC,KAAKwpB,MAAMuxH,eAAenD,EAAIxwI,EAAEpH,KAAK0gJ,OAAOp3H,QAAQ,WAAW,CAAC8oB,MAAewlG,EAAIyK,UAAU/mJ,UAAU0/I,SAAS,WAAWh7I,KAAK0gJ,MAAM1F,SAAS7xI,MAAMnJ,KAAK0gJ,MAAMh8I,YAAYkzI,EAAIyK,UAAU/mJ,UAAU2jB,OAAO,WAAWjf,KAAK0gJ,MAAMzhI,SAASjf,KAAKwpB,OAAOxpB,KAAKwpB,MAAMvK,UAAU24H,EAAI+K,OAAO,SAASnmE,GAAQ,IAAIomE,EAAKv+H,EAAKm+H,EAAQxiJ,KAAKw8E,OAAOA,EAAOx8E,KAAKqC,IAAIrC,KAAKw8E,OAAOn6E,IAAIrC,KAAK0gJ,MAAMlkE,EAAOJ,OAAOm+D,QAAQ,CAACvgJ,EAAEwiF,EAAOn4E,KAAK,YAAYm4E,EAAO5+D,MAAM4+D,EAAOn3E,MAAMm3E,EAAOJ,OAAOi+D,aAAar6I,KAAK0gJ,MAAMh/H,SAAS,wCAAwCkhI,EAAK5iJ,KAAK0gJ,MAAMviG,UAAU95B,EAAKrkB,KAAKsiJ,aAAa9lE,EAAO5+D,MAAM5d,KAAKw8E,OAAOhzD,OAAOnF,IAAOm+H,EAAQxiJ,KAAKuiJ,gBAAgB/lE,EAAO5+D,MAAM5d,KAAK6qG,OAAO+3C,EAAKrwH,EAAEqwH,EAAK3hI,MAAM,EAAEuhI,EAAQ,GAAGxiJ,KAAK8qG,OAAO83C,EAAKnsG,EAAEmsG,EAAK1hI,OAAO,EAAEshI,EAAQ,GAAGxiJ,KAAKwpB,MAAMgzD,EAAOJ,OAAOs+D,QAAQ,CAACr2H,KAAKA,EAAK,cAAc,SAAS,qBAAqB,UAAUkO,EAAEvyB,KAAK6qG,OAAOp0D,EAAEz2C,KAAK8qG,OAAO,YAAYtuB,EAAO5+D,MAAM4+D,EAAOqmE,WAAWrmE,EAAOsmE,aAAa9iJ,KAAKwpB,MAAM9H,SAAS,0CACjn/Bk2H,EAAIthD,SAASshD,EAAI+K,OAAO/K,EAAIyK,WAAWzK,EAAI+K,OAAOrnJ,UAAUynJ,oBAAoB,WAAW/iJ,KAAKwpB,OAAOxpB,KAAKwpB,MAAMvmB,IAAI,CAACsvB,EAAEvyB,KAAK6qG,OAAO7qG,KAAKqC,IAAIu8C,MAAM5+C,KAAKqC,IAAIu5I,OAAO57I,KAAKqC,IAAIu8C,MAAMnI,EAAEz2C,KAAK8qG,OAAO9qG,KAAKqC,IAAIu8C,MAAM5+C,KAAKqC,IAAIw5I,OAAO77I,KAAKqC,IAAIu8C,SAASg5F,EAAIoL,OAAO,SAASxmE,GAAQ,IAAIn4D,EAAKrkB,KAAKw8E,OAAOA,EAAOx8E,KAAKqC,IAAIrC,KAAKw8E,OAAOn6E,IAAIrC,KAAKijJ,UAAUjjJ,KAAKw8E,OAAOn3E,MAAMy3G,QAAQl/C,MAAM59D,KAAKkjJ,cAAc7+H,EAAKrkB,KAAKsiJ,aAAa9lE,EAAOr6E,OAAOnC,KAAKw8E,OAAOhzD,OAAOnF,IAAOrkB,KAAKwiJ,QAAQxiJ,KAAKuiJ,gBAAgB/lE,EAAOr6E,OAAOnC,KAAK6qG,OAAOruB,EAAO03C,GAAGl0H,KAAKqC,IAAIu8C,MAAM5+C,KAAKqC,IAAIu5I,OAAO57I,KAAK8qG,OAAOtuB,EAAO23C,GAAGn0H,KAAKqC,IAAIu8C,MAAM5+C,KAAKqC,IAAIw5I,OAAO77I,KAAKwpB,MAAMgzD,EAAOJ,OAAOs+D,QAAQ,CAACr2H,KAAKA,EAAK,aAAam4D,EAAOr6E,MAAMquH,GAAG,QAAQj+F,EAAEvyB,KAAK6qG,OAAOp0D,EAAEz2C,KAAK8qG,QAAQtuB,EAAOqmE,WAAWrmE,EAAOsmE,aAAa9iJ,KAAKwpB,MAAM9H,SAAS,0CAA0Ck2H,EAAIthD,SAASshD,EAAIoL,OAAOpL,EAAIyK,WAAWzK,EAAIoL,OAAO1nJ,UAAU4nJ,YAAY,WAAW,IAAIphJ,EAAK9B,KAAKA,KAAK0gJ,OAAO1gJ,KAAK0gJ,MAAMzhI,SAASjf,KAAK0gJ,MAAM1gJ,KAAKw8E,OAAOJ,OAAOp8E,KAAKijJ,QAAQ,WAAW,aAAa,CAAC,aAAajjJ,KAAKw8E,OAAOr6E,MAAM+xH,GAAGl0H,KAAKw8E,OAAO03C,GAAGC,GAAGn0H,KAAKw8E,OAAO23C,IAAIn0H,KAAKw8E,OAAOn3E,MAAMrF,KAAKw8E,OAAO5W,OAAO5lE,KAAK0gJ,MAAMh/H,SAAS,wCAAwC1hB,KAAKijJ,SAASrL,EAAIxwI,EAAEpH,KAAK0gJ,MAAMl8E,MAAM1/C,GAAG,eAAc,WAAWhjB,EAAKihJ,0BAAyBnL,EAAIoL,OAAO1nJ,UAAUynJ,oBAAoB,WAAW/iJ,KAAKwpB,OAAOxpB,KAAKwpB,MAAMvmB,IAAI,CAACsvB,EAAEvyB,KAAK6qG,OAAO7qG,KAAKqC,IAAIu8C,MAAM5+C,KAAKwiJ,QAAQ,GAAGxiJ,KAAKqC,IAAIu5I,OAAO57I,KAAKqC,IAAIu8C,MAAM,GAAG5+C,KAAKijJ,SAASjjJ,KAAK0gJ,MAAMz/H,OAAO,GAAG,EAAEjhB,KAAK0gJ,MAAMnxI,WAAW/U,GAAGi8C,EAAEz2C,KAAK8qG,OAAO9qG,KAAKqC,IAAIu8C,MAAM5+C,KAAKqC,IAAIw5I,OAAO77I,KAAKqC,IAAIu8C,MAAM5+C,KAAKwiJ,QAAQ,MAAM5K,EAAIoL,OAAO1nJ,UAAU0/I,SAAS,SAAS3/I,GAAU,IAAI4nJ,EAAQrL,EAAIoL,OAAOxJ,YAAYl+I,UAAU0/I,SAAS7xI,MAAMnJ,KAAK0E,WAAW,MAAMrJ,GAAU2E,KAAK+iJ,uBAAsBE,IAAUjjJ,KAAK0gJ,MAAMnmJ,IAAI,WAAkByF,KAAKijJ,UAAUjjJ,KAAKijJ,QAAQA,EAAQjjJ,KAAKw8E,OAAOn3E,MAAMuyI,EAAIxwI,EAAE+oB,QAAO,EAAG,GAAGnwB,KAAK0gJ,MAAMr7I,OAAOrF,KAAKkjJ,gBAAgBtL,EAAIC,IAAI,SAASp0C,GAAQ,IAAIz6F,EAAE3G,EAAIrC,KAAK,GAAGA,KAAKyjG,OAAOm0C,EAAIxwI,EAAE+oB,QAAO,EAAG,GAAGynH,EAAIC,IAAIsL,cAAc1/C,IAASm0C,EAAIC,IAAIC,KAAK93I,KAAKyjG,OAAOphG,KAAK,MAAM,IAAIszC,MAAM,4CAA4C31C,KAAKyjG,OAAOphG,KAAmf,IAAI2G,KAAlfhJ,KAAKojJ,QAAQxL,EAAIC,IAAIC,KAAK93I,KAAKyjG,OAAOphG,KAAKrC,KAAKqjJ,QAAQ,GAAGrjJ,KAAKsjJ,QAAQ,GAAGtjJ,KAAKujJ,cAAc,GAAGvjJ,KAAKwjJ,YAAY,GAAGxjJ,KAAKq+C,UAAUu5F,EAAIxwI,EAAE,SAASsa,SAAS,wBAAwB1hB,KAAKyjG,OAAOplD,WAAWr+C,KAAKyjG,OAAOplD,UAAUn8B,OAAOliB,KAAKq+C,WAAWr+C,KAAKq+C,UAAUt2C,KAAK,YAAY/H,MAAMA,KAAKyjJ,aAAazjJ,KAAKojJ,QAAQniI,MAAMjhB,KAAK0jJ,cAAc1jJ,KAAKojJ,QAAQliI,OAAOlhB,KAAK2jJ,mBAAmB3jJ,KAAKyjG,OAAOniF,iBAAiBthB,KAAKywF,SAAS,WAAWpuF,EAAIw9H,cAAc+X,EAAIxwI,EAAEtL,QAAQk8B,OAAOh4B,KAAKywF,UAAmBmnD,EAAIC,IAAI+L,UAAU5jJ,KAAKyjG,OAAOz6F,IAAIhJ,KAAKq+C,UAAUnjD,KAAK08I,EAAIC,IAAI+L,UAAU56I,GAAG,cAAchJ,KAAKyjG,OAAOz6F,IAAIhJ,KAAKo8E,OAAO,IAAIw7D,EAAIsG,aAAal+I,KAAKq+C,UAAU,GAAGr+C,KAAKihB,MAAMjhB,KAAKkhB,QAAQlhB,KAAKyjG,OAAOx7D,kBAAkB,iBAAiBnsC,QAAQA,OAAO8xD,eAAeloD,oBAAoBkoD,cAAc5tD,KAAK6jJ,2BAA2B/nJ,OAAOgoJ,WAAW9jJ,KAAK+jJ,8BAA8B/jJ,KAAKgkJ,sBAAsBhkJ,KAAKikJ,oBAAoBjkJ,KAAKkkJ,YAAYlkJ,KAAKyjG,OAAO0gD,aAAankJ,KAAKokJ,kBAAkBpkJ,KAAKqkJ,gBAAgBrkJ,KAAKskJ,cAActkJ,KAAKyjG,OAAO4/C,SAAS,IAAIrjJ,KAAK6/H,aAAa7/H,KAAKyjG,OAAO8gD,UAAU,iBAAiBvkJ,KAAKyjG,OAAO8gD,QAAQvkJ,KAAKyjG,OAAO8gD,QAAQ,CAACxzB,OAAO/wH,KAAKyjG,OAAO8gD,SAAS3M,EAAIxwI,EAAEjD,QAAQnE,KAAKyjG,OAAO8gD,WAAWvkJ,KAAKyjG,OAAO8gD,QAAQ,CAACjB,QAAQtjJ,KAAKyjG,OAAO8gD,UAAUvkJ,KAAKwkJ,SAASxkJ,KAAKyjG,OAAO8gD,UAAUvkJ,KAAKyjG,OAAO8zC,iBAAiBv3I,KAAKykJ,mBAAmBzkJ,KAAKyjG,OAAO8zC,iBAAiBv3I,KAAKyjG,OAAO+zC,iBAAiBx3I,KAAK0kJ,mBAAmB1kJ,KAAKyjG,OAAO+zC,iBAAiBx3I,KAAKkgJ,oBAAoBtI,EAAIxwI,EAAE,UAAUsa,SAAS,iDAAiD1hB,KAAKigJ,kBAAkBrI,EAAIxwI,EAAE,UAAUsa,SAAS,iDAAiD1hB,KAAKq+C,UAAUn8B,OAAOliB,KAAKkgJ,qBAAqBlgJ,KAAKq+C,UAAUn8B,OAAOliB,KAAKigJ,mBAAmBjgJ,KAAKyjG,OAAOq8C,QAAQ9/I,KAAK2kJ,gBAAgB/M,EAAIC,IAAIv8I,UAAU,CAACsgJ,OAAO,EAAEC,OAAO,EAAEj9F,MAAM,EAAEgmG,WAAW,EAAEC,WAAW,EAAEC,UAAU,EAAE7jI,MAAM,EAAEC,OAAO,EAAEyiI,mBAAmB,SAASriI,GAAiBthB,KAAKq+C,UAAUt9B,IAAI,mBAAmBO,IAAkB0W,OAAO,WAAW,IAAI+sH,EAAa/kJ,KAAK8kJ,UAAU9kJ,KAAKihB,MAAMjhB,KAAKkhB,OAAOlhB,KAAKyjJ,aAAazjJ,KAAK0jJ,eAAe1jJ,KAAK8kJ,UAAU9kJ,KAAKkhB,OAAOlhB,KAAK0jJ,cAAc1jJ,KAAK4kJ,WAAWjpJ,KAAKm4B,IAAI9zB,KAAKihB,MAAMjhB,KAAKyjJ,aAAazjJ,KAAK8kJ,YAAY,EAAE9kJ,KAAK8kJ,aAAa9kJ,KAAK8kJ,UAAU9kJ,KAAKihB,MAAMjhB,KAAKyjJ,aAAazjJ,KAAK6kJ,WAAWlpJ,KAAKm4B,IAAI9zB,KAAKkhB,OAAOlhB,KAAK0jJ,cAAc1jJ,KAAK8kJ,YAAY,EAAE9kJ,KAAK8kJ,YAAY9kJ,KAAK4+C,OAAO5+C,KAAK8kJ,UAAUC,EAAa/kJ,KAAK47I,QAAQ57I,KAAK8kJ,UAAUC,EAAa/kJ,KAAK67I,QAAQ77I,KAAK8kJ,UAAUC,GAAcllB,WAAW,WAAW7/H,KAAKihB,MAAMjhB,KAAKq+C,UAAUp9B,QAAQjhB,KAAKkhB,OAAOlhB,KAAKq+C,UAAUn9B,SAASlhB,KAAKg4B,SAASh4B,KAAKo8E,OAAOg+D,QAAQp6I,KAAKihB,MAAMjhB,KAAKkhB,QAAQlhB,KAAKglJ,kBAAkBhmE,MAAM,WAAW,IAAI/jF,EAAIvB,EAAE,IAAIuB,KAAO+E,KAAK8/I,OAAO,IAAIpmJ,EAAE,EAAEA,EAAEsG,KAAK8/I,OAAO7kJ,GAAKiH,OAAOxI,IAAIsG,KAAK8/I,OAAO7kJ,GAAKvB,GAAGg9D,QAAQ12D,KAAK4+C,MAAM5+C,KAAK8kJ,UAAU9kJ,KAAK47I,OAAO57I,KAAK4kJ,WAAW5kJ,KAAK67I,OAAO77I,KAAK6kJ,WAAW7kJ,KAAKglJ,kBAAkBA,eAAe,WAAW,IAAIC,EAAUC,EAAUC,EAAUC,EAAUplJ,KAAKyjJ,aAAazjJ,KAAK4+C,OAAO5+C,KAAKihB,OAAOgkI,GAAWjlJ,KAAKihB,MAAMjhB,KAAKyjJ,aAAazjJ,KAAK4+C,QAAQ,EAAE5+C,KAAK4+C,OAAOumG,GAAWnlJ,KAAKihB,MAAMjhB,KAAKyjJ,aAAazjJ,KAAK4+C,QAAQ,EAAE5+C,KAAK4+C,SAASqmG,EAAU,EAAEE,GAAWnlJ,KAAKihB,MAAMjhB,KAAKyjJ,aAAazjJ,KAAK4+C,OAAO5+C,KAAK4+C,OAAO5+C,KAAK0jJ,cAAc1jJ,KAAK4+C,OAAO5+C,KAAKkhB,QAAQgkI,GAAWllJ,KAAKkhB,OAAOlhB,KAAK0jJ,cAAc1jJ,KAAK4+C,QAAQ,EAAE5+C,KAAK4+C,OAAOwmG,GAAWplJ,KAAKkhB,OAAOlhB,KAAK0jJ,cAAc1jJ,KAAK4+C,QAAQ,EAAE5+C,KAAK4+C,SAASsmG,EAAU,EAAEE,GAAWplJ,KAAKkhB,OAAOlhB,KAAK0jJ,cAAc1jJ,KAAK4+C,OAAO5+C,KAAK4+C,OAAO5+C,KAAK67I,OAAOqJ,EAAUllJ,KAAK67I,OAAOqJ,EAAUllJ,KAAK67I,OAAOuJ,IAAYplJ,KAAK67I,OAAOuJ,GAAWplJ,KAAK47I,OAAOqJ,EAAUjlJ,KAAK47I,OAAOqJ,EAAUjlJ,KAAK47I,OAAOuJ,IAAYnlJ,KAAK47I,OAAOuJ,GAAWnlJ,KAAKo8E,OAAOu/D,qBAAqB37I,KAAK4+C,MAAM5+C,KAAK47I,OAAO57I,KAAK67I,QAAQ77I,KAAKqjJ,SAASrjJ,KAAKqlJ,oBAAoBrlJ,KAAKslJ,mBAAmBtlJ,KAAKq+C,UAAU/0B,QAAQ,iBAAiB,CAACtpB,KAAK4+C,MAAM5+C,KAAK8kJ,UAAU9kJ,KAAK47I,OAAO57I,KAAK67I,UAAUmI,oBAAoB,WAAW,IAAIuB,EAASC,EAASC,GAAU,EAAGpjJ,EAAIrC,KAAKA,KAAKyjG,OAAOiiD,YAAY1lJ,KAAKq+C,UAAUomF,WAAU,SAASz7H,GAAG,OAAOy8I,IAAYpjJ,EAAIu5I,SAAS2J,EAASv8I,EAAE49C,OAAOvkD,EAAIu8C,MAAMv8C,EAAIw5I,SAAS2J,EAASx8I,EAAE29C,OAAOtkD,EAAIu8C,MAAMv8C,EAAI2iJ,iBAAiBO,EAASv8I,EAAE49C,MAAM4+F,EAASx8I,EAAE29C,QAAO,KAAK+B,WAAU,SAAS1/C,GAAG,OAAOy8I,GAAU,EAAGF,EAASv8I,EAAE49C,MAAM4+F,EAASx8I,EAAE29C,OAAM,KAAK3mD,KAAK2lJ,mBAAmB,WAAWF,GAAU,GAAI7N,EAAIxwI,EAAE,QAAQwhD,QAAQ5oD,KAAK2lJ,qBAAqB3lJ,KAAKyjG,OAAOmiD,cAAc5lJ,KAAKq+C,UAAU46F,YAAW,SAASnhH,GAAO,IAAI9B,EAAO4hH,EAAIxwI,EAAE/E,EAAIg8C,WAAWroB,SAASkyD,EAAQpwD,EAAM8uB,MAAM5wB,EAAOvS,KAAK0kE,EAAQrwD,EAAM6uB,MAAM3wB,EAAOxS,IAAIqiI,EAASlqJ,KAAK22B,IAAI,EAAEjwB,EAAIohG,OAAOqiD,kBAAkB,IAAIhuH,EAAMwgH,YAAYxgH,EAAM65B,QAAQtvD,EAAI0jJ,IAAI1jI,OAAOhgB,EAAIo8I,SAASp8I,EAAIu8C,MAAMinG,EAAS39D,EAAQC,GAASrwD,EAAM1O,qBAAoBy6H,yBAAyB,WAAW,IAAImC,EAAgBC,EAAmB98G,EAAO+8G,EAAOC,EAAaC,EAAaC,EAAkBhkJ,EAAIrC,KAAKsmJ,EAAiB,SAASt9I,GAAG,IAAIgtB,EAAO4oB,EAAM2nG,EAAUC,EAAU99G,EAAQ1/B,EAAEu8D,cAAc78B,QAAQ,cAAc1/B,EAAElF,OAAOuiJ,EAAkB,GAAG,GAAG39G,EAAQxmC,QAAQ,GAAGmkJ,IAAoBE,EAAUlkJ,EAAIu5I,OAAO4K,EAAUnkJ,EAAIw5I,OAAOx5I,EAAIu5I,SAASzyG,EAAOT,EAAQ,GAAGke,OAAOvkD,EAAIu8C,MAAMv8C,EAAIw5I,SAASqK,EAAOx9G,EAAQ,GAAGie,OAAOtkD,EAAIu8C,MAAMv8C,EAAI2iJ,iBAAiB3iJ,EAAI0jJ,IAAI1jI,QAAQkkI,GAAWlkJ,EAAIu5I,QAAQ4K,GAAWnkJ,EAAIw5I,SAAS7yI,EAAEogB,kBAAkB+f,EAAOT,EAAQ,GAAGke,MAAMs/F,EAAOx9G,EAAQ,GAAGie,OAAO,GAAGje,EAAQxmC,SAAS,GAAGmkJ,GAAmBznG,EAAMjjD,KAAK24C,KAAK34C,KAAK22B,IAAIoW,EAAQ,GAAGke,MAAMle,EAAQ,GAAGke,MAAM,GAAGjrD,KAAK22B,IAAIoW,EAAQ,GAAGie,MAAMje,EAAQ,GAAGie,MAAM,IAAIs/F,EAAmB5jJ,EAAIo8I,SAASuH,EAAgBpnG,EAAMunG,EAAaC,GAAc/jJ,EAAI0jJ,IAAI1jI,OAAOrZ,EAAEogB,mBAAmB4M,EAAO4hH,EAAIxwI,EAAE/E,EAAIg8C,WAAWroB,SAASmwH,EAAaz9G,EAAQ,GAAGke,MAAMle,EAAQ,GAAGke,MAAMle,EAAQ,GAAGke,OAAOle,EAAQ,GAAGke,MAAMle,EAAQ,GAAGke,OAAO,EAAEle,EAAQ,GAAGke,OAAOle,EAAQ,GAAGke,MAAMle,EAAQ,GAAGke,OAAO,EAAEw/F,EAAa19G,EAAQ,GAAGie,MAAMje,EAAQ,GAAGie,MAAMje,EAAQ,GAAGie,OAAOje,EAAQ,GAAGie,MAAMje,EAAQ,GAAGie,OAAO,EAAEje,EAAQ,GAAGie,OAAOje,EAAQ,GAAGie,MAAMje,EAAQ,GAAGie,OAAO,EAAEw/F,GAAcnwH,EAAOvS,KAAK2iI,GAAcpwH,EAAOxS,IAAIwiI,EAAgB3jJ,EAAIu8C,MAAMqnG,EAAmBtqJ,KAAK24C,KAAK34C,KAAK22B,IAAIoW,EAAQ,GAAGke,MAAMle,EAAQ,GAAGke,MAAM,GAAGjrD,KAAK22B,IAAIoW,EAAQ,GAAGie,MAAMje,EAAQ,GAAGie,MAAM,MAAM0/F,EAAkB39G,EAAQxmC,QAAQ01I,EAAIxwI,EAAEpH,KAAKq+C,WAAWnjD,KAAK,aAAaorJ,GAAkB1O,EAAIxwI,EAAEpH,KAAKq+C,WAAWnjD,KAAK,YAAYorJ,IAAmBvC,2BAA2B,WAAW,IAAI1hJ,EAAIrC,KAAKymJ,EAAQ,IAAI3C,UAAU5gI,EAAQljB,KAAKq+C,UAAU,GAAweooG,EAAQxpJ,OAAOimB,EAAQA,EAAQ6U,iBAAiB,mBAA9b,SAAS/uB,GAAG,IAAIu9I,EAAUC,GAAW,GAAGx9I,EAAE09I,cAAc,GAAG19I,EAAE29I,gBAAgBJ,EAAUlkJ,EAAIu5I,OAAO4K,EAAUnkJ,EAAIw5I,OAAOx5I,EAAIu5I,QAAQ5yI,EAAE09I,aAAarkJ,EAAIu8C,MAAMv8C,EAAIw5I,QAAQ7yI,EAAE29I,aAAatkJ,EAAIu8C,MAAMv8C,EAAI2iJ,iBAAiB3iJ,EAAI0jJ,IAAI1jI,QAAQkkI,GAAWlkJ,EAAIu5I,QAAQ4K,GAAWnkJ,EAAIw5I,SAAS7yI,EAAEogB,kBAAkB,GAAGpgB,EAAE41C,QAAQv8C,EAAIo8I,SAASp8I,EAAIu8C,MAAM51C,EAAE41C,MAAM51C,EAAE6+E,QAAQ7+E,EAAE8+E,SAASzlF,EAAI0jJ,IAAI1jI,OAAOrZ,EAAEogB,qBAAwG,GAAIlG,EAAQ6U,iBAAiB,eAAhkB,SAAS/uB,GAAGy9I,EAAQG,WAAW59I,EAAE05H,cAAokB,IAAKuhB,kBAAkB,WAAW,IAAIr9F,EAAMD,EAAMkgG,EAAWxkJ,EAAIrC,KAAKA,KAAKq+C,UAAUomF,WAAU,SAASz7H,GAAGrN,KAAKm4B,IAAI8yB,EAAM59C,EAAE49C,OAAOjrD,KAAKm4B,IAAI6yB,EAAM39C,EAAE29C,OAAO,IAAIkgG,GAAW,MAAM7mJ,KAAKq+C,UAAUyoG,SAAS,gCAAgC,sBAAqB,SAAS99I,GAAG,IAAyElF,GAAM,KAAnE8zI,EAAIxwI,EAAEpH,MAAM4gB,KAAK,SAASmmI,SAASnP,EAAIxwI,EAAEpH,MAAM4gB,KAAK,UAA2B1a,QAAQ,qBAAqB,SAAS,SAAS0X,EAAKg6H,EAAIxwI,EAAEpH,MAAM4gB,KAAK,UAAU9c,EAAK,YAAY,cAAcof,EAAQ,UAAUpf,EAAKzB,EAAIihJ,QAAQ1lI,GAAMsF,QAAQ7gB,EAAIghJ,QAAQzlI,GAAMsF,QAAQ8jI,EAAQ,UAAUljJ,EAAKzB,EAAI+gJ,QAAQjG,MAAMv/H,GAAM3jB,KAAKoI,EAAIghJ,QAAQzlI,GAAM4+D,OAAOviF,MAAM,GAAGgtJ,EAAarP,EAAIxwI,EAAE0gE,MAAMhkE,EAAK,sBAAsBojJ,EAAUtP,EAAIxwI,EAAE0gE,MAAMhkE,EAAK,mBAAmB,aAAakF,EAAElF,MAAMzB,EAAIg8C,UAAU/0B,QAAQ49H,EAAU,CAACtpI,IAAOspI,EAAU71F,sBAAsBnuC,EAAQu/H,YAAW,GAAIpgJ,EAAI0jJ,IAAI1hI,KAAK2iI,GAAS3kJ,EAAIg8C,UAAU/0B,QAAQ29H,EAAa,CAAC5kJ,EAAI0jJ,IAAInoI,IAAOqpI,EAAa51F,uBAAuBhvD,EAAI0jJ,IAAIliI,OAAOxhB,EAAI8kJ,SAAS9kJ,EAAI0jJ,IAAI9kI,QAAQ5e,EAAI+kJ,UAAU/kJ,EAAI0jJ,IAAI7kI,YAAYgC,EAAQu/H,YAAW,GAAIpgJ,EAAI0jJ,IAAI1jI,OAAOhgB,EAAIg8C,UAAU/0B,QAAQxlB,EAAK,iBAAiB,CAAC8Z,QAAU5d,KAAKq+C,UAAUyoG,SAAS,gCAAgC,aAAY,SAAS99I,GAAG49C,EAAM59C,EAAE49C,MAAMD,EAAM39C,EAAE29C,MAAMkgG,GAAW,KAAK7mJ,KAAKq+C,UAAUyoG,SAAS,gCAAgC,WAAU,WAAW,IAA0GhjJ,GAAM,KAApG8zI,EAAIxwI,EAAEpH,MAAM4gB,KAAK,SAASmmI,QAAQnP,EAAIxwI,EAAEpH,MAAM4gB,KAAK,SAASmmI,QAAQnP,EAAIxwI,EAAEpH,MAAM4gB,KAAK,UAA2B1a,QAAQ,qBAAqB,SAAS,SAAS0X,EAAKg6H,EAAIxwI,EAAEpH,MAAM4gB,KAAK,UAAU9c,EAAK,YAAY,cAAcujJ,EAAWzP,EAAIxwI,EAAE0gE,MAAMhkE,EAAK,oBAAoBof,EAAQ,UAAUpf,EAAKzB,EAAIihJ,QAAQ1lI,GAAMsF,QAAQ7gB,EAAIghJ,QAAQzlI,GAAMsF,QAAQ2jI,IAAaxkJ,EAAIg8C,UAAU/0B,QAAQ+9H,EAAW,CAACzpI,KAAQ,WAAW9Z,GAAMzB,EAAIohG,OAAO6jD,mBAAmB,WAAWxjJ,GAAMzB,EAAIohG,OAAO8jD,qBAAqBF,EAAWh2F,uBAAuBhvD,EAAIohG,OAAO3/F,EAAK,mBAAmBzB,EAAImlJ,cAAc1jJ,EAAK,KAAKof,EAAQw/H,aAAax/H,EAAQkvB,mBAAkBgyG,gBAAgB,WAAW,IAAI/hJ,EAAIrC,KAAK43I,EAAIxwI,EAAE,UAAUsa,SAAS,qBAAqB2C,KAAK,KAAKvB,SAAS9iB,KAAKq+C,WAAWu5F,EAAIxwI,EAAE,UAAUsa,SAAS,sBAAsB5c,KAAK,YAAYge,SAAS9iB,KAAKq+C,WAAWr+C,KAAKq+C,UAAU57C,KAAK,sBAAsBq3D,OAAM,WAAWz3D,EAAIo8I,SAASp8I,EAAIu8C,MAAMv8C,EAAIohG,OAAOoiD,SAASxjJ,EAAI4e,MAAM,EAAE5e,EAAI6e,OAAO,GAAE,EAAG7e,EAAIohG,OAAOgkD,gBAAeznJ,KAAKq+C,UAAU57C,KAAK,uBAAuBq3D,OAAM,WAAWz3D,EAAIo8I,SAASp8I,EAAIu8C,MAAMv8C,EAAIohG,OAAOoiD,SAASxjJ,EAAI4e,MAAM,EAAE5e,EAAI6e,OAAO,GAAE,EAAG7e,EAAIohG,OAAOgkD,iBAAgBvD,UAAU,WAAW,IAAI7hJ,EAAIrC,KAAKA,KAAK+lJ,IAAInO,EAAIxwI,EAAE,UAAUsa,SAAS,kBAAkBoB,SAAS80H,EAAIxwI,EAAE,SAASpH,KAAKq+C,UAAUomF,WAAU,SAASz7H,GAAG,IAAIya,EAAKza,EAAE49C,MAAM,GAAGvkD,EAAI8kJ,SAAS3jI,EAAIxa,EAAE29C,MAAM,GAAGtkD,EAAI+kJ,UAAU,EAAE3jI,IAAOA,EAAKza,EAAE49C,MAAM,IAAI,EAAEpjC,IAAMA,EAAIxa,EAAE29C,MAAM,IAAItkD,EAAI0jJ,IAAIhlI,IAAI,CAAC0C,KAAKA,EAAKD,IAAIA,QAASi7H,SAAS,SAAS7/F,EAAM8oG,EAAQC,EAAQC,EAAWr9G,GAAS,IAAIiiF,EAASq7B,EAAWC,EAAUC,EAAYC,EAAWC,EAAYC,EAAWtM,EAAOC,EAAOsM,EAAoBvQ,EAAIxwI,EAAE0gE,MAAM,mBAAmBhmE,EAAK9B,KAAKtG,EAAE,EAAE05B,EAAMz3B,KAAKm4B,IAAIn4B,KAAKyiC,MAAM,IAAIwgB,EAAM5+C,KAAK4+C,OAAOjjD,KAAKyK,IAAIw4C,EAAM5+C,KAAK4+C,SAASi7F,EAAS,IAAIjC,EAAIxwI,EAAE0yI,SAAS,OAAOl7F,EAAM5+C,KAAKyjG,OAAO2kD,QAAQpoJ,KAAK8kJ,UAAUlmG,EAAM5+C,KAAKyjG,OAAO2kD,QAAQpoJ,KAAK8kJ,UAAUlmG,EAAM5+C,KAAKyjG,OAAO4kD,QAAQroJ,KAAK8kJ,YAAYlmG,EAAM5+C,KAAKyjG,OAAO4kD,QAAQroJ,KAAK8kJ,gBAAW,IAAoB4C,QAAS,IAAoBC,IAAU9B,SAASjnG,EAAM5+C,KAAK4+C,MAAMgpG,GAAYhM,EAAO8L,EAAQ1nJ,KAAKyjJ,cAAczjJ,KAAKihB,OAAOjhB,KAAKyjJ,aAAa7kG,IAAQ,EAAEi9F,EAAO8L,EAAQ3nJ,KAAK0jJ,eAAe1jJ,KAAKkhB,QAAQlhB,KAAK0jJ,cAAc9kG,IAAQ,IAAIg9F,EAAO57I,KAAK47I,QAAQiK,SAAS,GAAGjnG,EAAM8oG,EAAQ7L,EAAO77I,KAAK67I,QAAQgK,SAAS,GAAGjnG,EAAM+oG,IAAUp9G,GAASnX,EAAM,GAAGy0H,EAAW7nJ,KAAK4+C,MAAMkpG,GAAWlpG,EAAMipG,GAAYz0H,EAAM20H,EAAY/nJ,KAAK47I,OAAO57I,KAAK4+C,MAAMqpG,EAAYjoJ,KAAK67I,OAAO77I,KAAK4+C,MAAMopG,GAAYpM,EAAOh9F,EAAMmpG,GAAa30H,EAAM80H,GAAYrM,EAAOj9F,EAAMqpG,GAAa70H,EAAMo5F,EAAS13D,aAAY,WAAWp7D,GAAG,EAAEoI,EAAK88C,MAAMipG,EAAWC,EAAUpuJ,EAAEoI,EAAK85I,QAAQmM,EAAYC,EAAWtuJ,GAAGoI,EAAK88C,MAAM98C,EAAK+5I,QAAQoM,EAAYC,EAAWxuJ,GAAGoI,EAAK88C,MAAM98C,EAAKkjJ,iBAAiBtrJ,GAAG05B,IAAQmhC,cAAci4D,GAAU1qH,EAAKu8C,UAAU/0B,QAAQ6+H,EAAoB,CAACvpG,EAAM98C,EAAKgjJ,YAAYjL,EAAS10D,aAAY,MAAMnlF,KAAK47I,OAAOA,EAAO57I,KAAK67I,OAAOA,EAAO77I,KAAK4+C,MAAMA,EAAM5+C,KAAKglJ,iBAAiBhlJ,KAAKq+C,UAAU/0B,QAAQ6+H,EAAoB,CAACvpG,EAAM5+C,KAAK8kJ,YAAYjL,EAAS10D,WAAW00D,GAAU2K,SAAS,SAAShoE,GAAQ,IAAIomE,EAAK0F,EAAiBC,EAAM7uJ,EAAEoX,EAAM,IAAG0rE,EAAOA,GAAQ,IAAUu0C,OAAOw3B,EAAM,CAAC/rE,EAAOu0C,QAAQv0C,EAAO8mE,UAAUiF,EAAM/rE,EAAO8mE,SAASiF,EAAM,CAAC,IAAI7uJ,EAAE,EAAEA,EAAE6uJ,EAAMrmJ,OAAOxI,IAAIsG,KAAKsjJ,QAAQiF,EAAM7uJ,OAAM4uJ,EAAStoJ,KAAKsjJ,QAAQiF,EAAM7uJ,IAAIwpB,QAAQw9H,MAAMviG,kBAAqB,IAAoBykG,EAAKA,EAAK0F,EAAmQ1F,EAAjP,CAACrwH,EAAE52B,KAAKoD,IAAI6jJ,EAAKrwH,EAAE+1H,EAAS/1H,GAAGkkB,EAAE96C,KAAKoD,IAAI6jJ,EAAKnsG,EAAE6xG,EAAS7xG,GAAGx1B,MAAMtlB,KAAKyK,IAAIw8I,EAAKrwH,EAAEqwH,EAAK3hI,MAAMqnI,EAAS/1H,EAAE+1H,EAASrnI,OAAOtlB,KAAKoD,IAAI6jJ,EAAKrwH,EAAE+1H,EAAS/1H,GAAGrR,OAAOvlB,KAAKyK,IAAIw8I,EAAKnsG,EAAEmsG,EAAK1hI,OAAOonI,EAAS7xG,EAAE6xG,EAASpnI,QAAQvlB,KAAKoD,IAAI6jJ,EAAKnsG,EAAE6xG,EAAS7xG,MAAoB,OAAOz2C,KAAKy+I,SAAS9iJ,KAAKoD,IAAIiB,KAAKihB,MAAM2hI,EAAK3hI,MAAMjhB,KAAKkhB,OAAO0hI,EAAK1hI,UAAU0hI,EAAKrwH,EAAEqwH,EAAK3hI,MAAM,KAAK2hI,EAAKnsG,EAAEmsG,EAAK1hI,OAAO,IAAG,EAAGs7D,EAAOjyC,SAAS,OAAOiyC,EAAOwkE,KAAKxkE,EAAOykE,KAAKnwI,EAAM9Q,KAAKwoJ,cAAchsE,EAAOwkE,IAAIxkE,EAAOykE,KAAKzkE,EAAOjqD,EAAEvyB,KAAK47I,OAAO9qI,EAAMyhB,EAAEvyB,KAAK4+C,MAAM49B,EAAO/lC,EAAEz2C,KAAK67I,OAAO/qI,EAAM2lC,EAAEz2C,KAAK4+C,OAAO49B,EAAOjqD,GAAGiqD,EAAO/lC,IAAI+lC,EAAOjqD,IAAIvyB,KAAKyjJ,aAAajnE,EAAO/lC,IAAIz2C,KAAK0jJ,eAAe1jJ,KAAKy+I,SAASjiE,EAAO59B,MAAM5+C,KAAK8kJ,UAAUtoE,EAAOjqD,EAAEiqD,EAAO/lC,GAAE,EAAG+lC,EAAOjyC,UAAUk+G,YAAY,SAAS3kJ,GAAM,IAAI7I,EAAI4wB,EAAS,GAAG,IAAI5wB,KAAO+E,KAAK8D,GAAM9D,KAAK8D,GAAM7I,GAAKioB,QAAQkvB,YAAYvmB,EAAS3sB,KAAKjE,GAAK,OAAO4wB,GAAU68H,mBAAmB,WAAW,OAAO1oJ,KAAKyoJ,YAAY,YAAYE,mBAAmB,WAAW,OAAO3oJ,KAAKyoJ,YAAY,YAAY/F,YAAY,SAAS5+I,EAAKnB,GAAM,IAAIjJ,EAAE,GAAG,YAAiBiJ,KAAOA,EAAK,CAACA,IAAOi1I,EAAIxwI,EAAEjD,QAAQxB,GAAM,IAAIjJ,EAAE,EAAEA,EAAEiJ,EAAKT,OAAOxI,IAAIsG,KAAK8D,GAAMnB,EAAKjJ,IAAIwpB,QAAQw/H,aAAY,QAAS,IAAIhpJ,KAAKiJ,EAAK3C,KAAK8D,GAAMpK,GAAGwpB,QAAQw/H,cAAc//I,EAAKjJ,KAAK+qJ,mBAAmB,SAAS9hJ,GAAM3C,KAAK0iJ,YAAY,UAAU//I,IAAO+hJ,mBAAmB,SAAS/hJ,GAAM3C,KAAK0iJ,YAAY,UAAU//I,IAAO6kJ,cAAc,SAAS1jJ,GAAM,IAAIpK,EAAE2/B,EAAO,GAAGxN,EAAS7rB,KAAKyoJ,YAAY3kJ,GAAM,IAAIpK,EAAE,EAAEA,EAAEmyB,EAAS3pB,OAAOxI,IAAI2/B,EAAOxN,EAASnyB,KAAI,EAAGsG,KAAK0iJ,YAAY5+I,EAAKu1B,IAASuvH,qBAAqB,WAAW5oJ,KAAKwnJ,cAAc,YAAYqB,qBAAqB,WAAW7oJ,KAAKwnJ,cAAc,YAAYsB,aAAa,WAAW,OAAO9oJ,MAAM+oJ,cAAc,SAASnrI,GAAM,OAAO5d,KAAKojJ,QAAQjG,MAAMv/H,GAAM3jB,MAAMoqJ,cAAc,WAAW,IAAIppJ,EAAI81H,EAAO1uH,EAAIrC,KAA2E,IAAI/E,KAA1E+E,KAAKgpJ,kBAAkBhpJ,KAAKgpJ,mBAAmBhpJ,KAAKo8E,OAAOu+D,WAAsB36I,KAAKojJ,QAAQjG,MAAMpsB,EAAO,IAAI6mB,EAAI+K,OAAO,CAACtgJ,IAAIrC,KAAKqE,KAAKrE,KAAKojJ,QAAQjG,MAAMliJ,GAAKoJ,KAAKuZ,KAAK3iB,EAAIoK,MAAMuyI,EAAIxwI,EAAE+oB,QAAO,EAAG,GAAGnwB,KAAKyjG,OAAOwlD,aAAapG,WAAWjL,EAAIxwI,EAAE+oB,QAAO,EAAG,GAAGnwB,KAAKyjG,OAAOylD,kBAAkB9sE,OAAOp8E,KAAKo8E,OAAO0mE,YAAY9iJ,KAAKgpJ,kBAAkBx/H,MAAM,OAAOxpB,KAAKo8E,OAAOvhF,KAAKmF,KAAKyjG,OAAO/7E,QAAQ1nB,KAAKyjG,OAAO/7E,OAAO47H,QAAQ,OAAO1L,EAAIxwI,EAAE2pH,EAAO2vB,OAAOxlJ,KAAK,YAAW,SAAS8N,EAAEopC,GAAY/vC,EAAIg8C,UAAU/0B,QAAQ,4BAA4B,CAACsuH,EAAIxwI,EAAEpH,KAAKwkE,MAAM5jD,KAAK,aAAawxB,EAAW/vC,EAAIqmJ,0BAAyB1oJ,KAAKsjJ,QAAQroJ,GAAK,CAACioB,QAAQ6tG,EAAOv0C,OAAOx8E,KAAKojJ,QAAQjG,MAAMliJ,KAAOqpJ,cAAc,SAASjB,GAAS,IAAI3pJ,EAAEyvJ,EAAOr4I,EAAMs4I,EAAaC,EAAahnJ,EAAIrC,KAAK,GAAGA,KAAKspJ,aAAatpJ,KAAKspJ,cAActpJ,KAAKo8E,OAAOu+D,WAAW36I,KAAKupJ,kBAAkBvpJ,KAAKupJ,mBAAmBvpJ,KAAKo8E,OAAOu+D,WAAW/C,EAAIxwI,EAAEjD,QAAQk/I,GAAS,IAAIgG,EAAahG,EAAQhjJ,QAAQgjJ,EAAQ,GAAG3pJ,EAAE,EAAEA,EAAE2vJ,EAAannJ,OAAOxI,IAAI2pJ,EAAQ3pJ,GAAG2vJ,EAAa3vJ,GAAG,IAAIA,KAAK2pJ,EAAQ+F,EAAa/F,EAAQ3pJ,aAAawK,MAAM,CAACslJ,OAAOnG,EAAQ3pJ,IAAI2pJ,EAAQ3pJ,IAAsD,KAAnDoX,EAAM9Q,KAAKypJ,kBAAkBL,MAA2BD,EAAO,IAAIvR,EAAIoL,OAAO,CAAC3gJ,IAAIrC,KAAKqF,MAAMuyI,EAAIxwI,EAAE+oB,QAAO,EAAG,GAAGnwB,KAAKyjG,OAAO48C,YAAY,CAACvjC,QAAQssC,EAAa/jJ,OAAO,KAAKw9I,WAAWjL,EAAIxwI,EAAE+oB,QAAO,EAAG,GAAGnwB,KAAKyjG,OAAOimD,kBAAkBvnJ,MAAMzI,EAAEw6H,GAAGpjH,EAAMyhB,EAAE4hG,GAAGrjH,EAAM2lC,EAAEmvB,MAAM5lE,KAAKspJ,aAAaltE,OAAOp8E,KAAKo8E,OAAO0mE,YAAY9iJ,KAAKupJ,kBAAkB//H,MAAM,OAAOxpB,KAAKo8E,OAAOvhF,KAAKmF,KAAKyjG,OAAO/7E,QAAQ1nB,KAAKyjG,OAAO/7E,OAAO27H,QAAQ,OAAOzL,EAAIxwI,EAAE+hJ,EAAOzI,OAAOxlJ,KAAK,YAAW,SAAS8N,EAAEopC,GAAY/vC,EAAIg8C,UAAU/0B,QAAQ,4BAA4B,CAACsuH,EAAIxwI,EAAEpH,KAAKwkE,MAAM5jD,KAAK,cAAcwxB,EAAW/vC,EAAIsmJ,0BAAyB3oJ,KAAKqjJ,QAAQ3pJ,IAAIsG,KAAK2pJ,cAAc,CAACjwJ,IAAIsG,KAAKqjJ,QAAQ3pJ,GAAG,CAACwpB,QAAQimI,EAAO3sE,OAAO4sE,KAAgB/D,kBAAkB,WAAW,IAAI3rJ,EAAEoX,EAAM,IAAIpX,KAAKsG,KAAKqjJ,SAAqE,KAA7DvyI,EAAM9Q,KAAKypJ,kBAAkBzpJ,KAAKqjJ,QAAQ3pJ,GAAG8iF,UAAoBx8E,KAAKqjJ,QAAQ3pJ,GAAGwpB,QAAQ83H,SAAS,CAAC9mB,GAAGpjH,EAAMyhB,EAAE4hG,GAAGrjH,EAAM2lC,KAAK6uG,iBAAiB,WAAW,IAAIrqJ,EAAI,IAAIA,KAAO+E,KAAKsjJ,QAAQtjJ,KAAKsjJ,QAAQroJ,GAAKioB,QAAQ6/H,sBAAsB,IAAI9nJ,KAAO+E,KAAKqjJ,QAAQrjJ,KAAKqjJ,QAAQpoJ,GAAKioB,QAAQ6/H,uBAAuB0G,kBAAkB,SAASL,GAAc,OAAOxR,EAAIC,IAAIC,KAAK93I,KAAKyjG,OAAOphG,KAAKunJ,WAAW5pJ,KAAKwoJ,cAAcr/I,MAAMnJ,KAAKopJ,EAAaI,QAAQ,CAAC,EAAE,IAAI,CAACj3H,EAAE62H,EAAapL,OAAO,GAAGh+I,KAAK4+C,MAAM5+C,KAAK47I,OAAO57I,KAAK4+C,MAAMnI,EAAE2yG,EAAapL,OAAO,GAAGh+I,KAAK4+C,MAAM5+C,KAAK67I,OAAO77I,KAAK4+C,QAAQirG,UAAU,SAAS5uJ,EAAIkuJ,EAAOW,GAAY,IAAI34I,EAAOzX,EAAE2pJ,EAAQ,GAAGt7I,EAAK,GAAG+hJ,EAAWA,GAAY,GAAG,IAAIzG,EAAQpoJ,GAAKkuJ,EAAOzvJ,EAAE,EAAEA,EAAEowJ,EAAW5nJ,OAAOxI,IAAIyX,EAAO,QAAG,IAAoB24I,EAAWpwJ,KAAKyX,EAAOlW,GAAK6uJ,EAAWpwJ,IAAIqO,EAAK7I,KAAKiS,GAAQnR,KAAK+pJ,WAAW1G,EAAQt7I,IAAOgiJ,WAAW,SAAS1G,EAAQyG,GAAY,IAAIpwJ,EAAE,IAAIowJ,EAAWA,GAAY,GAAG9pJ,KAAKskJ,cAAcjB,GAAS3pJ,EAAE,EAAEA,EAAEowJ,EAAW5nJ,OAAOxI,IAAIsG,KAAK8/I,OAAOuD,QAAQ3pJ,GAAG8wE,UAAUs/E,EAAWpwJ,IAAI,KAAKiwJ,cAAc,SAAStG,GAAS,IAAI3pJ,EAAE,IAAIA,EAAE,EAAEA,EAAE2pJ,EAAQnhJ,OAAOxI,IAAIsG,KAAKqjJ,QAAQA,EAAQ3pJ,IAAIwpB,QAAQjE,gBAAgBjf,KAAKqjJ,QAAQA,EAAQ3pJ,KAAKswJ,iBAAiB,WAAW,IAAItwJ,EAAE2pJ,EAAQ,GAAG,IAAI3pJ,KAAKsG,KAAKqjJ,QAAQA,EAAQnkJ,KAAKxF,GAAGsG,KAAK2pJ,cAActG,IAAUmF,cAAc,SAASxH,EAAIC,GAAK,IAAInwI,EAAMm5I,EAAMrH,EAAKsH,EAAKtS,EAAIC,IAAIC,KAAK93I,KAAKyjG,OAAOphG,KAAKunJ,WAAWO,EAAgBD,EAAKC,gBAAgB,OAAO,IAAIA,EAAgBlJ,IAAMA,GAAK,KAAKnwI,EAAM8mI,EAAI+I,KAAKuJ,EAAKpmJ,MAAMk9I,EAAIC,EAAIkJ,MAAiBF,EAAMjqJ,KAAKoqJ,iBAAiBt5I,EAAMyhB,EAAEzhB,EAAM2lC,MAAUmsG,EAAKqH,EAAMrH,KAAK9xI,EAAMyhB,GAAGzhB,EAAMyhB,EAAEqwH,EAAK,GAAGrwH,IAAIqwH,EAAK,GAAGrwH,EAAEqwH,EAAK,GAAGrwH,GAAG03H,EAAMhpI,MAAMjhB,KAAK4+C,MAAM9tC,EAAM2lC,GAAG3lC,EAAM2lC,EAAEmsG,EAAK,GAAGnsG,IAAImsG,EAAK,GAAGnsG,EAAEmsG,EAAK,GAAGnsG,GAAGwzG,EAAM/oI,OAAOlhB,KAAK4+C,MAAM,CAACrsB,EAAEzhB,EAAMyhB,EAAEvyB,KAAK47I,OAAO57I,KAAK4+C,MAAMqrG,EAAMxmI,KAAKzjB,KAAK4+C,MAAMnI,EAAE3lC,EAAM2lC,EAAEz2C,KAAK67I,OAAO77I,KAAK4+C,MAAMqrG,EAAMzmI,IAAIxjB,KAAK4+C,SAAYyrG,cAAc,SAAS93H,EAAEkkB,GAAG,IAAI/8C,EAAEuwJ,EAAMrH,EAAK0H,EAAGC,EAAGL,EAAKtS,EAAIC,IAAIC,KAAK93I,KAAKyjG,OAAOphG,KAAKunJ,WAAWO,EAAgBD,EAAKC,gBAAgBK,EAAO5S,EAAIC,IAAIC,KAAK93I,KAAKyjG,OAAOphG,KAAKmoJ,OAAO,IAAI9wJ,EAAE,EAAEA,EAAE8wJ,EAAOtoJ,OAAOxI,IAAI,GAAmBkpJ,GAAhBqH,EAAMO,EAAO9wJ,IAAckpJ,KAAK0H,EAAG/3H,GAAGvyB,KAAK47I,OAAO57I,KAAK4+C,MAAMqrG,EAAMxmI,KAAKzjB,KAAK4+C,OAAO2rG,EAAG9zG,GAAGz2C,KAAK67I,OAAO77I,KAAK4+C,MAAMqrG,EAAMzmI,IAAIxjB,KAAK4+C,OAAO0rG,EAAGA,GAAIL,EAAMhpI,MAAMjhB,KAAK4+C,QAAQgkG,EAAK,GAAGrwH,EAAEqwH,EAAK,GAAGrwH,GAAGqwH,EAAK,GAAGrwH,EAAEg4H,EAAGA,GAAIN,EAAM/oI,OAAOlhB,KAAK4+C,QAAQgkG,EAAK,GAAGnsG,EAAEmsG,EAAK,GAAGnsG,GAAGmsG,EAAK,GAAGnsG,EAAE6zG,EAAG1H,EAAK,GAAGrwH,GAAG+3H,EAAG1H,EAAK,GAAGrwH,GAAGg4H,EAAG3H,EAAK,GAAGnsG,GAAG8zG,EAAG3H,EAAK,GAAGnsG,EAAE,OAAOmhG,EAAI+I,KAAKuJ,EAAKpmJ,KAAK,QAAQwmJ,GAAIC,EAAGJ,GAAiB,OAAM,GAAIC,iBAAiB,SAAS73H,EAAEkkB,GAAG,IAAI/8C,EAAEkpJ,EAAK4H,EAAO5S,EAAIC,IAAIC,KAAK93I,KAAKyjG,OAAOphG,KAAKmoJ,OAAO,IAAI9wJ,EAAE,EAAEA,EAAE8wJ,EAAOtoJ,OAAOxI,IAAI,GAAuB64B,GAApBqwH,EAAK4H,EAAO9wJ,GAAGkpJ,MAAY,GAAGrwH,GAAGA,EAAEqwH,EAAK,GAAGrwH,GAAGkkB,EAAEmsG,EAAK,GAAGnsG,GAAGA,EAAEmsG,EAAK,GAAGnsG,EAAE,OAAO+zG,EAAO9wJ,IAAIirJ,aAAa,WAAW,IAAIjrJ,EAAEuB,EAAwC,IAAIA,KAAxC+E,KAAK8/I,OAAO,CAACuD,QAAQ,GAAGC,QAAQ,IAAetjJ,KAAKyjG,OAAOq8C,OAAO,IAAIpmJ,EAAE,EAAEA,EAAEsG,KAAKyjG,OAAOq8C,OAAO7kJ,GAAKiH,OAAOxI,IAAIsG,KAAK8/I,OAAO7kJ,GAAKvB,GAAG,IAAIk+I,EAAI4I,WAAWxgJ,KAAKyjG,OAAOq8C,OAAO7kJ,GAAKvB,GAAGsG,KAAK/E,GAAK+E,OAAOif,OAAO,WAAWjf,KAAK+lJ,IAAI9mI,SAASjf,KAAKq+C,UAAUp/B,SAAS24H,EAAIxwI,EAAEtL,QAAQixC,OAAO,SAAS/sC,KAAKywF,UAAUmnD,EAAIxwI,EAAE,QAAQ2lC,OAAO,UAAU/sC,KAAK2lJ,sBAAsB/N,EAAIC,IAAIC,KAAK,GAAGF,EAAIC,IAAIsL,cAAc,CAAC9gJ,IAAI,gBAAgBif,gBAAgB,UAAU6iI,aAAY,EAAGyB,cAAa,EAAGE,kBAAkB,EAAEJ,WAAU,EAAG0C,QAAQ,EAAEC,QAAQ,EAAExC,SAAS,IAAI4B,aAAY,EAAGH,mBAAkB,EAAGC,mBAAkB,EAAGt/G,iBAAgB,EAAGghH,YAAY,CAACnsC,QAAQ,CAAClqE,KAAK,QAAQ,eAAe,EAAEq5D,OAAO,OAAO,eAAe,EAAE,iBAAiB,GAAGzrF,MAAM,CAAC,eAAe,GAAG+xC,OAAO,WAAW1mC,SAAS,CAAC+mB,KAAK,UAAUuoG,cAAc,IAAI+N,iBAAiB,CAACpsC,QAAQ,CAAC,cAAc,UAAU,YAAY,KAAK,cAAc,OAAOvqD,OAAO,UAAU3f,KAAK,SAASpyB,MAAM,CAAC+xC,OAAO,YAAY8tF,YAAY,CAACvjC,QAAQ,CAAClqE,KAAK,OAAOq5D,OAAO,UAAU,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAEzxG,EAAE,GAAGgmB,MAAM,CAACyrF,OAAO,QAAQ,eAAe,EAAE15C,OAAO,WAAW1mC,SAAS,CAAC+mB,KAAK,QAAQuoG,cAAc,IAAIuO,iBAAiB,CAAC5sC,QAAQ,CAAC,cAAc,UAAU,YAAY,KAAK,cAAc,OAAOvqD,OAAO,UAAU3f,KAAK,SAASpyB,MAAM,CAAC+xC,OAAO,aAAaqlF,EAAIC,IAAI+L,UAAU,CAAC6G,gBAAgB,gBAAgBC,aAAa,aAAaC,YAAY,YAAYC,cAAc,cAAcC,iBAAiB,iBAAiBC,gBAAgB,gBAAgBC,aAAa,aAAaC,YAAY,YAAYC,cAAc,cAAcC,iBAAiB,iBAAiBC,iBAAiB,kBAAkBvT,EAAIwT,SAAS,SAAS3nD,GAAQ,IAAI3hG,EAAK9B,KAAKA,KAAK83I,KAAK,GAAG93I,KAAKyjG,OAAOm0C,EAAIxwI,EAAE+oB,QAAO,EAAG,GAAGynH,EAAIwT,SAASjI,cAAc1/C,GAAQzjG,KAAKyjG,OAAO4nD,SAASrrJ,KAAKyjG,OAAO4nD,UAAUtxH,OAAO2/G,UAAU15I,KAAKyjG,OAAO34C,KAAK9qD,KAAKyjG,OAAO34C,MAAM,GAAG9qD,KAAKyjG,OAAO34C,KAAKwgG,cAAc,EAAEtrJ,KAAK0qC,QAAQ,CAAC1qC,KAAKurJ,OAAOvrJ,KAAKyjG,OAAO34C,KAAKzoD,IAAIrC,KAAKyjG,OAAO34C,OAAO9qD,KAAKwrJ,kBAAkBxrJ,KAAK0qC,QAAQ,GAAG04G,QAAQwG,WAAW9lJ,KAAK9D,KAAKyrJ,WAAW,GAAGzrJ,KAAKyjG,OAAOplD,UAAUt9B,IAAI,CAACrO,SAAS,aAAa1S,KAAK0rJ,WAAW9T,EAAIxwI,EAAE,UAAUsa,SAAS,qBAAqB2C,KAAK,QAAQvB,SAAS9iB,KAAKyjG,OAAOplD,WAAWr+C,KAAK0rJ,WAAWrpI,OAAOriB,KAAK0rJ,WAAW5xF,OAAM,WAAWh4D,EAAK6pJ,YAAW3rJ,KAAK4rJ,QAAQhU,EAAIxwI,EAAE,UAAUsa,SAAS,sBAAsBoB,SAAS9iB,KAAKyjG,OAAOplD,WAAWr+C,KAAK4rJ,QAAQvpI,QAAQu1H,EAAIwT,SAAS9vJ,UAAU,CAACiwJ,OAAO,SAAStxJ,EAAKuiF,GAAQ,IAAIqvE,EAAIjU,EAAIxwI,EAAE,UAAU2Z,IAAI,CAACE,MAAM,OAAOC,OAAO,SAAS,OAAOlhB,KAAKyjG,OAAOplD,UAAUn8B,OAAO2pI,GAAK7rJ,KAAK83I,KAAK79I,GAAM,IAAI29I,EAAIC,IAAID,EAAIxwI,EAAE+oB,OAAOqsD,EAAO,CAACn+B,UAAUwtG,KAAO7rJ,KAAKyjG,OAAO4nD,SAAS7uE,EAAO8uE,eAAetrJ,KAAK83I,KAAK79I,GAAMokD,UAAUv5B,GAAG,yBAAyB,CAACohD,MAAMlmE,OAAM,SAASgJ,EAAE4U,GAAM,IAAIkuI,EAAS9iJ,EAAEjB,KAAKm+D,MAAM6lF,EAAQD,EAASroD,OAAOuoD,cAAcpuI,EAAKkuI,GAAUA,EAASG,kBAAkB,YAAYH,EAASG,iBAAiBpoJ,SAASioJ,EAASI,UAAUH,EAAQnuI,MAAQ5d,KAAK83I,KAAK79I,IAAOkyJ,YAAY,SAASvuI,GAAM,IAAI9b,EAAK9B,KAAK65I,EAASjC,EAAIxwI,EAAE0yI,WAAW,OAAO95I,KAAKyrJ,WAAW7tI,GAAMi8H,EAAS10D,UAAUyyD,EAAIxwI,EAAE7M,IAAIyF,KAAKyjG,OAAO2oD,aAAaxuI,EAAK5d,OAAOk8I,MAAK,WAAWp6I,EAAK2pJ,WAAW7tI,IAAM,EAAGi8H,EAAS10D,aAAW,WAAW00D,EAASE,YAAWF,GAAUqS,UAAU,SAASjyJ,EAAK2jB,GAAM,IAAIyuI,EAAWrsJ,KAAK0qC,QAAQ1qC,KAAK0qC,QAAQxoC,OAAO,GAAGJ,EAAK9B,KAAKssJ,EAAaD,EAAW7H,SAAS,CAACzzB,OAAOnzG,EAAK2sB,SAAQ,IAAKgiH,EAAgBvsJ,KAAKmsJ,YAAYvuI,GAAM0uI,EAAapQ,MAAK,WAAW,YAAYqQ,EAAgB1oJ,SAAS/B,EAAK8pJ,QAAQ/nI,UAAS0oI,EAAgBC,QAAO,WAAW1qJ,EAAK8pJ,QAAQvpI,UAASriB,KAAKisJ,iBAAiBrU,EAAIxwI,EAAEqlJ,KAAKF,EAAgBD,GAActsJ,KAAKisJ,iBAAiB/P,MAAK,WAAWmQ,EAAW5oD,OAAOplD,UAAUh8B,OAAOvgB,EAAKg2I,KAAK79I,GAAM6H,EAAKg2I,KAAK79I,GAAMwpG,OAAOplD,UAAUx6B,OAAO/hB,EAAKypJ,OAAOtxJ,EAAK,CAACoI,IAAIpI,EAAKqxJ,cAAce,EAAW5oD,OAAO6nD,cAAc,IAAIxpJ,EAAK4oC,QAAQxrC,KAAK4C,EAAKg2I,KAAK79I,IAAO6H,EAAK4pJ,WAAW7nI,WAAU8nI,OAAO,WAAW,IAAIU,EAAWrsJ,KAAK0qC,QAAQwrD,MAAMw2D,EAAQ1sJ,KAAK0qC,QAAQ1qC,KAAK0qC,QAAQxoC,OAAO,GAAGJ,EAAK9B,KAAKqsJ,EAAW7H,SAAS,CAAC5lG,MAAM,EAAErsB,EAAE,GAAGkkB,EAAE,GAAGlM,SAAQ,IAAK2xG,MAAK,WAAWmQ,EAAW5oD,OAAOplD,UAAUh8B,OAAOqqI,EAAQjpD,OAAOplD,UAAUx6B,OAAO6oI,EAAQ7sB,aAAa,IAAI/9H,EAAK4oC,QAAQxoC,QAAQJ,EAAK4pJ,WAAWrpI,OAAOqqI,EAAQlI,SAAS,CAAC5lG,MAAM,EAAErsB,EAAE,GAAGkkB,EAAE,GAAGlM,SAAQ,SAASqtG,EAAIwT,SAASjI,cAAc,CAAC6I,cAAc,SAASpuI,EAAK+uI,GAAU,OAAO/uI,EAAKvV,cAAc,IAAIskJ,EAASnB,kBAAkB,OAAOY,aAAa,SAASxuI,EAAK+uI,GAAU,MAAM,0BAA0B/uI,EAAKvV,cAAc,IAAIskJ,EAASnB,kBAAkB,a,mCCDrnwB3kI,OAAOlmB,GAAGg3I,UAAU,SAAU,gBAAgB,CAAC,OAAU,CAAC,CAAC,MAAS,IAAK,IAAO,EAAG,OAAU,mBAAoB,KAAQ,CAAC,CAAC,GAAM,mBAAoB,GAAM,oBAAqB,CAAC,EAAK,kBAAmB,EAAK,oBAAqB,KAAQ,IAAK,MAAS,CAAC,GAAM,CAAC,KAAQ,8YAA+Y,KAAQ,cAAe,GAAM,CAAC,KAAQ,mJAAoJ,KAAQ,WAAY,GAAM,CAAC,KAAQ,yYAA0Y,KAAQ,gBAAiB,GAAM,CAAC,KAAQ,oRAAqR,KAAQ,YAAa,GAAM,CAAC,KAAQ,oNAAqN,KAAQ,oBAAqB,GAAM,CAAC,KAAQ,qFAAsF,KAAQ,UAAW,GAAM,CAAC,KAAQ,8kBAA+kB,KAAQ,WAAY,GAAM,CAAC,KAAQ,0wBAA2wB,KAAQ,SAAU,GAAM,CAAC,KAAQ,kFAAmF,KAAQ,WAAY,GAAM,CAAC,KAAQ,wOAAyO,KAAQ,SAAU,GAAM,CAAC,KAAQ,4HAA6H,KAAQ,UAAW,GAAM,CAAC,KAAQ,gFAAiF,KAAQ,WAAY,GAAM,CAAC,KAAQ,uWAAwW,KAAQ,YAAa,GAAM,CAAC,KAAQ,o6DAAq6D,KAAQ,UAAW,GAAM,CAAC,KAAQ,mIAAoI,KAAQ,WAAY,GAAM,CAAC,KAAQ,4eAA6e,KAAQ,WAAY,GAAM,CAAC,KAAQ,mGAAoG,KAAQ,UAAW,GAAM,CAAC,KAAQ,m6NAAo6N,KAAQ,UAAW,GAAM,CAAC,KAAQ,4HAA6H,KAAQ,UAAW,GAAM,CAAC,KAAQ,4TAA6T,KAAQ,UAAW,GAAM,CAAC,KAAQ,gMAAiM,KAAQ,aAAc,GAAM,CAAC,KAAQ,4DAA6D,KAAQ,cAAe,GAAM,CAAC,KAAQ,+KAAgL,KAAQ,WAAY,GAAM,CAAC,KAAQ,8aAA+a,KAAQ,WAAY,GAAM,CAAC,KAAQ,+HAAgI,KAAQ,iBAAkB,GAAM,CAAC,KAAQ,wOAAyO,KAAQ,aAAc,GAAM,CAAC,KAAQ,ukBAAwkB,KAAQ,UAAW,GAAM,CAAC,KAAQ,2DAA4D,KAAQ,cAAe,GAAM,CAAC,KAAQ,wZAAyZ,KAAQ,UAAW,GAAM,CAAC,KAAQ,mOAAoO,KAAQ,WAAY,GAAM,CAAC,KAAQ,upBAAwpB,KAAQ,kBAAmB,GAAM,CAAC,KAAQ,mTAAoT,KAAQ,SAAU,GAAM,CAAC,KAAQ,uZAAwZ,KAAQ,UAAW,GAAM,CAAC,KAAQ,mKAAoK,KAAQ,UAAW,GAAM,CAAC,KAAQ,slDAAulD,KAAQ,aAAc,GAAM,CAAC,KAAQ,wGAAyG,KAAQ,UAAW,GAAM,CAAC,KAAQ,sMAAuM,KAAQ,SAAU,GAAM,CAAC,KAAQ,6VAA8V,KAAQ,QAAS,GAAM,CAAC,KAAQ,8HAA+H,KAAQ,cAAe,GAAM,CAAC,KAAQ,oFAAqF,KAAQ,UAAW,GAAM,CAAC,KAAQ,6DAA8D,KAAQ,aAAc,GAAM,CAAC,KAAQ,kJAAmJ,KAAQ,UAAW,GAAM,CAAC,KAAQ,+XAAgY,KAAQ,WAAY,GAAM,CAAC,KAAQ,8PAA+P,KAAQ,SAAU,GAAM,CAAC,KAAQ,2QAA4Q,KAAQ,WAAY,GAAM,CAAC,KAAQ,oTAAqT,KAAQ,YAAa,GAAM,CAAC,KAAQ,wEAAyE,KAAQ,eAAgB,GAAM,CAAC,KAAQ,uHAAwH,KAAQ,aAAc,GAAM,CAAC,KAAQ,qTAAsT,KAAQ,YAAa,GAAM,CAAC,KAAQ,gUAAiU,KAAQ,YAAa,GAAM,CAAC,KAAQ,qYAAsY,KAAQ,UAAW,GAAM,CAAC,KAAQ,irBAAkrB,KAAQ,oBAAqB,GAAM,CAAC,KAAQ,wxBAAyxB,KAAQ,QAAS,GAAM,CAAC,KAAQ,osBAAqsB,KAAQ,YAAa,GAAM,CAAC,KAAQ,8tCAA+tC,KAAQ,eAAgB,GAAM,CAAC,KAAQ,+dAAge,KAAQ,UAAW,GAAM,CAAC,KAAQ,qiBAAsiB,KAAQ,UAAW,GAAM,CAAC,KAAQ,mNAAoN,KAAQ,aAAc,GAAM,CAAC,KAAQ,sLAAuL,KAAQ,WAAY,GAAM,CAAC,KAAQ,2VAA4V,KAAQ,SAAU,GAAM,CAAC,KAAQ,2zBAA4zB,KAAQ,gBAAiB,GAAM,CAAC,KAAQ,wUAAyU,KAAQ,WAAY,GAAM,CAAC,KAAQ,mJAAoJ,KAAQ,WAAY,GAAM,CAAC,KAAQ,4lBAA6lB,KAAQ,UAAW,GAAM,CAAC,KAAQ,uzCAAwzC,KAAQ,cAAe,GAAM,CAAC,KAAQ,qiBAAsiB,KAAQ,YAAa,GAAM,CAAC,KAAQ,+UAAgV,KAAQ,YAAa,GAAM,CAAC,KAAQ,0iBAA2iB,KAAQ,SAAU,GAAM,CAAC,KAAQ,0PAA2P,KAAQ,WAAY,GAAM,CAAC,KAAQ,+FAAgG,KAAQ,cAAe,GAAM,CAAC,KAAQ,gMAAiM,KAAQ,WAAY,GAAM,CAAC,KAAQ,saAAua,KAAQ,cAAe,GAAM,CAAC,KAAQ,4kBAA6kB,KAAQ,WAAY,GAAM,CAAC,KAAQ,mkBAAokB,KAAQ,cAAe,GAAM,CAAC,KAAQ,wvBAAyvB,KAAQ,WAAY,GAAM,CAAC,KAAQ,2pBAA4pB,KAAQ,QAAS,GAAM,CAAC,KAAQ,8wBAA+wB,KAAQ,YAAa,GAAM,CAAC,KAAQ,yIAA0I,KAAQ,aAAc,GAAM,CAAC,KAAQ,oUAAqU,KAAQ,UAAW,GAAM,CAAC,KAAQ,+bAAgc,KAAQ,cAAe,GAAM,CAAC,KAAQ,iQAAkQ,KAAQ,UAAW,GAAM,CAAC,KAAQ,onBAAqnB,KAAQ,YAAa,GAAM,CAAC,KAAQ,ozCAAqzC,KAAQ,UAAW,GAAM,CAAC,KAAQ,2DAA4D,KAAQ,WAAY,GAAM,CAAC,KAAQ,gxBAAixB,KAAQ,UAAW,GAAM,CAAC,KAAQ,2aAA4a,KAAQ,WAAY,GAAM,CAAC,KAAQ,mKAAoK,KAAQ,QAAS,GAAM,CAAC,KAAQ,+HAAgI,KAAQ,gBAAiB,GAAM,CAAC,KAAQ,gQAAiQ,KAAQ,aAAc,GAAM,CAAC,KAAQ,sJAAuJ,KAAQ,eAAgB,GAAM,CAAC,KAAQ,ghCAAihC,KAAQ,UAAW,GAAM,CAAC,KAAQ,wZAAyZ,KAAQ,WAAY,GAAM,CAAC,KAAQ,wEAAyE,KAAQ,iBAAkB,GAAM,CAAC,KAAQ,goBAAioB,KAAQ,SAAU,GAAM,CAAC,KAAQ,kfAAmf,KAAQ,WAAY,GAAM,CAAC,KAAQ,+oBAAgpB,KAAQ,eAAgB,GAAM,CAAC,KAAQ,6KAA8K,KAAQ,SAAU,GAAM,CAAC,KAAQ,yXAA0X,KAAQ,kBAA6B,GAAM,CAAC,KAAQ,6RAA8R,KAAQ,eAAgB,GAAM,CAAC,KAAQ,k7BAAm7B,KAAQ,YAAa,GAAM,CAAC,KAAQ,ooFAAqoF,KAAQ,SAAU,GAAM,CAAC,KAAQ,kaAAma,KAAQ,YAAa,GAAM,CAAC,KAAQ,ypCAA0pC,KAAQ,SAAU,GAAM,CAAC,KAAQ,urRAAwrR,KAAQ,UAAW,GAAM,CAAC,KAAQ,kdAAmd,KAAQ,SAAU,GAAM,CAAC,KAAQ,gfAAif,KAAQ,wBAAyB,GAAM,CAAC,KAAQ,6hCAA8hC,KAAQ,mBAAoB,GAAM,CAAC,KAAQ,0RAA2R,KAAQ,cAAe,GAAM,CAAC,KAAQ,0EAA2E,KAAQ,UAAW,GAAM,CAAC,KAAQ,sPAAuP,KAAQ,cAAe,GAAM,CAAC,KAAQ,kYAAmY,KAAQ,QAAS,GAAM,CAAC,KAAQ,6FAA8F,KAAQ,aAAc,GAAM,CAAC,KAAQ,6QAA8Q,KAAQ,SAAU,GAAM,CAAC,KAAQ,6YAA8Y,KAAQ,cAAe,GAAM,CAAC,KAAQ,kVAAmV,KAAQ,SAAU,GAAM,CAAC,KAAQ,mhBAAohB,KAAQ,YAAa,GAAM,CAAC,KAAQ,6QAA8Q,KAAQ,YAAa,GAAM,CAAC,KAAQ,uMAAwM,KAAQ,YAAa,GAAM,CAAC,KAAQ,4FAA6F,KAAQ,eAAgB,GAAM,CAAC,KAAQ,6NAA8N,KAAQ,YAAa,GAAM,CAAC,KAAQ,wMAAyM,KAAQ,SAAU,GAAM,CAAC,KAAQ,4KAA6K,KAAQ,YAAa,GAAM,CAAC,KAAQ,qVAAsV,KAAQ,mBAAoB,GAAM,CAAC,KAAQ,2OAA4O,KAAQ,WAAY,GAAM,CAAC,KAAQ,qWAAsW,KAAQ,WAAY,GAAM,CAAC,KAAQ,0IAA2I,KAAQ,gBAAiB,GAAM,CAAC,KAAQ,yOAA0O,KAAQ,eAAgB,GAAM,CAAC,KAAQ,osBAAqsB,KAAQ,gBAAiB,GAAM,CAAC,KAAQ,ubAAwb,KAAQ,UAAW,GAAM,CAAC,KAAQ,+sBAAgtB,KAAQ,SAAU,GAAM,CAAC,KAAQ,uOAAwO,KAAQ,kBAAmB,GAAM,CAAC,KAAQ,sIAAuI,KAAQ,YAAa,GAAM,CAAC,KAAQ,oQAAqQ,KAAQ,WAAY,GAAM,CAAC,KAAQ,+mBAAgnB,KAAQ,WAAY,GAAM,CAAC,KAAQ,wTAAyT,KAAQ,SAAU,GAAM,CAAC,KAAQ,iXAAkX,KAAQ,WAAY,GAAM,CAAC,KAAQ,gmBAAimB,KAAQ,WAAY,GAAM,CAAC,KAAQ,gsIAAisI,KAAQ,iBAAkB,GAAM,CAAC,KAAQ,yOAA0O,KAAQ,UAAW,GAAM,CAAC,KAAQ,gNAAiN,KAAQ,WAAY,GAAM,CAAC,KAAQ,kFAAmF,KAAQ,WAAY,GAAM,CAAC,KAAQ,wbAAyb,KAAQ,WAAY,GAAM,CAAC,KAAQ,+FAAgG,KAAQ,UAAW,GAAM,CAAC,KAAQ,6DAA8D,KAAQ,uBAAwB,GAAM,CAAC,KAAQ,qtBAAstB,KAAQ,UAAW,GAAM,CAAC,KAAQ,0GAA2G,KAAQ,aAAc,GAAM,CAAC,KAAQ,gUAAiU,KAAQ,WAAY,GAAM,CAAC,KAAQ,6DAA8D,KAAQ,eAAgB,GAAM,CAAC,KAAQ,6nBAA8nB,KAAQ,gBAAiB,GAAM,CAAC,KAAQ,uaAAwa,KAAQ,cAAe,GAAM,CAAC,KAAQ,yGAA0G,KAAQ,WAAY,GAAM,CAAC,KAAQ,opBAAqpB,KAAQ,YAAa,GAAM,CAAC,KAAQ,iFAAkF,KAAQ,0BAA2B,GAAM,CAAC,KAAQ,oLAAqL,KAAQ,QAAS,GAAM,CAAC,KAAQ,qkBAAskB,KAAQ,QAAS,GAAM,CAAC,KAAQ,seAAue,KAAQ,SAAU,GAAM,CAAC,KAAQ,yKAA0K,KAAQ,wBAAyB,GAAM,CAAC,KAAQ,w0BAAy0B,KAAQ,aAAc,GAAM,CAAC,KAAQ,usBAAwsB,KAAQ,eAAgB,GAAM,CAAC,KAAQ,wUAAyU,KAAQ,QAAS,GAAM,CAAC,KAAQ,kPAAmP,KAAQ,WAAY,GAAM,CAAC,KAAQ,kzBAAmzB,KAAQ,QAAS,GAAM,CAAC,KAAQ,6MAA8M,KAAQ,WAAY,GAAM,CAAC,KAAQ,k5BAAm5B,KAAQ,SAAU,GAAM,CAAC,KAAQ,yeAA0e,KAAQ,WAAY,GAAM,CAAC,KAAQ,wwCAAywC,KAAQ,aAAc,GAAM,CAAC,KAAQ,srEAAurE,KAAQ,aAAc,GAAM,CAAC,KAAQ,kMAAmM,KAAQ,UAAW,GAAM,CAAC,KAAQ,q+CAAs+C,KAAQ,SAAU,GAAM,CAAC,KAAQ,+hBAAgiB,KAAQ,YAAa,GAAM,CAAC,KAAQ,oZAAqZ,KAAQ,cAAe,GAAM,CAAC,KAAQ,8IAA+I,KAAQ,WAAY,GAAM,CAAC,KAAQ,mlFAAolF,KAAQ,aAAc,GAAM,CAAC,KAAQ,u+BAAw+B,KAAQ,WAAY,GAAM,CAAC,KAAQ,mFAAoF,KAAQ,SAAU,GAAM,CAAC,KAAQ,grBAAirB,KAAQ,eAAgB,OAAU,mBAAoB,WAAc,CAAC,KAAQ,OAAQ,gBAAmB,MAAO,MAAS,O;;;;;;ICMjzrG,SAAU/9I,GAET,IAAIP,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,WAAjB,EAAOF,IAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAM,SACrC,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,IAnFpD,CAsFC,CAAC,CAAD,CAIH,SAAShC,EAAQD,EAASF,GAKjCG,EAAOD,QAAU,SAAUgzC,GAEE,aAAxB9mC,SAASknJ,YAAqD,gBAAxBlnJ,SAASknJ,WAElDpgH,EAAS3yC,OACC6L,SAASmyB,YAEnBnyB,SAASmyB,YAAY,sBAAsB,WACd,gBAAxBnyB,SAASknJ,YAA8BpgH,EAAS3yC,UAE3C6L,SAASqyB,kBAEnBryB,SAASqyB,iBAAiB,mBAAoByU,KArBtC,CA4BH,SAAS/yC,EAAQD,EAASF,IAGL,SAAS0C,GAErC,IAAI+pD,EAGAA,EADkB,oBAAXjqD,OACDA,YACmB,IAAXE,EACRA,EACiB,oBAATD,KACRA,KAEA,GAGVtC,EAAOD,QAAUusD,IACYlsD,KAAKmG,KAAM1G,EAAoB,KAIrD,SAASG,EAAQD,EAASF,GAKjC,IAEIyP,EAFA8jJ,EAA4B,mBAAXpyJ,QAAoD,WAA3B,EAAOA,OAAO2U,UAAwB,SAAUw2C,GAAO,SAAcA,IAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXnrD,QAAyBmrD,EAAIz+C,cAAgB1M,QAAUmrD,IAAQnrD,OAAOa,UAAY,SAAhG,EAAkHsqD,IAKtQ78C,EAAI,WACH,OAAO/I,KADJ,GAIJ,IAEC+I,EAAIA,GAAK9M,SAAS,cAATA,KAA6B,EAAI6wJ,MAAM,QAC/C,MAAO9jJ,GAEgE,YAAjD,oBAAXlN,OAAyB,YAAc+wJ,EAAQ/wJ,WAAuBiN,EAAIjN,QAOvFrC,EAAOD,QAAUuP,GA5EP,KAqFH,SAAStP,EAAQD,EAASF,GAEjCG,EAAOD,QAAUF,EAAoB,KAK9B,SAASG,EAAQD,EAASF,GAKjC,IAAIuzJ,EAA4B,mBAAXpyJ,QAAoD,WAA3B,EAAOA,OAAO2U,UAAwB,SAAUw2C,GAAO,SAAcA,IAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXnrD,QAAyBmrD,EAAIz+C,cAAgB1M,QAAUmrD,IAAQnrD,OAAOa,UAAY,SAAhG,EAAkHsqD,IAIlQmnG,EAAcC,EAFD1zJ,EAAoB,IAIjC2zJ,EAAU3zJ,EAAoB,GAI9B4zJ,EAAaF,EAFD1zJ,EAAoB,KAIpC,SAAS0zJ,EAAuBpnG,GAAO,OAAOA,GAAOA,EAAI9qD,WAAa8qD,EAAM,CAAEunG,QAASvnG,GAGvF,IAAIwnG,EAAYH,EAAQnxJ,OAAOuxJ,SAQ/B,GAPAJ,EAAQnxJ,OAAOuxJ,SAAWH,EAAWC,QACrCF,EAAQnxJ,OAAOuxJ,SAASC,WAAa,WAEjC,OADAL,EAAQnxJ,OAAOuxJ,SAAWD,EACnBptJ,WAImB,IAAnBitJ,EAAQpmI,OAAwB,CACvC,IAAI0mI,EAAe,WACf,IAAIn9I,EAAO1L,WAAa,GACxBR,MAAM5I,UAAUo6C,QAAQ77C,KAAKuW,EAAMpQ,MACnC,IAAI4U,EAAMs4I,EAAWC,QAAQhkJ,MAAM8jJ,EAAQnxJ,OAAQsU,GACnD,MAAqE,iBAA9C,IAARwE,EAAsB,YAAci4I,EAAQj4I,IAAqBA,EAAM5U,MAE1FutJ,EAAapmJ,YAAc+lJ,EAAWC,QAAQhmJ,YAG9C,IAAIqmJ,EAAcP,EAAQpmI,OAAOlmB,GAAG0sJ,SACpCJ,EAAQpmI,OAAOlmB,GAAG0sJ,SAAWE,EAC7BN,EAAQpmI,OAAOlmB,GAAG0sJ,SAASC,WAAa,WAEpC,OADAL,EAAQpmI,OAAOlmB,GAAG0sJ,SAAWG,EACtBxtJ,OAKf,EAAI+sJ,EAAYI,UAAS,YACrB,EAAID,EAAWC,SAASznJ,SAAS+4B,iBAAiB,wBAK/C,SAAShlC,EAAQD,EAASF,IAGL,SAAS0C,GAErC5B,OAAOC,eAAeb,EAAS,aAAc,CACzCmB,OAAO,IAGX,IAAI8yJ,EAAgb,SAAUC,EAAKh0J,GAAK,GAAIwK,MAAMC,QAAQupJ,GAAQ,OAAOA,EAAY,GAAIjzJ,OAAO2U,YAAYhV,OAAOszJ,GAAQ,OAAxf,SAAuBA,EAAKh0J,GAAK,IAAIi0J,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKnwJ,EAAW,IAAM,IAAK,IAAiCowJ,EAA7B7lF,EAAKwlF,EAAIjzJ,OAAO2U,cAAmBw+I,GAAMG,EAAK7lF,EAAG7xD,QAAQ5M,QAAoBkkJ,EAAKzuJ,KAAK6uJ,EAAGpzJ,QAAYjB,GAAKi0J,EAAKzrJ,SAAWxI,GAA3Dk0J,GAAK,IAAoE,MAAOloF,GAAOmoF,GAAK,EAAMC,EAAKpoF,EAAtL,QAAuM,KAAWkoF,GAAM1lF,EAAE,QAAYA,EAAE,SAAjC,QAA2D,GAAI2lF,EAAI,MAAMC,GAAQ,OAAOH,EAA6HK,CAAcN,EAAKh0J,GAAa,MAAM,IAAIyE,UAAU,yDAEllB8vJ,EAAe,WAAc,SAASrpJ,EAAiB3H,EAAQwjG,GAAS,IAAK,IAAI/mG,EAAI,EAAGA,EAAI+mG,EAAMv+F,OAAQxI,IAAK,CAAE,IAAI0D,EAAaqjG,EAAM/mG,GAAI0D,EAAW9C,WAAa8C,EAAW9C,aAAc,EAAO8C,EAAWmD,cAAe,EAAU,UAAWnD,IAAYA,EAAWoD,UAAW,GAAMpG,OAAOC,eAAe4C,EAAQG,EAAWnC,IAAKmC,IAAiB,OAAO,SAAUif,EAAa6xI,EAAYC,GAAiJ,OAA9HD,GAAYtpJ,EAAiByX,EAAY/gB,UAAW4yJ,GAAiBC,GAAavpJ,EAAiByX,EAAa8xI,GAAqB9xI,GAA7gB,GAEfwwI,EAA4B,mBAAXpyJ,QAAoD,WAA3B,EAAOA,OAAO2U,UAAwB,SAAUw2C,GAAO,SAAcA,IAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXnrD,QAAyBmrD,EAAIz+C,cAAgB1M,QAAUmrD,IAAQnrD,OAAOa,UAAY,SAAhG,EAAkHsqD,IAIlQmnG,EAAcC,EAFD1zJ,EAAoB,IAMjC80J,EAASpB,EAFD1zJ,EAAoB,KAI5B2zJ,EAAU3zJ,EAAoB,GAElC,SAAS0zJ,EAAuBpnG,GAAO,OAAOA,GAAOA,EAAI9qD,WAAa8qD,EAAM,CAAEunG,QAASvnG,GAIvF,IAAIyoG,EAAOzlI,UAAUC,UAAU3iB,QAAQ,UAAY,GAAK0iB,UAAUC,UAAU3iB,QAAQ,aAAe,GAAK0iB,UAAUC,UAAU3iB,QAAQ,UAAY,EAE5IooJ,EAAmB,WAGnB,IAFA,IAAIC,EAAW,yCAAyC3uJ,MAAM,KAC1DuqD,EAAMzkD,SAASf,cAAc,OACxBjL,EAAI,EAAGA,EAAI60J,EAASrsJ,OAAQxI,IACjC,GAAIywD,QAAkCxsD,IAA3BwsD,EAAI9kD,MAAMkpJ,EAAS70J,IAC1B,OAAO60J,EAAS70J,GAGxB,OAAO,EARY,GAYnB80J,OAAO,EACPC,OAAO,EACPC,OAAO,EACPC,GAAsB,EACtBC,GAAsB,EAC1B,SAASC,EAAc7lJ,GACnBwlJ,EAAOvB,EAAQnxJ,OAAOusC,YAAc3iC,SAASu4B,gBAAgBzQ,YAC7DihI,EAAOxB,EAAQnxJ,OAAO8gC,aAAel3B,SAASu4B,gBAAgBvQ,aACA,iBAA5C,IAAN1kB,EAAoB,YAAc6jJ,EAAQ7jJ,KAAgC,SAAXA,EAAElF,MAA8B,eAAXkF,EAAElF,OAC9F6qJ,GAAsB,GAG9BE,IACA5B,EAAQnxJ,OAAOi8B,iBAAiB,SAAU82H,GAC1C5B,EAAQnxJ,OAAOi8B,iBAAiB,oBAAqB82H,GACrD5B,EAAQnxJ,OAAOi8B,iBAAiB,OAAQ82H,IACxC,EAAI9B,EAAYI,UAAS,WACrB0B,EAAc,CACV/qJ,KAAM,kBAMd,IAAIgrJ,EAAe,GAGfC,GAAc,EAClB,SAASC,IACL,GAAKF,EAAa5sJ,OAAlB,CAKIwsJ,OAD+B/wJ,IAA/BsvJ,EAAQnxJ,OAAOoiC,YACR+uH,EAAQnxJ,OAAOoiC,aAEdx4B,SAASu4B,iBAAmBv4B,SAASq4B,KAAKkd,YAAcv1C,SAASq4B,MAAMzP,UAGnF,IAAI2gI,EAAYN,IAAwBI,GAAeA,EAAY9tI,QAAUutI,GAAQO,EAAY7tI,SAAWutI,EACxGS,EAAaN,GAAuBK,IAAcF,GAAeA,EAAYt4G,IAAMi4G,EAEvFC,GAAsB,EACtBC,GAAsB,GAElBK,GAAaC,KACbJ,EAAa1sJ,SAAQ,SAAU2hC,GACvBkrH,GACAlrH,EAAK0sD,WAELy+D,GACAnrH,EAAK+xB,cAIbi5F,EAAc,CACV9tI,MAAOutI,EACPttI,OAAQutI,EACRh4G,EAAGi4G,KAIX,EAAIN,EAAOjB,SAAS6B,IAIxB,IAAIG,IAAiBnzJ,EAAOozJ,gBAAiB,IAAIpzJ,EAAOozJ,gBAAe,SAAUC,GACzEA,GAASA,EAAMntJ,SACf,EAAIksJ,EAAOjB,UAAS,WAChBkC,EAAMjtJ,SAAQ,SAAU2hC,GAChBA,EAAK9mC,QAAU8mC,EAAK9mC,OAAOowJ,WACtBsB,GACD5qH,EAAK9mC,OAAOowJ,SAAS58D,WAEzBm+D,GAAsB,YAOtCU,EAAa,EAIbC,EAAW,WACX,SAASA,EAASxrH,EAAMyrH,IAtG5B,SAAyBC,EAAUpzI,GAAe,KAAMozI,aAAoBpzI,GAAgB,MAAM,IAAIle,UAAU,qCAuGxGuxJ,CAAgB1vJ,KAAMuvJ,GAEtB,IAAIxzJ,EAAOiE,KAEXjE,EAAKuzJ,WAAaA,IAElBvzJ,EAAKk+B,MAAQ8J,EAEbhoC,EAAKslC,SAAW,CACZv9B,KAAM,SACN0vD,MAAO,GACPm8F,OAAQ,KACRC,WAAY,gBACZC,QAAS,QACTC,YAAa,UACbC,UAAW,YACXC,SAAS,EACTC,kBAAmB,KACnBjnG,QAAS,IACTknG,iBAAiB,EACjBC,cAAc,EACdC,iBAAiB,EAGjBC,SAAU,KACVC,eAAgB,EAChBC,aAAc,EACdC,YAAa,EACbC,sBAAsB,EAGtB36F,SAAU,KACVw1E,OAAQ,KACRolB,UAAW,KACXC,aAAc,MAIlB,IAAIC,EAA0B70J,EAAKk+B,MAAMmkB,aAAa,iBAClDyyG,EAAiB5iJ,KAAK89G,MAAM6kC,GAA2B,MACvDA,GAEAhzH,QAAQqvF,KAAK,mKAIjB,IAAI6jC,EAAc/0J,EAAKk+B,MAAMslD,SAAW,GACpCwxE,EAAkB,GA4CtB,GA3CA32J,OAAOuI,KAAKmuJ,GAAa1uJ,SAAQ,SAAUnH,GACvC,IAAI+1J,EAAiB/1J,EAAI6hD,OAAO,EAAG,GAAGz0C,cAAgBpN,EAAI6hD,OAAO,GAC7Dk0G,QAA2D,IAAlCj1J,EAAKslC,SAAS2vH,KACvCD,EAAgBC,GAAkBF,EAAY71J,OAItDc,EAAKgB,QAAUhB,EAAKo0B,OAAO,GAAIp0B,EAAKslC,SAAUwvH,EAAgBE,EAAiBvB,GAC/EzzJ,EAAKk1J,YAAcl1J,EAAKo0B,OAAO,GAAIp0B,EAAKgB,SAGxC3C,OAAOuI,KAAK5G,EAAKgB,SAASqF,SAAQ,SAAUnH,GACd,SAAtBc,EAAKgB,QAAQ9B,GACbc,EAAKgB,QAAQ9B,IAAO,EACS,UAAtBc,EAAKgB,QAAQ9B,KACpBc,EAAKgB,QAAQ9B,IAAO,MAK5Bc,EAAKgB,QAAQy2D,MAAQ73D,KAAKoD,IAAI,EAAGpD,KAAKyK,KAAK,EAAGmY,WAAWxiB,EAAKgB,QAAQy2D,UAGlEz3D,EAAKgB,QAAQm0J,WAAan1J,EAAKgB,QAAQo0J,SAEvCvzH,QAAQqvF,KAAK,+KAGRlxH,EAAKgB,QAAQmzJ,kBACVn0J,EAAKgB,QAAQo0J,OAASp1J,EAAKgB,QAAQm0J,UACnCn1J,EAAKgB,QAAQmzJ,gBAAkB,2BACxBn0J,EAAKgB,QAAQo0J,MACpBp1J,EAAKgB,QAAQmzJ,gBAAkB,mBACxBn0J,EAAKgB,QAAQm0J,YACpBn1J,EAAKgB,QAAQmzJ,gBAAkB,aAMC,iBAAjCn0J,EAAKgB,QAAQmzJ,kBACpBn0J,EAAKgB,QAAQmzJ,gBAAkB,IAAI5jJ,OAAOvQ,EAAKgB,QAAQmzJ,kBAEvDn0J,EAAKgB,QAAQmzJ,2BAA2B5jJ,OAAQ,CAChD,IAAI8kJ,EAAwBr1J,EAAKgB,QAAQmzJ,gBACzCn0J,EAAKgB,QAAQmzJ,gBAAkB,WAC3B,OAAOkB,EAAsBnoJ,KAAK2f,UAAUC,YAapD,GAV4C,mBAAjC9sB,EAAKgB,QAAQmzJ,kBACpBn0J,EAAKgB,QAAQmzJ,gBAAkB,WAC3B,OAAO,IAK0B,iBAA9Bn0J,EAAKgB,QAAQozJ,eACpBp0J,EAAKgB,QAAQozJ,aAAe,IAAI7jJ,OAAOvQ,EAAKgB,QAAQozJ,eAEpDp0J,EAAKgB,QAAQozJ,wBAAwB7jJ,OAAQ,CAC7C,IAAI+kJ,EAAqBt1J,EAAKgB,QAAQozJ,aACtCp0J,EAAKgB,QAAQozJ,aAAe,WACxB,OAAOkB,EAAmBpoJ,KAAK2f,UAAUC,YAGR,mBAA9B9sB,EAAKgB,QAAQozJ,eACpBp0J,EAAKgB,QAAQozJ,aAAe,WACxB,OAAO,IAKf,IAAImB,EAAcv1J,EAAKgB,QAAQkzJ,kBAE3BqB,GAA6F,iBAAtD,IAAhBA,EAA8B,YAAczE,EAAQyE,UAA4D,IAAvBA,EAAYpvJ,SAK5HovJ,EAFoB7D,EAFD6D,EAE8B,GAErB,IAG1BA,aAAuBjnG,UACzBinG,EAAc,MAElBv1J,EAAKgB,QAAQkzJ,kBAAoBqB,EAEjCv1J,EAAK6hE,MAAQ,CACTp4D,IAAKzJ,EAAKgB,QAAQ4yJ,QAAU,KAC5B15F,WAAY,KACZs7F,WAAW,EAKX7+I,SAAU,2BAA2BzJ,KAAK2f,UAAUC,WAAa,WAAa,SAG9E9sB,EAAKy1J,WAAaz1J,EAAK01J,mBACvB11J,EAAKs+B,OA6fb,OAtfA4zH,EAAasB,EAAU,CAAC,CACpBt0J,IAAK,MACLN,MAAO,SAAa6L,EAAI+uD,GACpB,MAAsB,iBAAXA,EACA03F,EAAQnxJ,OAAOoiD,iBAAiB13C,GAAIw3C,iBAAiBuX,IAI5DA,EAAOzO,WAAawnG,IACpB/4F,EAAO+4F,GAAoB/4F,EAAOzO,WAGtC1sD,OAAOuI,KAAK4yD,GAAQnzD,SAAQ,SAAUnH,GAClCuL,EAAGnB,MAAMpK,GAAOs6D,EAAOt6D,MAEpBuL,KAKZ,CACCvL,IAAK,SACLN,MAAO,SAAgBywH,GACnB,IAAIsmC,EAAahtJ,UAWjB,OATA0mH,EAAMA,GAAO,GACbhxH,OAAOuI,KAAK+B,WAAWtC,SAAQ,SAAU1I,GAChCg4J,EAAWh4J,IAGhBU,OAAOuI,KAAK+uJ,EAAWh4J,IAAI0I,SAAQ,SAAUnH,GACzCmwH,EAAInwH,GAAOy2J,EAAWh4J,GAAGuB,SAG1BmwH,IAKZ,CACCnwH,IAAK,gBACLN,MAAO,WACH,MAAO,CACHsmB,MAAOutI,EACPttI,OAAQutI,EACRh4G,EAAGi4G,KAMZ,CACCzzJ,IAAK,UACLN,MAAO,WACH,IAGIg3J,EAHO3xJ,KAGYjD,QAAQ6yJ,WAoB/B,OAnBI+B,GAAsC,iBAAhBA,IACtBA,EALO3xJ,KAKYi6B,MAAMq4B,cAAcq/F,IAGrCA,aAAuBtnG,UACzBsnG,EAAc,MAGdA,IAZO3xJ,KAaEjD,QAAQizJ,QAbVhwJ,KAcE49D,MAAM3jC,MAAQ03H,EAAYC,WAAU,IAdtC5xJ,KAgBE49D,MAAM3jC,MAAQ03H,EAhBhB3xJ,KAiBE49D,MAAMi0F,YAAcF,EAAY12G,YAjBlCj7C,KAmBF49D,MAAM2zF,WAAY,KAnBhBvxJ,KAuBF49D,MAAM3jC,QAKQ,OA5BZj6B,KA4BF49D,MAAMp4D,MA5BJxF,KA6BF49D,MAAMp4D,IA7BJxF,KA6Be+gB,IA7Bf/gB,KA6BwBi6B,MAAO,oBAAoB7xB,QAAQ,eAAgB,IAAIA,QAAQ,YAAa,QA7BpGpI,KA+BI49D,MAAMp4D,KAA0B,SA/BpCxF,KA+BsB49D,MAAMp4D,QAE5C,CACCvK,IAAK,kBACLN,MAAO,WACH,OAAO2zJ,IAAqBtuJ,KAAKjD,QAAQmzJ,oBAE9C,CACCj1J,IAAK,OACLN,MAAO,WACH,IACIm3J,EAAkB,CAClBp/I,SAAU,WACV8Q,IAAK,EACLC,KAAM,EACNxC,MAAO,OACPC,OAAQ,OACR6nB,SAAU,SACVgpH,cAAe,QAEfC,EAAc,GAElB,IAZWhyJ,KAYDjD,QAAQizJ,QAAS,CAEvB,IAAIiC,EAdGjyJ,KAcai6B,MAAMmkB,aAAa,SAIvC,GAHI6zG,GAfGjyJ,KAgBEi6B,MAAMukB,aAAa,gCAAiCyzG,GAhBtDjyJ,KAkBE49D,MAAM2zF,UAAW,CACtB,IAAIW,EAnBDlyJ,KAmBoB49D,MAAM3jC,MAAMmkB,aAAa,SAC5C8zG,GApBDlyJ,KAqBM49D,MAAM3jC,MAAMukB,aAAa,gCAAiC0zG,IA+D3E,GAzDyC,WA3B9BlyJ,KA2BF+gB,IA3BE/gB,KA2BOi6B,MAAO,aA3Bdj6B,KA4BF+gB,IA5BE/gB,KA4BOi6B,MAAO,CACjBvnB,SAAU,aAGsB,SAhC7B1S,KAgCF+gB,IAhCE/gB,KAgCOi6B,MAAO,YAhCdj6B,KAiCF+gB,IAjCE/gB,KAiCOi6B,MAAO,CACjB+uB,OAAQ,IAlCLhpD,KAuCN49D,MAAM3H,WAAavwD,SAASf,cAAc,OAvCpC3E,KAwCN+gB,IAxCM/gB,KAwCG49D,MAAM3H,WAAY67F,GAxCrB9xJ,KAyCN+gB,IAzCM/gB,KAyCG49D,MAAM3H,WAAY,CAC5B,UA1COj2D,KA0CSjD,QAAQisD,SAIxBqlG,GA9COruJ,KA+CF+gB,IA/CE/gB,KA+CO49D,MAAM3H,WAAY,CAC5BvyC,QAAS,QAhDN1jB,KAoDN49D,MAAM3H,WAAWzX,aAAa,KAAM,sBApD9Bx+C,KAoD2DsvJ,YApD3DtvJ,KAqDNi6B,MAAM10B,YArDAvF,KAqDiB49D,MAAM3H,YArDvBj2D,KAwDF49D,MAAM2zF,UACXS,EAzDOhyJ,KAyDYmwB,OAAO,CACtB,aA1DGnwB,KA0DgBjD,QAAQ8yJ,QAC3B,kBA3DG7vJ,KA2DqBjD,QAAQ+yJ,YAEhC,cAAe,eA7DZ9vJ,KA6DkCjD,QAAQ8yJ,QAAU,sBA7DpD7vJ,KA6DiFjD,QAAQ+yJ,YAAc,IAC1G,YAAa,QACdgC,EAAiBE,IA/DbhyJ,KAmEF49D,MAAM3jC,MAAQv0B,SAASf,cAAc,OAnEnC3E,KAoEE49D,MAAMp4D,MACXwsJ,EArEGhyJ,KAqEgBmwB,OAAO,CACtB,sBAtEDnwB,KAsE6BjD,QAAQ+yJ,YACpC,kBAvED9vJ,KAuEyBjD,QAAQ8yJ,QAChC,oBAxED7vJ,KAwE2BjD,QAAQgzJ,UAClC,mBAAoB,QAzErB/vJ,KAyEoC49D,MAAMp4D,IAAM,MAChDssJ,EAAiBE,KAIF,YA9EfhyJ,KA8EFjD,QAAQ+G,MAA4C,UA9ElD9D,KA8EiCjD,QAAQ+G,MAA0C,kBA9EnF9D,KA8EkEjD,QAAQ+G,MAAmD,IA9E7H9D,KA8E2GjD,QAAQy2D,QA9EnHxzD,KA+EF49D,MAAMlrD,SAAW,YAKE,UApFjB1S,KAoFF49D,MAAMlrD,SAGX,IAFA,IAAIy/I,EAAsB,EACtBC,EAtFGpyJ,KAsFiBi6B,MACA,OAAjBm4H,GAAyBA,IAAiB1sJ,UAAoC,IAAxBysJ,GAA2B,CACpF,IAAIE,EAxFDryJ,KAwFwB+gB,IAAIqxI,EAAc,sBAxF1CpyJ,KAwFuE+gB,IAAIqxI,EAAc,mBAxFzFpyJ,KAwFmH+gB,IAAIqxI,EAAc,aACpIC,GAAuC,SAApBA,IACnBF,EAAsB,EA1FvBnyJ,KA2FM49D,MAAMlrD,SAAW,YAE1B0/I,EAAeA,EAAan3G,WAKpC+2G,EAAYt/I,SAlGD1S,KAkGiB49D,MAAMlrD,SAlGvB1S,KAqGN+gB,IArGM/gB,KAqGG49D,MAAM3jC,MAAO+3H,GArGhBhyJ,KAsGN49D,MAAM3H,WAAW1wD,YAtGXvF,KAsG4B49D,MAAM3jC,OAtGlCj6B,KAyGNywF,WAzGMzwF,KA0GN81D,UAAS,GA1GH91D,KA6GFjD,QAAQqzJ,iBAAmBjB,GAChCA,EAAex3H,QA9GR33B,KA8GqBi6B,OA9GrBj6B,KAkHFjD,QAAQuuI,QAlHNtrI,KAmHFjD,QAAQuuI,OAAOzxI,KAnHbmG,MAuHsC,SAvHtCA,KAuHF+gB,IAvHE/gB,KAuHOi6B,MAAO,qBAvHdj6B,KAwHF+gB,IAxHE/gB,KAwHOi6B,MAAO,CACjB,mBAAoB,SAzHjBj6B,KA6HNsyJ,sBAKV,CACCr3J,IAAK,oBACLN,MAAO,WACHm0J,EAAa5vJ,KAAKc,MAEU,IAAxB8uJ,EAAa5sJ,QACb8sJ,MAMT,CACC/zJ,IAAK,yBACLN,MAAO,WACH,IAAIoB,EAAOiE,KAEX8uJ,EAAa1sJ,SAAQ,SAAU2hC,EAAM9oC,GAC7B8oC,EAAKurH,aAAevzJ,EAAKuzJ,YACzBR,EAAanyI,OAAO1hB,EAAK,QAItC,CACCA,IAAK,UACLN,MAAO,WACQqF,KAENuyJ,yBAGL,IAAIC,EALOxyJ,KAKkBi6B,MAAMmkB,aAAa,iCAShD,GAdWp+C,KAMNi6B,MAAMijF,gBAAgB,iCAEtBs1C,EARMxyJ,KAWFi6B,MAAMukB,aAAa,QAASg0G,GAX1BxyJ,KASFi6B,MAAMijF,gBAAgB,SATpBl9G,KAcF49D,MAAM2zF,UAAW,CAEtB,IAAIkB,EAhBGzyJ,KAgByB49D,MAAM3jC,MAAMmkB,aAAa,iCAhBlDp+C,KAiBF49D,MAAM3jC,MAAMijF,gBAAgB,iCAE5Bu1C,EAnBEzyJ,KAsBE49D,MAAM3jC,MAAMukB,aAAa,QAASg0G,GAtBpCxyJ,KAoBE49D,MAAM3jC,MAAMijF,gBAAgB,SApB9Bl9G,KA0BE49D,MAAMi0F,aA1BR7xJ,KA2BE49D,MAAMi0F,YAAYtsJ,YA3BpBvF,KA2BqC49D,MAAM3jC,OA3B3Cj6B,KAgCF0yJ,aAhCE1yJ,KAiCF0yJ,YAAYz3G,WAAWyE,YAjCrB1/C,KAiCsC0yJ,aAjCtC1yJ,KAmCF49D,MAAM3H,YAnCJj2D,KAoCF49D,MAAM3H,WAAWhb,WAAWyE,YApC1B1/C,KAoC2C49D,MAAM3H,YApCjDj2D,KAwCFjD,QAAQ2zJ,WAxCN1wJ,KAyCFjD,QAAQ2zJ,UAAU72J,KAzChBmG,kBA6CCi6B,MAAMozH,WAMvB,CACCpyJ,IAAK,gBACLN,MAAO,WAEH,GAA4B,UAAxBqF,KAAK49D,MAAMlrD,SAAf,CAIA,IACIu7C,EADOjuD,KACK49D,MAAM3H,WAAWn4B,wBAC7B7c,EAAQgtC,EAAKhtC,MACbC,EAAS+sC,EAAK/sC,OAGlB,IANWlhB,KAMD0yJ,YANC1yJ,KAOF0yJ,YAAchtJ,SAASf,cAAc,SAPnC3E,KAQF0yJ,YAAYl0G,aAAa,OAAQ,YAR/Bx+C,KASF0yJ,YAAYl0G,aAAa,KAAM,iBAT7Bx+C,KASqDsvJ,aACjD5pJ,SAASy7E,MAAQz7E,SAASozC,qBAAqB,QAAQ,IAC7DvzC,YAXEvF,KAWe0yJ,aAG1B,IAAIn9F,EAAS,uBAdFv1D,KAcgCsvJ,WAAa,+BAAiCruI,EAAQ,MAAQC,EAAS,oCAAsCD,EAAQ,OAASC,EAAS,qBAdvKlhB,KAiBF0yJ,YAAYC,WAjBV3yJ,KAkBF0yJ,YAAYC,WAAW/2C,QAAUrmD,EAlB/Bv1D,KAoBF0yJ,YAAY75G,UAAY0c,KAGtC,CACCt6D,IAAK,aACLN,MAAO,WACH,IAEIszD,EAFOjuD,KAEK49D,MAAM3H,WAAWn4B,wBAC7B80H,EAAQ3kG,EAAK/sC,OACbsyC,EAJOxzD,KAIMjD,QAAQy2D,MAErBq/F,EAAiC,WAN1B7yJ,KAMSjD,QAAQ+G,MAA2C,mBAN5D9D,KAM2CjD,QAAQ+G,KAC1DgvJ,EAAa,EACbC,EAAUH,EACVI,EAAW,EA+Cf,OA5CIH,IAGIC,EADAt/F,EAAQ,EACKA,EAAQ73D,KAAKyK,IAAIwsJ,EAAOnE,GAExBj7F,GAASo/F,EAAQnE,GAI9Bj7F,EAAQ,EACRu/F,EAAUp3J,KAAKm4B,IAAIg/H,EAAarE,GACzBj7F,EAAQ,EACfu/F,EAAUD,EAAat/F,EAAQ73D,KAAKm4B,IAAIg/H,GAExCC,GAAWp3J,KAAKm4B,IAAI26H,EAAOmE,IAAU,EAAIp/F,GAG7Cs/F,GAAc,GA7BP9yJ,KAiCNizJ,uBAAyBH,EAI1BE,EADAH,GACYpE,EAAOsE,GAAW,GAElBH,EAAQG,GAAW,EAvCxB/yJ,KA2CN+gB,IA3CM/gB,KA2CG49D,MAAM3jC,MAAO,CACvB/Y,OAAQ6xI,EAAU,KAClBpxI,UAAWqxI,EAAW,KACtBvvI,KAA8B,UA9CvBzjB,KA8CI49D,MAAMlrD,SAAuBu7C,EAAKxqC,KAAO,KAAO,IAC3DxC,MAAOgtC,EAAKhtC,MAAQ,OA/CbjhB,KAmDFjD,QAAQ4zJ,cAnDN3wJ,KAoDFjD,QAAQ4zJ,aAAa92J,KApDnBmG,MAwDJ,CACH49D,MAAO,CACH18C,OAAQ6xI,EACRpxI,UAAWqxI,GAEf30G,UAAW4P,KAGpB,CACChzD,IAAK,YACLN,MAAO,WACH,OAAOqF,KAAKkzJ,sBAAuB,IAExC,CACCj4J,IAAK,WACLN,MAAO,SAAkBk9D,GACrB,IAEI5J,EAFOjuD,KAEKi6B,MAAM6D,wBAClBq1H,EAAQllG,EAAKzqC,IACbovI,EAAQ3kG,EAAK/sC,OACbq0C,EAAS,GAGT69F,EAAenlG,EAOnB,GAfWjuD,KASFjD,QAAQkzJ,oBACbmD,EAVOpzJ,KAUajD,QAAQkzJ,kBAAkBnyH,yBAVvC99B,KAYNkzJ,oBAAsBE,EAAaxjG,QAAU,GAAKwjG,EAAa1iI,OAAS,GAAK0iI,EAAa5vI,KAAOirI,GAAQ2E,EAAa3vI,MAAQ+qI,EAG/H32F,GAfO73D,KAeekzJ,oBAA1B,CAKA,IAAIG,EAAY13J,KAAKyK,IAAI,EAAG+sJ,GACxBG,EAAe33J,KAAKyK,IAAI,EAAGwsJ,EAAQO,GACnCI,EAAW53J,KAAKyK,IAAI,GAAI+sJ,GACxBK,EAAe73J,KAAKyK,IAAI,EAAG+sJ,EAAQP,EAAQnE,GAC3CgF,EAAkB93J,KAAKyK,IAAI,EAAGwsJ,GAASO,EAAQP,EAAQnE,IACvDiF,EAAc/3J,KAAKyK,IAAI,GAAI+sJ,EAAQ1E,EAAOmE,GAC1Ce,EAAqB,EAAI,GAAKlF,EAAO0E,IAAU1E,EAAOmE,GAGtDgB,EAAiB,EAgBrB,GAfIhB,EAAQnE,EACRmF,EAAiB,GAAKL,GAAYC,GAAgBZ,EAC3CU,GAAgB7E,EACvBmF,EAAiBN,EAAe7E,EACzBgF,GAAmBhF,IAC1BmF,EAAiBH,EAAkBhF,GAIb,YAvCfzuJ,KAuCFjD,QAAQ+G,MAA4C,kBAvClD9D,KAuCiCjD,QAAQ+G,MAAkD,mBAvC3F9D,KAuC0EjD,QAAQ+G,OACzFyxD,EAAOzO,UAAY,qBACnByO,EAAO7xC,QAAUkwI,GAIK,UA7Cf5zJ,KA6CFjD,QAAQ+G,MAA0C,kBA7ChD9D,KA6C+BjD,QAAQ+G,KAA0B,CACxE,IAAI86C,EAAQ,EA9CL5+C,KA+CEjD,QAAQy2D,MAAQ,EACrB5U,GAhDG5+C,KAgDWjD,QAAQy2D,MAAQogG,EAE9Bh1G,GAlDG5+C,KAkDWjD,QAAQy2D,OAAS,EAAIogG,GAEvCr+F,EAAOzO,UAAY,SAAWlI,EAAQ,uBAI1C,GAA0B,WAxDf5+C,KAwDFjD,QAAQ+G,MAA2C,mBAxDjD9D,KAwDgCjD,QAAQ+G,KAA2B,CAC1E,IAAI+vJ,EAzDG7zJ,KAyDcizJ,uBAAyBU,EAGlB,aA5DrB3zJ,KA4DE49D,MAAMlrD,WACXmhJ,GAAaV,GAGjB59F,EAAOzO,UAAY,iBAAmB+sG,EAAY,QAhE3C7zJ,KAmEN+gB,IAnEM/gB,KAmEG49D,MAAM3jC,MAAOs7B,GAnEhBv1D,KAsEFjD,QAAQ+4D,UAtEN91D,KAuEFjD,QAAQ+4D,SAASj8D,KAvEfmG,KAuE0B,CAC7B8zJ,QAAS7lG,EAETolG,UAAWA,EACXC,aAAcA,EACdC,SAAUA,EACVC,aAAcA,EACdC,gBAAiBA,EACjBC,YAAaA,EAEbE,eAAgBA,EAChBD,mBAAoBA,OAIjC,CACC14J,IAAK,WACLN,MAAO,WACHqF,KAAK+zJ,aACL/zJ,KAAKg0J,oBAINzE,EAlpBI,GAwpBXlsD,EAAS,SAAgBtS,IAGyD,YAAtD,oBAAhBkjE,YAA8B,YAAcpH,EAAQoH,cAA6BljE,aAAiBkjE,YAAcljE,GAA2E,iBAAhD,IAAVA,EAAwB,YAAc87D,EAAQ97D,KAAkC,OAAVA,GAAqC,IAAnBA,EAAM17C,UAA4C,iBAAnB07C,EAAM/6C,YACtQ+6C,EAAQ,CAACA,IASb,IANA,IAAIh0F,EAAU2H,UAAU,GACpB0L,EAAOlM,MAAM5I,UAAU+E,MAAMxG,KAAK6K,UAAW,GAC7CwN,EAAM6+E,EAAM7uF,OACZ+P,EAAI,EACJugC,OAAM,EAEFvgC,EAAIC,EAAKD,IASb,GAR0E,iBAAlD,IAAZlV,EAA0B,YAAc8vJ,EAAQ9vJ,UAA6C,IAAZA,EACpFg0F,EAAM9+E,GAAGo7I,WACVt8D,EAAM9+E,GAAGo7I,SAAW,IAAIkC,EAASx+D,EAAM9+E,GAAIlV,IAExCg0F,EAAM9+E,GAAGo7I,WAEhB76G,EAAMu+C,EAAM9+E,GAAGo7I,SAAStwJ,GAASoM,MAAM4nF,EAAM9+E,GAAGo7I,SAAUj9I,SAE3C,IAARoiC,EACP,OAAOA,EAIf,OAAOu+C,GAEXsS,EAAOl8F,YAAcooJ,EAErB/1J,EAAQ2zJ,QAAU9pD,IACWxpG,KAAKmG,KAAM1G,EAAoB,KAIrD,SAASG,EAAQD,EAASF,GAKjC,IAAI0C,EAAS1C,EAAoB,GAM7Bi1F,EAAUvyF,EAAOilD,uBAAyBjlD,EAAO+8C,6BAA+B/8C,EAAOg9C,0BAG3F,SAAkBr4C,GAChB,IAAIyhF,GAAQ,IAAI3uE,KACZygJ,EAAKv4J,KAAKyK,IAAI,EAAG,IAAMg8E,EAAOrzD,IAC9BolI,EAAMj8H,WAAWv3B,EAAIuzJ,GACzB,OAAOnlI,EAAOqzD,EAAM+xE,GALlBplI,GAAQ,IAAItb,KAYhB,IAAI2gJ,EAASp4J,EAAO48H,sBAAwB58H,EAAOq4J,4BAA8Br4J,EAAOs4J,yBAA2BzzG,aAE/G5kD,SAASX,UAAUJ,OACrBqzF,EAAUA,EAAQrzF,KAAKc,GACvBo4J,EAASA,EAAOl5J,KAAKc,KAGbvC,EAAOD,QAAU+0F,GACnB6lE,OAASA,K;;;;;;ICpkCR,SAAUx6J,GAET,IAAIP,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,WAAjB,EAAOF,IAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAM,SACrC,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,GAnFpD,CAsFC,CAAC,CAAD,CAIH,SAAShC,EAAQD,EAASF,GAKjCG,EAAOD,QAAU,SAAUgzC,GAEE,aAAxB9mC,SAASknJ,YAAqD,gBAAxBlnJ,SAASknJ,WAElDpgH,EAAS3yC,OACC6L,SAASmyB,YAEnBnyB,SAASmyB,YAAY,sBAAsB,WACd,gBAAxBnyB,SAASknJ,YAA8BpgH,EAAS3yC,UAE3C6L,SAASqyB,kBAEnBryB,SAASqyB,iBAAiB,mBAAoByU,KArBtC,CA4BH,SAAS/yC,EAAQD,EAASF,IAGL,SAAS0C,GAErC,IAAI+pD,EAGAA,EADkB,oBAAXjqD,OACDA,YACmB,IAAXE,EACRA,EACiB,oBAATD,KACRA,KAEA,GAGVtC,EAAOD,QAAUusD,IACYlsD,KAAKmG,KAAM1G,EAAoB,KAIrD,SAASG,EAAQD,EAASF,GAKjC,IAEIyP,EAFA8jJ,EAA4B,mBAAXpyJ,QAAoD,WAA3B,EAAOA,OAAO2U,UAAwB,SAAUw2C,GAAO,SAAcA,IAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXnrD,QAAyBmrD,EAAIz+C,cAAgB1M,QAAUmrD,IAAQnrD,OAAOa,UAAY,SAAhG,EAAkHsqD,IAKtQ78C,EAAI,WACH,OAAO/I,KADJ,GAIJ,IAEC+I,EAAIA,GAAK9M,SAAS,cAATA,KAA6B,EAAI6wJ,MAAM,QAC/C,MAAO9jJ,GAEgE,YAAjD,oBAAXlN,OAAyB,YAAc+wJ,EAAQ/wJ,WAAuBiN,EAAIjN,QAOvFrC,EAAOD,QAAUuP,GAIV,SAAStP,EAAQD,EAASF,GAEjCG,EAAOD,QAAUF,EAAoB,IAK9B,SAASG,EAAQD,EAASF,GAKjC,IAEIi7J,EAAgBvH,EAFD1zJ,EAAoB,IAMnCk7J,EAAWxH,EAFD1zJ,EAAoB,IAM9ByzJ,EAAcC,EAFD1zJ,EAAoB,IAMjCm7J,EAAkBzH,EAFD1zJ,EAAoB,KAIzC,SAAS0zJ,EAAuBpnG,GAAO,OAAOA,GAAOA,EAAI9qD,WAAa8qD,EAAM,CAAEunG,QAASvnG,GAGvF4uG,EAASrH,QAAQuH,YAAcF,EAASrH,QAAQuH,aAAeH,EAAcpH,SAE7E,EAAIsH,EAAgBtH,YAGpB,EAAIJ,EAAYI,UAAS,WACG,oBAAbE,UACPA,SAAS3nJ,SAAS+4B,iBAAiB,8BAMpC,SAAShlC,EAAQD,EAASF,GAKjCG,EAAOD,QAAUF,EAAoB,IAI9B,SAASG,EAAQD,EAASF,GAKjCc,OAAOC,eAAeb,EAAS,aAAc,CACzCmB,OAAO,IAGX,IAAIkyJ,EAA4B,mBAAXpyJ,QAAoD,WAA3B,EAAOA,OAAO2U,UAAwB,SAAUw2C,GAAO,SAAcA,IAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAXnrD,QAAyBmrD,EAAIz+C,cAAgB1M,QAAUmrD,IAAQnrD,OAAOa,UAAY,SAAhG,EAAkHsqD,IAElQqoG,EAAe,WAAc,SAASrpJ,EAAiB3H,EAAQwjG,GAAS,IAAK,IAAI/mG,EAAI,EAAGA,EAAI+mG,EAAMv+F,OAAQxI,IAAK,CAAE,IAAI0D,EAAaqjG,EAAM/mG,GAAI0D,EAAW9C,WAAa8C,EAAW9C,aAAc,EAAO8C,EAAWmD,cAAe,EAAU,UAAWnD,IAAYA,EAAWoD,UAAW,GAAMpG,OAAOC,eAAe4C,EAAQG,EAAWnC,IAAKmC,IAAiB,OAAO,SAAUif,EAAa6xI,EAAYC,GAAiJ,OAA9HD,GAAYtpJ,EAAiByX,EAAY/gB,UAAW4yJ,GAAiBC,GAAavpJ,EAAiByX,EAAa8xI,GAAqB9xI,GAA7gB,GAMnB,SAASy9H,IACL95I,KAAK20J,MAAQ,GACb30J,KAAK40J,MAAQ,GAEjB9a,EAASx+I,UAAY,CACjBu5J,QAAS,SAAiB7yG,EAAM5xC,GAC5B,IAAI1W,EAAIsoD,EAAK9/C,OAEb,IADAkO,EAAOlM,MAAM5I,UAAU+E,MAAMxG,KAAKuW,GAC3B1W,KACHsoD,EAAKtoD,GAAGyP,MAAM,KAAMiH,IAG5B+0E,QAAS,WACLnlF,KAAK60J,QAAQ70J,KAAK20J,MAAOjwJ,YAE7Bq1I,OAAQ,WACJ/5I,KAAK60J,QAAQ70J,KAAK40J,MAAOlwJ,YAE7B+E,KAAM,SAAc+iC,GAChBxsC,KAAK20J,MAAMz1J,KAAKstC,IAEpBsoH,KAAM,SAActoH,GAChBxsC,KAAK40J,MAAM11J,KAAKstC,KAIxB,IAAIuoH,EAAK,EACLC,EAAkB,EAClBC,EAAgB,EAChBC,EAAuB,EACvBC,EAAqB,EACrBC,EAAsB,IAAItb,EAC1Bub,EAAoB,IAAIvb,EAExB4a,EAAc,WACd,SAASA,EAAY/pB,EAAK5tI,IAvC9B,SAAyB0yJ,EAAUpzI,GAAe,KAAMozI,aAAoBpzI,GAAgB,MAAM,IAAIle,UAAU,qCAwCxGuxJ,CAAgB1vJ,KAAM00J,GAEX10J,KAEN2qI,IAAMA,EAFA3qI,KAINs1J,gBAAkB,CACnBC,UAAU,EACVj9G,MAAM,EACNk9G,MAAM,EACNC,OAAQ,IACRC,aAAa,EAGbnuH,UAAW,EACXE,QAAS,GAbFznC,KAgBNjD,QAhBMiD,KAgBSmwB,OAAO,GAhBhBnwB,KAgByBs1J,gBAAiBv4J,GAhB1CiD,KAmBN21J,QAnBM31J,KAmBS41J,SAASjrB,GAnBlB3qI,KAsBF21J,UAtBE31J,KAuBF+0J,GAAKA,IAvBH/0J,KAwBF61J,UAxBE71J,KAyBFq6B,QA+vBb,OAxvBA4zH,EAAayG,EAAa,CAAC,CACvBz5J,IAAK,SACLN,MAAO,SAAgBywH,GACnB,IAAIsmC,EAAahtJ,UAWjB,OATA0mH,EAAMA,GAAO,GACbhxH,OAAOuI,KAAK+B,WAAWtC,SAAQ,SAAU1I,GAChCg4J,EAAWh4J,IAGhBU,OAAOuI,KAAK+uJ,EAAWh4J,IAAI0I,SAAQ,SAAUnH,GACzCmwH,EAAInwH,GAAOy2J,EAAWh4J,GAAGuB,SAG1BmwH,IAEZ,CACCnwH,IAAK,WACLN,MAAO,SAAkBgwI,GAmCrB,IA9BQ79H,EAeAgpJ,EACA9zJ,EACA4+B,EAaJm1H,MA9BIjpJ,EA8BmB69H,EA9BL79H,MADL,iEAEuB,KAApBA,EAAM,GAAG5K,SAAgB4K,EAAM,GA8B/CkpJ,EA1BJ,SAAoBC,GAEhB,IACInpJ,EAAQmpJ,EAAMnpJ,MADL,+IAEb,SAAOA,IAASA,EAAM,KAAKA,EAAM,GAsBzBopJ,CAAWvrB,GACnBwrB,GAjBIL,EAiBmBnrB,EAjBG/qI,MAAM,iCAC5BoC,EAAS,GACT4+B,EAAQ,EACZk1H,EAAa1zJ,SAAQ,SAAUxB,GAE3B,IAAIkM,EAAQlM,EAAIkM,MAAM,6BAClBA,GAASA,EAAM,IAAMA,EAAM,KAE3B9K,EAAoB,QAAb8K,EAAM,GAAe,MAAQA,EAAM,IAAMA,EAAM,GACtD8zB,EAAQ,QAGTA,GAAQ5+B,GAOnB,OAAI+zJ,GACA/1J,KAAK8D,KAAO,UACLiyJ,GACAC,GACPh2J,KAAK8D,KAAO,QACLkyJ,KACAG,IACPn2J,KAAK8D,KAAO,QACLqyJ,KAKhB,CACCl7J,IAAK,UACLN,MAAO,WACH,QAASqF,KAAK21J,UAKnB,CACC16J,IAAK,KACLN,MAAO,SAAYV,EAAMuyC,GACrBxsC,KAAKo2J,eAAiBp2J,KAAKo2J,gBAAkB,IAG5Cp2J,KAAKo2J,eAAen8J,KAAU+F,KAAKo2J,eAAen8J,GAAQ,KAAKiF,KAAKstC,KAE1E,CACCvxC,IAAK,MACLN,MAAO,SAAaV,EAAMuyC,GACtB,IAAI6pH,EAAQr2J,KAEPA,KAAKo2J,gBAAmBp2J,KAAKo2J,eAAen8J,KAI5CuyC,EAGDxsC,KAAKo2J,eAAen8J,GAAMmI,SAAQ,SAAUxB,EAAK3F,GACzC2F,IAAQ4rC,IACR6pH,EAAMD,eAAen8J,GAAMgB,IAAO,aAJnC+E,KAAKo2J,eAAen8J,MASpC,CACCgB,IAAK,OACLN,MAAO,SAAcV,GACjB,IAAIq8J,EAASt2J,KAEToQ,EAAO,GAAG/P,MAAMxG,KAAK6K,UAAW,GAChC1E,KAAKo2J,qBAAuD,IAA9Bp2J,KAAKo2J,eAAen8J,IAClD+F,KAAKo2J,eAAen8J,GAAMmI,SAAQ,SAAUxB,GAEpCA,GACAA,EAAIuI,MAAMmtJ,EAAQlmJ,QAKnC,CACCnV,IAAK,OACLN,MAAO,SAAcqZ,GACjB,IAAIjY,EAAOiE,KACNjE,EAAKw6J,SAIQ,YAAdx6J,EAAK+H,MAAsB/H,EAAKw6J,OAAOC,iBAClB,IAAVxiJ,GACPjY,EAAKw6J,OAAOE,OAAOziJ,GAAS,GAE5B0iJ,GAAGC,YAAYC,UAAY76J,EAAKw6J,OAAOM,kBACvC96J,EAAKw6J,OAAOC,aAIF,UAAdz6J,EAAK+H,YACgB,IAAVkQ,GACPjY,EAAKw6J,OAAOO,eAAe9iJ,GAE/BjY,EAAKw6J,OAAOQ,YAAY7a,MAAK,SAAU8a,GAC/BA,GACAj7J,EAAKw6J,OAAOU,WAKN,UAAdl7J,EAAK+H,YACgB,IAAVkQ,IACPjY,EAAKw6J,OAAO9hG,YAAczgD,GAE1BjY,EAAKw6J,OAAOS,QACZj7J,EAAKw6J,OAAOU,WAIzB,CACCh8J,IAAK,QACLN,MAAO,WACH,IAAIoB,EAAOiE,KACNjE,EAAKw6J,SAIQ,YAAdx6J,EAAK+H,MAAsB/H,EAAKw6J,OAAOW,YACnCR,GAAGC,YAAYC,UAAY76J,EAAKw6J,OAAOM,kBACvC96J,EAAKw6J,OAAOW,aAIF,UAAdn7J,EAAK+H,MACL/H,EAAKw6J,OAAOQ,YAAY7a,MAAK,SAAU8a,GAC9BA,GACDj7J,EAAKw6J,OAAOY,WAKN,UAAdp7J,EAAK+H,OACA/H,EAAKw6J,OAAOS,QACbj7J,EAAKw6J,OAAOY,YAIzB,CACCl8J,IAAK,OACLN,MAAO,WACQqF,KACDu2J,SAIQ,YALPv2J,KAKF8D,MALE9D,KAKyBu2J,OAAOf,MALhCx1J,KAMFu2J,OAAOf,OAGE,UATPx1J,KASF8D,MATE9D,KASuBu2J,OAAOa,WAT9Bp3J,KAUFu2J,OAAOa,UAAU,GAGR,UAbPp3J,KAaF8D,OAbE9D,KAcFq3J,OAAOrzF,OAAQ,MAG7B,CACC/oE,IAAK,SACLN,MAAO,WACQqF,KACDu2J,SAIQ,YALPv2J,KAKF8D,MALE9D,KAKyBu2J,OAAOf,MALhCx1J,KAMFu2J,OAAOe,SAGE,UATPt3J,KASF8D,MATE9D,KASuBu2J,OAAOa,WAT9Bp3J,KAUFu2J,OAAOa,UAVLp3J,KAUoBjD,QAAQ04J,QAGrB,UAbPz1J,KAaF8D,OAbE9D,KAcFq3J,OAAOrzF,OAAQ,MAG7B,CACC/oE,IAAK,YACLN,MAAO,WACH,IAAI86J,EAAS/wJ,UAAUxC,OAAS,QAAsBvE,IAAjB+G,UAAU,IAAmBA,UAAU,GAExE3I,EAAOiE,KACNjE,EAAKw6J,QAAWd,IAIH,YAAd15J,EAAK+H,MAAsB/H,EAAKw6J,OAAOa,WACvCr7J,EAAKw6J,OAAOa,UAAU3B,GAGR,UAAd15J,EAAK+H,MAAoB/H,EAAKw6J,OAAOa,WACrCr7J,EAAKw6J,OAAOa,UAAU3B,GAGR,UAAd15J,EAAK+H,OACL/H,EAAKs7J,OAAO5B,OAASA,EAAS,QAGvC,CACCx6J,IAAK,YACLN,MAAO,SAAmB6xC,GACXxsC,KACDu2J,QAKQ,YANPv2J,KAMF8D,MANE9D,KAMyBu2J,OAAOgB,WACvC/qH,EAPOxsC,KAOOu2J,OAAOgB,aAGP,UAVPv3J,KAUF8D,MAVE9D,KAUuBu2J,OAAOgB,WAV9Bv3J,KAWFu2J,OAAOgB,YAAYrb,MAAK,SAAUuZ,GACnCjpH,EAASipH,MAIC,UAhBPz1J,KAgBF8D,MACL0oC,EAA8B,IAjBvBxsC,KAiBOq3J,OAAO5B,SAfrBjpH,GAAS,KAkBlB,CACCvxC,IAAK,WACLN,MAAO,SAAkB6xC,GACVxsC,KACDu2J,QAKQ,YANPv2J,KAMF8D,MANE9D,KAMyBu2J,OAAOiB,SACvChrH,EAPOxsC,KAOOu2J,OAAOiB,WAGP,UAVPx3J,KAUF8D,MAVE9D,KAUuBu2J,OAAOgB,WAV9Bv3J,KAWFu2J,OAAOgB,YAAYrb,MAAK,SAAUuZ,GACnCjpH,IAAWipH,MAID,UAhBPz1J,KAgBF8D,MACL0oC,EAjBOxsC,KAiBOq3J,OAAOrzF,QAfrBx3B,EAAS,QAkBlB,CACCvxC,IAAK,cACLN,MAAO,SAAqB6xC,GACxB,IAAIzwC,EAAOiE,KAEX,GAAIjE,EAAK07J,WACLjrH,EAASzwC,EAAK07J,gBADlB,CAKA,GAAkB,YAAd17J,EAAK+H,KAAoB,CACzB,IAAI4zJ,EAAiB,CAAC,gBAAiB,YAAa,YAAa,KAC7Dt0G,EAAO,EAEPu0G,EAAU,IAAIC,MAClBD,EAAQ5xB,OAAS,WAE6B,OAArC/lI,KAAKgsI,cAAgBhsI,KAAKihB,QAAkBmiC,IAASs0G,EAAex1J,OAAS,GAE9EnG,EAAK07J,WAAa,8BAAgC17J,EAAK45J,QAAU,IAAM+B,EAAet0G,GAAQ,OAC9F5W,EAASzwC,EAAK07J,cAGdr0G,IACApjD,KAAKwF,IAAM,8BAAgCzJ,EAAK45J,QAAU,IAAM+B,EAAet0G,GAAQ,SAG/Fu0G,EAAQnyJ,IAAM,8BAAgCzJ,EAAK45J,QAAU,IAAM+B,EAAet0G,GAAQ,OAG9F,GAAkB,UAAdrnD,EAAK+H,KAAkB,CACvB,IAAIyqF,EAAU,IAAIspE,eAClBtpE,EAAQ5oF,KAAK,MAAO,kCAAoC5J,EAAK45J,QAAU,SAAS,GAChFpnE,EAAQupE,mBAAqB,WACzB,GAAwB,IAApB93J,KAAK4sJ,YACD5sJ,KAAK+3J,QAAU,KAAO/3J,KAAK+3J,OAAS,IAAK,CAEzC,IAAIl/F,EAAW5qD,KAAK89G,MAAM/rH,KAAKg4J,cAC/Bj8J,EAAK07J,WAAa5+F,EAAS,GAAGo/F,gBAC9BzrH,EAASzwC,EAAK07J,cAM1BlpE,EAAQ2pE,OACR3pE,EAAU,SAMnB,CACCtzF,IAAK,YACLN,MAAO,SAAmB6xC,GACtBxsC,KAAKm4J,SAAS3rH,KAEnB,CACCvxC,IAAK,WACLN,MAAO,SAAkB6xC,GACrB,IAAIzwC,EAAOiE,KAGPjE,EAAKs7J,OACL7qH,EAASzwC,EAAKs7J,QAKlBt7J,EAAKq8J,YAAW,WACZ,IAAIC,OAAY,EAOhB,GANKt8J,EAAKs7J,UACNgB,EAAY3yJ,SAASf,cAAc,QACzBU,MAAMC,QAAU,QAIZ,YAAdvJ,EAAK+H,KAAoB,CACzB/H,EAAKu8J,cAAgB,GACrBv8J,EAAKu8J,cAAcC,QAAUx8J,EAAK45J,QAClC55J,EAAKu8J,cAAcE,WAAa,CAC5BC,SAAU,EACVroB,IAAK,EACLmlB,SAAU,EAEVmD,YAAa,GAIZ38J,EAAKgB,QAAQ24J,cACd35J,EAAKu8J,cAAcE,WAAWG,eAAiB,EAC/C58J,EAAKu8J,cAAcE,WAAWI,eAAiB,EAC/C78J,EAAKu8J,cAAcE,WAAW5jB,SAAW,EACzC74I,EAAKu8J,cAAcE,WAAWK,SAAW,EACzC98J,EAAKu8J,cAAcE,WAAWM,UAAY,GAI9C,IAAIC,OAAY,EACZC,OAAqB,EACzBj9J,EAAKu8J,cAAcnkE,OAAS,CACxB8kE,QAAS,SAAiBjwJ,GAElBjN,EAAKgB,QAAQy4J,KACbxsJ,EAAE/L,OAAOu4J,OACFz5J,EAAKgB,QAAQ04J,QACpBzsJ,EAAE/L,OAAOm6J,UAAUr7J,EAAKgB,QAAQ04J,QAIhC15J,EAAKgB,QAAQw4J,UACbx5J,EAAKk7J,KAAKl7J,EAAKgB,QAAQwqC,WAE3BxrC,EAAKm9J,KAAK,QAASlwJ,GAGnB8rD,aAAY,WACR/4D,EAAKw7J,WAAU,SAAU9B,GACjB15J,EAAKgB,QAAQ04J,SAAWA,IACxB15J,EAAKgB,QAAQ04J,OAASA,EACtB15J,EAAKm9J,KAAK,eAAgBlwJ,SAGnC,MAEPmwJ,cAAe,SAAuBnwJ,GAE9BjN,EAAKgB,QAAQu7C,MAAQtvC,EAAEjB,OAAS2uJ,GAAGC,YAAYyC,OAC/Cr9J,EAAKk7J,KAAKl7J,EAAKgB,QAAQwqC,WAEtBwxH,GAAa/vJ,EAAEjB,OAAS2uJ,GAAGC,YAAYC,UACxCmC,EAAY,EACZh9J,EAAKm9J,KAAK,UAAWlwJ,IAErBA,EAAEjB,OAAS2uJ,GAAGC,YAAYC,SAC1B76J,EAAKm9J,KAAK,OAAQlwJ,GAElBA,EAAEjB,OAAS2uJ,GAAGC,YAAY0C,QAC1Bt9J,EAAKm9J,KAAK,QAASlwJ,GAEnBA,EAAEjB,OAAS2uJ,GAAGC,YAAYyC,OAC1Br9J,EAAKm9J,KAAK,QAASlwJ,GAInBA,EAAEjB,OAAS2uJ,GAAGC,YAAYC,QAC1BoC,EAAqBlkG,aAAY,WAC7B/4D,EAAKm9J,KAAK,aAAclwJ,GAGpBjN,EAAKgB,QAAQ0qC,SAAW1rC,EAAKw6J,OAAO+C,kBAAoBv9J,EAAKgB,QAAQ0qC,UACjE1rC,EAAKgB,QAAQu7C,KACbv8C,EAAKk7J,KAAKl7J,EAAKgB,QAAQwqC,WAEvBxrC,EAAKo7J,WAGd,KAEH5iG,cAAcykG,KAK1B,IAAIO,GAAax9J,EAAKs7J,OACtB,GAAIkC,EAAW,CACX,IAAIpvG,EAAMzkD,SAASf,cAAc,OACjCwlD,EAAI3L,aAAa,KAAMziD,EAAKy9J,UAC5BnB,EAAU9yJ,YAAY4kD,GACtBzkD,SAASq4B,KAAKx4B,YAAY8yJ,GAE9Bt8J,EAAKw6J,OAASx6J,EAAKw6J,QAAU,IAAIz6J,OAAO46J,GAAG+C,OAAO19J,EAAKy9J,SAAUz9J,EAAKu8J,eAClEiB,IACAx9J,EAAKs7J,OAAS3xJ,SAASi3G,eAAe5gH,EAAKy9J,UAG3Cz9J,EAAK29J,WAAa77I,SAAS9hB,EAAKs7J,OAAOj5G,aAAa,SAAU,KAAO,KACrEriD,EAAK49J,YAAc97I,SAAS9hB,EAAKs7J,OAAOj5G,aAAa,UAAW,KAAO,KAK/E,GAAkB,UAAdriD,EAAK+H,KAAkB,CACvB/H,EAAKu8J,cAAgB,GAErBv8J,EAAKu8J,eAAiB,aAAev8J,EAAKy9J,SAC1Cz9J,EAAKu8J,eAAiB,eACtBv8J,EAAKu8J,eAAiB,iBAGjBv8J,EAAKgB,QAAQ24J,cACd35J,EAAKu8J,eAAiB,wCAI1Bv8J,EAAKu8J,eAAiB,cAAgBv8J,EAAKgB,QAAQw4J,SAAW,IAAM,KAGpEx5J,EAAKu8J,eAAiB,UAAYv8J,EAAKgB,QAAQu7C,KAAO,EAAI,GAErDv8C,EAAKs7J,SACNt7J,EAAKs7J,OAAS3xJ,SAASf,cAAc,UACrC5I,EAAKs7J,OAAO74G,aAAa,KAAMziD,EAAKy9J,UACpCz9J,EAAKs7J,OAAO74G,aAAa,MAAO,kCAAoCziD,EAAK45J,QAAU,IAAM55J,EAAKu8J,eAC9Fv8J,EAAKs7J,OAAO74G,aAAa,cAAe,KACxC65G,EAAU9yJ,YAAYxJ,EAAKs7J,QAC3B3xJ,SAASq4B,KAAKx4B,YAAY8yJ,IAG9Bt8J,EAAKw6J,OAASx6J,EAAKw6J,QAAU,IAAIP,MAAMyD,OAAO19J,EAAKs7J,QAGnDt7J,EAAKw6J,OAAOqD,gBAAgB1d,MAAK,SAAUj7H,GACvCllB,EAAK29J,WAAaz4I,GAAS,QAE/BllB,EAAKw6J,OAAOsD,iBAAiB3d,MAAK,SAAUh7H,GACxCnlB,EAAK49J,YAAcz4I,GAAU,OAI7BnlB,EAAKgB,QAAQwqC,WAAaxrC,EAAKgB,QAAQw4J,UACvCx5J,EAAKw6J,OAAOO,eAAe/6J,EAAKgB,QAAQwqC,WAIxCxrC,EAAKgB,QAAQy4J,KACbz5J,EAAKw6J,OAAOa,UAAU,GACfr7J,EAAKgB,QAAQ04J,QACpB15J,EAAKw6J,OAAOa,UAAUr7J,EAAKgB,QAAQ04J,QAGvC,IAAIqE,OAAY,EAChB/9J,EAAKw6J,OAAOzxI,GAAG,cAAc,SAAU9b,GAC9B8wJ,IACD/9J,EAAKm9J,KAAK,UAAWlwJ,GACrB8wJ,EAAY,GAGhB/9J,EAAKm9J,KAAK,aAAclwJ,GAGpBjN,EAAKgB,QAAQ0qC,SACT1rC,EAAKgB,QAAQ0qC,SAAWz+B,EAAE+wJ,SAAWh+J,EAAKgB,QAAQ0qC,UAC9C1rC,EAAKgB,QAAQu7C,KACbv8C,EAAKk7J,KAAKl7J,EAAKgB,QAAQwqC,WAEvBxrC,EAAKo7J,YAKrBp7J,EAAKw6J,OAAOzxI,GAAG,QAAQ,SAAU9b,GAC7BjN,EAAKm9J,KAAK,OAAQlwJ,GAGdjN,EAAKgB,QAAQwqC,WAA2B,IAAdv+B,EAAE+wJ,SAC5Bh+J,EAAKk7J,KAAKl7J,EAAKgB,QAAQwqC,cAG/BxrC,EAAKw6J,OAAOzxI,GAAG,SAAS,SAAU9b,GAC9BjN,EAAKm9J,KAAK,QAASlwJ,MAEvBjN,EAAKw6J,OAAOzxI,GAAG,SAAS,SAAU9b,GAC9BjN,EAAKm9J,KAAK,QAASlwJ,MAEvBjN,EAAKw6J,OAAOzxI,GAAG,UAAU,SAAU9b,GAC/BjN,EAAKm9J,KAAK,QAASlwJ,MAEvBjN,EAAKw6J,OAAOzxI,GAAG,gBAAgB,SAAU9b,GACrCjN,EAAKm9J,KAAK,eAAgBlwJ,MAWlC,GAAkB,UAAdjN,EAAK+H,KAAkB,CAClB/H,EAAKs7J,SACNt7J,EAAKs7J,OAAS3xJ,SAASf,cAAc,SAGjC5I,EAAKgB,QAAQ24J,cACb35J,EAAKs7J,OAAOziB,UAAW,GAIvB74I,EAAKgB,QAAQy4J,KACbz5J,EAAKs7J,OAAOrzF,OAAQ,EACbjoE,EAAKs7J,OAAO5B,SACnB15J,EAAKs7J,OAAO5B,OAAS15J,EAAKgB,QAAQ04J,OAAS,KAI3C15J,EAAKgB,QAAQu7C,OACbv8C,EAAKs7J,OAAO/+G,MAAO,GAIvBv8C,EAAKs7J,OAAO74G,aAAa,cAAe,IACxCziD,EAAKs7J,OAAO74G,aAAa,qBAAsB,IAE/CziD,EAAKs7J,OAAO74G,aAAa,KAAMziD,EAAKy9J,UACpCnB,EAAU9yJ,YAAYxJ,EAAKs7J,QAC3B3xJ,SAASq4B,KAAKx4B,YAAY8yJ,GAE1Bj+J,OAAOuI,KAAK5G,EAAK45J,SAASvzJ,SAAQ,SAAUnH,GAnCpD,IAA0BioB,EAAS1d,EAAK1B,EAChC9G,EADkBkmB,EAoCGnnB,EAAKs7J,OApCC7xJ,EAoCOzJ,EAAK45J,QAAQ16J,GApCf6I,EAoCqB,SAAW7I,GAnChE+B,EAAS0I,SAASf,cAAc,WAC7Ba,IAAMA,EACbxI,EAAO8G,KAAOA,EACdof,EAAQ3d,YAAYvI,OAoCpBjB,EAAKw6J,OAASx6J,EAAKw6J,QAAUx6J,EAAKs7J,OAElC,IAAI2C,OAAa,EACjBj+J,EAAKw6J,OAAOx+H,iBAAiB,WAAW,SAAU/uB,GACzCgxJ,GACDj+J,EAAKm9J,KAAK,UAAWlwJ,GAEzBgxJ,EAAa,KAEjBj+J,EAAKw6J,OAAOx+H,iBAAiB,cAAc,SAAU/uB,GACjDjN,EAAKm9J,KAAK,aAAclwJ,GAGpBjN,EAAKgB,QAAQ0qC,SACT1rC,EAAKgB,QAAQ0qC,SAAWznC,KAAKy0D,aAAe14D,EAAKgB,QAAQ0qC,UACrD1rC,EAAKgB,QAAQu7C,KACbv8C,EAAKk7J,KAAKl7J,EAAKgB,QAAQwqC,WAEvBxrC,EAAKo7J,YAKrBp7J,EAAKw6J,OAAOx+H,iBAAiB,QAAQ,SAAU/uB,GAC3CjN,EAAKm9J,KAAK,OAAQlwJ,MAEtBjN,EAAKw6J,OAAOx+H,iBAAiB,SAAS,SAAU/uB,GAC5CjN,EAAKm9J,KAAK,QAASlwJ,MAEvBjN,EAAKw6J,OAAOx+H,iBAAiB,SAAS,SAAU/uB,GAC5CjN,EAAKm9J,KAAK,QAASlwJ,MAEvBjN,EAAKw6J,OAAOx+H,iBAAiB,kBAAkB,WAE3Ch8B,EAAK29J,WAAa15J,KAAK05J,YAAc,KACrC39J,EAAK49J,YAAc35J,KAAK25J,aAAe,IAEvC59J,EAAKm9J,KAAK,SAGNn9J,EAAKgB,QAAQw4J,UACbx5J,EAAKk7J,KAAKl7J,EAAKgB,QAAQwqC,cAG/BxrC,EAAKw6J,OAAOx+H,iBAAiB,gBAAgB,SAAU/uB,GACnDjN,EAAKw7J,WAAU,SAAU9B,GACrB15J,EAAKgB,QAAQ04J,OAASA,KAE1B15J,EAAKm9J,KAAK,eAAgBlwJ,MAIlCwjC,EAASzwC,EAAKs7J,aAGvB,CACCp8J,IAAK,OACLN,MAAO,WACQqF,KAENw5J,SAAW,eAFLx5J,KAE2B+0J,KAE3C,CACC95J,IAAK,UACLN,MAAO,WAGH,IAAIq6J,IAAmBC,EAAvB,CAIA,IAAIzvJ,EAAM,GAcV,GAXkB,YATPxF,KASF8D,MAAuBkxJ,IAC5BA,EAAkB,EAClBxvJ,EAAM,sCAIQ,UAfPxF,KAeF8D,MAAqBmxJ,IAC1BA,EAAgB,EAChBzvJ,EAAM,0CAGLA,EAAL,CAKA,IAAIwJ,EAAMtJ,SAASf,cAAc,UAC7Bw8E,EAAOz7E,SAASozC,qBAAqB,QAAQ,GACjD9pC,EAAIxJ,IAAMA,EAEV27E,EAAK57E,YAAYyJ,GAEjBmyE,EAAO,KACPnyE,EAAM,SAEX,CACC/T,IAAK,aACLN,MAAO,SAAoB6xC,GA0BvB,GAtBkB,YAHPxsC,KAGF8D,OAEc,oBAAP4yJ,IAAoC,IAAdA,GAAG/wB,QAAkBuvB,EAUgB,YAA7C,oBAAPwB,GAAqB,YAAc7J,EAAQ6J,MAAmC,IAAdA,GAAG/wB,OAClFn5F,IAEA4oH,EAAoB3rJ,MAAK,WACrB+iC,QAZJ0oH,EAAuB,EAGvBp5J,OAAOm+J,wBAA0B,WAC7Bn+J,OAAOm+J,wBAA0B,KACjC7E,EAAoBjwE,QAAQ,QAC5B34C,OAYM,UAzBPxsC,KAyBF8D,KACL,GAAqB,oBAAVkyJ,OAA0Bb,EAST,oBAAVa,MACdxpH,IAEA6oH,EAAkB5rJ,MAAK,WACnB+iC,WAbiD,CACrD2oH,EAAqB,EACrB,IAAI+E,EAAgBplG,aAAY,WACP,oBAAVkhG,QACPzhG,cAAc2lG,GACd7E,EAAkBlwE,QAAQ,QAC1B34C,OAEL,IAWO,UA7CPxsC,KA6CF8D,MACL0oC,QAKLkoH,EA5xBO,GA+xBlBl7J,EAAQ2zJ,QAAUuH,GAIX,SAASj7J,EAAQD,EAASF,GAKjCc,OAAOC,eAAeb,EAAS,aAAc,CACzCmB,OAAO,IAEXnB,EAAQ2zJ,QAYR,WACI,IAAIE,EAAW3oJ,UAAUxC,OAAS,QAAsBvE,IAAjB+G,UAAU,GAAmBA,UAAU,GAAK8vJ,EAASrH,QAAQE,SAEpG,QAAwB,IAAbA,EACP,OAGJ,IAAIkC,EAAWlC,EAASlmJ,YAGpBgzJ,EAAU5K,EAASj0J,UAAU++B,KACjCk1H,EAASj0J,UAAU++B,KAAO,WACtB,IAAIt+B,EAAOiE,KAEXm6J,EAAQhxJ,MAAMpN,GAEVA,EAAKq+J,QAAUr+J,EAAKgB,QAAQozJ,gBAC5Bp0J,EAAKq+J,MAAMjC,UAAS,SAAUiC,GAC1B,IAAIp7F,EAAUo7F,EAAMn/G,WACpBl/C,EAAKglB,IAAIq5I,EAAO,CACZ1nJ,SAAU3W,EAAK6hE,MAAMlrD,SACrB8Q,IAAK,MACLC,KAAM,MACNiN,MAAO,MACPk/B,OAAQ,MACR3uC,MAAO,OACPC,OAAQ,OACRwkF,SAAU,OACVhhF,UAAW,OACXyqB,OAAQ,EACR6Z,QAAS,IAEbjtD,EAAKs7J,OAAS+C,EACdr+J,EAAK6hE,MAAM3H,WAAW1wD,YAAY60J,GAGlCp7F,EAAQ/jB,WAAWyE,YAAYsf,OAM3C,IAAIq7F,EAAgB9K,EAASj0J,UAAUy4J,WACvCxE,EAASj0J,UAAUy4J,WAAa,WAC5B,IACIuG,EAAYD,EAAclxJ,MADnBnJ,MAEPwkE,IAFOxkE,KAEK49D,MAAM3jC,OAFXj6B,KAEwB49D,MAAM3jC,MAAM+b,SAE/C,GAAIskH,GAJOt6J,KAIWo6J,OAAS51F,IAAkB,WAATA,GAA8B,UAATA,GAAmB,CAC5E,IAAIluB,EAAIgkH,EAAU18F,MAAM18C,OACpBs1B,EAAIF,EANDt2C,KAMU49D,MAAM38C,MANhBjhB,KAM6B49D,MAAM18C,OACtCq5I,GAAMD,EAAUj8G,UAAUp9B,MAAQu1B,GAAK,EACvCgkH,EAAKF,EAAU18F,MAAMj8C,UAErB24I,EAAUj8G,UAAUp9B,MAAQu1B,IAE5BF,GADAE,EAAI8jH,EAAUj8G,UAAUp9B,OAXrBjhB,KAYU49D,MAAM18C,OAZhBlhB,KAY8B49D,MAAM38C,MACvCs5I,EAAK,EACLC,IAAOF,EAAU18F,MAAM18C,OAASo1B,GAAK,GAI5B,WAATkuB,IACAluB,GAAK,IACLkkH,GAAM,KApBHx6J,KAuBF+gB,IAvBE/gB,KAuBOq3J,OAAQ,CAClBp2I,MAAOu1B,EAAI,KACX/Q,WAAY80H,EAAK,KACjBr5I,OAAQo1B,EAAI,KACZ30B,UAAW64I,EAAK,OAIxB,OAAOF,GAIX,IAAIG,EAAalL,EAASj0J,UAAUk2J,QACpCjC,EAASj0J,UAAUk2J,QAAU,WACzB,IACIkJ,EAAgBD,EAAWtxJ,MADpBnJ,MAOX,OAPWA,KAGDjD,QAAQszJ,WAHPrwJ,KAIFjD,QAAQszJ,SAJNrwJ,KAIsBi6B,MAAMmkB,aAAa,wBAA0B,MAJnEp+C,KAOFjD,QAAQszJ,UAPNrwJ,KAQF26J,qBAAuBD,GACrB,GAGJA,GAGX,IAAIE,EAAqBrL,EAASj0J,UAAUm2J,gBAC5ClC,EAASj0J,UAAUm2J,gBAAkB,WACjC,IAAI11J,EAAOiE,KACP06J,EAAgBE,EAAmBzxJ,MAAMpN,GAE7C,IAAKA,EAAKgB,QAAQszJ,SACd,OAAOqK,EAGX,IAAIN,EAAQ,IAAI7F,EAAcpH,QAAQpxJ,EAAKgB,QAAQszJ,SAAU,CACzDkF,UAAU,EACVj9G,MAAM,EACNo9G,aAAa,EACbnuH,UAAWxrC,EAAKgB,QAAQuzJ,gBAAkB,EAC1C7oH,QAAS1rC,EAAKgB,QAAQwzJ,cAAgB,EACtCiF,KAAMz5J,EAAKgB,QAAQyzJ,YAAc,EAAI,EACrCiF,OAAQ15J,EAAKgB,QAAQyzJ,aAAe,IAGxC,GAAI4J,EAAMphI,UAEN,GAAK0hI,GA0DD,GAtCAN,EAAMt1I,GAAG,SAAS,WACd,GAAI/oB,EAAKgB,QAAQ0zJ,qBAAsB,CACnC,IAAIoK,EAAc9+J,EAAK+5D,SACvB/5D,EAAK+5D,SAAW,WACZ+kG,EAAY1xJ,MAAMpN,GACdA,EAAK++J,YACLV,EAAMnD,OAENmD,EAAMjD,cAIdiD,EAAMnD,UAIdmD,EAAMt1I,GAAG,WAAW,WAChB/oB,EAAK6hE,MAAMm9F,cAAgBh/J,EAAK6hE,MAAM3jC,MACtCl+B,EAAK6hE,MAAM3jC,MAAQl+B,EAAKs7J,OAGxBt7J,EAAK6hE,MAAM38C,MAAQllB,EAAKq+J,MAAMV,YAAc,KAC5C39J,EAAK6hE,MAAM18C,OAASnlB,EAAKq+J,MAAMT,aAAe,IAC9C59J,EAAKgB,QAAQi+J,SAAWj/J,EAAK6hE,MAAM38C,MACnCllB,EAAKgB,QAAQk+J,UAAYl/J,EAAK6hE,MAAM18C,OACpCnlB,EAAKg4J,aACLh4J,EAAKi4J,gBACLj4J,EAAK+5D,WAGD/5D,EAAK6hE,MAAMm9F,gBACXh/J,EAAK6hE,MAAMm9F,cAAc11J,MAAMC,QAAU,WAIjDvJ,EAAKq+J,MAAQA,GAGRr+J,EAAK4+J,qBACN,MAAmB,UAAfP,EAAMt2J,MACNs2J,EAAMc,aAAY,SAAUvwB,GACxB5uI,EAAK6hE,MAAMp4D,IAAMmlI,EACjB5uI,EAAKs+B,WAGF,IAIXt+B,EAAK6hE,MAAMp4D,IAAM,kFACV,QArENzJ,EAAK4+J,sBACNP,EAAMc,aAAY,SAAUvwB,GAExB,IAAIsnB,EAAWl2J,EAAKk+B,MAAMmkB,aAAa,SACnC6zG,GACAl2J,EAAKk+B,MAAMukB,aAAa,gCAAiCyzG,GAI7Dl2J,EAAKglB,IAAIhlB,EAAKk+B,MAAO,CACjB,mBAAoB,QAAU0wG,EAAM,KACpC,sBAAuB,SACvB,kBAAmB,aA8DvC,OAAO+vB,GAIX,IAAIS,EAAa5L,EAASj0J,UAAUwtB,QACpCymI,EAASj0J,UAAUwtB,QAAU,WACd9oB,KAEF49D,MAAMm9F,gBAFJ/6J,KAGF49D,MAAM3jC,MAHJj6B,KAGiB49D,MAAMm9F,qBAHvB/6J,KAIK49D,MAAMm9F,eAGtBI,EAAWhyJ,MAPAnJ,QAhNnB,IAEIu0J,EAAgBvH,EAFD1zJ,EAAoB,IAMnCk7J,EAAWxH,EAFD1zJ,EAAoB,IAIlC,SAAS0zJ,EAAuBpnG,GAAO,OAAOA,GAAOA,EAAI9qD,WAAa8qD,EAAM,CAAEunG,QAASvnG,O,cCxkChE,WAGvB,IAAIw1G,EAAM,6BACNC,EAAY,mDACZC,EAA2B,oBAAV1D,MAAwB,CAACvyJ,MAAO,CAAC,kBAAmB,IAAM,IAAIuyJ,MAC/E2D,EAAoB,eAAgBD,EAAQj2J,MAC5Cm2J,EAAyB,oBAAqBF,EAAQj2J,MACtDo2J,EAAc,oBAAqBH,EAAQj2J,MAC3Cq2J,EAAmD,iBAAvBJ,EAAQK,WACpCC,EAAqBN,EAAQl9G,aAC7By9G,EAAqBP,EAAQ98G,aAC7Bs9G,GAAkB,EAoCtB,SAASp+F,EAAepW,EAAKrmC,EAAOC,GAEnC,IAAIW,EAnCI,wEAmC4BZ,GAAS,GAnCwC,cAmCrCC,GAAU,GAnC8C,iBAsCpG06I,EAAmB/hK,KAAKytD,EAAK,SAAWzlC,GAC3Cg6I,EAAmBhiK,KAAKytD,EAAK,MAAOzlC,GAItC,SAASk6I,EAAaz0G,EAAK9a,GAGtB8a,EAAI0kF,aACPx/F,EAAS8a,GAETpvB,WAAW6jI,EAAc,IAAKz0G,EAAK9a,GAIrC,SAASwvH,EAAOx1J,GACf,IAAInB,EA/BL,SAAkBmB,GAIjB,IAHA,IACIy1J,EADA52J,EAAQ64C,iBAAiB13C,GAAI2zB,WAE7BsmE,EAAQ,GACgC,QAApCw7D,EAASZ,EAAUn/J,KAAKmJ,KAC/Bo7F,EAAMw7D,EAAO,IAAMA,EAAO,GAE3B,OAAOx7D,EAwBKjE,CAASh2F,GACjB01J,EAAM11J,EAAG40J,GAIb,GAHA/1J,EAAM,cAAgBA,EAAM,eAAiB,QAGxC62J,EAAI50G,IAAK,CAEb,GAA4B,SAAxBjiD,EAAM,cACT,OAID,IACE62J,EAAIC,UACLZ,IACCl2J,EAAM,mBAEP,OAKF,IAAK62J,EAAI50G,IAAK,CACb40G,EAAI50G,IAAM,IAAIswG,MAAMpxJ,EAAGya,MAAOza,EAAG0a,QACjCg7I,EAAI50G,IAAI80G,OAASR,EAAmB/hK,KAAK2M,EAAI,oBAAsBA,EAAG41J,OACtEF,EAAI50G,IAAI9hD,IAAMo2J,EAAmB/hK,KAAK2M,EAAI,iBAAmBA,EAAGhB,IAIhEq2J,EAAmBhiK,KAAK2M,EAAI,eAAgBA,EAAGhB,KAC3CgB,EAAG41J,QACNP,EAAmBhiK,KAAK2M,EAAI,kBAAmBA,EAAG41J,QAGnD1+F,EAAel3D,EAAIA,EAAGwlI,cAAgBxlI,EAAGya,MAAOza,EAAG61J,eAAiB71J,EAAG0a,QAGnE1a,EAAG41J,SACN51J,EAAG41J,OAAS,IAEb,KAiCF,SAAuB51J,GACtB,IAAIk9F,EAAc,CACjBnpG,IAAK,SAAairB,GACjB,OAAOhf,EAAG40J,GAAK9zG,IAAI9hC,GAAc,QAElCviB,IAAK,SAAatI,EAAO6qB,GAIxB,OAHAhf,EAAG40J,GAAK9zG,IAAI9hC,GAAc,OAAS7qB,EACnCkhK,EAAmBhiK,KAAK2M,EAAK,YAAcgf,EAAO7qB,GAClDqhK,EAAOx1J,GACA7L,IAGTP,OAAOC,eAAemM,EAAI,MAAOk9F,GACjCtpG,OAAOC,eAAemM,EAAI,aAAc,CACvCjM,IAAK,WAAc,OAAOmpG,EAAYnpG,IAAI,iBAE3CH,OAAOC,eAAemM,EAAI,SAAU,CACnCjM,IAAK,WAAc,OAAOmpG,EAAYnpG,IAAI,WAC1C0I,IAAK,SAAUq5J,GAAM,OAAO54D,EAAYzgG,IAAIq5J,EAAI,aAlD/CC,CAAc/1J,GACb,MAAOk/D,GACJ5pE,OAAO8hC,SACVA,QAAQqvF,KAAK,oCA/FjB,SAA4BzmH,GAC3B,GAAIA,EAAG41J,SAAWV,GAAsB5/J,OAAO0gK,YAAa,CAC3D,IAAIC,EAAK3gK,OAAO0gK,YAAYv5I,EAEvBzc,EAAGi2J,EAAG1hK,KAAQyL,EAAGi2J,EAAG1hK,IAAI2hK,QAE5BD,EAAGE,QAAQn2J,EAAI,CAACo2J,UAAU,IAGtBp2J,EAAGi2J,EAAG1hK,IAAI8hK,SAEdr2J,EAAGi2J,EAAG1hK,IAAI+hK,WAAY,EACtBL,EAAGE,QAAQn2J,EAAI,CAACo2J,UAAU,KAI3Bp2J,EAAGm1J,WAAan1J,EAAGi2J,EAAG1hK,IAAI8hK,QAAUr2J,EAAGhB,KAoFxCu3J,CAAmBb,EAAI50G,KAEvB9gD,EAAGnB,MAAM23J,gBAAkB,SAAad,EAAI50G,IAAIq0G,YAAcO,EAAI50G,IAAI9hD,KAAK4C,QAAQ,KAAM,OAAU,KACnG5B,EAAGnB,MAAM+2C,mBAAqB/2C,EAAM,oBAAsB,SAC1DmB,EAAGnB,MAAM43J,iBAAmB,YAC5Bz2J,EAAGnB,MAAM63J,iBAAmB,cAExB,aAAaj0J,KAAK5D,EAAM,eAC3B02J,EAAaG,EAAI50G,KAAK,WACjB40G,EAAI50G,IAAI0kF,aAAexlI,EAAGya,OAASi7I,EAAI50G,IAAI+0G,cAAgB71J,EAAG0a,OACjE1a,EAAGnB,MAAM83J,eAAiB,UAE1B32J,EAAGnB,MAAM83J,eAAiB,UAI5B32J,EAAGnB,MAAM83J,eAAiB93J,EAAM,cAAc+C,QAAQ,OAAQ,QAAQA,QAAQ,OAAQ,aAGvF2zJ,EAAaG,EAAI50G,KAAK,SAAUA,GAC/BoW,EAAel3D,EAAI8gD,EAAI0kF,aAAc1kF,EAAI+0G,kBAyC3C,SAASpkB,EAAImlB,EAAMr9G,GAClB,IAAIs9G,GAAiBvB,IAAoBsB,EAIzC,GAHAr9G,EAAOA,GAAQ,GACfq9G,EAAOA,GAAQ,MAEV5B,IAA2Bz7G,EAAKo8G,WAAcV,EAClD,OAAO,EAIK,QAAT2B,EACHA,EAAO13J,SAASozC,qBAAqB,OACX,iBAATskH,EACjBA,EAAO13J,SAAS+4B,iBAAiB2+H,GACrB,WAAYA,IACxBA,EAAO,CAACA,IAIT,IAAK,IAAI1jK,EAAI,EAAGA,EAAI0jK,EAAKl7J,OAAQxI,IAChC0jK,EAAK1jK,GAAG0hK,GAAOgC,EAAK1jK,GAAG0hK,IAAQ,CAC9Be,SAAUp8G,EAAKo8G,UAEhBH,EAAOoB,EAAK1jK,IAGT2jK,IACH33J,SAASq4B,KAAKhG,iBAAiB,QAAQ,SAAU/uB,GACvB,QAArBA,EAAE/L,OAAO4gD,SACZo6F,EAAIjvI,EAAE/L,OAAQ,CACbk/J,SAAUp8G,EAAKo8G,cAGf,GACHL,GAAkB,EAClBsB,EAAO,OAIJr9G,EAAKu9G,SACRxhK,OAAOi8B,iBAAiB,SAAUkgH,EAAI/8I,KAAK,KAAMkiK,EAAM,CACtDjB,SAAUp8G,EAAKo8G,YAKlBlkB,EAAIsjB,kBAAoBA,EACxBtjB,EAAIujB,uBAAyBA,EA9D7B,WACC,SAAS+B,EAAiB/2J,EAAIvM,GAC7B,OAAOuM,EAAG40J,IAAQ50J,EAAG40J,GAAK9zG,MAAiB,QAATrtD,GAA2B,WAATA,GAAqBuM,EAAG40J,GAAK9zG,IAAM9gD,EAEnFg1J,IACJgC,iBAAiBliK,UAAU8iD,aAAe,SAAUnkD,GACnD,OAAO2hK,EAAmB/hK,KAAK0jK,EAAiBv9J,KAAM/F,GAAOA,IAG9DujK,iBAAiBliK,UAAUkjD,aAAe,SAAUvkD,EAAMU,GACzD,OAAOkhK,EAAmBhiK,KAAK0jK,EAAiBv9J,KAAM/F,GAAOA,EAAMmE,OAAOzD,MAsD7E8iK,GApOuB,G;;;;;;;;ICQrB,WACD,IAOQX,EACLt2J,EASEnB,EAjBD+B,EAAItL,OAAO+qB,OACb62I,EAAOt2J,EAAEtL,QACT6hK,EAAOv2J,EAAE1B,UAGPk4J,EAAQ,6BACTC,EAAe,aAAc/hK,UAE7B0K,EAAKd,SAASf,cAAc,QACzBk0C,UAAY,SACfikH,GAAat2J,EAAG41G,YAAc51G,EAAG41G,WAAW0hD,eAAiBF,EAC7Dp3J,EAAGqyC,UAAY,GACRikH,GAINiB,EAEI,eADH14J,EAAQK,SAASf,cAAc,OAAOU,QAEtC,qBAAsBA,GACrB,kBAAmBA,GACpB,iBAAkBA,GAClB,gBAAiBA,EAIlB24J,EAAiB,iBAAkBliK,OACrCmiK,EAAiB,aAAgBD,EAAiB,cAAgB,IAClEE,EAAiB,yBAA4BF,EAAiB,yBAA2B,IACzFG,EAAe,uBAA0BH,EAAiB,wBAA0B,IAGlFI,EAAUx1I,UAAUw1I,QAAU,UAAYx1I,UAAUy1I,cAAgB,gBAAkB,KAE1F,SAASC,EAAiBrkK,GACzB,OAAOyL,SAAS+5C,gBAAgBm+G,EAAO3jK,GAGvC,SAASskK,EAASh9F,EAAM/Y,EAAMmZ,GAC5B,IAAID,EACJ,OAAO,WACH,IAAIF,EAAUxhE,KAAMoQ,EAAO1L,UACvB+8D,EAAQ,WACRC,EAAU,KACLC,GAAWJ,EAAKp4D,MAAMq4D,EAASpxD,IAEpCwxD,EAAUD,IAAcD,EAC5B7gB,aAAa6gB,GACbA,EAAUxpC,WAAWupC,EAAOjZ,GACxBoZ,GAASL,EAAKp4D,MAAMq4D,EAASpxD,IAIxC,SAASouJ,EAAYp1F,GACpB,OAAQA,EAAM,GAAK,IAAM,IAAMA,EAIhC,IAAIq1F,EAAY,EAOhB,IAAIC,EAAa,IACfj3E,EAAc,IAEdC,EAAc,GACdi3E,EAAa,GACbC,EAAwB,EAAbF,EACXviI,EAAW4hI,EAAsB,IAAM,EAGrCc,EAAM,CACT,mCACC,+BACC,8BACC,6BACC,4BACC,qCACC,oCACC,2CACC,4DACA,IACA,iDACD,SACA,qEACC,6CACD,SACD,SACD,SACA,2CACC,kCACC,yCACA,yDACA,gFACD,SACA,wCACA,SACD,SACA,+BACA,SACD,SACD,SACD,SACD,SACD,UACC9+J,KAAK,IAGP,SAAS++J,EAAY57I,EAASnmB,GAAS,IApDrB4oE,EACb/iE,EAmDkC,OAClCm8J,EAAU33J,EAAEy3J,GACdG,EAAQD,EAAQt8J,KAAK,sBACrBgiE,EAASs6F,EAAQt8J,KAAK,mBACtBw8J,EAAYF,EAAQt8J,KAAK,sBACzBy8J,EAAcH,EAAQt8J,KAAK,wBAC3B08J,EAAYJ,EAAQt8J,KAAK,4BACzB28J,EAAsC,UAA5Bl8I,EAAQsC,KAAK,WACnB/kB,EAAQ2+J,EAAUl8I,EAAUA,EAAQzgB,KAAK,SAE7C+mB,GADc/oB,EAAM+kB,KAAK,QACjBpe,EAAE,aAAe3G,EAAMmgB,KAAK,MAAQ,MAC5C7kB,EAAOiE,KAGTA,KAAK4C,IAjEDA,IAAO67J,EAAY,IADN94F,EAkEE,MAhEHA,EAAS/iE,EAAKA,GAiE9B5C,KAAKkjB,QAAUA,EACfljB,KAAKykE,OAASA,EACdzkE,KAAKjD,QAAUA,EACfiD,KAAKq/J,YAAa,EAClBr/J,KAAKs/J,SAAU,EACft/J,KAAKu/J,YAAc,QACnBv/J,KAAKo/J,QAAUA,EACfp/J,KAAKS,MAAQA,EACbT,KAAKwpB,MAAQA,EACbxpB,KAAK++J,QAAUA,EACf/+J,KAAKg/J,MAAQA,EACbh/J,KAAKi/J,UAAYA,EACjBj/J,KAAKk/J,YAAcA,EACnBl/J,KAAKm/J,UAAYA,EACjBn/J,KAAKw/J,UAAYT,EAAQt8J,KAAK,2BAC9BzC,KAAKy/J,YAAcV,EAAQt8J,KAAK,6BAChCzC,KAAK0/J,SAAWX,EAAQt8J,KAAK,2BAC7BzC,KAAKwvG,OAASuvD,EAAQt8J,KAAK,mBAC3BzC,KAAK2/J,OAAS,GACd3/J,KAAK4/J,aAAe7iK,EAAQ8iK,WAC5B7/J,KAAK8/J,QAAU,EACb9/J,KAAK+/J,QAAU,EACf//J,KAAKggK,WAAa,EAClBhgK,KAAKigK,WAAa,GAClBjgK,KAAKkgK,SAAW,EAChBlgK,KAAKmgK,SAAW,GAChBngK,KAAKogK,oBAAqB,EAE1B,IAAMC,EAAmB,SAACn6F,GACxB,IAAM8lD,EAAO9lD,EAAQ,OAIrB,GAHA,EAAK8lD,GAAQjvH,EAAQmpE,GAAOtmE,MAAM,KAGL,IAAzB,EAAKosH,GAAM,GAAG9pH,OAAc,CAC9B,IAAMo+J,EAAS,EAAKt0C,GAAM,GAAG5jH,QAAQ,OAAQ,IAAIo1C,cACjD,EAAKwuE,GAAM,GAAK,EAAKA,GAAM,GAAG5jH,QAAQ,OAAQ,IAC/B,OAAXk4J,IACF,EAAKt0C,GAAM,GAAKnuG,SAAS,EAAKmuG,GAAM,IAAM,IAG9C,GAA0B,IAAtB,EAAKA,GAAM9pH,OACb,EAAK8pH,GAAQ,UAEb,IAAK,IAAItyH,EAAI,EAAGA,EAAI,EAAKsyH,GAAM9pH,OAAQxI,IACrC,EAAKsyH,GAAMtyH,IAAM,EAAKsyH,GAAMtyH,IA0BpC,GApBMqD,EAAQgC,MACVshK,EAAiB,OACjBrgK,KAAKggK,WAAahgK,KAAK8/J,QAAQ,GAC/B9/J,KAAKkgK,SAAWlgK,KAAK8/J,QAAQ,IAI3B/iK,EAAQqJ,MACVi6J,EAAiB,OAGZrgK,KAAKkgK,SAAWlgK,KAAKmgK,UAAcngK,KAAKkgK,WAAalgK,KAAKmgK,UAAYngK,KAAKggK,YAAchgK,KAAKigK,WACjGjgK,KAAK+/J,QAAU,GAEf//J,KAAKigK,WAAajgK,KAAK+/J,QAAQ,GAC/B//J,KAAKmgK,SAAWngK,KAAK+/J,QAAQ,KAK/BhjK,EAAQ8iK,WAAY,CACvB,IAAKU,EAAsB,CAC1B,wCACC,gGACC,KACD,YACA,gGACC,KACD,YACD,UACCxgK,KAAK,IAIEygK,GAFSp5J,EAAEm5J,GAEI,SAACD,GAClB,IAAIG,EAAmB,KAER,OAAXH,IACFG,EAAmB,MAErB1kK,EAAK4jK,OAASW,EACdvkK,EAAKojK,UAAUnkJ,SAAf,WAA4BylJ,EAA5B,YAAuD1hJ,YAAY,UACnEhjB,EAAKojK,UAAUnkJ,SAAf,WAA4BslJ,EAAOj4J,cAAnC,YAA2DqZ,SAAS,UACpE3lB,EAAK2jK,SAASt8H,QAAQlhB,OAAOo+I,GAE7B,EAAKI,8BAGP3jK,EAAQ4jK,eASZ3gK,KAAK0/J,SAASt8H,QACdh8B,EAAE,+BAA+B0d,GAAG,SAAS,WAC5C/oB,EAAK2jK,SAAS1kJ,SAAS,aAAa0G,SAAS,gBAC7C3lB,EAAK2jK,SAAS1kJ,SAAS,aAAa+D,YAAY,gBAChDhjB,EAAK4jK,OAAS,QACZ78I,SAAS9iB,KAAK0/J,UACjBt4J,EAAE,+BAA+B0d,GAAG,SAAS,WAC5C/oB,EAAK2jK,SAAS1kJ,SAAS,aAAa0G,SAAS,gBAC7C3lB,EAAK2jK,SAAS1kJ,SAAS,aAAa+D,YAAY,gBAChDhjB,EAAK4jK,OAAS,QACZ78I,SAAS9iB,KAAK0/J,YAlBjBt4J,EAAE,6GAAuH0d,GAAG,SAAS,WAC/H07I,EAAa,SAChB19I,SAAS9iB,KAAKm/J,WACjB/3J,EAAE,6GAAuH0d,GAAG,SAAS,WAC/H07I,EAAa,SAChB19I,SAAS9iB,KAAKm/J,YAkBhBpiK,EAAQ6jK,WACV7B,EAAQr9I,SAAS,aAGlBta,EAAE,wFAA0FrK,EAAQ8iK,WAAY,IAAM,KAAO,KAAO9iK,EAAQ8jK,SAAW,aAAa/mG,MAAM1yD,EAAEgqB,MAAMpxB,KAAKyJ,KAAMzJ,OAAO8iB,SAAS9iB,KAAKwvG,QAElNpoG,EAAE,yFAA2FrK,EAAQ8iK,WAAY,IAAM,KAAO,KAAO9iK,EAAQ+jK,UAAY,aAAahnG,MAAM1yD,EAAEgqB,MAAMpxB,KAAK+gK,WAAY/gK,OAAO8iB,SAAS9iB,KAAKwvG,QAC1NxvG,KAAKw/J,UAAU1lG,MAAM1yD,EAAEgqB,MAAMpxB,KAAKghK,WAAYhhK,KAAM,UACpDA,KAAKy/J,YAAY3lG,MAAM1yD,EAAEgqB,MAAMpxB,KAAKghK,WAAYhhK,KAAM,YAGtDS,EAAMqkB,GAAG,oBAAqBy5I,EAAUn3J,EAAEgqB,MAAMpxB,KAAK6jB,KAAM7jB,MAAO,MAGlE,IACEtG,EAAGuqG,EAAMg9D,EAAQv8E,EADfw8E,EAAU95J,EAAE,wCAId,GAAIrK,EAAQ8iK,WACV,IAAKnmK,EAAI,EAAGA,EAAI,GAAIA,GAAKqD,EAAQokK,SAC/Bl9D,EAAOi9D,EAAQ99I,QACf69I,EAASvnK,EAAI,EAAIiC,KAAKm4C,GACtB4wC,EAAS+C,EACTwc,EAAKljF,IAAI,YAAa,QACtBkjF,EAAKljF,IAAI,CACP0C,KAAMi7I,EAAa/iK,KAAKq4C,IAAIitH,GAAUv8E,EAASi6E,EAC/Cn7I,IAAKk7I,EAAa/iK,KAAKk4C,IAAIotH,GAAUv8E,EAASi6E,IAEhD16D,EAAKn/F,KAAW,IAANpL,EAAU,GAAKA,GACzBulK,EAAU/8I,OAAO+hF,GACjBA,EAAKn/E,GAAGm5I,EAAgBv1G,GACxB1oD,KAAK0gK,iCAGP,IAAKhnK,EAAI,EAAGA,EAAI,GAAIA,GAAKqD,EAAQokK,SAAU,CACzCl9D,EAAOi9D,EAAQ99I,QACf69I,EAASvnK,EAAI,EAAIiC,KAAKm4C,GACtB,IAAIssG,EAAQ1mJ,EAAI,GAAKA,EAAI,GACzBgrF,EAAS07D,EAAQ14D,EAAcD,EAC/Bwc,EAAKljF,IAAI,CACP0C,KAAMi7I,EAAa/iK,KAAKq4C,IAAIitH,GAAUv8E,EAASi6E,EAC/Cn7I,IAAKk7I,EAAa/iK,KAAKk4C,IAAIotH,GAAUv8E,EAASi6E,IAE5Cve,GACFn8C,EAAKljF,IAAI,YAAa,QAExBkjF,EAAKn/F,KAAW,IAANpL,EAAU,KAAOA,GAC3BulK,EAAU/8I,OAAO+hF,GACjBA,EAAKn/E,GAAGm5I,EAAgBv1G,GACxB1oD,KAAK0gK,4BAKT,IAAIU,EAAiBzlK,KAAKyK,IAAIrJ,EAAQskK,WAAY,GAClD,IAAK3nK,EAAI,EAAGA,EAAI,GAAIA,GAAK0nK,EACvB,IAAK1nK,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBuqG,EAAOi9D,EAAQ99I,QACf69I,EAASvnK,EAAI,GAAKiC,KAAKm4C,GACvBmwD,EAAKljF,IAAI,CACP0C,KAAMi7I,EAAa/iK,KAAKq4C,IAAIitH,GAAUx5E,EAAck3E,EACpDn7I,IAAKk7I,EAAa/iK,KAAKk4C,IAAIotH,GAAUx5E,EAAck3E,IAErD16D,EAAKljF,IAAI,YAAa,QACtBkjF,EAAKn/F,KAAK05J,EAAY9kK,IACtBwlK,EAAYh9I,OAAO+hF,GACnBA,EAAKn/E,GAAGm5I,EAAgBv1G,GAW9B,SAASA,EAAU1/C,EAAGuf,GACrB,IAAIyN,EAASgpI,EAAMhpI,SACjBsrI,EAAU,SAASr4J,KAAKD,EAAElF,MAC1BwsH,EAAKt6F,EAAOvS,KAAOi7I,EACnBnuC,EAAKv6F,EAAOxS,IAAMk7I,EAClBtjH,GAAMkmH,EAAUt4J,EAAEu8D,cAAc78B,QAAQ,GAAK1/B,GAAG49C,MAAQ0pE,EACxDE,GAAM8wC,EAAUt4J,EAAEu8D,cAAc78B,QAAQ,GAAK1/B,GAAG29C,MAAQ4pE,EACxDp0G,EAAIxgB,KAAK24C,KAAK8G,EAAKA,EAAKo1E,EAAKA,GAC7B+wC,GAAQ,EAGV,IAAIh5I,KAAUpM,EAAIsrE,EAAck3E,GAAcxiJ,EAAIsrE,EAAck3E,GAAhE,CAEA31J,EAAEogB,iBAGF,IAAIo4I,EAActpI,YAAW,WAC5Bn8B,EAAKgjK,QAAQr9I,SAAS,wBACpB,KAGCm8I,GACHmB,EAAM98I,OAAOnmB,EAAKqgF,QAGnBrgF,EAAK0lK,QAAQrmH,EAAIo1E,GAAKjoG,GAAO,GAG7Bo1I,EAAKnjI,IAAI0jI,GAAgBp5I,GAAGo5I,GAAgB,SAASl1J,GACpDA,EAAEogB,iBACF,IAAIk4I,EAAU,SAASr4J,KAAKD,EAAElF,MAC5ByuB,GAAK+uI,EAAUt4J,EAAEu8D,cAAc78B,QAAQ,GAAK1/B,GAAG49C,MAAQ0pE,EACvD75E,GAAK6qH,EAAUt4J,EAAEu8D,cAAc78B,QAAQ,GAAK1/B,GAAG29C,MAAQ4pE,GACnDgxC,GAAShvI,IAAM6oB,GAAM3E,IAAM+5E,KAGjC+wC,GAAQ,EACRxlK,EAAK0lK,QAAQlvI,EAAGkkB,GAAG,GAAO,OAI3BknH,EAAKnjI,IAAI2jI,GAAcr5I,GAAGq5I,GAAc,SAASn1J,GAChD20J,EAAKnjI,IAAI2jI,GACTn1J,EAAEogB,iBACF,IAAIk4I,EAAU,SAASr4J,KAAKD,EAAElF,MAC5ByuB,GAAK+uI,EAAUt4J,EAAEu8D,cAAc/7B,eAAe,GAAKxgC,GAAG49C,MAAQ0pE,EAC9D75E,GAAK6qH,EAAUt4J,EAAEu8D,cAAc/7B,eAAe,GAAKxgC,GAAG29C,MAAQ4pE,GAC3DhoG,GAASg5I,IAAUhvI,IAAM6oB,GAAM3E,IAAM+5E,GACpCz0H,EAAK0lK,QAAQlvI,EAAGkkB,GAEyD16C,EAAtE2lK,MAAsE3lK,EAA/D4lK,QATmC,IAS1BhC,EAAsD5jK,EAAtD4jK,OAAQQ,EAA8CpkK,EAA9CokK,SAAUD,EAAoCnkK,EAApCmkK,SAAoCnkK,EAA1BkkK,WAA0BlkK,EAAdikK,WAE9C,OAAXL,IACEO,EAAW,KACbA,EAAW,GACTA,EAAW,KACbA,GAAY,IACVC,EAAW,KACbA,GAAY,KAIZpkK,EAAKqkK,oBACPrkK,EAAKqkK,oBAAqB,EAC1Bp3J,EAAE+b,mBAE0B,UAArBhpB,EAAKwjK,YACZxjK,EAAKilK,WAAW,UAAW7kI,EAAW,GACX,SAApBpgC,EAAKwjK,aAA0BxiK,EAAQ6kK,YAC9C7lK,EAAKmjK,YAAYx9I,SAAS,wBAC1BwW,YAAW,WACTn8B,EAAK0N,SACJ0yB,EAAW,GACdpgC,EAAK8lK,aAAe,GAG1B7C,EAAMl9I,QAAQs6D,GAGdv7B,aAAa2gH,GACbzlK,EAAKgjK,QAAQhgJ,YAAY,sBAGzB4+I,EAAKnjI,IAAI0jI,MAEPniK,EAAK2kK,6BAGT,GA9FA1B,EAAMl6I,GAAGm5I,GAAgB,SAASj1J,GACuB,IAApD5B,EAAE4B,EAAE/L,QAAQ2vB,QAAQ,qBAAqB1qB,QAC5CwmD,EAAU1/C,GAAG,MA4FX60J,EAAc,CAEjB,IAAIzhF,EAAS2iF,EAAQt8J,KAAK,uBACxB42H,EAAMilC,EAAiB,OACzBjlC,EAAI76E,aAAa,QAAS,mBAC1B66E,EAAI76E,aAAa,QAASogH,GAC1BvlC,EAAI76E,aAAa,SAAUogH,GAC3B,IAAI71J,EAAIu1J,EAAiB,KACzBv1J,EAAEy1C,aAAa,YAAa,aAAekgH,EAAa,IAAMA,EAAa,KAC3E,IAAIoD,EAAUxD,EAAiB,UAC/BwD,EAAQtjH,aAAa,QAAS,8BAC9BsjH,EAAQtjH,aAAa,KAAM,GAC3BsjH,EAAQtjH,aAAa,KAAM,GAC3BsjH,EAAQtjH,aAAa,IAAK,GAC1B,IAAIujH,EAAOzD,EAAiB,QAC5ByD,EAAKvjH,aAAa,KAAM,GACrBujH,EAAKvjH,aAAa,KAAM,GAC3B,IAAIq+E,EAAKyhC,EAAiB,UAC1BzhC,EAAGr+E,aAAa,QAAS,yBACzBq+E,EAAGr+E,aAAa,IAAKmgH,GACrB,IAAIqD,EAAK1D,EAAiB,UAC1B0D,EAAGxjH,aAAa,QAAS,yBACzBwjH,EAAGxjH,aAAa,IAAK,GACrBz1C,EAAExD,YAAYw8J,GACdh5J,EAAExD,YAAYs3H,GACd9zH,EAAExD,YAAYy8J,GACdj5J,EAAExD,YAAYu8J,GACdzoC,EAAI9zH,YAAYwD,GAChBqzE,EAAOl6D,OAAOm3G,GAEdr5H,KAAK+hK,KAAOA,EACZ/hK,KAAK68H,GAAKA,EACV78H,KAAKgiK,GAAKA,EACVhiK,KAAK8hK,QAAUA,EACf9hK,KAAK+I,EAAIA,EACT/I,KAAKo8E,OAASA,EAGf6lF,EAAcjiK,KAAKjD,QAAQs9B,MAG5B,SAAS4nI,EAAcC,GACnBA,GAAgD,mBAArBA,GAC7BA,IAIFpD,EAAYqD,SAAW,CACtB,QAAW,GACXC,QAAS,EACPvB,SAAU,OACVC,UAAW,QACbc,WAAW,EACXjB,eAAe,EACfC,WAAW,EACXf,YAAY,EACVzB,SAAS,EACT+C,SAAU,EACVE,WAAY,EACdgB,YAAY,EACZhkH,UAAW,QAIZygH,EAAYxjK,UAAUgnK,OAAS,WAC9BtiK,KAAKA,KAAKs/J,QAAU,OAAS,WAI9BR,EAAYxjK,UAAUinK,OAAS,WAC9B,IAAIr/I,EAAUljB,KAAKkjB,QACP9b,EAAEpH,KAAKjD,QAAQshD,WAAWn8B,OAAOliB,KAAK++J,SACvC77I,EAAQ8S,SACT9S,EAAQuqB,aACPvqB,EAAQ+c,cACTjgC,KAAKjD,QAAQ00H,MAGvBzxH,KAAK++J,QAAQl7I,QAKbi7I,EAAYxjK,UAAUknK,gBAAkB,WACtC,IAAI7nK,EAAQqF,KAAKS,MAAM+kB,KAAK,UAAYxlB,KAAKjD,QAAL,SAA2B,GAkBnE,GAhBc,QAAVpC,IACFA,EAAQ,IAAI8Y,MAAO,IAAIA,KAASzT,KAAKjD,QAAQqlK,UAE3CznK,aAAiB8Y,OACnB9Y,EAAQA,EAAM8nK,WAAa,IAAM9nK,EAAM+nK,cAGzC/nK,EAAQA,EAAMiF,MAAM,KAGpBI,KAAK0hK,OAAU/mK,EAAM,IAAM,EAC3BqF,KAAK2hK,UAAahnK,EAAM,GAAK,IAAIyN,QAAQ,MAAO,KAAO,EAEvDpI,KAAK0hK,MAAQ/lK,KAAKyiC,MAAMp+B,KAAK0hK,MAAQ1hK,KAAKjD,QAAQokK,UAAYnhK,KAAKjD,QAAQokK,SAC3EnhK,KAAK2hK,QAAUhmK,KAAKyiC,MAAMp+B,KAAK2hK,QAAU3hK,KAAKjD,QAAQskK,YAAcrhK,KAAKjD,QAAQskK,WAE7ErhK,KAAKjD,QAAQ8iK,WAAY,CAC3B,IAAIS,GAAU3lK,EAAM,GAAK,IAAIyN,QAAQ,OAAQ,IAAIC,cACjDrI,KAAK2/J,OAAS3/J,KAAK0hK,MAAQ,IAAiB,OAAXpB,EAAkB,KAAO,OAK/DxB,EAAYxjK,UAAUuoB,KAAO,SAAS7a,GAErC,IAAIhJ,KAAKs/J,QAAT,CAGA2C,EAAcjiK,KAAKjD,QAAQ4lK,YAC3Bv7J,EAAE,UAAU4b,MAAK,WAChB5b,EAAEpH,MAAM4gB,KAAK,YAAa,MAE3B,IAAI7kB,EAAOiE,KAEXA,KAAKS,MAAMm8C,OACX58C,KAAK++J,QAAQr9I,SAAS,kBACtB1hB,KAAKS,MAAMihB,SAAS,uCACpBta,EAAE1B,SAASq4B,MAAMhd,IAAI,WAAY,UAC5B/gB,KAAKq/J,aAETr/J,KAAK++J,QAAQz7I,YAAYtjB,KAAKS,OAC3BT,KAAKjD,QAAQ8iK,aACf7/J,KAAK2/J,OAAS,KACV3/J,KAAKjD,QAAQ4jK,eAMhB3gK,KAAK0/J,SAAS1kJ,SAAS,aAAa0G,SAAS,gBAC7C1hB,KAAK0/J,SAAS1kJ,SAAS,aAAa+D,YAAY,kBANhD/e,KAAKm/J,UAAUnkJ,SAAS,cAAc+D,YAAY,UAClD/e,KAAKm/J,UAAUnkJ,SAAS,cAAc0G,SAAS,UAC/C1hB,KAAK0/J,SAASt8H,QAAQlhB,OAAO,QAQ/Bw7I,EAAK54I,GAAG,qBAAuB9kB,KAAK4C,IAAI,WACnC7G,EAAKujK,SACRvjK,EAAKwmK,YAGPviK,KAAKq/J,YAAa,GAGjBr/J,KAAKwiK,kBAEc,IAAfxiK,KAAK0hK,QACP1hK,KAAK0hK,MAAQ1hK,KAAKkgK,UAGtBlgK,KAAKw/J,UAAU16J,KAAK05J,EAAYx+J,KAAK0hK,QACnC1hK,KAAKy/J,YAAY36J,KAAK05J,EAAYx+J,KAAK2hK,UAEnC3hK,KAAKjD,QAAQ8iK,YACf7/J,KAAK0/J,SAASt8H,QAAQlhB,OAAOliB,KAAK2/J,QAEpC3/J,KAAK0gK,4BAEP1gK,KAAKghK,WAAW,SAEhBhhK,KAAKuiK,SACLviK,KAAKs/J,SAAU,EAEf3B,EAAK74I,GAAG,qBAAuB9kB,KAAK4C,GAAK,wBAA0B5C,KAAK4C,GAAI27J,GAAS,SAASv1J,GAC7F,IAAI/L,EAASmK,EAAE4B,EAAE/L,QACiD,IAA9DA,EAAO2vB,QAAQ7wB,EAAKgjK,QAAQt8J,KAAK,kBAAkBP,QAAsD,IAAtCjF,EAAO2vB,QAAQ7wB,EAAK0E,OAAOyB,QACjGnG,EAAKsmB,SACJ,MAEHs7I,EAAK74I,GAAG,qBAAuB9kB,KAAK4C,GAAI27J,GAAU,SAASv1J,GACxC,KAAdA,EAAEilB,SACLlyB,EAAKsmB,SACL,MACF4/I,EAAcjiK,KAAKjD,QAAQ6lK,aAG5B9D,EAAYxjK,UAAU+mB,KAAO,WAC5B4/I,EAAcjiK,KAAKjD,QAAQ8lK,YAC3B7iK,KAAKS,MAAMse,YAAY,uCACvB/e,KAAK++J,QAAQhgJ,YAAY,kBACzB3X,EAAE1B,SAASq4B,MAAMhd,IAAI,WAAY,WACjC/gB,KAAKs/J,SAAU,EACfl4J,EAAE,UAAU4b,MAAK,SAAS7gB,GACzBiF,EAAEpH,MAAM4gB,KAAK,WAAYze,EAAQ,MAGlCw7J,EAAKnjI,IAAI,qBAAuBx6B,KAAK4C,GAAK,wBAA0B5C,KAAK4C,IACzE+6J,EAAKnjI,IAAI,qBAAuBx6B,KAAK4C,IACrC5C,KAAK++J,QAAQ18I,OACb4/I,EAAcjiK,KAAKjD,QAAQ+lK,YAG3BhE,EAAYxjK,UAAUolK,0BAA4B,WAAW,WACtDgB,EAAiG1hK,KAAjG0hK,MAAOC,EAA0F3hK,KAA1F2hK,QAASpC,EAAiFv/J,KAAjFu/J,YAAaK,EAAoE5/J,KAApE4/J,aAAcD,EAAsD3/J,KAAtD2/J,OAAQQ,EAA8CngK,KAA9CmgK,SAAUD,EAAoClgK,KAApCkgK,SAAUD,EAA0BjgK,KAA1BigK,WAAYD,EAAchgK,KAAdggK,WAClF+C,EAAa37J,EAAE,sBAAsB4T,WACrCgoJ,EAAe57J,EAAE,wBAAwB4T,WACzCioJ,EAAS77J,EAAE,cACX87J,EAAS97J,EAAE,cACX+7J,EAAW/7J,EAAE,gBAGfw4J,GAAgC,YAAhBL,IAClB4D,EAASpkJ,YAAY,sBACN,OAAX4gJ,GAAqB+B,EAAQ,IAAMvB,EAEnB,OAAXR,GAAqB+B,GAASxB,GACrC+C,EAAOvhJ,SAAS,YAFhBwhJ,EAAOxhJ,SAAS,aAMhBk+I,GAA2B,OAAXD,IACdO,EAAW,KACbA,EAAW,GAETA,EAAW,KACbA,GAAY,IAEVC,EAAW,KACbA,GAAY,KAIZP,GAAgC,UAAhBL,IAClB0D,EAAOlkJ,YAAY,YACnBmkJ,EAAOnkJ,YAAY,aAEJ,OAAX4gJ,GAAsB+B,GAASxB,GAAewB,GAASvB,KAErC,OAAXR,GAAsB+B,GAASxB,GAAewB,GAASvB,GAGhEgD,EAASpkJ,YAAY,sBAJrBokJ,EAASzhJ,SAAS,uBASF,YAAhB69I,IACGmC,IAAUxB,GAAYyB,EAAU3B,GAAgB0B,IAAUvB,GAAYwB,EAAU1B,EACnFkD,EAASzhJ,SAAS,sBAElByhJ,EAASpkJ,YAAY,uBAIL,UAAhBwgJ,GACFwD,EAAW//I,MAAK,SAAC7gB,EAAOqE,GACtB,IAAIk7J,EAAQl7J,EAAGqyC,UAEX,EAAK+mH,cAAyB,IAAT8B,IACvBA,EAAQ,GAENA,EAAQvB,GAAYuB,EAAQxB,EAC9B94J,EAAEZ,GAAIkb,SAAS,sBAEfta,EAAEZ,GAAIuY,YAAY,yBAKJ,YAAhBwgJ,GACFyD,EAAahgJ,MAAK,SAAC7gB,EAAOqE,GACpB05J,GAAYwB,GAASl7J,EAAGqyC,UAAYmnH,EACtC54J,EAAEZ,GAAIkb,SAAS,sBACRy+I,GAAYuB,GAASl7J,EAAGqyC,UAAYonH,EAC3C74J,EAAEZ,GAAIkb,SAAS,sBAEfta,EAAEZ,GAAIuY,YAAY,0BAM3B+/I,EAAYxjK,UAAU0lK,WAAa,SAASpiJ,EAAMwd,GACjD,IAAIgnI,GAAuB,EACd,YAATxkJ,GAA8D,YAAxCxX,EAAEpH,KAAKi/J,WAAWl+I,IAAI,gBAC/CkhJ,EAAcjiK,KAAKjD,QAAQsmK,kBAC3BD,GAAuB,GAExB,IAAIE,EAAmB,UAAT1kJ,EACZ2kJ,EAAWD,EAAUtjK,KAAKi/J,UAAYj/J,KAAKk/J,YAC3CsE,EAAWF,EAAUtjK,KAAKk/J,YAAcl/J,KAAKi/J,UAC7Cj/J,KAAKu/J,YAAc3gJ,EAErB5e,KAAKw/J,UAAUj0I,YAAY,eAAgB+3I,GACzCtjK,KAAKy/J,YAAYl0I,YAAY,gBAAkB+3I,GAGjDE,EAAS9hJ,SAAS,wBAChB6hJ,EAASxiJ,IAAI,aAAc,WAAWhC,YAAY,wBAGpD/e,KAAKyjK,WAAWrnI,GAGhBykB,aAAa7gD,KAAK0jK,iBAClB1jK,KAAK0jK,gBAAkBxrI,YAAW,WACjCsrI,EAASziJ,IAAI,aAAc,YACzBob,GAEDn8B,KAAK0gK,4BAEH0C,GACHnB,EAAcjiK,KAAKjD,QAAQ4mK,kBAI7B7E,EAAYxjK,UAAUmoK,WAAa,SAASrnI,GAC3C,IAAIxd,EAAO5e,KAAKu/J,YACd5kK,EAAQqF,KAAK4e,GACb0kJ,EAAmB,UAAT1kJ,EAEVqiJ,EAAStmK,GADFgB,KAAKm4C,IAAMwvH,EAAU,EAAI,KAEhC5+E,EAAS4+E,GAAW3oK,EAAQ,GAAKA,EAAQ,GAAK+sF,EAAcD,EAC5Dl1D,EAAI52B,KAAKq4C,IAAIitH,GAAUv8E,EACvBjuC,GAAM96C,KAAKk4C,IAAIotH,GAAUv8E,EACzB3oF,EAAOiE,KAEN69J,GAAgBzhI,GAClBrgC,EAAKqgF,OAAO16D,SAAS,0BACrBwW,YAAW,WACVn8B,EAAKqgF,OAAOr9D,YAAY,0BACxBhjB,EAAK0lK,QAAQlvI,EAAGkkB,KACdra,IAEHp8B,KAAKyhK,QAAQlvI,EAAGkkB,IAIlBqoH,EAAYxjK,UAAUmmK,QAAU,SAASlvI,EAAGkkB,EAAGmtH,EAAUC,GACxD,IAME13C,EACIxxH,EAPFsmK,EAAStlK,KAAKg0E,MAAMp9C,GAAKkkB,GAC3B6sH,EAA+B,UAArBtjK,KAAKu/J,YACfpjJ,EAAIxgB,KAAK24C,KAAK/hB,EAAIA,EAAIkkB,EAAIA,GAC1B15C,EAAUiD,KAAKjD,QACfqjJ,EAAQkjB,GAAWnnJ,GAAKsrE,EAAcC,GAAe,EACrDhD,EAAS07D,EAAQ14D,EAAcD,EAM3B0kC,EADAm3C,EACOvmK,EAAQokK,SAAW,EAAIxlK,KAAKm4C,GAE5B/2C,EAAQskK,WAAa,GAAK1lK,KAAKm4C,GAGxC/2C,EAAQ8iK,aACXn7E,EAAS+C,GAGNw5E,EAAS,IACZA,EAAmB,EAAVtlK,KAAKm4C,GAASmtH,GAMxBA,GAHEtmK,EAAQgB,KAAKyiC,MAAM6iI,EAAS90C,IAGbA,EAEXm3C,GACF3oK,GAASoC,EAAQokK,SACXpkK,EAAQ8iK,aAAgBzf,GAASzlJ,EAAM,IAC3CA,GAAS,IAEPoC,EAAQ8iK,YAAwB,IAAVllK,IACtBA,EAAQ,IAEE,KAAVA,IACAA,EAAQ,IAIE,MADdA,GAASoC,EAAQskK,cAEb1mK,EAAQ,GA5CkD,IAgD1DulK,EAAuDlgK,KAAvDkgK,SAAUC,EAA6CngK,KAA7CmgK,SAAUH,EAAmChgK,KAAnCggK,WAAYC,EAAuBjgK,KAAvBigK,WAAYN,EAAW3/J,KAAX2/J,OAElD,GAAI2D,EAAS,CACX,IAAI5B,EAAQ/mK,EAcZ,GAZoB,OAAhBqF,KAAK2/J,SACHO,EAAW,KACbA,EAAW,GACTA,EAAW,KACbA,GAAY,IACVC,EAAW,KACbA,GAAY,KAGZngK,KAAK4/J,cAAyB,IAAT8B,IACvBA,EAAQ,GAENA,EAAQxB,GAAYwB,EAAQvB,EAE9B,YADAngK,KAAKogK,oBAAqB,GAI5B,GAAIpgK,KAAK4/J,cAA0B,KAAV8B,EAEvB,YADA1hK,KAAKogK,oBAAqB,OAGtB,KACAsB,EAAU1hK,KAAV0hK,MAKN,GAHe,OAAX/B,IACF+B,GAAS,IAENA,GAASxB,GAAYvlK,EAAQqlK,GAAgB0B,GAASvB,GAAYxlK,EAAQslK,EAE7E,YADAjgK,KAAKogK,oBAAqB,GA4BhC,GAvBIkD,EACHtjK,KAAKgiK,GAAGxjH,aAAa,QAAS,yBAE1B7jD,EAAQ,GAAK,EAChBqF,KAAKgiK,GAAGxjH,aAAa,QAAS,yBAE9Bx+C,KAAKgiK,GAAGxjH,aAAa,QAAS,gCAI5Bx+C,KAAKA,KAAKu/J,eAAiB5kK,GAC1ByjK,GAAWp+J,KAAKjD,QAAQqhK,UAErBp+J,KAAK8jK,eACVl7I,UAAUw1I,GAAS,IACnBp+J,KAAK8jK,aAAe5rI,WAAW9wB,EAAEgqB,OAAM,WACtCpxB,KAAK8jK,aAAe,OAClB9jK,MAAO,OAEbA,KAAKA,KAAKu/J,aAAe5kK,EACzBqF,KAAKsjK,EAAU,YAAc,eAAex+J,KAAK05J,EAAY7jK,IAGvDkjK,EAAN,CASIgG,IAAeP,GAAW3oK,EAAQ,GACrCqF,KAAK+I,EAAE+0D,aAAa99D,KAAK+hK,KAAM/hK,KAAK8hK,SACpC9hK,KAAK+I,EAAE+0D,aAAa99D,KAAK68H,GAAI78H,KAAKgiK,IAClChiK,KAAK68H,GAAGr+E,aAAa,QAAS,uDAG9Bx+C,KAAK+I,EAAE+0D,aAAa99D,KAAK+hK,KAAM/hK,KAAK68H,IACpC78H,KAAK+I,EAAE+0D,aAAa99D,KAAKgiK,GAAIhiK,KAAK68H,IAClC78H,KAAK68H,GAAGr+E,aAAa,QAAS,0BAI7B,IAAI01E,EAAKv4H,KAAKq4C,IAAIitH,GAAUv8E,EAC1ByvC,GAAOx4H,KAAKk4C,IAAIotH,GAAUv8E,EAC5B1kF,KAAK+hK,KAAKvjH,aAAa,KAAM01E,GAC7Bl0H,KAAK+hK,KAAKvjH,aAAa,KAAM21E,GAC7Bn0H,KAAK68H,GAAGr+E,aAAa,KAAM01E,GAC3Bl0H,KAAK68H,GAAGr+E,aAAa,KAAM21E,GAC3Bn0H,KAAKgiK,GAAGxjH,aAAa,KAAM01E,GAC3Bl0H,KAAKgiK,GAAGxjH,aAAa,KAAM21E,QA3B5Bn0H,KAAKsjK,EAAU,YAAc,eAAe7gK,KAAK,qBAAqBugB,MAAK,WAC1E,IAAIihF,EAAO78F,EAAEpH,MACbikG,EAAK14E,YAAY,SAAU5wB,KAAYspG,EAAKn/F,YA6B9Cg6J,EAAYxjK,UAAUylK,WAAa,WACnC/gK,KAAKS,MAAMG,IAAI,IACfZ,KAAKqiB,OAEFriB,KAAKjD,QAAQgnK,WAA+C,mBAA3B/jK,KAAKjD,QAAQgnK,WAChD/jK,KAAKjD,QAAQgnK,UAAU/jK,KAAKS,MAAO,OAIpCq+J,EAAYxjK,UAAUqY,QAAU,SAAS64B,GACvCxsC,KAAKwiK,kBAEL,IAAId,EAAQ1hK,KAAK0hK,MACb1hK,KAAKjD,QAAQ8iK,YAAc6B,EAAQ,IAAsB,OAAhB1hK,KAAK2/J,SAC9C+B,GAAS,IAGb,IAAIsC,EAAe,IAAIvwJ,KAKvB,OAJAuwJ,EAAaC,WAAWjkK,KAAK2hK,SAC7BqC,EAAanzB,SAAS6wB,GACtBsC,EAAaE,WAAW,GAEjB13H,GAAYA,EAASrjC,MAAMnJ,KAAKkjB,QAAS8gJ,IAAiBA,GAIpElF,EAAYxjK,UAAUmO,KAAO,WAC5Bw4J,EAAcjiK,KAAKjD,QAAQonK,YAC3BnkK,KAAKqiB,OACLriB,KAAKwpB,MAAM9H,SAAS,UAEpB,IAAI0K,EAAOpsB,KAAKS,MAAM+kB,KAAK,SACvB4+I,EAAWpkK,KAAK0hK,MAChB/mK,EAAQ,IAAM6jK,EAAYx+J,KAAK2hK,SAE7B3hK,KAAKqkK,SAAWrkK,KAAKjD,QAAQ8iK,aACzB7/J,KAAK0hK,MAAQ,IAAsB,OAAhB1hK,KAAK2/J,SACxByE,GAAY,IAEG,KAAfpkK,KAAK0hK,OAAgC,OAAhB1hK,KAAK2/J,SAC1ByE,EAAW,IAInBzpK,EAAQ6jK,EAAY4F,GAAYzpK,GAE3BqF,KAAKqkK,SAAWrkK,KAAKjD,QAAQ8iK,aAC5BllK,GAAgBqF,KAAK2/J,QAG7B3/J,KAAKS,MAAM+kB,KAAK,QAAS7qB,GACtBA,IAAUyxB,IACZpsB,KAAKS,MAAM6oB,QAAQ,UACftpB,KAAKo/J,SACRp/J,KAAKkjB,QAAQoG,QAAQ,WAGpBtpB,KAAKjD,QAAQ6kK,WACf5hK,KAAKS,MAAM6oB,QAAQ,QAEpB24I,EAAcjiK,KAAKjD,QAAQgnK,YAI5BjF,EAAYxjK,UAAU2jB,OAAS,WAC9Bjf,KAAKkjB,QAAQwI,WAAW,eACxB1rB,KAAKS,MAAM+5B,IAAI,uCACXx6B,KAAKs/J,SACRt/J,KAAKqiB,OACFriB,KAAKq/J,aACR3B,EAAKljI,IAAI,qBAAuBx6B,KAAK4C,IACrC5C,KAAK++J,QAAQ9/I,WAKf7X,EAAEzG,GAAG2jK,UAAY,SAASp/I,GACzB,IAAI9U,EAAOlM,MAAM5I,UAAU+E,MAAMxG,KAAK6K,UAAW,GACjD,SAAS6/J,IACR,IAAI3iK,EAAQwF,EAAEpH,MACZ+H,EAAOnG,EAAMmG,KAAK,eACpB,GAAKA,EAKwB,mBAAjBA,EAAKmd,IACfnd,EAAKmd,GAAQ/b,MAAMpB,EAAMqI,OANhB,CACV,IAAIrT,EAAUqK,EAAE+oB,OAAO,GAAI2uI,EAAYqD,SAAUvgK,EAAMmG,OAAyB,UAAjB,EAAOmd,IAAsBA,GAC5FtjB,EAAMmG,KAAK,cAAe,IAAI+2J,EAAYl9J,EAAO7E,KASjD,GAAmB,GAAfiD,KAAKkC,OAAa,CACpB,IAAIi8H,EAAcomC,EAAyBp7J,MAAMnJ,KAAK,IAGtD,YAAuBrC,IAAhBwgI,EAA4BA,EAAcn+H,KAInD,OAAOA,KAAKgjB,KAAKuhJ,IAGpBn9J,EAAE,uBAAuB0d,GAAG,SAAS,SAAA9b,GACpCA,EAAE+b,kBACF/b,EAAEogB,iBAEF,IAAMo7I,EAAkBx7J,EAAE/L,OAAOsiF,QAAQ55E,KACzByB,EAAE,IAAD,OAAKo9J,IAAmBF,UAAU,UAC3Cv8J,KAAK,eAAe8b,UAp+B5B,G,MCTFgD,QAAO,SAACzf,GAENA,EAAEzG,GAAG8jK,eAAiB,WAA2B,IAAlBC,EAAkB,uDAAN,KAEnC9iK,EAAQwF,EAAEpH,MAAM,GAElBgC,EAASoF,EAAE,6BAAD,OAA8BxF,EAAM29E,QAAQ55E,KAA5C,OACRg/J,EAAcv9J,EAAE,0BAAD,OAA2BxF,EAAM29E,QAAQ55E,KAAzC,OACfi/J,EAAcx9J,EAAE,IAAD,OAAKxF,EAAM29E,QAAQ55E,OAExCi/J,EAAY7tB,UAAU,CACpBx0E,QAAS,WAEOoiG,EAAYL,UAAU,CAClCxB,UAAW,WACT6B,EAAYr7I,QAAQ,aAGHg7I,UAAU,UACxBv8J,KAAK,eAAe8b,QAE7By9C,OAAQ,aACRL,aAAc,eAGhB2jG,EAAY9/I,GAAG,UAAU,WACvB,IAAI+/I,EAAYF,EAAY/jK,MACxBkkK,EAAYF,EAAYhkK,MAC5BoB,EAAO,GAAGrH,MAAV,UAAqBmqK,GAArB,OAA8C,KAAbD,GAAgC,KAAbC,EAAkBJ,EAAY,IAAlF,OAAuFG,MAGzFF,EAAY7/I,GAAG,UAAU,WACvB,IAAI+/I,EAAYF,EAAY/jK,MACxBkkK,EAAYF,EAAYhkK,MAC5BoB,EAAO,GAAGrH,MAAV,UAAqBmqK,GAArB,OAA8C,KAAbD,GAAgC,KAAbC,EAAkBJ,EAAY,IAAlF,OAAuFG,U","file":"js/mdb.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 225);\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.3.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar nativeFunctionToString = require('../internals/function-to-string');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = {};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var bind = require('../internals/bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","module.exports = false;\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var shared = require('../internals/shared');\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n return createDict();\n};\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","exports.f = Object.getOwnPropertySymbols;\n","module.exports = require('../internals/global');\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n return !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n createNonEnumerableProperty(ArrayPrototype, UNSCOPABLES, create(null));\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !method || !fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var global = require('../internals/global');\nvar nativeFunctionToString = require('../internals/function-to-string');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar DataView = global.DataView;\nvar DataViewPrototype = DataView && DataView.prototype;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar NATIVE_ARRAY_BUFFER = !!(global.ArrayBuffer && DataView);\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar isView = function isView(it) {\n var klass = classof(it);\n return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportProto = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportStatic = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\n// WebKit bug - the same parent prototype for typed arrays and data view\nif (NATIVE_ARRAY_BUFFER && setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER: NATIVE_ARRAY_BUFFER,\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportProto: exportProto,\n exportStatic: exportStatic,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","module.exports = {};\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\nvar ObjectPrototype = Object.prototype;\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (toString !== ObjectPrototype.toString) {\n redefine(ObjectPrototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar JSON = global.JSON;\nvar nativeJSONStringify = JSON && JSON.stringify;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = NATIVE_SYMBOL && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nJSON && $({ target: 'JSON', stat: true, forced: !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return nativeJSONStringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || nativeJSONStringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || nativeJSONStringify(Object(symbol)) != '{}';\n}) }, {\n stringify: function stringify(it) {\n var args = [it];\n var index = 1;\n var replacer, $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return nativeJSONStringify.apply(JSON, args);\n }\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar SLOPPY_METHOD = sloppyArrayMethod('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\nvar IS_CONCAT_SPREADABLE_SUPPORT = !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","exports.f = require('../internals/well-known-symbol');\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var redefine = require('../internals/redefine');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = DatePrototype[TO_STRING];\nvar getTime = DatePrototype.getTime;\n\n// `Date.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.tostring\nif (new Date(NaN) + '' != INVALID_DATE) {\n redefine(DatePrototype, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? nativeDateToString.call(this) : INVALID_DATE;\n });\n}\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n }\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('map') }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar classof = require('../internals/classof');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = String(test) !== '[object z]' ? function toString() {\n return '[object ' + classof(this) + ']';\n} : test.toString;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/forced-string-trim-method');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/parse-float');\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n parseFloat: parseFloatImplementation\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","export default class MaterialSelectViewRenderer {\r\n\r\n constructor(view) {\r\n\r\n this.view = view;\r\n }\r\n\r\n get shouldValidate() {\r\n return this.view.options.validate;\r\n }\r\n\r\n get shouldInheritTabindex() {\r\n return this.view.$nativeSelect.data('inherit-tabindex') !== false;\r\n }\r\n\r\n get isMultiple() {\r\n return this.view.isMultiple;\r\n }\r\n\r\n get isSearchable() {\r\n return this.view.isSearchable;\r\n }\r\n\r\n get isRequired() {\r\n return this.view.isRequired;\r\n }\r\n\r\n get isEditable() {\r\n return this.view.isEditable;\r\n }\r\n\r\n get isDisabled() {\r\n return this.view.isDisabled;\r\n }\r\n\r\n get isDefaultMaterialInput() {\r\n return this.view.options.defaultMaterialInput;\r\n }\r\n\r\n get isCustomSelect() {\r\n return this.view.$materialSelect.hasClass('custom-select') && this.view.$materialSelect.hasClass('select-dropdown');\r\n }\r\n\r\n destroy() {\r\n\r\n const currentUuid = this.view.$nativeSelect.data('select-id');\r\n\r\n this.view.$nativeSelect.data('select-id', null).removeClass('initialized');\r\n this.view.$nativeSelect.parent().find('span.caret').remove();\r\n this.view.$nativeSelect.parent().find('input').remove();\r\n \r\n if( this.view.$nativeSelect.hasClass('select-wrapper')) {\r\n this.view.$nativeSelect.find('select').unwrap();\r\n }\r\n \r\n $(`ul#select-options-${currentUuid}`).remove();\r\n }\r\n\r\n render() {\r\n\r\n this.setWrapperClasses();\r\n this.setMaterialSelectInitialValue();\r\n\r\n this.view.$nativeSelect.data('select-id', this.view.properties.id);\r\n this.view.$nativeSelect.before(this.view.$selectWrapper);\r\n\r\n if (this.view.options.showResetButton) {\r\n\r\n this.appendResetButton();\r\n }\r\n\r\n this.appendDropdownIcon();\r\n this.appendMaterialSelect();\r\n this.appendMaterialOptionsList();\r\n this.appendNativeSelect();\r\n this.appendSelectLabel();\r\n this.appendCustomTemplateParts();\r\n\r\n if (this.shouldValidate) {\r\n\r\n this.appendValidationFeedbackElements();\r\n }\r\n\r\n if (this.isRequired) {\r\n\r\n this.enableValidation();\r\n }\r\n\r\n if (!this.isDisabled) {\r\n\r\n this.setMaterialOptionsListMaxHeight();\r\n this.view.dropdown = this.view.$materialSelect.dropdown({\r\n hover: false,\r\n closeOnClick: false,\r\n resetScroll: false\r\n });\r\n }\r\n\r\n if (this.shouldInheritTabindex) {\r\n\r\n this.view.$materialSelect.attr('tabindex', this.view.$nativeSelect.attr('tabindex'));\r\n }\r\n\r\n if (this.isDefaultMaterialInput) {\r\n\r\n this.view.$mainLabel.css('top', '-7px');\r\n }\r\n\r\n if (this.isCustomSelect) {\r\n\r\n this.view.$materialSelect.css({\r\n display: 'inline-block',\r\n width: '100%',\r\n height: 'calc(1.5em + .75rem + 2px)',\r\n padding: '.375rem 1.75rem .375rem .75rem',\r\n fontSize: '1rem',\r\n lineHeight: '1.5',\r\n backgroundColor: '#fff',\r\n border: '1px solid #ced4da'\r\n });\r\n }\r\n\r\n this.addAccessibilityAttributes();\r\n this.markInitialized();\r\n }\r\n\r\n setWrapperClasses() {\r\n\r\n if (this.isDefaultMaterialInput) {\r\n\r\n this.view.$selectWrapper\r\n .addClass(\r\n this.view.$nativeSelect.attr('class').split(' ').filter((el) => el !== 'md-form').join(' ')\r\n )\r\n .css({\r\n marginTop: '1.5rem',\r\n marginBottom: '1.5rem'\r\n });\r\n\r\n } else {\r\n this.view.$selectWrapper.addClass(this.view.$nativeSelect.attr('class'));\r\n }\r\n }\r\n\r\n setMaterialSelectInitialValue() {\r\n\r\n if (!this.view.options.placeholder) {\r\n\r\n const sanitizedLabelHtml = this.view.$materialSelectInitialOption.replace(/\"/g, '"').replace(/ +/g, ' ').trim();\r\n this.view.$materialSelect.val(sanitizedLabelHtml);\r\n } else {\r\n\r\n this.view.$materialSelect.attr('placeholder', this.view.options.placeholder);\r\n if (!this.view.$nativeSelect.find('option[value=\"\"][selected][disabled][data-mdb-placeholder]').length) {\r\n\r\n this.view.$nativeSelect.prepend('');\r\n }\r\n }\r\n }\r\n\r\n appendDropdownIcon() {\r\n\r\n if (this.isDisabled) {\r\n\r\n this.view.$dropdownIcon.addClass('disabled');\r\n }\r\n\r\n this.view.$selectWrapper.append(this.view.$dropdownIcon);\r\n }\r\n\r\n appendResetButton() {\r\n\r\n if (this.isDisabled) {\r\n\r\n this.view.$btnReset.addClass('disabled');\r\n }\r\n\r\n if (this.view.$nativeSelect.get(0).selectedIndex === -1) {\r\n\r\n this.view.$btnReset.hide();\r\n }\r\n\r\n this.view.$selectWrapper.append(this.view.$btnReset);\r\n }\r\n\r\n appendMaterialSelect() {\r\n\r\n this.view.$selectWrapper.append(this.view.$materialSelect);\r\n }\r\n\r\n appendMaterialOptionsList() {\r\n\r\n if (this.isSearchable) {\r\n\r\n this.appendSearchInputOption();\r\n }\r\n\r\n if (this.isEditable && this.isSearchable) {\r\n\r\n this.appendAddOptionBtn();\r\n }\r\n\r\n this.buildMaterialOptions();\r\n\r\n if (this.isMultiple) {\r\n\r\n this.appendToggleAllCheckbox();\r\n }\r\n\r\n this.view.$selectWrapper.append(this.view.$materialOptionsList);\r\n }\r\n\r\n appendNativeSelect() {\r\n\r\n this.view.$nativeSelect.appendTo(this.view.$selectWrapper);\r\n }\r\n\r\n appendSelectLabel() {\r\n\r\n if (this.view.$materialSelect.val() || this.view.options.placeholder) {\r\n\r\n this.view.$mainLabel.addClass('active');\r\n }\r\n\r\n this.view.$mainLabel[this.isDisabled ? 'addClass' : 'removeClass']('disabled');\r\n\r\n this.view.$mainLabel.appendTo(this.view.$selectWrapper);\r\n }\r\n\r\n appendCustomTemplateParts() {\r\n\r\n this.view.$customTemplateParts.each((_, element) => {\r\n\r\n const $templatePart = $(element);\r\n $templatePart.appendTo(this.view.$materialOptionsList).wrap('
  • ');\r\n });\r\n\r\n this.view.$btnSave.appendTo(this.view.$selectWrapper).clone().appendTo(this.view.$materialOptionsList);\r\n }\r\n\r\n appendValidationFeedbackElements() {\r\n\r\n this.view.$validFeedback.insertAfter(this.view.$selectWrapper);\r\n this.view.$invalidFeedback.insertAfter(this.view.$selectWrapper);\r\n }\r\n\r\n enableValidation() {\r\n\r\n this.view.$nativeSelect.css({\r\n position: 'absolute',\r\n top: '1rem',\r\n left: '0',\r\n height: '0',\r\n width: '0',\r\n opacity: '0',\r\n padding: '0',\r\n 'pointer-events': 'none'\r\n });\r\n\r\n if (this.view.$nativeSelect.attr('style').indexOf('inline!important') === -1) {\r\n\r\n this.view.$nativeSelect.attr('style', `${this.view.$nativeSelect.attr('style')} display: inline!important;`);\r\n }\r\n\r\n this.view.$nativeSelect.attr('tabindex', -1);\r\n this.view.$nativeSelect.data('inherit-tabindex', false);\r\n }\r\n\r\n setMaterialOptionsListMaxHeight() {\r\n const $tempWrapper = $('
    ').appendTo($('body'));\r\n $tempWrapper.css({\r\n position: 'absolute !important',\r\n visibility: 'hidden !important',\r\n display: 'block !important'\r\n });\r\n\r\n this.view.$materialOptionsList.show();\r\n const $optionsListClone = this.view.$materialOptionsList.clone().appendTo($tempWrapper);\r\n\r\n const multiplier = this.view.options.visibleOptions;\r\n let additionalHeight = 0;\r\n const $materialOptions = $optionsListClone.find('li').not('.disabled');\r\n const optionHeight = $materialOptions.first().text().trim() === '' ? $materialOptions.eq(1).height() : $materialOptions.first().height();\r\n\r\n const optionsCount = $materialOptions.length;\r\n\r\n if (this.isSearchable) {\r\n additionalHeight += this.view.$searchInput.height();\r\n }\r\n\r\n if (this.isMultiple) {\r\n additionalHeight += this.view.$toggleAll.height();\r\n }\r\n\r\n this.view.$materialOptionsList.hide();\r\n $tempWrapper.remove();\r\n\r\n if (multiplier >= 0 && multiplier < optionsCount) {\r\n\r\n const maxHeight = optionHeight * multiplier + additionalHeight;\r\n this.view.$materialOptionsList.css('max-height', maxHeight);\r\n this.view.$materialSelect.data('maxheight', maxHeight);\r\n }\r\n }\r\n\r\n addAccessibilityAttributes() {\r\n\r\n this.view.$materialSelect.attr({\r\n role: this.isSearchable ? 'combobox' : 'listbox',\r\n 'aria-multiselectable': this.isMultiple,\r\n 'aria-disabled': this.isDisabled,\r\n 'aria-required': this.isRequired,\r\n 'aria-labelledby': this.view.$mainLabel.attr('id'),\r\n 'aria-haspopup': true,\r\n 'aria-expanded': false\r\n });\r\n\r\n if (this.view.$searchInput) {\r\n\r\n this.view.$searchInput.attr('role', 'searchbox');\r\n }\r\n\r\n this.view.$materialOptionsList.find('li').each(function () {\r\n\r\n const $this = $(this);\r\n $this.attr({\r\n role: 'option',\r\n 'aria-selected': $this.hasClass('active'),\r\n 'aria-disabled': $this.hasClass('disabled')\r\n });\r\n });\r\n }\r\n\r\n markInitialized() {\r\n\r\n this.view.$nativeSelect.addClass('initialized');\r\n }\r\n\r\n appendSearchInputOption() {\r\n\r\n const placeholder = this.view.$nativeSelect.attr('searchable');\r\n const divClass = this.isDefaultMaterialInput ? '' : 'md-form';\r\n const inputClass = this.isDefaultMaterialInput ? 'select-default mb-2' : '';\r\n\r\n this.view.$searchInput = $(`
    `);\r\n this.view.$materialOptionsList.append(this.view.$searchInput);\r\n this.view.$searchInput.on('click', (e) => e.stopPropagation());\r\n }\r\n\r\n appendAddOptionBtn() {\r\n\r\n this.view.$searchInput.append(this.view.$addOptionBtn);\r\n }\r\n\r\n buildMaterialOptions() {\r\n\r\n this.view.$nativeSelectChildren.each((index, option) => {\r\n\r\n const $this = $(option);\r\n\r\n if ($this.is('option')) {\r\n\r\n this.buildSingleOption($this, this.isMultiple ? 'multiple' : '');\r\n } else if ($this.is('optgroup')) {\r\n\r\n const $materialOptgroup = $(`
  • ${$this.attr('label')}
  • `);\r\n this.view.$materialOptionsList.append($materialOptgroup);\r\n\r\n const $optgroupOptions = $this.children('option');\r\n $optgroupOptions.each((index, optgroupOption) => {\r\n\r\n this.buildSingleOption($(optgroupOption), 'optgroup-option');\r\n });\r\n }\r\n });\r\n }\r\n\r\n appendToggleAllCheckbox() {\r\n\r\n const firstOption = this.view.$materialOptionsList.find('li').first();\r\n if (firstOption.hasClass('disabled') && firstOption.find('input').prop('disabled')) {\r\n firstOption.after(this.view.$toggleAll);\r\n } else {\r\n this.view.$materialOptionsList.find('li').first().before(this.view.$toggleAll);\r\n }\r\n\r\n }\r\n\r\n addNewOption() {\r\n\r\n const val = this.view.$searchInput.find('input').val();\r\n const $newOption = $(``).prop('selected', true);\r\n if (!this.isMultiple) {\r\n this.view.$nativeSelectChildren.each((index, option) => {\r\n $(option).attr('selected', false);\r\n });\r\n }\r\n this.view.$nativeSelect.append($newOption);\r\n }\r\n\r\n buildSingleOption($nativeSelectChild, type) {\r\n\r\n const disabled = $nativeSelectChild.is(':disabled') ? 'disabled' : '';\r\n const active = $nativeSelectChild.is(':selected') ? 'active' : '';\r\n const optgroupClass = type === 'optgroup-option' ? 'optgroup-option' : '';\r\n const iconUrl = $nativeSelectChild.data('icon');\r\n const fas = $nativeSelectChild.data('fas') ? ` ` : '';\r\n const far = $nativeSelectChild.data('far') ? ` ` : '';\r\n const fab = $nativeSelectChild.data('fab') ? ` ` : '';\r\n\r\n const classes = $nativeSelectChild.attr('class');\r\n\r\n const iconHtml = iconUrl ? `\"\"` : '';\r\n const checkboxHtml = this.isMultiple ? `` : '';\r\n const secondaryText = $nativeSelectChild.data('secondary-text') ? `

    ${$nativeSelectChild.data('secondary-text')}

    ` : '';\r\n\r\n this.view.$materialOptionsList.append($(`
  • ${iconHtml}${checkboxHtml} ${$nativeSelectChild.html()} ${fas} ${far} ${fab} ${secondaryText}
  • `));\r\n }\r\n}\r\n","module.exports = jQuery;","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/parse-int');\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","import MaterialSelectViewRenderer from './material-select-view-renderer';\r\n\r\nexport default class MaterialSelectView {\r\n\r\n // eslint-disable-next-line object-curly-newline\r\n constructor($nativeSelect, { options, properties: { id } }) {\r\n\r\n this.properties = {\r\n id,\r\n isMultiple: Boolean($nativeSelect.attr('multiple')),\r\n isSearchable: Boolean($nativeSelect.attr('searchable')),\r\n isRequired: Boolean($nativeSelect.attr('required')),\r\n isEditable: Boolean($nativeSelect.attr('editable'))\r\n };\r\n\r\n this.options = this._copyOptions(options);\r\n\r\n this.$nativeSelect = $nativeSelect;\r\n this.$selectWrapper = $('
    ');\r\n this.$materialOptionsList = $(``);\r\n this.$materialSelectInitialOption = $nativeSelect.find('option:selected').text() || $nativeSelect.find('option:first').text() || '';\r\n this.$nativeSelectChildren = this.$nativeSelect.children('option, optgroup');\r\n this.$materialSelect = $(``);\r\n this.$dropdownIcon = this.options.defaultMaterialInput ? '' : $('');\r\n this.$searchInput = null;\r\n this.$noSearchResultsInfo = $(`
  • ${this.options.labels.noSearchResults}
  • `);\r\n this.$toggleAll = $(`
  • `);\r\n this.$addOptionBtn = $('');\r\n this.$mainLabel = this._jQueryFallback(this.$nativeSelect.next('label.mdb-main-label'), $(`label[for='${this.properties.id}']`));\r\n this.$customTemplateParts = this._jQueryFallback(this.$nativeSelect.nextUntil('select', '.mdb-select-template-part'), $(`[data-mdb-select-template-part-for='${this.properties.id}']`));\r\n this.$btnSave = this.$nativeSelect.nextUntil('select', '.btn-save'); // @Depreciated\r\n this.$btnReset = $('×');\r\n\r\n this.$validFeedback = $(`
    ${this.options.labels.validFeedback}
    `);\r\n this.$invalidFeedback = $(`
    ${this.options.labels.invalidFeedback}
    `);\r\n\r\n this.keyCodes = {\r\n tab: 9,\r\n enter: 13,\r\n shift: 16,\r\n alt: 18,\r\n esc: 27,\r\n space: 32,\r\n end: 35,\r\n home: 36,\r\n arrowUp: 38,\r\n arrowDown: 40\r\n };\r\n \r\n // eslint-disable-next-line no-undef\r\n this.renderer = new MaterialSelectViewRenderer(this);\r\n this.dropdown = null;\r\n }\r\n\r\n static get isMobileDevice() {\r\n\r\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n }\r\n\r\n get isMultiple() {\r\n return this.properties.isMultiple;\r\n }\r\n\r\n get isSearchable() {\r\n return this.properties.isSearchable;\r\n }\r\n\r\n get isRequired() {\r\n return this.properties.isRequired;\r\n }\r\n\r\n get isEditable() {\r\n return this.properties.isEditable;\r\n }\r\n\r\n get isDisabled() {\r\n return this.$nativeSelect.is(':disabled');\r\n }\r\n\r\n destroy() {\r\n\r\n this.renderer.destroy();\r\n }\r\n\r\n render() {\r\n\r\n this.renderer.render();\r\n }\r\n\r\n selectPreselectedOptions(handler) {\r\n\r\n if (this.isMultiple) {\r\n\r\n this.$nativeSelect.find('option:selected:not(:disabled)').each((i, element) => {\r\n\r\n let index = element.index;\r\n handler(index);\r\n\r\n if (this._isPlaceholderPresent())\r\n index -= 1;\r\n \r\n this.$materialOptionsList.find('li:not(.optgroup):not(.select-toggle-all)').eq(index).addClass('selected active').find(':checkbox').prop('checked', true);\r\n \r\n });\r\n } else {\r\n\r\n const $preselectedOption = this.$nativeSelect.find('option:selected').first();\r\n const indexOfPreselectedOption = this.$nativeSelect.find('option').index($preselectedOption.get(0));\r\n if ($preselectedOption.get(0) && $preselectedOption.attr('disabled') !== 'disabled') {\r\n handler(indexOfPreselectedOption);\r\n }\r\n }\r\n }\r\n\r\n bindResetButtonClick(handler) {\r\n\r\n this.$btnReset.on('click', (e) => {\r\n\r\n e.preventDefault();\r\n\r\n if (!this.$nativeSelect.find('option[value=\"\"][selected][disabled][data-mdb-novalue]').length) {\r\n\r\n this._toggleResetButton(true);\r\n\r\n this.$materialSelect.val(this.isMultiple ? [] : '');\r\n this.$materialSelect.trigger('close');\r\n this.$mainLabel.removeClass('active');\r\n this.$materialOptionsList.find('li.active, li.selected').removeClass('active').removeClass('selected');\r\n this.$materialOptionsList.find('li[aria-selected=\"true\"]').attr('aria-selected', 'false');\r\n this.$materialOptionsList.find('input[type=\"checkbox\"]').prop('checked', false);\r\n\r\n handler();\r\n }\r\n });\r\n }\r\n\r\n bindAddNewOptionClick() {\r\n\r\n this.$addOptionBtn.on('click', this.renderer.addNewOption.bind(this.renderer));\r\n }\r\n\r\n bindMaterialSelectFocus() {\r\n\r\n this.$materialSelect.on('focus', (e) => {\r\n \r\n const $this = $(e.target);\r\n \r\n $this.parent().addClass('active');\r\n\r\n if ($('ul.select-dropdown').not(this.$materialOptionsList.get(0)).is(':visible')) {\r\n\r\n $('input.select-dropdown').trigger('close');\r\n }\r\n\r\n this.$mainLabel.addClass('active');\r\n\r\n if (!this.$materialOptionsList.is(':visible')) {\r\n\r\n const label = $this.val();\r\n const $selectedOption = this.$materialOptionsList.find('li').filter(function () {\r\n\r\n return $(this).text().toLowerCase() === label.toLowerCase();\r\n }).get(0);\r\n\r\n this._selectSingleOption($selectedOption);\r\n }\r\n\r\n if (!this.isMultiple) {\r\n\r\n this.$mainLabel.addClass('active');\r\n }\r\n });\r\n }\r\n\r\n bindMaterialSelectClick() {\r\n\r\n this.$materialSelect.on('mousedown', (e) => {\r\n\r\n if (e.which === 3) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n this.$materialSelect.on('click', (e) => {\r\n\r\n e.stopPropagation();\r\n\r\n this.$mainLabel.addClass('active');\r\n\r\n this._updateDropdownScrollTop();\r\n });\r\n }\r\n\r\n bindMaterialSelectBlur() {\r\n\r\n this.$materialSelect.on('blur', (e) => {\r\n\r\n const $this = $(e.target);\r\n\r\n $this.parent().removeClass('active');\r\n\r\n if (!this.isMultiple && !this.isSearchable) {\r\n\r\n $this.trigger('close');\r\n }\r\n\r\n this.$materialOptionsList.find('li.selected').removeClass('selected');\r\n });\r\n }\r\n\r\n bindMaterialOptionsListTouchstart() {\r\n\r\n this.$materialOptionsList.on('touchstart', (e) => e.stopPropagation());\r\n }\r\n\r\n bindMaterialSelectKeydown() {\r\n\r\n // eslint-disable-next-line complexity\r\n this.$materialSelect.on('keydown', (e) => {\r\n\r\n const $this = $(e.target);\r\n\r\n const isTab = e.which === this.keyCodes.tab;\r\n\r\n const isArrowUp = e.which === this.keyCodes.arrowUp;\r\n const isArrowDown = e.which === this.keyCodes.arrowDown;\r\n const isEnter = e.which === this.keyCodes.enter;\r\n const isEsc = e.which === this.keyCodes.esc;\r\n const isAltWithArrowDown = isArrowDown && e.altKey;\r\n const isAltWithArrowUp = isArrowUp && e.altKey;\r\n const isHome = e.which === this.keyCodes.home;\r\n const isEnd = e.which === this.keyCodes.end;\r\n const isSpace = e.which === this.keyCodes.space;\r\n\r\n const isDropdownExpanded = this.$materialOptionsList.is(':visible');\r\n\r\n switch (true) {\r\n case isTab:\r\n return this._handleTabKey($this);\r\n\r\n case !isDropdownExpanded && (isEnter || isAltWithArrowDown):\r\n case this.isMultiple && !isDropdownExpanded && (isArrowDown || isArrowUp):\r\n $this.trigger('open');\r\n return this._updateDropdownScrollTop();\r\n\r\n case isDropdownExpanded && (isEsc || isAltWithArrowUp):\r\n return $this.trigger('close');\r\n\r\n case !isDropdownExpanded && (isArrowDown || isArrowUp):\r\n return this._handleClosedArrowUpDownKey(e.which);\r\n\r\n case isDropdownExpanded && (isArrowDown || isArrowUp):\r\n return this._handleArrowUpDownKey(e.which);\r\n\r\n case isDropdownExpanded && isHome:\r\n return this._handleHomeKey();\r\n\r\n case isDropdownExpanded && isEnd:\r\n return this._handleEndKey();\r\n\r\n case isDropdownExpanded && (isEnter || isSpace):\r\n return this._handleEnterKey($this);\r\n\r\n default:\r\n return this._handleLetterKey(e);\r\n }\r\n });\r\n }\r\n\r\n bindMaterialSelectDropdownToggle() {\r\n\r\n this.$materialSelect.on('open', () => this.$materialSelect.attr('aria-expanded', 'true'));\r\n this.$materialSelect.on('close', () => this.$materialSelect.attr('aria-expanded', 'false'));\r\n }\r\n\r\n bindToggleAllClick(handler) {\r\n\r\n this.$toggleAll.on('click', (e) => {\r\n\r\n const checkbox = $(this.$toggleAll).find('input[type=\"checkbox\"]').first();\r\n const currentState = Boolean($(checkbox).prop('checked'));\r\n const isToggleChecked = !currentState;\r\n\r\n $(checkbox).prop('checked', !currentState);\r\n\r\n this.$materialOptionsList.find('li:not(.optgroup):not(.select-toggle-all)').each((materialOptionIndex, materialOption) => {\r\n\r\n const $materialOption = $(materialOption);\r\n const $optionCheckbox = $materialOption.find('input[type=\"checkbox\"]');\r\n\r\n $materialOption.attr('aria-selected', isToggleChecked);\r\n\r\n if (isToggleChecked && $optionCheckbox.is(':checked') || !isToggleChecked && !$optionCheckbox.is(':checked') || $(materialOption).is(':hidden') || $(materialOption).is('.disabled')) {\r\n\r\n return;\r\n }\r\n\r\n $optionCheckbox.prop('checked', isToggleChecked);\r\n this.$nativeSelect.find('option').eq(materialOptionIndex).prop('selected', isToggleChecked);\r\n\r\n $materialOption.toggleClass('active');\r\n this._selectOption(materialOption);\r\n handler(materialOptionIndex);\r\n });\r\n\r\n this.$nativeSelect.data('stop-refresh', true);\r\n this._triggerChangeOnNativeSelect();\r\n this.$nativeSelect.removeData('stop-refresh');\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n bindMaterialOptionMousedown() {\r\n\r\n this.$materialOptionsList.on('mousedown', (e) => {\r\n\r\n const option = e.target;\r\n\r\n const inModal = $('.modal-content').find(this.$materialOptionsList).length;\r\n if (inModal && option.scrollHeight > option.offsetHeight) {\r\n\r\n e.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n bindMaterialOptionClick(handler) {\r\n\r\n this.$materialOptionsList.find('li:not(.optgroup)').not(this.$toggleAll).each((materialOptionIndex, materialOption) => {\r\n $(materialOption).on('click', (e) => {\r\n\r\n e.stopPropagation();\r\n\r\n this._toggleResetButton(false);\r\n\r\n const $this = $(materialOption);\r\n\r\n if ($this.hasClass('disabled') || $this.hasClass('optgroup')) {\r\n\r\n return;\r\n }\r\n\r\n let selected = true;\r\n\r\n if (this.isMultiple) {\r\n\r\n $this.find('input[type=\"checkbox\"]').prop('checked', (index, oldPropertyValue) => !oldPropertyValue);\r\n\r\n const hasOptgroup = Boolean(this.$nativeSelect.find('optgroup').length);\r\n const thisIndex = this._isToggleAllPresent() && !this._isPlaceholderPresent() ? $this.index() - 1 : $this.index();\r\n\r\n /* eslint-disable max-statements-per-line */\r\n switch (true) {\r\n case this.isSearchable && hasOptgroup: selected = handler(thisIndex - $this.prevAll('.optgroup').length - 1); break;\r\n case this.isSearchable: selected = handler(thisIndex - 1); break;\r\n case hasOptgroup: selected = handler(thisIndex - $this.prevAll('.optgroup').length); break;\r\n default: selected = handler(thisIndex); break;\r\n }\r\n /* eslint-enable max-statements-per-line */\r\n\r\n if (this._isToggleAllPresent()) {\r\n\r\n this._updateToggleAllOption();\r\n }\r\n\r\n this.$materialSelect.trigger('focus');\r\n } else {\r\n \r\n this.$materialOptionsList.find('li').removeClass('active').attr('aria-selected', 'false');\r\n const $selectedOption = $this.children().last()[0].childNodes[0];\r\n this.$materialSelect.val($($selectedOption).text().replace(/ +/g, ' ').trim());\r\n this.$materialSelect.trigger('close');\r\n }\r\n \r\n $this.toggleClass('active');\r\n const ariaSelected = $this.attr('aria-selected');\r\n $this.attr('aria-selected', ariaSelected === 'true' ? 'false' : 'true');\r\n this._selectSingleOption($this);\r\n this.$nativeSelect.data('stop-refresh', true);\r\n const selectedOptionIndex = this._isPlaceholderPresent() ? materialOptionIndex + 1 : materialOptionIndex;\r\n this.$nativeSelect.find('option').eq(selectedOptionIndex).prop('selected', selected);\r\n this.$nativeSelect.removeData('stop-refresh');\r\n this._triggerChangeOnNativeSelect();\r\n \r\n if (this.$materialSelect.val()) {\r\n\r\n this.$mainLabel.addClass('active');\r\n }\r\n\r\n if ($this.hasClass('li-added')) {\r\n\r\n this.renderer.buildSingleOption($this, '');\r\n }\r\n });\r\n });\r\n }\r\n\r\n bindSingleMaterialOptionClick() {\r\n\r\n this.$materialOptionsList.find('li').on('click', () => {\r\n\r\n this.$materialSelect.trigger('close');\r\n });\r\n }\r\n\r\n bindSearchInputKeyup() {\r\n\r\n this.$searchInput.find('.search').on('keyup', (e) => {\r\n\r\n const $this = $(e.target);\r\n\r\n const isTab = e.which === this.keyCodes.tab;\r\n const isEsc = e.which === this.keyCodes.esc;\r\n const isEnter = e.which === this.keyCodes.enter;\r\n const isEnterWithShift = isEnter && e.shiftKey;\r\n const isArrowUp = e.which === this.keyCodes.arrowUp;\r\n const isArrowDown = e.which === this.keyCodes.arrowDown;\r\n\r\n if (isArrowDown || isTab || isEsc || isArrowUp) {\r\n\r\n this.$materialSelect.focus();\r\n this._handleArrowUpDownKey(e.which);\r\n return;\r\n }\r\n\r\n const $ul = $this.closest('ul');\r\n const searchValue = $this.val();\r\n const $options = $ul.find('li span.filtrable');\r\n\r\n let isOptionInList = false;\r\n\r\n $options.each(function () {\r\n\r\n const $option = $(this);\r\n if (typeof this.outerHTML === 'string') {\r\n\r\n const liValue = this.textContent.toLowerCase();\r\n\r\n if (liValue.includes(searchValue.toLowerCase())) {\r\n\r\n $option.show().parent().show();\r\n } else {\r\n $option.hide().parent().hide();\r\n }\r\n\r\n if (liValue.trim() === searchValue.toLowerCase()) {\r\n isOptionInList = true;\r\n }\r\n }\r\n });\r\n\r\n if (isEnter) {\r\n if (this.isEditable && !isOptionInList) {\r\n this.renderer.addNewOption();\r\n return;\r\n }\r\n if (isEnterWithShift) {\r\n this._handleEnterWithShiftKey($this);\r\n }\r\n this.$materialSelect.trigger('open');\r\n return;\r\n }\r\n\r\n this.$addOptionBtn[searchValue && this.isEditable && !isOptionInList ? 'show' : 'hide']();\r\n\r\n const anyOptionMatch = $options.filter((_, e) => $(e).is(':visible') && !$(e).parent().hasClass('disabled')).length !== 0;\r\n if (!anyOptionMatch) {\r\n\r\n this.$toggleAll.hide();\r\n this.$materialOptionsList.append(this.$noSearchResultsInfo);\r\n } else {\r\n\r\n this.$toggleAll.show();\r\n this.$materialOptionsList.find(this.$noSearchResultsInfo).remove();\r\n this._updateToggleAllOption();\r\n }\r\n\r\n this.dropdown.updatePosition(this.$materialSelect, this.$materialOptionsList);\r\n });\r\n }\r\n\r\n bindHtmlClick() {\r\n\r\n $('html').on('click', (e) => {\r\n\r\n if (!$(e.target).closest(`#select-options-${this.properties.id}`).length && !$(e.target).hasClass('mdb-select') && $(`#select-options-${this.properties.id}`).hasClass('active')) {\r\n\r\n this.$materialSelect.trigger('close');\r\n\r\n if (!this.$materialSelect.val() && !this.options.placeholder) {\r\n\r\n this.$mainLabel.removeClass('active');\r\n }\r\n }\r\n\r\n if (this.isSearchable && this.$searchInput !== null && this.$materialOptionsList.hasClass('active')) {\r\n\r\n this.$materialOptionsList.find('.search-wrap input.search').focus();\r\n }\r\n });\r\n }\r\n\r\n bindMobileDevicesMousedown() {\r\n\r\n $('select').siblings('input.select-dropdown', 'input.multi-bs-select').on('mousedown', (e) => {\r\n if (MaterialSelectView.isMobileDevice && (e.clientX >= e.target.clientWidth || e.clientY >= e.target.clientHeight)) {\r\n e.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n bindSaveBtnClick() { // @Depreciated\r\n\r\n this.$btnSave.on('click', () => {\r\n\r\n this.$materialSelect.trigger('close');\r\n });\r\n }\r\n\r\n _toggleResetButton(hide) {\r\n\r\n const previousValue = this.$nativeSelect.data('stop-refresh');\r\n this.$nativeSelect.attr('data-stop-refresh', 'true');\r\n\r\n if (hide) {\r\n\r\n this.$nativeSelect.prepend('');\r\n } else {\r\n\r\n this.$nativeSelect.find('option[data-mdb-novalue]').remove();\r\n }\r\n\r\n this.$nativeSelect.attr('data-stop-refresh', previousValue);\r\n this.$btnReset[hide ? 'hide' : 'show']();\r\n }\r\n\r\n _isToggleAllPresent() {\r\n\r\n return this.$materialOptionsList.find(this.$toggleAll).length;\r\n }\r\n\r\n _isPlaceholderPresent() {\r\n if (this.$nativeSelect.attr('data-placeholder') || this.options.placeholder) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n \r\n }\r\n\r\n _updateToggleAllOption() {\r\n\r\n const $allOptionsButToggleAll = this.$materialOptionsList.find('li').not('.select-toggle-all, .disabled, :hidden').find('[type=checkbox]');\r\n const $checkedOptionsButToggleAll = $allOptionsButToggleAll.filter(':checked');\r\n const isToggleAllChecked = this.$toggleAll.find('[type=checkbox]').is(':checked');\r\n\r\n if ($checkedOptionsButToggleAll.length === $allOptionsButToggleAll.length && !isToggleAllChecked) {\r\n\r\n this.$toggleAll.find('[type=checkbox]').prop('checked', true);\r\n } else if ($checkedOptionsButToggleAll.length < $allOptionsButToggleAll.length && isToggleAllChecked) {\r\n\r\n this.$toggleAll.find('[type=checkbox]').prop('checked', false);\r\n }\r\n }\r\n\r\n _handleTabKey($materialSelect) {\r\n\r\n this._handleEscKey($materialSelect);\r\n }\r\n\r\n _handleEnterWithShiftKey($materialSelect) {\r\n\r\n if (!this.isMultiple) {\r\n\r\n this._handleEnterKey($materialSelect);\r\n } else {\r\n\r\n this.$toggleAll.trigger('click');\r\n }\r\n }\r\n\r\n _handleEnterKey($materialSelect) {\r\n\r\n const $activeOption = this.$materialOptionsList.find('li.selected:not(.disabled)');\r\n\r\n $activeOption.trigger('click').addClass('active');\r\n\r\n this._removeKeyboardActiveClass();\r\n\r\n if (!this.isMultiple) {\r\n\r\n $materialSelect.trigger('close');\r\n }\r\n }\r\n\r\n _handleArrowUpDownKey(keyCode) {\r\n\r\n // eslint-disable-next-line object-curly-newline\r\n const { $matchedMaterialOption, $activeOption } = this._getArrowMatchedActiveOptions(keyCode, false);\r\n\r\n this._selectSingleOption($matchedMaterialOption);\r\n this._removeKeyboardActiveClass();\r\n\r\n if (!$matchedMaterialOption.find('input').is(':checked')) {\r\n\r\n $matchedMaterialOption.removeClass(this.options.keyboardActiveClass);\r\n }\r\n\r\n if (!$activeOption.hasClass('selected') && !$activeOption.find('input').is(':checked') && this.isMultiple) {\r\n\r\n $activeOption.removeClass('active', this.options.keyboardActiveClass);\r\n }\r\n\r\n $matchedMaterialOption.addClass(this.options.keyboardActiveClass);\r\n\r\n if ($matchedMaterialOption.position()) {\r\n this.$materialOptionsList.scrollTop(this.$materialOptionsList.scrollTop() + $matchedMaterialOption.position().top);\r\n }\r\n }\r\n\r\n _handleClosedArrowUpDownKey(keyCode) {\r\n\r\n // eslint-disable-next-line object-curly-newline\r\n const { $matchedMaterialOption } = this._getArrowMatchedActiveOptions(keyCode, true);\r\n\r\n $matchedMaterialOption.trigger('click').addClass('active');\r\n\r\n this._updateDropdownScrollTop();\r\n this._selectSingleOption($matchedMaterialOption);\r\n }\r\n\r\n _getArrowMatchedActiveOptions(keyCode, closedDropdown) {\r\n\r\n const visible = closedDropdown ? '' : ':visible';\r\n const $availableOptions = this.$materialOptionsList.find(`li${visible}`).not('.disabled, .select-toggle-all');\r\n\r\n const $firstOption = $availableOptions.first();\r\n const $lastOption = $availableOptions.last();\r\n const anySelected = this.$materialOptionsList.find('li.selected').length > 0;\r\n\r\n let $matchedMaterialOption = null;\r\n let $activeOption = null;\r\n\r\n const isArrowUp = keyCode === this.keyCodes.arrowUp;\r\n if (isArrowUp) {\r\n\r\n const $currentOption = anySelected ? this.$materialOptionsList.find('li.selected').first() : $lastOption;\r\n let $prevOption = $currentOption.prev(`li${visible}:not(.disabled, .select-toggle-all)`);\r\n $activeOption = $prevOption;\r\n\r\n $availableOptions.each((key, el) => {\r\n if ($(el).hasClass(this.options.keyboardActiveClass)) {\r\n $prevOption = $availableOptions.eq(key - 1);\r\n $activeOption = $availableOptions.eq(key);\r\n }\r\n });\r\n\r\n $matchedMaterialOption = $currentOption.is($firstOption) || !anySelected ? $currentOption : $prevOption;\r\n } else {\r\n\r\n const $currentOption = anySelected ? this.$materialOptionsList.find('li.selected').first() : $firstOption;\r\n let $nextOption = $currentOption.next(`li${visible}:not(.disabled, .select-toggle-all)`);\r\n $activeOption = $nextOption;\r\n\r\n $availableOptions.each((key, el) => {\r\n if ($(el).hasClass(this.options.keyboardActiveClass)) {\r\n $nextOption = $availableOptions.eq(key + 1);\r\n $activeOption = $availableOptions.eq(key);\r\n }\r\n });\r\n\r\n $matchedMaterialOption = $currentOption.is($lastOption) || !anySelected ? $currentOption : $nextOption;\r\n }\r\n\r\n return {\r\n $matchedMaterialOption,\r\n $activeOption\r\n };\r\n }\r\n\r\n _handleHomeKey() {\r\n\r\n this._selectBoundaryOption('first');\r\n }\r\n\r\n _handleEndKey() {\r\n\r\n this._selectBoundaryOption('last');\r\n }\r\n\r\n _selectBoundaryOption(firstOrLast = '') {\r\n\r\n const $boundaryOption = this.$materialOptionsList.find('li:visible').not('.disabled, .select-toggle-all')[firstOrLast]();\r\n\r\n this._selectSingleOption($boundaryOption);\r\n\r\n this._removeKeyboardActiveClass();\r\n\r\n if (!$boundaryOption.find('input').is(':checked')) {\r\n\r\n $boundaryOption.removeClass(this.options.keyboardActiveClass);\r\n }\r\n\r\n $boundaryOption.addClass(this.options.keyboardActiveClass);\r\n\r\n if ($boundaryOption.position()) {\r\n this.$materialOptionsList.scrollTop(this.$materialOptionsList.scrollTop() + $boundaryOption.position().top);\r\n }\r\n }\r\n\r\n _handleEscKey($materialSelect) {\r\n\r\n this._removeKeyboardActiveClass();\r\n $materialSelect.trigger('close');\r\n }\r\n\r\n _handleLetterKey(e) {\r\n\r\n this._removeKeyboardActiveClass();\r\n\r\n if (this.isSearchable) {\r\n\r\n const isLetter = e.which > 46 && e.which < 91;\r\n const isNumber = e.which > 93 && e.which < 106;\r\n const isBackspace = e.which === 8;\r\n\r\n if (isLetter || isNumber) {\r\n this.$searchInput.find('input').focus();\r\n }\r\n if (isBackspace) {\r\n this.$searchInput.find('input').val('').focus();\r\n }\r\n\r\n } else {\r\n\r\n let filterQueryString = '';\r\n const letter = String.fromCharCode(e.which).toLowerCase();\r\n const nonLetters = Object.keys(this.keyCodes).map((key) => this.keyCodes[key]);\r\n const isLetterSearchable = letter && nonLetters.indexOf(e.which) === -1;\r\n\r\n if (isLetterSearchable) {\r\n\r\n filterQueryString += letter;\r\n\r\n const $matchedMaterialOption = this.$materialOptionsList.find('li').filter((index, element) => $(element).text().toLowerCase().includes(filterQueryString)).first();\r\n\r\n if (!this.isMultiple) {\r\n\r\n this.$materialOptionsList.find('li').removeClass('active');\r\n }\r\n\r\n $matchedMaterialOption.addClass('active');\r\n this._selectSingleOption($matchedMaterialOption);\r\n this._updateDropdownScrollTop();\r\n }\r\n }\r\n }\r\n\r\n _removeKeyboardActiveClass() {\r\n\r\n this.$materialOptionsList.find('li').removeClass(this.options.keyboardActiveClass);\r\n }\r\n\r\n _triggerChangeOnNativeSelect() {\r\n\r\n const keyboardEvt = new KeyboardEvent('change', {\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n this.$nativeSelect.get(0).dispatchEvent(keyboardEvt);\r\n }\r\n\r\n _selectSingleOption(newOption) {\r\n\r\n this.$materialOptionsList.find('li.selected').removeClass('selected');\r\n\r\n this._selectOption(newOption);\r\n }\r\n\r\n _updateDropdownScrollTop() {\r\n\r\n const $preselected = this.$materialOptionsList.find('li.active').not('.disabled').first();\r\n if ($preselected.length) {\r\n this.$materialOptionsList.scrollTo($preselected);\r\n } else {\r\n this.$materialOptionsList.scrollTop(0);\r\n }\r\n }\r\n\r\n _selectOption(newOption) {\r\n\r\n const option = $(newOption);\r\n option.addClass('selected');\r\n }\r\n\r\n _copyOptions(options) {\r\n\r\n return $.extend({}, options);\r\n }\r\n\r\n _jQueryFallback(...$elements) {\r\n\r\n let $lastElem = null;\r\n for (let i = 0; i < $elements.length; i++) {\r\n\r\n $lastElem = $elements[i];\r\n if ($lastElem.length) {\r\n return $lastElem;\r\n }\r\n }\r\n\r\n return $lastElem;\r\n }\r\n}\r\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseFloat = global.parseFloat;\nvar FORCED = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = nativeParseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : nativeParseFloat;\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (e) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (f) { /* empty */ }\n } return false;\n};\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n return !thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined ? pattern\n : inheritIfRequired(CORRECT_NEW\n ? new NativeRegExp(patternIsRegExp && !flagsAreUndefined ? pattern.source : pattern, flags)\n : NativeRegExp((patternIsRegExp = pattern instanceof RegExpWrapper)\n ? pattern.source\n : pattern, patternIsRegExp && flagsAreUndefined ? getFlags.call(pattern) : flags)\n , thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeSort = [].sort;\nvar test = [1, 2, 3];\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar SLOPPY_METHOD = sloppyArrayMethod('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('lastIndexOf');\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = (NEGATIVE_ZERO || SLOPPY_METHOD) ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return nativeParseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : nativeParseInt;\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = 1 / 0;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar packIEEE754 = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpackIEEE754 = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new NativeArrayBuffer(); // eslint-disable-line no-new\n new NativeArrayBuffer(1.5); // eslint-disable-line no-new\n new NativeArrayBuffer(NaN); // eslint-disable-line no-new\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataView[PROTOTYPE].setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","jQuery(($) => {\r\n\r\n class Forms {\r\n\r\n constructor() {\r\n this.inputSelector = `${['text', 'password', 'email', 'url', 'tel', 'number', 'search', 'search-md']\r\n .map((selector) => `input[type=${selector}]`)\r\n .join(', ')}, textarea`;\r\n this.textAreaSelector = '.materialize-textarea';\r\n this.$text = $('.md-textarea-auto');\r\n this.$body = $('body');\r\n this.$document = $(document);\r\n }\r\n\r\n init() {\r\n this.toggleActiveClass($('input[autofocus]'), 'add');\r\n\r\n if (this.$text.length) {\r\n let observe;\r\n \r\n if (window.attachEvent) {\r\n observe = function (element, event, handler) {\r\n element.attachEvent(`on${event}`, handler);\r\n };\r\n } else {\r\n observe = function (element, event, handler) {\r\n element.addEventListener(event, handler, false);\r\n };\r\n }\r\n \r\n this.$text.each(function () {\r\n const self = this;\r\n \r\n function resize() {\r\n self.style.height = 'auto';\r\n self.style.height = `${self.scrollHeight}px`;\r\n }\r\n \r\n function delayedResize() {\r\n window.setTimeout(resize, 0);\r\n }\r\n \r\n observe(self, 'change', resize);\r\n observe(self, 'cut', delayedResize);\r\n observe(self, 'paste', delayedResize);\r\n observe(self, 'drop', delayedResize);\r\n observe(self, 'keydown', delayedResize);\r\n \r\n resize();\r\n });\r\n }\r\n\r\n $(this.inputSelector).each((index, input) => {\r\n const $this = $(input);\r\n const isNotValid = input.validity.badInput;\r\n this.updateTextFields($this);\r\n\r\n if (isNotValid) {\r\n this.toggleActiveClass($this, 'add');\r\n }\r\n });\r\n \r\n this.addOnFocusEvent();\r\n this.addOnBlurEvent();\r\n this.addOnChangeEvent();\r\n this.addOnResetEvent();\r\n this.appendHiddenDiv();\r\n this.ChangeDateInputType();\r\n\r\n $(this.textAreaSelector).each(this.textAreaAutoResize);\r\n this.$body.on('keyup keydown', this.textAreaSelector, this.textAreaAutoResize);\r\n }\r\n\r\n toggleActiveClass($this, action) {\r\n action = `${action}Class`;\r\n $this.siblings('label, i')[action]('active');\r\n }\r\n\r\n addOnFocusEvent() {\r\n this.$document.on('focus', this.inputSelector, (e) => {\r\n this.toggleActiveClass($(e.target), 'add');\r\n });\r\n }\r\n\r\n addOnBlurEvent() {\r\n this.$document.on('blur', this.inputSelector, (e) => {\r\n const $this = $(e.target);\r\n const noValue = !$this.val();\r\n const isValid = !e.target.validity.badInput;\r\n const noPlaceholder = $this.attr('placeholder') === undefined;\r\n \r\n if (noValue && isValid && noPlaceholder) {\r\n this.toggleActiveClass($this, 'remove');\r\n }\r\n\r\n this.validateField($this);\r\n });\r\n }\r\n\r\n addOnChangeEvent() {\r\n this.$document.on('change', this.inputSelector, (e) => {\r\n const $this = $(e.target);\r\n \r\n this.updateTextFields($this);\r\n this.validateField($this);\r\n });\r\n }\r\n\r\n addOnResetEvent() {\r\n this.$document.on('reset', (e) => {\r\n const $formReset = $(e.target);\r\n \r\n if ($formReset.is('form')) {\r\n const $formInputs = $formReset.find(this.inputSelector);\r\n \r\n $formInputs\r\n .removeClass('valid invalid')\r\n .each((index, input) => {\r\n const $this = $(input);\r\n const noDefaultValue = !$this.val();\r\n const noPlaceholder = !$this.attr('placeholder');\r\n \r\n if (noDefaultValue && noPlaceholder) {\r\n this.toggleActiveClass($this, 'remove');\r\n }\r\n });\r\n \r\n $formReset.find('select.initialized').each((index, select) => {\r\n const $select = $(select);\r\n const $visibleInput = $select.siblings('input.select-dropdown');\r\n const defaultValue = $select.children('[selected]').val();\r\n \r\n $select.val(defaultValue);\r\n $visibleInput.val(defaultValue);\r\n });\r\n }\r\n });\r\n }\r\n\r\n appendHiddenDiv() {\r\n if (!$('.hiddendiv').first().length) {\r\n const $hiddenDiv = $('
    ');\r\n this.$body.append($hiddenDiv);\r\n }\r\n }\r\n\r\n updateTextFields($input) {\r\n\r\n const hasValue = Boolean($input.val().length);\r\n const hasPlaceholder = Boolean($input.attr('placeholder'));\r\n const addOrRemove = hasValue || hasPlaceholder ? 'add' : 'remove';\r\n \r\n this.toggleActiveClass($input, addOrRemove);\r\n }\r\n\r\n validateField($input) {\r\n if ($input.hasClass('validate')) {\r\n const value = $input.val();\r\n const noValue = !value.length;\r\n const isValid = !$input[0].validity.badInput;\r\n \r\n if (noValue && isValid) {\r\n $input.removeClass('valid').removeClass('invalid');\r\n } else {\r\n const valid = $input[0].validity.valid;\r\n const length = Number($input.attr('length')) || 0;\r\n \r\n if (valid && (!length || length > value.length)) {\r\n $input.removeClass('invalid').addClass('valid');\r\n } else {\r\n $input.removeClass('valid').addClass('invalid');\r\n }\r\n }\r\n }\r\n }\r\n\r\n ChangeDateInputType() {\r\n const $dateInputs = $('input[type=\"date\"]');\r\n \r\n $dateInputs.each((index, $item) => {\r\n $item.type = 'text';\r\n });\r\n \r\n $dateInputs.on('focus', $item => {\r\n $item.target.type = 'date';\r\n });\r\n \r\n $dateInputs.on('blur', $item => {\r\n $item.target.type = 'text';\r\n if($item.target.value.length === 0) {\r\n $(`label[for=${$item.target.id}]`).removeClass('active');\r\n }\r\n }); \r\n }\r\n \r\n textAreaAutoResize() {\r\n const $textarea = $(this);\r\n \r\n if ($textarea.val().length) {\r\n const $hiddenDiv = $('.hiddendiv');\r\n const fontFamily = $textarea.css('font-family');\r\n const fontSize = $textarea.css('font-size');\r\n \r\n if (fontSize) {\r\n $hiddenDiv.css('font-size', fontSize);\r\n }\r\n \r\n if (fontFamily) {\r\n $hiddenDiv.css('font-family', fontFamily);\r\n }\r\n \r\n if ($textarea.attr('wrap') === 'off') {\r\n $hiddenDiv.css('overflow-wrap', 'normal').css('white-space', 'pre');\r\n }\r\n \r\n $hiddenDiv.text(`${$textarea.val()}\\n`);\r\n const content = $hiddenDiv.html().replace(/\\n/g, '
    ');\r\n $hiddenDiv.html(content);\r\n \r\n // When textarea is hidden, width goes crazy.\r\n // Approximate with half of window size\r\n $hiddenDiv.css('width', $textarea.is(':visible') ? $textarea.width() : $(window).width() / 2);\r\n $textarea.css('height', $hiddenDiv.height());\r\n }\r\n } \r\n }\r\n\r\n //auto init Forms\r\n const forms = new Forms();\r\n forms.init();\r\n\r\n});\r\n","jQuery(function ($) {\r\n\r\n const SCROLLING_NAVBAR_OFFSET_TOP = 50;\r\n\r\n $(window).on('scroll', () => {\r\n\r\n const $navbar = $('.navbar');\r\n \r\n if (!$navbar.length) return;\r\n\r\n $('.scrolling-navbar')[$navbar.offset().top > SCROLLING_NAVBAR_OFFSET_TOP ? 'addClass' : 'removeClass']('top-nav-collapse');\r\n });\r\n});\r\n","jQuery(($) => {\r\n $.fn.mdbTreeview = function () {\r\n\r\n const $this = $(this);\r\n\r\n if ($this.hasClass('treeview')) {\r\n treeviewToggle($this);\r\n }\r\n\r\n if ($this.hasClass('treeview-animated')) {\r\n treeviewAnimated($this);\r\n }\r\n\r\n if ($this.hasClass('treeview-colorful')) {\r\n treeviewColorful($this);\r\n }\r\n };\r\n\r\n function treeviewToggle($this) {\r\n const $toggler = $this.find('.rotate');\r\n\r\n $toggler.each(function () {\r\n const $this = $(this);\r\n\r\n $this.off('click');\r\n $this.on('click', function () {\r\n const $this = $(this);\r\n\r\n $this.siblings('.nested').toggleClass('active');\r\n $this.toggleClass('down');\r\n });\r\n });\r\n }\r\n\r\n function treeviewAnimated($this) {\r\n const $elements = $this.find('.treeview-animated-element');\r\n const $closed = $this.find('.closed');\r\n\r\n $this.find('.nested').hide();\r\n\r\n $closed.off('click');\r\n $closed.on('click', function () {\r\n const $this = $(this);\r\n const $target = $this.siblings('.nested');\r\n const $pointer = $this.children('.fa-angle-right');\r\n\r\n $this.toggleClass('open');\r\n $pointer.toggleClass('down');\r\n\r\n if (!$target.hasClass('active')) {\r\n $target.addClass('active').slideDown();\r\n } else {\r\n $target.removeClass('active').slideUp();\r\n }\r\n });\r\n\r\n $elements.off('click');\r\n $elements.on('click', function () {\r\n const $this = $(this);\r\n\r\n if ($this.hasClass('opened')) {\r\n $this.removeClass('opened');\r\n } else {\r\n $elements.removeClass('opened');\r\n $this.addClass('opened');\r\n }\r\n });\r\n }\r\n\r\n function treeviewColorful($this) {\r\n const $elements = $this.find('.treeview-colorful-element');\r\n const $header = $this.find('.treeview-colorful-items-header');\r\n\r\n $this.find('.nested').hide();\r\n\r\n $header.off('click');\r\n $header.on('click', function () {\r\n const $this = $(this);\r\n const $target = $this.siblings('.nested');\r\n const $pointerPlus = $this.children('.fa-plus-circle');\r\n const $pointerMinus = $this.children('.fa-minus-circle');\r\n\r\n $this.toggleClass('open');\r\n $pointerPlus.removeClass('fa-plus-circle');\r\n $pointerPlus.addClass('fa-minus-circle');\r\n $pointerMinus.removeClass('fa-minus-circle');\r\n $pointerMinus.addClass('fa-plus-circle');\r\n\r\n if (!$target.hasClass('active')) {\r\n $target.addClass('active').slideDown();\r\n } else {\r\n $target.removeClass('active').slideUp();\r\n }\r\n });\r\n\r\n $elements.off('click');\r\n $elements.on('click', function () {\r\n const $this = $(this);\r\n\r\n if ($this.hasClass('opened')) {\r\n $elements.removeClass('opened');\r\n } else {\r\n $elements.removeClass('opened');\r\n $this.addClass('opened');\r\n }\r\n });\r\n }\r\n});\r\n","jQuery($ => {\r\n\r\n class WOW {\r\n init() {\r\n $('.wow').wow();\r\n }\r\n }\r\n\r\n class MDBWow {\r\n constructor($wowElement, customization) {\r\n this.$wowElement = $wowElement;\r\n this.customization = customization;\r\n this.animated = true;\r\n this.options = this.assignElementCustomization();\r\n }\r\n\r\n init() {\r\n $(window).scroll(() => {\r\n if (this.animated) {\r\n this.hide();\r\n } else {\r\n this.mdbWow();\r\n }\r\n });\r\n\r\n this.appear();\r\n }\r\n\r\n assignElementCustomization() {\r\n return {\r\n animationName: this.$wowElement.css('animation-name'),\r\n offset: 100,\r\n iteration: this.fallback()\r\n .or(this.$wowElement.data('wow-iteration'))\r\n .or(1)\r\n .value(),\r\n duration: this.fallback()\r\n .or(this.$wowElement.data('wow-duration'))\r\n .or(1000)\r\n .value(),\r\n delay: this.fallback()\r\n .or(this.$wowElement.data('wow-delay'))\r\n .or(0)\r\n .value()\r\n };\r\n }\r\n\r\n mdbWow() {\r\n if (this.$wowElement.css('visibility') === 'visible') {\r\n return;\r\n }\r\n\r\n if (this.shouldElementBeVisible(true)) {\r\n setTimeout(() => this.$wowElement.removeClass('animated'), this.countRemoveTime());\r\n this.appear();\r\n }\r\n }\r\n\r\n appear() {\r\n this.$wowElement.addClass('animated');\r\n this.$wowElement.css({\r\n visibility: 'visible',\r\n 'animation-name': this.options.animationName,\r\n 'animation-iteration-count': this.options.iteration,\r\n 'animation-duration': this.options.duration,\r\n 'animation-delay': this.options.delay\r\n });\r\n }\r\n\r\n hide() {\r\n if (this.shouldElementBeVisible(false)) {\r\n this.$wowElement.removeClass('animated');\r\n this.$wowElement.css({\r\n 'animation-name': 'none',\r\n visibility: 'hidden'\r\n });\r\n } else {\r\n setTimeout(() => {\r\n this.$wowElement.removeClass('animated');\r\n }, this.countRemoveTime());\r\n }\r\n this.mdbWow();\r\n this.animated = !this.animated;\r\n }\r\n\r\n shouldElementBeVisible(state) {\r\n const thisElementOffset = this.getOffset(this.$wowElement[0]);\r\n const thisElementHeight = this.$wowElement.height();\r\n const documentHeight = $(document).height();\r\n const windowHeight = window.innerHeight;\r\n const scroll = window.scrollY;\r\n\r\n const isElementTopVisible = windowHeight + scroll - this.options.offset > thisElementOffset;\r\n const isElementBottomVisible = windowHeight + scroll - this.options.offset > thisElementOffset + thisElementHeight;\r\n const isScrolledToTop = scroll < thisElementOffset;\r\n const isScrolledToBottom = scroll < thisElementOffset + thisElementHeight;\r\n const isDocumentHeightEqual = windowHeight + scroll === documentHeight;\r\n const isOffsetHigherThanDocument = thisElementOffset + this.options.offset > documentHeight;\r\n const isElementBottomHidden = windowHeight + scroll - this.options.offset < thisElementOffset;\r\n const isScrolledOverTop = scroll > thisElementOffset + this.options.offset;\r\n const isNotScrolledToTop = scroll < thisElementOffset + this.options.offset;\r\n const isScrolledOverElement = thisElementOffset + thisElementHeight > documentHeight - this.options.offset;\r\n\r\n let returnLogic = false;\r\n\r\n if (state) {\r\n returnLogic = isElementTopVisible && isScrolledToTop ||\r\n isElementBottomVisible && isScrolledToBottom ||\r\n isDocumentHeightEqual && isOffsetHigherThanDocument;\r\n } else {\r\n returnLogic = isElementTopVisible && isScrolledOverTop ||\r\n isElementBottomHidden && isNotScrolledToTop ||\r\n isScrolledOverElement;\r\n }\r\n return returnLogic;\r\n }\r\n\r\n countRemoveTime() {\r\n const defaultAnimationTime = this.$wowElement.css('animation-duration').slice(0, -1) * 1000;\r\n let removeTime = 0;\r\n\r\n if (this.options.duration) {\r\n removeTime = defaultAnimationTime + this.checkOptionsStringFormat(this.options.duration);\r\n }\r\n if (this.options.delay) {\r\n removeTime += this.checkOptionsStringFormat(this.options.delay);\r\n }\r\n return removeTime;\r\n }\r\n\r\n checkOptionsStringFormat(element) {\r\n let valueToReturn;\r\n\r\n if (element.toString().slice(-1) === 's') {\r\n valueToReturn = element.toString().slice(0, -1);\r\n } else if (!isNaN(element.toString().slice(-1))) {\r\n valueToReturn = element;\r\n } else {\r\n return console.log('Not supported animation customization format.');\r\n }\r\n\r\n return valueToReturn;\r\n }\r\n\r\n getOffset(element) {\r\n const box = element.getBoundingClientRect();\r\n const body = document.body;\r\n const docEl = document.documentElement;\r\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\r\n const clientTop = docEl.clientTop || body.clientTop || 0;\r\n const top = box.top + scrollTop - clientTop;\r\n\r\n return Math.round(top);\r\n }\r\n\r\n fallback() {\r\n return {\r\n _value: undefined,\r\n or(value) {\r\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\r\n this._value = value;\r\n }\r\n return this;\r\n },\r\n value() {\r\n return this._value;\r\n }\r\n };\r\n }\r\n }\r\n\r\n $.fn.wow = function (options) {\r\n this.each(function () {\r\n const mdbWow = new MDBWow($(this), options);\r\n mdbWow.init();\r\n });\r\n };\r\n\r\n window.WOW = WOW;\r\n\r\n});\r\n","jQuery(($) => {\r\n const isTouchDevice = 'ontouchstart' in document.documentElement;\r\n\r\n const toggleOpen = (btn, open) => {\r\n if (open && !btn.hasClass('active') || !open && btn.hasClass('active')) {\r\n btn[open ? 'addClass' : 'removeClass']('active');\r\n const btnList = document.querySelectorAll('ul .btn-floating');\r\n btnList.forEach((el) => el.classList[open ? 'add' : 'remove']('shown'));\r\n }\r\n };\r\n\r\n const handleClick = btn => {\r\n if (btn.hasClass('active')) {\r\n toggleOpen(btn, false);\r\n } else {\r\n toggleOpen(btn, true);\r\n }\r\n };\r\n\r\n const $btn = $('.fixed-action-btn:not(.smooth-scroll) > .btn-floating');\r\n $btn.on('mouseenter', e => {\r\n if (!isTouchDevice) {\r\n toggleOpen($(e.currentTarget).parent(), true);\r\n }\r\n });\r\n $btn.parent().on('mouseleave', e => toggleOpen($(e.currentTarget), false));\r\n $btn.on('click', e => {\r\n e.preventDefault();\r\n handleClick($(e.currentTarget).parent());\r\n });\r\n\r\n $.fn.extend({\r\n openFAB() {\r\n toggleOpen($(this), true);\r\n },\r\n closeFAB() {\r\n toggleOpen($(this), false);\r\n }\r\n });\r\n});\r\n\r\n","jQuery(function ($) {\r\n\r\n $(document).on('click.card', '.card', function (e) {\r\n\r\n const $this = $(this);\r\n const $reveal = $this.find('.card-reveal');\r\n\r\n if ($reveal.length) {\r\n\r\n const $clickedElem = $(e.target);\r\n const isTitleClicked = $clickedElem.is('.card-reveal .card-title');\r\n const isTitleIconClicked = $clickedElem.is('.card-reveal .card-title i');\r\n const isActivatorClicked = $clickedElem.is('.card .activator');\r\n const isActivatorIconClicked = $clickedElem.is('.card .activator i');\r\n\r\n if (isTitleClicked || isTitleIconClicked) {\r\n takeRevealDown($reveal);\r\n } else if (isActivatorClicked || isActivatorIconClicked) {\r\n takeRevealUp($reveal);\r\n }\r\n }\r\n });\r\n\r\n const takeRevealUp = (revealElem) => {\r\n\r\n revealElem.css({\r\n display: 'block'\r\n }).velocity({\r\n translateY: '-100%'\r\n }, {\r\n duration: 300,\r\n queue: false,\r\n easing: 'easeInOutQuad'\r\n });\r\n };\r\n\r\n const takeRevealDown = (revealElem) => {\r\n\r\n revealElem.velocity({\r\n translateY: 0\r\n }, {\r\n duration: 225,\r\n queue: false,\r\n easing: 'easeInOutQuad',\r\n complete: function complete() {\r\n revealElem.css({\r\n display: 'none'\r\n });\r\n }\r\n });\r\n };\r\n\r\n $('.rotate-btn').on('click', function () {\r\n\r\n $(this).closest('.card').toggleClass('flipped');\r\n\r\n });\r\n\r\n $(window).on('load', function () {\r\n\r\n const $rotatingCards = $('.card-rotating');\r\n $rotatingCards.each(function () {\r\n const $this = $(this);\r\n\r\n const $cardWrapper = $this.parent();\r\n const $front = $this.find('.front');\r\n const $back = $this.find('.back');\r\n const $frontHeight = $this.find('.front').outerHeight();\r\n const $backHeight = $this.find('.back').outerHeight();\r\n\r\n if ($frontHeight > $backHeight) $($cardWrapper, $back).height($frontHeight);\r\n else if ($frontHeight < $backHeight) $($cardWrapper, $front).height($backHeight);\r\n else $($cardWrapper).height($backHeight);\r\n });\r\n\r\n });\r\n\r\n $('.card-share > a').on('click', function (e) {\r\n\r\n e.preventDefault();\r\n\r\n $(this)\r\n .toggleClass('share-expanded')\r\n .parent()\r\n .find('div')\r\n .toggleClass('social-reveal-active');\r\n });\r\n\r\n $('.map-card').on('click', function () {\r\n $(this).find('.card-body').toggleClass('closed');\r\n });\r\n\r\n});\r\n","jQuery(($) => {\r\n\r\n $.fn.characterCounter = function () {\r\n\r\n return this.each(function () {\r\n\r\n const $this = $(this);\r\n const hasLengthAttribute = $this.attr('length') !== undefined;\r\n\r\n if (hasLengthAttribute) {\r\n\r\n $this.on('input focus', updateCounter);\r\n $this.on('blur', removeCounterElement);\r\n\r\n addCounterElement($this);\r\n }\r\n });\r\n };\r\n\r\n function updateCounter() {\r\n\r\n const $this = $(this);\r\n const maxLength = Number($this.attr('length'));\r\n const actualLength = Number($this.val().length);\r\n const isValidLength = actualLength <= maxLength;\r\n\r\n $this.parent().find('span[class=\"character-counter\"]')\r\n .html(`${actualLength}/${maxLength}`);\r\n\r\n addInputStyle(isValidLength, $this);\r\n }\r\n\r\n function addCounterElement($input) {\r\n\r\n const $counterElement = $('')\r\n .addClass('character-counter')\r\n .css('float', 'right')\r\n .css('font-size', '12px')\r\n .css('height', 1);\r\n\r\n $input.parent().append($counterElement);\r\n }\r\n\r\n function removeCounterElement() {\r\n\r\n $(this).parent().find('span[class=\"character-counter\"]').html('');\r\n }\r\n\r\n function addInputStyle(isValidLength, $input) {\r\n\r\n const inputHasInvalidClass = $input.hasClass('invalid');\r\n if (isValidLength && inputHasInvalidClass) {\r\n\r\n $input.removeClass('invalid');\r\n } else if (!isValidLength && !inputHasInvalidClass) {\r\n\r\n $input.removeClass('valid');\r\n $input.addClass('invalid');\r\n }\r\n }\r\n\r\n $(document).ready(() => {\r\n\r\n $('input, textarea').characterCounter();\r\n });\r\n});\r\n","jQuery(($) => {\r\n\r\n $.fn.collapsible = function (options) {\r\n\r\n const defaults = {\r\n accordion: undefined\r\n };\r\n\r\n options = $.extend(defaults, options);\r\n\r\n return this.each(function () {\r\n\r\n const $this = $(this);\r\n\r\n const $panelHeaders = $this.find('> li > .collapsible-header');\r\n\r\n const collapsibleType = $this.data('collapsible');\r\n\r\n $this.off('click.collapse', '.collapsible-header');\r\n $panelHeaders.off('click.collapse');\r\n\r\n\r\n if (options.accordion || collapsibleType === 'accordion' || collapsibleType === undefined) {\r\n\r\n $panelHeaders.on('click.collapse', (e) => {\r\n\r\n let element = $(e.target);\r\n\r\n if (isChildOfPanelHeader(element)) {\r\n\r\n element = getPanelHeader(element);\r\n }\r\n\r\n element.toggleClass('active');\r\n accordionOpen($this, element);\r\n });\r\n\r\n accordionOpen($this, $panelHeaders.filter('.active').first());\r\n } else {\r\n\r\n $panelHeaders.each(function () {\r\n\r\n $(this).on('click.collapse', (e) => {\r\n\r\n let element = $(e.target);\r\n if (isChildOfPanelHeader(element)) {\r\n\r\n element = getPanelHeader(element);\r\n }\r\n element.toggleClass('active');\r\n expandableOpen(element);\r\n });\r\n\r\n if ($(this).hasClass('active')) {\r\n\r\n expandableOpen($(this));\r\n }\r\n\r\n });\r\n }\r\n });\r\n };\r\n\r\n function accordionOpen($collapsible, object) {\r\n\r\n const $panelHeaders = $collapsible.find('> li > .collapsible-header');\r\n\r\n expandableOpen(object);\r\n\r\n $panelHeaders.not(object)\r\n .removeClass('active')\r\n .parent()\r\n .removeClass('active')\r\n .children('.collapsible-body')\r\n .stop(true, false)\r\n .slideUp({\r\n duration: 350,\r\n easing: 'easeOutQuart',\r\n queue: false,\r\n complete() {\r\n $(this).css('height', '');\r\n }\r\n });\r\n\r\n }\r\n\r\n function expandableOpen(object) {\r\n\r\n if (object.hasClass('active')) {\r\n object.parent().addClass('active');\r\n } else {\r\n object.parent().removeClass('active');\r\n }\r\n\r\n if (object.parent().hasClass('active')) {\r\n object.siblings('.collapsible-body').stop(true, false).slideDown({\r\n duration: 350,\r\n easing: 'easeOutQuart',\r\n queue: false,\r\n complete() {\r\n $(this).css('height', '');\r\n }\r\n });\r\n } else {\r\n object.siblings('.collapsible-body').stop(true, false).slideUp({\r\n duration: 350,\r\n easing: 'easeOutQuart',\r\n queue: false,\r\n complete() {\r\n $(this).css('height', '');\r\n }\r\n });\r\n }\r\n }\r\n\r\n function isChildOfPanelHeader(object) {\r\n\r\n const $panelHeader = getPanelHeader(object);\r\n return $panelHeader.length > 0;\r\n }\r\n\r\n function getPanelHeader(object) {\r\n\r\n return object.closest('li > .collapsible-header');\r\n }\r\n\r\n $('.collapsible').collapsible();\r\n\r\n});\r\n","jQuery(($) => {\r\n\r\n $(document).on('change', '.file-field input[type=\"file\"]', function () {\r\n\r\n const $this = $(this);\r\n console.log($this);\r\n const $fileField = $this.closest('.file-field');\r\n const $pathInput = $fileField.find('input.file-path');\r\n const files = $this.get(0).files;\r\n let fileNames = [];\r\n\r\n if (Array.isArray(files)) {\r\n fileNames = files.map(file => file.name);\r\n } else {\r\n fileNames = Object.values(files).map(file => file.name);\r\n }\r\n $pathInput.val(fileNames.join(', '));\r\n $pathInput.trigger('change');\r\n });\r\n});\r\n","(($) => {\r\n\r\n class MdbAutocomplete {\r\n\r\n constructor(input, options) {\r\n\r\n this.defaults = {\r\n data: {},\r\n dataColor: '',\r\n closeColor: '#4285f4',\r\n closeBlurColor: '#ced4da',\r\n inputFocus: '1px solid #4285f4',\r\n inputBlur: '1px solid #ced4da',\r\n inputFocusShadow: '0 1px 0 0 #4285f4',\r\n inputBlurShadow: '',\r\n visibleOptions: 5\r\n };\r\n\r\n this.enterCharCode = 13;\r\n this.homeCharCode = 36;\r\n this.endCharCode = 35;\r\n this.arrowUpCharCode = 38;\r\n this.arrowDownCharCode = 40;\r\n this.count = -1;\r\n this.nextScrollHeight = -45;\r\n this.$input = input;\r\n this.options = this.assignOptions(options);\r\n this.$clearButton = this.$input.next('.mdb-autocomplete-clear');\r\n this.$autocompleteWrap = $('
      ');\r\n }\r\n\r\n init() {\r\n \r\n this.handleEvents();\r\n }\r\n\r\n handleEvents() {\r\n\r\n this.setData();\r\n this.inputFocus();\r\n this.inputBlur();\r\n this.inputKeyupData();\r\n this.inputLiClick();\r\n this.clearAutocomplete();\r\n this.setAutocompleteWrapHeight();\r\n }\r\n\r\n assignOptions(options) {\r\n\r\n return $.extend({}, this.defaults, options);\r\n }\r\n\r\n setAutocompleteWrapHeight() {\r\n this.$autocompleteWrap.css('max-height', `${this.options.visibleOptions * 45}px`);\r\n }\r\n\r\n setData() {\r\n\r\n if (Object.keys(this.options.data).length) {\r\n this.$autocompleteWrap.insertAfter(this.$input);\r\n }\r\n }\r\n\r\n inputFocus() {\r\n\r\n this.$input.on('focus', () => {\r\n\r\n this.changeSVGcolors();\r\n this.$input.css('border-bottom', this.options.inputFocus);\r\n this.$input.css('box-shadow', this.options.inputFocusShadow);\r\n });\r\n }\r\n\r\n inputBlur() {\r\n\r\n this.$input.on('blur', () => {\r\n\r\n this.$input.css('border-bottom', this.options.inputBlur);\r\n this.$input.css('box-shadow', this.options.inputBlurShadow);\r\n });\r\n }\r\n\r\n inputKeyupData() {\r\n\r\n this.$input.on('keyup', e => {\r\n\r\n if (e.which === this.enterCharCode) {\r\n if (!this.options.data.includes(this.$input.val())) {\r\n this.options.data.push(this.$input.val());\r\n }\r\n this.$autocompleteWrap.find('.selected').trigger('click');\r\n this.$autocompleteWrap.empty();\r\n this.inputBlur();\r\n this.count = -1;\r\n this.nextScrollHeight = -45;\r\n return this.count;\r\n }\r\n\r\n const $inputValue = this.$input.val();\r\n\r\n this.$autocompleteWrap.empty();\r\n\r\n if ($inputValue.length) {\r\n\r\n this.appendOptions(this.options.data, $inputValue);\r\n\r\n const $ulList = this.$autocompleteWrap;\r\n const $ulItems = this.$autocompleteWrap.find('li');\r\n const nextItemHeight = $ulItems.eq(this.count).outerHeight();\r\n const previousItemHeight = $ulItems.eq(this.count - 1).outerHeight();\r\n\r\n if (e.which === this.homeCharCode) {\r\n\r\n this.homeHandler($ulList, $ulItems);\r\n }\r\n\r\n if (e.which === this.endCharCode) {\r\n\r\n this.endHandler($ulList, $ulItems);\r\n }\r\n\r\n if (e.which === this.arrowDownCharCode) {\r\n\r\n this.arrowDownHandler($ulList, $ulItems, nextItemHeight);\r\n } else if (e.which === this.arrowUpCharCode) {\r\n\r\n this.arrowUpHandler($ulList, $ulItems, nextItemHeight, previousItemHeight);\r\n }\r\n\r\n\r\n if ($inputValue.length === 0) {\r\n\r\n this.$clearButton.css('visibility', 'hidden');\r\n } else {\r\n\r\n this.$clearButton.css('visibility', 'visible');\r\n }\r\n\r\n this.$autocompleteWrap.children().css('color', this.options.dataColor);\r\n } else {\r\n this.$clearButton.css('visibility', 'hidden');\r\n }\r\n });\r\n }\r\n\r\n endHandler($ulList, $ulItems) {\r\n\r\n this.count = $ulItems.length - 1;\r\n this.nextScrollHeight = ($ulItems.length * 45 - 45);\r\n $ulList.scrollTop(($ulItems.length) * 45);\r\n $ulItems.eq(-1).addClass('selected');\r\n }\r\n\r\n homeHandler($ulList, $ulItems) {\r\n this.count = 0;\r\n this.nextScrollHeight = -45;\r\n $ulList.scrollTop(0);\r\n $ulItems.eq(0).addClass('selected');\r\n }\r\n\r\n arrowDownHandler($ulList, $ulItems, nextItemHeight) {\r\n\r\n if (this.count > $ulItems.length - 2) {\r\n\r\n this.count = -1;\r\n $ulItems.scrollTop(0);\r\n this.nextScrollHeight = -45;\r\n return;\r\n } else {\r\n\r\n this.count++;\r\n }\r\n\r\n this.nextScrollHeight += nextItemHeight;\r\n $ulList.scrollTop(this.nextScrollHeight);\r\n $ulItems.eq(this.count).addClass('selected');\r\n }\r\n\r\n arrowUpHandler($ulList, $ulItems, nextItemHeight, previousItemHeight) {\r\n\r\n if (this.count < 1) {\r\n this.count = $ulItems.length;\r\n $ulList.scrollTop($ulList.prop('scrollHeight'));\r\n this.nextScrollHeight = $ulList.prop('scrollHeight') - nextItemHeight;\r\n } else {\r\n\r\n this.count--;\r\n }\r\n this.nextScrollHeight -= previousItemHeight;\r\n $ulList.scrollTop(this.nextScrollHeight);\r\n $ulItems.eq(this.count).addClass('selected');\r\n }\r\n\r\n appendOptions(data, $inputValue) {\r\n\r\n for (const item in data) {\r\n\r\n if (data[item].toLowerCase().indexOf($inputValue.toLowerCase()) !== -1) {\r\n\r\n const option = $(`
    • ${data[item]}
    • `);\r\n\r\n this.$autocompleteWrap.append(option);\r\n }\r\n }\r\n }\r\n\r\n inputLiClick() {\r\n\r\n this.$autocompleteWrap.on('click', 'li', e => {\r\n e.preventDefault();\r\n\r\n this.$input.val($(e.target).text());\r\n this.$autocompleteWrap.empty();\r\n });\r\n }\r\n\r\n clearAutocomplete() {\r\n\r\n this.$clearButton.on('click', e => {\r\n e.preventDefault();\r\n\r\n this.count = -1;\r\n this.nextScrollHeight = -45;\r\n const $this = $(e.currentTarget);\r\n\r\n $this.parent().find('.mdb-autocomplete').val('');\r\n $this.css('visibility', 'hidden');\r\n this.$autocompleteWrap.empty();\r\n $this.parent().find('label').removeClass('active');\r\n });\r\n }\r\n\r\n changeSVGcolors() {\r\n\r\n if (this.$input.hasClass('mdb-autocomplete')) {\r\n\r\n this.$input.on('keyup', e => {\r\n\r\n this.fillSVG(e, this.options.closeColor);\r\n });\r\n\r\n this.$input.on('blur', e => {\r\n\r\n this.fillSVG(e, this.options.closeBlurColor);\r\n });\r\n }\r\n }\r\n\r\n fillSVG(e, color) {\r\n e.preventDefault();\r\n\r\n $(e.target).parent().find('.mdb-autocomplete-clear').find('svg').css('fill', color);\r\n }\r\n }\r\n\r\n $.fn.mdbAutocomplete = function (options) {\r\n return this.each(function () {\r\n const mdbAutocomplete = new MdbAutocomplete($(this), options);\r\n mdbAutocomplete.init();\r\n });\r\n };\r\n\r\n})(jQuery);\r\n","let loader_path = './dev/dist/mdb-addons/preloader.html';\r\nlet windowLoaded = false;\r\n\r\n$(window).on('load', function () {\r\n\r\n windowLoaded = true;\r\n});\r\n\r\njQuery(function ($) { \r\n $('body').attr('aria-busy', true);\r\n\r\n $('#preloader-markup').load(loader_path, function () {\r\n\r\n if (windowLoaded) {\r\n \r\n preloaderFading();\r\n } else {\r\n \r\n $(window).on('load', function () { \r\n\r\n preloaderFading(); \r\n });\r\n }\r\n });\r\n});\r\n\r\nfunction preloaderFading() {\r\n $('#mdb-preloader').fadeOut('slow');\r\n $('body').removeAttr('aria-busy');\r\n};\r\n","jQuery(($) => {\r\n\r\n const rangeWrapper = '.range-field';\r\n const rangeType = 'input[type=range]:not(.custom-range):not(.multi-range)';\r\n const thumbHtml = '';\r\n let rangeMousedown = false;\r\n\r\n function addThumb() {\r\n const $thumb = $(thumbHtml);\r\n $(rangeType).after($thumb);\r\n }\r\n\r\n $(document).on('change', rangeType, function () {\r\n const $thumb = $(this);\r\n const $thumbValue = $thumb.siblings('.thumb').find('.value');\r\n $thumbValue.html($thumb.val());\r\n });\r\n\r\n\r\n $(document).on('mousedown touchstart contextmenu', rangeType, function (e) {\r\n const $this = $(this);\r\n const noThumb = !$this.siblings('.thumb').length;\r\n const isRightClick = e.type === 'contextmenu';\r\n\r\n if (noThumb) {\r\n addThumb();\r\n }\r\n\r\n // this must be here. if you define $thumb before it's create $thumb be empty element.\r\n const $thumb = $this.siblings('.thumb');\r\n\r\n // prevent show thumb when mousemove after right click;\r\n if (isRightClick) {\r\n rangeMousedown = false;\r\n } else {\r\n rangeMousedown = true;\r\n }\r\n\r\n $this.addClass('active');\r\n\r\n if (!$thumb.hasClass('active')) {\r\n showThumb($thumb);\r\n }\r\n\r\n updateThumbPosition($(this), $thumb);\r\n\r\n // Set indicator value\r\n $thumb.find('.value').html($this.val());\r\n\r\n });\r\n\r\n $(document).on('mouseup touchend', rangeWrapper, function () {\r\n const $thumb = $(this).children('.thumb');\r\n\r\n rangeMousedown = false;\r\n\r\n if ($thumb.hasClass('active')) {\r\n hideThumb($thumb);\r\n }\r\n\r\n $thumb.removeClass('active');\r\n\r\n });\r\n\r\n $(document).on('input mousemove touchmove', rangeWrapper, function () {\r\n const $thumb = $(this).children('.thumb');\r\n\r\n if (rangeMousedown) {\r\n if (!$thumb.hasClass('active')) {\r\n showThumb($thumb);\r\n }\r\n\r\n updateThumbPosition($(this).children(rangeType), $thumb);\r\n\r\n $thumb.find('.value').html($thumb.siblings(rangeType).val());\r\n }\r\n });\r\n\r\n $(document).on('mouseout touchleave', rangeWrapper, function () {\r\n if (!rangeMousedown) {\r\n const $thumb = $(this).children('.thumb');\r\n\r\n if ($thumb.hasClass('active')) {\r\n hideThumb($thumb);\r\n }\r\n\r\n $thumb.removeClass('active');\r\n }\r\n });\r\n\r\n function updateThumbPosition($this, $thumb) {\r\n const minValue = $this.attr('min');\r\n const maxValue = $this.attr('max');\r\n const widthThumb = $this.width() - 13.5;\r\n const oneStep = widthThumb / (maxValue - minValue);\r\n let leftPosition = oneStep * $this.val() - oneStep * minValue;\r\n\r\n if (leftPosition < 0) {\r\n leftPosition = 0;\r\n } else if (leftPosition > widthThumb) {\r\n leftPosition = widthThumb;\r\n }\r\n\r\n $thumb.addClass('active').css('left', leftPosition);\r\n }\r\n\r\n function thumbAnimation($thumb, tHeight, tWidth, tTop, tMarginLeft, tDuration, tEasing) {\r\n $thumb.velocity({\r\n height: tHeight,\r\n width: tWidth,\r\n top: tTop,\r\n marginLeft: tMarginLeft\r\n },\r\n {\r\n duration: tDuration,\r\n easing: tEasing ? tEasing : 'swing'\r\n });\r\n }\r\n\r\n function showThumb($thumb) {\r\n thumbAnimation($thumb, '30px', '30px', '-27px', '-7px', 200, 'easeOutExpo');\r\n }\r\n\r\n function hideThumb($thumb) {\r\n thumbAnimation($thumb, '0', '0', '10px', '7px', 200);\r\n }\r\n});\r\n","jQuery(($) => {\r\n\r\n class SideNav {\r\n\r\n constructor(element, options) {\r\n\r\n this.settings = {\r\n menuLeftMinBorder: 0.3,\r\n menuLeftMaxBorder: -0.5,\r\n menuRightMinBorder: -0.3,\r\n menuRightMaxBorder: 0.5,\r\n menuVelocityOffset: 10\r\n };\r\n\r\n this.defaults = {\r\n menuWidth: 240,\r\n edge: 'left',\r\n closeOnClick: false,\r\n breakpoint: 1440,\r\n timeDurationOpen: 500,\r\n timeDurationClose: 500,\r\n timeDurationOverlayOpen: 50,\r\n timeDurationOverlayClose: 200,\r\n easingOpen: 'easeInOutQuad',\r\n easingClose: 'easeInOutQuad',\r\n showOverlay: true,\r\n showCloseButton: false,\r\n slim: false\r\n };\r\n\r\n this.$element = element;\r\n\r\n this.$elementCloned = element.clone().css({\r\n display: 'inline-block',\r\n lineHeight: '24px'\r\n });\r\n\r\n this.options = this.assignOptions(options);\r\n\r\n this.menuOut = false;\r\n this.lastTouchVelocity = {\r\n x: {\r\n startPosition: 0,\r\n startTime: 0,\r\n endPosition: 0,\r\n endTime: 0\r\n }\r\n };\r\n\r\n this.$body = $('body');\r\n this.$menu = $(`#${this.$element.attr('data-activates')}`);\r\n this.$sidenavOverlay = $('#sidenav-overlay');\r\n this.$dragTarget = $('
      ');\r\n this.$body.append(this.$dragTarget);\r\n\r\n }\r\n\r\n assignOptions(newOptions) {\r\n\r\n return $.extend({}, this.defaults, newOptions);\r\n }\r\n\r\n init() {\r\n this.setMenuWidth();\r\n this.setMenuTranslation();\r\n this.closeOnClick();\r\n this.openOnClick();\r\n this.bindTouchEvents();\r\n this.showCloseButton();\r\n this.inputOnClick();\r\n if (this.options.slim === true) {\r\n this.handleSlim();\r\n }\r\n }\r\n\r\n setMenuWidth() {\r\n\r\n const $sidenavBg = $(`#${this.$menu.attr('id')}`).find('> .sidenav-bg');\r\n\r\n this.$menu.css('width', this.options.menuWidth);\r\n $sidenavBg.css('width', this.options.menuWidth);\r\n\r\n }\r\n\r\n setMenuTranslation() {\r\n\r\n if (this.options.edge === 'left') {\r\n\r\n this.$menu.css('transform', 'translateX(-100%)');\r\n this.$dragTarget.css({\r\n left: 0\r\n });\r\n\r\n } else {\r\n\r\n this.$menu.addClass('right-aligned').css('transform', 'translateX(100%)');\r\n this.$dragTarget.css({\r\n right: 0\r\n });\r\n }\r\n\r\n if (!this.$menu.hasClass('fixed')) {\r\n return;\r\n }\r\n\r\n if (window.innerWidth > this.options.breakpoint) {\r\n\r\n this.menuOut = true; \r\n this.$menu.css('transform', 'translateX(0)');\r\n } else {\r\n\r\n this.menuOut = false; \r\n }\r\n\r\n this.$menu.find('input[type=text]').on('touchstart', () => {\r\n\r\n this.$menu.addClass('transform-fix-input');\r\n });\r\n\r\n $(window).on('resize', () => {\r\n\r\n if (window.innerWidth > this.options.breakpoint) {\r\n\r\n if (this.$sidenavOverlay.length) {\r\n\r\n this.removeMenu(true);\r\n } else {\r\n\r\n this.$menu.css('transform', 'translateX(0%)');\r\n this.menuOut = true; \r\n }\r\n } else if (this.menuOut === false) {\r\n\r\n const xValue = this.options.edge === 'left' ? '-100' : '100';\r\n this.$menu.css('transform', `translateX(${xValue}%)`);\r\n } else {\r\n this.menuOut = false; \r\n }\r\n });\r\n\r\n }\r\n\r\n closeOnClick() {\r\n\r\n if (this.options.closeOnClick === true) {\r\n\r\n this.$menu.on('click', 'a:not(.collapsible-header)', () => this.removeMenu());\r\n\r\n if (this.$menu.css('transform') === 'translateX(0)') {\r\n this.$menu.on('click', () => this.removeMenu());\r\n }\r\n }\r\n }\r\n\r\n openOnClick() {\r\n\r\n // eslint-disable-next-line consistent-return\r\n this.$element.on('click', e => {\r\n\r\n e.preventDefault();\r\n\r\n if (this.menuOut === true) {\r\n return this.removeMenu();\r\n }\r\n\r\n if (this.options.showOverlay === true) {\r\n if (!$('#sidenav-overlay').length) {\r\n this.$sidenavOverlay = $('
      ');\r\n this.$body.append(this.$sidenavOverlay);\r\n }\r\n } else {\r\n this.showCloseButton();\r\n }\r\n\r\n let translateX = [];\r\n\r\n if (this.options.edge === 'left') {\r\n\r\n translateX = [0, -1 * this.options.menuWidth];\r\n } else {\r\n\r\n translateX = [0, this.options.menuWidth];\r\n }\r\n if (this.$menu.css('transform') !== 'matrix(1, 0, 0, 1, 0, 0)') {\r\n this.$menu.velocity({\r\n translateX\r\n }, {\r\n duration: this.options.timeDurationOpen,\r\n queue: false,\r\n easing: this.options.easingOpen\r\n });\r\n }\r\n this.$sidenavOverlay.on('click', () => this.removeMenu());\r\n\r\n this.$sidenavOverlay.on('touchmove', this.touchmoveEventHandler.bind(this));\r\n this.$menu.on('touchmove', e => {\r\n\r\n e.preventDefault();\r\n\r\n this.$menu.find('.custom-scrollbar').css('padding-bottom', '30px');\r\n\r\n });\r\n\r\n if(this.options.showOverlay === false) {\r\n \r\n this.menuOut = true;\r\n }\r\n });\r\n }\r\n\r\n bindTouchEvents() {\r\n\r\n this.$dragTarget.on('click', () => {\r\n \r\n if (this.menuOut) {\r\n this.removeMenu();\r\n } \r\n } );\r\n\r\n this.$dragTarget.on('touchstart', e => {\r\n\r\n this.lastTouchVelocity.x.startPosition = e.touches[0].clientX;\r\n this.lastTouchVelocity.x.startTime = Date.now();\r\n });\r\n this.$dragTarget.on('touchmove', this.touchmoveEventHandler.bind(this));\r\n this.$dragTarget.on('touchend', this.touchendEventHandler.bind(this));\r\n }\r\n\r\n showCloseButton() {\r\n\r\n if (this.options.showCloseButton === true) {\r\n\r\n this.$menu.prepend(this.$elementCloned);\r\n this.$menu.find('.logo-wrapper').css({\r\n borderTop: '1px solid rgba(153,153,153,.3)'\r\n });\r\n }\r\n }\r\n\r\n inputOnClick() {\r\n\r\n this.$menu.find('input[type=text]').on('touchstart', () => this.$menu.css('transform', 'translateX(0)'));\r\n }\r\n\r\n removeMenu(restoreMenu) {\r\n\r\n this.$body.css({\r\n overflow: '',\r\n width: ''\r\n });\r\n\r\n this.$menu.velocity({\r\n translateX: this.options.edge === 'left' ? '-100%' : '100%'\r\n }, {\r\n duration: this.options.timeDurationClose,\r\n queue: false,\r\n easing: this.options.easingClose,\r\n complete: () => {\r\n if (restoreMenu === true) {\r\n this.$menu.removeAttr('style');\r\n this.$menu.css('width', this.options.menuWidth);\r\n }\r\n }\r\n });\r\n\r\n this.$menu.removeClass('transform-fix-input');\r\n this.hideSidenavOverlay();\r\n this.menuOut = false;\r\n }\r\n\r\n handleSlim() {\r\n\r\n const $toggle = $('#toggle');\r\n $toggle.on('click', () => {\r\n if (this.$menu.hasClass('slim')) {\r\n this.$menu.removeClass('slim');\r\n $('.sv-slim-icon').removeClass('fa-angle-double-right').addClass('fa-angle-double-left');\r\n $('.fixed-sn .double-nav').css({\r\n transition: 'all .3s ease-in-out',\r\n 'padding-left': '15.9rem'\r\n });\r\n\r\n $('.fixed-sn main, .fixed-sn footer').css({\r\n transition: 'all .3s ease-in-out',\r\n 'padding-left': '15rem'\r\n });\r\n\r\n } else {\r\n\r\n this.$menu.addClass('slim');\r\n $('.sv-slim-icon').removeClass('fa-angle-double-left').addClass('fa-angle-double-right');\r\n $('.fixed-sn .double-nav').css('padding-left', '4.6rem');\r\n $('.fixed-sn main, .fixed-sn footer').css({\r\n 'padding-left': '3.7rem'\r\n });\r\n }\r\n });\r\n }\r\n\r\n touchmoveEventHandler(e) {\r\n\r\n if (e.type !== 'touchmove') {\r\n\r\n return;\r\n }\r\n\r\n const [touch] = e.touches;\r\n let touchX = touch.clientX;\r\n\r\n // calculate velocity every 20ms\r\n if (Date.now() - this.lastTouchVelocity.x.startTime > 20) {\r\n\r\n this.lastTouchVelocity.x.startPosition = touch.clientX;\r\n this.lastTouchVelocity.x.startTime = Date.now();\r\n }\r\n\r\n this.disableScrolling();\r\n\r\n const overlayExists = this.$sidenavOverlay.length !== 0;\r\n if (!overlayExists) {\r\n\r\n this.buildSidenavOverlay();\r\n }\r\n\r\n // Keep within boundaries\r\n if (this.options.edge === 'left') {\r\n\r\n if (touchX > this.options.menuWidth) {\r\n\r\n touchX = this.options.menuWidth;\r\n } else if (touchX < 0) {\r\n\r\n touchX = 0;\r\n }\r\n }\r\n\r\n this.translateSidenavX(touchX);\r\n this.updateOverlayOpacity(touchX);\r\n }\r\n\r\n calculateTouchVelocityX() {\r\n\r\n const distance = Math.abs(this.lastTouchVelocity.x.endPosition - this.lastTouchVelocity.x.startPosition);\r\n const time = Math.abs(this.lastTouchVelocity.x.endTime - this.lastTouchVelocity.x.startTime);\r\n\r\n return distance / time;\r\n }\r\n\r\n touchendEventHandler(e) {\r\n\r\n if (e.type !== 'touchend') {\r\n\r\n return;\r\n }\r\n\r\n const touch = e.changedTouches[0];\r\n\r\n this.lastTouchVelocity.x.endTime = Date.now();\r\n this.lastTouchVelocity.x.endPosition = touch.clientX;\r\n const velocityX = this.calculateTouchVelocityX();\r\n\r\n const touchX = touch.clientX;\r\n let leftPos = touchX - this.options.menuWidth;\r\n let rightPos = touchX - this.options.menuWidth / 2;\r\n if (leftPos > 0) {\r\n leftPos = 0;\r\n }\r\n if (rightPos < 0) {\r\n rightPos = 0;\r\n }\r\n\r\n if (this.options.edge === 'left') {\r\n\r\n // If velocityX <= 0.3 then the user is flinging the menu closed so ignore this.menuOut\r\n if (this.menuOut || velocityX <= this.settings.menuLeftMinBorder || velocityX < this.options.menuLeftMaxBorder) {\r\n\r\n if (leftPos !== 0) {\r\n\r\n this.translateMenuX([0, leftPos], '300');\r\n }\r\n\r\n this.showSidenavOverlay();\r\n\r\n } else if (!this.menuOut || velocityX > this.settings.menuLeftMinBorder) {\r\n\r\n this.enableScrolling();\r\n this.translateMenuX([-1 * this.options.menuWidth - this.options.menuVelocityOffset, leftPos], '200');\r\n this.hideSidenavOverlay();\r\n }\r\n\r\n this.$dragTarget.css({\r\n width: '10px',\r\n right: '',\r\n left: 0\r\n });\r\n } else if (this.menuOut && velocityX >= this.settings.menuRightMinBorder || velocityX > this.settings.menuRightMaxBorder) {\r\n\r\n this.translateMenuX([0, rightPos], '300');\r\n this.showSidenavOverlay();\r\n\r\n this.$dragTarget.css({\r\n width: '50%',\r\n right: '',\r\n left: 0\r\n });\r\n } else if (!this.menuOut || velocityX < this.settings.menuRightMinBorder) {\r\n\r\n this.enableScrolling();\r\n this.translateMenuX([this.options.menuWidth + this.options.menuVelocityOffset, rightPos], '200');\r\n this.hideSidenavOverlay();\r\n\r\n this.$dragTarget.css({\r\n width: '10px',\r\n right: 0,\r\n left: ''\r\n });\r\n }\r\n }\r\n\r\n buildSidenavOverlay() {\r\n\r\n if (this.options.showOverlay === true) {\r\n\r\n this.$sidenavOverlay = $('
      ');\r\n this.$sidenavOverlay.css('opacity', 0).on('click', () => this.removeMenu());\r\n\r\n this.$body.append(this.$sidenavOverlay);\r\n }\r\n }\r\n\r\n disableScrolling() {\r\n\r\n const oldWidth = this.$body.innerWidth();\r\n this.$body.css('overflow', 'hidden');\r\n this.$body.width(oldWidth);\r\n }\r\n\r\n enableScrolling() {\r\n\r\n this.$body.css({\r\n overflow: '',\r\n width: ''\r\n });\r\n }\r\n\r\n translateMenuX(fromTo, duration) {\r\n\r\n this.$menu.velocity({\r\n translateX: fromTo\r\n }, {\r\n duration: typeof duration === 'string' ? Number(duration) : duration,\r\n queue: false,\r\n easing: this.options.easingOpen\r\n });\r\n }\r\n\r\n translateSidenavX(touchX) {\r\n\r\n if (this.options.edge === 'left') {\r\n\r\n const isRightDirection = touchX >= this.options.menuWidth / 2;\r\n this.menuOut = isRightDirection;\r\n\r\n this.$menu.css('transform', `translateX(${touchX - this.options.menuWidth}px)`);\r\n } else {\r\n\r\n const isLeftDirection = touchX < window.innerWidth - this.options.menuWidth / 2;\r\n this.menuOut = isLeftDirection;\r\n\r\n let rightPos = touchX - this.options.menuWidth / 2;\r\n if (rightPos < 0) {\r\n rightPos = 0;\r\n }\r\n\r\n this.$menu.css('transform', `translateX(${rightPos}px)`);\r\n }\r\n }\r\n\r\n updateOverlayOpacity(touchX) {\r\n\r\n let overlayPercentage;\r\n if (this.options.edge === 'left') {\r\n\r\n overlayPercentage = touchX / this.options.menuWidth;\r\n } else {\r\n\r\n overlayPercentage = Math.abs((touchX - window.innerWidth) / this.options.menuWidth);\r\n }\r\n\r\n this.$sidenavOverlay.velocity({\r\n opacity: overlayPercentage\r\n }, {\r\n duration: 10,\r\n queue: false,\r\n easing: this.options.easingOpen\r\n });\r\n }\r\n\r\n showSidenavOverlay() {\r\n\r\n if (this.options.showOverlay === true && !$('#sidenav-overlay').length) {\r\n this.buildSidenavOverlay();\r\n }\r\n\r\n this.$sidenavOverlay.velocity({\r\n opacity: 1\r\n }, {\r\n duration: this.options.timeDurationOverlayOpen,\r\n queue: false,\r\n easing: this.options.easingOpen\r\n });\r\n }\r\n\r\n hideSidenavOverlay() {\r\n\r\n this.$sidenavOverlay.velocity({\r\n opacity: 0\r\n }, {\r\n duration: this.options.timeDurationOverlayClose,\r\n queue: false,\r\n easing: this.options.easingOpen,\r\n complete() {\r\n $(this).remove();\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n $.fn.sideNav = function (options) {\r\n $(this).each(function () {\r\n const sidenav = new SideNav($(this), options);\r\n sidenav.init();\r\n });\r\n };\r\n\r\n $('.side-nav').on('touchmove', function (e) {\r\n e.stopPropagation();\r\n }, false);\r\n\r\n});\r\n","jQuery(() => {\r\n const SMOOTH_SCROLL_DURATION = 700;\r\n\r\n $('.smooth-scroll').on('click', 'a', function (e) {\r\n e.preventDefault();\r\n\r\n const $this = $(this);\r\n const elAttr = $this.attr('href');\r\n\r\n if (typeof elAttr !== undefined && elAttr.indexOf('#') === 0) {\r\n\r\n const offset = $(this).attr('data-offset') || 0;\r\n\r\n $('body,html').animate({\r\n scrollTop: $(elAttr).offset().top - offset\r\n }, SMOOTH_SCROLL_DURATION);\r\n\r\n const setHash = $this.parentsUntil('.smooth-scroll').last().parent().attr('data-allow-hashes');\r\n\r\n if (typeof setHash !== undefined && setHash !== false) {\r\n\r\n history.replaceState(null, null, elAttr);\r\n }\r\n }\r\n });\r\n});\r\n","jQuery(($) => {\r\n\r\n class Dropdown {\r\n\r\n constructor($activator, options = {}) {\r\n\r\n this.$activator = $activator;\r\n this.$activates = $(`#${$activator.attr('data-activates')}`);\r\n /* eslint-disable newline-per-chained-call */\r\n this.options = {\r\n inDuration: this.fallback().or($activator.data('induration')).or($activator.attr('data-in-duration')).or(options.inDuration).or(300).value(),\r\n outDuration: this.fallback().or($activator.data('outduration')).or($activator.attr('data-out-duration')).or(options.outDuration).or(225).value(),\r\n easingEffectIn: this.fallback().or($activator.data('easingeffectin')).or($activator.attr('data-easing-effect-in')).or(options.easingEffectIn).or('easeOutCubic').value(),\r\n easingEffectOut: this.fallback().or($activator.data('easingeffectout')).or($activator.attr('data-easing-effect-out')).or(options.easingEffectOut).or('swing').value(),\r\n constrainWidth: this.fallback().or($activator.data('constrainwidth')).or($activator.attr('data-constrain-width')).or(options.constrainWidth).or(true).value(),\r\n hover: this.fallback().or($activator.data('hover')).or($activator.attr('data-hover')).or(options.hover).or(false).value(),\r\n gutter: this.fallback().or($activator.data('gutter')).or($activator.attr('data-gutter')).or(options.gutter).or(0).value(),\r\n belowOrigin: this.fallback().or($activator.data('beloworigin')).or($activator.attr('data-below-origin')).or(options.belowOrigin).or(false).value(),\r\n alignment: this.fallback().or($activator.data('alignment')).or($activator.attr('data-alignment')).or(options.alignment).or('left').value(),\r\n maxHeight: this.fallback().or($activator.data('maxheight')).or($activator.attr('data-max-height')).or(options.maxHeight).or('').value(),\r\n resetScroll: this.fallback().or($activator.data('resetscroll')).or($activator.attr('data-reset-scroll')).or(options.resetScroll).or(true).value()\r\n };\r\n /* eslint-enable newline-per-chained-call */\r\n this.isFocused = false;\r\n }\r\n\r\n static mdbDropdownAutoInit() {\r\n\r\n $('.dropdown-button').dropdown();\r\n\r\n this.bindMultiLevelDropdownEvents();\r\n this.bindBootstrapEvents();\r\n }\r\n\r\n static bindMultiLevelDropdownEvents() {\r\n\r\n $('.multi-level-dropdown .dropdown-submenu > a').on(\"mouseenter\", function(e) {\r\n var submenu = $(this);\r\n $('.multi-level-dropdown .dropdown-submenu .dropdown-menu').removeClass('show');\r\n submenu.next('.dropdown-menu').addClass('show');\r\n e.stopPropagation();\r\n });\r\n \r\n $('.multi-level-dropdown .dropdown').on(\"hidden.bs.dropdown\", function() {\r\n // hide any open menus when parent closes\r\n $('.multi-level-dropdown .dropdown-menu.show').removeClass('show');\r\n });\r\n }\r\n\r\n static bindBootstrapEvents() {\r\n\r\n const $dropdowns = $('.dropdown, .dropup');\r\n $dropdowns.on({\r\n 'show.bs.dropdown': (e) => {\r\n\r\n const $dropdown = $(e.target);\r\n const effects = this._getDropdownEffects($dropdown);\r\n this._dropdownEffectStart($dropdown, effects.effectIn);\r\n },\r\n 'shown.bs.dropdown': (e) => {\r\n\r\n const $dropdown = $(e.target);\r\n const effects = this._getDropdownEffects($dropdown);\r\n if (effects.effectIn && effects.effectOut) {\r\n\r\n this._dropdownEffectEnd($dropdown, effects);\r\n }\r\n },\r\n 'hide.bs.dropdown': (e) => {\r\n\r\n const $dropdown = $(e.target);\r\n const effects = this._getDropdownEffects($dropdown);\r\n if (effects.effectOut) {\r\n\r\n e.preventDefault();\r\n\r\n this._dropdownEffectStart($dropdown, effects.effectOut);\r\n this._dropdownEffectEnd($dropdown, effects, () => {\r\n\r\n $dropdown.removeClass('show');\r\n $dropdown.find('.dropdown-menu').removeClass('show');\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n static _getDropdownEffects($dropdown) {\r\n\r\n let defaultInEffect = 'fadeIn';\r\n let defaultOutEffect = 'fadeOut';\r\n const $dropdownMenu = $dropdown.find('.dropdown-menu');\r\n const $parentUl = $dropdown.parents('ul.nav');\r\n\r\n if ($parentUl.height > 0) {\r\n\r\n defaultInEffect = $parentUl.data('dropdown-in') || null;\r\n defaultOutEffect = $parentUl.data('dropdown-out') || null;\r\n }\r\n\r\n return {\r\n effectIn: $dropdownMenu.data('dropdown-in') || defaultInEffect,\r\n effectOut: $dropdownMenu.data('dropdown-out') || defaultOutEffect\r\n };\r\n }\r\n\r\n static _dropdownEffectStart($dropdown, effectToStart) {\r\n\r\n if (effectToStart) {\r\n\r\n $dropdown.addClass('dropdown-animating');\r\n $dropdown.find('.dropdown-menu').addClass(['animated', effectToStart].join(' '));\r\n }\r\n }\r\n\r\n static _dropdownEffectEnd($dropdown, effects, callback) {\r\n\r\n $dropdown.one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', () => {\r\n\r\n $dropdown.removeClass('dropdown-animating');\r\n $dropdown.find('.dropdown-menu').removeClass(['animated', effects.effectIn, effects.effectOut].join(' '));\r\n\r\n if (typeof callback === 'function') {\r\n\r\n callback();\r\n }\r\n });\r\n }\r\n\r\n returnPublicInterface() {\r\n\r\n return {\r\n $activator: this.$activator,\r\n $activates: this.$activates,\r\n updatePosition: this.updatePosition.bind(this)\r\n };\r\n }\r\n\r\n init() {\r\n\r\n this.appendDropdownToActivator();\r\n\r\n if (this.options.hover) {\r\n\r\n this.handleHoverableDropdown();\r\n\r\n } else {\r\n\r\n this.handleClickableDropdown();\r\n }\r\n\r\n this.bindEvents();\r\n }\r\n\r\n appendDropdownToActivator() {\r\n\r\n this.$activator.after(this.$activates);\r\n }\r\n\r\n handleHoverableDropdown() {\r\n\r\n let opened = false;\r\n\r\n this.$activator.unbind(`click.${this.$activator.attr('id')}`);\r\n\r\n this.$activator.on('mouseenter', () => {\r\n\r\n if (opened === false) {\r\n\r\n this.placeDropdown();\r\n opened = true;\r\n }\r\n });\r\n\r\n this.$activator.on('mouseleave', (e) => {\r\n\r\n const toEl = e.toElement || e.relatedTarget;\r\n const mouseHoversDropdown = $(toEl).closest('.dropdown-content').is(this.$activates);\r\n if (!mouseHoversDropdown) {\r\n\r\n this.$activates.stop(true, true);\r\n this.hideDropdown();\r\n opened = false;\r\n }\r\n });\r\n\r\n this.$activates.on('mouseleave', (e) => {\r\n\r\n const toEl = e.toElement || e.relatedTarget;\r\n const mouseHoversActivator = $(toEl).closest('.dropdown-button').is(this.$activator);\r\n if (!mouseHoversActivator) {\r\n\r\n this.$activates.stop(true, true);\r\n this.hideDropdown();\r\n opened = false;\r\n }\r\n });\r\n }\r\n\r\n handleClickableDropdown() {\r\n\r\n this.$activator.unbind(`click.${this.$activator.attr('id')}`);\r\n this.$activator.bind(`click.${this.$activator.attr('id')}`, (e) => {\r\n\r\n if (this.isFocused) {\r\n\r\n return;\r\n }\r\n\r\n const activatorClicked = this.$activator.get(0) === e.currentTarget;\r\n const activatorActive = this.$activator.hasClass('active');\r\n const dropdownContentClicked = $(e.target).closest('.dropdown-content').length !== 0;\r\n if (activatorClicked && !activatorActive && !dropdownContentClicked) {\r\n\r\n e.preventDefault();\r\n this.placeDropdown('click');\r\n } else if (activatorActive) {\r\n\r\n this.hideDropdown();\r\n $(document).unbind(`click.${this.$activates.attr('id')} touchstart.${this.$activates.attr('id')}`);\r\n }\r\n\r\n if (this.$activates.hasClass('active')) {\r\n\r\n $(document).bind(`click.${this.$activates.attr('id')} touchstart.${this.$activates.attr('id')}`, (e) => {\r\n\r\n const clickedOutsideDropdown = !this.$activates.is(e.target) && !this.$activator.is(e.target) && !this.$activator.find(e.target).length;\r\n if (clickedOutsideDropdown) {\r\n\r\n this.hideDropdown();\r\n $(document).unbind(`click.${this.$activates.attr('id')} touchstart.${this.$activates.attr('id')}`);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n bindEvents() {\r\n\r\n this.$activator.on('open', (e, eventType) => {\r\n\r\n this.placeDropdown(eventType);\r\n });\r\n\r\n this.$activator.on('close', this.hideDropdown.bind(this));\r\n }\r\n\r\n placeDropdown(eventType) {\r\n\r\n if (eventType === 'focus') {\r\n\r\n this.isFocused = true;\r\n }\r\n\r\n this.$activates.addClass('active');\r\n this.$activator.addClass('active');\r\n\r\n if (this.options.constrainWidth === true) {\r\n\r\n this.$activates.css('width', this.$activator.outerWidth());\r\n } else {\r\n\r\n this.$activates.css('white-space', 'nowrap');\r\n }\r\n\r\n this.updatePosition();\r\n\r\n this.showDropdown();\r\n }\r\n\r\n showDropdown() {\r\n\r\n this.$activates.stop(true, true).css('opacity', 0)\r\n .slideDown({\r\n queue: false,\r\n duration: this.options.inDuration,\r\n easing: this.options.easingEffectIn,\r\n complete() {\r\n $(this).css('height', '');\r\n }\r\n })\r\n .animate({\r\n opacity: 1,\r\n // eslint-disable-next-line object-curly-newline\r\n ...this.options.resetScroll && { scrollTop: 0 }\r\n }, {\r\n queue: false,\r\n duration: this.options.inDuration,\r\n easing: 'easeOutSine'\r\n });\r\n }\r\n\r\n hideDropdown() {\r\n\r\n this.isFocused = false;\r\n this.$activates.fadeOut({\r\n durations: this.options.outDuration,\r\n easing: this.options.easingEffectOut\r\n });\r\n this.$activates.removeClass('active');\r\n this.$activator.removeClass('active');\r\n\r\n setTimeout(() => {\r\n this.$activates.css('max-height', this.options.maxHeight);\r\n }, this.options.outDuration);\r\n }\r\n\r\n updatePosition() {\r\n\r\n const windowHeight = window.innerHeight;\r\n const originHeight = this.$activator.innerHeight();\r\n const offsetTop = this.$activator.offset().top - $(window).scrollTop();\r\n\r\n const currAlignment = this._getHorizontalAlignment();\r\n let gutterSpacing = 0;\r\n let leftPosition = 0;\r\n\r\n const $wrapper = this.$activator.parent();\r\n let verticalOffset = this.options.belowOrigin ? originHeight : 0;\r\n const scrollOffset = !$wrapper.is('body') && $wrapper.get(0).scrollHeight > $wrapper.get(0).clientHeight ? $wrapper.get(0).scrollTop : 0;\r\n\r\n const doesNotFitFromBottom = offsetTop + this.$activates.innerHeight() > windowHeight;\r\n const doesNotFitFromTop = offsetTop + originHeight - this.$activates.innerHeight() < 0;\r\n if (doesNotFitFromBottom && doesNotFitFromTop) {\r\n\r\n const adjustedHeight = windowHeight - offsetTop - verticalOffset;\r\n this.$activates.css('max-height', adjustedHeight);\r\n } else if (doesNotFitFromBottom) {\r\n\r\n if (!verticalOffset) {\r\n verticalOffset += originHeight;\r\n }\r\n\r\n verticalOffset -= this.$activates.innerHeight();\r\n }\r\n\r\n if (currAlignment === 'left') {\r\n\r\n gutterSpacing = this.options.gutter;\r\n leftPosition = this.$activator.position().left + gutterSpacing;\r\n } else if (currAlignment === 'right') {\r\n\r\n const offsetRight = this.$activator.position().left + this.$activator.outerWidth() - this.$activates.outerWidth();\r\n gutterSpacing = -this.options.gutter;\r\n leftPosition = offsetRight + gutterSpacing;\r\n }\r\n\r\n this.$activates.css({\r\n position: 'absolute',\r\n top: this.$activator.position().top + verticalOffset + scrollOffset,\r\n left: leftPosition\r\n });\r\n }\r\n\r\n _getHorizontalAlignment() {\r\n\r\n const offsetLeft = this.$activator.offset().left;\r\n\r\n if (offsetLeft + this.$activates.innerWidth() > $(window).width()) {\r\n\r\n return 'right';\r\n } else if (offsetLeft - this.$activates.innerWidth() + this.$activator.innerWidth() < 0) {\r\n\r\n return 'left';\r\n }\r\n\r\n return this.options.alignment;\r\n }\r\n\r\n fallback() {\r\n\r\n return {\r\n _value: undefined,\r\n or(value) {\r\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\r\n this._value = value;\r\n }\r\n return this;\r\n },\r\n value() {\r\n return this._value;\r\n }\r\n };\r\n }\r\n }\r\n\r\n $.fn.scrollTo = function (elem) {\r\n\r\n this.scrollTop(this.scrollTop() - this.offset().top + $(elem).offset().top);\r\n return this;\r\n };\r\n\r\n $.fn.dropdown = function (options) {\r\n\r\n if (this.length > 1) {\r\n\r\n const instances = [];\r\n\r\n this.each(function () {\r\n\r\n const dropdown = new Dropdown(this, options);\r\n dropdown.init();\r\n\r\n instances.push(dropdown.returnPublicInterface());\r\n });\r\n\r\n return instances;\r\n }\r\n\r\n const dropdown = new Dropdown(this, options);\r\n dropdown.init();\r\n\r\n return dropdown.returnPublicInterface();\r\n };\r\n\r\n Dropdown.mdbDropdownAutoInit();\r\n});\r\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","jQuery(($) => {\r\n\r\n class DropdownSearchable {\r\n\r\n constructor($searchWrappers, options = {}) {\r\n\r\n this.$searchWrappers = $searchWrappers;\r\n this.options = {\r\n color: this.fallback().or(options.color).or('#000').value(),\r\n backgroundColor: this.fallback().or(options.backgroundColor).or('').value(),\r\n fontSize: this.fallback().or(options.fontSize).or('.9rem').value(),\r\n fontWeight: this.fallback().or(options.fontWeight).or('400').value(),\r\n borderRadius: this.fallback().or(options.borderRadius).or('').value(),\r\n borderColor: this.fallback().or(options.borderColor).or('').value(),\r\n margin: this.fallback().or(options.margin).or('').value()\r\n };\r\n }\r\n\r\n init() {\r\n\r\n this.bindSearchEvents();\r\n\r\n return this.$searchWrappers.css({\r\n color: this.options.color,\r\n backgroundColor: this.options.backgroundColor,\r\n fontSize: this.options.fontSize,\r\n fontWeight: this.options.fontWeight,\r\n borderRadius: this.options.borderRadius,\r\n borderColor: this.options.borderColor,\r\n margin: this.options.margin\r\n });\r\n }\r\n\r\n bindSearchEvents() {\r\n\r\n this.$searchWrappers.each(function () {\r\n\r\n const $searchInput = $(this).find('input').first();\r\n $searchInput.on('keyup', () => {\r\n\r\n const $linksInDropMenu = $searchInput.closest('div[id]').find('a, li');\r\n $linksInDropMenu.each(function () {\r\n\r\n const $this = $(this);\r\n if ($this.html().toLowerCase().indexOf($searchInput.val().toLowerCase()) > -1) {\r\n\r\n $this.css({\r\n display: ''\r\n });\r\n } else {\r\n\r\n $this.css({\r\n display: 'none'\r\n });\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n fallback() {\r\n\r\n return {\r\n _value: undefined,\r\n or(value) {\r\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\r\n this._value = value;\r\n }\r\n return this;\r\n },\r\n value() {\r\n return this._value;\r\n }\r\n };\r\n }\r\n }\r\n\r\n $.fn.mdbDropSearch = function (options) {\r\n\r\n const dropdownSearchable = new DropdownSearchable(this, options);\r\n return dropdownSearchable.init();\r\n };\r\n});\r\n","import MaterialSelectView from './material-select-view';\r\n\r\njQuery(($) => {\r\n\r\n class MaterialSelect {\r\n\r\n constructor($nativeSelect, options = {}) {\r\n\r\n this.options = {\r\n destroy: this.fallback().or(options.destroy).or(false).value(),\r\n validate: this.fallback().or($nativeSelect.attr('data-validate')).or(options.validate).or(false).value(),\r\n selectId: this.fallback().or($nativeSelect.attr('data-select-id')).or(options.selectId).or(null).value(),\r\n defaultMaterialInput: this.fallback().or($nativeSelect.attr('data-default-material-input')).or(options.defaultMaterialInput).or(false).value(),\r\n fasClasses: this.fallback().or($nativeSelect.attr('data-fas-classes')).or(options.fasClasses).or('').value(),\r\n farClasses: this.fallback().or($nativeSelect.attr('data-far-classes')).or(options.farClasses).or('').value(),\r\n fabClasses: this.fallback().or($nativeSelect.attr('data-fab-classes')).or(options.fabClasses).or('').value(),\r\n copyClassesOption: this.fallback().or($nativeSelect.attr('data-copy-classes-option')).or(options.copyClassesOption).or(false).value(),\r\n labels: {\r\n selectAll: this.fallback().or($nativeSelect.attr('data-label-select-all')).or((options.labels || {}).selectAll).or('Select all').value(),\r\n optionsSelected: this.fallback().or($nativeSelect.attr('data-label-options-selected')).or((options.labels || {}).optionsSelected).or('options selected').value(),\r\n validFeedback: this.fallback().or($nativeSelect.attr('data-label-valid-feedback')).or((options.labels || {}).validFeedback).or('Ok').value(),\r\n invalidFeedback: this.fallback().or($nativeSelect.attr('data-label-invalid-feedback')).or((options.labels || {}).invalidFeedback).or('Incorrect value').value(),\r\n noSearchResults: this.fallback().or($nativeSelect.attr('data-label-no-search-results')).or((options.labels || {}).noSearchResults).or('No results').value()\r\n },\r\n keyboardActiveClass: this.fallback().or($nativeSelect.attr('data-keyboard-active-class')).or(options.keyboardActiveClass).or('heavy-rain-gradient').value(),\r\n placeholder: this.fallback().or($nativeSelect.attr('data-placeholder')).or(options.placeholder).or(null).value(),\r\n visibleOptions: this.fallback().or($nativeSelect.attr('data-visible-options')).or(options.visibleOptions).or(5).value(),\r\n maxSelectedOptions: this.fallback().or($nativeSelect.attr('data-max-selected-options')).or(options.maxSelectedOptions).or(5).value(),\r\n showResetButton: this.fallback().or($nativeSelect.attr('data-show-reset-button')).or(options.showResetButton).or(false).value()\r\n };\r\n\r\n this.uuid = $nativeSelect.attr('id') || this.options.selectId || this._randomUUID();\r\n\r\n // eslint-disable-next-line no-undef\r\n this.view = new MaterialSelectView(\r\n $nativeSelect,\r\n {\r\n options: this.options,\r\n properties: {\r\n id: this.uuid\r\n }\r\n }\r\n );\r\n\r\n this.selectedOptionsIndexes = []; // jQuery indexes; `.eq()` is operating on these\r\n\r\n MaterialSelect.mutationObservers = [];\r\n }\r\n\r\n get isInitialized() {\r\n\r\n return Boolean(this.view.$nativeSelect.data('select-id')) && this.view.$nativeSelect.hasClass('initialized');\r\n }\r\n\r\n static clearMutationObservers() {\r\n\r\n MaterialSelect.mutationObservers.forEach((observer) => {\r\n\r\n observer.disconnect();\r\n observer.customStatus = 'stopped';\r\n });\r\n }\r\n\r\n static mdbSelectAutoInit() {\r\n\r\n $('.mdb-select.mdb-select-autoinit').materialSelect();\r\n }\r\n\r\n init() {\r\n\r\n if (this.options.destroy) {\r\n\r\n this.view.destroy();\r\n return;\r\n }\r\n\r\n if (this.isInitialized) {\r\n\r\n this.view.destroy();\r\n }\r\n\r\n this.view.render();\r\n this.view.selectPreselectedOptions((optionIndex) => this._toggleSelectedValue(optionIndex));\r\n\r\n this.bindEvents();\r\n }\r\n\r\n bindEvents() {\r\n\r\n this.bindMutationObserverChange();\r\n\r\n if (this.view.isEditable && this.view.isSearchable) {\r\n\r\n this.view.bindResetButtonClick(() => this._resetSelection());\r\n }\r\n\r\n this.view.bindAddNewOptionClick();\r\n this.view.bindMaterialSelectFocus();\r\n this.view.bindMaterialSelectClick();\r\n this.view.bindMaterialSelectBlur();\r\n this.view.bindMaterialOptionsListTouchstart();\r\n this.view.bindMaterialSelectKeydown();\r\n this.view.bindMaterialSelectDropdownToggle();\r\n this.view.bindToggleAllClick((materialOptionIndex) => this._toggleSelectedValue(materialOptionIndex));\r\n this.view.bindMaterialOptionMousedown();\r\n this.view.bindMaterialOptionClick((optionIndex) => this._toggleSelectedValue(optionIndex));\r\n\r\n if (!this.view.isMultiple && this.view.isSearchable) {\r\n\r\n this.view.bindSingleMaterialOptionClick();\r\n }\r\n\r\n if (this.view.isSearchable) {\r\n\r\n this.view.bindSearchInputKeyup();\r\n }\r\n\r\n this.view.bindHtmlClick();\r\n this.view.bindMobileDevicesMousedown();\r\n this.view.bindSaveBtnClick(); // @Depreciated\r\n }\r\n\r\n bindMutationObserverChange() {\r\n\r\n const config = {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n };\r\n const observer = new MutationObserver(this._onMutationObserverChange.bind(this));\r\n observer.observe(this.view.$nativeSelect.get(0), config);\r\n observer.customId = this.uuid;\r\n observer.customStatus = 'observing';\r\n\r\n MaterialSelect.clearMutationObservers();\r\n MaterialSelect.mutationObservers.push(observer);\r\n }\r\n\r\n _onMutationObserverChange(mutationsList) {\r\n\r\n mutationsList.forEach((mutation) => {\r\n\r\n const $select = $(mutation.target).closest('select');\r\n if ($select.data('stop-refresh') !== true && (mutation.type === 'childList' || mutation.type === 'attributes' && $(mutation.target).is('option'))) {\r\n\r\n // eslint-disable-next-line object-curly-newline\r\n $select.materialSelect({ destroy: true });\r\n $select.materialSelect();\r\n }\r\n });\r\n }\r\n\r\n _resetSelection() {\r\n\r\n this.selectedOptionsIndexes = [];\r\n this.view.$nativeSelect.find('option').prop('selected', false);\r\n }\r\n\r\n _toggleSelectedValue(optionIndex) {\r\n\r\n const selectedValueIndex = this.selectedOptionsIndexes.indexOf(optionIndex);\r\n const isSelected = selectedValueIndex !== -1;\r\n\r\n if (!isSelected) {\r\n\r\n this.selectedOptionsIndexes.push(optionIndex);\r\n } else {\r\n\r\n this.selectedOptionsIndexes.splice(selectedValueIndex, 1);\r\n }\r\n\r\n this.view.$nativeSelect.find('option').eq(optionIndex).prop('selected', !isSelected);\r\n\r\n this._setValueToMaterialSelect();\r\n\r\n return !isSelected;\r\n }\r\n\r\n _setValueToMaterialSelect() {\r\n\r\n let value = '';\r\n const selectedValuesCount = this.selectedOptionsIndexes.length;\r\n\r\n this.selectedOptionsIndexes.forEach((index) => value += `, ${this.view.$nativeSelect.find('option').eq(index).text().replace(/ +/g, ' ').trim()}`);\r\n\r\n if (this.options.maxSelectedOptions >= 0 && selectedValuesCount > this.options.maxSelectedOptions) {\r\n value = `${selectedValuesCount} ${this.options.labels.optionsSelected}`;\r\n } else {\r\n value = value.substring(2);\r\n }\r\n\r\n if (value.length === 0) {\r\n value = this.view.$nativeSelect.find('option:disabled').eq(0).text();\r\n }\r\n\r\n this.view.$nativeSelect.siblings(`${this.options.defaultMaterialInput ? 'input.multi-bs-select' : 'input.select-dropdown'}`).val(value);\r\n }\r\n\r\n _randomUUID() {\r\n\r\n let d = new Date().getTime();\r\n\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n\r\n // eslint-disable-next-line no-bitwise\r\n const r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n // eslint-disable-next-line no-bitwise\r\n return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);\r\n });\r\n }\r\n\r\n fallback() {\r\n\r\n return {\r\n _value: undefined,\r\n or(value) {\r\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\r\n this._value = value;\r\n }\r\n return this;\r\n },\r\n value() {\r\n return this._value;\r\n }\r\n };\r\n }\r\n }\r\n\r\n $.fn.materialSelect = function (options) {\r\n\r\n $(this).not('.browser-default').not('.custom-select').each(function () {\r\n\r\n const materialSelect = new MaterialSelect($(this), options);\r\n materialSelect.init();\r\n });\r\n };\r\n\r\n (function (originalVal) {\r\n\r\n $.fn.val = function (value) {\r\n\r\n if (!arguments.length) {\r\n\r\n return originalVal.call(this);\r\n }\r\n\r\n if (this.data('stop-refresh') !== true && this.hasClass('mdb-select') && this.hasClass('initialized')) {\r\n\r\n MaterialSelect.clearMutationObservers();\r\n\r\n this.materialSelect({\r\n destroy: true\r\n });\r\n\r\n const ret = originalVal.call(this, value);\r\n this.materialSelect();\r\n\r\n return ret;\r\n }\r\n\r\n return originalVal.call(this, value);\r\n };\r\n }($.fn.val));\r\n\r\n MaterialSelect.mdbSelectAutoInit();\r\n});\r\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduce') }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","/*\r\n Enhanced Bootstrap Modals\r\n https://mdbootstrap.com\r\n office@mdbootstrap.com\r\n*/\r\n\r\n(function($){\r\n $('body').on('shown.bs.modal', '.modal', function() {\r\n if(!$('.modal-backdrop').length) {\r\n\r\n $modal_dialog = $(this).children('.modal-dialog')\r\n\r\n if($modal_dialog.hasClass('modal-side')) {\r\n $(this).addClass('modal-scrolling');\r\n $('body').addClass('scrollable');\r\n }\r\n\r\n if($modal_dialog.hasClass('modal-frame')) {\r\n $(this).addClass('modal-content-clickable');\r\n $('body').addClass('scrollable');\r\n }\r\n }\r\n });\r\n $('body').on('hidden.bs.modal', '.modal', function() {\r\n $('body').removeClass('scrollable');\r\n });\r\n})(jQuery);\r\n","/*\r\n * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/\r\n *\r\n * Uses the built in easing capabilities added In jQuery 1.1\r\n * to offer multiple easing options\r\n *\r\n * TERMS OF USE - jQuery Easing\r\n *\r\n * Open source under the BSD License.\r\n *\r\n * Copyright © 2008 George McGinley Smith\r\n * All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without modification,\r\n * are permitted provided that the following conditions are met:\r\n *\r\n * Redistributions of source code must retain the above copyright notice, this list of\r\n * conditions and the following disclaimer.\r\n * Redistributions in binary form must reproduce the above copyright notice, this list\r\n * of conditions and the following disclaimer in the documentation and/or other materials\r\n * provided with the distribution.\r\n *\r\n * Neither the name of the author nor the names of contributors may be used to endorse\r\n * or promote products derived from this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\r\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\r\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\r\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r\n * OF THE POSSIBILITY OF SUCH DAMAGE.\r\n *\r\n*/\r\n\r\n// t: current time, b: begInnIng value, c: change In value, d: duration\r\njQuery.easing['jswing'] = jQuery.easing['swing'];\r\n\r\njQuery.extend( jQuery.easing,\r\n{\r\n def: 'easeOutQuad',\r\n swing: function (x, t, b, c, d) {\r\n //alert(jQuery.easing.default);\r\n return jQuery.easing[jQuery.easing.def](x, t, b, c, d);\r\n },\r\n easeInQuad: function (x, t, b, c, d) {\r\n return c*(t/=d)*t + b;\r\n },\r\n easeOutQuad: function (x, t, b, c, d) {\r\n return -c *(t/=d)*(t-2) + b;\r\n },\r\n easeInOutQuad: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t + b;\r\n return -c/2 * ((--t)*(t-2) - 1) + b;\r\n },\r\n easeInCubic: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t + b;\r\n },\r\n easeOutCubic: function (x, t, b, c, d) {\r\n return c*((t=t/d-1)*t*t + 1) + b;\r\n },\r\n easeInOutCubic: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t + b;\r\n return c/2*((t-=2)*t*t + 2) + b;\r\n },\r\n easeInQuart: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t*t + b;\r\n },\r\n easeOutQuart: function (x, t, b, c, d) {\r\n return -c * ((t=t/d-1)*t*t*t - 1) + b;\r\n },\r\n easeInOutQuart: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t*t + b;\r\n return -c/2 * ((t-=2)*t*t*t - 2) + b;\r\n },\r\n easeInQuint: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t*t*t + b;\r\n },\r\n easeOutQuint: function (x, t, b, c, d) {\r\n return c*((t=t/d-1)*t*t*t*t + 1) + b;\r\n },\r\n easeInOutQuint: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;\r\n return c/2*((t-=2)*t*t*t*t + 2) + b;\r\n },\r\n easeInSine: function (x, t, b, c, d) {\r\n return -c * Math.cos(t/d * (Math.PI/2)) + c + b;\r\n },\r\n easeOutSine: function (x, t, b, c, d) {\r\n return c * Math.sin(t/d * (Math.PI/2)) + b;\r\n },\r\n easeInOutSine: function (x, t, b, c, d) {\r\n return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;\r\n },\r\n easeInExpo: function (x, t, b, c, d) {\r\n return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\r\n },\r\n easeOutExpo: function (x, t, b, c, d) {\r\n return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\r\n },\r\n easeInOutExpo: function (x, t, b, c, d) {\r\n if (t==0) return b;\r\n if (t==d) return b+c;\r\n if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;\r\n return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;\r\n },\r\n easeInCirc: function (x, t, b, c, d) {\r\n return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;\r\n },\r\n easeOutCirc: function (x, t, b, c, d) {\r\n return c * Math.sqrt(1 - (t=t/d-1)*t) + b;\r\n },\r\n easeInOutCirc: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;\r\n return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;\r\n },\r\n easeInElastic: function (x, t, b, c, d) {\r\n var s=1.70158;var p=0;var a=c;\r\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\r\n if (a < Math.abs(c)) { a=c; var s=p/4; }\r\n else var s = p/(2*Math.PI) * Math.asin (c/a);\r\n return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\r\n },\r\n easeOutElastic: function (x, t, b, c, d) {\r\n var s=1.70158;var p=0;var a=c;\r\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\r\n if (a < Math.abs(c)) { a=c; var s=p/4; }\r\n else var s = p/(2*Math.PI) * Math.asin (c/a);\r\n return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;\r\n },\r\n easeInOutElastic: function (x, t, b, c, d) {\r\n var s=1.70158;var p=0;var a=c;\r\n if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);\r\n if (a < Math.abs(c)) { a=c; var s=p/4; }\r\n else var s = p/(2*Math.PI) * Math.asin (c/a);\r\n if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\r\n return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;\r\n },\r\n easeInBack: function (x, t, b, c, d, s) {\r\n if (s == undefined) s = 1.70158;\r\n return c*(t/=d)*t*((s+1)*t - s) + b;\r\n },\r\n easeOutBack: function (x, t, b, c, d, s) {\r\n if (s == undefined) s = 1.70158;\r\n return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;\r\n },\r\n easeInOutBack: function (x, t, b, c, d, s) {\r\n if (s == undefined) s = 1.70158;\r\n if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;\r\n return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;\r\n },\r\n easeInBounce: function (x, t, b, c, d) {\r\n return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;\r\n },\r\n easeOutBounce: function (x, t, b, c, d) {\r\n if ((t/=d) < (1/2.75)) {\r\n return c*(7.5625*t*t) + b;\r\n } else if (t < (2/2.75)) {\r\n return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;\r\n } else if (t < (2.5/2.75)) {\r\n return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;\r\n } else {\r\n return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;\r\n }\r\n },\r\n easeInOutBounce: function (x, t, b, c, d) {\r\n if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;\r\n return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;\r\n }\r\n});\r\n\r\n/*\r\n *\r\n * TERMS OF USE - EASING EQUATIONS\r\n *\r\n * Open source under the BSD License.\r\n *\r\n * Copyright © 2001 Robert Penner\r\n * All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without modification,\r\n * are permitted provided that the following conditions are met:\r\n *\r\n * Redistributions of source code must retain the above copyright notice, this list of\r\n * conditions and the following disclaimer.\r\n * Redistributions in binary form must reproduce the above copyright notice, this list\r\n * of conditions and the following disclaimer in the documentation and/or other materials\r\n * provided with the distribution.\r\n *\r\n * Neither the name of the author nor the names of contributors may be used to endorse\r\n * or promote products derived from this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\r\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\r\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\r\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r\n * OF THE POSSIBILITY OF SUCH DAMAGE.\r\n *\r\n */","/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */\r\n/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */\r\n/*! Note that this has been modified by Materialize to confirm that Velocity is not already being imported. */\r\njQuery.Velocity?console.log(\"Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity.\"):(!function(e){function t(e){var t=e.length,a=r.type(e);return\"function\"===a||r.isWindow(e)?!1:1===e.nodeType&&t?!0:\"array\"===a||0===t||\"number\"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var r=function(e,t){return new r.fn.init(e,t)};r.isWindow=function(e){return null!=e&&e==e.window},r.type=function(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?n[i.call(e)]||\"object\":typeof e},r.isArray=Array.isArray||function(e){return\"array\"===r.type(e)},r.isPlainObject=function(e){var t;if(!e||\"object\"!==r.type(e)||e.nodeType||r.isWindow(e))return!1;try{if(e.constructor&&!o.call(e,\"constructor\")&&!o.call(e.constructor.prototype,\"isPrototypeOf\"))return!1}catch(a){return!1}for(t in e);return void 0===t||o.call(e,t)},r.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},r.data=function(e,t,n){if(void 0===n){var o=e[r.expando],i=o&&a[o];if(void 0===t)return i;if(i&&t in i)return i[t]}else if(void 0!==t){var o=e[r.expando]||(e[r.expando]=++r.uuid);return a[o]=a[o]||{},a[o][t]=n,n}},r.removeData=function(e,t){var n=e[r.expando],o=n&&a[n];o&&r.each(t,function(e,t){delete o[t]})},r.extend=function(){var e,t,a,n,o,i,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for(\"boolean\"==typeof s&&(c=s,s=arguments[l]||{},l++),\"object\"!=typeof s&&\"function\"!==r.type(s)&&(s={}),l===u&&(s=this,l--);u>l;l++)if(null!=(o=arguments[l]))for(n in o)e=s[n],a=o[n],s!==a&&(c&&a&&(r.isPlainObject(a)||(t=r.isArray(a)))?(t?(t=!1,i=e&&r.isArray(e)?e:[]):i=e&&r.isPlainObject(e)?e:{},s[n]=r.extend(c,i,a)):void 0!==a&&(s[n]=a));return s},r.queue=function(e,a,n){function o(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,\"string\"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){a=(a||\"fx\")+\"queue\";var i=r.data(e,a);return n?(!i||r.isArray(n)?i=r.data(e,a,o(n)):i.push(n),i):i||[]}},r.dequeue=function(e,t){r.each(e.nodeType?[e]:e,function(e,a){t=t||\"fx\";var n=r.queue(a,t),o=n.shift();\"inprogress\"===o&&(o=n.shift()),o&&(\"fx\"===t&&n.unshift(\"inprogress\"),o.call(a,function(){r.dequeue(a,t)}))})},r.fn=r.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error(\"Not a DOM node.\")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&\"html\"===!e.nodeType.toLowerCase&&\"static\"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),a=this.offset(),n=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:r(e).offset();return a.top-=parseFloat(t.style.marginTop)||0,a.left-=parseFloat(t.style.marginLeft)||0,e.style&&(n.top+=parseFloat(e.style.borderTopWidth)||0,n.left+=parseFloat(e.style.borderLeftWidth)||0),{top:a.top-n.top,left:a.left-n.left}}};var a={};r.expando=\"velocity\"+(new Date).getTime(),r.uuid=0;for(var n={},o=n.hasOwnProperty,i=n.toString,s=\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),l=0;ln;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S=\"Float32Array\"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if(\"number\"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T=\"generateBezier(\"+[e,r,a,n]+\")\";return C.toString=function(){return T},C}function u(e,t){var r=e;return m.isString(e)?b.Easings[e]||(r=!1):r=m.isArray(e)&&1===e.length?s.apply(null,e):m.isArray(e)&&2===e.length?x.apply(null,e.concat([t])):m.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=b.Easings[b.defaults.easing]?b.defaults.easing:v),r}function c(e){if(e){var t=(new Date).getTime(),r=b.State.calls.length;r>1e4&&(b.State.calls=n(b.State.calls));for(var o=0;r>o;o++)if(b.State.calls[o]){var s=b.State.calls[o],l=s[0],u=s[2],d=s[3],g=!!d,y=null;d||(d=b.State.calls[o][3]=t-16);for(var h=Math.min((t-d)/u.duration,1),v=0,x=l.length;x>v;v++){var P=l[v],V=P.element;if(i(V)){var C=!1;if(u.display!==a&&null!==u.display&&\"none\"!==u.display){if(\"flex\"===u.display){var T=[\"-webkit-box\",\"-moz-box\",\"-ms-flexbox\",\"-webkit-flex\"];f.each(T,function(e,t){S.setPropertyValue(V,\"display\",t)})}S.setPropertyValue(V,\"display\",u.display)}u.visibility!==a&&\"hidden\"!==u.visibility&&S.setPropertyValue(V,\"visibility\",u.visibility);for(var k in P)if(\"element\"!==k){var A,F=P[k],j=m.isString(F.easing)?b.Easings[F.easing]:F.easing;if(1===h)A=F.endValue;else{var E=F.endValue-F.startValue;if(A=F.startValue+E*j(h,u,E),!g&&A===F.currentValue)continue}if(F.currentValue=A,\"tween\"===k)y=A;else{if(S.Hooks.registered[k]){var H=S.Hooks.getRoot(k),N=i(V).rootPropertyValueCache[H];N&&(F.rootPropertyValue=N)}var L=S.setPropertyValue(V,k,F.currentValue+(0===parseFloat(A)?\"\":F.unitType),F.rootPropertyValue,F.scrollData);S.Hooks.registered[k]&&(i(V).rootPropertyValueCache[H]=S.Normalizations.registered[H]?S.Normalizations.registered[H](\"extract\",null,L[1]):L[1]),\"transform\"===L[0]&&(C=!0)}}u.mobileHA&&i(V).transformCache.translate3d===a&&(i(V).transformCache.translate3d=\"(0px, 0px, 0px)\",C=!0),C&&S.flushTransformCache(V)}}u.display!==a&&\"none\"!==u.display&&(b.State.calls[o][2].display=!1),u.visibility!==a&&\"hidden\"!==u.visibility&&(b.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],h,Math.max(0,d+u.duration-t),d,y),1===h&&p(o)}}b.State.isTicking&&w(c)}function p(e,t){if(!b.State.calls[e])return!1;for(var r=b.State.calls[e][0],n=b.State.calls[e][1],o=b.State.calls[e][2],s=b.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||(\"none\"===o.display&&S.setPropertyValue(p,\"display\",o.display),\"hidden\"===o.visibility&&S.setPropertyValue(p,\"visibility\",o.visibility)),o.loop!==!0&&(f.queue(p)[1]===a||!/\\.velocityQueueEntryFlag/i.test(f.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var d=!1;f.each(S.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp(\"^\\\\(\"+r+\"[^.]\").test(n)&&(d=!0,delete i(p).transformCache[t])}),o.mobileHA&&(d=!0,delete i(p).transformCache.translate3d),d&&S.flushTransformCache(p),S.Values.removeClass(p,\"velocity-animating\")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(g){setTimeout(function(){throw g},1)}s&&o.loop!==!0&&s(n),i(p)&&o.loop===!0&&!t&&(f.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&\"%\"===t.unitType&&(t.endValue=0,t.startValue=100)}),b(p,\"reverse\",{loop:!0,delay:o.delay})),o.queue!==!1&&f.dequeue(p,o.queue)}b.State.calls[e]=!1;for(var m=0,y=b.State.calls.length;y>m;m++)if(b.State.calls[m]!==!1){l=!0;break}l===!1&&(b.State.isTicking=!1,delete b.State.calls,b.State.calls=[])}var f,d=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement(\"div\");if(t.innerHTML=\"\",t.getElementsByTagName(\"span\").length)return t=null,e}return a}(),g=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r,a=(new Date).getTime();return r=Math.max(0,16-(a-e)),e=a+r,setTimeout(function(){t(a+r)},r)}}(),m={isString:function(e){return\"string\"==typeof e},isArray:Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},isFunction:function(e){return\"[object Function]\"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return\"object\"==typeof e&&/^\\[object (HTMLCollection|NodeList|Object)\\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||\"object\"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},y=!1;if(e.fn&&e.fn.jquery?(f=e,y=!0):f=t.Velocity.Utilities,8>=d&&!y)throw new Error(\"Velocity: IE8 and below require jQuery to be loaded before Velocity.\");if(7>=d)return void(jQuery.fn.velocity=jQuery.fn.animate);var h=400,v=\"swing\",b={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\\.3\\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement(\"div\"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:f,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:\"\",duration:h,easing:v,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){f.data(e,\"velocity\",{isSVG:m.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==a?(b.State.scrollAnchor=t,b.State.scrollPropertyLeft=\"pageXOffset\",b.State.scrollPropertyTop=\"pageYOffset\"):(b.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,b.State.scrollPropertyLeft=\"scrollLeft\",b.State.scrollPropertyTop=\"scrollTop\");var x=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o,i,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,p=1e-4,f=.016;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,l.tension=e,l.friction=t,o=null!==n,o?(c=a(e,t),i=c/n*f):i=f;s=r(s||l,i),u.push(1+s.x),c+=16,Math.abs(s.x)>p&&Math.abs(s.v)>p;);return o?function(e){return u[e*(u.length-1)|0]}:c}}();b.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},f.each([[\"ease\",[.25,.1,.25,1]],[\"ease-in\",[.42,0,1,1]],[\"ease-out\",[0,0,.58,1]],[\"ease-in-out\",[.42,0,.58,1]],[\"easeInSine\",[.47,0,.745,.715]],[\"easeOutSine\",[.39,.575,.565,1]],[\"easeInOutSine\",[.445,.05,.55,.95]],[\"easeInQuad\",[.55,.085,.68,.53]],[\"easeOutQuad\",[.25,.46,.45,.94]],[\"easeInOutQuad\",[.455,.03,.515,.955]],[\"easeInCubic\",[.55,.055,.675,.19]],[\"easeOutCubic\",[.215,.61,.355,1]],[\"easeInOutCubic\",[.645,.045,.355,1]],[\"easeInQuart\",[.895,.03,.685,.22]],[\"easeOutQuart\",[.165,.84,.44,1]],[\"easeInOutQuart\",[.77,0,.175,1]],[\"easeInQuint\",[.755,.05,.855,.06]],[\"easeOutQuint\",[.23,1,.32,1]],[\"easeInOutQuint\",[.86,0,.07,1]],[\"easeInExpo\",[.95,.05,.795,.035]],[\"easeOutExpo\",[.19,1,.22,1]],[\"easeInOutExpo\",[1,0,0,1]],[\"easeInCirc\",[.6,.04,.98,.335]],[\"easeOutCirc\",[.075,.82,.165,1]],[\"easeInOutCirc\",[.785,.135,.15,.86]]],function(e,t){b.Easings[t[0]]=l.apply(null,t[1])});var S=b.CSS={RegEx:{isHex:/^#([A-f\\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\\((.*)\\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\\(.+\\))|(([A-z0-9#-.]+?)(?=\\s|$))/gi},Lists:{colors:[\"fill\",\"stroke\",\"stopColor\",\"color\",\"backgroundColor\",\"borderColor\",\"borderTopColor\",\"borderRightColor\",\"borderBottomColor\",\"borderLeftColor\",\"outlineColor\"],transformsBase:[\"translateX\",\"translateY\",\"scale\",\"scaleX\",\"scaleY\",\"skewX\",\"skewY\",\"rotateZ\"],transforms3D:[\"transformPerspective\",\"translateZ\",\"scaleZ\",\"rotateX\",\"rotateY\"]},Hooks:{templates:{textShadow:[\"Color X Y Blur\",\"black 0px 0px 0px\"],boxShadow:[\"Color X Y Blur Spread\",\"black 0px 0px 0px 0px\"],clip:[\"Top Right Bottom Left\",\"0px 0px 0px 0px\"],backgroundPosition:[\"X Y\",\"0% 0%\"],transformOrigin:[\"X Y Z\",\"50% 50% 0px\"],perspectiveOrigin:[\"X Y\",\"50% 50%\"]},registered:{},register:function(){for(var e=0;e=d)switch(e){case\"name\":return\"filter\";case\"extract\":var a=r.toString().match(/alpha\\(opacity=(.*)\\)/i);return r=a?a[1]/100:1;case\"inject\":return t.style.zoom=1,parseFloat(r)>=1?\"\":\"alpha(opacity=\"+parseInt(100*parseFloat(r),10)+\")\"}else switch(e){case\"name\":return\"opacity\";case\"extract\":return r;case\"inject\":return r}}},register:function(){9>=d||b.State.isGingerbread||(S.Lists.transformsBase=S.Lists.transformsBase.concat(S.Lists.transforms3D));for(var e=0;en&&(n=1),o=!/(\\d)$/i.test(n);break;case\"skew\":o=!/(deg|\\d)$/i.test(n);break;case\"rotate\":o=!/(deg|\\d)$/i.test(n)}return o||(i(r).transformCache[t]=\"(\"+n+\")\"),i(r).transformCache[t]}}}();for(var e=0;e=d||3!==o.split(\" \").length||(o+=\" 1\"),o;case\"inject\":return 8>=d?4===n.split(\" \").length&&(n=n.split(/\\s+/).slice(0,3).join(\" \")):3===n.split(\" \").length&&(n+=\" 1\"),(8>=d?\"rgb\":\"rgba\")+\"(\"+n.replace(/\\s+/g,\",\").replace(/\\.(\\d)+(?=,)/g,\"\")+\")\"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t=\"width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2\";return(d||b.State.isAndroid&&!b.State.isChrome)&&(t+=\"|transform\"),new RegExp(\"^(\"+t+\")$\",\"i\").test(e)},prefixCheck:function(e){if(b.State.prefixMatches[e])return[b.State.prefixMatches[e],!0];for(var t=[\"\",\"Webkit\",\"Moz\",\"ms\",\"O\"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\\w/,function(e){return e.toUpperCase()}),m.isString(b.State.prefixElement.style[n]))return b.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t,r=/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,a=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;return e=e.replace(r,function(e,t,r,a){return t+t+r+r+a+a}),t=a.exec(e),t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\\(0, ?0, ?0, ?0\\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?\"deg\":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?\"\":\"px\"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?\"inline\":/^(li)$/i.test(t)?\"list-item\":/^(tr)$/i.test(t)?\"table-row\":/^(table)$/i.test(t)?\"table\":/^(tbody)$/i.test(t)?\"table-row-group\":\"block\"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?\" \":\"\")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp(\"(^|\\\\s)\"+t.split(\" \").join(\"|\")+\"(\\\\s|$)\",\"gi\"),\" \")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&S.setPropertyValue(e,\"display\",\"none\")}var l=0;if(8>=d)l=f.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===S.getPropertyValue(e,\"display\")&&(u=!0,S.setPropertyValue(e,\"display\",S.Values.getDisplayType(e))),!o){if(\"height\"===r&&\"border-box\"!==S.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(S.getPropertyValue(e,\"borderTopWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"borderBottomWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingTop\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingBottom\"))||0);return n(),c}if(\"width\"===r&&\"border-box\"!==S.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(S.getPropertyValue(e,\"borderLeftWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"borderRightWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingLeft\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingRight\"))||0);return n(),p}}var g;g=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),\"borderColor\"===r&&(r=\"borderTopColor\"),l=9===d&&\"filter\"===r?g.getPropertyValue(r):g[r],(\"\"===l||null===l)&&(l=e.style[r]),n()}if(\"auto\"===l&&/^(top|right|bottom|left)$/i.test(r)){var m=s(e,\"position\");(\"fixed\"===m||\"absolute\"===m&&/top|left/i.test(r))&&(l=f(e).position()[r]+\"px\")}return l}var l;if(S.Hooks.registered[r]){var u=r,c=S.Hooks.getRoot(u);n===a&&(n=S.getPropertyValue(e,S.Names.prefixCheck(c)[0])),S.Normalizations.registered[c]&&(n=S.Normalizations.registered[c](\"extract\",e,n)),l=S.Hooks.extractValue(u,n)}else if(S.Normalizations.registered[r]){var p,g;p=S.Normalizations.registered[r](\"name\",e),\"transform\"!==p&&(g=s(e,S.Names.prefixCheck(p)[0]),S.Values.isCSSNullValue(g)&&S.Hooks.templates[r]&&(g=S.Hooks.templates[r][1])),l=S.Normalizations.registered[r](\"extract\",e,g)}if(!/^[\\d-]/.test(l))if(i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(m){l=0}else l=e.getAttribute(r);else l=s(e,S.Names.prefixCheck(r)[0]);return S.Values.isCSSNullValue(l)&&(l=0),b.debug>=2&&console.log(\"Get \"+r+\": \"+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if(\"scroll\"===r)o.container?o.container[\"scroll\"+o.direction]=a:\"Left\"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(S.Normalizations.registered[r]&&\"transform\"===S.Normalizations.registered[r](\"name\",e))S.Normalizations.registered[r](\"inject\",e,a),s=\"transform\",a=i(e).transformCache[r];else{if(S.Hooks.registered[r]){var l=r,u=S.Hooks.getRoot(r);n=n||S.getPropertyValue(e,u),a=S.Hooks.injectValue(l,a,n),r=u}if(S.Normalizations.registered[r]&&(a=S.Normalizations.registered[r](\"inject\",e,a),r=S.Normalizations.registered[r](\"name\",e)),s=S.Names.prefixCheck(r)[0],8>=d)try{e.style[s]=a}catch(c){b.debug&&console.log(\"Browser does not support [\"+a+\"] for [\"+s+\"]\")}else i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;b.debug>=2&&console.log(\"Set \"+r+\" (\"+s+\"): \"+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(S.getPropertyValue(e,t))}var r=\"\";if((d||b.State.isAndroid&&!b.State.isChrome)&&i(e).isSVG){var a={translate:[t(\"translateX\"),t(\"translateY\")],skewX:[t(\"skewX\")],skewY:[t(\"skewY\")],scale:1!==t(\"scale\")?[t(\"scale\"),t(\"scale\")]:[t(\"scaleX\"),t(\"scaleY\")],rotate:[t(\"rotateZ\"),0,0]};f.each(i(e).transformCache,function(e){/^translate/i.test(e)?e=\"translate\":/^scale/i.test(e)?e=\"scale\":/^rotate/i.test(e)&&(e=\"rotate\"),a[e]&&(r+=e+\"(\"+a[e].join(\" \")+\") \",delete a[e])})}else{var n,o;f.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],\"transformPerspective\"===t?(o=n,!0):(9===d&&\"rotateZ\"===t&&(t=\"rotate\"),void(r+=t+n+\" \"))}),o&&(r=\"perspective\"+o+\" \"+r)}S.setPropertyValue(e,\"transform\",r)}};S.Hooks.register(),S.Normalizations.register(),b.hook=function(e,t,r){var n=a;return e=o(e),f.each(e,function(e,o){if(i(o)===a&&b.init(o),r===a)n===a&&(n=b.CSS.getPropertyValue(o,t));else{var s=b.CSS.setPropertyValue(o,t,r);\"transform\"===s[0]&&b.CSS.flushTransformCache(o),n=s}}),n};var P=function(){function e(){return s?k.promise||null:l}function n(){function e(e){function p(e,t){var r=a,n=a,i=a;return m.isArray(e)?(r=e[0],!m.isArray(e[1])&&/^[\\d-]/.test(e[1])||m.isFunction(e[1])||S.RegEx.isHex.test(e[1])?i=e[1]:(m.isString(e[1])&&!S.RegEx.isHex.test(e[1])||m.isArray(e[1]))&&(n=t?e[1]:u(e[1],s.duration),e[2]!==a&&(i=e[2]))):r=e,t||(n=n||s.easing),m.isFunction(r)&&(r=r.call(o,V,w)),m.isFunction(i)&&(i=i.call(o,V,w)),[r||0,n,i]}function d(e,t){var r,a;return a=(t||\"0\").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,\"\"}),r||(r=S.Values.getUnitType(e)),[a,r]}function h(){var e={myParent:o.parentNode||r.body,position:S.getPropertyValue(o,\"position\"),fontSize:S.getPropertyValue(o,\"fontSize\")},a=e.position===L.lastPosition&&e.myParent===L.lastParent,n=e.fontSize===L.lastFontSize;L.lastParent=e.myParent,L.lastPosition=e.position,L.lastFontSize=e.fontSize;var s=100,l={};if(n&&a)l.emToPx=L.lastEmToPx,l.percentToPxWidth=L.lastPercentToPxWidth,l.percentToPxHeight=L.lastPercentToPxHeight;else{var u=i(o).isSVG?r.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\"):r.createElement(\"div\");b.init(u),e.myParent.appendChild(u),f.each([\"overflow\",\"overflowX\",\"overflowY\"],function(e,t){b.CSS.setPropertyValue(u,t,\"hidden\")}),b.CSS.setPropertyValue(u,\"position\",e.position),b.CSS.setPropertyValue(u,\"fontSize\",e.fontSize),b.CSS.setPropertyValue(u,\"boxSizing\",\"content-box\"),f.each([\"minWidth\",\"maxWidth\",\"width\",\"minHeight\",\"maxHeight\",\"height\"],function(e,t){b.CSS.setPropertyValue(u,t,s+\"%\")}),b.CSS.setPropertyValue(u,\"paddingLeft\",s+\"em\"),l.percentToPxWidth=L.lastPercentToPxWidth=(parseFloat(S.getPropertyValue(u,\"width\",null,!0))||1)/s,l.percentToPxHeight=L.lastPercentToPxHeight=(parseFloat(S.getPropertyValue(u,\"height\",null,!0))||1)/s,l.emToPx=L.lastEmToPx=(parseFloat(S.getPropertyValue(u,\"paddingLeft\"))||1)/s,e.myParent.removeChild(u)}return null===L.remToPx&&(L.remToPx=parseFloat(S.getPropertyValue(r.body,\"fontSize\"))||16),null===L.vwToPx&&(L.vwToPx=parseFloat(t.innerWidth)/100,L.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=L.remToPx,l.vwToPx=L.vwToPx,l.vhToPx=L.vhToPx,b.debug>=1&&console.log(\"Unit ratios: \"+JSON.stringify(l),o),l}if(s.begin&&0===V)try{s.begin.call(g,g)}catch(x){setTimeout(function(){throw x},1)}if(\"scroll\"===A){var P,C,T,F=/^x$/i.test(s.axis)?\"Left\":\"Top\",j=parseFloat(s.offset)||0;s.container?m.isWrapped(s.container)||m.isNode(s.container)?(s.container=s.container[0]||s.container,P=s.container[\"scroll\"+F],T=P+f(o).position()[F.toLowerCase()]+j):s.container=null:(P=b.State.scrollAnchor[b.State[\"scrollProperty\"+F]],C=b.State.scrollAnchor[b.State[\"scrollProperty\"+(\"Left\"===F?\"Top\":\"Left\")]],T=f(o).offset()[F.toLowerCase()]+j),l={scroll:{rootPropertyValue:!1,startValue:P,currentValue:P,endValue:T,unitType:\"\",easing:s.easing,scrollData:{container:s.container,direction:F,alternateValue:C}},element:o},b.debug&&console.log(\"tweensContainer (scroll): \",l.scroll,o)}else if(\"reverse\"===A){if(!i(o).tweensContainer)return void f.dequeue(o,s.queue);\"none\"===i(o).opts.display&&(i(o).opts.display=\"auto\"),\"hidden\"===i(o).opts.visibility&&(i(o).opts.visibility=\"visible\"),i(o).opts.loop=!1,i(o).opts.begin=null,i(o).opts.complete=null,v.easing||delete s.easing,v.duration||delete s.duration,s=f.extend({},i(o).opts,s);var E=f.extend(!0,{},i(o).tweensContainer);for(var H in E)if(\"element\"!==H){var N=E[H].startValue;E[H].startValue=E[H].currentValue=E[H].endValue,E[H].endValue=N,m.isEmptyObject(v)||(E[H].easing=s.easing),b.debug&&console.log(\"reverse tweensContainer (\"+H+\"): \"+JSON.stringify(E[H]),o)}l=E}else if(\"start\"===A){var E;i(o).tweensContainer&&i(o).isAnimating===!0&&(E=i(o).tweensContainer),f.each(y,function(e,t){if(RegExp(\"^\"+S.Lists.colors.join(\"$|^\")+\"$\").test(e)){var r=p(t,!0),n=r[0],o=r[1],i=r[2];if(S.RegEx.isHex.test(n)){for(var s=[\"Red\",\"Green\",\"Blue\"],l=S.Values.hexToRgb(n),u=i?S.Values.hexToRgb(i):a,c=0;cO;O++){var q={delay:j.delay,progress:j.progress};O===z-1&&(q.display=j.display,q.visibility=j.visibility,q.complete=j.complete),P(g,\"reverse\",q)}return e()}};b=f.extend(P,b),b.animate=P;var w=t.requestAnimationFrame||g;return b.State.isMobile||r.hidden===a||r.addEventListener(\"visibilitychange\",function(){r.hidden?(w=function(e){return setTimeout(function(){e(!0)},16)},c()):w=t.requestAnimationFrame||g}),e.Velocity=b,e!==t&&(e.fn.velocity=P,e.fn.velocity.defaults=b.defaults),f.each([\"Down\",\"Up\"],function(e,t){b.Redirects[\"slide\"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u=l.begin,c=l.complete,p={height:\"\",marginTop:\"\",marginBottom:\"\",paddingTop:\"\",paddingBottom:\"\"},d={};l.display===a&&(l.display=\"Down\"===t?\"inline\"===b.CSS.Values.getDisplayType(e)?\"inline-block\":\"block\":\"none\"),l.begin=function(){u&&u.call(i,i);for(var r in p){d[r]=e.style[r];var a=b.CSS.getPropertyValue(e,r);p[r]=\"Down\"===t?[a,0]:[0,a]}d.overflow=e.style.overflow,e.style.overflow=\"hidden\"},l.complete=function(){for(var t in d)e.style[t]=d[t];c&&c.call(i,i),s&&s.resolver(i)},b(e,p,l)}}),f.each([\"In\",\"Out\"],function(e,t){b.Redirects[\"fade\"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u={opacity:\"In\"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display=\"In\"===t?\"auto\":\"none\"),b(this,u,l)}}),b}(window.jQuery||window.Zepto||window,window,document)}));\r\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar nativeArrayBufferSlice = ArrayBuffer.prototype.slice;\n\nvar INCORRECT_SLICE = fails(function () {\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n slice: function slice(start, end) {\n if (nativeArrayBufferSlice !== undefined && end === undefined) {\n return nativeArrayBufferSlice.call(anObject(this), start); // FF fix\n }\n var length = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n var viewSource = new DataView(this);\n var viewTarget = new DataView(result);\n var index = 0;\n while (first < fin) {\n viewTarget.setUint8(index++, viewSource.getUint8(first++));\n } return result;\n }\n});\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var typedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float32Array` constructor\n// https://tc39.github.io/ecma262/#sec-typedarray-objects\ntypedArrayConstructor('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-arrays-constructors-requires-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, BYTES, wrapper, CLAMPED) {\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","/* eslint-disable no-new */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari 11 bug\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var toInteger = require('../internals/to-integer');\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar bind = require('../internals/bind-context');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $copyWithin = require('../internals/array-copy-within');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin\nArrayBufferViewCore.exportProto('copyWithin', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every\nArrayBufferViewCore.exportProto('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter\nArrayBufferViewCore.exportProto('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find\nArrayBufferViewCore.exportProto('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex\nArrayBufferViewCore.exportProto('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach\nArrayBufferViewCore.exportProto('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes\nArrayBufferViewCore.exportProto('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof\nArrayBufferViewCore.exportProto('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportProto = ArrayBufferViewCore.exportProto;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries\nexportProto('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys\nexportProto('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values\nexportProto('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportProto(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map\nArrayBufferViewCore.exportProto('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce\nArrayBufferViewCore.exportProto('reduce', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright\nArrayBufferViewCore.exportProto('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse\nArrayBufferViewCore.exportProto('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set\nArrayBufferViewCore.exportProto('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\nArrayBufferViewCore.exportProto('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some\nArrayBufferViewCore.exportProto('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort\nArrayBufferViewCore.exportProto('sort', function sort(comparefn) {\n return $sort.call(aTypedArray(this), comparefn);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray\nArrayBufferViewCore.exportProto('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring\nArrayBufferViewCore.exportProto('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype;\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring\nArrayBufferViewCore.exportProto('toString', arrayToString, (Uint8ArrayPrototype || {}).toString != arrayToString);\n","/*!\r\n * Waves v0.7.6\r\n * http://fian.my.id/Waves\r\n *\r\n * Copyright 2014-2018 Alfiana E. Sibuea and other contributors\r\n * Released under the MIT license\r\n * https://github.com/fians/Waves/blob/master/LICENSE\r\n */\r\n\r\n\r\n(function (window, factory) {\r\n 'use strict';\r\n\r\n // AMD. Register as an anonymous module. Wrap in function so we have access\r\n // to root via `this`.\r\n if (typeof define === 'function' && define.amd) {\r\n define([], function () {\r\n window.Waves = factory.call(window);\r\n return window.Waves;\r\n });\r\n }\r\n\r\n // Node. Does not work with strict CommonJS, but only CommonJS-like\r\n // environments that support module.exports, like Node.\r\n else if (typeof exports === 'object') {\r\n module.exports = factory.call(window);\r\n }\r\n\r\n // Browser globals.\r\n else {\r\n window.Waves = factory.call(window);\r\n }\r\n})(typeof window === 'object' ? window : this, function () {\r\n 'use strict';\r\n\r\n var Waves = Waves || {};\r\n var $$ = document.querySelectorAll.bind(document);\r\n var toString = Object.prototype.toString;\r\n var isTouchAvailable = 'ontouchstart' in window;\r\n\r\n\r\n // Find exact position of element\r\n function isWindow(obj) {\r\n return obj !== null && obj === obj.window;\r\n }\r\n\r\n function getWindow(elem) {\r\n return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\r\n }\r\n\r\n function isObject(value) {\r\n var type = typeof value;\r\n return type === 'function' || type === 'object' && !!value;\r\n }\r\n\r\n function isDOMNode(obj) {\r\n return isObject(obj) && obj.nodeType > 0;\r\n }\r\n\r\n function getWavesElements(nodes) {\r\n var stringRepr = toString.call(nodes);\r\n\r\n if (stringRepr === '[object String]') {\r\n return $$(nodes);\r\n } else if (isObject(nodes) && /^\\[object (Array|HTMLCollection|NodeList|Object)\\]$/.test(stringRepr) && nodes.hasOwnProperty('length')) {\r\n return nodes;\r\n } else if (isDOMNode(nodes)) {\r\n return [nodes];\r\n }\r\n\r\n return [];\r\n }\r\n\r\n function offset(elem) {\r\n var docElem, win,\r\n box = {\r\n top: 0,\r\n left: 0\r\n },\r\n doc = elem && elem.ownerDocument;\r\n\r\n docElem = doc.documentElement;\r\n\r\n if (typeof elem.getBoundingClientRect !== typeof undefined) {\r\n box = elem.getBoundingClientRect();\r\n }\r\n win = getWindow(doc);\r\n return {\r\n top: box.top + win.pageYOffset - docElem.clientTop,\r\n left: box.left + win.pageXOffset - docElem.clientLeft\r\n };\r\n }\r\n\r\n function convertStyle(styleObj) {\r\n var style = '';\r\n\r\n for (var prop in styleObj) {\r\n if (styleObj.hasOwnProperty(prop)) {\r\n style += (prop + ':' + styleObj[prop] + ';');\r\n }\r\n }\r\n\r\n return style;\r\n }\r\n\r\n var Effect = {\r\n\r\n // Effect duration\r\n duration: 750,\r\n\r\n // Effect delay (check for scroll before showing effect)\r\n delay: 200,\r\n\r\n show: function (e, element, velocity) {\r\n\r\n // Disable right click\r\n if (e.button === 2) {\r\n return false;\r\n }\r\n\r\n element = element || this;\r\n\r\n // Create ripple\r\n var ripple = document.createElement('div');\r\n ripple.className = 'waves-ripple waves-rippling';\r\n element.appendChild(ripple);\r\n\r\n // Get click coordinate and element width\r\n var pos = offset(element);\r\n var relativeY = 0;\r\n var relativeX = 0;\r\n // Support for touch devices\r\n if ('touches' in e && e.touches.length) {\r\n relativeY = (e.touches[0].pageY - pos.top);\r\n relativeX = (e.touches[0].pageX - pos.left);\r\n }\r\n //Normal case\r\n else {\r\n relativeY = (e.pageY - pos.top);\r\n relativeX = (e.pageX - pos.left);\r\n }\r\n // Support for synthetic events\r\n relativeX = relativeX >= 0 ? relativeX : 0;\r\n relativeY = relativeY >= 0 ? relativeY : 0;\r\n\r\n var scale = 'scale(' + ((element.clientWidth / 100) * 3) + ')';\r\n var translate = 'translate(0,0)';\r\n\r\n if (velocity) {\r\n translate = 'translate(' + (velocity.x) + 'px, ' + (velocity.y) + 'px)';\r\n }\r\n\r\n // Attach data to element\r\n ripple.setAttribute('data-hold', Date.now());\r\n ripple.setAttribute('data-x', relativeX);\r\n ripple.setAttribute('data-y', relativeY);\r\n ripple.setAttribute('data-scale', scale);\r\n ripple.setAttribute('data-translate', translate);\r\n\r\n // Set ripple position\r\n var rippleStyle = {\r\n top: relativeY + 'px',\r\n left: relativeX + 'px'\r\n };\r\n\r\n ripple.classList.add('waves-notransition');\r\n ripple.setAttribute('style', convertStyle(rippleStyle));\r\n ripple.classList.remove('waves-notransition');\r\n\r\n // Scale the ripple\r\n rippleStyle['-webkit-transform'] = scale + ' ' + translate;\r\n rippleStyle['-moz-transform'] = scale + ' ' + translate;\r\n rippleStyle['-ms-transform'] = scale + ' ' + translate;\r\n rippleStyle['-o-transform'] = scale + ' ' + translate;\r\n rippleStyle.transform = scale + ' ' + translate;\r\n rippleStyle.opacity = '1';\r\n\r\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\r\n rippleStyle['-webkit-transition-duration'] = duration + 'ms';\r\n rippleStyle['-moz-transition-duration'] = duration + 'ms';\r\n rippleStyle['-o-transition-duration'] = duration + 'ms';\r\n rippleStyle['transition-duration'] = duration + 'ms';\r\n\r\n ripple.setAttribute('style', convertStyle(rippleStyle));\r\n },\r\n\r\n hide: function (e, element) {\r\n element = element || this;\r\n\r\n var ripples = element.getElementsByClassName('waves-rippling');\r\n\r\n for (var i = 0, len = ripples.length; i < len; i++) {\r\n removeRipple(e, element, ripples[i]);\r\n }\r\n\r\n if (isTouchAvailable) {\r\n element.removeEventListener('touchend', Effect.hide);\r\n element.removeEventListener('touchcancel', Effect.hide);\r\n }\r\n\r\n element.removeEventListener('mouseup', Effect.hide);\r\n element.removeEventListener('mouseleave', Effect.hide);\r\n }\r\n };\r\n\r\n /**\r\n * Collection of wrapper for HTML element that only have single tag\r\n * like and \r\n */\r\n var TagWrapper = {\r\n\r\n // Wrap tag so it can perform the effect\r\n input: function (element) {\r\n\r\n var parent = element.parentNode;\r\n\r\n // If input already have parent just pass through\r\n if (parent.tagName.toLowerCase() === 'span' && parent.classList.contains('waves-effect')) {\r\n return;\r\n }\r\n\r\n // Put element class and style to the specified parent\r\n var wrapper = document.createElement('span');\r\n wrapper.className = 'waves-input-wrapper';\r\n // element.className = 'waves-button-input';\r\n\r\n // Put element as child\r\n parent.replaceChild(wrapper, element);\r\n wrapper.appendChild(element);\r\n\r\n },\r\n\r\n // Wrap tag so it can perform the effect\r\n img: function (element) {\r\n\r\n var parent = element.parentNode;\r\n\r\n // If input already have parent just pass through\r\n if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {\r\n return;\r\n }\r\n\r\n // Put element as child\r\n var wrapper = document.createElement('i');\r\n parent.replaceChild(wrapper, element);\r\n wrapper.appendChild(element);\r\n\r\n }\r\n };\r\n\r\n /**\r\n * Hide the effect and remove the ripple. Must be\r\n * a separate function to pass the JSLint...\r\n */\r\n function removeRipple(e, el, ripple) {\r\n\r\n // Check if the ripple still exist\r\n if (!ripple) {\r\n return;\r\n }\r\n\r\n ripple.classList.remove('waves-rippling');\r\n\r\n var relativeX = ripple.getAttribute('data-x');\r\n var relativeY = ripple.getAttribute('data-y');\r\n var scale = ripple.getAttribute('data-scale');\r\n var translate = ripple.getAttribute('data-translate');\r\n\r\n // Get delay beetween mousedown and mouse leave\r\n var diff = Date.now() - Number(ripple.getAttribute('data-hold'));\r\n var delay = 350 - diff;\r\n\r\n if (delay < 0) {\r\n delay = 0;\r\n }\r\n\r\n if (e.type === 'mousemove') {\r\n delay = 150;\r\n }\r\n\r\n // Fade out ripple after delay\r\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\r\n\r\n setTimeout(function () {\r\n\r\n var style = {\r\n top: relativeY + 'px',\r\n left: relativeX + 'px',\r\n opacity: '0',\r\n\r\n // Duration\r\n '-webkit-transition-duration': duration + 'ms',\r\n '-moz-transition-duration': duration + 'ms',\r\n '-o-transition-duration': duration + 'ms',\r\n 'transition-duration': duration + 'ms',\r\n '-webkit-transform': scale + ' ' + translate,\r\n '-moz-transform': scale + ' ' + translate,\r\n '-ms-transform': scale + ' ' + translate,\r\n '-o-transform': scale + ' ' + translate,\r\n 'transform': scale + ' ' + translate\r\n };\r\n\r\n ripple.setAttribute('style', convertStyle(style));\r\n\r\n setTimeout(function () {\r\n try {\r\n el.removeChild(ripple);\r\n } catch (e) {\r\n return false;\r\n }\r\n }, duration);\r\n\r\n }, delay);\r\n }\r\n\r\n\r\n /**\r\n * Disable mousedown event for 500ms during and after touch\r\n */\r\n var TouchHandler = {\r\n\r\n /* uses an integer rather than bool so there's no issues with\r\n * needing to clear timeouts if another touch event occurred\r\n * within the 500ms. Cannot mouseup between touchstart and\r\n * touchend, nor in the 500ms after touchend. */\r\n touches: 0,\r\n\r\n allowEvent: function (e) {\r\n\r\n var allow = true;\r\n\r\n if (/^(mousedown|mousemove)$/.test(e.type) && TouchHandler.touches) {\r\n allow = false;\r\n }\r\n\r\n return allow;\r\n },\r\n registerEvent: function (e) {\r\n var eType = e.type;\r\n\r\n if (eType === 'touchstart') {\r\n\r\n TouchHandler.touches += 1; // push\r\n\r\n } else if (/^(touchend|touchcancel)$/.test(eType)) {\r\n\r\n setTimeout(function () {\r\n if (TouchHandler.touches) {\r\n TouchHandler.touches -= 1; // pop after 500ms\r\n }\r\n }, 500);\r\n\r\n }\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Delegated click handler for .waves-effect element.\r\n * returns null when .waves-effect element not in \"click tree\"\r\n */\r\n function getWavesEffectElement(e) {\r\n\r\n if (TouchHandler.allowEvent(e) === false) {\r\n return null;\r\n }\r\n\r\n var element = null;\r\n var target = e.target || e.srcElement;\r\n\r\n while (target.parentElement) {\r\n if ((!(target instanceof SVGElement)) && target.classList.contains('waves-effect')) {\r\n element = target;\r\n break;\r\n }\r\n target = target.parentElement;\r\n }\r\n\r\n return element;\r\n }\r\n\r\n /**\r\n * Bubble the click and show effect if .waves-effect elem was found\r\n */\r\n function showEffect(e) {\r\n\r\n // Disable effect if element has \"disabled\" property on it\r\n // In some cases, the event is not triggered by the current element\r\n // if (e.target.getAttribute('disabled') !== null) {\r\n // return;\r\n // }\r\n\r\n var element = getWavesEffectElement(e);\r\n\r\n if (element !== null) {\r\n\r\n // Make it sure the element has either disabled property, disabled attribute or 'disabled' class\r\n if (element.disabled || element.getAttribute('disabled') || element.classList.contains('disabled')) {\r\n return;\r\n }\r\n\r\n TouchHandler.registerEvent(e);\r\n\r\n if (e.type === 'touchstart' && Effect.delay) {\r\n\r\n var hidden = false;\r\n\r\n var timer = setTimeout(function () {\r\n timer = null;\r\n Effect.show(e, element);\r\n }, Effect.delay);\r\n\r\n var hideEffect = function (hideEvent) {\r\n\r\n // if touch hasn't moved, and effect not yet started: start effect now\r\n if (timer) {\r\n clearTimeout(timer);\r\n timer = null;\r\n Effect.show(e, element);\r\n }\r\n if (!hidden) {\r\n hidden = true;\r\n Effect.hide(hideEvent, element);\r\n }\r\n\r\n removeListeners();\r\n };\r\n\r\n var touchMove = function (moveEvent) {\r\n if (timer) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n hideEffect(moveEvent);\r\n\r\n removeListeners();\r\n };\r\n\r\n element.addEventListener('touchmove', touchMove, false);\r\n element.addEventListener('touchend', hideEffect, false);\r\n element.addEventListener('touchcancel', hideEffect, false);\r\n\r\n var removeListeners = function () {\r\n element.removeEventListener('touchmove', touchMove);\r\n element.removeEventListener('touchend', hideEffect);\r\n element.removeEventListener('touchcancel', hideEffect);\r\n };\r\n } else {\r\n\r\n Effect.show(e, element);\r\n\r\n if (isTouchAvailable) {\r\n element.addEventListener('touchend', Effect.hide, false);\r\n element.addEventListener('touchcancel', Effect.hide, false);\r\n }\r\n\r\n element.addEventListener('mouseup', Effect.hide, false);\r\n element.addEventListener('mouseleave', Effect.hide, false);\r\n }\r\n }\r\n }\r\n\r\n Waves.init = function (options) {\r\n var body = document.body;\r\n\r\n options = options || {};\r\n\r\n if ('duration' in options) {\r\n Effect.duration = options.duration;\r\n }\r\n\r\n if ('delay' in options) {\r\n Effect.delay = options.delay;\r\n }\r\n\r\n if (isTouchAvailable) {\r\n body.addEventListener('touchstart', showEffect, false);\r\n body.addEventListener('touchcancel', TouchHandler.registerEvent, false);\r\n body.addEventListener('touchend', TouchHandler.registerEvent, false);\r\n }\r\n\r\n body.addEventListener('mousedown', showEffect, false);\r\n };\r\n\r\n\r\n /**\r\n * Attach Waves to dynamically loaded inputs, or add .waves-effect and other\r\n * waves classes to a set of elements. Set drag to true if the ripple mouseover\r\n * or skimming effect should be applied to the elements.\r\n */\r\n Waves.attach = function (elements, classes) {\r\n\r\n elements = getWavesElements(elements);\r\n\r\n if (toString.call(classes) === '[object Array]') {\r\n classes = classes.join(' ');\r\n }\r\n\r\n classes = classes ? ' ' + classes : '';\r\n\r\n var element, tagName;\r\n\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n\r\n element = elements[i];\r\n tagName = element.tagName.toLowerCase();\r\n\r\n if (['input', 'img'].indexOf(tagName) !== -1) {\r\n TagWrapper[tagName](element);\r\n element = element.parentElement;\r\n }\r\n\r\n if (element.className.indexOf('waves-effect') === -1) {\r\n element.className += ' waves-effect' + classes;\r\n }\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Cause a ripple to appear in an element via code.\r\n */\r\n Waves.ripple = function (elements, options) {\r\n elements = getWavesElements(elements);\r\n var elementsLen = elements.length;\r\n\r\n options = options || {};\r\n options.wait = options.wait || 0;\r\n options.position = options.position || null; // default = centre of element\r\n\r\n\r\n if (elementsLen) {\r\n var element, pos, off, centre = {},\r\n i = 0;\r\n var mousedown = {\r\n type: 'mousedown',\r\n button: 1\r\n };\r\n var hideRipple = function (mouseup, element) {\r\n return function () {\r\n Effect.hide(mouseup, element);\r\n };\r\n };\r\n\r\n for (; i < elementsLen; i++) {\r\n element = elements[i];\r\n pos = options.position || {\r\n x: element.clientWidth / 2,\r\n y: element.clientHeight / 2\r\n };\r\n\r\n off = offset(element);\r\n centre.x = off.left + pos.x;\r\n centre.y = off.top + pos.y;\r\n\r\n mousedown.pageX = centre.x;\r\n mousedown.pageY = centre.y;\r\n\r\n Effect.show(mousedown, element);\r\n\r\n if (options.wait >= 0 && options.wait !== null) {\r\n var mouseup = {\r\n type: 'mouseup',\r\n button: 1\r\n };\r\n\r\n setTimeout(hideRipple(mouseup, element), options.wait);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Remove all ripples from an element.\r\n */\r\n Waves.calm = function (elements) {\r\n elements = getWavesElements(elements);\r\n var mouseup = {\r\n type: 'mouseup',\r\n button: 1\r\n };\r\n\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n Effect.hide(mouseup, elements[i]);\r\n }\r\n };\r\n\r\n /**\r\n * Deprecated API fallback\r\n */\r\n Waves.displayEffect = function (options) {\r\n console.error('Waves.displayEffect() has been deprecated and will be removed in future version. Please use Waves.init() to initialize Waves effect');\r\n Waves.init(options);\r\n };\r\n\r\n return Waves;\r\n});\r\n$(document).ready(function () {\r\n //Initialization\r\n Waves.attach('.btn:not(.btn-flat), .btn-floating', ['waves-light']);\r\n Waves.attach('.btn-flat', ['waves-effect']);\r\n Waves.attach('.chip', ['waves-effect']);\r\n Waves.attach('.view a .mask', ['waves-light']);\r\n Waves.attach('.waves-light', ['waves-light']);\r\n Waves.attach('.navbar-nav a:not(.navbar-brand), .nav-icons li a, .nav-tabs .nav-item:not(.dropdown)', ['waves-light']);\r\n Waves.attach('.pager li a', ['waves-light']);\r\n Waves.attach('.pagination .page-item .page-link', ['waves-effect']);\r\n Waves.init();\r\n});\r\n","/* jSticky Plugin\r\n * =============\r\n * Author: Andrew Henderson (@AndrewHenderson)\r\n * Contributor: Mike Street (@mikestreety)\r\n * Date: 9/7/2012\r\n * Update: 09/20/2016\r\n * Website: http://github.com/andrewhenderson/jsticky/\r\n * Description: A jQuery plugin that keeps select DOM\r\n * element(s) in view while scrolling the page.\r\n */\r\n\r\n;(function($) {\r\n\r\n $.fn.sticky = function(options) {\r\n var defaults = {\r\n topSpacing: 0, // No spacing by default\r\n zIndex: '', // No default z-index\r\n stopper: '.sticky-stopper', // Default stopper class, also accepts number value\r\n stickyClass: false // Class applied to element when it's stuck\r\n };\r\n var settings = $.extend({}, defaults, options); // Accepts custom stopper id or class\r\n\r\n // Checks if custom z-index was defined\r\n function checkIndex() {\r\n if (typeof settings.zIndex == 'number') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n var hasIndex = checkIndex(); // True or false\r\n\r\n // Checks if a stopper exists in the DOM or number defined\r\n function checkStopper() {\r\n if (0 < $(settings.stopper).length || typeof settings.stopper === 'number') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n var hasStopper = checkStopper(); // True or false\r\n\r\n return this.each(function() {\r\n\r\n var $this = $(this);\r\n var thisHeight = $this.outerHeight();\r\n var thisWidth = $this.outerWidth();\r\n var topSpacing = settings.topSpacing;\r\n var zIndex = settings.zIndex;\r\n var pushPoint = $this.offset().top - topSpacing; // Point at which the sticky element starts pushing\r\n var placeholder = $('
      ').width(thisWidth).height(thisHeight).addClass('sticky-placeholder'); // Cache a clone sticky element\r\n var stopper = settings.stopper;\r\n var $window = $(window);\r\n\r\n function stickyScroll() {\r\n\r\n var windowTop = $window.scrollTop(); // Check window's scroll position\r\n var stopPoint = stopper;\r\n var parentWidth = $this.parent().width();\r\n\r\n placeholder.width(parentWidth)\r\n\r\n if ( hasStopper && typeof stopper === 'string' ) {\r\n var stopperTop = $(stopper).offset().top;\r\n stopPoint = (stopperTop - thisHeight) - topSpacing;\r\n }\r\n\r\n if (pushPoint < windowTop) {\r\n // Create a placeholder for sticky element to occupy vertical real estate\r\n if(settings.stickyClass)\r\n $this.addClass(settings.stickyClass);\r\n\r\n $this.after(placeholder).css({\r\n position: 'fixed',\r\n top: topSpacing,\r\n width: parentWidth\r\n });\r\n\r\n if (hasIndex) {\r\n $this.css({\r\n zIndex: zIndex\r\n });\r\n }\r\n\r\n if (hasStopper) {\r\n if (stopPoint < windowTop) {\r\n var diff = (stopPoint - windowTop) + topSpacing;\r\n $this.css({\r\n top: diff\r\n });\r\n }\r\n }\r\n } else {\r\n if(settings.stickyClass)\r\n $this.removeClass(settings.stickyClass);\r\n\r\n $this.css({\r\n position: 'static',\r\n top: null,\r\n left: null,\r\n width: 'auto'\r\n });\r\n\r\n placeholder.remove();\r\n }\r\n }\r\n\r\n if($window.innerHeight() > thisHeight) {\r\n\r\n $window.bind('scroll', stickyScroll);\r\n $window.bind('load', stickyScroll);\r\n $window.bind('resize', stickyScroll);\r\n }\r\n });\r\n };\r\n})(jQuery);","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","/*!\r\n * perfect-scrollbar v1.5.0\r\n * Copyright 2020 Hyunje Jun, MDBootstrap and Contributors\r\n * Licensed under MIT\r\n */\r\n\r\n(function (global, factory) {\r\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n typeof define === 'function' && define.amd ? define(factory) :\r\n (global = global || self, global.PerfectScrollbar = factory());\r\n}(this, (function () { 'use strict';\r\n\r\n function get(element) {\r\n return getComputedStyle(element);\r\n }\r\n\r\n function set(element, obj) {\r\n for (var key in obj) {\r\n var val = obj[key];\r\n if (typeof val === 'number') {\r\n val = val + \"px\";\r\n }\r\n element.style[key] = val;\r\n }\r\n return element;\r\n }\r\n\r\n function div(className) {\r\n var div = document.createElement('div');\r\n div.className = className;\r\n return div;\r\n }\r\n\r\n var elMatches =\r\n typeof Element !== 'undefined' &&\r\n (Element.prototype.matches ||\r\n Element.prototype.webkitMatchesSelector ||\r\n Element.prototype.mozMatchesSelector ||\r\n Element.prototype.msMatchesSelector);\r\n\r\n function matches(element, query) {\r\n if (!elMatches) {\r\n throw new Error('No element matching method supported');\r\n }\r\n\r\n return elMatches.call(element, query);\r\n }\r\n\r\n function remove(element) {\r\n if (element.remove) {\r\n element.remove();\r\n } else {\r\n if (element.parentNode) {\r\n element.parentNode.removeChild(element);\r\n }\r\n }\r\n }\r\n\r\n function queryChildren(element, selector) {\r\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\r\n );\r\n }\r\n\r\n var cls = {\r\n main: 'ps',\r\n rtl: 'ps__rtl',\r\n element: {\r\n thumb: function (x) { return (\"ps__thumb-\" + x); },\r\n rail: function (x) { return (\"ps__rail-\" + x); },\r\n consuming: 'ps__child--consume',\r\n },\r\n state: {\r\n focus: 'ps--focus',\r\n clicking: 'ps--clicking',\r\n active: function (x) { return (\"ps--active-\" + x); },\r\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\r\n },\r\n };\r\n\r\n /*\r\n * Helper methods\r\n */\r\n var scrollingClassTimeout = { x: null, y: null };\r\n\r\n function addScrollingClass(i, x) {\r\n var classList = i.element.classList;\r\n var className = cls.state.scrolling(x);\r\n\r\n if (classList.contains(className)) {\r\n clearTimeout(scrollingClassTimeout[x]);\r\n } else {\r\n classList.add(className);\r\n }\r\n }\r\n\r\n function removeScrollingClass(i, x) {\r\n scrollingClassTimeout[x] = setTimeout(\r\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\r\n i.settings.scrollingThreshold\r\n );\r\n }\r\n\r\n function setScrollingClassInstantly(i, x) {\r\n addScrollingClass(i, x);\r\n removeScrollingClass(i, x);\r\n }\r\n\r\n var EventElement = function EventElement(element) {\r\n this.element = element;\r\n this.handlers = {};\r\n };\r\n\r\n var prototypeAccessors = { isEmpty: { configurable: true } };\r\n\r\n EventElement.prototype.bind = function bind (eventName, handler) {\r\n if (typeof this.handlers[eventName] === 'undefined') {\r\n this.handlers[eventName] = [];\r\n }\r\n this.handlers[eventName].push(handler);\r\n this.element.addEventListener(eventName, handler, false);\r\n };\r\n\r\n EventElement.prototype.unbind = function unbind (eventName, target) {\r\n var this$1 = this;\r\n\r\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\r\n if (target && handler !== target) {\r\n return true;\r\n }\r\n this$1.element.removeEventListener(eventName, handler, false);\r\n return false;\r\n });\r\n };\r\n\r\n EventElement.prototype.unbindAll = function unbindAll () {\r\n for (var name in this.handlers) {\r\n this.unbind(name);\r\n }\r\n };\r\n\r\n prototypeAccessors.isEmpty.get = function () {\r\n var this$1 = this;\r\n\r\n return Object.keys(this.handlers).every(\r\n function (key) { return this$1.handlers[key].length === 0; }\r\n );\r\n };\r\n\r\n Object.defineProperties( EventElement.prototype, prototypeAccessors );\r\n\r\n var EventManager = function EventManager() {\r\n this.eventElements = [];\r\n };\r\n\r\n EventManager.prototype.eventElement = function eventElement (element) {\r\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\r\n if (!ee) {\r\n ee = new EventElement(element);\r\n this.eventElements.push(ee);\r\n }\r\n return ee;\r\n };\r\n\r\n EventManager.prototype.bind = function bind (element, eventName, handler) {\r\n this.eventElement(element).bind(eventName, handler);\r\n };\r\n\r\n EventManager.prototype.unbind = function unbind (element, eventName, handler) {\r\n var ee = this.eventElement(element);\r\n ee.unbind(eventName, handler);\r\n\r\n if (ee.isEmpty) {\r\n // remove\r\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\r\n }\r\n };\r\n\r\n EventManager.prototype.unbindAll = function unbindAll () {\r\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\r\n this.eventElements = [];\r\n };\r\n\r\n EventManager.prototype.once = function once (element, eventName, handler) {\r\n var ee = this.eventElement(element);\r\n var onceHandler = function (evt) {\r\n ee.unbind(eventName, onceHandler);\r\n handler(evt);\r\n };\r\n ee.bind(eventName, onceHandler);\r\n };\r\n\r\n function createEvent(name) {\r\n if (typeof window.CustomEvent === 'function') {\r\n return new CustomEvent(name);\r\n } else {\r\n var evt = document.createEvent('CustomEvent');\r\n evt.initCustomEvent(name, false, false, undefined);\r\n return evt;\r\n }\r\n }\r\n\r\n function processScrollDiff(\r\n i,\r\n axis,\r\n diff,\r\n useScrollingClass,\r\n forceFireReachEvent\r\n ) {\r\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\r\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\r\n\r\n var fields;\r\n if (axis === 'top') {\r\n fields = [\r\n 'contentHeight',\r\n 'containerHeight',\r\n 'scrollTop',\r\n 'y',\r\n 'up',\r\n 'down' ];\r\n } else if (axis === 'left') {\r\n fields = [\r\n 'contentWidth',\r\n 'containerWidth',\r\n 'scrollLeft',\r\n 'x',\r\n 'left',\r\n 'right' ];\r\n } else {\r\n throw new Error('A proper axis should be provided');\r\n }\r\n\r\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\r\n }\r\n\r\n function processScrollDiff$1(\r\n i,\r\n diff,\r\n ref,\r\n useScrollingClass,\r\n forceFireReachEvent\r\n ) {\r\n var contentHeight = ref[0];\r\n var containerHeight = ref[1];\r\n var scrollTop = ref[2];\r\n var y = ref[3];\r\n var up = ref[4];\r\n var down = ref[5];\r\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\r\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\r\n\r\n var element = i.element;\r\n\r\n // reset reach\r\n i.reach[y] = null;\r\n\r\n // 1 for subpixel rounding\r\n if (element[scrollTop] < 1) {\r\n i.reach[y] = 'start';\r\n }\r\n\r\n // 1 for subpixel rounding\r\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\r\n i.reach[y] = 'end';\r\n }\r\n\r\n if (diff) {\r\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\r\n\r\n if (diff < 0) {\r\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\r\n } else if (diff > 0) {\r\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\r\n }\r\n\r\n if (useScrollingClass) {\r\n setScrollingClassInstantly(i, y);\r\n }\r\n }\r\n\r\n if (i.reach[y] && (diff || forceFireReachEvent)) {\r\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\r\n }\r\n }\r\n\r\n function toInt(x) {\r\n return parseInt(x, 10) || 0;\r\n }\r\n\r\n function isEditable(el) {\r\n return (\r\n matches(el, 'input,[contenteditable]') ||\r\n matches(el, 'select,[contenteditable]') ||\r\n matches(el, 'textarea,[contenteditable]') ||\r\n matches(el, 'button,[contenteditable]')\r\n );\r\n }\r\n\r\n function outerWidth(element) {\r\n var styles = get(element);\r\n return (\r\n toInt(styles.width) +\r\n toInt(styles.paddingLeft) +\r\n toInt(styles.paddingRight) +\r\n toInt(styles.borderLeftWidth) +\r\n toInt(styles.borderRightWidth)\r\n );\r\n }\r\n\r\n var env = {\r\n isWebKit:\r\n typeof document !== 'undefined' &&\r\n 'WebkitAppearance' in document.documentElement.style,\r\n supportsTouch:\r\n typeof window !== 'undefined' &&\r\n ('ontouchstart' in window ||\r\n ('maxTouchPoints' in window.navigator &&\r\n window.navigator.maxTouchPoints > 0) ||\r\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\r\n supportsIePointer:\r\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\r\n isChrome:\r\n typeof navigator !== 'undefined' &&\r\n /Chrome/i.test(navigator && navigator.userAgent),\r\n };\r\n\r\n function updateGeometry(i) {\r\n var element = i.element;\r\n var roundedScrollTop = Math.floor(element.scrollTop);\r\n var rect = element.getBoundingClientRect();\r\n\r\n i.containerWidth = Math.ceil(rect.width);\r\n i.containerHeight = Math.ceil(rect.height);\r\n i.contentWidth = element.scrollWidth;\r\n i.contentHeight = element.scrollHeight;\r\n\r\n if (!element.contains(i.scrollbarXRail)) {\r\n // clean up and append\r\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\r\n );\r\n element.appendChild(i.scrollbarXRail);\r\n }\r\n if (!element.contains(i.scrollbarYRail)) {\r\n // clean up and append\r\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\r\n );\r\n element.appendChild(i.scrollbarYRail);\r\n }\r\n\r\n if (\r\n !i.settings.suppressScrollX &&\r\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\r\n ) {\r\n i.scrollbarXActive = true;\r\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\r\n i.railXRatio = i.containerWidth / i.railXWidth;\r\n i.scrollbarXWidth = getThumbSize(\r\n i,\r\n toInt((i.railXWidth * i.containerWidth) / i.contentWidth)\r\n );\r\n i.scrollbarXLeft = toInt(\r\n ((i.negativeScrollAdjustment + element.scrollLeft) *\r\n (i.railXWidth - i.scrollbarXWidth)) /\r\n (i.contentWidth - i.containerWidth)\r\n );\r\n } else {\r\n i.scrollbarXActive = false;\r\n }\r\n\r\n if (\r\n !i.settings.suppressScrollY &&\r\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\r\n ) {\r\n i.scrollbarYActive = true;\r\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\r\n i.railYRatio = i.containerHeight / i.railYHeight;\r\n i.scrollbarYHeight = getThumbSize(\r\n i,\r\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\r\n );\r\n i.scrollbarYTop = toInt(\r\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\r\n (i.contentHeight - i.containerHeight)\r\n );\r\n } else {\r\n i.scrollbarYActive = false;\r\n }\r\n\r\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\r\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\r\n }\r\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\r\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\r\n }\r\n\r\n updateCss(element, i);\r\n\r\n if (i.scrollbarXActive) {\r\n element.classList.add(cls.state.active('x'));\r\n } else {\r\n element.classList.remove(cls.state.active('x'));\r\n i.scrollbarXWidth = 0;\r\n i.scrollbarXLeft = 0;\r\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\r\n }\r\n if (i.scrollbarYActive) {\r\n element.classList.add(cls.state.active('y'));\r\n } else {\r\n element.classList.remove(cls.state.active('y'));\r\n i.scrollbarYHeight = 0;\r\n i.scrollbarYTop = 0;\r\n element.scrollTop = 0;\r\n }\r\n }\r\n\r\n function getThumbSize(i, thumbSize) {\r\n if (i.settings.minScrollbarLength) {\r\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\r\n }\r\n if (i.settings.maxScrollbarLength) {\r\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\r\n }\r\n return thumbSize;\r\n }\r\n\r\n function updateCss(element, i) {\r\n var xRailOffset = { width: i.railXWidth };\r\n var roundedScrollTop = Math.floor(element.scrollTop);\r\n\r\n if (i.isRtl) {\r\n xRailOffset.left =\r\n i.negativeScrollAdjustment +\r\n element.scrollLeft +\r\n i.containerWidth -\r\n i.contentWidth;\r\n } else {\r\n xRailOffset.left = element.scrollLeft;\r\n }\r\n if (i.isScrollbarXUsingBottom) {\r\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\r\n } else {\r\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\r\n }\r\n set(i.scrollbarXRail, xRailOffset);\r\n\r\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\r\n if (i.isScrollbarYUsingRight) {\r\n if (i.isRtl) {\r\n yRailOffset.right =\r\n i.contentWidth -\r\n (i.negativeScrollAdjustment + element.scrollLeft) -\r\n i.scrollbarYRight -\r\n i.scrollbarYOuterWidth -\r\n 9;\r\n } else {\r\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\r\n }\r\n } else {\r\n if (i.isRtl) {\r\n yRailOffset.left =\r\n i.negativeScrollAdjustment +\r\n element.scrollLeft +\r\n i.containerWidth * 2 -\r\n i.contentWidth -\r\n i.scrollbarYLeft -\r\n i.scrollbarYOuterWidth;\r\n } else {\r\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\r\n }\r\n }\r\n set(i.scrollbarYRail, yRailOffset);\r\n\r\n set(i.scrollbarX, {\r\n left: i.scrollbarXLeft,\r\n width: i.scrollbarXWidth - i.railBorderXWidth,\r\n });\r\n set(i.scrollbarY, {\r\n top: i.scrollbarYTop,\r\n height: i.scrollbarYHeight - i.railBorderYWidth,\r\n });\r\n }\r\n\r\n function clickRail(i) {\r\n var element = i.element;\r\n\r\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\r\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\r\n var positionTop =\r\n e.pageY -\r\n window.pageYOffset -\r\n i.scrollbarYRail.getBoundingClientRect().top;\r\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\r\n\r\n i.element.scrollTop += direction * i.containerHeight;\r\n updateGeometry(i);\r\n\r\n e.stopPropagation();\r\n });\r\n\r\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\r\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\r\n var positionLeft =\r\n e.pageX -\r\n window.pageXOffset -\r\n i.scrollbarXRail.getBoundingClientRect().left;\r\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\r\n\r\n i.element.scrollLeft += direction * i.containerWidth;\r\n updateGeometry(i);\r\n\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n function dragThumb(i) {\r\n bindMouseScrollHandler(i, [\r\n 'containerWidth',\r\n 'contentWidth',\r\n 'pageX',\r\n 'railXWidth',\r\n 'scrollbarX',\r\n 'scrollbarXWidth',\r\n 'scrollLeft',\r\n 'x',\r\n 'scrollbarXRail' ]);\r\n bindMouseScrollHandler(i, [\r\n 'containerHeight',\r\n 'contentHeight',\r\n 'pageY',\r\n 'railYHeight',\r\n 'scrollbarY',\r\n 'scrollbarYHeight',\r\n 'scrollTop',\r\n 'y',\r\n 'scrollbarYRail' ]);\r\n }\r\n\r\n function bindMouseScrollHandler(\r\n i,\r\n ref\r\n ) {\r\n var containerHeight = ref[0];\r\n var contentHeight = ref[1];\r\n var pageY = ref[2];\r\n var railYHeight = ref[3];\r\n var scrollbarY = ref[4];\r\n var scrollbarYHeight = ref[5];\r\n var scrollTop = ref[6];\r\n var y = ref[7];\r\n var scrollbarYRail = ref[8];\r\n\r\n var element = i.element;\r\n\r\n var startingScrollTop = null;\r\n var startingMousePageY = null;\r\n var scrollBy = null;\r\n\r\n function mouseMoveHandler(e) {\r\n if (e.touches && e.touches[0]) {\r\n e[pageY] = e.touches[0].pageY;\r\n }\r\n element[scrollTop] =\r\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\r\n addScrollingClass(i, y);\r\n updateGeometry(i);\r\n\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n function mouseUpHandler() {\r\n removeScrollingClass(i, y);\r\n i[scrollbarYRail].classList.remove(cls.state.clicking);\r\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\r\n }\r\n\r\n function bindMoves(e, touchMode) {\r\n startingScrollTop = element[scrollTop];\r\n if (touchMode && e.touches) {\r\n e[pageY] = e.touches[0].pageY;\r\n }\r\n startingMousePageY = e[pageY];\r\n scrollBy =\r\n (i[contentHeight] - i[containerHeight]) /\r\n (i[railYHeight] - i[scrollbarYHeight]);\r\n if (!touchMode) {\r\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\r\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\r\n e.preventDefault();\r\n } else {\r\n i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);\r\n }\r\n\r\n i[scrollbarYRail].classList.add(cls.state.clicking);\r\n\r\n e.stopPropagation();\r\n }\r\n\r\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\r\n bindMoves(e);\r\n });\r\n i.event.bind(i[scrollbarY], 'touchstart', function (e) {\r\n bindMoves(e, true);\r\n });\r\n }\r\n\r\n function keyboard(i) {\r\n var element = i.element;\r\n\r\n var elementHovered = function () { return matches(element, ':hover'); };\r\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\r\n\r\n function shouldPreventDefault(deltaX, deltaY) {\r\n var scrollTop = Math.floor(element.scrollTop);\r\n if (deltaX === 0) {\r\n if (!i.scrollbarYActive) {\r\n return false;\r\n }\r\n if (\r\n (scrollTop === 0 && deltaY > 0) ||\r\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\r\n ) {\r\n return !i.settings.wheelPropagation;\r\n }\r\n }\r\n\r\n var scrollLeft = element.scrollLeft;\r\n if (deltaY === 0) {\r\n if (!i.scrollbarXActive) {\r\n return false;\r\n }\r\n if (\r\n (scrollLeft === 0 && deltaX < 0) ||\r\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\r\n ) {\r\n return !i.settings.wheelPropagation;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\r\n if (\r\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\r\n e.defaultPrevented\r\n ) {\r\n return;\r\n }\r\n\r\n if (!elementHovered() && !scrollbarFocused()) {\r\n return;\r\n }\r\n\r\n var activeElement = document.activeElement\r\n ? document.activeElement\r\n : i.ownerDocument.activeElement;\r\n if (activeElement) {\r\n if (activeElement.tagName === 'IFRAME') {\r\n activeElement = activeElement.contentDocument.activeElement;\r\n } else {\r\n // go deeper if element is a webcomponent\r\n while (activeElement.shadowRoot) {\r\n activeElement = activeElement.shadowRoot.activeElement;\r\n }\r\n }\r\n if (isEditable(activeElement)) {\r\n return;\r\n }\r\n }\r\n\r\n var deltaX = 0;\r\n var deltaY = 0;\r\n\r\n switch (e.which) {\r\n case 37: // left\r\n if (e.metaKey) {\r\n deltaX = -i.contentWidth;\r\n } else if (e.altKey) {\r\n deltaX = -i.containerWidth;\r\n } else {\r\n deltaX = -30;\r\n }\r\n break;\r\n case 38: // up\r\n if (e.metaKey) {\r\n deltaY = i.contentHeight;\r\n } else if (e.altKey) {\r\n deltaY = i.containerHeight;\r\n } else {\r\n deltaY = 30;\r\n }\r\n break;\r\n case 39: // right\r\n if (e.metaKey) {\r\n deltaX = i.contentWidth;\r\n } else if (e.altKey) {\r\n deltaX = i.containerWidth;\r\n } else {\r\n deltaX = 30;\r\n }\r\n break;\r\n case 40: // down\r\n if (e.metaKey) {\r\n deltaY = -i.contentHeight;\r\n } else if (e.altKey) {\r\n deltaY = -i.containerHeight;\r\n } else {\r\n deltaY = -30;\r\n }\r\n break;\r\n case 32: // space bar\r\n if (e.shiftKey) {\r\n deltaY = i.containerHeight;\r\n } else {\r\n deltaY = -i.containerHeight;\r\n }\r\n break;\r\n case 33: // page up\r\n deltaY = i.containerHeight;\r\n break;\r\n case 34: // page down\r\n deltaY = -i.containerHeight;\r\n break;\r\n case 36: // home\r\n deltaY = i.contentHeight;\r\n break;\r\n case 35: // end\r\n deltaY = -i.contentHeight;\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n if (i.settings.suppressScrollX && deltaX !== 0) {\r\n return;\r\n }\r\n if (i.settings.suppressScrollY && deltaY !== 0) {\r\n return;\r\n }\r\n\r\n element.scrollTop -= deltaY;\r\n element.scrollLeft += deltaX;\r\n updateGeometry(i);\r\n\r\n if (shouldPreventDefault(deltaX, deltaY)) {\r\n e.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n function wheel(i) {\r\n var element = i.element;\r\n\r\n function shouldPreventDefault(deltaX, deltaY) {\r\n var roundedScrollTop = Math.floor(element.scrollTop);\r\n var isTop = element.scrollTop === 0;\r\n var isBottom =\r\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\r\n var isLeft = element.scrollLeft === 0;\r\n var isRight =\r\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\r\n\r\n var hitsBound;\r\n\r\n // pick axis with primary direction\r\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\r\n hitsBound = isTop || isBottom;\r\n } else {\r\n hitsBound = isLeft || isRight;\r\n }\r\n\r\n return hitsBound ? !i.settings.wheelPropagation : true;\r\n }\r\n\r\n function getDeltaFromEvent(e) {\r\n var deltaX = e.deltaX;\r\n var deltaY = -1 * e.deltaY;\r\n\r\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\r\n // OS X Safari\r\n deltaX = (-1 * e.wheelDeltaX) / 6;\r\n deltaY = e.wheelDeltaY / 6;\r\n }\r\n\r\n if (e.deltaMode && e.deltaMode === 1) {\r\n // Firefox in deltaMode 1: Line scrolling\r\n deltaX *= 10;\r\n deltaY *= 10;\r\n }\r\n\r\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\r\n // IE in some mouse drivers\r\n deltaX = 0;\r\n deltaY = e.wheelDelta;\r\n }\r\n\r\n if (e.shiftKey) {\r\n // reverse axis with shift key\r\n return [-deltaY, -deltaX];\r\n }\r\n return [deltaX, deltaY];\r\n }\r\n\r\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\r\n // FIXME: this is a workaround for
      ';\r\n } else {\r\n\r\n html += '';\r\n }\r\n\r\n this.$chipsWrapper.html(html);\r\n\r\n this.setPlaceholder();\r\n }\r\n\r\n getSingleChipTemplate(chip) {\r\n\r\n if (!chip.tag) {\r\n return '';\r\n }\r\n\r\n let html = `
      ${chip.tag}`;\r\n\r\n if (chip.image) {\r\n html += ` `;\r\n }\r\n\r\n html += '';\r\n html += '
      ';\r\n\r\n return html;\r\n }\r\n\r\n setPlaceholder() {\r\n\r\n this.$chipsWrapper.find('input').prop('placeholder', this.options.data.length ? this.options.placeholder : this.options.secondaryPlaceholder);\r\n }\r\n\r\n addChip(chip) {\r\n\r\n if (!this.isValid(chip)) {\r\n return;\r\n }\r\n\r\n const $newChip = $(this.getSingleChipTemplate(chip));\r\n\r\n this.$chipsWrapper.data('chips').push(chip);\r\n this.options.data.push(chip);\r\n\r\n if (this.$chipsWrapper.hasClass('chips-autocomplete') && this.$chipsWrapper.find('.chip').length > 0) {\r\n\r\n $newChip.insertAfter(this.$chipsWrapper.find('.chip').last());\r\n } else {\r\n\r\n $newChip.insertBefore(this.$chipsWrapper.find('input'));\r\n }\r\n\r\n this.$chipsWrapper.trigger('chip.add', chip);\r\n\r\n this.setPlaceholder();\r\n }\r\n\r\n isValid(chip) {\r\n\r\n return chip.tag !== '' && !this.options.data.some((c) => c.tag === chip.tag);\r\n }\r\n\r\n deleteChip(chipIndex) {\r\n\r\n const chip = this.$chipsWrapper.data('chips')[chipIndex];\r\n\r\n this.$chipsWrapper.find('.chip').eq(chipIndex).remove();\r\n\r\n this.$chipsWrapper.data('chips').splice(chipIndex, 1);\r\n this.options.data.splice(chipIndex, 1);\r\n\r\n this.$chipsWrapper.trigger('chip.delete', chip);\r\n\r\n this.setPlaceholder();\r\n }\r\n\r\n selectChip(chipIndex) {\r\n \r\n const $chip = this.$chipsWrapper.find('.chip').eq(chipIndex);\r\n if ($chip && !$chip.hasClass('selected')) {\r\n\r\n $chip.addClass('selected');\r\n this.$chipsWrapper.trigger('chip.select', this.$chipsWrapper.data('chips')[chipIndex]);\r\n }\r\n }\r\n\r\n fallback() {\r\n\r\n return {\r\n _value: undefined,\r\n or(value) {\r\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\r\n this._value = value;\r\n }\r\n return this;\r\n },\r\n value() {\r\n return this._value;\r\n }\r\n };\r\n }\r\n }\r\n\r\n $.fn.materialChip = function (options) {\r\n\r\n if (this.length > 1) {\r\n\r\n const instances = [];\r\n\r\n this.each(function () {\r\n\r\n const materialChips = new MaterialChips($(this), options);\r\n materialChips.init();\r\n\r\n instances.push(materialChips.returnPublicInterface());\r\n });\r\n\r\n return instances;\r\n }\r\n\r\n const materialChips = new MaterialChips($(this), options);\r\n materialChips.init();\r\n\r\n return materialChips.returnPublicInterface();\r\n };\r\n});\r\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: sloppyArrayMethod('some') }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !nativeAssign || fails(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","jQuery(($) => {\r\n\r\n class Sticky {\r\n\r\n constructor(element, options) {\r\n\r\n this.defaults = {\r\n topSpacing: 0,\r\n zIndex: false,\r\n stopper: '#footer',\r\n stickyClass: false,\r\n startScrolling: 'top',\r\n minWidth: false\r\n };\r\n\r\n this.$element = element;\r\n this.options = this.assignOptions(options);\r\n\r\n this.$window = $(window);\r\n\r\n this.stopper = this.options.stopper;\r\n this.elementWidth = this.$element.outerWidth();\r\n this.elementHeight = this.$element.outerHeight(true);\r\n\r\n this.initialScrollTop = this.$element.offset().top;\r\n\r\n this.$placeholder = $('
      ');\r\n this.scrollTop = 0;\r\n\r\n this.setPushPoint();\r\n this.setStopperPosition();\r\n this.bindEvents();\r\n\r\n }\r\n\r\n hasZIndex() {\r\n\r\n return typeof this.options.zIndex === 'number';\r\n }\r\n\r\n hasStopper() {\r\n\r\n return $(this.options.stopper).length || typeof this.options.stopper === 'number';\r\n }\r\n\r\n isScreenHeightEnough() {\r\n\r\n return this.$element.outerHeight() + this.options.topSpacing < this.$window.height();\r\n }\r\n\r\n assignOptions(options) {\r\n\r\n return $.extend({}, this.defaults, options);\r\n }\r\n\r\n setPushPoint() {\r\n\r\n if (this.options.startScrolling === 'bottom' && !this.isScreenHeightEnough()) {\r\n\r\n this.$pushPoint = this.initialScrollTop + this.$element.outerHeight(true) - this.$window.height();\r\n } else {\r\n\r\n this.$pushPoint = this.initialScrollTop - this.options.topSpacing;\r\n }\r\n\r\n }\r\n\r\n setStopperPosition() {\r\n\r\n if (typeof this.options.stopper === 'string') {\r\n\r\n this.stopPoint = $(this.stopper).offset().top - this.options.topSpacing;\r\n\r\n } else if (typeof this.options.stopper === 'number') {\r\n\r\n this.stopPoint = this.options.stopper;\r\n }\r\n }\r\n\r\n bindEvents() {\r\n\r\n this.$window.on('resize', this.handleResize.bind(this));\r\n this.$window.on('scroll', this.init.bind(this));\r\n\r\n }\r\n\r\n handleResize() {\r\n\r\n const $parent = this.$element.parent();\r\n\r\n this.elementWidth = $parent.width();\r\n this.elementHeight = this.$element.outerHeight(true);\r\n\r\n this.setPushPoint();\r\n this.setStopperPosition();\r\n\r\n this.init();\r\n }\r\n\r\n // eslint-disable-next-line consistent-return\r\n init() {\r\n\r\n if (this.options.minWidth && this.options.minWidth > this.$window.innerWidth()) {\r\n\r\n return false;\r\n }\r\n\r\n if (this.options.startScrolling === 'bottom' && !this.isScreenHeightEnough()) {\r\n this.scrollTop = this.$window.scrollTop() + this.$window.height();\r\n } else {\r\n this.scrollTop = this.$window.scrollTop();\r\n }\r\n\r\n if (this.$pushPoint < this.scrollTop) {\r\n\r\n this.appendPlaceholder();\r\n this.stickyStart();\r\n\r\n } else {\r\n this.stickyEnd();\r\n }\r\n\r\n if (this.$window.scrollTop() > this.$pushPoint) {\r\n this.stop();\r\n } else {\r\n this.stickyEnd();\r\n }\r\n\r\n }\r\n\r\n appendPlaceholder() {\r\n\r\n this.$element.after(this.$placeholder);\r\n this.$placeholder.css({\r\n width: this.elementWidth,\r\n height: this.elementHeight\r\n });\r\n }\r\n\r\n stickyStart() {\r\n\r\n if (this.options.stickyClass) {\r\n\r\n this.$element.addClass(this.options.stickyClass);\r\n }\r\n\r\n // @see: https://stackoverflow.com/a/4370047\r\n this.$element.get(0).style.overflow = 'scroll';\r\n const scrollHeight = this.$element.get(0).scrollHeight;\r\n this.$element.get(0).style.overflow = '';\r\n\r\n this.$element.css({\r\n position: 'fixed',\r\n width: this.elementWidth,\r\n height: scrollHeight\r\n });\r\n\r\n if (this.options.startScrolling === 'bottom' && !this.isScreenHeightEnough()) {\r\n this.$element.css({\r\n bottom: 0,\r\n top: ''\r\n });\r\n\r\n } else {\r\n\r\n this.$element.css({\r\n top: this.options.topSpacing\r\n });\r\n }\r\n\r\n if (this.hasZIndex()) {\r\n this.$element.css({\r\n zIndex: this.options.zIndex\r\n });\r\n }\r\n }\r\n\r\n stickyEnd() {\r\n\r\n if (this.options.stickyClass) {\r\n this.$element.removeClass(this.options.stickyClass);\r\n }\r\n\r\n this.$placeholder.remove();\r\n\r\n this.$element.css({\r\n position: 'static',\r\n top: this.options.topSpacing,\r\n width: '',\r\n height: ''\r\n });\r\n }\r\n\r\n stop() {\r\n\r\n if (this.stopPoint < $(this.$element).offset().top - this.options.topSpacing + this.$element.outerHeight(true)) {\r\n this.$element.css({\r\n position: 'absolute',\r\n bottom: 0,\r\n top: ''\r\n });\r\n }\r\n }\r\n\r\n }\r\n\r\n $.fn.sticky = function (options) {\r\n $(this).each(function () {\r\n const sticky = new Sticky($(this), options);\r\n sticky.init();\r\n });\r\n };\r\n});\r\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true }, {\n MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\n\n// `Number.MIN_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.min_safe_integer\n$({ target: 'Number', stat: true }, {\n MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","var setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","/*!\r\n * pickadate.js v3.6.3, 2019/04/03\r\n * By Amsul, http://amsul.ca\r\n * Hosted on http://amsul.github.io/pickadate.js\r\n * Licensed under MIT\r\n */\r\n\r\n(function ( factory ) {\r\n\r\n // AMD.\r\n if ( typeof define == 'function' && define.amd )\r\n define( 'picker', ['jquery'], factory )\r\n \r\n // Node.js/browserify.\r\n else if ( typeof exports == 'object' )\r\n module.exports = factory( require('jquery') )\r\n \r\n // Browser globals.\r\n else window.Picker = factory( jQuery )\r\n \r\n }(function( $ ) {\r\n \r\n var $window = $( window )\r\n var $document = $( document )\r\n var $html = $( document.documentElement )\r\n var supportsTransitions = document.documentElement.style.transition != null\r\n \r\n \r\n /**\r\n * The picker constructor that creates a blank picker.\r\n */\r\n function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) {\r\n \r\n // If there’s no element, return the picker constructor.\r\n if ( !ELEMENT ) return PickerConstructor\r\n \r\n var IS_DEFAULT_THEME = false,\r\n \r\n // The state of the picker.\r\n STATE = {\r\n id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) ),\r\n handlingOpen: false,\r\n },\r\n \r\n // Merge the defaults and options passed.\r\n SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {},\r\n \r\n // Merge the default classes with the settings classes.\r\n CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ),\r\n \r\n // The element node wrapper into a jQuery object.\r\n $ELEMENT = $( ELEMENT ),\r\n \r\n // On editable:true checks if should open\r\n OPENCOUNTER = 2,\r\n \r\n // Pseudo picker constructor.\r\n PickerInstance = function() {\r\n return this.start()\r\n },\r\n \r\n // The picker prototype.\r\n P = PickerInstance.prototype = {\r\n \r\n constructor: PickerInstance,\r\n \r\n $node: $ELEMENT,\r\n \r\n /**\r\n * Initialize everything\r\n */\r\n start: function() {\r\n \r\n // If it’s already started, do nothing.\r\n if ( STATE && STATE.start ) return P\r\n \r\n // Update the picker states.\r\n STATE.methods = {}\r\n STATE.start = true\r\n STATE.open = false\r\n STATE.type = ELEMENT.type\r\n \r\n \r\n // Confirm focus state, convert into text input to remove UA stylings,\r\n // and set as readonly to prevent keyboard popup.\r\n ELEMENT.autofocus = ELEMENT == getActiveElement()\r\n ELEMENT.readOnly = !SETTINGS.editable\r\n ELEMENT.id = ELEMENT.id || STATE.id\r\n if ( ELEMENT.type != 'text' ) {\r\n ELEMENT.type = 'text'\r\n }\r\n \r\n \r\n // Create a new picker component with the settings.\r\n P.component = new COMPONENT(P, SETTINGS)\r\n \r\n \r\n // Create the picker root and then prepare it.\r\n P.$root = $( '
      ' )\r\n prepareElementRoot()\r\n \r\n \r\n // Create the picker holder and then prepare it.\r\n P.$holder = $( createWrappedComponent() ).appendTo( P.$root )\r\n prepareElementHolder()\r\n \r\n \r\n // If there’s a format for the hidden input element, create the element.\r\n if ( SETTINGS.formatSubmit ) {\r\n prepareElementHidden()\r\n }\r\n \r\n \r\n // Prepare the input element.\r\n prepareElement()\r\n \r\n \r\n // Insert the hidden input as specified in the settings.\r\n if ( SETTINGS.containerHidden ) $( SETTINGS.containerHidden ).append( P._hidden )\r\n else $ELEMENT.after( P._hidden )\r\n \r\n \r\n // Insert the root as specified in the settings.\r\n if ( SETTINGS.container ) $( SETTINGS.container ).append( P.$root )\r\n else $ELEMENT.after( P.$root )\r\n \r\n \r\n // Bind the default component and settings events.\r\n P.on({\r\n start: P.component.onStart,\r\n render: P.component.onRender,\r\n stop: P.component.onStop,\r\n open: P.component.onOpen,\r\n close: P.component.onClose,\r\n set: P.component.onSet\r\n }).on({\r\n start: SETTINGS.onStart,\r\n render: SETTINGS.onRender,\r\n stop: SETTINGS.onStop,\r\n open: SETTINGS.onOpen,\r\n close: SETTINGS.onClose,\r\n set: SETTINGS.onSet\r\n })\r\n \r\n \r\n // Once we’re all set, check the theme in use.\r\n IS_DEFAULT_THEME = isUsingDefaultTheme( P.$holder[0] )\r\n \r\n \r\n // If the element has autofocus, open the picker.\r\n if ( ELEMENT.autofocus ) {\r\n P.open()\r\n }\r\n \r\n \r\n // Trigger queued the “start” and “render” events.\r\n return P.trigger( 'start' ).trigger( 'render' )\r\n }, //start\r\n \r\n \r\n /**\r\n * Render a new picker\r\n */\r\n render: function( entireComponent ) {\r\n \r\n // Insert a new component holder in the root or box.\r\n if ( entireComponent ) {\r\n P.$holder = $( createWrappedComponent() )\r\n prepareElementHolder()\r\n P.$root.html( P.$holder )\r\n }\r\n else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) )\r\n \r\n // Trigger the queued “render” events.\r\n return P.trigger( 'render' )\r\n }, //render\r\n \r\n \r\n /**\r\n * Destroy everything\r\n */\r\n stop: function() {\r\n \r\n // If it’s already stopped, do nothing.\r\n if ( !STATE.start ) return P\r\n \r\n // Then close the picker.\r\n P.close()\r\n \r\n // Remove the hidden field.\r\n if ( P._hidden ) {\r\n P._hidden.parentNode.removeChild( P._hidden )\r\n }\r\n \r\n // Remove the root.\r\n P.$root.remove()\r\n \r\n // Remove the input class, remove the stored data, and unbind\r\n // the events (after a tick for IE - see `P.close`).\r\n $ELEMENT.removeClass( CLASSES.input ).removeData( NAME )\r\n setTimeout( function() {\r\n $ELEMENT.off( '.' + STATE.id )\r\n }, 0)\r\n \r\n // Restore the element state\r\n ELEMENT.type = STATE.type\r\n ELEMENT.readOnly = false\r\n \r\n // Trigger the queued “stop” events.\r\n P.trigger( 'stop' )\r\n \r\n // Reset the picker states.\r\n STATE.methods = {}\r\n STATE.start = false\r\n \r\n return P\r\n }, //stop\r\n \r\n \r\n /**\r\n * Open up the picker\r\n */\r\n open: function( dontGiveFocus ) {\r\n OPENCOUNTER++\r\n // If it’s already open, do nothing.\r\n if ( STATE.open ) return P\r\n \r\n // If it’s editable and already opened, do nothing.\r\n if (OPENCOUNTER<4 && SETTINGS.editable) return P\r\n \r\n // * A Firefox bug, when `html` has `overflow:hidden`, results in\r\n // killing transitions :(. So add the “opened” state on the next tick.\r\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\r\n setTimeout( function() {\r\n \r\n // Add the “opened” class to the picker root.\r\n P.$root.addClass( CLASSES.opened )\r\n aria( P.$root[0], 'hidden', false )\r\n \r\n }, 0 )\r\n \r\n // If we have to give focus, bind the element and doc events.\r\n if ( dontGiveFocus !== false ) {\r\n \r\n // Set it as open.\r\n STATE.open = true\r\n \r\n // Prevent the page from scrolling.\r\n if ( IS_DEFAULT_THEME ) {\r\n $('body').\r\n css( 'overflow', 'hidden' ).\r\n css( 'padding-right', '+=' + getScrollbarWidth() )\r\n }\r\n \r\n // Pass focus to the root element’s jQuery object.\r\n focusPickerOnceOpened()\r\n \r\n // Bind the document events.\r\n $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) {\r\n // If the picker is currently midway through processing\r\n // the opening sequence of events then don't handle clicks\r\n // on any part of the DOM. This is caused by a bug in Chrome 73\r\n // where a click event is being generated with the incorrect\r\n // path in it.\r\n // In short, if someone does a click that finishes after the\r\n // new element is created then the path contains only the\r\n // parent element and not the input element itself.\r\n if (STATE.handlingOpen) {\r\n return;\r\n }\r\n \r\n var target = getRealEventTarget( event, ELEMENT )\r\n \r\n // If the target of the event is not the element, close the picker picker.\r\n // * Don’t worry about clicks or focusins on the root because those don’t bubble up.\r\n // Also, for Firefox, a click on an `option` element bubbles up directly\r\n // to the doc. So make sure the target wasn't the doc.\r\n // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling,\r\n // which causes the picker to unexpectedly close when right-clicking it. So make\r\n // sure the event wasn’t a right-click.\r\n // * In Chrome 62 and up, password autofill causes a simulated focusin event which\r\n // closes the picker.\r\n if ( ! event.isSimulated && target != ELEMENT && target != document && event.which != 3 ) {\r\n \r\n // If the target was the holder that covers the screen,\r\n // keep the element focused to maintain tabindex.\r\n P.close( target === P.$holder[0] )\r\n }\r\n \r\n }).on( 'keydown.' + STATE.id, function( event ) {\r\n \r\n var\r\n // Get the keycode.\r\n keycode = event.keyCode,\r\n \r\n // Translate that to a selection change.\r\n keycodeToMove = P.component.key[ keycode ],\r\n \r\n // Grab the target.\r\n target = getRealEventTarget( event, ELEMENT )\r\n \r\n \r\n // On escape, close the picker and give focus.\r\n if ( keycode == 27 ) {\r\n P.close( true )\r\n }\r\n \r\n \r\n // Check if there is a key movement or “enter” keypress on the element.\r\n else if ( target == P.$holder[0] && ( keycodeToMove || keycode == 13 ) ) {\r\n \r\n // Prevent the default action to stop page movement.\r\n event.preventDefault()\r\n \r\n // Trigger the key movement action.\r\n if ( keycodeToMove ) {\r\n PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] )\r\n }\r\n \r\n // On “enter”, if the highlighted item isn’t disabled, set the value and close.\r\n else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) {\r\n P.set( 'select', P.component.item.highlight )\r\n if ( SETTINGS.closeOnSelect ) {\r\n P.close( true )\r\n }\r\n }\r\n }\r\n \r\n \r\n // If the target is within the root and “enter” is pressed,\r\n // prevent the default action and trigger a click on the target instead.\r\n else if ( $.contains( P.$root[0], target ) && keycode == 13 ) {\r\n event.preventDefault()\r\n target.click()\r\n }\r\n })\r\n }\r\n \r\n // Trigger the queued “open” events.\r\n return P.trigger( 'open' )\r\n }, //open\r\n \r\n \r\n /**\r\n * Close the picker\r\n */\r\n close: function( giveFocus ) {\r\n OPENCOUNTER = 0;\r\n \r\n // If it’s already closed, do nothing more.\r\n if ( !STATE.open ) return P\r\n\r\n // If we need to give focus, do it before changing states.\r\n if ( giveFocus ) {\r\n if ( SETTINGS.editable ) {\r\n ELEMENT.click();\r\n }\r\n else {\r\n // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :|\r\n // The focus is triggered *after* the close has completed - causing it\r\n // to open again. So unbind and rebind the event at the next tick.\r\n P.$holder.off( 'focus.toOpen' ).focus()\r\n setTimeout( function() {\r\n P.$holder.on( 'focus.toOpen', handleFocusToOpenEvent )\r\n }, 0 )\r\n }\r\n }\r\n \r\n // Remove the “active” class.\r\n $ELEMENT.removeClass( CLASSES.active )\r\n aria( ELEMENT, 'expanded', false )\r\n \r\n // * A Firefox bug, when `html` has `overflow:hidden`, results in\r\n // killing transitions :(. So remove the “opened” state on the next tick.\r\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289\r\n setTimeout( function() {\r\n \r\n // Remove the “opened” and “focused” class from the picker root.\r\n P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused )\r\n aria( P.$root[0], 'hidden', true )\r\n \r\n }, 0 )\r\n \r\n // Allow the page to scroll.\r\n if ( IS_DEFAULT_THEME ) {\r\n $('body').\r\n css( 'overflow', '' ).\r\n css( 'padding-right', '-=' + getScrollbarWidth() )\r\n }\r\n \r\n document.activeElement.blur();\r\n // Unbind the document events.\r\n $document.off( '.' + STATE.id )\r\n // Set it as closed.\r\n STATE.open = false\r\n // Trigger the queued “close” events.\r\n return P.trigger( 'close' )\r\n }, //close\r\n \r\n \r\n /**\r\n * Clear the values\r\n */\r\n clear: function( options ) {\r\n document.activeElement.blur();\r\n return P.set( 'clear', null, options )\r\n }, //clear\r\n \r\n \r\n /**\r\n * Set something\r\n */\r\n set: function( thing, value, options ) {\r\n \r\n var thingItem, thingValue,\r\n thingIsObject = $.isPlainObject( thing ),\r\n thingObject = thingIsObject ? thing : {}\r\n \r\n // Make sure we have usable options.\r\n options = thingIsObject && $.isPlainObject( value ) ? value : options || {}\r\n \r\n if ( thing ) {\r\n \r\n // If the thing isn’t an object, make it one.\r\n if ( !thingIsObject ) {\r\n thingObject[ thing ] = value\r\n }\r\n \r\n // Go through the things of items to set.\r\n for ( thingItem in thingObject ) {\r\n \r\n // Grab the value of the thing.\r\n thingValue = thingObject[ thingItem ]\r\n \r\n // First, if the item exists and there’s a value, set it.\r\n if ( thingItem in P.component.item ) {\r\n if ( thingValue === undefined ) thingValue = null\r\n P.component.set( thingItem, thingValue, options )\r\n }\r\n \r\n // Then, check to update the element value and broadcast a change.\r\n if ( ( thingItem == 'select' || thingItem == 'clear' ) && SETTINGS.updateInput ) {\r\n $ELEMENT.\r\n val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ).\r\n trigger( 'change' )\r\n }\r\n }\r\n \r\n // Render a new picker.\r\n P.render()\r\n }\r\n \r\n // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`.\r\n return options.muted ? P : P.trigger( 'set', thingObject )\r\n }, //set\r\n \r\n \r\n /**\r\n * Get something\r\n */\r\n get: function( thing, format ) {\r\n \r\n // Make sure there’s something to get.\r\n thing = thing || 'value'\r\n \r\n // If a picker state exists, return that.\r\n if ( STATE[ thing ] != null ) {\r\n return STATE[ thing ]\r\n }\r\n \r\n // Return the submission value, if that.\r\n if ( thing == 'valueSubmit' ) {\r\n if ( P._hidden ) {\r\n return P._hidden.value\r\n }\r\n thing = 'value'\r\n }\r\n \r\n // Return the value, if that.\r\n if ( thing == 'value' ) {\r\n return ELEMENT.value\r\n }\r\n \r\n // Check if a component item exists, return that.\r\n if ( thing in P.component.item ) {\r\n if ( typeof format == 'string' ) {\r\n var thingValue = P.component.get( thing )\r\n return thingValue ?\r\n PickerConstructor._.trigger(\r\n P.component.formats.toString,\r\n P.component,\r\n [ format, thingValue ]\r\n ) : ''\r\n }\r\n return P.component.get( thing )\r\n }\r\n }, //get\r\n \r\n \r\n \r\n /**\r\n * Bind events on the things.\r\n */\r\n on: function( thing, method, internal ) {\r\n \r\n var thingName, thingMethod,\r\n thingIsObject = $.isPlainObject( thing ),\r\n thingObject = thingIsObject ? thing : {}\r\n \r\n if ( thing ) {\r\n \r\n // If the thing isn’t an object, make it one.\r\n if ( !thingIsObject ) {\r\n thingObject[ thing ] = method\r\n }\r\n \r\n // Go through the things to bind to.\r\n for ( thingName in thingObject ) {\r\n \r\n // Grab the method of the thing.\r\n thingMethod = thingObject[ thingName ]\r\n \r\n // If it was an internal binding, prefix it.\r\n if ( internal ) {\r\n thingName = '_' + thingName\r\n }\r\n \r\n // Make sure the thing methods collection exists.\r\n STATE.methods[ thingName ] = STATE.methods[ thingName ] || []\r\n \r\n // Add the method to the relative method collection.\r\n STATE.methods[ thingName ].push( thingMethod )\r\n }\r\n }\r\n \r\n return P\r\n }, //on\r\n \r\n \r\n \r\n /**\r\n * Unbind events on the things.\r\n */\r\n off: function() {\r\n var i, thingName,\r\n names = arguments;\r\n for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) {\r\n thingName = names[i]\r\n if ( thingName in STATE.methods ) {\r\n delete STATE.methods[thingName]\r\n }\r\n }\r\n return P\r\n },\r\n \r\n \r\n /**\r\n * Fire off method events.\r\n */\r\n trigger: function( name, data ) {\r\n var _trigger = function( name ) {\r\n var methodList = STATE.methods[ name ]\r\n if ( methodList ) {\r\n methodList.map( function( method ) {\r\n PickerConstructor._.trigger( method, P, [ data ] )\r\n })\r\n }\r\n }\r\n _trigger( '_' + name )\r\n _trigger( name )\r\n return P\r\n } //trigger\r\n } //PickerInstance.prototype\r\n \r\n \r\n /**\r\n * Wrap the picker holder components together.\r\n */\r\n function createWrappedComponent() {\r\n \r\n // Create a picker wrapper holder\r\n return PickerConstructor._.node( 'div',\r\n \r\n // Create a picker wrapper node\r\n PickerConstructor._.node( 'div',\r\n \r\n // Create a picker frame\r\n PickerConstructor._.node( 'div',\r\n \r\n // Create a picker box node\r\n PickerConstructor._.node( 'div',\r\n \r\n // Create the components nodes.\r\n P.component.nodes( STATE.open ),\r\n \r\n // The picker box class\r\n CLASSES.box\r\n ),\r\n \r\n // Picker wrap class\r\n CLASSES.wrap\r\n ),\r\n \r\n // Picker frame class\r\n CLASSES.frame\r\n ),\r\n \r\n // Picker holder class\r\n CLASSES.holder,\r\n \r\n 'tabindex=\"-1\"'\r\n ) //endreturn\r\n } //createWrappedComponent\r\n \r\n /**\r\n * Prepare the input element with all bindings.\r\n */\r\n function prepareElement() {\r\n \r\n $ELEMENT.\r\n \r\n // Store the picker data by component name.\r\n data(NAME, P).\r\n \r\n // Add the “input” class name.\r\n addClass(CLASSES.input).\r\n \r\n // If there’s a `data-value`, update the value of the element.\r\n val( $ELEMENT.data('value') ?\r\n P.get('select', SETTINGS.format) :\r\n ELEMENT.value\r\n ).\r\n \r\n // On focus/click, open the picker.\r\n on( 'focus.' + STATE.id + ' click.' + STATE.id,\r\n debounce(function(event) {\r\n event.preventDefault()\r\n P.open()\r\n }, 100))\r\n \r\n // Mousedown handler to capture when the user starts interacting\r\n // with the picker. This is used in working around a bug in Chrome 73.\r\n .on('mousedown', function() {\r\n STATE.handlingOpen = true;\r\n var handler = function() {\r\n // By default mouseup events are fired before a click event.\r\n // By using a timeout we can force the mouseup to be handled\r\n // after the corresponding click event is handled.\r\n setTimeout(function() {\r\n $(document).off('mouseup', handler);\r\n STATE.handlingOpen = false;\r\n }, 0);\r\n };\r\n $(document).on('mouseup', handler);\r\n });\r\n \r\n \r\n // Only bind keydown events if the element isn’t editable.\r\n if ( !SETTINGS.editable ) {\r\n \r\n $ELEMENT.\r\n \r\n // Handle keyboard event based on the picker being opened or not.\r\n on( 'keydown.' + STATE.id, handleKeydownEvent )\r\n }\r\n \r\n \r\n // Update the aria attributes.\r\n aria(ELEMENT, {\r\n haspopup: true,\r\n expanded: false,\r\n readonly: false,\r\n owns: ELEMENT.id + '_root'\r\n })\r\n }\r\n \r\n \r\n /**\r\n * Prepare the root picker element with all bindings.\r\n */\r\n function prepareElementRoot() {\r\n aria( P.$root[0], 'hidden', true )\r\n }\r\n \r\n \r\n /**\r\n * Prepare the holder picker element with all bindings.\r\n */\r\n function prepareElementHolder() {\r\n \r\n P.$holder.\r\n \r\n on({\r\n \r\n // For iOS8.\r\n keydown: handleKeydownEvent,\r\n \r\n 'focus.toOpen': handleFocusToOpenEvent,\r\n \r\n blur: function() {\r\n // Remove the “target” class.\r\n $ELEMENT.removeClass( CLASSES.target )\r\n },\r\n \r\n // When something within the holder is focused, stop from bubbling\r\n // to the doc and remove the “focused” state from the root.\r\n focusin: function( event ) {\r\n P.$root.removeClass( CLASSES.focused )\r\n event.stopPropagation()\r\n },\r\n \r\n // When something within the holder is clicked, stop it\r\n // from bubbling to the doc.\r\n 'mousedown click': function( event ) {\r\n \r\n var target = getRealEventTarget( event, ELEMENT )\r\n \r\n // Make sure the target isn’t the root holder so it can bubble up.\r\n if ( target != P.$holder[0] ) {\r\n \r\n event.stopPropagation()\r\n \r\n // * For mousedown events, cancel the default action in order to\r\n // prevent cases where focus is shifted onto external elements\r\n // when using things like jQuery mobile or MagnificPopup (ref: #249 & #120).\r\n // Also, for Firefox, don’t prevent action on the `option` element.\r\n if ( event.type == 'mousedown' && !$( target ).is( 'input, select, textarea, button, option' )) {\r\n \r\n event.preventDefault()\r\n \r\n // Re-focus onto the holder so that users can click away\r\n // from elements focused within the picker.\r\n P.$holder.eq(0).focus()\r\n }\r\n }\r\n }\r\n \r\n }).\r\n \r\n // If there’s a click on an actionable element, carry out the actions.\r\n on( 'click', '[data-pick], [data-nav], [data-clear], [data-close]', function() {\r\n \r\n var $target = $( this ),\r\n targetData = $target.data(),\r\n targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ),\r\n \r\n // * For IE, non-focusable elements can be active elements as well\r\n // (http://stackoverflow.com/a/2684561).\r\n activeElement = getActiveElement()\r\n activeElement = activeElement && ( (activeElement.type || activeElement.href ) ? activeElement : null);\r\n \r\n // If it’s disabled or nothing inside is actively focused, re-focus the element.\r\n if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) {\r\n P.$holder.eq(0).focus()\r\n }\r\n \r\n // If something is superficially changed, update the `highlight` based on the `nav`.\r\n if ( !targetDisabled && targetData.nav ) {\r\n P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } )\r\n }\r\n \r\n // If something is picked, set `select` then close with focus.\r\n else if ( !targetDisabled && 'pick' in targetData ) {\r\n P.set( 'select', targetData.pick )\r\n if ( SETTINGS.closeOnSelect ) {\r\n P.close( true )\r\n }\r\n }\r\n \r\n // If a “clear” button is pressed, empty the values and close with focus.\r\n else if ( targetData.clear ) {\r\n P.clear()\r\n if ( SETTINGS.closeOnClear ) {\r\n P.close( true )\r\n }\r\n }\r\n \r\n else if ( targetData.close ) {\r\n P.close( true )\r\n }\r\n \r\n }) //P.$holder\r\n \r\n }\r\n \r\n \r\n /**\r\n * Prepare the hidden input element along with all bindings.\r\n */\r\n function prepareElementHidden() {\r\n \r\n var name\r\n \r\n if ( SETTINGS.hiddenName === true ) {\r\n name = ELEMENT.name\r\n ELEMENT.name = ''\r\n }\r\n else {\r\n name = [\r\n typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '',\r\n typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit'\r\n ]\r\n name = name[0] + ELEMENT.name + name[1]\r\n }\r\n \r\n P._hidden = $(\r\n ''\r\n )[0]\r\n \r\n $ELEMENT.\r\n \r\n // If the value changes, update the hidden input with the correct format.\r\n on('change.' + STATE.id, function() {\r\n P._hidden.value = ELEMENT.value ?\r\n P.get('select', SETTINGS.formatSubmit) :\r\n ''\r\n })\r\n }\r\n \r\n \r\n // Wait for transitions to end before focusing the holder. Otherwise, while\r\n // using the `container` option, the view jumps to the container.\r\n function focusPickerOnceOpened() {\r\n \r\n if (IS_DEFAULT_THEME && supportsTransitions) {\r\n P.$holder.find('.' + CLASSES.frame).one('transitionend', function() {\r\n P.$holder.eq(0).focus()\r\n })\r\n }\r\n else {\r\n setTimeout(function() {\r\n P.$holder.eq(0).focus()\r\n }, 0)\r\n }\r\n }\r\n \r\n \r\n function handleFocusToOpenEvent(event) {\r\n \r\n // Stop the event from propagating to the doc.\r\n event.stopPropagation()\r\n \r\n // Add the “target” class.\r\n $ELEMENT.addClass( CLASSES.target )\r\n \r\n // Add the “focused” class to the root.\r\n P.$root.addClass( CLASSES.focused )\r\n \r\n // And then finally open the picker.\r\n P.open()\r\n }\r\n \r\n \r\n // For iOS8.\r\n function handleKeydownEvent( event ) {\r\n \r\n var keycode = event.keyCode,\r\n \r\n // Check if one of the delete keys was pressed.\r\n isKeycodeDelete = /^(8|46)$/.test(keycode)\r\n \r\n // For some reason IE clears the input value on “escape”.\r\n if ( keycode == 27 ) {\r\n P.close( true )\r\n return false\r\n }\r\n \r\n // Check if `space` or `delete` was pressed or the picker is closed with a key movement.\r\n if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode] ) {\r\n \r\n // Prevent it from moving the page and bubbling to doc.\r\n event.preventDefault()\r\n event.stopPropagation()\r\n \r\n // If `delete` was pressed, clear the values and close the picker.\r\n // Otherwise open the picker.\r\n if ( isKeycodeDelete ) { P.clear().close() }\r\n else { P.open() }\r\n }\r\n }\r\n \r\n \r\n // Return a new picker instance.\r\n return new PickerInstance()\r\n } //PickerConstructor\r\n \r\n \r\n \r\n /**\r\n * The default classes and prefix to use for the HTML classes.\r\n */\r\n PickerConstructor.klasses = function( prefix ) {\r\n prefix = prefix || 'picker'\r\n return {\r\n \r\n picker: prefix,\r\n opened: prefix + '--opened',\r\n focused: prefix + '--focused',\r\n \r\n input: prefix + '__input',\r\n active: prefix + '__input--active',\r\n target: prefix + '__input--target',\r\n \r\n holder: prefix + '__holder',\r\n \r\n frame: prefix + '__frame',\r\n wrap: prefix + '__wrap',\r\n \r\n box: prefix + '__box'\r\n }\r\n } //PickerConstructor.klasses\r\n \r\n \r\n \r\n /**\r\n * Check if the default theme is being used.\r\n */\r\n function isUsingDefaultTheme( element ) {\r\n \r\n var theme,\r\n prop = 'position'\r\n \r\n // For IE.\r\n if ( element.currentStyle ) {\r\n theme = element.currentStyle[prop]\r\n }\r\n \r\n // For normal browsers.\r\n else if ( window.getComputedStyle ) {\r\n theme = getComputedStyle( element )[prop]\r\n }\r\n \r\n return theme == 'fixed'\r\n }\r\n \r\n /**\r\n * Get the width of the browser’s scrollbar.\r\n * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js\r\n */\r\n function getScrollbarWidth() {\r\n \r\n if ( $html.height() <= $window.height() ) {\r\n return 0\r\n }\r\n \r\n var $outer = $( '
      ' ).\r\n appendTo( 'body' )\r\n \r\n // Get the width without scrollbars.\r\n var widthWithoutScroll = $outer[0].offsetWidth\r\n \r\n // Force adding scrollbars.\r\n $outer.css( 'overflow', 'scroll' )\r\n \r\n // Add the inner div.\r\n var $inner = $( '
      ' ).appendTo( $outer )\r\n \r\n // Get the width with scrollbars.\r\n var widthWithScroll = $inner[0].offsetWidth\r\n \r\n // Remove the divs.\r\n $outer.remove()\r\n \r\n // Return the difference between the widths.\r\n return widthWithoutScroll - widthWithScroll\r\n }\r\n \r\n \r\n \r\n /**\r\n * Get the target element from the event.\r\n * If ELEMENT is supplied and present in the event path (ELEMENT is ancestor of the target),\r\n * returns ELEMENT instead\r\n */\r\n function getRealEventTarget( event, ELEMENT ) {\r\n \r\n var path = []\r\n \r\n if ( event.path ) {\r\n path = event.path\r\n }\r\n \r\n if ( event.originalEvent && event.originalEvent.path ) {\r\n path = event.originalEvent.path\r\n }\r\n \r\n if ( path && path.length > 0 ) {\r\n if ( ELEMENT && path.indexOf( ELEMENT ) >= 0 ) {\r\n return ELEMENT\r\n } else {\r\n return path[0]\r\n }\r\n }\r\n \r\n return event.target\r\n }\r\n \r\n // taken from https://davidwalsh.name/javascript-debounce-function\r\n function debounce(func, wait, immediate) {\r\n var timeout;\r\n return function() {\r\n var context = this, args = arguments;\r\n var later = function() {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n }\r\n \r\n /**\r\n * PickerConstructor helper methods.\r\n */\r\n PickerConstructor._ = {\r\n \r\n /**\r\n * Create a group of nodes. Expects:\r\n * `\r\n {\r\n min: {Integer},\r\n max: {Integer},\r\n i: {Integer},\r\n node: {String},\r\n item: {Function}\r\n }\r\n * `\r\n */\r\n group: function( groupObject ) {\r\n \r\n var\r\n // Scope for the looped object\r\n loopObjectScope,\r\n \r\n // Create the nodes list\r\n nodesList = '',\r\n \r\n // The counter starts from the `min`\r\n counter = PickerConstructor._.trigger( groupObject.min, groupObject )\r\n \r\n \r\n // Loop from the `min` to `max`, incrementing by `i`\r\n for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) {\r\n \r\n // Trigger the `item` function within scope of the object\r\n loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] )\r\n \r\n // Splice the subgroup and create nodes out of the sub nodes\r\n nodesList += PickerConstructor._.node(\r\n groupObject.node,\r\n loopObjectScope[ 0 ], // the node\r\n loopObjectScope[ 1 ], // the classes\r\n loopObjectScope[ 2 ] // the attributes\r\n )\r\n }\r\n \r\n // Return the list of nodes\r\n return nodesList\r\n }, //group\r\n \r\n \r\n /**\r\n * Create a dom node string\r\n */\r\n node: function( wrapper, item, klass, attribute ) {\r\n \r\n // If the item is false-y, just return an empty string\r\n if ( !item ) return ''\r\n \r\n // If the item is an array, do a join\r\n item = $.isArray( item ) ? item.join( '' ) : item\r\n \r\n // Check for the class\r\n klass = klass ? ' class=\"' + klass + '\"' : ''\r\n \r\n // Check for any attributes\r\n attribute = attribute ? ' ' + attribute : ''\r\n \r\n // Return the wrapped item\r\n return '<' + wrapper + klass + attribute + '>' + item + ''\r\n }, //node\r\n \r\n \r\n /**\r\n * Lead numbers below 10 with a zero.\r\n */\r\n lead: function( number ) {\r\n return ( number < 10 ? '0': '' ) + number\r\n },\r\n \r\n \r\n /**\r\n * Trigger a function otherwise return the value.\r\n */\r\n trigger: function( callback, scope, args ) {\r\n return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback\r\n },\r\n \r\n \r\n /**\r\n * If the second character is a digit, length is 2 otherwise 1.\r\n */\r\n digits: function( string ) {\r\n return ( /\\d/ ).test( string[ 1 ] ) ? 2 : 1\r\n },\r\n \r\n \r\n /**\r\n * Tell if something is a date object.\r\n */\r\n isDate: function( value ) {\r\n return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() )\r\n },\r\n \r\n \r\n /**\r\n * Tell if something is an integer.\r\n */\r\n isInteger: function( value ) {\r\n return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0\r\n },\r\n \r\n \r\n /**\r\n * Create ARIA attribute strings.\r\n */\r\n ariaAttr: ariaAttr\r\n } //PickerConstructor._\r\n \r\n \r\n \r\n /**\r\n * Extend the picker with a component and defaults.\r\n */\r\n PickerConstructor.extend = function( name, Component ) {\r\n \r\n // Extend jQuery.\r\n $.fn[ name ] = function( options, action ) {\r\n \r\n // Grab the component data.\r\n var componentData = this.data( name )\r\n \r\n // If the picker is requested, return the data object.\r\n if ( options == 'picker' ) {\r\n return componentData\r\n }\r\n \r\n // If the component data exists and `options` is a string, carry out the action.\r\n if ( componentData && typeof options == 'string' ) {\r\n return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] )\r\n }\r\n \r\n // Otherwise go through each matched element and if the component\r\n // doesn’t exist, create a new picker using `this` element\r\n // and merging the defaults and options with a deep copy.\r\n return this.each( function() {\r\n var $this = $( this )\r\n if ( !$this.data( name ) ) {\r\n new PickerConstructor( this, name, Component, options )\r\n }\r\n })\r\n }\r\n \r\n // Set the defaults.\r\n $.fn[ name ].defaults = Component.defaults\r\n } //PickerConstructor.extend\r\n \r\n \r\n \r\n function aria(element, attribute, value) {\r\n if ( $.isPlainObject(attribute) ) {\r\n for ( var key in attribute ) {\r\n ariaSet(element, key, attribute[key])\r\n }\r\n }\r\n else {\r\n ariaSet(element, attribute, value)\r\n }\r\n }\r\n function ariaSet(element, attribute, value) {\r\n element.setAttribute(\r\n (attribute == 'role' ? '' : 'aria-') + attribute,\r\n value\r\n )\r\n }\r\n function ariaAttr(attribute, data) {\r\n if ( !$.isPlainObject(attribute) ) {\r\n attribute = { attribute: data }\r\n }\r\n data = ''\r\n for ( var key in attribute ) {\r\n var attr = (key == 'role' ? '' : 'aria-') + key,\r\n attrVal = attribute[key]\r\n data += attrVal == null ? '' : attr + '=\"' + attribute[key] + '\"'\r\n }\r\n return data\r\n }\r\n \r\n // IE8 bug throws an error for activeElements within iframes.\r\n function getActiveElement() {\r\n try {\r\n return document.activeElement\r\n } catch ( err ) { }\r\n }\r\n \r\n \r\n \r\n // Expose the picker constructor.\r\n return PickerConstructor\r\n \r\n \r\n }));\r\n \r\n","/*!\r\n * bsCustomFileInput v1.3.2 (https://github.com/Johann-S/bs-custom-file-input)\r\n * Copyright 2018 - 2019 Johann-S \r\n * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE)\r\n */\r\n(function (global, factory) {\r\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n typeof define === 'function' && define.amd ? define(factory) :\r\n (global = global || self, global.bsCustomFileInput = factory());\r\n}(this, function () {\r\n 'use strict';\r\n\r\n var Selector = {\r\n CUSTOMFILE: '.custom-file input[type=\"file\"]',\r\n CUSTOMFILELABEL: '.custom-file-label',\r\n FORM: 'form',\r\n INPUT: 'input'\r\n };\r\n\r\n var textNodeType = 3;\r\n\r\n var getDefaultText = function getDefaultText(input) {\r\n var defaultText = '';\r\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\r\n\r\n if (label) {\r\n defaultText = label.innerHTML;\r\n }\r\n\r\n return defaultText;\r\n };\r\n\r\n var findFirstChildNode = function findFirstChildNode(element) {\r\n if (element.childNodes.length > 0) {\r\n var childNodes = [].slice.call(element.childNodes);\r\n\r\n for (var i = 0; i < childNodes.length; i++) {\r\n var node = childNodes[i];\r\n\r\n if (node.nodeType !== textNodeType) {\r\n return node;\r\n }\r\n }\r\n }\r\n\r\n return element;\r\n };\r\n\r\n var restoreDefaultText = function restoreDefaultText(input) {\r\n var defaultText = input.bsCustomFileInput.defaultText;\r\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\r\n\r\n if (label) {\r\n var element = findFirstChildNode(label);\r\n element.innerHTML = defaultText;\r\n }\r\n };\r\n\r\n var fileApi = !!window.File;\r\n var FAKE_PATH = 'fakepath';\r\n var FAKE_PATH_SEPARATOR = '\\\\';\r\n\r\n var getSelectedFiles = function getSelectedFiles(input) {\r\n if (input.hasAttribute('multiple') && fileApi) {\r\n return [].slice.call(input.files).map(function (file) {\r\n return file.name;\r\n }).join(', ');\r\n }\r\n\r\n if (input.value.indexOf(FAKE_PATH) !== -1) {\r\n var splittedValue = input.value.split(FAKE_PATH_SEPARATOR);\r\n return splittedValue[splittedValue.length - 1];\r\n }\r\n\r\n return input.value;\r\n };\r\n\r\n function handleInputChange() {\r\n var label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL);\r\n\r\n if (label) {\r\n var element = findFirstChildNode(label);\r\n var inputValue = getSelectedFiles(this);\r\n\r\n if (inputValue.length) {\r\n element.innerHTML = inputValue;\r\n } else {\r\n restoreDefaultText(this);\r\n }\r\n }\r\n }\r\n\r\n function handleFormReset() {\r\n var customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT)).filter(function (input) {\r\n return !!input.bsCustomFileInput;\r\n });\r\n\r\n for (var i = 0, len = customFileList.length; i < len; i++) {\r\n restoreDefaultText(customFileList[i]);\r\n }\r\n }\r\n\r\n var customProperty = 'bsCustomFileInput';\r\n var Event = {\r\n FORMRESET: 'reset',\r\n INPUTCHANGE: 'change'\r\n };\r\n var bsCustomFileInput = {\r\n init: function init(inputSelector, formSelector) {\r\n if (inputSelector === void 0) {\r\n inputSelector = Selector.CUSTOMFILE;\r\n }\r\n\r\n if (formSelector === void 0) {\r\n formSelector = Selector.FORM;\r\n }\r\n\r\n var customFileInputList = [].slice.call(document.querySelectorAll(inputSelector));\r\n var formList = [].slice.call(document.querySelectorAll(formSelector));\r\n\r\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\r\n var input = customFileInputList[i];\r\n Object.defineProperty(input, customProperty, {\r\n value: {\r\n defaultText: getDefaultText(input)\r\n },\r\n writable: true\r\n });\r\n handleInputChange.call(input);\r\n input.addEventListener(Event.INPUTCHANGE, handleInputChange);\r\n }\r\n\r\n for (var _i = 0, _len = formList.length; _i < _len; _i++) {\r\n formList[_i].addEventListener(Event.FORMRESET, handleFormReset);\r\n\r\n Object.defineProperty(formList[_i], customProperty, {\r\n value: true,\r\n writable: true\r\n });\r\n }\r\n },\r\n destroy: function destroy() {\r\n var formList = [].slice.call(document.querySelectorAll(Selector.FORM)).filter(function (form) {\r\n return !!form.bsCustomFileInput;\r\n });\r\n var customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT)).filter(function (input) {\r\n return !!input.bsCustomFileInput;\r\n });\r\n\r\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\r\n var input = customFileInputList[i];\r\n restoreDefaultText(input);\r\n input[customProperty] = undefined;\r\n input.removeEventListener(Event.INPUTCHANGE, handleInputChange);\r\n }\r\n\r\n for (var _i2 = 0, _len2 = formList.length; _i2 < _len2; _i2++) {\r\n formList[_i2].removeEventListener(Event.FORMRESET, handleFormReset);\r\n\r\n formList[_i2][customProperty] = undefined;\r\n }\r\n }\r\n };\r\n\r\n return bsCustomFileInput;\r\n\r\n}));\r\n//# sourceMappingURL=bs-custom-file-input.js.map\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n\r\n bsCustomFileInput.init()\r\n});\r\n","/*!\r\n * Chart.js\r\n * http://chartjs.org/\r\n * Version: 2.7.3\r\n *\r\n * Copyright 2018 Chart.js Contributors\r\n * Released under the MIT license\r\n * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md\r\n */\r\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Chart = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i lum2) {\r\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\r\n\t\t}\r\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\r\n\t},\r\n\r\n\tlevel: function (color2) {\r\n\t\tvar contrastRatio = this.contrast(color2);\r\n\t\tif (contrastRatio >= 7.1) {\r\n\t\t\treturn 'AAA';\r\n\t\t}\r\n\r\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\r\n\t},\r\n\r\n\tdark: function () {\r\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\r\n\t\tvar rgb = this.values.rgb;\r\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\r\n\t\treturn yiq < 128;\r\n\t},\r\n\r\n\tlight: function () {\r\n\t\treturn !this.dark();\r\n\t},\r\n\r\n\tnegate: function () {\r\n\t\tvar rgb = [];\r\n\t\tfor (var i = 0; i < 3; i++) {\r\n\t\t\trgb[i] = 255 - this.values.rgb[i];\r\n\t\t}\r\n\t\tthis.setValues('rgb', rgb);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tlighten: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[2] += hsl[2] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tdarken: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[2] -= hsl[2] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tsaturate: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[1] += hsl[1] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tdesaturate: function (ratio) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\thsl[1] -= hsl[1] * ratio;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\twhiten: function (ratio) {\r\n\t\tvar hwb = this.values.hwb;\r\n\t\thwb[1] += hwb[1] * ratio;\r\n\t\tthis.setValues('hwb', hwb);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tblacken: function (ratio) {\r\n\t\tvar hwb = this.values.hwb;\r\n\t\thwb[2] += hwb[2] * ratio;\r\n\t\tthis.setValues('hwb', hwb);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tgreyscale: function () {\r\n\t\tvar rgb = this.values.rgb;\r\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\r\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\r\n\t\tthis.setValues('rgb', [val, val, val]);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tclearer: function (ratio) {\r\n\t\tvar alpha = this.values.alpha;\r\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\r\n\t\treturn this;\r\n\t},\r\n\r\n\topaquer: function (ratio) {\r\n\t\tvar alpha = this.values.alpha;\r\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\r\n\t\treturn this;\r\n\t},\r\n\r\n\trotate: function (degrees) {\r\n\t\tvar hsl = this.values.hsl;\r\n\t\tvar hue = (hsl[0] + degrees) % 360;\r\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\r\n\t\tthis.setValues('hsl', hsl);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t/**\r\n\t * Ported from sass implementation in C\r\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\r\n\t */\r\n\tmix: function (mixinColor, weight) {\r\n\t\tvar color1 = this;\r\n\t\tvar color2 = mixinColor;\r\n\t\tvar p = weight === undefined ? 0.5 : weight;\r\n\r\n\t\tvar w = 2 * p - 1;\r\n\t\tvar a = color1.alpha() - color2.alpha();\r\n\r\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\r\n\t\tvar w2 = 1 - w1;\r\n\r\n\t\treturn this\r\n\t\t\t.rgb(\r\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\r\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\r\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\r\n\t\t\t)\r\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\r\n\t},\r\n\r\n\ttoJSON: function () {\r\n\t\treturn this.rgb();\r\n\t},\r\n\r\n\tclone: function () {\r\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\r\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\r\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\r\n\t\t// except 'alpha' which is a number.\r\n\t\tvar result = new Color();\r\n\t\tvar source = this.values;\r\n\t\tvar target = result.values;\r\n\t\tvar value, type;\r\n\r\n\t\tfor (var prop in source) {\r\n\t\t\tif (source.hasOwnProperty(prop)) {\r\n\t\t\t\tvalue = source[prop];\r\n\t\t\t\ttype = ({}).toString.call(value);\r\n\t\t\t\tif (type === '[object Array]') {\r\n\t\t\t\t\ttarget[prop] = value.slice(0);\r\n\t\t\t\t} else if (type === '[object Number]') {\r\n\t\t\t\t\ttarget[prop] = value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.error('unexpected color value:', value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n};\r\n\r\nColor.prototype.spaces = {\r\n\trgb: ['red', 'green', 'blue'],\r\n\thsl: ['hue', 'saturation', 'lightness'],\r\n\thsv: ['hue', 'saturation', 'value'],\r\n\thwb: ['hue', 'whiteness', 'blackness'],\r\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\r\n};\r\n\r\nColor.prototype.maxes = {\r\n\trgb: [255, 255, 255],\r\n\thsl: [360, 100, 100],\r\n\thsv: [360, 100, 100],\r\n\thwb: [360, 100, 100],\r\n\tcmyk: [100, 100, 100, 100]\r\n};\r\n\r\nColor.prototype.getValues = function (space) {\r\n\tvar values = this.values;\r\n\tvar vals = {};\r\n\r\n\tfor (var i = 0; i < space.length; i++) {\r\n\t\tvals[space.charAt(i)] = values[space][i];\r\n\t}\r\n\r\n\tif (values.alpha !== 1) {\r\n\t\tvals.a = values.alpha;\r\n\t}\r\n\r\n\t// {r: 255, g: 255, b: 255, a: 0.4}\r\n\treturn vals;\r\n};\r\n\r\nColor.prototype.setValues = function (space, vals) {\r\n\tvar values = this.values;\r\n\tvar spaces = this.spaces;\r\n\tvar maxes = this.maxes;\r\n\tvar alpha = 1;\r\n\tvar i;\r\n\r\n\tthis.valid = true;\r\n\r\n\tif (space === 'alpha') {\r\n\t\talpha = vals;\r\n\t} else if (vals.length) {\r\n\t\t// [10, 10, 10]\r\n\t\tvalues[space] = vals.slice(0, space.length);\r\n\t\talpha = vals[space.length];\r\n\t} else if (vals[space.charAt(0)] !== undefined) {\r\n\t\t// {r: 10, g: 10, b: 10}\r\n\t\tfor (i = 0; i < space.length; i++) {\r\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\r\n\t\t}\r\n\r\n\t\talpha = vals.a;\r\n\t} else if (vals[spaces[space][0]] !== undefined) {\r\n\t\t// {red: 10, green: 10, blue: 10}\r\n\t\tvar chans = spaces[space];\r\n\r\n\t\tfor (i = 0; i < space.length; i++) {\r\n\t\t\tvalues[space][i] = vals[chans[i]];\r\n\t\t}\r\n\r\n\t\talpha = vals.alpha;\r\n\t}\r\n\r\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\r\n\r\n\tif (space === 'alpha') {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tvar capped;\r\n\r\n\t// cap values of the space prior converting all values\r\n\tfor (i = 0; i < space.length; i++) {\r\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\r\n\t\tvalues[space][i] = Math.round(capped);\r\n\t}\r\n\r\n\t// convert to all the other color spaces\r\n\tfor (var sname in spaces) {\r\n\t\tif (sname !== space) {\r\n\t\t\tvalues[sname] = convert[space][sname](values[space]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n\r\nColor.prototype.setSpace = function (space, args) {\r\n\tvar vals = args[0];\r\n\r\n\tif (vals === undefined) {\r\n\t\t// color.rgb()\r\n\t\treturn this.getValues(space);\r\n\t}\r\n\r\n\t// color.rgb(10, 10, 10)\r\n\tif (typeof vals === 'number') {\r\n\t\tvals = Array.prototype.slice.call(args);\r\n\t}\r\n\r\n\tthis.setValues(space, vals);\r\n\treturn this;\r\n};\r\n\r\nColor.prototype.setChannel = function (space, index, val) {\r\n\tvar svalues = this.values[space];\r\n\tif (val === undefined) {\r\n\t\t// color.red()\r\n\t\treturn svalues[index];\r\n\t} else if (val === svalues[index]) {\r\n\t\t// color.red(color.red())\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// color.red(100)\r\n\tsvalues[index] = val;\r\n\tthis.setValues(space, svalues);\r\n\r\n\treturn this;\r\n};\r\n\r\nif (typeof window !== 'undefined') {\r\n\twindow.Color = Color;\r\n}\r\n\r\nmodule.exports = Color;\r\n\r\n},{\"2\":2,\"5\":5}],4:[function(require,module,exports){\r\n/* MIT license */\r\n\r\nmodule.exports = {\r\n rgb2hsl: rgb2hsl,\r\n rgb2hsv: rgb2hsv,\r\n rgb2hwb: rgb2hwb,\r\n rgb2cmyk: rgb2cmyk,\r\n rgb2keyword: rgb2keyword,\r\n rgb2xyz: rgb2xyz,\r\n rgb2lab: rgb2lab,\r\n rgb2lch: rgb2lch,\r\n\r\n hsl2rgb: hsl2rgb,\r\n hsl2hsv: hsl2hsv,\r\n hsl2hwb: hsl2hwb,\r\n hsl2cmyk: hsl2cmyk,\r\n hsl2keyword: hsl2keyword,\r\n\r\n hsv2rgb: hsv2rgb,\r\n hsv2hsl: hsv2hsl,\r\n hsv2hwb: hsv2hwb,\r\n hsv2cmyk: hsv2cmyk,\r\n hsv2keyword: hsv2keyword,\r\n\r\n hwb2rgb: hwb2rgb,\r\n hwb2hsl: hwb2hsl,\r\n hwb2hsv: hwb2hsv,\r\n hwb2cmyk: hwb2cmyk,\r\n hwb2keyword: hwb2keyword,\r\n\r\n cmyk2rgb: cmyk2rgb,\r\n cmyk2hsl: cmyk2hsl,\r\n cmyk2hsv: cmyk2hsv,\r\n cmyk2hwb: cmyk2hwb,\r\n cmyk2keyword: cmyk2keyword,\r\n\r\n keyword2rgb: keyword2rgb,\r\n keyword2hsl: keyword2hsl,\r\n keyword2hsv: keyword2hsv,\r\n keyword2hwb: keyword2hwb,\r\n keyword2cmyk: keyword2cmyk,\r\n keyword2lab: keyword2lab,\r\n keyword2xyz: keyword2xyz,\r\n\r\n xyz2rgb: xyz2rgb,\r\n xyz2lab: xyz2lab,\r\n xyz2lch: xyz2lch,\r\n\r\n lab2xyz: lab2xyz,\r\n lab2rgb: lab2rgb,\r\n lab2lch: lab2lch,\r\n\r\n lch2lab: lch2lab,\r\n lch2xyz: lch2xyz,\r\n lch2rgb: lch2rgb\r\n}\r\n\r\n\r\nfunction rgb2hsl(rgb) {\r\n var r = rgb[0]/255,\r\n g = rgb[1]/255,\r\n b = rgb[2]/255,\r\n min = Math.min(r, g, b),\r\n max = Math.max(r, g, b),\r\n delta = max - min,\r\n h, s, l;\r\n\r\n if (max == min)\r\n h = 0;\r\n else if (r == max)\r\n h = (g - b) / delta;\r\n else if (g == max)\r\n h = 2 + (b - r) / delta;\r\n else if (b == max)\r\n h = 4 + (r - g)/ delta;\r\n\r\n h = Math.min(h * 60, 360);\r\n\r\n if (h < 0)\r\n h += 360;\r\n\r\n l = (min + max) / 2;\r\n\r\n if (max == min)\r\n s = 0;\r\n else if (l <= 0.5)\r\n s = delta / (max + min);\r\n else\r\n s = delta / (2 - max - min);\r\n\r\n return [h, s * 100, l * 100];\r\n}\r\n\r\nfunction rgb2hsv(rgb) {\r\n var r = rgb[0],\r\n g = rgb[1],\r\n b = rgb[2],\r\n min = Math.min(r, g, b),\r\n max = Math.max(r, g, b),\r\n delta = max - min,\r\n h, s, v;\r\n\r\n if (max == 0)\r\n s = 0;\r\n else\r\n s = (delta/max * 1000)/10;\r\n\r\n if (max == min)\r\n h = 0;\r\n else if (r == max)\r\n h = (g - b) / delta;\r\n else if (g == max)\r\n h = 2 + (b - r) / delta;\r\n else if (b == max)\r\n h = 4 + (r - g) / delta;\r\n\r\n h = Math.min(h * 60, 360);\r\n\r\n if (h < 0)\r\n h += 360;\r\n\r\n v = ((max / 255) * 1000) / 10;\r\n\r\n return [h, s, v];\r\n}\r\n\r\nfunction rgb2hwb(rgb) {\r\n var r = rgb[0],\r\n g = rgb[1],\r\n b = rgb[2],\r\n h = rgb2hsl(rgb)[0],\r\n w = 1/255 * Math.min(r, Math.min(g, b)),\r\n b = 1 - 1/255 * Math.max(r, Math.max(g, b));\r\n\r\n return [h, w * 100, b * 100];\r\n}\r\n\r\nfunction rgb2cmyk(rgb) {\r\n var r = rgb[0] / 255,\r\n g = rgb[1] / 255,\r\n b = rgb[2] / 255,\r\n c, m, y, k;\r\n\r\n k = Math.min(1 - r, 1 - g, 1 - b);\r\n c = (1 - r - k) / (1 - k) || 0;\r\n m = (1 - g - k) / (1 - k) || 0;\r\n y = (1 - b - k) / (1 - k) || 0;\r\n return [c * 100, m * 100, y * 100, k * 100];\r\n}\r\n\r\nfunction rgb2keyword(rgb) {\r\n return reverseKeywords[JSON.stringify(rgb)];\r\n}\r\n\r\nfunction rgb2xyz(rgb) {\r\n var r = rgb[0] / 255,\r\n g = rgb[1] / 255,\r\n b = rgb[2] / 255;\r\n\r\n // assume sRGB\r\n r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\r\n g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\r\n b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\r\n\r\n var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\r\n var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\r\n var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\r\n\r\n return [x * 100, y *100, z * 100];\r\n}\r\n\r\nfunction rgb2lab(rgb) {\r\n var xyz = rgb2xyz(rgb),\r\n x = xyz[0],\r\n y = xyz[1],\r\n z = xyz[2],\r\n l, a, b;\r\n\r\n x /= 95.047;\r\n y /= 100;\r\n z /= 108.883;\r\n\r\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\r\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\r\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\r\n\r\n l = (116 * y) - 16;\r\n a = 500 * (x - y);\r\n b = 200 * (y - z);\r\n\r\n return [l, a, b];\r\n}\r\n\r\nfunction rgb2lch(args) {\r\n return lab2lch(rgb2lab(args));\r\n}\r\n\r\nfunction hsl2rgb(hsl) {\r\n var h = hsl[0] / 360,\r\n s = hsl[1] / 100,\r\n l = hsl[2] / 100,\r\n t1, t2, t3, rgb, val;\r\n\r\n if (s == 0) {\r\n val = l * 255;\r\n return [val, val, val];\r\n }\r\n\r\n if (l < 0.5)\r\n t2 = l * (1 + s);\r\n else\r\n t2 = l + s - l * s;\r\n t1 = 2 * l - t2;\r\n\r\n rgb = [0, 0, 0];\r\n for (var i = 0; i < 3; i++) {\r\n t3 = h + 1 / 3 * - (i - 1);\r\n t3 < 0 && t3++;\r\n t3 > 1 && t3--;\r\n\r\n if (6 * t3 < 1)\r\n val = t1 + (t2 - t1) * 6 * t3;\r\n else if (2 * t3 < 1)\r\n val = t2;\r\n else if (3 * t3 < 2)\r\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\r\n else\r\n val = t1;\r\n\r\n rgb[i] = val * 255;\r\n }\r\n\r\n return rgb;\r\n}\r\n\r\nfunction hsl2hsv(hsl) {\r\n var h = hsl[0],\r\n s = hsl[1] / 100,\r\n l = hsl[2] / 100,\r\n sv, v;\r\n\r\n if(l === 0) {\r\n // no need to do calc on black\r\n // also avoids divide by 0 error\r\n return [0, 0, 0];\r\n }\r\n\r\n l *= 2;\r\n s *= (l <= 1) ? l : 2 - l;\r\n v = (l + s) / 2;\r\n sv = (2 * s) / (l + s);\r\n return [h, sv * 100, v * 100];\r\n}\r\n\r\nfunction hsl2hwb(args) {\r\n return rgb2hwb(hsl2rgb(args));\r\n}\r\n\r\nfunction hsl2cmyk(args) {\r\n return rgb2cmyk(hsl2rgb(args));\r\n}\r\n\r\nfunction hsl2keyword(args) {\r\n return rgb2keyword(hsl2rgb(args));\r\n}\r\n\r\n\r\nfunction hsv2rgb(hsv) {\r\n var h = hsv[0] / 60,\r\n s = hsv[1] / 100,\r\n v = hsv[2] / 100,\r\n hi = Math.floor(h) % 6;\r\n\r\n var f = h - Math.floor(h),\r\n p = 255 * v * (1 - s),\r\n q = 255 * v * (1 - (s * f)),\r\n t = 255 * v * (1 - (s * (1 - f))),\r\n v = 255 * v;\r\n\r\n switch(hi) {\r\n case 0:\r\n return [v, t, p];\r\n case 1:\r\n return [q, v, p];\r\n case 2:\r\n return [p, v, t];\r\n case 3:\r\n return [p, q, v];\r\n case 4:\r\n return [t, p, v];\r\n case 5:\r\n return [v, p, q];\r\n }\r\n}\r\n\r\nfunction hsv2hsl(hsv) {\r\n var h = hsv[0],\r\n s = hsv[1] / 100,\r\n v = hsv[2] / 100,\r\n sl, l;\r\n\r\n l = (2 - s) * v;\r\n sl = s * v;\r\n sl /= (l <= 1) ? l : 2 - l;\r\n sl = sl || 0;\r\n l /= 2;\r\n return [h, sl * 100, l * 100];\r\n}\r\n\r\nfunction hsv2hwb(args) {\r\n return rgb2hwb(hsv2rgb(args))\r\n}\r\n\r\nfunction hsv2cmyk(args) {\r\n return rgb2cmyk(hsv2rgb(args));\r\n}\r\n\r\nfunction hsv2keyword(args) {\r\n return rgb2keyword(hsv2rgb(args));\r\n}\r\n\r\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\r\nfunction hwb2rgb(hwb) {\r\n var h = hwb[0] / 360,\r\n wh = hwb[1] / 100,\r\n bl = hwb[2] / 100,\r\n ratio = wh + bl,\r\n i, v, f, n;\r\n\r\n // wh + bl cant be > 1\r\n if (ratio > 1) {\r\n wh /= ratio;\r\n bl /= ratio;\r\n }\r\n\r\n i = Math.floor(6 * h);\r\n v = 1 - bl;\r\n f = 6 * h - i;\r\n if ((i & 0x01) != 0) {\r\n f = 1 - f;\r\n }\r\n n = wh + f * (v - wh); // linear interpolation\r\n\r\n switch (i) {\r\n default:\r\n case 6:\r\n case 0: r = v; g = n; b = wh; break;\r\n case 1: r = n; g = v; b = wh; break;\r\n case 2: r = wh; g = v; b = n; break;\r\n case 3: r = wh; g = n; b = v; break;\r\n case 4: r = n; g = wh; b = v; break;\r\n case 5: r = v; g = wh; b = n; break;\r\n }\r\n\r\n return [r * 255, g * 255, b * 255];\r\n}\r\n\r\nfunction hwb2hsl(args) {\r\n return rgb2hsl(hwb2rgb(args));\r\n}\r\n\r\nfunction hwb2hsv(args) {\r\n return rgb2hsv(hwb2rgb(args));\r\n}\r\n\r\nfunction hwb2cmyk(args) {\r\n return rgb2cmyk(hwb2rgb(args));\r\n}\r\n\r\nfunction hwb2keyword(args) {\r\n return rgb2keyword(hwb2rgb(args));\r\n}\r\n\r\nfunction cmyk2rgb(cmyk) {\r\n var c = cmyk[0] / 100,\r\n m = cmyk[1] / 100,\r\n y = cmyk[2] / 100,\r\n k = cmyk[3] / 100,\r\n r, g, b;\r\n\r\n r = 1 - Math.min(1, c * (1 - k) + k);\r\n g = 1 - Math.min(1, m * (1 - k) + k);\r\n b = 1 - Math.min(1, y * (1 - k) + k);\r\n return [r * 255, g * 255, b * 255];\r\n}\r\n\r\nfunction cmyk2hsl(args) {\r\n return rgb2hsl(cmyk2rgb(args));\r\n}\r\n\r\nfunction cmyk2hsv(args) {\r\n return rgb2hsv(cmyk2rgb(args));\r\n}\r\n\r\nfunction cmyk2hwb(args) {\r\n return rgb2hwb(cmyk2rgb(args));\r\n}\r\n\r\nfunction cmyk2keyword(args) {\r\n return rgb2keyword(cmyk2rgb(args));\r\n}\r\n\r\n\r\nfunction xyz2rgb(xyz) {\r\n var x = xyz[0] / 100,\r\n y = xyz[1] / 100,\r\n z = xyz[2] / 100,\r\n r, g, b;\r\n\r\n r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\r\n g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\r\n b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\r\n\r\n // assume sRGB\r\n r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\r\n : r = (r * 12.92);\r\n\r\n g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\r\n : g = (g * 12.92);\r\n\r\n b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\r\n : b = (b * 12.92);\r\n\r\n r = Math.min(Math.max(0, r), 1);\r\n g = Math.min(Math.max(0, g), 1);\r\n b = Math.min(Math.max(0, b), 1);\r\n\r\n return [r * 255, g * 255, b * 255];\r\n}\r\n\r\nfunction xyz2lab(xyz) {\r\n var x = xyz[0],\r\n y = xyz[1],\r\n z = xyz[2],\r\n l, a, b;\r\n\r\n x /= 95.047;\r\n y /= 100;\r\n z /= 108.883;\r\n\r\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\r\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\r\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\r\n\r\n l = (116 * y) - 16;\r\n a = 500 * (x - y);\r\n b = 200 * (y - z);\r\n\r\n return [l, a, b];\r\n}\r\n\r\nfunction xyz2lch(args) {\r\n return lab2lch(xyz2lab(args));\r\n}\r\n\r\nfunction lab2xyz(lab) {\r\n var l = lab[0],\r\n a = lab[1],\r\n b = lab[2],\r\n x, y, z, y2;\r\n\r\n if (l <= 8) {\r\n y = (l * 100) / 903.3;\r\n y2 = (7.787 * (y / 100)) + (16 / 116);\r\n } else {\r\n y = 100 * Math.pow((l + 16) / 116, 3);\r\n y2 = Math.pow(y / 100, 1/3);\r\n }\r\n\r\n x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);\r\n\r\n z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);\r\n\r\n return [x, y, z];\r\n}\r\n\r\nfunction lab2lch(lab) {\r\n var l = lab[0],\r\n a = lab[1],\r\n b = lab[2],\r\n hr, h, c;\r\n\r\n hr = Math.atan2(b, a);\r\n h = hr * 360 / 2 / Math.PI;\r\n if (h < 0) {\r\n h += 360;\r\n }\r\n c = Math.sqrt(a * a + b * b);\r\n return [l, c, h];\r\n}\r\n\r\nfunction lab2rgb(args) {\r\n return xyz2rgb(lab2xyz(args));\r\n}\r\n\r\nfunction lch2lab(lch) {\r\n var l = lch[0],\r\n c = lch[1],\r\n h = lch[2],\r\n a, b, hr;\r\n\r\n hr = h / 360 * 2 * Math.PI;\r\n a = c * Math.cos(hr);\r\n b = c * Math.sin(hr);\r\n return [l, a, b];\r\n}\r\n\r\nfunction lch2xyz(args) {\r\n return lab2xyz(lch2lab(args));\r\n}\r\n\r\nfunction lch2rgb(args) {\r\n return lab2rgb(lch2lab(args));\r\n}\r\n\r\nfunction keyword2rgb(keyword) {\r\n return cssKeywords[keyword];\r\n}\r\n\r\nfunction keyword2hsl(args) {\r\n return rgb2hsl(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2hsv(args) {\r\n return rgb2hsv(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2hwb(args) {\r\n return rgb2hwb(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2cmyk(args) {\r\n return rgb2cmyk(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2lab(args) {\r\n return rgb2lab(keyword2rgb(args));\r\n}\r\n\r\nfunction keyword2xyz(args) {\r\n return rgb2xyz(keyword2rgb(args));\r\n}\r\n\r\nvar cssKeywords = {\r\n aliceblue: [240,248,255],\r\n antiquewhite: [250,235,215],\r\n aqua: [0,255,255],\r\n aquamarine: [127,255,212],\r\n azure: [240,255,255],\r\n beige: [245,245,220],\r\n bisque: [255,228,196],\r\n black: [0,0,0],\r\n blanchedalmond: [255,235,205],\r\n blue: [0,0,255],\r\n blueviolet: [138,43,226],\r\n brown: [165,42,42],\r\n burlywood: [222,184,135],\r\n cadetblue: [95,158,160],\r\n chartreuse: [127,255,0],\r\n chocolate: [210,105,30],\r\n coral: [255,127,80],\r\n cornflowerblue: [100,149,237],\r\n cornsilk: [255,248,220],\r\n crimson: [220,20,60],\r\n cyan: [0,255,255],\r\n darkblue: [0,0,139],\r\n darkcyan: [0,139,139],\r\n darkgoldenrod: [184,134,11],\r\n darkgray: [169,169,169],\r\n darkgreen: [0,100,0],\r\n darkgrey: [169,169,169],\r\n darkkhaki: [189,183,107],\r\n darkmagenta: [139,0,139],\r\n darkolivegreen: [85,107,47],\r\n darkorange: [255,140,0],\r\n darkorchid: [153,50,204],\r\n darkred: [139,0,0],\r\n darksalmon: [233,150,122],\r\n darkseagreen: [143,188,143],\r\n darkslateblue: [72,61,139],\r\n darkslategray: [47,79,79],\r\n darkslategrey: [47,79,79],\r\n darkturquoise: [0,206,209],\r\n darkviolet: [148,0,211],\r\n deeppink: [255,20,147],\r\n deepskyblue: [0,191,255],\r\n dimgray: [105,105,105],\r\n dimgrey: [105,105,105],\r\n dodgerblue: [30,144,255],\r\n firebrick: [178,34,34],\r\n floralwhite: [255,250,240],\r\n forestgreen: [34,139,34],\r\n fuchsia: [255,0,255],\r\n gainsboro: [220,220,220],\r\n ghostwhite: [248,248,255],\r\n gold: [255,215,0],\r\n goldenrod: [218,165,32],\r\n gray: [128,128,128],\r\n green: [0,128,0],\r\n greenyellow: [173,255,47],\r\n grey: [128,128,128],\r\n honeydew: [240,255,240],\r\n hotpink: [255,105,180],\r\n indianred: [205,92,92],\r\n indigo: [75,0,130],\r\n ivory: [255,255,240],\r\n khaki: [240,230,140],\r\n lavender: [230,230,250],\r\n lavenderblush: [255,240,245],\r\n lawngreen: [124,252,0],\r\n lemonchiffon: [255,250,205],\r\n lightblue: [173,216,230],\r\n lightcoral: [240,128,128],\r\n lightcyan: [224,255,255],\r\n lightgoldenrodyellow: [250,250,210],\r\n lightgray: [211,211,211],\r\n lightgreen: [144,238,144],\r\n lightgrey: [211,211,211],\r\n lightpink: [255,182,193],\r\n lightsalmon: [255,160,122],\r\n lightseagreen: [32,178,170],\r\n lightskyblue: [135,206,250],\r\n lightslategray: [119,136,153],\r\n lightslategrey: [119,136,153],\r\n lightsteelblue: [176,196,222],\r\n lightyellow: [255,255,224],\r\n lime: [0,255,0],\r\n limegreen: [50,205,50],\r\n linen: [250,240,230],\r\n magenta: [255,0,255],\r\n maroon: [128,0,0],\r\n mediumaquamarine: [102,205,170],\r\n mediumblue: [0,0,205],\r\n mediumorchid: [186,85,211],\r\n mediumpurple: [147,112,219],\r\n mediumseagreen: [60,179,113],\r\n mediumslateblue: [123,104,238],\r\n mediumspringgreen: [0,250,154],\r\n mediumturquoise: [72,209,204],\r\n mediumvioletred: [199,21,133],\r\n midnightblue: [25,25,112],\r\n mintcream: [245,255,250],\r\n mistyrose: [255,228,225],\r\n moccasin: [255,228,181],\r\n navajowhite: [255,222,173],\r\n navy: [0,0,128],\r\n oldlace: [253,245,230],\r\n olive: [128,128,0],\r\n olivedrab: [107,142,35],\r\n orange: [255,165,0],\r\n orangered: [255,69,0],\r\n orchid: [218,112,214],\r\n palegoldenrod: [238,232,170],\r\n palegreen: [152,251,152],\r\n paleturquoise: [175,238,238],\r\n palevioletred: [219,112,147],\r\n papayawhip: [255,239,213],\r\n peachpuff: [255,218,185],\r\n peru: [205,133,63],\r\n pink: [255,192,203],\r\n plum: [221,160,221],\r\n powderblue: [176,224,230],\r\n purple: [128,0,128],\r\n rebeccapurple: [102, 51, 153],\r\n red: [255,0,0],\r\n rosybrown: [188,143,143],\r\n royalblue: [65,105,225],\r\n saddlebrown: [139,69,19],\r\n salmon: [250,128,114],\r\n sandybrown: [244,164,96],\r\n seagreen: [46,139,87],\r\n seashell: [255,245,238],\r\n sienna: [160,82,45],\r\n silver: [192,192,192],\r\n skyblue: [135,206,235],\r\n slateblue: [106,90,205],\r\n slategray: [112,128,144],\r\n slategrey: [112,128,144],\r\n snow: [255,250,250],\r\n springgreen: [0,255,127],\r\n steelblue: [70,130,180],\r\n tan: [210,180,140],\r\n teal: [0,128,128],\r\n thistle: [216,191,216],\r\n tomato: [255,99,71],\r\n turquoise: [64,224,208],\r\n violet: [238,130,238],\r\n wheat: [245,222,179],\r\n white: [255,255,255],\r\n whitesmoke: [245,245,245],\r\n yellow: [255,255,0],\r\n yellowgreen: [154,205,50]\r\n};\r\n\r\nvar reverseKeywords = {};\r\nfor (var key in cssKeywords) {\r\n reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\r\n}\r\n\r\n},{}],5:[function(require,module,exports){\r\nvar conversions = require(4);\r\n\r\nvar convert = function() {\r\n return new Converter();\r\n}\r\n\r\nfor (var func in conversions) {\r\n // export Raw versions\r\n convert[func + \"Raw\"] = (function(func) {\r\n // accept array or plain args\r\n return function(arg) {\r\n if (typeof arg == \"number\")\r\n arg = Array.prototype.slice.call(arguments);\r\n return conversions[func](arg);\r\n }\r\n })(func);\r\n\r\n var pair = /(\\w+)2(\\w+)/.exec(func),\r\n from = pair[1],\r\n to = pair[2];\r\n\r\n // export rgb2hsl and [\"rgb\"][\"hsl\"]\r\n convert[from] = convert[from] || {};\r\n\r\n convert[from][to] = convert[func] = (function(func) {\r\n return function(arg) {\r\n if (typeof arg == \"number\")\r\n arg = Array.prototype.slice.call(arguments);\r\n\r\n var val = conversions[func](arg);\r\n if (typeof val == \"string\" || val === undefined)\r\n return val; // keyword\r\n\r\n for (var i = 0; i < val.length; i++)\r\n val[i] = Math.round(val[i]);\r\n return val;\r\n }\r\n })(func);\r\n}\r\n\r\n\r\n/* Converter does lazy conversion and caching */\r\nvar Converter = function() {\r\n this.convs = {};\r\n};\r\n\r\n/* Either get the values for a space or\r\n set the values for a space, depending on args */\r\nConverter.prototype.routeSpace = function(space, args) {\r\n var values = args[0];\r\n if (values === undefined) {\r\n // color.rgb()\r\n return this.getValues(space);\r\n }\r\n // color.rgb(10, 10, 10)\r\n if (typeof values == \"number\") {\r\n values = Array.prototype.slice.call(args);\r\n }\r\n\r\n return this.setValues(space, values);\r\n};\r\n\r\n/* Set the values for a space, invalidating cache */\r\nConverter.prototype.setValues = function(space, values) {\r\n this.space = space;\r\n this.convs = {};\r\n this.convs[space] = values;\r\n return this;\r\n};\r\n\r\n/* Get the values for a space. If there's already\r\n a conversion for the space, fetch it, otherwise\r\n compute it */\r\nConverter.prototype.getValues = function(space) {\r\n var vals = this.convs[space];\r\n if (!vals) {\r\n var fspace = this.space,\r\n from = this.convs[fspace];\r\n vals = convert[fspace][space](from);\r\n\r\n this.convs[space] = vals;\r\n }\r\n return vals;\r\n};\r\n\r\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\r\n Converter.prototype[space] = function(vals) {\r\n return this.routeSpace(space, arguments);\r\n }\r\n});\r\n\r\nmodule.exports = convert;\r\n},{\"4\":4}],6:[function(require,module,exports){\r\n'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n\r\n},{}],7:[function(require,module,exports){\r\n/**\r\n * @namespace Chart\r\n */\r\nvar Chart = require(30)();\r\n\r\nChart.helpers = require(46);\r\n\r\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\r\nrequire(28)(Chart);\r\n\r\nChart.Animation = require(22);\r\nChart.animationService = require(23);\r\nChart.defaults = require(26);\r\nChart.Element = require(27);\r\nChart.elements = require(41);\r\nChart.Interaction = require(29);\r\nChart.layouts = require(31);\r\nChart.platform = require(49);\r\nChart.plugins = require(32);\r\nChart.Scale = require(33);\r\nChart.scaleService = require(34);\r\nChart.Ticks = require(35);\r\nChart.Tooltip = require(36);\r\n\r\nrequire(24)(Chart);\r\nrequire(25)(Chart);\r\n\r\nrequire(56)(Chart);\r\nrequire(54)(Chart);\r\nrequire(55)(Chart);\r\nrequire(57)(Chart);\r\nrequire(58)(Chart);\r\nrequire(59)(Chart);\r\n\r\n// Controllers must be loaded after elements\r\n// See Chart.core.datasetController.dataElementType\r\nrequire(15)(Chart);\r\nrequire(16)(Chart);\r\nrequire(17)(Chart);\r\nrequire(18)(Chart);\r\nrequire(19)(Chart);\r\nrequire(20)(Chart);\r\nrequire(21)(Chart);\r\n\r\nrequire(8)(Chart);\r\nrequire(9)(Chart);\r\nrequire(10)(Chart);\r\nrequire(11)(Chart);\r\nrequire(12)(Chart);\r\nrequire(13)(Chart);\r\nrequire(14)(Chart);\r\n\r\n// Loading built-in plugins\r\nvar plugins = require(50);\r\nfor (var k in plugins) {\r\n\tif (plugins.hasOwnProperty(k)) {\r\n\t\tChart.plugins.register(plugins[k]);\r\n\t}\r\n}\r\n\r\nChart.platform.initialize();\r\n\r\nmodule.exports = Chart;\r\nif (typeof window !== 'undefined') {\r\n\twindow.Chart = Chart;\r\n}\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Legend\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.Legend = plugins.legend._element;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Title\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.Title = plugins.title._element;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.plugins instead\r\n * @namespace Chart.pluginService\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.pluginService = Chart.plugins;\r\n\r\n/**\r\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\r\n * effect, instead simply create/register plugins via plain JavaScript objects.\r\n * @interface Chart.PluginBase\r\n * @deprecated since version 2.5.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.PluginBase = Chart.Element.extend({});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\r\n * @namespace Chart.canvasHelpers\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.canvasHelpers = Chart.helpers.canvas;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.layouts instead.\r\n * @namespace Chart.layoutService\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.layoutService = Chart.layouts;\r\n\r\n},{\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,\"18\":18,\"19\":19,\"20\":20,\"21\":21,\"22\":22,\"23\":23,\"24\":24,\"25\":25,\"26\":26,\"27\":27,\"28\":28,\"29\":29,\"30\":30,\"31\":31,\"32\":32,\"33\":33,\"34\":34,\"35\":35,\"36\":36,\"41\":41,\"46\":46,\"49\":49,\"50\":50,\"54\":54,\"55\":55,\"56\":56,\"57\":57,\"58\":58,\"59\":59,\"8\":8,\"9\":9}],8:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Bar = function(context, config) {\r\n\t\tconfig.type = 'bar';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],9:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Bubble = function(context, config) {\r\n\t\tconfig.type = 'bubble';\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],10:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Doughnut = function(context, config) {\r\n\t\tconfig.type = 'doughnut';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],11:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Line = function(context, config) {\r\n\t\tconfig.type = 'line';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],12:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.PolarArea = function(context, config) {\r\n\t\tconfig.type = 'polarArea';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],13:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.Radar = function(context, config) {\r\n\t\tconfig.type = 'radar';\r\n\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n\r\n};\r\n\r\n},{}],14:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = function(Chart) {\r\n\tChart.Scatter = function(context, config) {\r\n\t\tconfig.type = 'scatter';\r\n\t\treturn new Chart(context, config);\r\n\t};\r\n};\r\n\r\n},{}],15:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('bar', {\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\r\n\t\t\t// Specific to Bar Controller\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9,\r\n\r\n\t\t\t// offset settings\r\n\t\t\toffset: true,\r\n\r\n\t\t\t// grid line settings\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\ndefaults._set('horizontalBar', {\r\n\thover: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\tposition: 'left',\r\n\t\t\ttype: 'category',\r\n\r\n\t\t\t// Specific to Horizontal Bar Controller\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9,\r\n\r\n\t\t\t// offset settings\r\n\t\t\toffset: true,\r\n\r\n\t\t\t// grid line settings\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}]\r\n\t},\r\n\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tborderSkipped: 'left'\r\n\t\t}\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function(item, data) {\r\n\t\t\t\t// Pick first xLabel for now\r\n\t\t\t\tvar title = '';\r\n\r\n\t\t\t\tif (item.length > 0) {\r\n\t\t\t\t\tif (item[0].yLabel) {\r\n\t\t\t\t\t\ttitle = item[0].yLabel;\r\n\t\t\t\t\t} else if (data.labels.length > 0 && item[0].index < data.labels.length) {\r\n\t\t\t\t\t\ttitle = data.labels[item[0].index];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn title;\r\n\t\t\t},\r\n\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\treturn datasetLabel + ': ' + item.xLabel;\r\n\t\t\t}\r\n\t\t},\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t}\r\n});\r\n\r\n/**\r\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\r\n * @private\r\n */\r\nfunction computeMinSampleSize(scale, pixels) {\r\n\tvar min = scale.isHorizontal() ? scale.width : scale.height;\r\n\tvar ticks = scale.getTicks();\r\n\tvar prev, curr, i, ilen;\r\n\r\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\r\n\t\tmin = Math.min(min, pixels[i] - pixels[i - 1]);\r\n\t}\r\n\r\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\tcurr = scale.getPixelForTick(i);\r\n\t\tmin = i > 0 ? Math.min(min, curr - prev) : min;\r\n\t\tprev = curr;\r\n\t}\r\n\r\n\treturn min;\r\n}\r\n\r\n/**\r\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\r\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\r\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\r\n * @private\r\n */\r\nfunction computeFitCategoryTraits(index, ruler, options) {\r\n\tvar thickness = options.barThickness;\r\n\tvar count = ruler.stackCount;\r\n\tvar curr = ruler.pixels[index];\r\n\tvar size, ratio;\r\n\r\n\tif (helpers.isNullOrUndef(thickness)) {\r\n\t\tsize = ruler.min * options.categoryPercentage;\r\n\t\tratio = options.barPercentage;\r\n\t} else {\r\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\r\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\r\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\r\n\t\tsize = thickness * count;\r\n\t\tratio = 1;\r\n\t}\r\n\r\n\treturn {\r\n\t\tchunk: size / count,\r\n\t\tratio: ratio,\r\n\t\tstart: curr - (size / 2)\r\n\t};\r\n}\r\n\r\n/**\r\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\r\n * percentage options are 1), based on the previous and following categories. This mode\r\n * generates bars with different widths when data are not evenly spaced.\r\n * @private\r\n */\r\nfunction computeFlexCategoryTraits(index, ruler, options) {\r\n\tvar pixels = ruler.pixels;\r\n\tvar curr = pixels[index];\r\n\tvar prev = index > 0 ? pixels[index - 1] : null;\r\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\r\n\tvar percent = options.categoryPercentage;\r\n\tvar start, size;\r\n\r\n\tif (prev === null) {\r\n\t\t// first data: its size is double based on the next point or,\r\n\t\t// if it's also the last data, we use the scale end extremity.\r\n\t\tprev = curr - (next === null ? ruler.end - curr : next - curr);\r\n\t}\r\n\r\n\tif (next === null) {\r\n\t\t// last data: its size is also double based on the previous point.\r\n\t\tnext = curr + curr - prev;\r\n\t}\r\n\r\n\tstart = curr - ((curr - prev) / 2) * percent;\r\n\tsize = ((next - prev) / 2) * percent;\r\n\r\n\treturn {\r\n\t\tchunk: size / ruler.stackCount,\r\n\t\tratio: options.barPercentage,\r\n\t\tstart: start\r\n\t};\r\n}\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.bar = Chart.DatasetController.extend({\r\n\r\n\t\tdataElementType: elements.Rectangle,\r\n\r\n\t\tinitialize: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta;\r\n\r\n\t\t\tChart.DatasetController.prototype.initialize.apply(me, arguments);\r\n\r\n\t\t\tmeta = me.getMeta();\r\n\t\t\tmeta.stack = me.getDataset().stack;\r\n\t\t\tmeta.bar = true;\r\n\t\t},\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar rects = me.getMeta().data;\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tme._ruler = me.getRuler();\r\n\r\n\t\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\r\n\t\t\t\tme.updateElement(rects[i], i, reset);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tupdateElement: function(rectangle, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar custom = rectangle.custom || {};\r\n\t\t\tvar rectangleOptions = chart.options.elements.rectangle;\r\n\r\n\t\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\trectangle._datasetIndex = me.index;\r\n\t\t\trectangle._index = index;\r\n\r\n\t\t\trectangle._model = {\r\n\t\t\t\tdatasetLabel: dataset.label,\r\n\t\t\t\tlabel: chart.data.labels[index],\r\n\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped,\r\n\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor),\r\n\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor),\r\n\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth)\r\n\t\t\t};\r\n\r\n\t\t\tme.updateElementGeometry(rectangle, index, reset);\r\n\r\n\t\t\trectangle.pivot();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateElementGeometry: function(rectangle, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar model = rectangle._model;\r\n\t\t\tvar vscale = me.getValueScale();\r\n\t\t\tvar base = vscale.getBasePixel();\r\n\t\t\tvar horizontal = vscale.isHorizontal();\r\n\t\t\tvar ruler = me._ruler || me.getRuler();\r\n\t\t\tvar vpixels = me.calculateBarValuePixels(me.index, index);\r\n\t\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\r\n\r\n\t\t\tmodel.horizontal = horizontal;\r\n\t\t\tmodel.base = reset ? base : vpixels.base;\r\n\t\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\r\n\t\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\r\n\t\t\tmodel.height = horizontal ? ipixels.size : undefined;\r\n\t\t\tmodel.width = horizontal ? undefined : ipixels.size;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetValueScaleId: function() {\r\n\t\t\treturn this.getMeta().yAxisID;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetIndexScaleId: function() {\r\n\t\t\treturn this.getMeta().xAxisID;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetValueScale: function() {\r\n\t\t\treturn this.getScaleForId(this.getValueScaleId());\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetIndexScale: function() {\r\n\t\t\treturn this.getScaleForId(this.getIndexScaleId());\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the stacks based on groups and bar visibility.\r\n\t\t * @param {Number} [last] - The dataset index\r\n\t\t * @returns {Array} The stack list\r\n\t\t * @private\r\n\t\t */\r\n\t\t_getStacks: function(last) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar scale = me.getIndexScale();\r\n\t\t\tvar stacked = scale.options.stacked;\r\n\t\t\tvar ilen = last === undefined ? chart.data.datasets.length : last + 1;\r\n\t\t\tvar stacks = [];\r\n\t\t\tvar i, meta;\r\n\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tif (meta.bar && chart.isDatasetVisible(i) &&\r\n\t\t\t\t\t(stacked === false ||\r\n\t\t\t\t\t(stacked === true && stacks.indexOf(meta.stack) === -1) ||\r\n\t\t\t\t\t(stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\r\n\t\t\t\t\tstacks.push(meta.stack);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn stacks;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the effective number of stacks based on groups and bar visibility.\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetStackCount: function() {\r\n\t\t\treturn this._getStacks().length;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the stack index for the given dataset based on groups and bar visibility.\r\n\t\t * @param {Number} [datasetIndex] - The dataset index\r\n\t\t * @param {String} [name] - The stack name to find\r\n\t\t * @returns {Number} The stack index\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetStackIndex: function(datasetIndex, name) {\r\n\t\t\tvar stacks = this._getStacks(datasetIndex);\r\n\t\t\tvar index = (name !== undefined)\r\n\t\t\t\t? stacks.indexOf(name)\r\n\t\t\t\t: -1; // indexOf returns -1 if element is not present\r\n\r\n\t\t\treturn (index === -1)\r\n\t\t\t\t? stacks.length - 1\r\n\t\t\t\t: index;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetRuler: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar scale = me.getIndexScale();\r\n\t\t\tvar stackCount = me.getStackCount();\r\n\t\t\tvar datasetIndex = me.index;\r\n\t\t\tvar isHorizontal = scale.isHorizontal();\r\n\t\t\tvar start = isHorizontal ? scale.left : scale.top;\r\n\t\t\tvar end = start + (isHorizontal ? scale.width : scale.height);\r\n\t\t\tvar pixels = [];\r\n\t\t\tvar i, ilen, min;\r\n\r\n\t\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\r\n\t\t\t\tpixels.push(scale.getPixelForValue(null, i, datasetIndex));\r\n\t\t\t}\r\n\r\n\t\t\tmin = helpers.isNullOrUndef(scale.options.barThickness)\r\n\t\t\t\t? computeMinSampleSize(scale, pixels)\r\n\t\t\t\t: -1;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tmin: min,\r\n\t\t\t\tpixels: pixels,\r\n\t\t\t\tstart: start,\r\n\t\t\t\tend: end,\r\n\t\t\t\tstackCount: stackCount,\r\n\t\t\t\tscale: scale\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Note: pixel values are not clamped to the scale area.\r\n\t\t * @private\r\n\t\t */\r\n\t\tcalculateBarValuePixels: function(datasetIndex, index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar scale = me.getValueScale();\r\n\t\t\tvar datasets = chart.data.datasets;\r\n\t\t\tvar value = scale.getRightValue(datasets[datasetIndex].data[index]);\r\n\t\t\tvar stacked = scale.options.stacked;\r\n\t\t\tvar stack = meta.stack;\r\n\t\t\tvar start = 0;\r\n\t\t\tvar i, imeta, ivalue, base, head, size;\r\n\r\n\t\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\r\n\t\t\t\tfor (i = 0; i < datasetIndex; ++i) {\r\n\t\t\t\t\timeta = chart.getDatasetMeta(i);\r\n\r\n\t\t\t\t\tif (imeta.bar &&\r\n\t\t\t\t\t\timeta.stack === stack &&\r\n\t\t\t\t\t\timeta.controller.getValueScaleId() === scale.id &&\r\n\t\t\t\t\t\tchart.isDatasetVisible(i)) {\r\n\r\n\t\t\t\t\t\tivalue = scale.getRightValue(datasets[i].data[index]);\r\n\t\t\t\t\t\tif ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\r\n\t\t\t\t\t\t\tstart += ivalue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tbase = scale.getPixelForValue(start);\r\n\t\t\thead = scale.getPixelForValue(start + value);\r\n\t\t\tsize = (head - base) / 2;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tsize: size,\r\n\t\t\t\tbase: base,\r\n\t\t\t\thead: head,\r\n\t\t\t\tcenter: head + size / 2\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tcalculateBarIndexPixels: function(datasetIndex, index, ruler) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = ruler.scale.options;\r\n\t\t\tvar range = options.barThickness === 'flex'\r\n\t\t\t\t? computeFlexCategoryTraits(index, ruler, options)\r\n\t\t\t\t: computeFitCategoryTraits(index, ruler, options);\r\n\r\n\t\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\r\n\t\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\r\n\t\t\tvar size = Math.min(\r\n\t\t\t\thelpers.valueOrDefault(options.maxBarThickness, Infinity),\r\n\t\t\t\trange.chunk * range.ratio);\r\n\r\n\t\t\treturn {\r\n\t\t\t\tbase: center - size / 2,\r\n\t\t\t\thead: center + size / 2,\r\n\t\t\t\tcenter: center,\r\n\t\t\t\tsize: size\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar scale = me.getValueScale();\r\n\t\t\tvar rects = me.getMeta().data;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar ilen = rects.length;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\thelpers.canvas.clipArea(chart.ctx, chart.chartArea);\r\n\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\tif (!isNaN(scale.getRightValue(dataset.data[i]))) {\r\n\t\t\t\t\trects[i].draw();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\thelpers.canvas.unclipArea(chart.ctx);\r\n\t\t},\r\n\t});\r\n\r\n\tChart.controllers.horizontalBar = Chart.controllers.bar.extend({\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetValueScaleId: function() {\r\n\t\t\treturn this.getMeta().xAxisID;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetIndexScaleId: function() {\r\n\t\t\treturn this.getMeta().yAxisID;\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],16:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('bubble', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\r\n\t\t\tposition: 'bottom',\r\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\r\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.bubble = Chart.DatasetController.extend({\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tdataElementType: elements.Point,\r\n\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar points = meta.data;\r\n\r\n\t\t\t// Update Points\r\n\t\t\thelpers.each(points, function(point, index) {\r\n\t\t\t\tme.updateElement(point, index, reset);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tupdateElement: function(point, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar options = me._resolveElementOptions(point, index);\r\n\t\t\tvar data = me.getDataset().data[index];\r\n\t\t\tvar dsIndex = me.index;\r\n\r\n\t\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\r\n\t\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\r\n\r\n\t\t\tpoint._xScale = xScale;\r\n\t\t\tpoint._yScale = yScale;\r\n\t\t\tpoint._options = options;\r\n\t\t\tpoint._datasetIndex = dsIndex;\r\n\t\t\tpoint._index = index;\r\n\t\t\tpoint._model = {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\thitRadius: options.hitRadius,\r\n\t\t\t\tpointStyle: options.pointStyle,\r\n\t\t\t\trotation: options.rotation,\r\n\t\t\t\tradius: reset ? 0 : options.radius,\r\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t};\r\n\r\n\t\t\tpoint.pivot();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @protected\r\n\t\t */\r\n\t\tsetHoverStyle: function(point) {\r\n\t\t\tvar model = point._model;\r\n\t\t\tvar options = point._options;\r\n\t\t\tpoint.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth,\r\n\t\t\t\tradius: model.radius\r\n\t\t\t};\r\n\t\t\tmodel.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor));\r\n\t\t\tmodel.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor));\r\n\t\t\tmodel.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth);\r\n\t\t\tmodel.radius = options.radius + options.hoverRadius;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\t_resolveElementOptions: function(point, index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar datasets = chart.data.datasets;\r\n\t\t\tvar dataset = datasets[me.index];\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar options = chart.options.elements.point;\r\n\t\t\tvar resolve = helpers.options.resolve;\r\n\t\t\tvar data = dataset.data[index];\r\n\t\t\tvar values = {};\r\n\t\t\tvar i, ilen, key;\r\n\r\n\t\t\t// Scriptable options\r\n\t\t\tvar context = {\r\n\t\t\t\tchart: chart,\r\n\t\t\t\tdataIndex: index,\r\n\t\t\t\tdataset: dataset,\r\n\t\t\t\tdatasetIndex: me.index\r\n\t\t\t};\r\n\r\n\t\t\tvar keys = [\r\n\t\t\t\t'backgroundColor',\r\n\t\t\t\t'borderColor',\r\n\t\t\t\t'borderWidth',\r\n\t\t\t\t'hoverBackgroundColor',\r\n\t\t\t\t'hoverBorderColor',\r\n\t\t\t\t'hoverBorderWidth',\r\n\t\t\t\t'hoverRadius',\r\n\t\t\t\t'hitRadius',\r\n\t\t\t\t'pointStyle',\r\n\t\t\t\t'rotation'\r\n\t\t\t];\r\n\r\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\t\tkey = keys[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdataset[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index);\r\n\t\t\t}\r\n\r\n\t\t\t// Custom radius resolution\r\n\t\t\tvalues.radius = resolve([\r\n\t\t\t\tcustom.radius,\r\n\t\t\t\tdata ? data.r : undefined,\r\n\t\t\t\tdataset.radius,\r\n\t\t\t\toptions.radius\r\n\t\t\t], context, index);\r\n\t\t\treturn values;\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],17:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('doughnut', {\r\n\tanimation: {\r\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\r\n\t\tanimateRotate: true,\r\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\r\n\t\tanimateScale: false\r\n\t},\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\tlegendCallback: function(chart) {\r\n\t\tvar text = [];\r\n\t\ttext.push('
        ');\r\n\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\r\n\t\t\t\ttext.push('
      • ');\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\ttext.push(labels[i]);\r\n\t\t\t\t}\r\n\t\t\t\ttext.push('
      • ');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttext.push('
      ');\r\n\t\treturn text.join('');\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar ds = data.datasets[0];\r\n\t\t\t\t\t\tvar arc = meta.data[i];\r\n\t\t\t\t\t\tvar custom = arc && arc.custom || {};\r\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\r\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\r\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\r\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: fill,\r\n\t\t\t\t\t\t\tstrokeStyle: stroke,\r\n\t\t\t\t\t\t\tlineWidth: bw,\r\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t// toggle visibility of index if exists\r\n\t\t\t\tif (meta.data[index]) {\r\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// The percentage of the chart that we cut out of the middle.\r\n\tcutoutPercentage: 50,\r\n\r\n\t// The rotation of the chart, where the first data arc begins.\r\n\trotation: Math.PI * -0.5,\r\n\r\n\t// The total circumference of the chart.\r\n\tcircumference: Math.PI * 2.0,\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\r\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\r\n\r\n\t\t\t\tif (helpers.isArray(dataLabel)) {\r\n\t\t\t\t\t// show value on first line of multiline label\r\n\t\t\t\t\t// need to clone because we are changing the value\r\n\t\t\t\t\tdataLabel = dataLabel.slice();\r\n\t\t\t\t\tdataLabel[0] += value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdataLabel += value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn dataLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\ndefaults._set('pie', helpers.clone(defaults.doughnut));\r\ndefaults._set('pie', {\r\n\tcutoutPercentage: 0\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\r\n\r\n\t\tdataElementType: elements.Arc,\r\n\r\n\t\tlinkScales: helpers.noop,\r\n\r\n\t\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\r\n\t\tgetRingIndex: function(datasetIndex) {\r\n\t\t\tvar ringIndex = 0;\r\n\r\n\t\t\tfor (var j = 0; j < datasetIndex; ++j) {\r\n\t\t\t\tif (this.chart.isDatasetVisible(j)) {\r\n\t\t\t\t\t++ringIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn ringIndex;\r\n\t\t},\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar chartArea = chart.chartArea;\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar arcOpts = opts.elements.arc;\r\n\t\t\tvar availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth;\r\n\t\t\tvar availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth;\r\n\t\t\tvar minSize = Math.min(availableWidth, availableHeight);\r\n\t\t\tvar offset = {x: 0, y: 0};\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar cutoutPercentage = opts.cutoutPercentage;\r\n\t\t\tvar circumference = opts.circumference;\r\n\r\n\t\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\r\n\t\t\tif (circumference < Math.PI * 2.0) {\r\n\t\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\r\n\t\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\r\n\t\t\t\tvar endAngle = startAngle + circumference;\r\n\t\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\r\n\t\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\r\n\t\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\r\n\t\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\r\n\t\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\r\n\t\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\r\n\t\t\t\tvar cutout = cutoutPercentage / 100.0;\r\n\t\t\t\tvar min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};\r\n\t\t\t\tvar max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};\r\n\t\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\r\n\t\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\r\n\t\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\r\n\t\t\t}\r\n\r\n\t\t\tchart.borderWidth = me.getMaxBorderWidth(meta.data);\r\n\t\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\r\n\t\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\r\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\t\t\tchart.offsetX = offset.x * chart.outerRadius;\r\n\t\t\tchart.offsetY = offset.y * chart.outerRadius;\r\n\r\n\t\t\tmeta.total = me.calculateTotal();\r\n\r\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\r\n\t\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0);\r\n\r\n\t\t\thelpers.each(meta.data, function(arc, index) {\r\n\t\t\t\tme.updateElement(arc, index, reset);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tupdateElement: function(arc, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar chartArea = chart.chartArea;\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar animationOpts = opts.animation;\r\n\t\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\r\n\t\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\r\n\t\t\tvar startAngle = opts.rotation; // non reset case handled later\r\n\t\t\tvar endAngle = opts.rotation; // non reset case handled later\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));\r\n\t\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\r\n\t\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\r\n\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\r\n\t\t\thelpers.extend(arc, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index,\r\n\r\n\t\t\t\t// Desired view properties\r\n\t\t\t\t_model: {\r\n\t\t\t\t\tx: centerX + chart.offsetX,\r\n\t\t\t\t\ty: centerY + chart.offsetY,\r\n\t\t\t\t\tstartAngle: startAngle,\r\n\t\t\t\t\tendAngle: endAngle,\r\n\t\t\t\t\tcircumference: circumference,\r\n\t\t\t\t\touterRadius: outerRadius,\r\n\t\t\t\t\tinnerRadius: innerRadius,\r\n\t\t\t\t\tlabel: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar model = arc._model;\r\n\r\n\t\t\t// Resets the visual styles\r\n\t\t\tvar custom = arc.custom || {};\r\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\r\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\r\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\r\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\r\n\r\n\t\t\t// Set correct angles if not resetting\r\n\t\t\tif (!reset || !animationOpts.animateRotate) {\r\n\t\t\t\tif (index === 0) {\r\n\t\t\t\t\tmodel.startAngle = opts.rotation;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmodel.endAngle = model.startAngle + model.circumference;\r\n\t\t\t}\r\n\r\n\t\t\tarc.pivot();\r\n\t\t},\r\n\r\n\t\tcalculateTotal: function() {\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar total = 0;\r\n\t\t\tvar value;\r\n\r\n\t\t\thelpers.each(meta.data, function(element, index) {\r\n\t\t\t\tvalue = dataset.data[index];\r\n\t\t\t\tif (!isNaN(value) && !element.hidden) {\r\n\t\t\t\t\ttotal += Math.abs(value);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t/* if (total === 0) {\r\n\t\t\t\ttotal = NaN;\r\n\t\t\t}*/\r\n\r\n\t\t\treturn total;\r\n\t\t},\r\n\r\n\t\tcalculateCircumference: function(value) {\r\n\t\t\tvar total = this.getMeta().total;\r\n\t\t\tif (total > 0 && !isNaN(value)) {\r\n\t\t\t\treturn (Math.PI * 2.0) * (Math.abs(value) / total);\r\n\t\t\t}\r\n\t\t\treturn 0;\r\n\t\t},\r\n\r\n\t\t// gets the max border or hover width to properly scale pie charts\r\n\t\tgetMaxBorderWidth: function(arcs) {\r\n\t\t\tvar max = 0;\r\n\t\t\tvar index = this.index;\r\n\t\t\tvar length = arcs.length;\r\n\t\t\tvar borderWidth;\r\n\t\t\tvar hoverWidth;\r\n\r\n\t\t\tfor (var i = 0; i < length; i++) {\r\n\t\t\t\tborderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0;\r\n\t\t\t\thoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\r\n\r\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\r\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\r\n\t\t\t}\r\n\t\t\treturn max;\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],18:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('line', {\r\n\tshowLines: true,\r\n\tspanGaps: false,\r\n\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tid: 'x-axis-0'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tfunction lineEnabled(dataset, options) {\r\n\t\treturn helpers.valueOrDefault(dataset.showLine, options.showLines);\r\n\t}\r\n\r\n\tChart.controllers.line = Chart.DatasetController.extend({\r\n\r\n\t\tdatasetElementType: elements.Line,\r\n\r\n\t\tdataElementType: elements.Point,\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar line = meta.dataset;\r\n\t\t\tvar points = meta.data || [];\r\n\t\t\tvar options = me.chart.options;\r\n\t\t\tvar lineElementOptions = options.elements.line;\r\n\t\t\tvar scale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar i, ilen, custom;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar showLine = lineEnabled(dataset, options);\r\n\r\n\t\t\t// Update Line\r\n\t\t\tif (showLine) {\r\n\t\t\t\tcustom = line.custom || {};\r\n\r\n\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\r\n\t\t\t\t\tdataset.lineTension = dataset.tension;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Utility\r\n\t\t\t\tline._scale = scale;\r\n\t\t\t\tline._datasetIndex = me.index;\r\n\t\t\t\t// Data\r\n\t\t\t\tline._children = points;\r\n\t\t\t\t// Model\r\n\t\t\t\tline._model = {\r\n\t\t\t\t\t// Appearance\r\n\t\t\t\t\t// The default behavior of lines is to break at null values, according\r\n\t\t\t\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\r\n\t\t\t\t\t// This option gives lines the ability to span gaps\r\n\t\t\t\t\tspanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\r\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\r\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\r\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\r\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\r\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\r\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\r\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\r\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\r\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\r\n\t\t\t\t\tsteppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\r\n\t\t\t\t\tcubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\r\n\t\t\t\t};\r\n\r\n\t\t\t\tline.pivot();\r\n\t\t\t}\r\n\r\n\t\t\t// Update Points\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t\t}\r\n\r\n\t\t\tif (showLine && line._model.tension !== 0) {\r\n\t\t\t\tme.updateBezierControlPoints();\r\n\t\t\t}\r\n\r\n\t\t\t// Now pivot the point for animation\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tpoints[i].pivot();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetPointBackgroundColor: function(point, index) {\r\n\t\t\tvar backgroundColor = this.chart.options.elements.point.backgroundColor;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (custom.backgroundColor) {\r\n\t\t\t\tbackgroundColor = custom.backgroundColor;\r\n\t\t\t} else if (dataset.pointBackgroundColor) {\r\n\t\t\t\tbackgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);\r\n\t\t\t} else if (dataset.backgroundColor) {\r\n\t\t\t\tbackgroundColor = dataset.backgroundColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn backgroundColor;\r\n\t\t},\r\n\r\n\t\tgetPointBorderColor: function(point, index) {\r\n\t\t\tvar borderColor = this.chart.options.elements.point.borderColor;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (custom.borderColor) {\r\n\t\t\t\tborderColor = custom.borderColor;\r\n\t\t\t} else if (dataset.pointBorderColor) {\r\n\t\t\t\tborderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);\r\n\t\t\t} else if (dataset.borderColor) {\r\n\t\t\t\tborderColor = dataset.borderColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn borderColor;\r\n\t\t},\r\n\r\n\t\tgetPointBorderWidth: function(point, index) {\r\n\t\t\tvar borderWidth = this.chart.options.elements.point.borderWidth;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (!isNaN(custom.borderWidth)) {\r\n\t\t\t\tborderWidth = custom.borderWidth;\r\n\t\t\t} else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) {\r\n\t\t\t\tborderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);\r\n\t\t\t} else if (!isNaN(dataset.borderWidth)) {\r\n\t\t\t\tborderWidth = dataset.borderWidth;\r\n\t\t\t}\r\n\r\n\t\t\treturn borderWidth;\r\n\t\t},\r\n\r\n\t\tgetPointRotation: function(point, index) {\r\n\t\t\tvar pointRotation = this.chart.options.elements.point.rotation;\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar custom = point.custom || {};\r\n\r\n\t\t\tif (!isNaN(custom.rotation)) {\r\n\t\t\t\tpointRotation = custom.rotation;\r\n\t\t\t} else if (!isNaN(dataset.pointRotation) || helpers.isArray(dataset.pointRotation)) {\r\n\t\t\t\tpointRotation = helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointRotation);\r\n\t\t\t}\r\n\t\t\treturn pointRotation;\r\n\t\t},\r\n\r\n\t\tupdateElement: function(point, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar datasetIndex = me.index;\r\n\t\t\tvar value = dataset.data[index];\r\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\t\tvar pointOptions = me.chart.options.elements.point;\r\n\t\t\tvar x, y;\r\n\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\r\n\t\t\t\tdataset.pointRadius = dataset.radius;\r\n\t\t\t}\r\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\r\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\r\n\t\t\t}\r\n\r\n\t\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\r\n\t\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\r\n\r\n\t\t\t// Utility\r\n\t\t\tpoint._xScale = xScale;\r\n\t\t\tpoint._yScale = yScale;\r\n\t\t\tpoint._datasetIndex = datasetIndex;\r\n\t\t\tpoint._index = index;\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\tpoint._model = {\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t\t// Appearance\r\n\t\t\t\tradius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),\r\n\t\t\t\tpointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),\r\n\t\t\t\trotation: me.getPointRotation(point, index),\r\n\t\t\t\tbackgroundColor: me.getPointBackgroundColor(point, index),\r\n\t\t\t\tborderColor: me.getPointBorderColor(point, index),\r\n\t\t\t\tborderWidth: me.getPointBorderWidth(point, index),\r\n\t\t\t\ttension: meta.dataset._model ? meta.dataset._model.tension : 0,\r\n\t\t\t\tsteppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,\r\n\t\t\t\t// Tooltip\r\n\t\t\t\thitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tcalculatePointY: function(value, index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\t\tvar sumPos = 0;\r\n\t\t\tvar sumNeg = 0;\r\n\t\t\tvar i, ds, dsMeta;\r\n\r\n\t\t\tif (yScale.options.stacked) {\r\n\t\t\t\tfor (i = 0; i < datasetIndex; i++) {\r\n\t\t\t\t\tds = chart.data.datasets[i];\r\n\t\t\t\t\tdsMeta = chart.getDatasetMeta(i);\r\n\t\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\r\n\t\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\r\n\t\t\t\t\t\tif (stackedRightValue < 0) {\r\n\t\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tsumPos += stackedRightValue || 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rightValue = Number(yScale.getRightValue(value));\r\n\t\t\t\tif (rightValue < 0) {\r\n\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\r\n\t\t\t\t}\r\n\t\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\r\n\t\t\t}\r\n\r\n\t\t\treturn yScale.getPixelForValue(value);\r\n\t\t},\r\n\r\n\t\tupdateBezierControlPoints: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar area = me.chart.chartArea;\r\n\t\t\tvar points = (meta.data || []);\r\n\t\t\tvar i, ilen, point, model, controlPoints;\r\n\r\n\t\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\t\tif (meta.dataset._model.spanGaps) {\r\n\t\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\t\treturn !pt._model.skip;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t\t}\r\n\r\n\t\t\tif (meta.dataset._model.cubicInterpolationMode === 'monotone') {\r\n\t\t\t\thelpers.splineCurveMonotone(points);\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\t\tpoint = points[i];\r\n\t\t\t\t\tmodel = point._model;\r\n\t\t\t\t\tcontrolPoints = helpers.splineCurve(\r\n\t\t\t\t\t\thelpers.previousItem(points, i)._model,\r\n\t\t\t\t\t\tmodel,\r\n\t\t\t\t\t\thelpers.nextItem(points, i)._model,\r\n\t\t\t\t\t\tmeta.dataset._model.tension\r\n\t\t\t\t\t);\r\n\t\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\r\n\t\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\r\n\t\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\r\n\t\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (me.chart.options.elements.line.capBezierPoints) {\r\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\r\n\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\r\n\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\r\n\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar points = meta.data || [];\r\n\t\t\tvar area = chart.chartArea;\r\n\t\t\tvar ilen = points.length;\r\n\t\t\tvar halfBorderWidth;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\tif (lineEnabled(me.getDataset(), chart.options)) {\r\n\t\t\t\thalfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2;\r\n\r\n\t\t\t\thelpers.canvas.clipArea(chart.ctx, {\r\n\t\t\t\t\tleft: area.left,\r\n\t\t\t\t\tright: area.right,\r\n\t\t\t\t\ttop: area.top - halfBorderWidth,\r\n\t\t\t\t\tbottom: area.bottom + halfBorderWidth\r\n\t\t\t\t});\r\n\r\n\t\t\t\tmeta.dataset.draw();\r\n\r\n\t\t\t\thelpers.canvas.unclipArea(chart.ctx);\r\n\t\t\t}\r\n\r\n\t\t\t// Draw the points\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\tpoints[i].draw(area);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tsetHoverStyle: function(element) {\r\n\t\t\t// Point\r\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\t\tvar index = element._index;\r\n\t\t\tvar custom = element.custom || {};\r\n\t\t\tvar model = element._model;\r\n\r\n\t\t\telement.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth,\r\n\t\t\t\tradius: model.radius\r\n\t\t\t};\r\n\r\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\r\n\t\t\tmodel.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\r\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\r\n\t\t\tmodel.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\r\n\t\t},\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],19:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('polarArea', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear',\r\n\t\tangleLines: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tgridLines: {\r\n\t\t\tcircular: true\r\n\t\t},\r\n\t\tpointLabels: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tbeginAtZero: true\r\n\t\t}\r\n\t},\r\n\r\n\t// Boolean - Whether to animate the rotation of the chart\r\n\tanimation: {\r\n\t\tanimateRotate: true,\r\n\t\tanimateScale: true\r\n\t},\r\n\r\n\tstartAngle: -0.5 * Math.PI,\r\n\tlegendCallback: function(chart) {\r\n\t\tvar text = [];\r\n\t\ttext.push('
        ');\r\n\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\r\n\t\t\t\ttext.push('
      • ');\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\ttext.push(labels[i]);\r\n\t\t\t\t}\r\n\t\t\t\ttext.push('
      • ');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttext.push('
      ');\r\n\t\treturn text.join('');\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar ds = data.datasets[0];\r\n\t\t\t\t\t\tvar arc = meta.data[i];\r\n\t\t\t\t\t\tvar custom = arc.custom || {};\r\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\r\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\r\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\r\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: fill,\r\n\t\t\t\t\t\t\tstrokeStyle: stroke,\r\n\t\t\t\t\t\t\tlineWidth: bw,\r\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.polarArea = Chart.DatasetController.extend({\r\n\r\n\t\tdataElementType: elements.Arc,\r\n\r\n\t\tlinkScales: helpers.noop,\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar start = me.chart.options.startAngle || 0;\r\n\t\t\tvar starts = me._starts = [];\r\n\t\t\tvar angles = me._angles = [];\r\n\t\t\tvar i, ilen, angle;\r\n\r\n\t\t\tme._updateRadius();\r\n\r\n\t\t\tmeta.count = me.countVisibleElements();\r\n\r\n\t\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\r\n\t\t\t\tstarts[i] = start;\r\n\t\t\t\tangle = me._computeAngle(i);\r\n\t\t\t\tangles[i] = angle;\r\n\t\t\t\tstart += angle;\r\n\t\t\t}\r\n\r\n\t\t\thelpers.each(meta.data, function(arc, index) {\r\n\t\t\t\tme.updateElement(arc, index, reset);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\t_updateRadius: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar chartArea = chart.chartArea;\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar arcOpts = opts.elements.arc;\r\n\t\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\r\n\r\n\t\t\tchart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\r\n\t\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\r\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\r\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\r\n\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\r\n\t\t},\r\n\r\n\t\tupdateElement: function(arc, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar opts = chart.options;\r\n\t\t\tvar animationOpts = opts.animation;\r\n\t\t\tvar scale = chart.scale;\r\n\t\t\tvar labels = chart.data.labels;\r\n\r\n\t\t\tvar centerX = scale.xCenter;\r\n\t\t\tvar centerY = scale.yCenter;\r\n\r\n\t\t\t// var negHalfPI = -0.5 * Math.PI;\r\n\t\t\tvar datasetStartAngle = opts.startAngle;\r\n\t\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\t\tvar startAngle = me._starts[index];\r\n\t\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\r\n\r\n\t\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\r\n\t\t\thelpers.extend(arc, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index,\r\n\t\t\t\t_scale: scale,\r\n\r\n\t\t\t\t// Desired view properties\r\n\t\t\t\t_model: {\r\n\t\t\t\t\tx: centerX,\r\n\t\t\t\t\ty: centerY,\r\n\t\t\t\t\tinnerRadius: 0,\r\n\t\t\t\t\touterRadius: reset ? resetRadius : distance,\r\n\t\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\r\n\t\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\r\n\t\t\t\t\tlabel: helpers.valueAtIndexOrDefault(labels, index, labels[index])\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Apply border and fill style\r\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\r\n\t\t\tvar custom = arc.custom || {};\r\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\tvar model = arc._model;\r\n\r\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\r\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\r\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\r\n\r\n\t\t\tarc.pivot();\r\n\t\t},\r\n\r\n\t\tcountVisibleElements: function() {\r\n\t\t\tvar dataset = this.getDataset();\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar count = 0;\r\n\r\n\t\t\thelpers.each(meta.data, function(element, index) {\r\n\t\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn count;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\t_computeAngle: function(index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar count = this.getMeta().count;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar meta = me.getMeta();\r\n\r\n\t\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\t// Scriptable options\r\n\t\t\tvar context = {\r\n\t\t\t\tchart: me.chart,\r\n\t\t\t\tdataIndex: index,\r\n\t\t\t\tdataset: dataset,\r\n\t\t\t\tdatasetIndex: me.index\r\n\t\t\t};\r\n\r\n\t\t\treturn helpers.options.resolve([\r\n\t\t\t\tme.chart.options.elements.arc.angle,\r\n\t\t\t\t(2 * Math.PI) / count\r\n\t\t\t], context, index);\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],20:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('radar', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear'\r\n\t},\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0 // no bezier in radar\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tChart.controllers.radar = Chart.DatasetController.extend({\r\n\r\n\t\tdatasetElementType: elements.Line,\r\n\r\n\t\tdataElementType: elements.Point,\r\n\r\n\t\tlinkScales: helpers.noop,\r\n\r\n\t\tupdate: function(reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar line = meta.dataset;\r\n\t\t\tvar points = meta.data;\r\n\t\t\tvar custom = line.custom || {};\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar lineElementOptions = me.chart.options.elements.line;\r\n\t\t\tvar scale = me.chart.scale;\r\n\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\r\n\t\t\t\tdataset.lineTension = dataset.tension;\r\n\t\t\t}\r\n\r\n\t\t\thelpers.extend(meta.dataset, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_scale: scale,\r\n\t\t\t\t// Data\r\n\t\t\t\t_children: points,\r\n\t\t\t\t_loop: true,\r\n\t\t\t\t// Model\r\n\t\t\t\t_model: {\r\n\t\t\t\t\t// Appearance\r\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\r\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\r\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\r\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\r\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\r\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\r\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\r\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\r\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tmeta.dataset.pivot();\r\n\r\n\t\t\t// Update Points\r\n\t\t\thelpers.each(points, function(point, index) {\r\n\t\t\t\tme.updateElement(point, index, reset);\r\n\t\t\t}, me);\r\n\r\n\t\t\t// Update bezier control points\r\n\t\t\tme.updateBezierControlPoints();\r\n\t\t},\r\n\t\tupdateElement: function(point, index, reset) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar scale = me.chart.scale;\r\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\r\n\t\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\r\n\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\r\n\t\t\t\tdataset.pointRadius = dataset.radius;\r\n\t\t\t}\r\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\r\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\r\n\t\t\t}\r\n\r\n\t\t\thelpers.extend(point, {\r\n\t\t\t\t// Utility\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index,\r\n\t\t\t\t_scale: scale,\r\n\r\n\t\t\t\t// Desired view properties\r\n\t\t\t\t_model: {\r\n\t\t\t\t\tx: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\r\n\t\t\t\t\ty: reset ? scale.yCenter : pointPosition.y,\r\n\r\n\t\t\t\t\t// Appearance\r\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),\r\n\t\t\t\t\tradius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\r\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\r\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\r\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\r\n\t\t\t\t\tpointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\r\n\t\t\t\t\trotation: custom.rotation ? custom.rotation : helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointElementOptions.rotation),\r\n\r\n\t\t\t\t\t// Tooltip\r\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tpoint._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\r\n\t\t},\r\n\t\tupdateBezierControlPoints: function() {\r\n\t\t\tvar chartArea = this.chart.chartArea;\r\n\t\t\tvar meta = this.getMeta();\r\n\r\n\t\t\thelpers.each(meta.data, function(point, index) {\r\n\t\t\t\tvar model = point._model;\r\n\t\t\t\tvar controlPoints = helpers.splineCurve(\r\n\t\t\t\t\thelpers.previousItem(meta.data, index, true)._model,\r\n\t\t\t\t\tmodel,\r\n\t\t\t\t\thelpers.nextItem(meta.data, index, true)._model,\r\n\t\t\t\t\tmodel.tension\r\n\t\t\t\t);\r\n\r\n\t\t\t\t// Prevent the bezier going outside of the bounds of the graph\r\n\t\t\t\tmodel.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\r\n\t\t\t\tmodel.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\r\n\r\n\t\t\t\tmodel.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\r\n\t\t\t\tmodel.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\r\n\r\n\t\t\t\t// Now pivot the point for animation\r\n\t\t\t\tpoint.pivot();\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tsetHoverStyle: function(point) {\r\n\t\t\t// Point\r\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\r\n\t\t\tvar custom = point.custom || {};\r\n\t\t\tvar index = point._index;\r\n\t\t\tvar model = point._model;\r\n\r\n\t\t\tpoint.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth,\r\n\t\t\t\tradius: model.radius\r\n\t\t\t};\r\n\r\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\r\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\r\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\r\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\r\n\t\t},\r\n\t});\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],21:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\n\r\ndefaults._set('scatter', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\r\n\t\t\ttype: 'linear', // scatter should not use a category axis\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\tid: 'y-axis-1',\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left'\r\n\t\t}]\r\n\t},\r\n\r\n\tshowLines: false,\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\r\n\t\t\t},\r\n\t\t\tlabel: function(item) {\r\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\t// Scatter charts use line controllers\r\n\tChart.controllers.scatter = Chart.controllers.line;\r\n\r\n};\r\n\r\n},{\"26\":26}],22:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar Element = require(27);\r\n\r\nvar exports = module.exports = Element.extend({\r\n\tchart: null, // the animation associated chart instance\r\n\tcurrentStep: 0, // the current animation step\r\n\tnumSteps: 60, // default number of steps\r\n\teasing: '', // the easing to use for this animation\r\n\trender: null, // render function used by the animation service\r\n\r\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\r\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\r\n});\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation instead\r\n * @prop Chart.Animation#animationObject\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports.prototype, 'animationObject', {\r\n\tget: function() {\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation#chart instead\r\n * @prop Chart.Animation#chartInstance\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports.prototype, 'chartInstance', {\r\n\tget: function() {\r\n\t\treturn this.chart;\r\n\t},\r\n\tset: function(value) {\r\n\t\tthis.chart = value;\r\n\t}\r\n});\r\n\r\n},{\"27\":27}],23:[function(require,module,exports){\r\n/* global window: false */\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\tanimation: {\r\n\t\tduration: 1000,\r\n\t\teasing: 'easeOutQuart',\r\n\t\tonProgress: helpers.noop,\r\n\t\tonComplete: helpers.noop\r\n\t}\r\n});\r\n\r\nmodule.exports = {\r\n\tframeDuration: 17,\r\n\tanimations: [],\r\n\tdropFrames: 0,\r\n\trequest: null,\r\n\r\n\t/**\r\n\t * @param {Chart} chart - The chart to animate.\r\n\t * @param {Chart.Animation} animation - The animation that we will animate.\r\n\t * @param {Number} duration - The animation duration in ms.\r\n\t * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\r\n\t */\r\n\taddAnimation: function(chart, animation, duration, lazy) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar i, ilen;\r\n\r\n\t\tanimation.chart = chart;\r\n\r\n\t\tif (!lazy) {\r\n\t\t\tchart.animating = true;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\t\tif (animations[i].chart === chart) {\r\n\t\t\t\tanimations[i] = animation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tanimations.push(animation);\r\n\r\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\r\n\t\tif (animations.length === 1) {\r\n\t\t\tthis.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\tcancelAnimation: function(chart) {\r\n\t\tvar index = helpers.findIndex(this.animations, function(animation) {\r\n\t\t\treturn animation.chart === chart;\r\n\t\t});\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tthis.animations.splice(index, 1);\r\n\t\t\tchart.animating = false;\r\n\t\t}\r\n\t},\r\n\r\n\trequestAnimationFrame: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.request === null) {\r\n\t\t\t// Skip animation frame requests until the active one is executed.\r\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\r\n\t\t\t// and 'mouseout' events will trigger multiple renders.\r\n\t\t\tme.request = helpers.requestAnimFrame.call(window, function() {\r\n\t\t\t\tme.request = null;\r\n\t\t\t\tme.startDigest();\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tstartDigest: function() {\r\n\t\tvar me = this;\r\n\t\tvar startTime = Date.now();\r\n\t\tvar framesToDrop = 0;\r\n\r\n\t\tif (me.dropFrames > 1) {\r\n\t\t\tframesToDrop = Math.floor(me.dropFrames);\r\n\t\t\tme.dropFrames = me.dropFrames % 1;\r\n\t\t}\r\n\r\n\t\tme.advance(1 + framesToDrop);\r\n\r\n\t\tvar endTime = Date.now();\r\n\r\n\t\tme.dropFrames += (endTime - startTime) / me.frameDuration;\r\n\r\n\t\t// Do we have more stuff to animate?\r\n\t\tif (me.animations.length > 0) {\r\n\t\t\tme.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tadvance: function(count) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar animation, chart;\r\n\t\tvar i = 0;\r\n\r\n\t\twhile (i < animations.length) {\r\n\t\t\tanimation = animations[i];\r\n\t\t\tchart = animation.chart;\r\n\r\n\t\t\tanimation.currentStep = (animation.currentStep || 0) + count;\r\n\t\t\tanimation.currentStep = Math.min(animation.currentStep, animation.numSteps);\r\n\r\n\t\t\thelpers.callback(animation.render, [chart, animation], chart);\r\n\t\t\thelpers.callback(animation.onAnimationProgress, [animation], chart);\r\n\r\n\t\t\tif (animation.currentStep >= animation.numSteps) {\r\n\t\t\t\thelpers.callback(animation.onAnimationComplete, [animation], chart);\r\n\t\t\t\tchart.animating = false;\r\n\t\t\t\tanimations.splice(i, 1);\r\n\t\t\t} else {\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"46\":46}],24:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar Animation = require(22);\r\nvar animations = require(23);\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar Interaction = require(29);\r\nvar layouts = require(31);\r\nvar platform = require(49);\r\nvar plugins = require(32);\r\nvar scaleService = require(34);\r\nvar Tooltip = require(36);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\t// Create a dictionary of chart types, to allow for extension of existing types\r\n\tChart.types = {};\r\n\r\n\t// Store a reference to each instance - allowing us to globally resize chart instances on window resize.\r\n\t// Destroy method on the chart will remove the instance of the chart from this reference.\r\n\tChart.instances = {};\r\n\r\n\t// Controllers available for dataset visualization eg. bar, line, slice, etc.\r\n\tChart.controllers = {};\r\n\r\n\t/**\r\n\t * Initializes the given config with global and chart default values.\r\n\t */\r\n\tfunction initConfig(config) {\r\n\t\tconfig = config || {};\r\n\r\n\t\t// Do NOT use configMerge() for the data object because this method merges arrays\r\n\t\t// and so would change references to labels and datasets, preventing data updates.\r\n\t\tvar data = config.data = config.data || {};\r\n\t\tdata.datasets = data.datasets || [];\r\n\t\tdata.labels = data.labels || [];\r\n\r\n\t\tconfig.options = helpers.configMerge(\r\n\t\t\tdefaults.global,\r\n\t\t\tdefaults[config.type],\r\n\t\t\tconfig.options || {});\r\n\r\n\t\treturn config;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the config of the chart\r\n\t * @param chart {Chart} chart to update the options for\r\n\t */\r\n\tfunction updateConfig(chart) {\r\n\t\tvar newOptions = chart.options;\r\n\r\n\t\thelpers.each(chart.scales, function(scale) {\r\n\t\t\tlayouts.removeBox(chart, scale);\r\n\t\t});\r\n\r\n\t\tnewOptions = helpers.configMerge(\r\n\t\t\tChart.defaults.global,\r\n\t\t\tChart.defaults[chart.config.type],\r\n\t\t\tnewOptions);\r\n\r\n\t\tchart.options = chart.config.options = newOptions;\r\n\t\tchart.ensureScalesHaveIDs();\r\n\t\tchart.buildOrUpdateScales();\r\n\t\t// Tooltip\r\n\t\tchart.tooltip._options = newOptions.tooltips;\r\n\t\tchart.tooltip.initialize();\r\n\t}\r\n\r\n\tfunction positionIsHorizontal(position) {\r\n\t\treturn position === 'top' || position === 'bottom';\r\n\t}\r\n\r\n\thelpers.extend(Chart.prototype, /** @lends Chart */ {\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tconstruct: function(item, config) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tconfig = initConfig(config);\r\n\r\n\t\t\tvar context = platform.acquireContext(item, config);\r\n\t\t\tvar canvas = context && context.canvas;\r\n\t\t\tvar height = canvas && canvas.height;\r\n\t\t\tvar width = canvas && canvas.width;\r\n\r\n\t\t\tme.id = helpers.uid();\r\n\t\t\tme.ctx = context;\r\n\t\t\tme.canvas = canvas;\r\n\t\t\tme.config = config;\r\n\t\t\tme.width = width;\r\n\t\t\tme.height = height;\r\n\t\t\tme.aspectRatio = height ? width / height : null;\r\n\t\t\tme.options = config.options;\r\n\t\t\tme._bufferedRender = false;\r\n\r\n\t\t\t/**\r\n\t\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\r\n\t\t\t * the \"instance\" still need to be defined since it might be called from plugins.\r\n\t\t\t * @prop Chart#chart\r\n\t\t\t * @deprecated since version 2.6.0\r\n\t\t\t * @todo remove at version 3\r\n\t\t\t * @private\r\n\t\t\t */\r\n\t\t\tme.chart = me;\r\n\t\t\tme.controller = me; // chart.chart.controller #inception\r\n\r\n\t\t\t// Add the chart instance to the global namespace\r\n\t\t\tChart.instances[me.id] = me;\r\n\r\n\t\t\t// Define alias to the config data: `chart.data === chart.config.data`\r\n\t\t\tObject.defineProperty(me, 'data', {\r\n\t\t\t\tget: function() {\r\n\t\t\t\t\treturn me.config.data;\r\n\t\t\t\t},\r\n\t\t\t\tset: function(value) {\r\n\t\t\t\t\tme.config.data = value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (!context || !canvas) {\r\n\t\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\r\n\t\t\t\t// the chart initialization but after setting basic chart / controller properties that\r\n\t\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\r\n\t\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tme.initialize();\r\n\t\t\tme.update();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tinitialize: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\t// Before init plugin notification\r\n\t\t\tplugins.notify(me, 'beforeInit');\r\n\r\n\t\t\thelpers.retinaScale(me, me.options.devicePixelRatio);\r\n\r\n\t\t\tme.bindEvents();\r\n\r\n\t\t\tif (me.options.responsive) {\r\n\t\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\r\n\t\t\t\tme.resize(true);\r\n\t\t\t}\r\n\r\n\t\t\t// Make sure scales have IDs and are built before we build any controllers.\r\n\t\t\tme.ensureScalesHaveIDs();\r\n\t\t\tme.buildOrUpdateScales();\r\n\t\t\tme.initToolTip();\r\n\r\n\t\t\t// After init plugin notification\r\n\t\t\tplugins.notify(me, 'afterInit');\r\n\r\n\t\t\treturn me;\r\n\t\t},\r\n\r\n\t\tclear: function() {\r\n\t\t\thelpers.canvas.clear(this);\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tstop: function() {\r\n\t\t\t// Stops any current animation loop occurring\r\n\t\t\tanimations.cancelAnimation(this);\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tresize: function(silent) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar canvas = me.canvas;\r\n\t\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\r\n\r\n\t\t\t// the canvas render width and height will be casted to integers so make sure that\r\n\t\t\t// the canvas display style uses the same integer values to avoid blurring effect.\r\n\r\n\t\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\r\n\t\t\tvar newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas)));\r\n\t\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas)));\r\n\r\n\t\t\tif (me.width === newWidth && me.height === newHeight) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tcanvas.width = me.width = newWidth;\r\n\t\t\tcanvas.height = me.height = newHeight;\r\n\t\t\tcanvas.style.width = newWidth + 'px';\r\n\t\t\tcanvas.style.height = newHeight + 'px';\r\n\r\n\t\t\thelpers.retinaScale(me, options.devicePixelRatio);\r\n\r\n\t\t\tif (!silent) {\r\n\t\t\t\t// Notify any plugins about the resize\r\n\t\t\t\tvar newSize = {width: newWidth, height: newHeight};\r\n\t\t\t\tplugins.notify(me, 'resize', [newSize]);\r\n\r\n\t\t\t\t// Notify of resize\r\n\t\t\t\tif (me.options.onResize) {\r\n\t\t\t\t\tme.options.onResize(me, newSize);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tme.stop();\r\n\t\t\t\tme.update({\r\n\t\t\t\t\tduration: me.options.responsiveAnimationDuration\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tensureScalesHaveIDs: function() {\r\n\t\t\tvar options = this.options;\r\n\t\t\tvar scalesOptions = options.scales || {};\r\n\t\t\tvar scaleOptions = options.scale;\r\n\r\n\t\t\thelpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\r\n\t\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\r\n\t\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\r\n\t\t\t});\r\n\r\n\t\t\tif (scaleOptions) {\r\n\t\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Builds a map of scale ID to scale object for future lookup.\r\n\t\t */\r\n\t\tbuildOrUpdateScales: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar scales = me.scales || {};\r\n\t\t\tvar items = [];\r\n\t\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\r\n\t\t\t\tobj[id] = false;\r\n\t\t\t\treturn obj;\r\n\t\t\t}, {});\r\n\r\n\t\t\tif (options.scales) {\r\n\t\t\t\titems = items.concat(\r\n\t\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\r\n\t\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\r\n\t\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif (options.scale) {\r\n\t\t\t\titems.push({\r\n\t\t\t\t\toptions: options.scale,\r\n\t\t\t\t\tdtype: 'radialLinear',\r\n\t\t\t\t\tisDefault: true,\r\n\t\t\t\t\tdposition: 'chartArea'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\thelpers.each(items, function(item) {\r\n\t\t\t\tvar scaleOptions = item.options;\r\n\t\t\t\tvar id = scaleOptions.id;\r\n\t\t\t\tvar scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype);\r\n\r\n\t\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\r\n\t\t\t\t\tscaleOptions.position = item.dposition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tupdated[id] = true;\r\n\t\t\t\tvar scale = null;\r\n\t\t\t\tif (id in scales && scales[id].type === scaleType) {\r\n\t\t\t\t\tscale = scales[id];\r\n\t\t\t\t\tscale.options = scaleOptions;\r\n\t\t\t\t\tscale.ctx = me.ctx;\r\n\t\t\t\t\tscale.chart = me;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar scaleClass = scaleService.getScaleConstructor(scaleType);\r\n\t\t\t\t\tif (!scaleClass) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscale = new scaleClass({\r\n\t\t\t\t\t\tid: id,\r\n\t\t\t\t\t\ttype: scaleType,\r\n\t\t\t\t\t\toptions: scaleOptions,\r\n\t\t\t\t\t\tctx: me.ctx,\r\n\t\t\t\t\t\tchart: me\r\n\t\t\t\t\t});\r\n\t\t\t\t\tscales[scale.id] = scale;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscale.mergeTicksOptions();\r\n\r\n\t\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\r\n\t\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\r\n\t\t\t\t// make the logic easier and remove some useless? custom code.\r\n\t\t\t\tif (item.isDefault) {\r\n\t\t\t\t\tme.scale = scale;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t// clear up discarded scales\r\n\t\t\thelpers.each(updated, function(hasUpdated, id) {\r\n\t\t\t\tif (!hasUpdated) {\r\n\t\t\t\t\tdelete scales[id];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tme.scales = scales;\r\n\r\n\t\t\tscaleService.addScalesToLayout(this);\r\n\t\t},\r\n\r\n\t\tbuildOrUpdateControllers: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar types = [];\r\n\t\t\tvar newControllers = [];\r\n\r\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\r\n\t\t\t\tvar type = dataset.type || me.config.type;\r\n\r\n\t\t\t\tif (meta.type && meta.type !== type) {\r\n\t\t\t\t\tme.destroyDatasetMeta(datasetIndex);\r\n\t\t\t\t\tmeta = me.getDatasetMeta(datasetIndex);\r\n\t\t\t\t}\r\n\t\t\t\tmeta.type = type;\r\n\r\n\t\t\t\ttypes.push(meta.type);\r\n\r\n\t\t\t\tif (meta.controller) {\r\n\t\t\t\t\tmeta.controller.updateIndex(datasetIndex);\r\n\t\t\t\t\tmeta.controller.linkScales();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar ControllerClass = Chart.controllers[meta.type];\r\n\t\t\t\t\tif (ControllerClass === undefined) {\r\n\t\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmeta.controller = new ControllerClass(me, datasetIndex);\r\n\t\t\t\t\tnewControllers.push(meta.controller);\r\n\t\t\t\t}\r\n\t\t\t}, me);\r\n\r\n\t\t\treturn newControllers;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Reset the elements of all datasets\r\n\t\t * @private\r\n\t\t */\r\n\t\tresetElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\r\n\t\t\t}, me);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t* Resets the chart back to it's state before the initial animation\r\n\t\t*/\r\n\t\treset: function() {\r\n\t\t\tthis.resetElements();\r\n\t\t\tthis.tooltip.initialize();\r\n\t\t},\r\n\r\n\t\tupdate: function(config) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t\t// backwards compatibility\r\n\t\t\t\tconfig = {\r\n\t\t\t\t\tduration: config,\r\n\t\t\t\t\tlazy: arguments[1]\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tupdateConfig(me);\r\n\r\n\t\t\t// plugins options references might have change, let's invalidate the cache\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t\t\tplugins._invalidate(me);\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeUpdate') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// In case the entire data object changed\r\n\t\t\tme.tooltip._data = me.data;\r\n\r\n\t\t\t// Make sure dataset controllers are updated and new controllers are reset\r\n\t\t\tvar newControllers = me.buildOrUpdateControllers();\r\n\r\n\t\t\t// Make sure all dataset controllers have correct meta data counts\r\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\r\n\t\t\t}, me);\r\n\r\n\t\t\tme.updateLayout();\r\n\r\n\t\t\t// Can only reset the new controllers after the scales have been updated\r\n\t\t\tif (me.options.animation && me.options.animation.duration) {\r\n\t\t\t\thelpers.each(newControllers, function(controller) {\r\n\t\t\t\t\tcontroller.reset();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tme.updateDatasets();\r\n\r\n\t\t\t// Need to reset tooltip in case it is displayed with elements that are removed\r\n\t\t\t// after update.\r\n\t\t\tme.tooltip.initialize();\r\n\r\n\t\t\t// Last active contains items that were previously in the tooltip.\r\n\t\t\t// When we reset the tooltip, we need to clear it\r\n\t\t\tme.lastActive = [];\r\n\r\n\t\t\t// Do this before render so that any plugins that need final scale updates can use it\r\n\t\t\tplugins.notify(me, 'afterUpdate');\r\n\r\n\t\t\tif (me._bufferedRender) {\r\n\t\t\t\tme._bufferedRequest = {\r\n\t\t\t\t\tduration: config.duration,\r\n\t\t\t\t\teasing: config.easing,\r\n\t\t\t\t\tlazy: config.lazy\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tme.render(config);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\r\n\t\t * hook, in which case, plugins will not be called on `afterLayout`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateLayout: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeLayout') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlayouts.update(this, this.width, this.height);\r\n\r\n\t\t\t/**\r\n\t\t\t * Provided for backward compatibility, use `afterLayout` instead.\r\n\t\t\t * @method IPlugin#afterScaleUpdate\r\n\t\t\t * @deprecated since version 2.5.0\r\n\t\t\t * @todo remove at version 3\r\n\t\t\t * @private\r\n\t\t\t */\r\n\t\t\tplugins.notify(me, 'afterScaleUpdate');\r\n\t\t\tplugins.notify(me, 'afterLayout');\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateDatasets: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetsUpdate') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tme.updateDataset(i);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetsUpdate');\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tupdateDataset: function(index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getDatasetMeta(index);\r\n\t\t\tvar args = {\r\n\t\t\t\tmeta: meta,\r\n\t\t\t\tindex: index\r\n\t\t\t};\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tmeta.controller.update();\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetUpdate', [args]);\r\n\t\t},\r\n\r\n\t\trender: function(config) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t\t// backwards compatibility\r\n\t\t\t\tconfig = {\r\n\t\t\t\t\tduration: config,\r\n\t\t\t\t\tlazy: arguments[1]\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar duration = config.duration;\r\n\t\t\tvar lazy = config.lazy;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeRender') === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar animationOptions = me.options.animation;\r\n\t\t\tvar onComplete = function(animation) {\r\n\t\t\t\tplugins.notify(me, 'afterRender');\r\n\t\t\t\thelpers.callback(animationOptions && animationOptions.onComplete, [animation], me);\r\n\t\t\t};\r\n\r\n\t\t\tif (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\r\n\t\t\t\tvar animation = new Animation({\r\n\t\t\t\t\tnumSteps: (duration || animationOptions.duration) / 16.66, // 60 fps\r\n\t\t\t\t\teasing: config.easing || animationOptions.easing,\r\n\r\n\t\t\t\t\trender: function(chart, animationObject) {\r\n\t\t\t\t\t\tvar easingFunction = helpers.easing.effects[animationObject.easing];\r\n\t\t\t\t\t\tvar currentStep = animationObject.currentStep;\r\n\t\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\r\n\r\n\t\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tonAnimationProgress: animationOptions.onProgress,\r\n\t\t\t\t\tonAnimationComplete: onComplete\r\n\t\t\t\t});\r\n\r\n\t\t\t\tanimations.addAnimation(me, animation, duration, lazy);\r\n\t\t\t} else {\r\n\t\t\t\tme.draw();\r\n\r\n\t\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\r\n\t\t\t\tonComplete(new Animation({numSteps: 0, chart: me}));\r\n\t\t\t}\r\n\r\n\t\t\treturn me;\r\n\t\t},\r\n\r\n\t\tdraw: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tme.clear();\r\n\r\n\t\t\tif (helpers.isNullOrUndef(easingValue)) {\r\n\t\t\t\teasingValue = 1;\r\n\t\t\t}\r\n\r\n\t\t\tme.transition(easingValue);\r\n\r\n\t\t\tif (me.width <= 0 || me.height <= 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Draw all the scales\r\n\t\t\thelpers.each(me.boxes, function(box) {\r\n\t\t\t\tbox.draw(me.chartArea);\r\n\t\t\t}, me);\r\n\r\n\t\t\tif (me.scale) {\r\n\t\t\t\tme.scale.draw();\r\n\t\t\t}\r\n\r\n\t\t\tme.drawDatasets(easingValue);\r\n\t\t\tme._drawTooltip(easingValue);\r\n\r\n\t\t\tplugins.notify(me, 'afterDraw', [easingValue]);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\ttransition: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tif (me.isDatasetVisible(i)) {\r\n\t\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tme.tooltip.transition(easingValue);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tdrawDatasets: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Draw datasets reversed to support proper line stacking\r\n\t\t\tfor (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {\r\n\t\t\t\tif (me.isDatasetVisible(i)) {\r\n\t\t\t\t\tme.drawDataset(i, easingValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetsDraw', [easingValue]);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\r\n\t\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\r\n\t\t * @private\r\n\t\t */\r\n\t\tdrawDataset: function(index, easingValue) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getDatasetMeta(index);\r\n\t\t\tvar args = {\r\n\t\t\t\tmeta: meta,\r\n\t\t\t\tindex: index,\r\n\t\t\t\teasingValue: easingValue\r\n\t\t\t};\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tmeta.controller.draw(easingValue);\r\n\r\n\t\t\tplugins.notify(me, 'afterDatasetDraw', [args]);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\r\n\t\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\r\n\t\t * @private\r\n\t\t */\r\n\t\t_drawTooltip: function(easingValue) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar tooltip = me.tooltip;\r\n\t\t\tvar args = {\r\n\t\t\t\ttooltip: tooltip,\r\n\t\t\t\teasingValue: easingValue\r\n\t\t\t};\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\ttooltip.draw();\r\n\r\n\t\t\tplugins.notify(me, 'afterTooltipDraw', [args]);\r\n\t\t},\r\n\r\n\t\t// Get the single element that was clicked on\r\n\t\t// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\r\n\t\tgetElementAtEvent: function(e) {\r\n\t\t\treturn Interaction.modes.single(this, e);\r\n\t\t},\r\n\r\n\t\tgetElementsAtEvent: function(e) {\r\n\t\t\treturn Interaction.modes.label(this, e, {intersect: true});\r\n\t\t},\r\n\r\n\t\tgetElementsAtXAxis: function(e) {\r\n\t\t\treturn Interaction.modes['x-axis'](this, e, {intersect: true});\r\n\t\t},\r\n\r\n\t\tgetElementsAtEventForMode: function(e, mode, options) {\r\n\t\t\tvar method = Interaction.modes[mode];\r\n\t\t\tif (typeof method === 'function') {\r\n\t\t\t\treturn method(this, e, options);\r\n\t\t\t}\r\n\r\n\t\t\treturn [];\r\n\t\t},\r\n\r\n\t\tgetDatasetAtEvent: function(e) {\r\n\t\t\treturn Interaction.modes.dataset(this, e, {intersect: true});\r\n\t\t},\r\n\r\n\t\tgetDatasetMeta: function(datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar dataset = me.data.datasets[datasetIndex];\r\n\t\t\tif (!dataset._meta) {\r\n\t\t\t\tdataset._meta = {};\r\n\t\t\t}\r\n\r\n\t\t\tvar meta = dataset._meta[me.id];\r\n\t\t\tif (!meta) {\r\n\t\t\t\tmeta = dataset._meta[me.id] = {\r\n\t\t\t\t\ttype: null,\r\n\t\t\t\t\tdata: [],\r\n\t\t\t\t\tdataset: null,\r\n\t\t\t\t\tcontroller: null,\r\n\t\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\r\n\t\t\t\t\txAxisID: null,\r\n\t\t\t\t\tyAxisID: null\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn meta;\r\n\t\t},\r\n\r\n\t\tgetVisibleDatasetCount: function() {\r\n\t\t\tvar count = 0;\r\n\t\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tif (this.isDatasetVisible(i)) {\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn count;\r\n\t\t},\r\n\r\n\t\tisDatasetVisible: function(datasetIndex) {\r\n\t\t\tvar meta = this.getDatasetMeta(datasetIndex);\r\n\r\n\t\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\r\n\t\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\r\n\t\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\r\n\t\t},\r\n\r\n\t\tgenerateLegend: function() {\r\n\t\t\treturn this.options.legendCallback(this);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tdestroyDatasetMeta: function(datasetIndex) {\r\n\t\t\tvar id = this.id;\r\n\t\t\tvar dataset = this.data.datasets[datasetIndex];\r\n\t\t\tvar meta = dataset._meta && dataset._meta[id];\r\n\r\n\t\t\tif (meta) {\r\n\t\t\t\tmeta.controller.destroy();\r\n\t\t\t\tdelete dataset._meta[id];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdestroy: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar canvas = me.canvas;\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tme.stop();\r\n\r\n\t\t\t// dataset controllers need to cleanup associated data\r\n\t\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tme.destroyDatasetMeta(i);\r\n\t\t\t}\r\n\r\n\t\t\tif (canvas) {\r\n\t\t\t\tme.unbindEvents();\r\n\t\t\t\thelpers.canvas.clear(me);\r\n\t\t\t\tplatform.releaseContext(me.ctx);\r\n\t\t\t\tme.canvas = null;\r\n\t\t\t\tme.ctx = null;\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'destroy');\r\n\r\n\t\t\tdelete Chart.instances[me.id];\r\n\t\t},\r\n\r\n\t\ttoBase64Image: function() {\r\n\t\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\r\n\t\t},\r\n\r\n\t\tinitToolTip: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tme.tooltip = new Tooltip({\r\n\t\t\t\t_chart: me,\r\n\t\t\t\t_chartInstance: me, // deprecated, backward compatibility\r\n\t\t\t\t_data: me.data,\r\n\t\t\t\t_options: me.options.tooltips\r\n\t\t\t}, me);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tbindEvents: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar listeners = me._listeners = {};\r\n\t\t\tvar listener = function() {\r\n\t\t\t\tme.eventHandler.apply(me, arguments);\r\n\t\t\t};\r\n\r\n\t\t\thelpers.each(me.options.events, function(type) {\r\n\t\t\t\tplatform.addEventListener(me, type, listener);\r\n\t\t\t\tlisteners[type] = listener;\r\n\t\t\t});\r\n\r\n\t\t\t// Elements used to detect size change should not be injected for non responsive charts.\r\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/2210\r\n\t\t\tif (me.options.responsive) {\r\n\t\t\t\tlistener = function() {\r\n\t\t\t\t\tme.resize();\r\n\t\t\t\t};\r\n\r\n\t\t\t\tplatform.addEventListener(me, 'resize', listener);\r\n\t\t\t\tlisteners.resize = listener;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tunbindEvents: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar listeners = me._listeners;\r\n\t\t\tif (!listeners) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tdelete me._listeners;\r\n\t\t\thelpers.each(listeners, function(listener, type) {\r\n\t\t\t\tplatform.removeEventListener(me, type, listener);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tupdateHoverStyle: function(elements, mode, enabled) {\r\n\t\t\tvar method = enabled ? 'setHoverStyle' : 'removeHoverStyle';\r\n\t\t\tvar element, i, ilen;\r\n\r\n\t\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\r\n\t\t\t\telement = elements[i];\r\n\t\t\t\tif (element) {\r\n\t\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\teventHandler: function(e) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar tooltip = me.tooltip;\r\n\r\n\t\t\tif (plugins.notify(me, 'beforeEvent', [e]) === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Buffer any update calls so that renders do not occur\r\n\t\t\tme._bufferedRender = true;\r\n\t\t\tme._bufferedRequest = null;\r\n\r\n\t\t\tvar changed = me.handleEvent(e);\r\n\t\t\t// for smooth tooltip animations issue #4989\r\n\t\t\t// the tooltip should be the source of change\r\n\t\t\t// Animation check workaround:\r\n\t\t\t// tooltip._start will be null when tooltip isn't animating\r\n\t\t\tif (tooltip) {\r\n\t\t\t\tchanged = tooltip._start\r\n\t\t\t\t\t? tooltip.handleEvent(e)\r\n\t\t\t\t\t: changed | tooltip.handleEvent(e);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.notify(me, 'afterEvent', [e]);\r\n\r\n\t\t\tvar bufferedRequest = me._bufferedRequest;\r\n\t\t\tif (bufferedRequest) {\r\n\t\t\t\t// If we have an update that was triggered, we need to do a normal render\r\n\t\t\t\tme.render(bufferedRequest);\r\n\t\t\t} else if (changed && !me.animating) {\r\n\t\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\r\n\t\t\t\tme.stop();\r\n\r\n\t\t\t\t// We only need to render at this point. Updating will cause scales to be\r\n\t\t\t\t// recomputed generating flicker & using more memory than necessary.\r\n\t\t\t\tme.render({\r\n\t\t\t\t\tduration: me.options.hover.animationDuration,\r\n\t\t\t\t\tlazy: true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tme._bufferedRender = false;\r\n\t\t\tme._bufferedRequest = null;\r\n\r\n\t\t\treturn me;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Handle an event\r\n\t\t * @private\r\n\t\t * @param {IEvent} event the event to handle\r\n\t\t * @return {Boolean} true if the chart needs to re-render\r\n\t\t */\r\n\t\thandleEvent: function(e) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options || {};\r\n\t\t\tvar hoverOptions = options.hover;\r\n\t\t\tvar changed = false;\r\n\r\n\t\t\tme.lastActive = me.lastActive || [];\r\n\r\n\t\t\t// Find Active Elements for hover and tooltips\r\n\t\t\tif (e.type === 'mouseout') {\r\n\t\t\t\tme.active = [];\r\n\t\t\t} else {\r\n\t\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\r\n\t\t\t}\r\n\r\n\t\t\t// Invoke onHover hook\r\n\t\t\t// Need to call with native event here to not break backwards compatibility\r\n\t\t\thelpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\r\n\r\n\t\t\tif (e.type === 'mouseup' || e.type === 'click') {\r\n\t\t\t\tif (options.onClick) {\r\n\t\t\t\t\t// Use e.native here for backwards compatibility\r\n\t\t\t\t\toptions.onClick.call(me, e.native, me.active);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Remove styling for last active (even if it may still be active)\r\n\t\t\tif (me.lastActive.length) {\r\n\t\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\r\n\t\t\t}\r\n\r\n\t\t\t// Built in hover styling\r\n\t\t\tif (me.active.length && hoverOptions.mode) {\r\n\t\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\r\n\t\t\t}\r\n\r\n\t\t\tchanged = !helpers.arrayEquals(me.active, me.lastActive);\r\n\r\n\t\t\t// Remember Last Actives\r\n\t\t\tme.lastActive = me.active;\r\n\r\n\t\t\treturn changed;\r\n\t\t}\r\n\t});\r\n\r\n\t/**\r\n\t * Provided for backward compatibility, use Chart instead.\r\n\t * @class Chart.Controller\r\n\t * @deprecated since version 2.6.0\r\n\t * @todo remove at version 3\r\n\t * @private\r\n\t */\r\n\tChart.Controller = Chart;\r\n};\r\n\r\n},{\"22\":22,\"23\":23,\"26\":26,\"29\":29,\"31\":31,\"32\":32,\"34\":34,\"36\":36,\"46\":46,\"49\":49}],25:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\r\n\r\n\t/**\r\n\t * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n\t * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n\t * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n\t */\r\n\tfunction listenArrayEvents(array, listener) {\r\n\t\tif (array._chartjs) {\r\n\t\t\tarray._chartjs.listeners.push(listener);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tObject.defineProperty(array, '_chartjs', {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: {\r\n\t\t\t\tlisteners: [listener]\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tarrayEvents.forEach(function(key) {\r\n\t\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\t\tvar base = array[key];\r\n\r\n\t\t\tObject.defineProperty(array, key, {\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tenumerable: false,\r\n\t\t\t\tvalue: function() {\r\n\t\t\t\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\t\t\t\tvar res = base.apply(this, args);\r\n\r\n\t\t\t\t\thelpers.each(array._chartjs.listeners, function(object) {\r\n\t\t\t\t\t\tif (typeof object[method] === 'function') {\r\n\t\t\t\t\t\t\tobject[method].apply(object, args);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn res;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Removes the given array event listener and cleanup extra attached properties (such as\r\n\t * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n\t */\r\n\tfunction unlistenArrayEvents(array, listener) {\r\n\t\tvar stub = array._chartjs;\r\n\t\tif (!stub) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar listeners = stub.listeners;\r\n\t\tvar index = listeners.indexOf(listener);\r\n\t\tif (index !== -1) {\r\n\t\t\tlisteners.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tif (listeners.length > 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tarrayEvents.forEach(function(key) {\r\n\t\t\tdelete array[key];\r\n\t\t});\r\n\r\n\t\tdelete array._chartjs;\r\n\t}\r\n\r\n\t// Base class for all dataset controllers (line, bar, etc)\r\n\tChart.DatasetController = function(chart, datasetIndex) {\r\n\t\tthis.initialize(chart, datasetIndex);\r\n\t};\r\n\r\n\thelpers.extend(Chart.DatasetController.prototype, {\r\n\r\n\t\t/**\r\n\t\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n\t\t * @type {Chart.core.element}\r\n\t\t */\r\n\t\tdatasetElementType: null,\r\n\r\n\t\t/**\r\n\t\t * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n\t\t * @type {Chart.core.element}\r\n\t\t */\r\n\t\tdataElementType: null,\r\n\r\n\t\tinitialize: function(chart, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tme.chart = chart;\r\n\t\t\tme.index = datasetIndex;\r\n\t\t\tme.linkScales();\r\n\t\t\tme.addElements();\r\n\t\t},\r\n\r\n\t\tupdateIndex: function(datasetIndex) {\r\n\t\t\tthis.index = datasetIndex;\r\n\t\t},\r\n\r\n\t\tlinkScales: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar dataset = me.getDataset();\r\n\r\n\t\t\tif (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) {\r\n\t\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\r\n\t\t\t}\r\n\t\t\tif (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) {\r\n\t\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetDataset: function() {\r\n\t\t\treturn this.chart.data.datasets[this.index];\r\n\t\t},\r\n\r\n\t\tgetMeta: function() {\r\n\t\t\treturn this.chart.getDatasetMeta(this.index);\r\n\t\t},\r\n\r\n\t\tgetScaleForId: function(scaleID) {\r\n\t\t\treturn this.chart.scales[scaleID];\r\n\t\t},\r\n\r\n\t\treset: function() {\r\n\t\t\tthis.update(true);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tdestroy: function() {\r\n\t\t\tif (this._data) {\r\n\t\t\t\tunlistenArrayEvents(this._data, this);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tcreateMetaDataset: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar type = me.datasetElementType;\r\n\t\t\treturn type && new type({\r\n\t\t\t\t_chart: me.chart,\r\n\t\t\t\t_datasetIndex: me.index\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tcreateMetaData: function(index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar type = me.dataElementType;\r\n\t\t\treturn type && new type({\r\n\t\t\t\t_chart: me.chart,\r\n\t\t\t\t_datasetIndex: me.index,\r\n\t\t\t\t_index: index\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\taddElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar data = me.getDataset().data || [];\r\n\t\t\tvar metaData = meta.data;\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\r\n\t\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\r\n\t\t\t}\r\n\r\n\t\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\r\n\t\t},\r\n\r\n\t\taddElementAndReset: function(index) {\r\n\t\t\tvar element = this.createMetaData(index);\r\n\t\t\tthis.getMeta().data.splice(index, 0, element);\r\n\t\t\tthis.updateElement(element, index, true);\r\n\t\t},\r\n\r\n\t\tbuildOrUpdateElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar dataset = me.getDataset();\r\n\t\t\tvar data = dataset.data || (dataset.data = []);\r\n\r\n\t\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\r\n\t\t\t// real-time charts), we need to monitor these data modifications and synchronize\r\n\t\t\t// the internal meta data accordingly.\r\n\t\t\tif (me._data !== data) {\r\n\t\t\t\tif (me._data) {\r\n\t\t\t\t\t// This case happens when the user replaced the data array instance.\r\n\t\t\t\t\tunlistenArrayEvents(me._data, me);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlistenArrayEvents(data, me);\r\n\t\t\t\tme._data = data;\r\n\t\t\t}\r\n\r\n\t\t\t// Re-sync meta data in case the user replaced the data array or if we missed\r\n\t\t\t// any updates and so make sure that we handle number of datapoints changing.\r\n\t\t\tme.resyncElements();\r\n\t\t},\r\n\r\n\t\tupdate: helpers.noop,\r\n\r\n\t\ttransition: function(easingValue) {\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar elements = meta.data || [];\r\n\t\t\tvar ilen = elements.length;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\telements[i].transition(easingValue);\r\n\t\t\t}\r\n\r\n\t\t\tif (meta.dataset) {\r\n\t\t\t\tmeta.dataset.transition(easingValue);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar meta = this.getMeta();\r\n\t\t\tvar elements = meta.data || [];\r\n\t\t\tvar ilen = elements.length;\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\tif (meta.dataset) {\r\n\t\t\t\tmeta.dataset.draw();\r\n\t\t\t}\r\n\r\n\t\t\tfor (; i < ilen; ++i) {\r\n\t\t\t\telements[i].draw();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tremoveHoverStyle: function(element) {\r\n\t\t\thelpers.merge(element._model, element.$previousStyle || {});\r\n\t\t\tdelete element.$previousStyle;\r\n\t\t},\r\n\r\n\t\tsetHoverStyle: function(element) {\r\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\t\tvar index = element._index;\r\n\t\t\tvar custom = element.custom || {};\r\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\r\n\t\t\tvar getHoverColor = helpers.getHoverColor;\r\n\t\t\tvar model = element._model;\r\n\r\n\t\t\telement.$previousStyle = {\r\n\t\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\t\tborderColor: model.borderColor,\r\n\t\t\t\tborderWidth: model.borderWidth\r\n\t\t\t};\r\n\r\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));\r\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));\r\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tresyncElements: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar meta = me.getMeta();\r\n\t\t\tvar data = me.getDataset().data;\r\n\t\t\tvar numMeta = meta.data.length;\r\n\t\t\tvar numData = data.length;\r\n\r\n\t\t\tif (numData < numMeta) {\r\n\t\t\t\tmeta.data.splice(numData, numMeta - numData);\r\n\t\t\t} else if (numData > numMeta) {\r\n\t\t\t\tme.insertElements(numMeta, numData - numMeta);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tinsertElements: function(start, count) {\r\n\t\t\tfor (var i = 0; i < count; ++i) {\r\n\t\t\t\tthis.addElementAndReset(start + i);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataPush: function() {\r\n\t\t\tthis.insertElements(this.getDataset().data.length - 1, arguments.length);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataPop: function() {\r\n\t\t\tthis.getMeta().data.pop();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataShift: function() {\r\n\t\t\tthis.getMeta().data.shift();\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataSplice: function(start, count) {\r\n\t\t\tthis.getMeta().data.splice(start, count);\r\n\t\t\tthis.insertElements(start, arguments.length - 2);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tonDataUnshift: function() {\r\n\t\t\tthis.insertElements(0, arguments.length);\r\n\t\t}\r\n\t});\r\n\r\n\tChart.DatasetController.extend = helpers.inherits;\r\n};\r\n\r\n},{\"46\":46}],26:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nmodule.exports = {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_set: function(scope, values) {\r\n\t\treturn helpers.merge(this[scope] || (this[scope] = {}), values);\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],27:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar color = require(3);\r\nvar helpers = require(46);\r\n\r\nfunction interpolate(start, view, model, ease) {\r\n\tvar keys = Object.keys(model);\r\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\r\n\r\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\tkey = keys[i];\r\n\r\n\t\ttarget = model[key];\r\n\r\n\t\t// if a value is added to the model after pivot() has been called, the view\r\n\t\t// doesn't contain it, so let's initialize the view to the target value.\r\n\t\tif (!view.hasOwnProperty(key)) {\r\n\t\t\tview[key] = target;\r\n\t\t}\r\n\r\n\t\tactual = view[key];\r\n\r\n\t\tif (actual === target || key[0] === '_') {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!start.hasOwnProperty(key)) {\r\n\t\t\tstart[key] = actual;\r\n\t\t}\r\n\r\n\t\torigin = start[key];\r\n\r\n\t\ttype = typeof target;\r\n\r\n\t\tif (type === typeof origin) {\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tc0 = color(origin);\r\n\t\t\t\tif (c0.valid) {\r\n\t\t\t\t\tc1 = color(target);\r\n\t\t\t\t\tif (c1.valid) {\r\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (type === 'number' && isFinite(origin) && isFinite(target)) {\r\n\t\t\t\tview[key] = origin + (target - origin) * ease;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tview[key] = target;\r\n\t}\r\n}\r\n\r\nvar Element = function(configuration) {\r\n\thelpers.extend(this, configuration);\r\n\tthis.initialize.apply(this, arguments);\r\n};\r\n\r\nhelpers.extend(Element.prototype, {\r\n\r\n\tinitialize: function() {\r\n\t\tthis.hidden = false;\r\n\t},\r\n\r\n\tpivot: function() {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\tme._view = helpers.clone(me._model);\r\n\t\t}\r\n\t\tme._start = {};\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttransition: function(ease) {\r\n\t\tvar me = this;\r\n\t\tvar model = me._model;\r\n\t\tvar start = me._start;\r\n\t\tvar view = me._view;\r\n\r\n\t\t// No animation -> No Transition\r\n\t\tif (!model || ease === 1) {\r\n\t\t\tme._view = model;\r\n\t\t\tme._start = null;\r\n\t\t\treturn me;\r\n\t\t}\r\n\r\n\t\tif (!view) {\r\n\t\t\tview = me._view = {};\r\n\t\t}\r\n\r\n\t\tif (!start) {\r\n\t\t\tstart = me._start = {};\r\n\t\t}\r\n\r\n\t\tinterpolate(start, view, model, ease);\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\treturn {\r\n\t\t\tx: this._model.x,\r\n\t\t\ty: this._model.y\r\n\t\t};\r\n\t},\r\n\r\n\thasValue: function() {\r\n\t\treturn helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);\r\n\t}\r\n});\r\n\r\nElement.extend = helpers.inherits;\r\n\r\nmodule.exports = Element;\r\n\r\n},{\"3\":3,\"46\":46}],28:[function(require,module,exports){\r\n/* global window: false */\r\n/* global document: false */\r\n'use strict';\r\n\r\nvar color = require(3);\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar scaleService = require(34);\r\n\r\nmodule.exports = function() {\r\n\r\n\t// -- Basic js utility methods\r\n\r\n\thelpers.configMerge = function(/* objects ... */) {\r\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, target, source, options) {\r\n\t\t\t\tvar tval = target[key] || {};\r\n\t\t\t\tvar sval = source[key];\r\n\r\n\t\t\t\tif (key === 'scales') {\r\n\t\t\t\t\t// scale config merging is complex. Add our own function here for that\r\n\t\t\t\t\ttarget[key] = helpers.scaleMerge(tval, sval);\r\n\t\t\t\t} else if (key === 'scale') {\r\n\t\t\t\t\t// used in polar area & radar charts since there is only one scale\r\n\t\t\t\t\ttarget[key] = helpers.merge(tval, [scaleService.getScaleDefaults(sval.type), sval]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\thelpers._merger(key, target, source, options);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\thelpers.scaleMerge = function(/* objects ... */) {\r\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, target, source, options) {\r\n\t\t\t\tif (key === 'xAxes' || key === 'yAxes') {\r\n\t\t\t\t\tvar slen = source[key].length;\r\n\t\t\t\t\tvar i, type, scale;\r\n\r\n\t\t\t\t\tif (!target[key]) {\r\n\t\t\t\t\t\ttarget[key] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (i = 0; i < slen; ++i) {\r\n\t\t\t\t\t\tscale = source[key][i];\r\n\t\t\t\t\t\ttype = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear');\r\n\r\n\t\t\t\t\t\tif (i >= target[key].length) {\r\n\t\t\t\t\t\t\ttarget[key].push({});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\r\n\t\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\r\n\t\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\r\n\t\t\t\t\t\t\thelpers.merge(target[key][i], [scaleService.getScaleDefaults(type), scale]);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// scales type are the same\r\n\t\t\t\t\t\t\thelpers.merge(target[key][i], scale);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\thelpers._merger(key, target, source, options);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\thelpers.where = function(collection, filterCallback) {\r\n\t\tif (helpers.isArray(collection) && Array.prototype.filter) {\r\n\t\t\treturn collection.filter(filterCallback);\r\n\t\t}\r\n\t\tvar filtered = [];\r\n\r\n\t\thelpers.each(collection, function(item) {\r\n\t\t\tif (filterCallback(item)) {\r\n\t\t\t\tfiltered.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filtered;\r\n\t};\r\n\thelpers.findIndex = Array.prototype.findIndex ?\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\treturn array.findIndex(callback, scope);\r\n\t\t} :\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\tscope = scope === undefined ? array : scope;\r\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\r\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn -1;\r\n\t\t};\r\n\thelpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to start of the array\r\n\t\tif (helpers.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = -1;\r\n\t\t}\r\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to end of the array\r\n\t\tif (helpers.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = arrayToSearch.length;\r\n\t\t}\r\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// -- Math methods\r\n\thelpers.isNumber = function(n) {\r\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\r\n\t};\r\n\thelpers.almostEquals = function(x, y, epsilon) {\r\n\t\treturn Math.abs(x - y) < epsilon;\r\n\t};\r\n\thelpers.almostWhole = function(x, epsilon) {\r\n\t\tvar rounded = Math.round(x);\r\n\t\treturn (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\r\n\t};\r\n\thelpers.max = function(array) {\r\n\t\treturn array.reduce(function(max, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.max(max, value);\r\n\t\t\t}\r\n\t\t\treturn max;\r\n\t\t}, Number.NEGATIVE_INFINITY);\r\n\t};\r\n\thelpers.min = function(array) {\r\n\t\treturn array.reduce(function(min, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.min(min, value);\r\n\t\t\t}\r\n\t\t\treturn min;\r\n\t\t}, Number.POSITIVE_INFINITY);\r\n\t};\r\n\thelpers.sign = Math.sign ?\r\n\t\tfunction(x) {\r\n\t\t\treturn Math.sign(x);\r\n\t\t} :\r\n\t\tfunction(x) {\r\n\t\t\tx = +x; // convert to a number\r\n\t\t\tif (x === 0 || isNaN(x)) {\r\n\t\t\t\treturn x;\r\n\t\t\t}\r\n\t\t\treturn x > 0 ? 1 : -1;\r\n\t\t};\r\n\thelpers.log10 = Math.log10 ?\r\n\t\tfunction(x) {\r\n\t\t\treturn Math.log10(x);\r\n\t\t} :\r\n\t\tfunction(x) {\r\n\t\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\r\n\t\t\t// Check for whole powers of 10,\r\n\t\t\t// which due to floating point rounding error should be corrected.\r\n\t\t\tvar powerOf10 = Math.round(exponent);\r\n\t\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\r\n\r\n\t\t\treturn isPowerOf10 ? powerOf10 : exponent;\r\n\t\t};\r\n\thelpers.toRadians = function(degrees) {\r\n\t\treturn degrees * (Math.PI / 180);\r\n\t};\r\n\thelpers.toDegrees = function(radians) {\r\n\t\treturn radians * (180 / Math.PI);\r\n\t};\r\n\t// Gets the angle from vertical upright to the point about a centre.\r\n\thelpers.getAngleFromPoint = function(centrePoint, anglePoint) {\r\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\r\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\r\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\r\n\r\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\r\n\r\n\t\tif (angle < (-0.5 * Math.PI)) {\r\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tangle: angle,\r\n\t\t\tdistance: radialDistanceFromCenter\r\n\t\t};\r\n\t};\r\n\thelpers.distanceBetweenPoints = function(pt1, pt2) {\r\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\r\n\t};\r\n\thelpers.aliasPixel = function(pixelWidth) {\r\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\r\n\t};\r\n\thelpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\r\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\r\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\r\n\r\n\t\t// This function must also respect \"skipped\" points\r\n\r\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\r\n\t\tvar current = middlePoint;\r\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\r\n\r\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\r\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\r\n\r\n\t\tvar s01 = d01 / (d01 + d12);\r\n\t\tvar s12 = d12 / (d01 + d12);\r\n\r\n\t\t// If all points are the same, s01 & s02 will be inf\r\n\t\ts01 = isNaN(s01) ? 0 : s01;\r\n\t\ts12 = isNaN(s12) ? 0 : s12;\r\n\r\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\r\n\t\tvar fb = t * s12;\r\n\r\n\t\treturn {\r\n\t\t\tprevious: {\r\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\r\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\r\n\t\t\t},\r\n\t\t\tnext: {\r\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\r\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\thelpers.EPSILON = Number.EPSILON || 1e-14;\r\n\thelpers.splineCurveMonotone = function(points) {\r\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\r\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\r\n\t\t// between the dataset discrete points due to the interpolation.\r\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\r\n\r\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tmodel: point._model,\r\n\t\t\t\tdeltaK: 0,\r\n\t\t\t\tmK: 0\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\r\n\t\tvar pointsLen = pointsWithTangents.length;\r\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\r\n\r\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\r\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\r\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\r\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\r\n\t\t\t\tpointCurrent.mK = 0;\r\n\t\t\t} else {\r\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Adjust tangents to ensure monotonic properties\r\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\r\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tpointAfter = pointsWithTangents[i + 1];\r\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\r\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\r\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\r\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\r\n\t\t\tif (squaredMagnitude <= 9) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\r\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\r\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\r\n\t\t}\r\n\r\n\t\t// Compute control points\r\n\t\tvar deltaX;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\r\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers.nextItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\r\n\t\t}\r\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\r\n\t};\r\n\thelpers.previousItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\r\n\t\t}\r\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\r\n\t};\r\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\r\n\thelpers.niceNum = function(range, round) {\r\n\t\tvar exponent = Math.floor(helpers.log10(range));\r\n\t\tvar fraction = range / Math.pow(10, exponent);\r\n\t\tvar niceFraction;\r\n\r\n\t\tif (round) {\r\n\t\t\tif (fraction < 1.5) {\r\n\t\t\t\tniceFraction = 1;\r\n\t\t\t} else if (fraction < 3) {\r\n\t\t\t\tniceFraction = 2;\r\n\t\t\t} else if (fraction < 7) {\r\n\t\t\t\tniceFraction = 5;\r\n\t\t\t} else {\r\n\t\t\t\tniceFraction = 10;\r\n\t\t\t}\r\n\t\t} else if (fraction <= 1.0) {\r\n\t\t\tniceFraction = 1;\r\n\t\t} else if (fraction <= 2) {\r\n\t\t\tniceFraction = 2;\r\n\t\t} else if (fraction <= 5) {\r\n\t\t\tniceFraction = 5;\r\n\t\t} else {\r\n\t\t\tniceFraction = 10;\r\n\t\t}\r\n\r\n\t\treturn niceFraction * Math.pow(10, exponent);\r\n\t};\r\n\t// Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\thelpers.requestAnimFrame = (function() {\r\n\t\tif (typeof window === 'undefined') {\r\n\t\t\treturn function(callback) {\r\n\t\t\t\tcallback();\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn window.requestAnimationFrame ||\r\n\t\t\twindow.webkitRequestAnimationFrame ||\r\n\t\t\twindow.mozRequestAnimationFrame ||\r\n\t\t\twindow.oRequestAnimationFrame ||\r\n\t\t\twindow.msRequestAnimationFrame ||\r\n\t\t\tfunction(callback) {\r\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\r\n\t\t\t};\r\n\t}());\r\n\t// -- DOM methods\r\n\thelpers.getRelativePosition = function(evt, chart) {\r\n\t\tvar mouseX, mouseY;\r\n\t\tvar e = evt.originalEvent || evt;\r\n\t\tvar canvas = evt.target || evt.srcElement;\r\n\t\tvar boundingRect = canvas.getBoundingClientRect();\r\n\r\n\t\tvar touches = e.touches;\r\n\t\tif (touches && touches.length > 0) {\r\n\t\t\tmouseX = touches[0].clientX;\r\n\t\t\tmouseY = touches[0].clientY;\r\n\r\n\t\t} else {\r\n\t\t\tmouseX = e.clientX;\r\n\t\t\tmouseY = e.clientY;\r\n\t\t}\r\n\r\n\t\t// Scale mouse coordinates into canvas coordinates\r\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\r\n\t\t// http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\r\n\t\tvar paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));\r\n\t\tvar paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));\r\n\t\tvar paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));\r\n\t\tvar paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));\r\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\r\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\r\n\r\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\r\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\r\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\r\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\r\n\r\n\t\treturn {\r\n\t\t\tx: mouseX,\r\n\t\t\ty: mouseY\r\n\t\t};\r\n\r\n\t};\r\n\r\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\r\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\r\n\t\tvar valueInPixels;\r\n\t\tif (typeof styleValue === 'string') {\r\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\r\n\r\n\t\t\tif (styleValue.indexOf('%') !== -1) {\r\n\t\t\t\t// percentage * size in dimension\r\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalueInPixels = styleValue;\r\n\t\t}\r\n\r\n\t\treturn valueInPixels;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if the given value contains an effective constraint.\r\n\t * @private\r\n\t */\r\n\tfunction isConstrainedValue(value) {\r\n\t\treturn value !== undefined && value !== null && value !== 'none';\r\n\t}\r\n\r\n\t// Private helper to get a constraint dimension\r\n\t// @param domNode : the node to check the constraint on\r\n\t// @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)\r\n\t// @param percentageProperty : property of parent to use when calculating width as a percentage\r\n\t// @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\r\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\r\n\t\tvar view = document.defaultView;\r\n\t\tvar parentNode = helpers._getParentNode(domNode);\r\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\r\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\r\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\r\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\r\n\t\tvar infinity = Number.POSITIVE_INFINITY;\r\n\r\n\t\tif (hasCNode || hasCContainer) {\r\n\t\t\treturn Math.min(\r\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\r\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\r\n\t\t}\r\n\r\n\t\treturn 'none';\r\n\t}\r\n\t// returns Number or undefined if no constraint\r\n\thelpers.getConstraintWidth = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\r\n\t};\r\n\t// returns Number or undefined if no constraint\r\n\thelpers.getConstraintHeight = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\r\n\t};\r\n\t/**\r\n\t * @private\r\n \t */\r\n\thelpers._calculatePadding = function(container, padding, parentDimension) {\r\n\t\tpadding = helpers.getStyle(container, padding);\r\n\r\n\t\treturn padding.indexOf('%') > -1 ? parentDimension / parseInt(padding, 10) : parseInt(padding, 10);\r\n\t};\r\n\t/**\r\n\t * @private\r\n\t */\r\n\thelpers._getParentNode = function(domNode) {\r\n\t\tvar parent = domNode.parentNode;\r\n\t\tif (parent && parent.host) {\r\n\t\t\tparent = parent.host;\r\n\t\t}\r\n\t\treturn parent;\r\n\t};\r\n\thelpers.getMaximumWidth = function(domNode) {\r\n\t\tvar container = helpers._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientWidth;\r\n\t\t}\r\n\r\n\t\tvar clientWidth = container.clientWidth;\r\n\t\tvar paddingLeft = helpers._calculatePadding(container, 'padding-left', clientWidth);\r\n\t\tvar paddingRight = helpers._calculatePadding(container, 'padding-right', clientWidth);\r\n\r\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\r\n\t\tvar cw = helpers.getConstraintWidth(domNode);\r\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\r\n\t};\r\n\thelpers.getMaximumHeight = function(domNode) {\r\n\t\tvar container = helpers._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientHeight;\r\n\t\t}\r\n\r\n\t\tvar clientHeight = container.clientHeight;\r\n\t\tvar paddingTop = helpers._calculatePadding(container, 'padding-top', clientHeight);\r\n\t\tvar paddingBottom = helpers._calculatePadding(container, 'padding-bottom', clientHeight);\r\n\r\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\r\n\t\tvar ch = helpers.getConstraintHeight(domNode);\r\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\r\n\t};\r\n\thelpers.getStyle = function(el, property) {\r\n\t\treturn el.currentStyle ?\r\n\t\t\tel.currentStyle[property] :\r\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\r\n\t};\r\n\thelpers.retinaScale = function(chart, forceRatio) {\r\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\r\n\t\tif (pixelRatio === 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar height = chart.height;\r\n\t\tvar width = chart.width;\r\n\r\n\t\tcanvas.height = height * pixelRatio;\r\n\t\tcanvas.width = width * pixelRatio;\r\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\r\n\r\n\t\t// If no style has been set on the canvas, the render size is used as display size,\r\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\r\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\r\n\t\tif (!canvas.style.height && !canvas.style.width) {\r\n\t\t\tcanvas.style.height = height + 'px';\r\n\t\t\tcanvas.style.width = width + 'px';\r\n\t\t}\r\n\t};\r\n\t// -- Canvas methods\r\n\thelpers.fontString = function(pixelSize, fontStyle, fontFamily) {\r\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\r\n\t};\r\n\thelpers.longestText = function(ctx, font, arrayOfThings, cache) {\r\n\t\tcache = cache || {};\r\n\t\tvar data = cache.data = cache.data || {};\r\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\r\n\r\n\t\tif (cache.font !== font) {\r\n\t\t\tdata = cache.data = {};\r\n\t\t\tgc = cache.garbageCollect = [];\r\n\t\t\tcache.font = font;\r\n\t\t}\r\n\r\n\t\tctx.font = font;\r\n\t\tvar longest = 0;\r\n\t\thelpers.each(arrayOfThings, function(thing) {\r\n\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\tif (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {\r\n\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, thing);\r\n\t\t\t} else if (helpers.isArray(thing)) {\r\n\t\t\t\t// if it is an array lets measure each element\r\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\r\n\t\t\t\thelpers.each(thing, function(nestedThing) {\r\n\t\t\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {\r\n\t\t\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, nestedThing);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar gcLen = gc.length / 2;\r\n\t\tif (gcLen > arrayOfThings.length) {\r\n\t\t\tfor (var i = 0; i < gcLen; i++) {\r\n\t\t\t\tdelete data[gc[i]];\r\n\t\t\t}\r\n\t\t\tgc.splice(0, gcLen);\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\thelpers.measureText = function(ctx, data, gc, longest, string) {\r\n\t\tvar textWidth = data[string];\r\n\t\tif (!textWidth) {\r\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\r\n\t\t\tgc.push(string);\r\n\t\t}\r\n\t\tif (textWidth > longest) {\r\n\t\t\tlongest = textWidth;\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\thelpers.numberOfLabelLines = function(arrayOfThings) {\r\n\t\tvar numberOfLines = 1;\r\n\t\thelpers.each(arrayOfThings, function(thing) {\r\n\t\t\tif (helpers.isArray(thing)) {\r\n\t\t\t\tif (thing.length > numberOfLines) {\r\n\t\t\t\t\tnumberOfLines = thing.length;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn numberOfLines;\r\n\t};\r\n\r\n\thelpers.color = !color ?\r\n\t\tfunction(value) {\r\n\t\t\tconsole.error('Color.js not found!');\r\n\t\t\treturn value;\r\n\t\t} :\r\n\t\tfunction(value) {\r\n\t\t\t/* global CanvasGradient */\r\n\t\t\tif (value instanceof CanvasGradient) {\r\n\t\t\t\tvalue = defaults.global.defaultColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn color(value);\r\n\t\t};\r\n\r\n\thelpers.getHoverColor = function(colorValue) {\r\n\t\t/* global CanvasPattern */\r\n\t\treturn (colorValue instanceof CanvasPattern) ?\r\n\t\t\tcolorValue :\r\n\t\t\thelpers.color(colorValue).saturate(0.5).darken(0.1).rgbString();\r\n\t};\r\n};\r\n\r\n},{\"26\":26,\"3\":3,\"34\":34,\"46\":46}],29:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\n/**\r\n * Helper function to get relative position for an event\r\n * @param {Event|IEvent} event - The event to get the position for\r\n * @param {Chart} chart - The chart\r\n * @returns {Point} the event position\r\n */\r\nfunction getRelativePosition(e, chart) {\r\n\tif (e.native) {\r\n\t\treturn {\r\n\t\t\tx: e.x,\r\n\t\t\ty: e.y\r\n\t\t};\r\n\t}\r\n\r\n\treturn helpers.getRelativePosition(e, chart);\r\n}\r\n\r\n/**\r\n * Helper function to traverse all of the visible elements in the chart\r\n * @param chart {chart} the chart\r\n * @param handler {Function} the callback to execute for each visible item\r\n */\r\nfunction parseVisibleItems(chart, handler) {\r\n\tvar datasets = chart.data.datasets;\r\n\tvar meta, i, j, ilen, jlen;\r\n\r\n\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\r\n\t\tif (!chart.isDatasetVisible(i)) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tmeta = chart.getDatasetMeta(i);\r\n\t\tfor (j = 0, jlen = meta.data.length; j < jlen; ++j) {\r\n\t\t\tvar element = meta.data[j];\r\n\t\t\tif (!element._view.skip) {\r\n\t\t\t\thandler(element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Helper function to get the items that intersect the event position\r\n * @param items {ChartElement[]} elements to filter\r\n * @param position {Point} the point to be nearest to\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getIntersectItems(chart, position) {\r\n\tvar elements = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\r\n * @param chart {Chart} the chart to look at elements from\r\n * @param position {Point} the point to be nearest to\r\n * @param intersect {Boolean} if true, only consider items that intersect the position\r\n * @param distanceMetric {Function} function to provide the distance between points\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\r\n\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\tvar nearestItems = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar center = element.getCenterPoint();\r\n\t\tvar distance = distanceMetric(position, center);\r\n\r\n\t\tif (distance < minDistance) {\r\n\t\t\tnearestItems = [element];\r\n\t\t\tminDistance = distance;\r\n\t\t} else if (distance === minDistance) {\r\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\r\n\t\t\tnearestItems.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn nearestItems;\r\n}\r\n\r\n/**\r\n * Get a distance metric function for two points based on the\r\n * axis mode setting\r\n * @param {String} axis the axis mode. x|y|xy\r\n */\r\nfunction getDistanceMetricForAxis(axis) {\r\n\tvar useX = axis.indexOf('x') !== -1;\r\n\tvar useY = axis.indexOf('y') !== -1;\r\n\r\n\treturn function(pt1, pt2) {\r\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\r\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\r\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\r\n\t};\r\n}\r\n\r\nfunction indexMode(chart, e, options) {\r\n\tvar position = getRelativePosition(e, chart);\r\n\t// Default axis for index mode is 'x' to match old behaviour\r\n\toptions.axis = options.axis || 'x';\r\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\tvar elements = [];\r\n\r\n\tif (!items.length) {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tchart.data.datasets.forEach(function(dataset, datasetIndex) {\r\n\t\tif (chart.isDatasetVisible(datasetIndex)) {\r\n\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\tvar element = meta.data[items[0]._index];\r\n\r\n\t\t\t// don't count items that are skipped (null data)\r\n\t\t\tif (element && !element._view.skip) {\r\n\t\t\t\telements.push(element);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * @interface IInteractionOptions\r\n */\r\n/**\r\n * If true, only consider items that intersect the point\r\n * @name IInterfaceOptions#boolean\r\n * @type Boolean\r\n */\r\n\r\n/**\r\n * Contains interaction related functions\r\n * @namespace Chart.Interaction\r\n */\r\nmodule.exports = {\r\n\t// Helper function for different modes\r\n\tmodes: {\r\n\t\tsingle: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar elements = [];\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\telements.push(element);\r\n\t\t\t\t\treturn elements;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn elements.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.label\r\n\t\t * @deprecated since version 2.4.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tlabel: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\r\n\t\t * @function Chart.Interaction.modes.index\r\n\t\t * @since v2.4.0\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tindex: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\r\n\t\t * @function Chart.Interaction.modes.dataset\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tdataset: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\r\n\t\t\tif (items.length > 0) {\r\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\r\n\t\t\t}\r\n\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.x-axis\r\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\t'x-axis': function(chart, e) {\r\n\t\t\treturn indexMode(chart, e, {intersect: false});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Point mode returns all elements that hit test based on the event position\r\n\t\t * of the event\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tpoint: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\treturn getIntersectItems(chart, position);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * nearest mode returns the element closest to the point\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tnearest: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric);\r\n\r\n\t\t\t// We have multiple items at the same distance from the event. Now sort by smallest\r\n\t\t\tif (nearestItems.length > 1) {\r\n\t\t\t\tnearestItems.sort(function(a, b) {\r\n\t\t\t\t\tvar sizeA = a.getArea();\r\n\t\t\t\t\tvar sizeB = b.getArea();\r\n\t\t\t\t\tvar ret = sizeA - sizeB;\r\n\r\n\t\t\t\t\tif (ret === 0) {\r\n\t\t\t\t\t\t// if equal sort by dataset index\r\n\t\t\t\t\t\tret = a._datasetIndex - b._datasetIndex;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn ret;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Return only 1 item\r\n\t\t\treturn nearestItems.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * x mode returns the elements that hit-test at the current x coordinate\r\n\t\t * @function Chart.Interaction.modes.x\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tx: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inXRange(position.x)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * y mode returns the elements that hit-test at the current y coordinate\r\n\t\t * @function Chart.Interaction.modes.y\r\n\t\t * @param chart {chart} the chart we are returning items from\r\n\t\t * @param e {Event} the event we are find things at\r\n\t\t * @param options {IInteractionOptions} options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\ty: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inYRange(position.y)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],30:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\n\r\ndefaults._set('global', {\r\n\tresponsive: true,\r\n\tresponsiveAnimationDuration: 0,\r\n\tmaintainAspectRatio: true,\r\n\tevents: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\r\n\thover: {\r\n\t\tonHover: null,\r\n\t\tmode: 'nearest',\r\n\t\tintersect: true,\r\n\t\tanimationDuration: 400\r\n\t},\r\n\tonClick: null,\r\n\tdefaultColor: 'rgba(0,0,0,0.1)',\r\n\tdefaultFontColor: '#666',\r\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\r\n\tdefaultFontSize: 12,\r\n\tdefaultFontStyle: 'normal',\r\n\tshowLines: true,\r\n\r\n\t// Element defaults defined in element extensions\r\n\telements: {},\r\n\r\n\t// Layout options such as padding\r\n\tlayout: {\r\n\t\tpadding: {\r\n\t\t\ttop: 0,\r\n\t\t\tright: 0,\r\n\t\t\tbottom: 0,\r\n\t\t\tleft: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = function() {\r\n\r\n\t// Occupy the global variable of Chart, and create a simple base class\r\n\tvar Chart = function(item, config) {\r\n\t\tthis.construct(item, config);\r\n\t\treturn this;\r\n\t};\r\n\r\n\tChart.Chart = Chart;\r\n\r\n\treturn Chart;\r\n};\r\n\r\n},{\"26\":26}],31:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nfunction filterByPosition(array, position) {\r\n\treturn helpers.where(array, function(v) {\r\n\t\treturn v.position === position;\r\n\t});\r\n}\r\n\r\nfunction sortByWeight(array, reverse) {\r\n\tarray.forEach(function(v, i) {\r\n\t\tv._tmpIndex_ = i;\r\n\t\treturn v;\r\n\t});\r\n\tarray.sort(function(a, b) {\r\n\t\tvar v0 = reverse ? b : a;\r\n\t\tvar v1 = reverse ? a : b;\r\n\t\treturn v0.weight === v1.weight ?\r\n\t\t\tv0._tmpIndex_ - v1._tmpIndex_ :\r\n\t\t\tv0.weight - v1.weight;\r\n\t});\r\n\tarray.forEach(function(v) {\r\n\t\tdelete v._tmpIndex_;\r\n\t});\r\n}\r\n\r\n/**\r\n * @interface ILayoutItem\r\n * @prop {String} position - The position of the item in the chart layout. Possible values are\r\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\r\n * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area\r\n * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\r\n * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\r\n * @prop {Function} update - Takes two parameters: width and height. Returns size of item\r\n * @prop {Function} getPadding - Returns an object with padding on the edges\r\n * @prop {Number} width - Width of item. Must be valid after update()\r\n * @prop {Number} height - Height of item. Must be valid after update()\r\n * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update\r\n * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update\r\n * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update\r\n * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\r\n */\r\n\r\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\r\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\r\n// It is this service's responsibility of carrying out that layout.\r\nmodule.exports = {\r\n\tdefaults: {},\r\n\r\n\t/**\r\n\t * Register a box to a chart.\r\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\r\n\t * @param {Chart} chart - the chart to use\r\n\t * @param {ILayoutItem} item - the item to add to be layed out\r\n\t */\r\n\taddBox: function(chart, item) {\r\n\t\tif (!chart.boxes) {\r\n\t\t\tchart.boxes = [];\r\n\t\t}\r\n\r\n\t\t// initialize item with default values\r\n\t\titem.fullWidth = item.fullWidth || false;\r\n\t\titem.position = item.position || 'top';\r\n\t\titem.weight = item.weight || 0;\r\n\r\n\t\tchart.boxes.push(item);\r\n\t},\r\n\r\n\t/**\r\n\t * Remove a layoutItem from a chart\r\n\t * @param {Chart} chart - the chart to remove the box from\r\n\t * @param {Object} layoutItem - the item to remove from the layout\r\n\t */\r\n\tremoveBox: function(chart, layoutItem) {\r\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\r\n\t\tif (index !== -1) {\r\n\t\t\tchart.boxes.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Sets (or updates) options on the given `item`.\r\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\r\n\t * @param {Object} item - the item to configure with the given options\r\n\t * @param {Object} options - the new item options.\r\n\t */\r\n\tconfigure: function(chart, item, options) {\r\n\t\tvar props = ['fullWidth', 'position', 'weight'];\r\n\t\tvar ilen = props.length;\r\n\t\tvar i = 0;\r\n\t\tvar prop;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tprop = props[i];\r\n\t\t\tif (options.hasOwnProperty(prop)) {\r\n\t\t\t\titem[prop] = options[prop];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Fits boxes of the given chart into the given size by having each box measure itself\r\n\t * then running a fitting algorithm\r\n\t * @param {Chart} chart - the chart\r\n\t * @param {Number} width - the width to fit into\r\n\t * @param {Number} height - the height to fit into\r\n\t */\r\n\tupdate: function(chart, width, height) {\r\n\t\tif (!chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar layoutOptions = chart.options.layout || {};\r\n\t\tvar padding = helpers.options.toPadding(layoutOptions.padding);\r\n\t\tvar leftPadding = padding.left;\r\n\t\tvar rightPadding = padding.right;\r\n\t\tvar topPadding = padding.top;\r\n\t\tvar bottomPadding = padding.bottom;\r\n\r\n\t\tvar leftBoxes = filterByPosition(chart.boxes, 'left');\r\n\t\tvar rightBoxes = filterByPosition(chart.boxes, 'right');\r\n\t\tvar topBoxes = filterByPosition(chart.boxes, 'top');\r\n\t\tvar bottomBoxes = filterByPosition(chart.boxes, 'bottom');\r\n\t\tvar chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\r\n\r\n\t\t// Sort boxes by weight. A higher weight is further away from the chart area\r\n\t\tsortByWeight(leftBoxes, true);\r\n\t\tsortByWeight(rightBoxes, false);\r\n\t\tsortByWeight(topBoxes, true);\r\n\t\tsortByWeight(bottomBoxes, false);\r\n\r\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\r\n\t\t// Our canvas looks like the following.\r\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\r\n\t\t// B1 is the bottom axis\r\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\r\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\r\n\t\t// an error will be thrown.\r\n\t\t//\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | T1 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | | | T2 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | C1 | | C2 | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | | |\r\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\r\n\t\t// | | | | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | C3 | | C4 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | B1 | |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | B2 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t//\r\n\t\t// What we do to find the best sizing, we do the following\r\n\t\t// 1. Determine the minimum size of the chart area.\r\n\t\t// 2. Split the remaining width equally between each vertical axis\r\n\t\t// 3. Split the remaining height equally between each horizontal axis\r\n\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\r\n\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\r\n\t\t// 6. Refit each axis\r\n\t\t// 7. Position each axis in the final location\r\n\t\t// 8. Tell the chart the final location of the chart area\r\n\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\r\n\r\n\t\t// Step 1\r\n\t\tvar chartWidth = width - leftPadding - rightPadding;\r\n\t\tvar chartHeight = height - topPadding - bottomPadding;\r\n\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\r\n\t\tvar chartAreaHeight = chartHeight / 2; // min 50%\r\n\r\n\t\t// Step 2\r\n\t\tvar verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);\r\n\r\n\t\t// Step 3\r\n\t\tvar horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);\r\n\r\n\t\t// Step 4\r\n\t\tvar maxChartAreaWidth = chartWidth;\r\n\t\tvar maxChartAreaHeight = chartHeight;\r\n\t\tvar minBoxSizes = [];\r\n\r\n\t\tfunction getMinimumBoxSize(box) {\r\n\t\t\tvar minSize;\r\n\t\t\tvar isHorizontal = box.isHorizontal();\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tminSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);\r\n\t\t\t\tmaxChartAreaHeight -= minSize.height;\r\n\t\t\t} else {\r\n\t\t\t\tminSize = box.update(verticalBoxWidth, maxChartAreaHeight);\r\n\t\t\t\tmaxChartAreaWidth -= minSize.width;\r\n\t\t\t}\r\n\r\n\t\t\tminBoxSizes.push({\r\n\t\t\t\thorizontal: isHorizontal,\r\n\t\t\t\tminSize: minSize,\r\n\t\t\t\tbox: box,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);\r\n\r\n\t\t// If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\r\n\t\tvar maxHorizontalLeftPadding = 0;\r\n\t\tvar maxHorizontalRightPadding = 0;\r\n\t\tvar maxVerticalTopPadding = 0;\r\n\t\tvar maxVerticalBottomPadding = 0;\r\n\r\n\t\thelpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) {\r\n\t\t\tif (horizontalBox.getPadding) {\r\n\t\t\t\tvar boxPadding = horizontalBox.getPadding();\r\n\t\t\t\tmaxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left);\r\n\t\t\t\tmaxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) {\r\n\t\t\tif (verticalBox.getPadding) {\r\n\t\t\t\tvar boxPadding = verticalBox.getPadding();\r\n\t\t\t\tmaxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top);\r\n\t\t\t\tmaxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\r\n\t\t// be if the axes are drawn at their minimum sizes.\r\n\t\t// Steps 5 & 6\r\n\t\tvar totalLeftBoxesWidth = leftPadding;\r\n\t\tvar totalRightBoxesWidth = rightPadding;\r\n\t\tvar totalTopBoxesHeight = topPadding;\r\n\t\tvar totalBottomBoxesHeight = bottomPadding;\r\n\r\n\t\t// Function to fit a box\r\n\t\tfunction fitBox(box) {\r\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) {\r\n\t\t\t\treturn minBox.box === box;\r\n\t\t\t});\r\n\r\n\t\t\tif (minBoxSize) {\r\n\t\t\t\tif (box.isHorizontal()) {\r\n\t\t\t\t\tvar scaleMargin = {\r\n\t\t\t\t\t\tleft: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding),\r\n\t\t\t\t\t\tright: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding),\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tbottom: 0\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends\r\n\t\t\t\t\t// on the margin. Sometimes they need to increase in size slightly\r\n\t\t\t\t\tbox.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Update, and calculate the left and right margins for the horizontal boxes\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes), fitBox);\r\n\r\n\t\thelpers.each(leftBoxes, function(box) {\r\n\t\t\ttotalLeftBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\thelpers.each(rightBoxes, function(box) {\r\n\t\t\ttotalRightBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\t// Set the Left and Right margins for the horizontal boxes\r\n\t\thelpers.each(topBoxes.concat(bottomBoxes), fitBox);\r\n\r\n\t\t// Figure out how much margin is on the top and bottom of the vertical boxes\r\n\t\thelpers.each(topBoxes, function(box) {\r\n\t\t\ttotalTopBoxesHeight += box.height;\r\n\t\t});\r\n\r\n\t\thelpers.each(bottomBoxes, function(box) {\r\n\t\t\ttotalBottomBoxesHeight += box.height;\r\n\t\t});\r\n\r\n\t\tfunction finalFitVerticalBox(box) {\r\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) {\r\n\t\t\t\treturn minSize.box === box;\r\n\t\t\t});\r\n\r\n\t\t\tvar scaleMargin = {\r\n\t\t\t\tleft: 0,\r\n\t\t\t\tright: 0,\r\n\t\t\t\ttop: totalTopBoxesHeight,\r\n\t\t\t\tbottom: totalBottomBoxesHeight\r\n\t\t\t};\r\n\r\n\t\t\tif (minBoxSize) {\r\n\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Let the left layout know the final margin\r\n\t\thelpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);\r\n\r\n\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\r\n\t\ttotalLeftBoxesWidth = leftPadding;\r\n\t\ttotalRightBoxesWidth = rightPadding;\r\n\t\ttotalTopBoxesHeight = topPadding;\r\n\t\ttotalBottomBoxesHeight = bottomPadding;\r\n\r\n\t\thelpers.each(leftBoxes, function(box) {\r\n\t\t\ttotalLeftBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\thelpers.each(rightBoxes, function(box) {\r\n\t\t\ttotalRightBoxesWidth += box.width;\r\n\t\t});\r\n\r\n\t\thelpers.each(topBoxes, function(box) {\r\n\t\t\ttotalTopBoxesHeight += box.height;\r\n\t\t});\r\n\t\thelpers.each(bottomBoxes, function(box) {\r\n\t\t\ttotalBottomBoxesHeight += box.height;\r\n\t\t});\r\n\r\n\t\t// We may be adding some padding to account for rotated x axis labels\r\n\t\tvar leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0);\r\n\t\ttotalLeftBoxesWidth += leftPaddingAddition;\r\n\t\ttotalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0);\r\n\r\n\t\tvar topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0);\r\n\t\ttotalTopBoxesHeight += topPaddingAddition;\r\n\t\ttotalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0);\r\n\r\n\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\r\n\t\t// changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do\r\n\t\t// without calling `fit` again\r\n\t\tvar newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;\r\n\t\tvar newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;\r\n\r\n\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\r\n\t\t\thelpers.each(leftBoxes, function(box) {\r\n\t\t\t\tbox.height = newMaxChartAreaHeight;\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(rightBoxes, function(box) {\r\n\t\t\t\tbox.height = newMaxChartAreaHeight;\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(topBoxes, function(box) {\r\n\t\t\t\tif (!box.fullWidth) {\r\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(bottomBoxes, function(box) {\r\n\t\t\t\tif (!box.fullWidth) {\r\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\r\n\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\r\n\t\t}\r\n\r\n\t\t// Step 7 - Position the boxes\r\n\t\tvar left = leftPadding + leftPaddingAddition;\r\n\t\tvar top = topPadding + topPaddingAddition;\r\n\r\n\t\tfunction placeBox(box) {\r\n\t\t\tif (box.isHorizontal()) {\r\n\t\t\t\tbox.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth;\r\n\t\t\t\tbox.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth;\r\n\t\t\t\tbox.top = top;\r\n\t\t\t\tbox.bottom = top + box.height;\r\n\r\n\t\t\t\t// Move to next point\r\n\t\t\t\ttop = box.bottom;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tbox.left = left;\r\n\t\t\t\tbox.right = left + box.width;\r\n\t\t\t\tbox.top = totalTopBoxesHeight;\r\n\t\t\t\tbox.bottom = totalTopBoxesHeight + maxChartAreaHeight;\r\n\r\n\t\t\t\t// Move to next point\r\n\t\t\t\tleft = box.right;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers.each(leftBoxes.concat(topBoxes), placeBox);\r\n\r\n\t\t// Account for chart width and height\r\n\t\tleft += maxChartAreaWidth;\r\n\t\ttop += maxChartAreaHeight;\r\n\r\n\t\thelpers.each(rightBoxes, placeBox);\r\n\t\thelpers.each(bottomBoxes, placeBox);\r\n\r\n\t\t// Step 8\r\n\t\tchart.chartArea = {\r\n\t\t\tleft: totalLeftBoxesWidth,\r\n\t\t\ttop: totalTopBoxesHeight,\r\n\t\t\tright: totalLeftBoxesWidth + maxChartAreaWidth,\r\n\t\t\tbottom: totalTopBoxesHeight + maxChartAreaHeight\r\n\t\t};\r\n\r\n\t\t// Step 9\r\n\t\thelpers.each(chartAreaBoxes, function(box) {\r\n\t\t\tbox.left = chart.chartArea.left;\r\n\t\t\tbox.top = chart.chartArea.top;\r\n\t\t\tbox.right = chart.chartArea.right;\r\n\t\t\tbox.bottom = chart.chartArea.bottom;\r\n\r\n\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\r\n\t\t});\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],32:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\tplugins: {}\r\n});\r\n\r\n/**\r\n * The plugin service singleton\r\n * @namespace Chart.plugins\r\n * @since 2.1.0\r\n */\r\nmodule.exports = {\r\n\t/**\r\n\t * Globally registered plugins.\r\n\t * @private\r\n\t */\r\n\t_plugins: [],\r\n\r\n\t/**\r\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\r\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\r\n\t * incremented and descriptors are regenerated during following API calls.\r\n\t * @private\r\n\t */\r\n\t_cacheId: 0,\r\n\r\n\t/**\r\n\t * Registers the given plugin(s) if not already registered.\r\n\t * @param {Array|Object} plugins plugin instance(s).\r\n\t */\r\n\tregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tif (p.indexOf(plugin) === -1) {\r\n\t\t\t\tp.push(plugin);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Unregisters the given plugin(s) only if registered.\r\n\t * @param {Array|Object} plugins plugin instance(s).\r\n\t */\r\n\tunregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tvar idx = p.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\tp.splice(idx, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Remove all registered plugins.\r\n\t * @since 2.1.5\r\n\t */\r\n\tclear: function() {\r\n\t\tthis._plugins = [];\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the number of registered plugins?\r\n\t * @returns {Number}\r\n\t * @since 2.1.5\r\n\t */\r\n\tcount: function() {\r\n\t\treturn this._plugins.length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns all registered plugin instances.\r\n\t * @returns {Array} array of plugin objects.\r\n\t * @since 2.1.5\r\n\t */\r\n\tgetAll: function() {\r\n\t\treturn this._plugins;\r\n\t},\r\n\r\n\t/**\r\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\r\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\r\n\t * returned value can be used, for instance, to interrupt the current action.\r\n\t * @param {Object} chart - The chart instance for which plugins should be called.\r\n\t * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\r\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\r\n\t * @returns {Boolean} false if any of the plugins return false, else returns true.\r\n\t */\r\n\tnotify: function(chart, hook, args) {\r\n\t\tvar descriptors = this.descriptors(chart);\r\n\t\tvar ilen = descriptors.length;\r\n\t\tvar i, descriptor, plugin, params, method;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tdescriptor = descriptors[i];\r\n\t\t\tplugin = descriptor.plugin;\r\n\t\t\tmethod = plugin[hook];\r\n\t\t\tif (typeof method === 'function') {\r\n\t\t\t\tparams = [chart].concat(args || []);\r\n\t\t\t\tparams.push(descriptor.options);\r\n\t\t\t\tif (method.apply(plugin, params) === false) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns descriptors of enabled plugins for the given chart.\r\n\t * @returns {Array} [{ plugin, options }]\r\n\t * @private\r\n\t */\r\n\tdescriptors: function(chart) {\r\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\r\n\t\tif (cache.id === this._cacheId) {\r\n\t\t\treturn cache.descriptors;\r\n\t\t}\r\n\r\n\t\tvar plugins = [];\r\n\t\tvar descriptors = [];\r\n\t\tvar config = (chart && chart.config) || {};\r\n\t\tvar options = (config.options && config.options.plugins) || {};\r\n\r\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\r\n\t\t\tvar idx = plugins.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar id = plugin.id;\r\n\t\t\tvar opts = options[id];\r\n\t\t\tif (opts === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (opts === true) {\r\n\t\t\t\topts = helpers.clone(defaults.global.plugins[id]);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.push(plugin);\r\n\t\t\tdescriptors.push({\r\n\t\t\t\tplugin: plugin,\r\n\t\t\t\toptions: opts || {}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tcache.descriptors = descriptors;\r\n\t\tcache.id = this._cacheId;\r\n\t\treturn descriptors;\r\n\t},\r\n\r\n\t/**\r\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\r\n\t * but in some cases, this reference can be changed by the user when updating options.\r\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t * @private\r\n\t */\r\n\t_invalidate: function(chart) {\r\n\t\tdelete chart.$plugins;\r\n\t}\r\n};\r\n\r\n/**\r\n * Plugin extension hooks.\r\n * @interface IPlugin\r\n * @since 2.1.0\r\n */\r\n/**\r\n * @method IPlugin#beforeInit\r\n * @desc Called before initializing `chart`.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#afterInit\r\n * @desc Called after `chart` has been initialized and before the first update.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeUpdate\r\n * @desc Called before updating `chart`. If any plugin returns `false`, the update\r\n * is cancelled (and thus subsequent render(s)) until another `update` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart update.\r\n */\r\n/**\r\n * @method IPlugin#afterUpdate\r\n * @desc Called after `chart` has been updated and before rendering. Note that this\r\n * hook will not be called if the chart update has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetsUpdate\r\n * @desc Called before updating the `chart` datasets. If any plugin returns `false`,\r\n * the datasets update is cancelled until another `update` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} false to cancel the datasets update.\r\n * @since version 2.1.5\r\n*/\r\n/**\r\n * @method IPlugin#afterDatasetsUpdate\r\n * @desc Called after the `chart` datasets have been updated. Note that this hook\r\n * will not be called if the datasets update has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @since version 2.1.5\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetUpdate\r\n * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin\r\n * returns `false`, the datasets update is cancelled until another `update` is triggered.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDatasetUpdate\r\n * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note\r\n * that this hook will not be called if the datasets update has been previously cancelled.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeLayout\r\n * @desc Called before laying out `chart`. If any plugin returns `false`,\r\n * the layout update is cancelled until another `update` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart layout.\r\n */\r\n/**\r\n * @method IPlugin#afterLayout\r\n * @desc Called after the `chart` has been layed out. Note that this hook will not\r\n * be called if the layout update has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeRender\r\n * @desc Called before rendering `chart`. If any plugin returns `false`,\r\n * the rendering is cancelled until another `render` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart rendering.\r\n */\r\n/**\r\n * @method IPlugin#afterRender\r\n * @desc Called after the `chart` has been fully rendered (and animation completed). Note\r\n * that this hook will not be called if the rendering has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDraw\r\n * @desc Called before drawing `chart` at every animation frame specified by the given\r\n * easing value. If any plugin returns `false`, the frame drawing is cancelled until\r\n * another `render` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDraw\r\n * @desc Called after the `chart` has been drawn for the specific easing value. Note\r\n * that this hook will not be called if the drawing has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetsDraw\r\n * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,\r\n * the datasets drawing is cancelled until another `render` is triggered.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDatasetsDraw\r\n * @desc Called after the `chart` datasets have been drawn. Note that this hook\r\n * will not be called if the datasets drawing has been previously cancelled.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeDatasetDraw\r\n * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets\r\n * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing\r\n * is cancelled until another `render` is triggered.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterDatasetDraw\r\n * @desc Called after the `chart` datasets at the given `args.index` have been drawn\r\n * (datasets are drawn in the reverse order). Note that this hook will not be called\r\n * if the datasets drawing has been previously cancelled.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Number} args.index - The dataset index.\r\n * @param {Object} args.meta - The dataset metadata.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeTooltipDraw\r\n * @desc Called before drawing the `tooltip`. If any plugin returns `false`,\r\n * the tooltip drawing is cancelled until another `render` is triggered.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Object} args.tooltip - The tooltip.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n * @returns {Boolean} `false` to cancel the chart tooltip drawing.\r\n */\r\n/**\r\n * @method IPlugin#afterTooltipDraw\r\n * @desc Called after drawing the `tooltip`. Note that this hook will not\r\n * be called if the tooltip drawing has been previously cancelled.\r\n * @param {Chart} chart - The chart instance.\r\n * @param {Object} args - The call arguments.\r\n * @param {Object} args.tooltip - The tooltip.\r\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#beforeEvent\r\n * @desc Called before processing the specified `event`. If any plugin returns `false`,\r\n * the event will be discarded.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {IEvent} event - The event object.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#afterEvent\r\n * @desc Called after the `event` has been consumed. Note that this hook\r\n * will not be called if the `event` has been previously discarded.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {IEvent} event - The event object.\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#resize\r\n * @desc Called after the chart as been resized.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Number} size - The new canvas display size (eq. canvas.style width & height).\r\n * @param {Object} options - The plugin options.\r\n */\r\n/**\r\n * @method IPlugin#destroy\r\n * @desc Called after the chart as been destroyed.\r\n * @param {Chart.Controller} chart - The chart instance.\r\n * @param {Object} options - The plugin options.\r\n */\r\n\r\n},{\"26\":26,\"46\":46}],33:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\nvar Ticks = require(35);\r\n\r\ndefaults._set('scale', {\r\n\tdisplay: true,\r\n\tposition: 'left',\r\n\toffset: false,\r\n\r\n\t// grid line settings\r\n\tgridLines: {\r\n\t\tdisplay: true,\r\n\t\tcolor: 'rgba(0, 0, 0, 0.1)',\r\n\t\tlineWidth: 1,\r\n\t\tdrawBorder: true,\r\n\t\tdrawOnChartArea: true,\r\n\t\tdrawTicks: true,\r\n\t\ttickMarkLength: 10,\r\n\t\tzeroLineWidth: 1,\r\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\r\n\t\tzeroLineBorderDash: [],\r\n\t\tzeroLineBorderDashOffset: 0.0,\r\n\t\toffsetGridLines: false,\r\n\t\tborderDash: [],\r\n\t\tborderDashOffset: 0.0\r\n\t},\r\n\r\n\t// scale label\r\n\tscaleLabel: {\r\n\t\t// display property\r\n\t\tdisplay: false,\r\n\r\n\t\t// actual label\r\n\t\tlabelString: '',\r\n\r\n\t\t// line height\r\n\t\tlineHeight: 1.2,\r\n\r\n\t\t// top/bottom padding\r\n\t\tpadding: {\r\n\t\t\ttop: 4,\r\n\t\t\tbottom: 4\r\n\t\t}\r\n\t},\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\tbeginAtZero: false,\r\n\t\tminRotation: 0,\r\n\t\tmaxRotation: 50,\r\n\t\tmirror: false,\r\n\t\tpadding: 0,\r\n\t\treverse: false,\r\n\t\tdisplay: true,\r\n\t\tautoSkip: true,\r\n\t\tautoSkipPadding: 0,\r\n\t\tlabelOffset: 0,\r\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\r\n\t\tcallback: Ticks.formatters.values,\r\n\t\tminor: {},\r\n\t\tmajor: {}\r\n\t}\r\n});\r\n\r\nfunction labelsFromTicks(ticks) {\r\n\tvar labels = [];\r\n\tvar i, ilen;\r\n\r\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\tlabels.push(ticks[i].label);\r\n\t}\r\n\r\n\treturn labels;\r\n}\r\n\r\nfunction getLineValue(scale, index, offsetGridLines) {\r\n\tvar lineValue = scale.getPixelForTick(index);\r\n\r\n\tif (offsetGridLines) {\r\n\t\tif (index === 0) {\r\n\t\t\tlineValue -= (scale.getPixelForTick(1) - lineValue) / 2;\r\n\t\t} else {\r\n\t\t\tlineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2;\r\n\t\t}\r\n\t}\r\n\treturn lineValue;\r\n}\r\n\r\nfunction computeTextSize(context, tick, font) {\r\n\treturn helpers.isArray(tick) ?\r\n\t\thelpers.longestText(context, font, tick) :\r\n\t\tcontext.measureText(tick).width;\r\n}\r\n\r\nfunction parseFontOptions(options) {\r\n\tvar valueOrDefault = helpers.valueOrDefault;\r\n\tvar globalDefaults = defaults.global;\r\n\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\r\n\tvar style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle);\r\n\tvar family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily);\r\n\r\n\treturn {\r\n\t\tsize: size,\r\n\t\tstyle: style,\r\n\t\tfamily: family,\r\n\t\tfont: helpers.fontString(size, style, family)\r\n\t};\r\n}\r\n\r\nfunction parseLineHeight(options) {\r\n\treturn helpers.options.toLineHeight(\r\n\t\thelpers.valueOrDefault(options.lineHeight, 1.2),\r\n\t\thelpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize));\r\n}\r\n\r\nmodule.exports = Element.extend({\r\n\t/**\r\n\t * Get the padding needed for the scale\r\n\t * @method getPadding\r\n\t * @private\r\n\t * @returns {Padding} the necessary padding\r\n\t */\r\n\tgetPadding: function() {\r\n\t\tvar me = this;\r\n\t\treturn {\r\n\t\t\tleft: me.paddingLeft || 0,\r\n\t\t\ttop: me.paddingTop || 0,\r\n\t\t\tright: me.paddingRight || 0,\r\n\t\t\tbottom: me.paddingBottom || 0\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the scale tick objects ({label, major})\r\n\t * @since 2.7\r\n\t */\r\n\tgetTicks: function() {\r\n\t\treturn this._ticks;\r\n\t},\r\n\r\n\t// These methods are ordered by lifecyle. Utilities then follow.\r\n\t// Any function defined here is inherited by all scale types.\r\n\t// Any function can be extended by the scale type\r\n\r\n\tmergeTicksOptions: function() {\r\n\t\tvar ticks = this.options.ticks;\r\n\t\tif (ticks.minor === false) {\r\n\t\t\tticks.minor = {\r\n\t\t\t\tdisplay: false\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (ticks.major === false) {\r\n\t\t\tticks.major = {\r\n\t\t\t\tdisplay: false\r\n\t\t\t};\r\n\t\t}\r\n\t\tfor (var key in ticks) {\r\n\t\t\tif (key !== 'major' && key !== 'minor') {\r\n\t\t\t\tif (typeof ticks.minor[key] === 'undefined') {\r\n\t\t\t\t\tticks.minor[key] = ticks[key];\r\n\t\t\t\t}\r\n\t\t\t\tif (typeof ticks.major[key] === 'undefined') {\r\n\t\t\t\t\tticks.major[key] = ticks[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tbeforeUpdate: function() {\r\n\t\thelpers.callback(this.options.beforeUpdate, [this]);\r\n\t},\r\n\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\t\tvar i, ilen, labels, label, ticks, tick;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = helpers.extend({\r\n\t\t\tleft: 0,\r\n\t\t\tright: 0,\r\n\t\t\ttop: 0,\r\n\t\t\tbottom: 0\r\n\t\t}, margins);\r\n\t\tme.longestTextCache = me.longestTextCache || {};\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\r\n\t\t// Data min/max\r\n\t\tme.beforeDataLimits();\r\n\t\tme.determineDataLimits();\r\n\t\tme.afterDataLimits();\r\n\r\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\r\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\r\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\r\n\t\t// around for long time and not marked as private, we can't change its structure\r\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\r\n\t\t// use scale.getTicks() instead.\r\n\r\n\t\tme.beforeBuildTicks();\r\n\r\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\r\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\r\n\t\tticks = me.buildTicks() || [];\r\n\r\n\t\tme.afterBuildTicks();\r\n\r\n\t\tme.beforeTickToLabelConversion();\r\n\r\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\r\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\r\n\t\t// this method and supposed to contain only string values).\r\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\r\n\r\n\t\tme.afterTickToLabelConversion();\r\n\r\n\t\tme.ticks = labels; // BACKWARD COMPATIBILITY\r\n\r\n\t\t// IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!\r\n\r\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\r\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\t\tlabel = labels[i];\r\n\t\t\ttick = ticks[i];\r\n\t\t\tif (!tick) {\r\n\t\t\t\tticks.push(tick = {\r\n\t\t\t\t\tlabel: label,\r\n\t\t\t\t\tmajor: false\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\ttick.label = label;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme._ticks = ticks;\r\n\r\n\t\t// Tick Rotation\r\n\t\tme.beforeCalculateTickRotation();\r\n\t\tme.calculateTickRotation();\r\n\t\tme.afterCalculateTickRotation();\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\r\n\t},\r\n\tafterUpdate: function() {\r\n\t\thelpers.callback(this.options.afterUpdate, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: function() {\r\n\t\thelpers.callback(this.options.beforeSetDimensions, [this]);\r\n\t},\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\t},\r\n\tafterSetDimensions: function() {\r\n\t\thelpers.callback(this.options.afterSetDimensions, [this]);\r\n\t},\r\n\r\n\t// Data limits\r\n\tbeforeDataLimits: function() {\r\n\t\thelpers.callback(this.options.beforeDataLimits, [this]);\r\n\t},\r\n\tdetermineDataLimits: helpers.noop,\r\n\tafterDataLimits: function() {\r\n\t\thelpers.callback(this.options.afterDataLimits, [this]);\r\n\t},\r\n\r\n\t//\r\n\tbeforeBuildTicks: function() {\r\n\t\thelpers.callback(this.options.beforeBuildTicks, [this]);\r\n\t},\r\n\tbuildTicks: helpers.noop,\r\n\tafterBuildTicks: function() {\r\n\t\thelpers.callback(this.options.afterBuildTicks, [this]);\r\n\t},\r\n\r\n\tbeforeTickToLabelConversion: function() {\r\n\t\thelpers.callback(this.options.beforeTickToLabelConversion, [this]);\r\n\t},\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\t\t// Convert ticks to strings\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\r\n\t},\r\n\tafterTickToLabelConversion: function() {\r\n\t\thelpers.callback(this.options.afterTickToLabelConversion, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeCalculateTickRotation: function() {\r\n\t\thelpers.callback(this.options.beforeCalculateTickRotation, [this]);\r\n\t},\r\n\tcalculateTickRotation: function() {\r\n\t\tvar me = this;\r\n\t\tvar context = me.ctx;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar labels = labelsFromTicks(me._ticks);\r\n\r\n\t\t// Get the width of each grid by calculating the difference\r\n\t\t// between x offsets between 0 and 1.\r\n\t\tvar tickFont = parseFontOptions(tickOpts);\r\n\t\tcontext.font = tickFont.font;\r\n\r\n\t\tvar labelRotation = tickOpts.minRotation || 0;\r\n\r\n\t\tif (labels.length && me.options.display && me.isHorizontal()) {\r\n\t\t\tvar originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache);\r\n\t\t\tvar labelWidth = originalLabelWidth;\r\n\t\t\tvar cosRotation, sinRotation;\r\n\r\n\t\t\t// Allow 3 pixels x2 padding either side for label readability\r\n\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\r\n\r\n\t\t\t// Max label rotation can be set or default to 90 - also act as a loop counter\r\n\t\t\twhile (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\r\n\t\t\t\tvar angleRadians = helpers.toRadians(labelRotation);\r\n\t\t\t\tcosRotation = Math.cos(angleRadians);\r\n\t\t\t\tsinRotation = Math.sin(angleRadians);\r\n\r\n\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\r\n\t\t\t\t\t// go back one step\r\n\t\t\t\t\tlabelRotation--;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlabelRotation++;\r\n\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.labelRotation = labelRotation;\r\n\t},\r\n\tafterCalculateTickRotation: function() {\r\n\t\thelpers.callback(this.options.afterCalculateTickRotation, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeFit: function() {\r\n\t\thelpers.callback(this.options.beforeFit, [this]);\r\n\t},\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\t// Reset\r\n\t\tvar minSize = me.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\r\n\t\tvar labels = labelsFromTicks(me._ticks);\r\n\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\t\tvar scaleLabelOpts = opts.scaleLabel;\r\n\t\tvar gridLineOpts = opts.gridLines;\r\n\t\tvar display = opts.display;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tvar tickFont = parseFontOptions(tickOpts);\r\n\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\r\n\r\n\t\t// Width\r\n\t\tif (isHorizontal) {\r\n\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\r\n\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\r\n\t\t} else {\r\n\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\r\n\t\t}\r\n\r\n\t\t// height\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\r\n\t\t} else {\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\t// Are we showing a title for the scale?\r\n\t\tif (scaleLabelOpts.display && display) {\r\n\t\t\tvar scaleLabelLineHeight = parseLineHeight(scaleLabelOpts);\r\n\t\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding);\r\n\t\t\tvar deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tminSize.height += deltaHeight;\r\n\t\t\t} else {\r\n\t\t\t\tminSize.width += deltaHeight;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Don't bother fitting the ticks if we are not showing them\r\n\t\tif (tickOpts.display && display) {\r\n\t\t\tvar largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache);\r\n\t\t\tvar tallestLabelHeightInLines = helpers.numberOfLabelLines(labels);\r\n\t\t\tvar lineSpace = tickFont.size * 0.5;\r\n\t\t\tvar tickPadding = me.options.ticks.padding;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\t// A horizontal axis is more constrained by the height.\r\n\t\t\t\tme.longestLabelWidth = largestTextWidth;\r\n\r\n\t\t\t\tvar angleRadians = helpers.toRadians(me.labelRotation);\r\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\r\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\r\n\r\n\t\t\t\t// TODO - improve this calculation\r\n\t\t\t\tvar labelHeight = (sinRotation * largestTextWidth)\r\n\t\t\t\t\t+ (tickFont.size * tallestLabelHeightInLines)\r\n\t\t\t\t\t+ (lineSpace * (tallestLabelHeightInLines - 1))\r\n\t\t\t\t\t+ lineSpace; // padding\r\n\r\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\r\n\r\n\t\t\t\tme.ctx.font = tickFont.font;\r\n\t\t\t\tvar firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font);\r\n\t\t\t\tvar lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font);\r\n\r\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\r\n\t\t\t\t// which means that the right padding is dominated by the font height\r\n\t\t\t\tif (me.labelRotation !== 0) {\r\n\t\t\t\t\tme.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges\r\n\t\t\t\t\tme.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges\r\n\t\t\t\t\tme.paddingRight = lastLabelWidth / 2 + 3;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\r\n\t\t\t\t// dominant factor here, so get that length first and account for padding\r\n\t\t\t\tif (tickOpts.mirror) {\r\n\t\t\t\t\tlargestTextWidth = 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\r\n\t\t\t\t\t// tickPadding is not implemented for horizontal\r\n\t\t\t\t\tlargestTextWidth += tickPadding + lineSpace;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\r\n\r\n\t\t\t\tme.paddingTop = tickFont.size / 2;\r\n\t\t\t\tme.paddingBottom = tickFont.size / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.handleMargins();\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\t},\r\n\r\n\t/**\r\n\t * Handle margins and padding interactions\r\n\t * @private\r\n\t */\r\n\thandleMargins: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.margins) {\r\n\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\r\n\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\r\n\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\r\n\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\r\n\t\t}\r\n\t},\r\n\r\n\tafterFit: function() {\r\n\t\thelpers.callback(this.options.afterFit, [this]);\r\n\t},\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\r\n\t},\r\n\tisFullWidth: function() {\r\n\t\treturn (this.options.fullWidth);\r\n\t},\r\n\r\n\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\r\n\tgetRightValue: function(rawValue) {\r\n\t\t// Null and undefined values first\r\n\t\tif (helpers.isNullOrUndef(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\r\n\t\tif (typeof rawValue === 'number' && !isFinite(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\t// If it is in fact an object, dive in one more level\r\n\t\tif (rawValue) {\r\n\t\t\tif (this.isHorizontal()) {\r\n\t\t\t\tif (rawValue.x !== undefined) {\r\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\r\n\t\t\t\t}\r\n\t\t\t} else if (rawValue.y !== undefined) {\r\n\t\t\t\treturn this.getRightValue(rawValue.y);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Value is good, return it\r\n\t\treturn rawValue;\r\n\t},\r\n\r\n\t/**\r\n\t * Used to get the value to display in the tooltip for the data at the given index\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetLabelForIndex: helpers.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param value\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetPixelForValue: helpers.noop,\r\n\r\n\t/**\r\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param pixel\r\n\t */\r\n\tgetValueForPixel: helpers.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the tick at the given index\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar offset = me.options.offset;\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\r\n\t\t\tvar tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\r\n\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\r\n\r\n\t\t\tif (offset) {\r\n\t\t\t\tpixel += tickWidth / 2;\r\n\t\t\t}\r\n\r\n\t\t\tvar finalVal = me.left + Math.round(pixel);\r\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\r\n\t\t\treturn finalVal;\r\n\t\t}\r\n\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\r\n\t\treturn me.top + (index * (innerHeight / (me._ticks.length - 1)));\r\n\t},\r\n\r\n\t/**\r\n\t * Utility for getting the pixel location of a percentage of scale\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForDecimal: function(decimal) {\r\n\t\tvar me = this;\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\r\n\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\r\n\r\n\t\t\tvar finalVal = me.left + Math.round(valueOffset);\r\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\r\n\t\t\treturn finalVal;\r\n\t\t}\r\n\t\treturn me.top + (decimal * me.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the pixel for the minimum chart value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetBasePixel: function() {\r\n\t\treturn this.getPixelForValue(this.getBaseValue());\r\n\t},\r\n\r\n\tgetBaseValue: function() {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\r\n\t\treturn me.beginAtZero ? 0 :\r\n\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t0;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\r\n\t * @private\r\n\t */\r\n\t_autoSkip: function(ticks) {\r\n\t\tvar skipRatio;\r\n\t\tvar me = this;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar optionTicks = me.options.ticks.minor;\r\n\t\tvar tickCount = ticks.length;\r\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\r\n\t\tvar cosRotation = Math.cos(labelRotationRadians);\r\n\t\tvar longestRotatedLabel = me.longestLabelWidth * cosRotation;\r\n\t\tvar result = [];\r\n\t\tvar i, tick, shouldSkip;\r\n\r\n\t\t// figure out the maximum number of gridlines to show\r\n\t\tvar maxTicks;\r\n\t\tif (optionTicks.maxTicksLimit) {\r\n\t\t\tmaxTicks = optionTicks.maxTicksLimit;\r\n\t\t}\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tskipRatio = false;\r\n\r\n\t\t\tif ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) {\r\n\t\t\t\tskipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight)));\r\n\t\t\t}\r\n\r\n\t\t\t// if they defined a max number of optionTicks,\r\n\t\t\t// increase skipRatio until that number is met\r\n\t\t\tif (maxTicks && tickCount > maxTicks) {\r\n\t\t\t\tskipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < tickCount; i++) {\r\n\t\t\ttick = ticks[i];\r\n\r\n\t\t\t// Since we always show the last tick,we need may need to hide the last shown one before\r\n\t\t\tshouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount);\r\n\t\t\tif (shouldSkip && i !== tickCount - 1) {\r\n\t\t\t\t// leave tick in place but make sure it's not displayed (#4635)\r\n\t\t\t\tdelete tick.label;\r\n\t\t\t}\r\n\t\t\tresult.push(tick);\r\n\t\t}\r\n\t\treturn result;\r\n\t},\r\n\r\n\t// Actually draw the scale on the canvas\r\n\t// @param {rectangle} chartArea : the area of the chart to draw full grid lines on\r\n\tdraw: function(chartArea) {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tif (!options.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar context = me.ctx;\r\n\t\tvar globalDefaults = defaults.global;\r\n\t\tvar optionTicks = options.ticks.minor;\r\n\t\tvar optionMajorTicks = options.ticks.major || optionTicks;\r\n\t\tvar gridLines = options.gridLines;\r\n\t\tvar scaleLabel = options.scaleLabel;\r\n\r\n\t\tvar isRotated = me.labelRotation !== 0;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tvar ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();\r\n\t\tvar tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar tickFont = parseFontOptions(optionTicks);\r\n\t\tvar majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar majorTickFont = parseFontOptions(optionMajorTicks);\r\n\r\n\t\tvar tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\r\n\r\n\t\tvar scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar scaleLabelFont = parseFontOptions(scaleLabel);\r\n\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding);\r\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\r\n\r\n\t\tvar itemsToDraw = [];\r\n\r\n\t\tvar axisWidth = me.options.gridLines.lineWidth;\r\n\t\tvar xTickStart = options.position === 'right' ? me.left : me.right - axisWidth - tl;\r\n\t\tvar xTickEnd = options.position === 'right' ? me.left + tl : me.right;\r\n\t\tvar yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth;\r\n\t\tvar yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth;\r\n\r\n\t\thelpers.each(ticks, function(tick, index) {\r\n\t\t\t// autoskipper skipped this tick (#4635)\r\n\t\t\tif (helpers.isNullOrUndef(tick.label)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar label = tick.label;\r\n\t\t\tvar lineWidth, lineColor, borderDash, borderDashOffset;\r\n\t\t\tif (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {\r\n\t\t\t\t// Draw the first index specially\r\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\r\n\t\t\t\tlineColor = gridLines.zeroLineColor;\r\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash;\r\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset;\r\n\t\t\t} else {\r\n\t\t\t\tlineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index);\r\n\t\t\t\tlineColor = helpers.valueAtIndexOrDefault(gridLines.color, index);\r\n\t\t\t\tborderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash);\r\n\t\t\t\tborderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);\r\n\t\t\t}\r\n\r\n\t\t\t// Common properties\r\n\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;\r\n\t\t\tvar textAlign = 'middle';\r\n\t\t\tvar textBaseline = 'middle';\r\n\t\t\tvar tickPadding = optionTicks.padding;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tvar labelYOffset = tl + tickPadding;\r\n\r\n\t\t\t\tif (options.position === 'bottom') {\r\n\t\t\t\t\t// bottom\r\n\t\t\t\t\ttextBaseline = !isRotated ? 'top' : 'middle';\r\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'right';\r\n\t\t\t\t\tlabelY = me.top + labelYOffset;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// top\r\n\t\t\t\t\ttextBaseline = !isRotated ? 'bottom' : 'middle';\r\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'left';\r\n\t\t\t\t\tlabelY = me.bottom - labelYOffset;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\r\n\t\t\t\tif (xLineValue < me.left) {\r\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\r\n\t\t\t\t}\r\n\t\t\t\txLineValue += helpers.aliasPixel(lineWidth);\r\n\r\n\t\t\t\tlabelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)\r\n\r\n\t\t\t\ttx1 = tx2 = x1 = x2 = xLineValue;\r\n\t\t\t\tty1 = yTickStart;\r\n\t\t\t\tty2 = yTickEnd;\r\n\t\t\t\ty1 = chartArea.top;\r\n\t\t\t\ty2 = chartArea.bottom + axisWidth;\r\n\t\t\t} else {\r\n\t\t\t\tvar isLeft = options.position === 'left';\r\n\t\t\t\tvar labelXOffset;\r\n\r\n\t\t\t\tif (optionTicks.mirror) {\r\n\t\t\t\t\ttextAlign = isLeft ? 'left' : 'right';\r\n\t\t\t\t\tlabelXOffset = tickPadding;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttextAlign = isLeft ? 'right' : 'left';\r\n\t\t\t\t\tlabelXOffset = tl + tickPadding;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlabelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;\r\n\r\n\t\t\t\tvar yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\r\n\t\t\t\tif (yLineValue < me.top) {\r\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\r\n\t\t\t\t}\r\n\t\t\t\tyLineValue += helpers.aliasPixel(lineWidth);\r\n\r\n\t\t\t\tlabelY = me.getPixelForTick(index) + optionTicks.labelOffset;\r\n\r\n\t\t\t\ttx1 = xTickStart;\r\n\t\t\t\ttx2 = xTickEnd;\r\n\t\t\t\tx1 = chartArea.left;\r\n\t\t\t\tx2 = chartArea.right + axisWidth;\r\n\t\t\t\tty1 = ty2 = y1 = y2 = yLineValue;\r\n\t\t\t}\r\n\r\n\t\t\titemsToDraw.push({\r\n\t\t\t\ttx1: tx1,\r\n\t\t\t\tty1: ty1,\r\n\t\t\t\ttx2: tx2,\r\n\t\t\t\tty2: ty2,\r\n\t\t\t\tx1: x1,\r\n\t\t\t\ty1: y1,\r\n\t\t\t\tx2: x2,\r\n\t\t\t\ty2: y2,\r\n\t\t\t\tlabelX: labelX,\r\n\t\t\t\tlabelY: labelY,\r\n\t\t\t\tglWidth: lineWidth,\r\n\t\t\t\tglColor: lineColor,\r\n\t\t\t\tglBorderDash: borderDash,\r\n\t\t\t\tglBorderDashOffset: borderDashOffset,\r\n\t\t\t\trotation: -1 * labelRotationRadians,\r\n\t\t\t\tlabel: label,\r\n\t\t\t\tmajor: tick.major,\r\n\t\t\t\ttextBaseline: textBaseline,\r\n\t\t\t\ttextAlign: textAlign\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\r\n\t\thelpers.each(itemsToDraw, function(itemToDraw) {\r\n\t\t\tif (gridLines.display) {\r\n\t\t\t\tcontext.save();\r\n\t\t\t\tcontext.lineWidth = itemToDraw.glWidth;\r\n\t\t\t\tcontext.strokeStyle = itemToDraw.glColor;\r\n\t\t\t\tif (context.setLineDash) {\r\n\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\r\n\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontext.beginPath();\r\n\r\n\t\t\t\tif (gridLines.drawTicks) {\r\n\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\r\n\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (gridLines.drawOnChartArea) {\r\n\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\r\n\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontext.stroke();\r\n\t\t\t\tcontext.restore();\r\n\t\t\t}\r\n\r\n\t\t\tif (optionTicks.display) {\r\n\t\t\t\t// Make sure we draw text in the correct color and font\r\n\t\t\t\tcontext.save();\r\n\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\r\n\t\t\t\tcontext.rotate(itemToDraw.rotation);\r\n\t\t\t\tcontext.font = itemToDraw.major ? majorTickFont.font : tickFont.font;\r\n\t\t\t\tcontext.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;\r\n\t\t\t\tcontext.textBaseline = itemToDraw.textBaseline;\r\n\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\r\n\r\n\t\t\t\tvar label = itemToDraw.label;\r\n\t\t\t\tif (helpers.isArray(label)) {\r\n\t\t\t\t\tvar lineCount = label.length;\r\n\t\t\t\t\tvar lineHeight = tickFont.size * 1.5;\r\n\t\t\t\t\tvar y = me.isHorizontal() ? 0 : -lineHeight * (lineCount - 1) / 2;\r\n\r\n\t\t\t\t\tfor (var i = 0; i < lineCount; ++i) {\r\n\t\t\t\t\t\t// We just make sure the multiline element is a string here..\r\n\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\r\n\t\t\t\t\t\t// apply same lineSpacing as calculated @ L#320\r\n\t\t\t\t\t\ty += lineHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontext.fillText(label, 0, 0);\r\n\t\t\t\t}\r\n\t\t\t\tcontext.restore();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (scaleLabel.display) {\r\n\t\t\t// Draw the scale label\r\n\t\t\tvar scaleLabelX;\r\n\t\t\tvar scaleLabelY;\r\n\t\t\tvar rotation = 0;\r\n\t\t\tvar halfLineHeight = parseLineHeight(scaleLabel) / 2;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\r\n\t\t\t\tscaleLabelY = options.position === 'bottom'\r\n\t\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\r\n\t\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\r\n\t\t\t} else {\r\n\t\t\t\tvar isLeft = options.position === 'left';\r\n\t\t\t\tscaleLabelX = isLeft\r\n\t\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\r\n\t\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\r\n\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\r\n\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\r\n\t\t\t}\r\n\r\n\t\t\tcontext.save();\r\n\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\r\n\t\t\tcontext.rotate(rotation);\r\n\t\t\tcontext.textAlign = 'center';\r\n\t\t\tcontext.textBaseline = 'middle';\r\n\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\r\n\t\t\tcontext.font = scaleLabelFont.font;\r\n\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\r\n\t\t\tcontext.restore();\r\n\t\t}\r\n\r\n\t\tif (gridLines.drawBorder) {\r\n\t\t\t// Draw the line at the edge of the axis\r\n\t\t\tcontext.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0);\r\n\t\t\tcontext.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0);\r\n\t\t\tvar x1 = me.left;\r\n\t\t\tvar x2 = me.right + axisWidth;\r\n\t\t\tvar y1 = me.top;\r\n\t\t\tvar y2 = me.bottom + axisWidth;\r\n\r\n\t\t\tvar aliasPixel = helpers.aliasPixel(context.lineWidth);\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\ty1 = y2 = options.position === 'top' ? me.bottom : me.top;\r\n\t\t\t\ty1 += aliasPixel;\r\n\t\t\t\ty2 += aliasPixel;\r\n\t\t\t} else {\r\n\t\t\t\tx1 = x2 = options.position === 'left' ? me.right : me.left;\r\n\t\t\t\tx1 += aliasPixel;\r\n\t\t\t\tx2 += aliasPixel;\r\n\t\t\t}\r\n\r\n\t\t\tcontext.beginPath();\r\n\t\t\tcontext.moveTo(x1, y1);\r\n\t\t\tcontext.lineTo(x2, y2);\r\n\t\t\tcontext.stroke();\r\n\t\t}\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"35\":35,\"46\":46}],34:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar layouts = require(31);\r\n\r\nmodule.exports = {\r\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\r\n\t// use the new chart options to grab the correct scale\r\n\tconstructors: {},\r\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\r\n\t// old browsers\r\n\r\n\t// Scale config defaults\r\n\tdefaults: {},\r\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\r\n\t\tthis.constructors[type] = scaleConstructor;\r\n\t\tthis.defaults[type] = helpers.clone(scaleDefaults);\r\n\t},\r\n\tgetScaleConstructor: function(type) {\r\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\r\n\t},\r\n\tgetScaleDefaults: function(type) {\r\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\r\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {};\r\n\t},\r\n\tupdateScaleDefaults: function(type, additions) {\r\n\t\tvar me = this;\r\n\t\tif (me.defaults.hasOwnProperty(type)) {\r\n\t\t\tme.defaults[type] = helpers.extend(me.defaults[type], additions);\r\n\t\t}\r\n\t},\r\n\taddScalesToLayout: function(chart) {\r\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\r\n\t\thelpers.each(chart.scales, function(scale) {\r\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\r\n\t\t\tscale.fullWidth = scale.options.fullWidth;\r\n\t\t\tscale.position = scale.options.position;\r\n\t\t\tscale.weight = scale.options.weight;\r\n\t\t\tlayouts.addBox(chart, scale);\r\n\t\t});\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"31\":31,\"46\":46}],35:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\n/**\r\n * Namespace to hold static tick generation functions\r\n * @namespace Chart.Ticks\r\n */\r\nmodule.exports = {\r\n\t/**\r\n\t * Namespace to hold formatters for different types of ticks\r\n\t * @namespace Chart.Ticks.formatters\r\n\t */\r\n\tformatters: {\r\n\t\t/**\r\n\t\t * Formatter for value labels\r\n\t\t * @method Chart.Ticks.formatters.values\r\n\t\t * @param value the value to display\r\n\t\t * @return {String|Array} the label to display\r\n\t\t */\r\n\t\tvalues: function(value) {\r\n\t\t\treturn helpers.isArray(value) ? value : '' + value;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Formatter for linear numeric ticks\r\n\t\t * @method Chart.Ticks.formatters.linear\r\n\t\t * @param tickValue {Number} the value to be formatted\r\n\t\t * @param index {Number} the position of the tickValue parameter in the ticks array\r\n\t\t * @param ticks {Array} the list of ticks being converted\r\n\t\t * @return {String} string representation of the tickValue parameter\r\n\t\t */\r\n\t\tlinear: function(tickValue, index, ticks) {\r\n\t\t\t// If we have lots of ticks, don't use the ones\r\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\r\n\r\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\r\n\t\t\tif (Math.abs(delta) > 1) {\r\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\r\n\t\t\t\t\t// not an integer\r\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar logDelta = helpers.log10(Math.abs(delta));\r\n\t\t\tvar tickString = '';\r\n\r\n\t\t\tif (tickValue !== 0) {\r\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\r\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\r\n\t\t\t\t\tvar logTick = helpers.log10(Math.abs(tickValue));\r\n\t\t\t\t\ttickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\r\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\r\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\ttickString = '0'; // never show decimal places for 0\r\n\t\t\t}\r\n\r\n\t\t\treturn tickString;\r\n\t\t},\r\n\r\n\t\tlogarithmic: function(tickValue, index, ticks) {\r\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue))));\r\n\r\n\t\t\tif (tickValue === 0) {\r\n\t\t\t\treturn '0';\r\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\r\n\t\t\t\treturn tickValue.toExponential();\r\n\t\t\t}\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"46\":46}],36:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\ttooltips: {\r\n\t\tenabled: true,\r\n\t\tcustom: null,\r\n\t\tmode: 'nearest',\r\n\t\tposition: 'average',\r\n\t\tintersect: true,\r\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\r\n\t\ttitleFontStyle: 'bold',\r\n\t\ttitleSpacing: 2,\r\n\t\ttitleMarginBottom: 6,\r\n\t\ttitleFontColor: '#fff',\r\n\t\ttitleAlign: 'left',\r\n\t\tbodySpacing: 2,\r\n\t\tbodyFontColor: '#fff',\r\n\t\tbodyAlign: 'left',\r\n\t\tfooterFontStyle: 'bold',\r\n\t\tfooterSpacing: 2,\r\n\t\tfooterMarginTop: 6,\r\n\t\tfooterFontColor: '#fff',\r\n\t\tfooterAlign: 'left',\r\n\t\tyPadding: 6,\r\n\t\txPadding: 6,\r\n\t\tcaretPadding: 2,\r\n\t\tcaretSize: 5,\r\n\t\tcornerRadius: 6,\r\n\t\tmultiKeyBackground: '#fff',\r\n\t\tdisplayColors: true,\r\n\t\tborderColor: 'rgba(0,0,0,0)',\r\n\t\tborderWidth: 0,\r\n\t\tcallbacks: {\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeTitle: helpers.noop,\r\n\t\t\ttitle: function(tooltipItems, data) {\r\n\t\t\t\t// Pick first xLabel for now\r\n\t\t\t\tvar title = '';\r\n\t\t\t\tvar labels = data.labels;\r\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\r\n\r\n\t\t\t\tif (tooltipItems.length > 0) {\r\n\t\t\t\t\tvar item = tooltipItems[0];\r\n\r\n\t\t\t\t\tif (item.xLabel) {\r\n\t\t\t\t\t\ttitle = item.xLabel;\r\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\r\n\t\t\t\t\t\ttitle = labels[item.index];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn title;\r\n\t\t\t},\r\n\t\t\tafterTitle: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeBody: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItem, data)\r\n\t\t\tbeforeLabel: helpers.noop,\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\r\n\r\n\t\t\t\tif (label) {\r\n\t\t\t\t\tlabel += ': ';\r\n\t\t\t\t}\r\n\t\t\t\tlabel += tooltipItem.yLabel;\r\n\t\t\t\treturn label;\r\n\t\t\t},\r\n\t\t\tlabelColor: function(tooltipItem, chart) {\r\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\r\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\r\n\t\t\t\tvar view = activeElement._view;\r\n\t\t\t\treturn {\r\n\t\t\t\t\tborderColor: view.borderColor,\r\n\t\t\t\t\tbackgroundColor: view.backgroundColor\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tlabelTextColor: function() {\r\n\t\t\t\treturn this._options.bodyFontColor;\r\n\t\t\t},\r\n\t\t\tafterLabel: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tafterBody: helpers.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeFooter: helpers.noop,\r\n\t\t\tfooter: helpers.noop,\r\n\t\t\tafterFooter: helpers.noop\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar positioners = {\r\n\t/**\r\n\t * Average mode places the tooltip at the average position of the elements shown\r\n\t * @function Chart.Tooltip.positioners.average\r\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\r\n\t * @returns {Point} tooltip position\r\n\t */\r\n\taverage: function(elements) {\r\n\t\tif (!elements.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar i, len;\r\n\t\tvar x = 0;\r\n\t\tvar y = 0;\r\n\t\tvar count = 0;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar pos = el.tooltipPosition();\r\n\t\t\t\tx += pos.x;\r\n\t\t\t\ty += pos.y;\r\n\t\t\t\t++count;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: Math.round(x / count),\r\n\t\t\ty: Math.round(y / count)\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Gets the tooltip position nearest of the item nearest to the event position\r\n\t * @function Chart.Tooltip.positioners.nearest\r\n\t * @param elements {Chart.Element[]} the tooltip elements\r\n\t * @param eventPosition {Point} the position of the event in canvas coordinates\r\n\t * @returns {Point} the tooltip position\r\n\t */\r\n\tnearest: function(elements, eventPosition) {\r\n\t\tvar x = eventPosition.x;\r\n\t\tvar y = eventPosition.y;\r\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\t\tvar i, len, nearestElement;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar center = el.getCenterPoint();\r\n\t\t\t\tvar d = helpers.distanceBetweenPoints(eventPosition, center);\r\n\r\n\t\t\t\tif (d < minDistance) {\r\n\t\t\t\t\tminDistance = d;\r\n\t\t\t\t\tnearestElement = el;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (nearestElement) {\r\n\t\t\tvar tp = nearestElement.tooltipPosition();\r\n\t\t\tx = tp.x;\r\n\t\t\ty = tp.y;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: x,\r\n\t\t\ty: y\r\n\t\t};\r\n\t}\r\n};\r\n\r\n/**\r\n * Helper method to merge the opacity into a color\r\n */\r\nfunction mergeOpacity(colorString, opacity) {\r\n\tvar color = helpers.color(colorString);\r\n\treturn color.alpha(opacity * color.alpha()).rgbaString();\r\n}\r\n\r\n// Helper to push or concat based on if the 2nd parameter is an array or not\r\nfunction pushOrConcat(base, toPush) {\r\n\tif (toPush) {\r\n\t\tif (helpers.isArray(toPush)) {\r\n\t\t\t// base = base.concat(toPush);\r\n\t\t\tArray.prototype.push.apply(base, toPush);\r\n\t\t} else {\r\n\t\t\tbase.push(toPush);\r\n\t\t}\r\n\t}\r\n\r\n\treturn base;\r\n}\r\n\r\n/**\r\n * Returns array of strings split by newline\r\n * @param {String} value - The value to split by newline.\r\n * @returns {Array} value if newline present - Returned from String split() method\r\n * @function\r\n */\r\nfunction splitNewlines(str) {\r\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\r\n\t\treturn str.split('\\n');\r\n\t}\r\n\treturn str;\r\n}\r\n\r\n\r\n// Private helper to create a tooltip item model\r\n// @param element : the chart element (point, arc, bar) to create the tooltip item for\r\n// @return : new tooltip item\r\nfunction createTooltipItem(element) {\r\n\tvar xScale = element._xScale;\r\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\r\n\tvar index = element._index;\r\n\tvar datasetIndex = element._datasetIndex;\r\n\r\n\treturn {\r\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tindex: index,\r\n\t\tdatasetIndex: datasetIndex,\r\n\t\tx: element._model.x,\r\n\t\ty: element._model.y\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the reset model for the tooltip\r\n * @param tooltipOpts {Object} the tooltip options\r\n */\r\nfunction getBaseModel(tooltipOpts) {\r\n\tvar globalDefaults = defaults.global;\r\n\tvar valueOrDefault = helpers.valueOrDefault;\r\n\r\n\treturn {\r\n\t\t// Positioning\r\n\t\txPadding: tooltipOpts.xPadding,\r\n\t\tyPadding: tooltipOpts.yPadding,\r\n\t\txAlign: tooltipOpts.xAlign,\r\n\t\tyAlign: tooltipOpts.yAlign,\r\n\r\n\t\t// Body\r\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\r\n\t\t_bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\r\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\r\n\t\tbodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\r\n\t\tbodySpacing: tooltipOpts.bodySpacing,\r\n\r\n\t\t// Title\r\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\r\n\t\t_titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\r\n\t\ttitleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\r\n\t\t_titleAlign: tooltipOpts.titleAlign,\r\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\r\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\r\n\r\n\t\t// Footer\r\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\r\n\t\t_footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\r\n\t\tfooterFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\r\n\t\t_footerAlign: tooltipOpts.footerAlign,\r\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\r\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\r\n\r\n\t\t// Appearance\r\n\t\tcaretSize: tooltipOpts.caretSize,\r\n\t\tcornerRadius: tooltipOpts.cornerRadius,\r\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\r\n\t\topacity: 0,\r\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\r\n\t\tdisplayColors: tooltipOpts.displayColors,\r\n\t\tborderColor: tooltipOpts.borderColor,\r\n\t\tborderWidth: tooltipOpts.borderWidth\r\n\t};\r\n}\r\n\r\n/**\r\n * Get the size of the tooltip\r\n */\r\nfunction getTooltipSize(tooltip, model) {\r\n\tvar ctx = tooltip._chart.ctx;\r\n\r\n\tvar height = model.yPadding * 2; // Tooltip Padding\r\n\tvar width = 0;\r\n\r\n\t// Count of all lines in the body\r\n\tvar body = model.body;\r\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\r\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\r\n\t}, 0);\r\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\r\n\r\n\tvar titleLineCount = model.title.length;\r\n\tvar footerLineCount = model.footer.length;\r\n\tvar titleFontSize = model.titleFontSize;\r\n\tvar bodyFontSize = model.bodyFontSize;\r\n\tvar footerFontSize = model.footerFontSize;\r\n\r\n\theight += titleLineCount * titleFontSize; // Title Lines\r\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\r\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\r\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\r\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\r\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\r\n\theight += footerLineCount * (footerFontSize); // Footer Lines\r\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\r\n\r\n\t// Title width\r\n\tvar widthPadding = 0;\r\n\tvar maxLineWidth = function(line) {\r\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\r\n\t};\r\n\r\n\tctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\r\n\thelpers.each(model.title, maxLineWidth);\r\n\r\n\t// Body width\r\n\tctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\r\n\thelpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\r\n\r\n\t// Body lines may include some extra width due to the color box\r\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\r\n\thelpers.each(body, function(bodyItem) {\r\n\t\thelpers.each(bodyItem.before, maxLineWidth);\r\n\t\thelpers.each(bodyItem.lines, maxLineWidth);\r\n\t\thelpers.each(bodyItem.after, maxLineWidth);\r\n\t});\r\n\r\n\t// Reset back to 0\r\n\twidthPadding = 0;\r\n\r\n\t// Footer width\r\n\tctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\r\n\thelpers.each(model.footer, maxLineWidth);\r\n\r\n\t// Add padding\r\n\twidth += 2 * model.xPadding;\r\n\r\n\treturn {\r\n\t\twidth: width,\r\n\t\theight: height\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the alignment of a tooltip given the size\r\n */\r\nfunction determineAlignment(tooltip, size) {\r\n\tvar model = tooltip._model;\r\n\tvar chart = tooltip._chart;\r\n\tvar chartArea = tooltip._chart.chartArea;\r\n\tvar xAlign = 'center';\r\n\tvar yAlign = 'center';\r\n\r\n\tif (model.y < size.height) {\r\n\t\tyAlign = 'top';\r\n\t} else if (model.y > (chart.height - size.height)) {\r\n\t\tyAlign = 'bottom';\r\n\t}\r\n\r\n\tvar lf, rf; // functions to determine left, right alignment\r\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\r\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\r\n\tvar midX = (chartArea.left + chartArea.right) / 2;\r\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= midX;\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x > midX;\r\n\t\t};\r\n\t} else {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= (size.width / 2);\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x >= (chart.width - (size.width / 2));\r\n\t\t};\r\n\t}\r\n\r\n\tolf = function(x) {\r\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\r\n\t};\r\n\torf = function(x) {\r\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\r\n\t};\r\n\tyf = function(y) {\r\n\t\treturn y <= midY ? 'top' : 'bottom';\r\n\t};\r\n\r\n\tif (lf(model.x)) {\r\n\t\txAlign = 'left';\r\n\r\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\r\n\t\tif (olf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t} else if (rf(model.x)) {\r\n\t\txAlign = 'right';\r\n\r\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\r\n\t\tif (orf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t}\r\n\r\n\tvar opts = tooltip._options;\r\n\treturn {\r\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\r\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\r\n */\r\nfunction getBackgroundPoint(vm, size, alignment, chart) {\r\n\t// Background Position\r\n\tvar x = vm.x;\r\n\tvar y = vm.y;\r\n\r\n\tvar caretSize = vm.caretSize;\r\n\tvar caretPadding = vm.caretPadding;\r\n\tvar cornerRadius = vm.cornerRadius;\r\n\tvar xAlign = alignment.xAlign;\r\n\tvar yAlign = alignment.yAlign;\r\n\tvar paddingAndSize = caretSize + caretPadding;\r\n\tvar radiusAndPadding = cornerRadius + caretPadding;\r\n\r\n\tif (xAlign === 'right') {\r\n\t\tx -= size.width;\r\n\t} else if (xAlign === 'center') {\r\n\t\tx -= (size.width / 2);\r\n\t\tif (x + size.width > chart.width) {\r\n\t\t\tx = chart.width - size.width;\r\n\t\t}\r\n\t\tif (x < 0) {\r\n\t\t\tx = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tif (yAlign === 'top') {\r\n\t\ty += paddingAndSize;\r\n\t} else if (yAlign === 'bottom') {\r\n\t\ty -= size.height + paddingAndSize;\r\n\t} else {\r\n\t\ty -= (size.height / 2);\r\n\t}\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tif (xAlign === 'left') {\r\n\t\t\tx += paddingAndSize;\r\n\t\t} else if (xAlign === 'right') {\r\n\t\t\tx -= paddingAndSize;\r\n\t\t}\r\n\t} else if (xAlign === 'left') {\r\n\t\tx -= radiusAndPadding;\r\n\t} else if (xAlign === 'right') {\r\n\t\tx += radiusAndPadding;\r\n\t}\r\n\r\n\treturn {\r\n\t\tx: x,\r\n\t\ty: y\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to build before and after body lines\r\n */\r\nfunction getBeforeAfterBodyLines(callback) {\r\n\treturn pushOrConcat([], splitNewlines(callback));\r\n}\r\n\r\nvar exports = module.exports = Element.extend({\r\n\tinitialize: function() {\r\n\t\tthis._model = getBaseModel(this._options);\r\n\t\tthis._lastActive = [];\r\n\t},\r\n\r\n\t// Get the title\r\n\t// Args are: (tooltipItem, data)\r\n\tgetTitle: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\t\tvar callbacks = opts.callbacks;\r\n\r\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\r\n\t\tvar title = callbacks.title.apply(me, arguments);\r\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBeforeBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBody: function(tooltipItems, data) {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\t\tvar bodyItems = [];\r\n\r\n\t\thelpers.each(tooltipItems, function(tooltipItem) {\r\n\t\t\tvar bodyItem = {\r\n\t\t\t\tbefore: [],\r\n\t\t\t\tlines: [],\r\n\t\t\t\tafter: []\r\n\t\t\t};\r\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\r\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\r\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\r\n\r\n\t\t\tbodyItems.push(bodyItem);\r\n\t\t});\r\n\r\n\t\treturn bodyItems;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetAfterBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Get the footer and beforeFooter and afterFooter lines\r\n\t// Args are: (tooltipItem, data)\r\n\tgetFooter: function() {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\r\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\r\n\t\tvar footer = callbacks.footer.apply(me, arguments);\r\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\tupdate: function(changed) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\r\n\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\r\n\t\t// that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\r\n\t\t// which breaks any animations.\r\n\t\tvar existingModel = me._model;\r\n\t\tvar model = me._model = getBaseModel(opts);\r\n\t\tvar active = me._active;\r\n\r\n\t\tvar data = me._data;\r\n\r\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\r\n\t\tvar alignment = {\r\n\t\t\txAlign: existingModel.xAlign,\r\n\t\t\tyAlign: existingModel.yAlign\r\n\t\t};\r\n\t\tvar backgroundPoint = {\r\n\t\t\tx: existingModel.x,\r\n\t\t\ty: existingModel.y\r\n\t\t};\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: existingModel.width,\r\n\t\t\theight: existingModel.height\r\n\t\t};\r\n\t\tvar tooltipPosition = {\r\n\t\t\tx: existingModel.caretX,\r\n\t\t\ty: existingModel.caretY\r\n\t\t};\r\n\r\n\t\tvar i, len;\r\n\r\n\t\tif (active.length) {\r\n\t\t\tmodel.opacity = 1;\r\n\r\n\t\t\tvar labelColors = [];\r\n\t\t\tvar labelTextColors = [];\r\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\r\n\r\n\t\t\tvar tooltipItems = [];\r\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\r\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\r\n\t\t\tif (opts.filter) {\r\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\r\n\t\t\t\t\treturn opts.filter(a, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\r\n\t\t\tif (opts.itemSort) {\r\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\r\n\t\t\t\t\treturn opts.itemSort(a, b, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Determine colors for boxes\r\n\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\r\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\r\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\r\n\t\t\t});\r\n\r\n\r\n\t\t\t// Build the Text Lines\r\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\r\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\r\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\r\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\r\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\r\n\r\n\t\t\t// Initial positioning and colors\r\n\t\t\tmodel.x = Math.round(tooltipPosition.x);\r\n\t\t\tmodel.y = Math.round(tooltipPosition.y);\r\n\t\t\tmodel.caretPadding = opts.caretPadding;\r\n\t\t\tmodel.labelColors = labelColors;\r\n\t\t\tmodel.labelTextColors = labelTextColors;\r\n\r\n\t\t\t// data points\r\n\t\t\tmodel.dataPoints = tooltipItems;\r\n\r\n\t\t\t// We need to determine alignment of the tooltip\r\n\t\t\ttooltipSize = getTooltipSize(this, model);\r\n\t\t\talignment = determineAlignment(this, tooltipSize);\r\n\t\t\t// Final Size and Position\r\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\r\n\t\t} else {\r\n\t\t\tmodel.opacity = 0;\r\n\t\t}\r\n\r\n\t\tmodel.xAlign = alignment.xAlign;\r\n\t\tmodel.yAlign = alignment.yAlign;\r\n\t\tmodel.x = backgroundPoint.x;\r\n\t\tmodel.y = backgroundPoint.y;\r\n\t\tmodel.width = tooltipSize.width;\r\n\t\tmodel.height = tooltipSize.height;\r\n\r\n\t\t// Point where the caret on the tooltip points to\r\n\t\tmodel.caretX = tooltipPosition.x;\r\n\t\tmodel.caretY = tooltipPosition.y;\r\n\r\n\t\tme._model = model;\r\n\r\n\t\tif (changed && opts.custom) {\r\n\t\t\topts.custom.call(me, model);\r\n\t\t}\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tdrawCaret: function(tooltipPoint, size) {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\r\n\r\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\r\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\r\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\r\n\t},\r\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\r\n\t\tvar x1, x2, x3, y1, y2, y3;\r\n\t\tvar caretSize = vm.caretSize;\r\n\t\tvar cornerRadius = vm.cornerRadius;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar ptX = tooltipPoint.x;\r\n\t\tvar ptY = tooltipPoint.y;\r\n\t\tvar width = size.width;\r\n\t\tvar height = size.height;\r\n\r\n\t\tif (yAlign === 'center') {\r\n\t\t\ty2 = ptY + (height / 2);\r\n\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx1 = ptX;\r\n\t\t\t\tx2 = x1 - caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 + caretSize;\r\n\t\t\t\ty3 = y2 - caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx1 = ptX + width;\r\n\t\t\t\tx2 = x1 + caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 - caretSize;\r\n\t\t\t\ty3 = y2 + caretSize;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else if (xAlign === 'right') {\r\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx2 = vm.caretX;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t}\r\n\t\t\tif (yAlign === 'top') {\r\n\t\t\t\ty1 = ptY;\r\n\t\t\t\ty2 = y1 - caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t} else {\r\n\t\t\t\ty1 = ptY + height;\r\n\t\t\t\ty2 = y1 + caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t\t// invert drawing order\r\n\t\t\t\tvar tmp = x3;\r\n\t\t\t\tx3 = x1;\r\n\t\t\t\tx1 = tmp;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\r\n\t},\r\n\r\n\tdrawTitle: function(pt, vm, ctx, opacity) {\r\n\t\tvar title = vm.title;\r\n\r\n\t\tif (title.length) {\r\n\t\t\tctx.textAlign = vm._titleAlign;\r\n\t\t\tctx.textBaseline = 'top';\r\n\r\n\t\t\tvar titleFontSize = vm.titleFontSize;\r\n\t\t\tvar titleSpacing = vm.titleSpacing;\r\n\r\n\t\t\tctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity);\r\n\t\t\tctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\r\n\r\n\t\t\tvar i, len;\r\n\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\r\n\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\r\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\r\n\r\n\t\t\t\tif (i + 1 === title.length) {\r\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBody: function(pt, vm, ctx, opacity) {\r\n\t\tvar bodyFontSize = vm.bodyFontSize;\r\n\t\tvar bodySpacing = vm.bodySpacing;\r\n\t\tvar body = vm.body;\r\n\r\n\t\tctx.textAlign = vm._bodyAlign;\r\n\t\tctx.textBaseline = 'top';\r\n\t\tctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\r\n\r\n\t\t// Before Body\r\n\t\tvar xLinePadding = 0;\r\n\t\tvar fillLineOfText = function(line) {\r\n\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\r\n\t\t\tpt.y += bodyFontSize + bodySpacing;\r\n\t\t};\r\n\r\n\t\t// Before body lines\r\n\t\tctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity);\r\n\t\thelpers.each(vm.beforeBody, fillLineOfText);\r\n\r\n\t\tvar drawColorBoxes = vm.displayColors;\r\n\t\txLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;\r\n\r\n\t\t// Draw body lines now\r\n\t\thelpers.each(body, function(bodyItem, i) {\r\n\t\t\tvar textColor = mergeOpacity(vm.labelTextColors[i], opacity);\r\n\t\t\tctx.fillStyle = textColor;\r\n\t\t\thelpers.each(bodyItem.before, fillLineOfText);\r\n\r\n\t\t\thelpers.each(bodyItem.lines, function(line) {\r\n\t\t\t\t// Draw Legend-like boxes if needed\r\n\t\t\t\tif (drawColorBoxes) {\r\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\r\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity);\r\n\t\t\t\t\tctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Border\r\n\t\t\t\t\tctx.lineWidth = 1;\r\n\t\t\t\t\tctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity);\r\n\t\t\t\t\tctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Inner square\r\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity);\r\n\t\t\t\t\tctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\r\n\t\t\t\t\tctx.fillStyle = textColor;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfillLineOfText(line);\r\n\t\t\t});\r\n\r\n\t\t\thelpers.each(bodyItem.after, fillLineOfText);\r\n\t\t});\r\n\r\n\t\t// Reset back to 0 for after body\r\n\t\txLinePadding = 0;\r\n\r\n\t\t// After body lines\r\n\t\thelpers.each(vm.afterBody, fillLineOfText);\r\n\t\tpt.y -= bodySpacing; // Remove last body spacing\r\n\t},\r\n\r\n\tdrawFooter: function(pt, vm, ctx, opacity) {\r\n\t\tvar footer = vm.footer;\r\n\r\n\t\tif (footer.length) {\r\n\t\t\tpt.y += vm.footerMarginTop;\r\n\r\n\t\t\tctx.textAlign = vm._footerAlign;\r\n\t\t\tctx.textBaseline = 'top';\r\n\r\n\t\t\tctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity);\r\n\t\t\tctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\r\n\r\n\t\t\thelpers.each(footer, function(line) {\r\n\t\t\t\tctx.fillText(line, pt.x, pt.y);\r\n\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBackground: function(pt, vm, ctx, tooltipSize, opacity) {\r\n\t\tctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);\r\n\t\tctx.strokeStyle = mergeOpacity(vm.borderColor, opacity);\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar x = pt.x;\r\n\t\tvar y = pt.y;\r\n\t\tvar width = tooltipSize.width;\r\n\t\tvar height = tooltipSize.height;\r\n\t\tvar radius = vm.cornerRadius;\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.moveTo(x + radius, y);\r\n\t\tif (yAlign === 'top') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width - radius, y);\r\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'right') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width, y + height - radius);\r\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\r\n\t\tif (yAlign === 'bottom') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + radius, y + height);\r\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'left') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x, y + radius);\r\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\r\n\t\tctx.closePath();\r\n\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth > 0) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm.opacity === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: vm.width,\r\n\t\t\theight: vm.height\r\n\t\t};\r\n\t\tvar pt = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\r\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\r\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\r\n\r\n\t\t// Truthy/falsey value for empty tooltip\r\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\r\n\r\n\t\tif (this._options.enabled && hasTooltipContent) {\r\n\t\t\t// Draw Background\r\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize, opacity);\r\n\r\n\t\t\t// Draw Title, Body, and Footer\r\n\t\t\tpt.x += vm.xPadding;\r\n\t\t\tpt.y += vm.yPadding;\r\n\r\n\t\t\t// Titles\r\n\t\t\tthis.drawTitle(pt, vm, ctx, opacity);\r\n\r\n\t\t\t// Body\r\n\t\t\tthis.drawBody(pt, vm, ctx, opacity);\r\n\r\n\t\t\t// Footer\r\n\t\t\tthis.drawFooter(pt, vm, ctx, opacity);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t * @returns {Boolean} true if the tooltip changed\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar options = me._options;\r\n\t\tvar changed = false;\r\n\r\n\t\tme._lastActive = me._lastActive || [];\r\n\r\n\t\t// Find Active Elements for tooltips\r\n\t\tif (e.type === 'mouseout') {\r\n\t\t\tme._active = [];\r\n\t\t} else {\r\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\r\n\t\t}\r\n\r\n\t\t// Remember Last Actives\r\n\t\tchanged = !helpers.arrayEquals(me._active, me._lastActive);\r\n\r\n\t\t// Only handle target event on tooltip change\r\n\t\tif (changed) {\r\n\t\t\tme._lastActive = me._active;\r\n\r\n\t\t\tif (options.enabled || options.custom) {\r\n\t\t\t\tme._eventPosition = {\r\n\t\t\t\t\tx: e.x,\r\n\t\t\t\t\ty: e.y\r\n\t\t\t\t};\r\n\r\n\t\t\t\tme.update(true);\r\n\t\t\t\tme.pivot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\n/**\r\n * @namespace Chart.Tooltip.positioners\r\n */\r\nexports.positioners = positioners;\r\n\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],37:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\tarc: {\r\n\t\t\tbackgroundColor: defaults.global.defaultColor,\r\n\t\t\tborderColor: '#fff',\r\n\t\t\tborderWidth: 2\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = Element.extend({\r\n\tinLabelRange: function(mouseX) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tinRange: function(chartX, chartY) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\tvar pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY});\r\n\t\t\tvar\tangle = pointRelativePosition.angle;\r\n\t\t\tvar distance = pointRelativePosition.distance;\r\n\r\n\t\t\t// Sanitise angle range\r\n\t\t\tvar startAngle = vm.startAngle;\r\n\t\t\tvar endAngle = vm.endAngle;\r\n\t\t\twhile (endAngle < startAngle) {\r\n\t\t\t\tendAngle += 2.0 * Math.PI;\r\n\t\t\t}\r\n\t\t\twhile (angle > endAngle) {\r\n\t\t\t\tangle -= 2.0 * Math.PI;\r\n\t\t\t}\r\n\t\t\twhile (angle < startAngle) {\r\n\t\t\t\tangle += 2.0 * Math.PI;\r\n\t\t\t}\r\n\r\n\t\t\t// Check if within the range of the open/close angle\r\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\r\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\r\n\r\n\t\t\treturn (betweenAngles && withinRadius);\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\r\n\t\treturn {\r\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\r\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\r\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\r\n\r\n\t\treturn {\r\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\r\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar sA = vm.startAngle;\r\n\t\tvar eA = vm.endAngle;\r\n\r\n\t\tctx.beginPath();\r\n\r\n\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\r\n\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\r\n\r\n\t\tctx.closePath();\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\r\n\t\tctx.fill();\r\n\t\tctx.lineJoin = 'bevel';\r\n\r\n\t\tif (vm.borderWidth) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],38:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\nvar globalDefaults = defaults.global;\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0.4,\r\n\t\t\tbackgroundColor: globalDefaults.defaultColor,\r\n\t\t\tborderWidth: 3,\r\n\t\t\tborderColor: globalDefaults.defaultColor,\r\n\t\t\tborderCapStyle: 'butt',\r\n\t\t\tborderDash: [],\r\n\t\t\tborderDashOffset: 0.0,\r\n\t\t\tborderJoinStyle: 'miter',\r\n\t\t\tcapBezierPoints: true,\r\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\r\n\t\t}\r\n\t}\r\n});\r\n\r\nmodule.exports = Element.extend({\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar vm = me._view;\r\n\t\tvar ctx = me._chart.ctx;\r\n\t\tvar spanGaps = vm.spanGaps;\r\n\t\tvar points = me._children.slice(); // clone array\r\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\r\n\t\tvar lastDrawnIndex = -1;\r\n\t\tvar index, current, previous, currentVM;\r\n\r\n\t\t// If we are looping, adding the first point again\r\n\t\tif (me._loop && points.length) {\r\n\t\t\tpoints.push(points[0]);\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\t// Stroke Line Options\r\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\r\n\r\n\t\t// IE 9 and 10 do not support line dash\r\n\t\tif (ctx.setLineDash) {\r\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\r\n\t\t}\r\n\r\n\t\tctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\r\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\r\n\t\tctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\r\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\r\n\r\n\t\t// Stroke Line\r\n\t\tctx.beginPath();\r\n\t\tlastDrawnIndex = -1;\r\n\r\n\t\tfor (index = 0; index < points.length; ++index) {\r\n\t\t\tcurrent = points[index];\r\n\t\t\tprevious = helpers.previousItem(points, index);\r\n\t\t\tcurrentVM = current._view;\r\n\r\n\t\t\t// First point moves to it's starting position no matter what\r\n\t\t\tif (index === 0) {\r\n\t\t\t\tif (!currentVM.skip) {\r\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\r\n\r\n\t\t\t\tif (!currentVM.skip) {\r\n\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\r\n\t\t\t\t\t\t// There was a gap and this is the first point after the gap\r\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Line to next point\r\n\t\t\t\t\t\thelpers.canvas.lineTo(ctx, previous._view, current._view);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],39:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\n\r\nvar defaultColor = defaults.global.defaultColor;\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\tpoint: {\r\n\t\t\tradius: 3,\r\n\t\t\tpointStyle: 'circle',\r\n\t\t\tbackgroundColor: defaultColor,\r\n\t\t\tborderColor: defaultColor,\r\n\t\t\tborderWidth: 1,\r\n\t\t\t// Hover\r\n\t\t\thitRadius: 1,\r\n\t\t\thoverRadius: 4,\r\n\t\t\thoverBorderWidth: 1\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction xRange(mouseX) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nfunction yRange(mouseY) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nmodule.exports = Element.extend({\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\r\n\t},\r\n\r\n\tinLabelRange: xRange,\r\n\tinXRange: xRange,\r\n\tinYRange: yRange,\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tpadding: vm.radius + vm.borderWidth\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar vm = this._view;\r\n\t\tvar model = this._model;\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar pointStyle = vm.pointStyle;\r\n\t\tvar rotation = vm.rotation;\r\n\t\tvar radius = vm.radius;\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)\r\n\r\n\t\tif (vm.skip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Clipping for Points.\r\n\t\tif (chartArea === undefined || (model.x >= chartArea.left && chartArea.right * errMargin >= model.x && model.y >= chartArea.top && chartArea.bottom * errMargin >= model.y)) {\r\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\r\n\t\t\tctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);\r\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\r\n\t\t\thelpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\r\n\t\t}\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27,\"46\":46}],40:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\n\r\ndefaults._set('global', {\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tbackgroundColor: defaults.global.defaultColor,\r\n\t\t\tborderColor: defaults.global.defaultColor,\r\n\t\t\tborderSkipped: 'bottom',\r\n\t\t\tborderWidth: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction isVertical(bar) {\r\n\treturn bar._view.width !== undefined;\r\n}\r\n\r\n/**\r\n * Helper function to get the bounds of the bar regardless of the orientation\r\n * @param bar {Chart.Element.Rectangle} the bar\r\n * @return {Bounds} bounds of the bar\r\n * @private\r\n */\r\nfunction getBarBounds(bar) {\r\n\tvar vm = bar._view;\r\n\tvar x1, x2, y1, y2;\r\n\r\n\tif (isVertical(bar)) {\r\n\t\t// vertical\r\n\t\tvar halfWidth = vm.width / 2;\r\n\t\tx1 = vm.x - halfWidth;\r\n\t\tx2 = vm.x + halfWidth;\r\n\t\ty1 = Math.min(vm.y, vm.base);\r\n\t\ty2 = Math.max(vm.y, vm.base);\r\n\t} else {\r\n\t\t// horizontal bar\r\n\t\tvar halfHeight = vm.height / 2;\r\n\t\tx1 = Math.min(vm.x, vm.base);\r\n\t\tx2 = Math.max(vm.x, vm.base);\r\n\t\ty1 = vm.y - halfHeight;\r\n\t\ty2 = vm.y + halfHeight;\r\n\t}\r\n\r\n\treturn {\r\n\t\tleft: x1,\r\n\t\ttop: y1,\r\n\t\tright: x2,\r\n\t\tbottom: y2\r\n\t};\r\n}\r\n\r\nmodule.exports = Element.extend({\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar left, right, top, bottom, signX, signY, borderSkipped;\r\n\t\tvar borderWidth = vm.borderWidth;\r\n\r\n\t\tif (!vm.horizontal) {\r\n\t\t\t// bar\r\n\t\t\tleft = vm.x - vm.width / 2;\r\n\t\t\tright = vm.x + vm.width / 2;\r\n\t\t\ttop = vm.y;\r\n\t\t\tbottom = vm.base;\r\n\t\t\tsignX = 1;\r\n\t\t\tsignY = bottom > top ? 1 : -1;\r\n\t\t\tborderSkipped = vm.borderSkipped || 'bottom';\r\n\t\t} else {\r\n\t\t\t// horizontal bar\r\n\t\t\tleft = vm.base;\r\n\t\t\tright = vm.x;\r\n\t\t\ttop = vm.y - vm.height / 2;\r\n\t\t\tbottom = vm.y + vm.height / 2;\r\n\t\t\tsignX = right > left ? 1 : -1;\r\n\t\t\tsignY = 1;\r\n\t\t\tborderSkipped = vm.borderSkipped || 'left';\r\n\t\t}\r\n\r\n\t\t// Canvas doesn't allow us to stroke inside the width so we can\r\n\t\t// adjust the sizes to fit if we're setting a stroke on the line\r\n\t\tif (borderWidth) {\r\n\t\t\t// borderWidth shold be less than bar width and bar height.\r\n\t\t\tvar barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\r\n\t\t\tborderWidth = borderWidth > barSize ? barSize : borderWidth;\r\n\t\t\tvar halfStroke = borderWidth / 2;\r\n\t\t\t// Adjust borderWidth when bar top position is near vm.base(zero).\r\n\t\t\tvar borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\r\n\t\t\tvar borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\r\n\t\t\tvar borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\r\n\t\t\tvar borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\r\n\t\t\t// not become a vertical line?\r\n\t\t\tif (borderLeft !== borderRight) {\r\n\t\t\t\ttop = borderTop;\r\n\t\t\t\tbottom = borderBottom;\r\n\t\t\t}\r\n\t\t\t// not become a horizontal line?\r\n\t\t\tif (borderTop !== borderBottom) {\r\n\t\t\t\tleft = borderLeft;\r\n\t\t\t\tright = borderRight;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\t\tctx.lineWidth = borderWidth;\r\n\r\n\t\t// Corner points, from bottom-left to bottom-right clockwise\r\n\t\t// | 1 2 |\r\n\t\t// | 0 3 |\r\n\t\tvar corners = [\r\n\t\t\t[left, bottom],\r\n\t\t\t[left, top],\r\n\t\t\t[right, top],\r\n\t\t\t[right, bottom]\r\n\t\t];\r\n\r\n\t\t// Find first (starting) corner with fallback to 'bottom'\r\n\t\tvar borders = ['bottom', 'left', 'top', 'right'];\r\n\t\tvar startCorner = borders.indexOf(borderSkipped, 0);\r\n\t\tif (startCorner === -1) {\r\n\t\t\tstartCorner = 0;\r\n\t\t}\r\n\r\n\t\tfunction cornerAt(index) {\r\n\t\t\treturn corners[(startCorner + index) % 4];\r\n\t\t}\r\n\r\n\t\t// Draw rectangle from 'startCorner'\r\n\t\tvar corner = cornerAt(0);\r\n\t\tctx.moveTo(corner[0], corner[1]);\r\n\r\n\t\tfor (var i = 1; i < 4; i++) {\r\n\t\t\tcorner = cornerAt(i);\r\n\t\t\tctx.lineTo(corner[0], corner[1]);\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tif (borderWidth) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\theight: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.base - vm.y;\r\n\t},\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar inRange = false;\r\n\r\n\t\tif (this._view) {\r\n\t\t\tvar bounds = getBarBounds(this);\r\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\r\n\t\t}\r\n\r\n\t\treturn inRange;\r\n\t},\r\n\r\n\tinLabelRange: function(mouseX, mouseY) {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar inRange = false;\r\n\t\tvar bounds = getBarBounds(me);\r\n\r\n\t\tif (isVertical(me)) {\r\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right;\r\n\t\t} else {\r\n\t\t\tinRange = mouseY >= bounds.top && mouseY <= bounds.bottom;\r\n\t\t}\r\n\r\n\t\treturn inRange;\r\n\t},\r\n\r\n\tinXRange: function(mouseX) {\r\n\t\tvar bounds = getBarBounds(this);\r\n\t\treturn mouseX >= bounds.left && mouseX <= bounds.right;\r\n\t},\r\n\r\n\tinYRange: function(mouseY) {\r\n\t\tvar bounds = getBarBounds(this);\r\n\t\treturn mouseY >= bounds.top && mouseY <= bounds.bottom;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar x, y;\r\n\t\tif (isVertical(this)) {\r\n\t\t\tx = vm.x;\r\n\t\t\ty = (vm.y + vm.base) / 2;\r\n\t\t} else {\r\n\t\t\tx = (vm.x + vm.base) / 2;\r\n\t\t\ty = vm.y;\r\n\t\t}\r\n\r\n\t\treturn {x: x, y: y};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.width * Math.abs(vm.y - vm.base);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t}\r\n});\r\n\r\n},{\"26\":26,\"27\":27}],41:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = {};\r\nmodule.exports.Arc = require(37);\r\nmodule.exports.Line = require(38);\r\nmodule.exports.Point = require(39);\r\nmodule.exports.Rectangle = require(40);\r\n\r\n},{\"37\":37,\"38\":38,\"39\":39,\"40\":40}],42:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(43);\r\n\r\n/**\r\n * @namespace Chart.helpers.canvas\r\n */\r\nvar exports = module.exports = {\r\n\t/**\r\n\t * Clears the entire canvas associated to the given `chart`.\r\n\t * @param {Chart} chart - The chart for which to clear the canvas.\r\n\t */\r\n\tclear: function(chart) {\r\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\r\n\t * given size (width, height) and the same `radius` for all corners.\r\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\r\n\t * @param {Number} x - The x axis of the coordinate for the rectangle starting point.\r\n\t * @param {Number} y - The y axis of the coordinate for the rectangle starting point.\r\n\t * @param {Number} width - The rectangle's width.\r\n\t * @param {Number} height - The rectangle's height.\r\n\t * @param {Number} radius - The rounded amount (in pixels) for the four corners.\r\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\r\n\t */\r\n\troundedRect: function(ctx, x, y, width, height, radius) {\r\n\t\tif (radius) {\r\n\t\t\t// NOTE(SB) `epsilon` helps to prevent minor artifacts appearing\r\n\t\t\t// on Chrome when `r` is exactly half the height or the width.\r\n\t\t\tvar epsilon = 0.0000001;\r\n\t\t\tvar r = Math.min(radius, (height / 2) - epsilon, (width / 2) - epsilon);\r\n\r\n\t\t\tctx.moveTo(x + r, y);\r\n\t\t\tctx.lineTo(x + width - r, y);\r\n\t\t\tctx.arcTo(x + width, y, x + width, y + r, r);\r\n\t\t\tctx.lineTo(x + width, y + height - r);\r\n\t\t\tctx.arcTo(x + width, y + height, x + width - r, y + height, r);\r\n\t\t\tctx.lineTo(x + r, y + height);\r\n\t\t\tctx.arcTo(x, y + height, x, y + height - r, r);\r\n\t\t\tctx.lineTo(x, y + r);\r\n\t\t\tctx.arcTo(x, y, x + r, y, r);\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t} else {\r\n\t\t\tctx.rect(x, y, width, height);\r\n\t\t}\r\n\t},\r\n\r\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\r\n\t\tvar type, edgeLength, xOffset, yOffset, height, size;\r\n\t\trotation = rotation || 0;\r\n\r\n\t\tif (style && typeof style === 'object') {\r\n\t\t\ttype = style.toString();\r\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\r\n\t\t\t\tctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNaN(radius) || radius <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.translate(x, y);\r\n\t\tctx.rotate(rotation * Math.PI / 180);\r\n\t\tctx.beginPath();\r\n\r\n\t\tswitch (style) {\r\n\t\t// Default includes circle\r\n\t\tdefault:\r\n\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'triangle':\r\n\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\r\n\t\t\theight = edgeLength * Math.sqrt(3) / 2;\r\n\t\t\tctx.moveTo(-edgeLength / 2, height / 3);\r\n\t\t\tctx.lineTo(edgeLength / 2, height / 3);\r\n\t\t\tctx.lineTo(0, -2 * height / 3);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tsize = 1 / Math.SQRT2 * radius;\r\n\t\t\tctx.rect(-size, -size, 2 * size, 2 * size);\r\n\t\t\tbreak;\r\n\t\tcase 'rectRounded':\r\n\t\t\tvar offset = radius / Math.SQRT2;\r\n\t\t\tvar leftX = -offset;\r\n\t\t\tvar topY = -offset;\r\n\t\t\tvar sideSize = Math.SQRT2 * radius;\r\n\r\n\t\t\t// NOTE(SB) the rounded rect implementation changed to use `arcTo`\r\n\t\t\t// instead of `quadraticCurveTo` since it generates better results\r\n\t\t\t// when rect is almost a circle. 0.425 (instead of 0.5) produces\r\n\t\t\t// results visually closer to the previous impl.\r\n\t\t\tthis.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius * 0.425);\r\n\t\t\tbreak;\r\n\t\tcase 'rectRot':\r\n\t\t\tsize = 1 / Math.SQRT2 * radius;\r\n\t\t\tctx.moveTo(-size, 0);\r\n\t\t\tctx.lineTo(0, size);\r\n\t\t\tctx.lineTo(size, 0);\r\n\t\t\tctx.lineTo(0, -size);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'cross':\r\n\t\t\tctx.moveTo(0, radius);\r\n\t\t\tctx.lineTo(0, -radius);\r\n\t\t\tctx.moveTo(-radius, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\tbreak;\r\n\t\tcase 'crossRot':\r\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\r\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\r\n\t\t\tctx.moveTo(-xOffset, -yOffset);\r\n\t\t\tctx.lineTo(xOffset, yOffset);\r\n\t\t\tctx.moveTo(-xOffset, yOffset);\r\n\t\t\tctx.lineTo(xOffset, -yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'star':\r\n\t\t\tctx.moveTo(0, radius);\r\n\t\t\tctx.lineTo(0, -radius);\r\n\t\t\tctx.moveTo(-radius, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\r\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\r\n\t\t\tctx.moveTo(-xOffset, -yOffset);\r\n\t\t\tctx.lineTo(xOffset, yOffset);\r\n\t\t\tctx.moveTo(-xOffset, yOffset);\r\n\t\t\tctx.lineTo(xOffset, -yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\tctx.moveTo(-radius, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\tbreak;\r\n\t\tcase 'dash':\r\n\t\t\tctx.moveTo(0, 0);\r\n\t\t\tctx.lineTo(radius, 0);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tclipArea: function(ctx, area) {\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\r\n\t\tctx.clip();\r\n\t},\r\n\r\n\tunclipArea: function(ctx) {\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tlineTo: function(ctx, previous, target, flip) {\r\n\t\tif (target.steppedLine) {\r\n\t\t\tif ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) {\r\n\t\t\t\tctx.lineTo(previous.x, target.y);\r\n\t\t\t} else {\r\n\t\t\t\tctx.lineTo(target.x, previous.y);\r\n\t\t\t}\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.tension) {\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.bezierCurveTo(\r\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\r\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\r\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\r\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\r\n\t\t\ttarget.x,\r\n\t\t\ttarget.y);\r\n\t}\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\r\n * @namespace Chart.helpers.clear\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.clear = exports.clear;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\r\n * @namespace Chart.helpers.drawRoundedRectangle\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.drawRoundedRectangle = function(ctx) {\r\n\tctx.beginPath();\r\n\texports.roundedRect.apply(exports, arguments);\r\n};\r\n\r\n},{\"43\":43}],43:[function(require,module,exports){\r\n'use strict';\r\n\r\n/**\r\n * @namespace Chart.helpers\r\n */\r\nvar helpers = {\r\n\t/**\r\n\t * An empty function that can be used, for example, for optional callback.\r\n\t */\r\n\tnoop: function() {},\r\n\r\n\t/**\r\n\t * Returns a unique id, sequentially generated from a global variable.\r\n\t * @returns {Number}\r\n\t * @function\r\n\t */\r\n\tuid: (function() {\r\n\t\tvar id = 0;\r\n\t\treturn function() {\r\n\t\t\treturn id++;\r\n\t\t};\r\n\t}()),\r\n\r\n\t/**\r\n\t * Returns true if `value` is neither null nor undefined, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {Boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisNullOrUndef: function(value) {\r\n\t\treturn value === null || typeof value === 'undefined';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an array, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {Boolean}\r\n\t * @function\r\n\t */\r\n\tisArray: Array.isArray ? Array.isArray : function(value) {\r\n\t\treturn Object.prototype.toString.call(value) === '[object Array]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an object (excluding null), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {Boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisObject: function(value) {\r\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns `value` if defined, else returns `defaultValue`.\r\n\t * @param {*} value - The value to return if defined.\r\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueOrDefault: function(value, defaultValue) {\r\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\r\n\t * @param {Array} value - The array to lookup for value at `index`.\r\n\t * @param {Number} index - The index in `value` to lookup for value.\r\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\r\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\r\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\r\n\t * @param {Function} fn - The function to call.\r\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\r\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @returns {*}\r\n\t */\r\n\tcallback: function(fn, args, thisArg) {\r\n\t\tif (fn && typeof fn.call === 'function') {\r\n\t\t\treturn fn.apply(thisArg, args);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Note(SB) for performance sake, this method should only be used when loopable type\r\n\t * is unknown or in none intensive code (not called often and small loopable). Else\r\n\t * it's preferable to use a regular for() loop and save extra function calls.\r\n\t * @param {Object|Array} loopable - The object or array to be iterated.\r\n\t * @param {Function} fn - The function to call for each item.\r\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @param {Boolean} [reverse] - If true, iterates backward on the loopable.\r\n\t */\r\n\teach: function(loopable, fn, thisArg, reverse) {\r\n\t\tvar i, len, keys;\r\n\t\tif (helpers.isArray(loopable)) {\r\n\t\t\tlen = loopable.length;\r\n\t\t\tif (reverse) {\r\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (helpers.isObject(loopable)) {\r\n\t\t\tkeys = Object.keys(loopable);\r\n\t\t\tlen = keys.length;\r\n\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\r\n\t * @see http://stackoverflow.com/a/14853974\r\n\t * @param {Array} a0 - The array to compare\r\n\t * @param {Array} a1 - The array to compare\r\n\t * @returns {Boolean}\r\n\t */\r\n\tarrayEquals: function(a0, a1) {\r\n\t\tvar i, ilen, v0, v1;\r\n\r\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\r\n\t\t\tv0 = a0[i];\r\n\t\t\tv1 = a1[i];\r\n\r\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\r\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else if (v0 !== v1) {\r\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\r\n\t * @param {*} source - The value to clone.\r\n\t * @returns {*}\r\n\t */\r\n\tclone: function(source) {\r\n\t\tif (helpers.isArray(source)) {\r\n\t\t\treturn source.map(helpers.clone);\r\n\t\t}\r\n\r\n\t\tif (helpers.isObject(source)) {\r\n\t\t\tvar target = {};\r\n\t\t\tvar keys = Object.keys(source);\r\n\t\t\tvar klen = keys.length;\r\n\t\t\tvar k = 0;\r\n\r\n\t\t\tfor (; k < klen; ++k) {\r\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\r\n\t\t\t}\r\n\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\treturn source;\r\n\t},\r\n\r\n\t/**\r\n\t * The default merger when Chart.helpers.merge is called without merger option.\r\n\t * Note(SB): this method is also used by configMerge and scaleMerge as fallback.\r\n\t * @private\r\n\t */\r\n\t_merger: function(key, target, source, options) {\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.merge(tval, sval, options);\r\n\t\t} else {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Merges source[key] in target[key] only if target[key] is undefined.\r\n\t * @private\r\n\t */\r\n\t_mergerIf: function(key, target, source) {\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.mergeIf(tval, sval);\r\n\t\t} else if (!target.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {Object} target - The target object in which all sources are merged into.\r\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\r\n\t * @param {Object} [options] - Merging options:\r\n\t * @param {Function} [options.merger] - The merge method (key, target, source, options)\r\n\t * @returns {Object} The `target` object.\r\n\t */\r\n\tmerge: function(target, source, options) {\r\n\t\tvar sources = helpers.isArray(source) ? source : [source];\r\n\t\tvar ilen = sources.length;\r\n\t\tvar merge, i, keys, klen, k;\r\n\r\n\t\tif (!helpers.isObject(target)) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\toptions = options || {};\r\n\t\tmerge = options.merger || helpers._merger;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!helpers.isObject(source)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tkeys = Object.keys(source);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tmerge(keys[k], target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {Object} target - The target object in which all sources are merged into.\r\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\r\n\t * @returns {Object} The `target` object.\r\n\t */\r\n\tmergeIf: function(target, source) {\r\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\r\n\t},\r\n\r\n\t/**\r\n\t * Applies the contents of two or more objects together into the first object.\r\n\t * @param {Object} target - The target object in which all objects are merged into.\r\n\t * @param {Object} arg1 - Object containing additional properties to merge in target.\r\n\t * @param {Object} argN - Additional objects containing properties to merge in target.\r\n\t * @returns {Object} The `target` object.\r\n\t */\r\n\textend: function(target) {\r\n\t\tvar setFn = function(value, key) {\r\n\t\t\ttarget[key] = value;\r\n\t\t};\r\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; ++i) {\r\n\t\t\thelpers.each(arguments[i], setFn);\r\n\t\t}\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Basic javascript inheritance based on the model created in Backbone.js\r\n\t */\r\n\tinherits: function(extensions) {\r\n\t\tvar me = this;\r\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\r\n\t\t\treturn me.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tvar Surrogate = function() {\r\n\t\t\tthis.constructor = ChartElement;\r\n\t\t};\r\n\r\n\t\tSurrogate.prototype = me.prototype;\r\n\t\tChartElement.prototype = new Surrogate();\r\n\t\tChartElement.extend = helpers.inherits;\r\n\r\n\t\tif (extensions) {\r\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\r\n\t\t}\r\n\r\n\t\tChartElement.__super__ = me.prototype;\r\n\t\treturn ChartElement;\r\n\t}\r\n};\r\n\r\nmodule.exports = helpers;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.callback instead.\r\n * @function Chart.helpers.callCallback\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.callCallback = helpers.callback;\r\n\r\n/**\r\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\r\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\r\n * @function Chart.helpers.indexOf\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.indexOf = function(array, item, fromIndex) {\r\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\r\n};\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\r\n * @function Chart.helpers.getValueOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueOrDefault = helpers.valueOrDefault;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\r\n * @function Chart.helpers.getValueAtIndexOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\r\n\r\n},{}],44:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(43);\r\n\r\n/**\r\n * Easing functions adapted from Robert Penner's easing equations.\r\n * @namespace Chart.helpers.easingEffects\r\n * @see http://www.robertpenner.com/easing/\r\n */\r\nvar effects = {\r\n\tlinear: function(t) {\r\n\t\treturn t;\r\n\t},\r\n\r\n\teaseInQuad: function(t) {\r\n\t\treturn t * t;\r\n\t},\r\n\r\n\teaseOutQuad: function(t) {\r\n\t\treturn -t * (t - 2);\r\n\t},\r\n\r\n\teaseInOutQuad: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\r\n\t},\r\n\r\n\teaseInCubic: function(t) {\r\n\t\treturn t * t * t;\r\n\t},\r\n\r\n\teaseOutCubic: function(t) {\r\n\t\treturn (t = t - 1) * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutCubic: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\r\n\t},\r\n\r\n\teaseInQuart: function(t) {\r\n\t\treturn t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuart: function(t) {\r\n\t\treturn -((t = t - 1) * t * t * t - 1);\r\n\t},\r\n\r\n\teaseInOutQuart: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\r\n\t},\r\n\r\n\teaseInQuint: function(t) {\r\n\t\treturn t * t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuint: function(t) {\r\n\t\treturn (t = t - 1) * t * t * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutQuint: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n\t},\r\n\r\n\teaseInSine: function(t) {\r\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\r\n\t},\r\n\r\n\teaseOutSine: function(t) {\r\n\t\treturn Math.sin(t * (Math.PI / 2));\r\n\t},\r\n\r\n\teaseInOutSine: function(t) {\r\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\r\n\t},\r\n\r\n\teaseInExpo: function(t) {\r\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\r\n\t},\r\n\r\n\teaseOutExpo: function(t) {\r\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\r\n\t},\r\n\r\n\teaseInOutExpo: function(t) {\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\r\n\t\t}\r\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\r\n\t},\r\n\r\n\teaseInCirc: function(t) {\r\n\t\tif (t >= 1) {\r\n\t\t\treturn t;\r\n\t\t}\r\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\r\n\t},\r\n\r\n\teaseOutCirc: function(t) {\r\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\r\n\t},\r\n\r\n\teaseInOutCirc: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\r\n\t\t}\r\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\r\n\t},\r\n\r\n\teaseInElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t},\r\n\r\n\teaseOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\r\n\t},\r\n\r\n\teaseInOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif ((t /= 0.5) === 2) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.45;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\tif (t < 1) {\r\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n\t},\r\n\teaseInBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn t * t * ((s + 1) * t - s);\r\n\t},\r\n\r\n\teaseOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\r\n\t},\r\n\r\n\teaseInOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\r\n\t},\r\n\r\n\teaseInBounce: function(t) {\r\n\t\treturn 1 - effects.easeOutBounce(1 - t);\r\n\t},\r\n\r\n\teaseOutBounce: function(t) {\r\n\t\tif (t < (1 / 2.75)) {\r\n\t\t\treturn 7.5625 * t * t;\r\n\t\t}\r\n\t\tif (t < (2 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t\t}\r\n\t\tif (t < (2.5 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t\t}\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t},\r\n\r\n\teaseInOutBounce: function(t) {\r\n\t\tif (t < 0.5) {\r\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\r\n\t\t}\r\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\r\n\t}\r\n};\r\n\r\nmodule.exports = {\r\n\teffects: effects\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\r\n * @function Chart.helpers.easingEffects\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.easingEffects = effects;\r\n\r\n},{\"43\":43}],45:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(43);\r\n\r\n/**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\r\nmodule.exports = {\r\n\t/**\r\n\t * Converts the given line height `value` in pixels for a specific font `size`.\r\n\t * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\r\n\t * @param {Number} size - The font size (in pixels) used to resolve relative `value`.\r\n\t * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid).\r\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoLineHeight: function(value, size) {\r\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\r\n\t\tif (!matches || matches[1] === 'normal') {\r\n\t\t\treturn size * 1.2;\r\n\t\t}\r\n\r\n\t\tvalue = +matches[2];\r\n\r\n\t\tswitch (matches[3]) {\r\n\t\tcase 'px':\r\n\t\t\treturn value;\r\n\t\tcase '%':\r\n\t\t\tvalue /= 100;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn size * value;\r\n\t},\r\n\r\n\t/**\r\n\t * Converts the given value into a padding object with pre-computed width/height.\r\n\t * @param {Number|Object} value - If a number, set the value to all TRBL component,\r\n\t * else, if and object, use defined properties and sets undefined ones to 0.\r\n\t * @returns {Object} The padding values (top, right, bottom, left, width, height)\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoPadding: function(value) {\r\n\t\tvar t, r, b, l;\r\n\r\n\t\tif (helpers.isObject(value)) {\r\n\t\t\tt = +value.top || 0;\r\n\t\t\tr = +value.right || 0;\r\n\t\t\tb = +value.bottom || 0;\r\n\t\t\tl = +value.left || 0;\r\n\t\t} else {\r\n\t\t\tt = r = b = l = +value || 0;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: t,\r\n\t\t\tright: r,\r\n\t\t\tbottom: b,\r\n\t\t\tleft: l,\r\n\t\t\theight: t + b,\r\n\t\t\twidth: l + r\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\r\n\t * @param {Array[]} inputs - An array of values, falling back to the last value.\r\n\t * @param {Object} [context] - If defined and the current value is a function, the value\r\n\t * is called with `context` as first argument and the result becomes the new input.\r\n\t * @param {Number} [index] - If defined and the current value is an array, the value\r\n\t * at `index` become the new input.\r\n\t * @since 2.7.0\r\n\t */\r\n\tresolve: function(inputs, context, index) {\r\n\t\tvar i, ilen, value;\r\n\r\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\r\n\t\t\tvalue = inputs[i];\r\n\t\t\tif (value === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (context !== undefined && typeof value === 'function') {\r\n\t\t\t\tvalue = value(context);\r\n\t\t\t}\r\n\t\t\tif (index !== undefined && helpers.isArray(value)) {\r\n\t\t\t\tvalue = value[index];\r\n\t\t\t}\r\n\t\t\tif (value !== undefined) {\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"43\":43}],46:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = require(43);\r\nmodule.exports.easing = require(44);\r\nmodule.exports.canvas = require(42);\r\nmodule.exports.options = require(45);\r\n\r\n},{\"42\":42,\"43\":43,\"44\":44,\"45\":45}],47:[function(require,module,exports){\r\n/**\r\n * Platform fallback implementation (minimal).\r\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\r\n */\r\n\r\nmodule.exports = {\r\n\tacquireContext: function(item) {\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\treturn item && item.getContext('2d') || null;\r\n\t}\r\n};\r\n\r\n},{}],48:[function(require,module,exports){\r\n/**\r\n * Chart.Platform implementation for targeting a web browser\r\n */\r\n\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\n\r\nvar EXPANDO_KEY = '$chartjs';\r\nvar CSS_PREFIX = 'chartjs-';\r\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\r\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\r\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\r\n\r\n/**\r\n * DOM event types -> Chart.js event types.\r\n * Note: only events with different types are mapped.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\r\n */\r\nvar EVENT_TYPES = {\r\n\ttouchstart: 'mousedown',\r\n\ttouchmove: 'mousemove',\r\n\ttouchend: 'mouseup',\r\n\tpointerenter: 'mouseenter',\r\n\tpointerdown: 'mousedown',\r\n\tpointermove: 'mousemove',\r\n\tpointerup: 'mouseup',\r\n\tpointerleave: 'mouseout',\r\n\tpointerout: 'mouseout'\r\n};\r\n\r\n/**\r\n * The \"used\" size is the final value of a dimension property after all calculations have\r\n * been performed. This method uses the computed style of `element` but returns undefined\r\n * if the computed style is not expressed in pixels. That can happen in some cases where\r\n * `element` has a size relative to its parent and this last one is not yet displayed,\r\n * for example because of `display: none` on a parent node.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\r\n * @returns {Number} Size in pixels or undefined if unknown.\r\n */\r\nfunction readUsedSize(element, property) {\r\n\tvar value = helpers.getStyle(element, property);\r\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\r\n\treturn matches ? Number(matches[1]) : undefined;\r\n}\r\n\r\n/**\r\n * Initializes the canvas style and render size without modifying the canvas display size,\r\n * since responsiveness is handled by the controller.resize() method. The config is used\r\n * to determine the aspect ratio to apply in case no explicit height has been specified.\r\n */\r\nfunction initCanvas(canvas, config) {\r\n\tvar style = canvas.style;\r\n\r\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\r\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\r\n\tvar renderHeight = canvas.getAttribute('height');\r\n\tvar renderWidth = canvas.getAttribute('width');\r\n\r\n\t// Chart.js modifies some canvas values that we want to restore on destroy\r\n\tcanvas[EXPANDO_KEY] = {\r\n\t\tinitial: {\r\n\t\t\theight: renderHeight,\r\n\t\t\twidth: renderWidth,\r\n\t\t\tstyle: {\r\n\t\t\t\tdisplay: style.display,\r\n\t\t\t\theight: style.height,\r\n\t\t\t\twidth: style.width\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Force canvas to display as block to avoid extra space caused by inline\r\n\t// elements, which would interfere with the responsive resize process.\r\n\t// https://github.com/chartjs/Chart.js/issues/2538\r\n\tstyle.display = style.display || 'block';\r\n\r\n\tif (renderWidth === null || renderWidth === '') {\r\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\r\n\t\tif (displayWidth !== undefined) {\r\n\t\t\tcanvas.width = displayWidth;\r\n\t\t}\r\n\t}\r\n\r\n\tif (renderHeight === null || renderHeight === '') {\r\n\t\tif (canvas.style.height === '') {\r\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\r\n\t\t\t// which one can be specified by the user but also by charts as default option\r\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\r\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\r\n\t\t} else {\r\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\r\n\t\t\tif (displayWidth !== undefined) {\r\n\t\t\t\tcanvas.height = displayHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn canvas;\r\n}\r\n\r\n/**\r\n * Detects support for options object argument in addEventListener.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\r\n * @private\r\n */\r\nvar supportsEventListenerOptions = (function() {\r\n\tvar supports = false;\r\n\ttry {\r\n\t\tvar options = Object.defineProperty({}, 'passive', {\r\n\t\t\tget: function() {\r\n\t\t\t\tsupports = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('e', null, options);\r\n\t} catch (e) {\r\n\t\t// continue regardless of error\r\n\t}\r\n\treturn supports;\r\n}());\r\n\r\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\r\n// https://github.com/chartjs/Chart.js/issues/4287\r\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\r\n\r\nfunction addEventListener(node, type, listener) {\r\n\tnode.addEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction removeEventListener(node, type, listener) {\r\n\tnode.removeEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction createEvent(type, chart, x, y, nativeEvent) {\r\n\treturn {\r\n\t\ttype: type,\r\n\t\tchart: chart,\r\n\t\tnative: nativeEvent || null,\r\n\t\tx: x !== undefined ? x : null,\r\n\t\ty: y !== undefined ? y : null,\r\n\t};\r\n}\r\n\r\nfunction fromNativeEvent(event, chart) {\r\n\tvar type = EVENT_TYPES[event.type] || event.type;\r\n\tvar pos = helpers.getRelativePosition(event, chart);\r\n\treturn createEvent(type, chart, pos.x, pos.y, event);\r\n}\r\n\r\nfunction throttled(fn, thisArg) {\r\n\tvar ticking = false;\r\n\tvar args = [];\r\n\r\n\treturn function() {\r\n\t\targs = Array.prototype.slice.call(arguments);\r\n\t\tthisArg = thisArg || this;\r\n\r\n\t\tif (!ticking) {\r\n\t\t\tticking = true;\r\n\t\t\thelpers.requestAnimFrame.call(window, function() {\r\n\t\t\t\tticking = false;\r\n\t\t\t\tfn.apply(thisArg, args);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// Implementation based on https://github.com/marcj/css-element-queries\r\nfunction createResizer(handler) {\r\n\tvar resizer = document.createElement('div');\r\n\tvar cls = CSS_PREFIX + 'size-monitor';\r\n\tvar maxSize = 1000000;\r\n\tvar style =\r\n\t\t'position:absolute;' +\r\n\t\t'left:0;' +\r\n\t\t'top:0;' +\r\n\t\t'right:0;' +\r\n\t\t'bottom:0;' +\r\n\t\t'overflow:hidden;' +\r\n\t\t'pointer-events:none;' +\r\n\t\t'visibility:hidden;' +\r\n\t\t'z-index:-1;';\r\n\r\n\tresizer.style.cssText = style;\r\n\tresizer.className = cls;\r\n\tresizer.innerHTML =\r\n\t\t'
      ' +\r\n\t\t\t'
      ' +\r\n\t\t\t'
      ' +\r\n\t\t'
      ' +\r\n\t\t'
      ' +\r\n\t\t\t'
      ' +\r\n\t\t\t'
      ' +\r\n\t\t'
      ';\r\n\r\n\tvar expand = resizer.childNodes[0];\r\n\tvar shrink = resizer.childNodes[1];\r\n\r\n\tresizer._reset = function() {\r\n\t\texpand.scrollLeft = maxSize;\r\n\t\texpand.scrollTop = maxSize;\r\n\t\tshrink.scrollLeft = maxSize;\r\n\t\tshrink.scrollTop = maxSize;\r\n\t};\r\n\tvar onScroll = function() {\r\n\t\tresizer._reset();\r\n\t\thandler();\r\n\t};\r\n\r\n\taddEventListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\r\n\taddEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\r\n\r\n\treturn resizer;\r\n}\r\n\r\n// https://davidwalsh.name/detect-node-insertion\r\nfunction watchForRender(node, handler) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\tvar proxy = expando.renderProxy = function(e) {\r\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\r\n\t\t\thandler();\r\n\t\t}\r\n\t};\r\n\r\n\thelpers.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\taddEventListener(node, type, proxy);\r\n\t});\r\n\r\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\r\n\t// is removed then added back immediately (same animation frame?). Accessing the\r\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\r\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\r\n\t// https://github.com/chartjs/Chart.js/issues/4737\r\n\texpando.reflow = !!node.offsetParent;\r\n\r\n\tnode.classList.add(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction unwatchForRender(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar proxy = expando.renderProxy;\r\n\r\n\tif (proxy) {\r\n\t\thelpers.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\t\tremoveEventListener(node, type, proxy);\r\n\t\t});\r\n\r\n\t\tdelete expando.renderProxy;\r\n\t}\r\n\r\n\tnode.classList.remove(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction addResizeListener(node, listener, chart) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\r\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\r\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\treturn listener(createEvent('resize', chart));\r\n\t\t}\r\n\t}));\r\n\r\n\t// The resizer needs to be attached to the node parent, so we first need to be\r\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\r\n\twatchForRender(node, function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = node.parentNode;\r\n\t\t\tif (container && container !== resizer.parentNode) {\r\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\r\n\t\t\t}\r\n\r\n\t\t\t// The container size might have changed, let's reset the resizer state.\r\n\t\t\tresizer._reset();\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction removeResizeListener(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar resizer = expando.resizer;\r\n\r\n\tdelete expando.resizer;\r\n\tunwatchForRender(node);\r\n\r\n\tif (resizer && resizer.parentNode) {\r\n\t\tresizer.parentNode.removeChild(resizer);\r\n\t}\r\n}\r\n\r\nfunction injectCSS(platform, css) {\r\n\t// http://stackoverflow.com/q/3922139\r\n\tvar style = platform._style || document.createElement('style');\r\n\tif (!platform._style) {\r\n\t\tplatform._style = style;\r\n\t\tcss = '/* Chart.js */\\n' + css;\r\n\t\tstyle.setAttribute('type', 'text/css');\r\n\t\tdocument.getElementsByTagName('head')[0].appendChild(style);\r\n\t}\r\n\r\n\tstyle.appendChild(document.createTextNode(css));\r\n}\r\n\r\nmodule.exports = {\r\n\t/**\r\n\t * This property holds whether this platform is enabled for the current environment.\r\n\t * Currently used by platform.js to select the proper implementation.\r\n\t * @private\r\n\t */\r\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\r\n\r\n\tinitialize: function() {\r\n\t\tvar keyframes = 'from{opacity:0.99}to{opacity:1}';\r\n\r\n\t\tinjectCSS(this,\r\n\t\t\t// DOM rendering detection\r\n\t\t\t// https://davidwalsh.name/detect-node-insertion\r\n\t\t\t'@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\r\n\t\t\t'@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\r\n\t\t\t'.' + CSS_RENDER_MONITOR + '{' +\r\n\t\t\t\t'-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\r\n\t\t\t\t'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\r\n\t\t\t'}'\r\n\t\t);\r\n\t},\r\n\r\n\tacquireContext: function(item, config) {\r\n\t\tif (typeof item === 'string') {\r\n\t\t\titem = document.getElementById(item);\r\n\t\t} else if (item.length) {\r\n\t\t\t// Support for array based queries (such as jQuery)\r\n\t\t\titem = item[0];\r\n\t\t}\r\n\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\r\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\r\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\tvar context = item && item.getContext && item.getContext('2d');\r\n\r\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\r\n\t\t// inside an iframe or when running in a protected environment. We could guess the\r\n\t\t// types from their toString() value but let's keep things flexible and assume it's\r\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\r\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\r\n\t\tif (context && context.canvas === item) {\r\n\t\t\tinitCanvas(item, config);\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\treleaseContext: function(context) {\r\n\t\tvar canvas = context.canvas;\r\n\t\tif (!canvas[EXPANDO_KEY]) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\r\n\t\t['height', 'width'].forEach(function(prop) {\r\n\t\t\tvar value = initial[prop];\r\n\t\t\tif (helpers.isNullOrUndef(value)) {\r\n\t\t\t\tcanvas.removeAttribute(prop);\r\n\t\t\t} else {\r\n\t\t\t\tcanvas.setAttribute(prop, value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers.each(initial.style || {}, function(value, key) {\r\n\t\t\tcanvas.style[key] = value;\r\n\t\t});\r\n\r\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\r\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\r\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\r\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\r\n\t\tcanvas.width = canvas.width;\r\n\r\n\t\tdelete canvas[EXPANDO_KEY];\r\n\t},\r\n\r\n\taddEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\taddResizeListener(canvas, listener, chart);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\r\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\r\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\r\n\t\t\tlistener(fromNativeEvent(event, chart));\r\n\t\t};\r\n\r\n\t\taddEventListener(canvas, type, proxy);\r\n\t},\r\n\r\n\tremoveEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\tremoveResizeListener(canvas, listener);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || {};\r\n\t\tvar proxies = expando.proxies || {};\r\n\t\tvar proxy = proxies[chart.id + '_' + type];\r\n\t\tif (!proxy) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tremoveEventListener(canvas, type, proxy);\r\n\t}\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\r\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\r\n * @function Chart.helpers.addEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.addEvent = addEventListener;\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\r\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\r\n * @function Chart.helpers.removeEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.removeEvent = removeEventListener;\r\n\r\n},{\"46\":46}],49:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\nvar basic = require(47);\r\nvar dom = require(48);\r\n\r\n// @TODO Make possible to select another platform at build time.\r\nvar implementation = dom._enabled ? dom : basic;\r\n\r\n/**\r\n * @namespace Chart.platform\r\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\r\n * @since 2.4.0\r\n */\r\nmodule.exports = helpers.extend({\r\n\t/**\r\n\t * @since 2.7.0\r\n\t */\r\n\tinitialize: function() {},\r\n\r\n\t/**\r\n\t * Called at chart construction time, returns a context2d instance implementing\r\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\r\n\t * @param {*} item - The native item from which to acquire context (platform specific)\r\n\t * @param {Object} options - The chart options\r\n\t * @returns {CanvasRenderingContext2D} context2d instance\r\n\t */\r\n\tacquireContext: function() {},\r\n\r\n\t/**\r\n\t * Called at chart destruction time, releases any resources associated to the context\r\n\t * previously returned by the acquireContext() method.\r\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\r\n\t * @returns {Boolean} true if the method succeeded, else false\r\n\t */\r\n\treleaseContext: function() {},\r\n\r\n\t/**\r\n\t * Registers the specified listener on the given chart.\r\n\t * @param {Chart} chart - Chart from which to listen for event\r\n\t * @param {String} type - The ({@link IEvent}) type to listen for\r\n\t * @param {Function} listener - Receives a notification (an object that implements\r\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\r\n\t */\r\n\taddEventListener: function() {},\r\n\r\n\t/**\r\n\t * Removes the specified listener previously registered with addEventListener.\r\n\t * @param {Chart} chart -Chart from which to remove the listener\r\n\t * @param {String} type - The ({@link IEvent}) type to remove\r\n\t * @param {Function} listener - The listener function to remove from the event target.\r\n\t */\r\n\tremoveEventListener: function() {}\r\n\r\n}, implementation);\r\n\r\n/**\r\n * @interface IPlatform\r\n * Allows abstracting platform dependencies away from the chart\r\n * @borrows Chart.platform.acquireContext as acquireContext\r\n * @borrows Chart.platform.releaseContext as releaseContext\r\n * @borrows Chart.platform.addEventListener as addEventListener\r\n * @borrows Chart.platform.removeEventListener as removeEventListener\r\n */\r\n\r\n/**\r\n * @interface IEvent\r\n * @prop {String} type - The event type name, possible values are:\r\n * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout',\r\n * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize'\r\n * @prop {*} native - The original native event (null for emulated events, e.g. 'resize')\r\n * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events)\r\n * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events)\r\n */\r\n\r\n},{\"46\":46,\"47\":47,\"48\":48}],50:[function(require,module,exports){\r\n'use strict';\r\n\r\nmodule.exports = {};\r\nmodule.exports.filler = require(51);\r\nmodule.exports.legend = require(52);\r\nmodule.exports.title = require(53);\r\n\r\n},{\"51\":51,\"52\":52,\"53\":53}],51:[function(require,module,exports){\r\n/**\r\n * Plugin based on discussion from the following Chart.js issues:\r\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\r\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\r\n */\r\n\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar elements = require(41);\r\nvar helpers = require(46);\r\n\r\ndefaults._set('global', {\r\n\tplugins: {\r\n\t\tfiller: {\r\n\t\t\tpropagate: true\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar mappers = {\r\n\tdataset: function(source) {\r\n\t\tvar index = source.fill;\r\n\t\tvar chart = source.chart;\r\n\t\tvar meta = chart.getDatasetMeta(index);\r\n\t\tvar visible = meta && chart.isDatasetVisible(index);\r\n\t\tvar points = (visible && meta.dataset._children) || [];\r\n\t\tvar length = points.length || 0;\r\n\r\n\t\treturn !length ? null : function(point, i) {\r\n\t\t\treturn (i < length && points[i]._view) || null;\r\n\t\t};\r\n\t},\r\n\r\n\tboundary: function(source) {\r\n\t\tvar boundary = source.boundary;\r\n\t\tvar x = boundary ? boundary.x : null;\r\n\t\tvar y = boundary ? boundary.y : null;\r\n\r\n\t\treturn function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tx: x === null ? point.x : x,\r\n\t\t\t\ty: y === null ? point.y : y,\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n};\r\n\r\n// @todo if (fill[0] === '#')\r\nfunction decodeFill(el, index, count) {\r\n\tvar model = el._model || {};\r\n\tvar fill = model.fill;\r\n\tvar target;\r\n\r\n\tif (fill === undefined) {\r\n\t\tfill = !!model.backgroundColor;\r\n\t}\r\n\r\n\tif (fill === false || fill === null) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif (fill === true) {\r\n\t\treturn 'origin';\r\n\t}\r\n\r\n\ttarget = parseFloat(fill, 10);\r\n\tif (isFinite(target) && Math.floor(target) === target) {\r\n\t\tif (fill[0] === '-' || fill[0] === '+') {\r\n\t\t\ttarget = index + target;\r\n\t\t}\r\n\r\n\t\tif (target === index || target < 0 || target >= count) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t}\r\n\r\n\tswitch (fill) {\r\n\t// compatibility\r\n\tcase 'bottom':\r\n\t\treturn 'start';\r\n\tcase 'top':\r\n\t\treturn 'end';\r\n\tcase 'zero':\r\n\t\treturn 'origin';\r\n\t// supported boundaries\r\n\tcase 'origin':\r\n\tcase 'start':\r\n\tcase 'end':\r\n\t\treturn fill;\r\n\t// invalid fill values\r\n\tdefault:\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction computeBoundary(source) {\r\n\tvar model = source.el._model || {};\r\n\tvar scale = source.el._scale || {};\r\n\tvar fill = source.fill;\r\n\tvar target = null;\r\n\tvar horizontal;\r\n\r\n\tif (isFinite(fill)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// Backward compatibility: until v3, we still need to support boundary values set on\r\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\r\n\t// controllers might still use it (e.g. the Smith chart).\r\n\r\n\tif (fill === 'start') {\r\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\r\n\t} else if (fill === 'end') {\r\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\r\n\t} else if (model.scaleZero !== undefined) {\r\n\t\ttarget = model.scaleZero;\r\n\t} else if (scale.getBasePosition) {\r\n\t\ttarget = scale.getBasePosition();\r\n\t} else if (scale.getBasePixel) {\r\n\t\ttarget = scale.getBasePixel();\r\n\t}\r\n\r\n\tif (target !== undefined && target !== null) {\r\n\t\tif (target.x !== undefined && target.y !== undefined) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\tif (typeof target === 'number' && isFinite(target)) {\r\n\t\t\thorizontal = scale.isHorizontal();\r\n\t\t\treturn {\r\n\t\t\t\tx: horizontal ? target : null,\r\n\t\t\t\ty: horizontal ? null : target\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n\r\nfunction resolveTarget(sources, index, propagate) {\r\n\tvar source = sources[index];\r\n\tvar fill = source.fill;\r\n\tvar visited = [index];\r\n\tvar target;\r\n\r\n\tif (!propagate) {\r\n\t\treturn fill;\r\n\t}\r\n\r\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\r\n\t\tif (!isFinite(fill)) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\ttarget = sources[fill];\r\n\t\tif (!target) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (target.visible) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\tvisited.push(fill);\r\n\t\tfill = target.fill;\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n\r\nfunction createMapper(source) {\r\n\tvar fill = source.fill;\r\n\tvar type = 'dataset';\r\n\r\n\tif (fill === false) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (!isFinite(fill)) {\r\n\t\ttype = 'boundary';\r\n\t}\r\n\r\n\treturn mappers[type](source);\r\n}\r\n\r\nfunction isDrawable(point) {\r\n\treturn point && !point.skip;\r\n}\r\n\r\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\r\n\tvar i;\r\n\r\n\tif (!len0 || !len1) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// building first area curve (normal)\r\n\tctx.moveTo(curve0[0].x, curve0[0].y);\r\n\tfor (i = 1; i < len0; ++i) {\r\n\t\thelpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\r\n\t}\r\n\r\n\t// joining the two area curves\r\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\r\n\r\n\t// building opposite area curve (reverse)\r\n\tfor (i = len1 - 1; i > 0; --i) {\r\n\t\thelpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\r\n\t}\r\n}\r\n\r\nfunction doFill(ctx, points, mapper, view, color, loop) {\r\n\tvar count = points.length;\r\n\tvar span = view.spanGaps;\r\n\tvar curve0 = [];\r\n\tvar curve1 = [];\r\n\tvar len0 = 0;\r\n\tvar len1 = 0;\r\n\tvar i, ilen, index, p0, p1, d0, d1;\r\n\r\n\tctx.beginPath();\r\n\r\n\tfor (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\r\n\t\tindex = i % count;\r\n\t\tp0 = points[index]._view;\r\n\t\tp1 = mapper(p0, index, view);\r\n\t\td0 = isDrawable(p0);\r\n\t\td1 = isDrawable(p1);\r\n\r\n\t\tif (d0 && d1) {\r\n\t\t\tlen0 = curve0.push(p0);\r\n\t\t\tlen1 = curve1.push(p1);\r\n\t\t} else if (len0 && len1) {\r\n\t\t\tif (!span) {\r\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\t\t\t\tlen0 = len1 = 0;\r\n\t\t\t\tcurve0 = [];\r\n\t\t\t\tcurve1 = [];\r\n\t\t\t} else {\r\n\t\t\t\tif (d0) {\r\n\t\t\t\t\tcurve0.push(p0);\r\n\t\t\t\t}\r\n\t\t\t\tif (d1) {\r\n\t\t\t\t\tcurve1.push(p1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\r\n\tctx.closePath();\r\n\tctx.fillStyle = color;\r\n\tctx.fill();\r\n}\r\n\r\nmodule.exports = {\r\n\tid: 'filler',\r\n\r\n\tafterDatasetsUpdate: function(chart, options) {\r\n\t\tvar count = (chart.data.datasets || []).length;\r\n\t\tvar propagate = options.propagate;\r\n\t\tvar sources = [];\r\n\t\tvar meta, i, el, source;\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\tel = meta.dataset;\r\n\t\t\tsource = null;\r\n\r\n\t\t\tif (el && el._model && el instanceof elements.Line) {\r\n\t\t\t\tsource = {\r\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\r\n\t\t\t\t\tfill: decodeFill(el, i, count),\r\n\t\t\t\t\tchart: chart,\r\n\t\t\t\t\tel: el\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tmeta.$filler = source;\r\n\t\t\tsources.push(source);\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!source) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\r\n\t\t\tsource.boundary = computeBoundary(source);\r\n\t\t\tsource.mapper = createMapper(source);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeDatasetDraw: function(chart, args) {\r\n\t\tvar meta = args.meta.$filler;\r\n\t\tif (!meta) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar el = meta.el;\r\n\t\tvar view = el._view;\r\n\t\tvar points = el._children || [];\r\n\t\tvar mapper = meta.mapper;\r\n\t\tvar color = view.backgroundColor || defaults.global.defaultColor;\r\n\r\n\t\tif (mapper && color && points.length) {\r\n\t\t\thelpers.canvas.clipArea(ctx, chart.chartArea);\r\n\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\r\n\t\t\thelpers.canvas.unclipArea(ctx);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"41\":41,\"46\":46}],52:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\nvar layouts = require(31);\r\n\r\nvar noop = helpers.noop;\r\n\r\ndefaults._set('global', {\r\n\tlegend: {\r\n\t\tdisplay: true,\r\n\t\tposition: 'top',\r\n\t\tfullWidth: true,\r\n\t\treverse: false,\r\n\t\tweight: 1000,\r\n\r\n\t\t// a callback that will handle\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.datasetIndex;\r\n\t\t\tvar ci = this.chart;\r\n\t\t\tvar meta = ci.getDatasetMeta(index);\r\n\r\n\t\t\t// See controller.isDatasetVisible comment\r\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\r\n\r\n\t\t\t// We hid a dataset ... rerender the chart\r\n\t\t\tci.update();\r\n\t\t},\r\n\r\n\t\tonHover: null,\r\n\r\n\t\tlabels: {\r\n\t\t\tboxWidth: 40,\r\n\t\t\tpadding: 10,\r\n\t\t\t// Generates labels shown in the legend\r\n\t\t\t// Valid properties to return:\r\n\t\t\t// text : text to display\r\n\t\t\t// fillStyle : fill of coloured box\r\n\t\t\t// strokeStyle: stroke of coloured box\r\n\t\t\t// hidden : if this legend item refers to a hidden item\r\n\t\t\t// lineCap : cap style for line\r\n\t\t\t// lineDash\r\n\t\t\t// lineDashOffset :\r\n\t\t\t// lineJoin :\r\n\t\t\t// lineWidth :\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\treturn helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttext: dataset.label,\r\n\t\t\t\t\t\tfillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\r\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(i),\r\n\t\t\t\t\t\tlineCap: dataset.borderCapStyle,\r\n\t\t\t\t\t\tlineDash: dataset.borderDash,\r\n\t\t\t\t\t\tlineDashOffset: dataset.borderDashOffset,\r\n\t\t\t\t\t\tlineJoin: dataset.borderJoinStyle,\r\n\t\t\t\t\t\tlineWidth: dataset.borderWidth,\r\n\t\t\t\t\t\tstrokeStyle: dataset.borderColor,\r\n\t\t\t\t\t\tpointStyle: dataset.pointStyle,\r\n\r\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\r\n\t\t\t\t\t\tdatasetIndex: i\r\n\t\t\t\t\t};\r\n\t\t\t\t}, this) : [];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tlegendCallback: function(chart) {\r\n\t\tvar text = [];\r\n\t\ttext.push('
        ');\r\n\t\tfor (var i = 0; i < chart.data.datasets.length; i++) {\r\n\t\t\ttext.push('
      • ');\r\n\t\t\tif (chart.data.datasets[i].label) {\r\n\t\t\t\ttext.push(chart.data.datasets[i].label);\r\n\t\t\t}\r\n\t\t\ttext.push('
      • ');\r\n\t\t}\r\n\t\ttext.push('
      ');\r\n\t\treturn text.join('');\r\n\t}\r\n});\r\n\r\n/**\r\n * Helper function to get the box width based on the usePointStyle option\r\n * @param labelopts {Object} the label options on the legend\r\n * @param fontSize {Number} the label font size\r\n * @return {Number} width of the color box area\r\n */\r\nfunction getBoxWidth(labelOpts, fontSize) {\r\n\treturn labelOpts.usePointStyle ?\r\n\t\tfontSize * Math.SQRT2 :\r\n\t\tlabelOpts.boxWidth;\r\n}\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Legend = Element.extend({\r\n\r\n\tinitialize: function(config) {\r\n\t\thelpers.extend(this, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tthis.legendHitBoxes = [];\r\n\r\n\t\t// Are we in doughnut mode which has a different data type\r\n\t\tthis.doughnutMode = false;\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\t// Any function defined here is inherited by all legend types.\r\n\t// Any function can be extended by the legend type\r\n\r\n\tbeforeUpdate: noop,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\t},\r\n\tafterUpdate: noop,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop,\r\n\tbuildLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar labelOpts = me.options.labels || {};\r\n\t\tvar legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || [];\r\n\r\n\t\tif (labelOpts.filter) {\r\n\t\t\tlegendItems = legendItems.filter(function(item) {\r\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (me.options.reverse) {\r\n\t\t\tlegendItems.reverse();\r\n\t\t}\r\n\r\n\t\tme.legendItems = legendItems;\r\n\t},\r\n\tafterBuildLabels: noop,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar display = opts.display;\r\n\r\n\t\tvar ctx = me.ctx;\r\n\r\n\t\tvar globalDefault = defaults.global;\r\n\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\r\n\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\r\n\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\r\n\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\r\n\t\t// Reset hit boxes\r\n\t\tvar hitboxes = me.legendHitBoxes = [];\r\n\r\n\t\tvar minSize = me.minSize;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.width = me.maxWidth; // fill all the width\r\n\t\t\tminSize.height = display ? 10 : 0;\r\n\t\t} else {\r\n\t\t\tminSize.width = display ? 10 : 0;\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\t// Increase sizes here\r\n\t\tif (display) {\r\n\t\t\tctx.font = labelFont;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\t// Labels\r\n\r\n\t\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\r\n\t\t\t\tvar lineWidths = me.lineWidths = [0];\r\n\t\t\t\tvar totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;\r\n\r\n\t\t\t\tctx.textAlign = 'left';\r\n\t\t\t\tctx.textBaseline = 'top';\r\n\r\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\t\tif (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {\r\n\t\t\t\t\t\ttotalHeight += fontSize + (labelOpts.padding);\r\n\t\t\t\t\t\tlineWidths[lineWidths.length] = me.left;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\t\tleft: 0,\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\twidth: width,\r\n\t\t\t\t\t\theight: fontSize\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tminSize.height += totalHeight;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tvar vPadding = labelOpts.padding;\r\n\t\t\t\tvar columnWidths = me.columnWidths = [];\r\n\t\t\t\tvar totalWidth = labelOpts.padding;\r\n\t\t\t\tvar currentColWidth = 0;\r\n\t\t\t\tvar currentColHeight = 0;\r\n\t\t\t\tvar itemHeight = fontSize + vPadding;\r\n\r\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\t\t// If too tall, go to new column\r\n\t\t\t\t\tif (currentColHeight + itemHeight > minSize.height) {\r\n\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\r\n\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\r\n\r\n\t\t\t\t\t\tcurrentColWidth = 0;\r\n\t\t\t\t\t\tcurrentColHeight = 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Get max width\r\n\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\r\n\t\t\t\t\tcurrentColHeight += itemHeight;\r\n\r\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\t\tleft: 0,\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\twidth: itemWidth,\r\n\t\t\t\t\t\theight: fontSize\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t\ttotalWidth += currentColWidth;\r\n\t\t\t\tcolumnWidths.push(currentColWidth);\r\n\t\t\t\tminSize.width += totalWidth;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\t},\r\n\tafterFit: noop,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the legend on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar globalDefault = defaults.global;\r\n\t\tvar lineDefault = globalDefault.elements.line;\r\n\t\tvar legendWidth = me.width;\r\n\t\tvar lineWidths = me.lineWidths;\r\n\r\n\t\tif (opts.display) {\r\n\t\t\tvar ctx = me.ctx;\r\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\t\tvar fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor);\r\n\t\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\r\n\t\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\r\n\t\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\r\n\t\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\t\t\tvar cursor;\r\n\r\n\t\t\t// Canvas setup\r\n\t\t\tctx.textAlign = 'left';\r\n\t\t\tctx.textBaseline = 'middle';\r\n\t\t\tctx.lineWidth = 0.5;\r\n\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\r\n\t\t\tctx.fillStyle = fontColor; // render in correct colour\r\n\t\t\tctx.font = labelFont;\r\n\r\n\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\tvar hitboxes = me.legendHitBoxes;\r\n\r\n\t\t\t// current position\r\n\t\t\tvar drawLegendBox = function(x, y, legendItem) {\r\n\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set the ctx for the box\r\n\t\t\t\tctx.save();\r\n\r\n\t\t\t\tctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor);\r\n\t\t\t\tctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);\r\n\t\t\t\tctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);\r\n\t\t\t\tctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);\r\n\t\t\t\tctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);\r\n\t\t\t\tctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);\r\n\t\t\t\tvar isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0);\r\n\r\n\t\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\t\t// IE 9 and 10 do not support line dash\r\n\t\t\t\t\tctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\r\n\t\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\r\n\t\t\t\t\t// x and y to be center of figure (instead of top left)\r\n\t\t\t\t\tvar radius = fontSize * Math.SQRT2 / 2;\r\n\t\t\t\t\tvar offSet = radius / Math.SQRT2;\r\n\t\t\t\t\tvar centerX = x + offSet;\r\n\t\t\t\t\tvar centerY = y + offSet;\r\n\r\n\t\t\t\t\t// Draw pointStyle as legend symbol\r\n\t\t\t\t\thelpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Draw box as legend symbol\r\n\t\t\t\t\tif (!isLineWidthZero) {\r\n\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tctx.restore();\r\n\t\t\t};\r\n\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\r\n\t\t\t\tvar halfFontSize = fontSize / 2;\r\n\t\t\t\tvar xLeft = boxWidth + halfFontSize + x;\r\n\t\t\t\tvar yMiddle = y + halfFontSize;\r\n\r\n\t\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\r\n\r\n\t\t\t\tif (legendItem.hidden) {\r\n\t\t\t\t\t// Strikethrough the text if hidden\r\n\t\t\t\t\tctx.beginPath();\r\n\t\t\t\t\tctx.lineWidth = 2;\r\n\t\t\t\t\tctx.moveTo(xLeft, yMiddle);\r\n\t\t\t\t\tctx.lineTo(xLeft + textWidth, yMiddle);\r\n\t\t\t\t\tctx.stroke();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t// Horizontal\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tcursor = {\r\n\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2),\r\n\t\t\t\t\ty: me.top + labelOpts.padding,\r\n\t\t\t\t\tline: 0\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tcursor = {\r\n\t\t\t\t\tx: me.left + labelOpts.padding,\r\n\t\t\t\t\ty: me.top + labelOpts.padding,\r\n\t\t\t\t\tline: 0\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar itemHeight = fontSize + labelOpts.padding;\r\n\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\r\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\r\n\t\t\t\tvar x = cursor.x;\r\n\t\t\t\tvar y = cursor.y;\r\n\r\n\t\t\t\tif (isHorizontal) {\r\n\t\t\t\t\tif (x + width >= legendWidth) {\r\n\t\t\t\t\t\ty = cursor.y += itemHeight;\r\n\t\t\t\t\t\tcursor.line++;\r\n\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (y + itemHeight > me.bottom) {\r\n\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\r\n\t\t\t\t\ty = cursor.y = me.top + labelOpts.padding;\r\n\t\t\t\t\tcursor.line++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdrawLegendBox(x, y, legendItem);\r\n\r\n\t\t\t\thitboxes[i].left = x;\r\n\t\t\t\thitboxes[i].top = y;\r\n\r\n\t\t\t\t// Fill the actual label\r\n\t\t\t\tfillText(x, y, legendItem, textWidth);\r\n\r\n\t\t\t\tif (isHorizontal) {\r\n\t\t\t\t\tcursor.x += width + (labelOpts.padding);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcursor.y += itemHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t * @return {Boolean} true if a change occured\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\r\n\t\tvar changed = false;\r\n\r\n\t\tif (type === 'mousemove') {\r\n\t\t\tif (!opts.onHover) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else if (type === 'click') {\r\n\t\t\tif (!opts.onClick) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Chart event already has relative position in it\r\n\t\tvar x = e.x;\r\n\t\tvar y = e.y;\r\n\r\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\r\n\t\t\t// See if we are touching one of the dataset boxes\r\n\t\t\tvar lh = me.legendHitBoxes;\r\n\t\t\tfor (var i = 0; i < lh.length; ++i) {\r\n\t\t\t\tvar hitBox = lh[i];\r\n\r\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\r\n\t\t\t\t\t// Touching an element\r\n\t\t\t\t\tif (type === 'click') {\r\n\t\t\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\t\t\topts.onClick.call(me, e.native, me.legendItems[i]);\r\n\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t} else if (type === 'mousemove') {\r\n\t\t\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\t\t\topts.onHover.call(me, e.native, me.legendItems[i]);\r\n\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\nfunction createNewLegendAndAttach(chart, legendOpts) {\r\n\tvar legend = new Legend({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: legendOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tlayouts.configure(chart, legend, legendOpts);\r\n\tlayouts.addBox(chart, legend);\r\n\tchart.legend = legend;\r\n}\r\n\r\nmodule.exports = {\r\n\tid: 'legend',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\r\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Legend,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\t\tvar legend = chart.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\thelpers.mergeIf(legendOpts, defaults.global.legend);\r\n\r\n\t\t\tif (legend) {\r\n\t\t\t\tlayouts.configure(chart, legend, legendOpts);\r\n\t\t\t\tlegend.options = legendOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t\t}\r\n\t\t} else if (legend) {\r\n\t\t\tlayouts.removeBox(chart, legend);\r\n\t\t\tdelete chart.legend;\r\n\t\t}\r\n\t},\r\n\r\n\tafterEvent: function(chart, e) {\r\n\t\tvar legend = chart.legend;\r\n\t\tif (legend) {\r\n\t\t\tlegend.handleEvent(e);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],53:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar Element = require(27);\r\nvar helpers = require(46);\r\nvar layouts = require(31);\r\n\r\nvar noop = helpers.noop;\r\n\r\ndefaults._set('global', {\r\n\ttitle: {\r\n\t\tdisplay: false,\r\n\t\tfontStyle: 'bold',\r\n\t\tfullWidth: true,\r\n\t\tlineHeight: 1.2,\r\n\t\tpadding: 10,\r\n\t\tposition: 'top',\r\n\t\ttext: '',\r\n\t\tweight: 2000 // by default greater than legend (1000) to be above\r\n\t}\r\n});\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Title = Element.extend({\r\n\tinitialize: function(config) {\r\n\t\tvar me = this;\r\n\t\thelpers.extend(me, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tme.legendHitBoxes = [];\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\r\n\tbeforeUpdate: noop,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\r\n\t},\r\n\tafterUpdate: noop,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop,\r\n\tbuildLabels: noop,\r\n\tafterBuildLabels: noop,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\tvar opts = me.options;\r\n\t\tvar display = opts.display;\r\n\t\tvar fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize);\r\n\t\tvar minSize = me.minSize;\r\n\t\tvar lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;\r\n\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\r\n\t\tvar textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tminSize.width = me.maxWidth; // fill all the width\r\n\t\t\tminSize.height = textSize;\r\n\t\t} else {\r\n\t\t\tminSize.width = textSize;\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\r\n\t},\r\n\tafterFit: noop,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\tvar pos = this.options.position;\r\n\t\treturn pos === 'top' || pos === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the title block on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\tvar opts = me.options;\r\n\t\tvar globalDefaults = defaults.global;\r\n\r\n\t\tif (opts.display) {\r\n\t\t\tvar fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\tvar fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle);\r\n\t\t\tvar fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily);\r\n\t\t\tvar titleFont = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\t\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\r\n\t\t\tvar offset = lineHeight / 2 + opts.padding;\r\n\t\t\tvar rotation = 0;\r\n\t\t\tvar top = me.top;\r\n\t\t\tvar left = me.left;\r\n\t\t\tvar bottom = me.bottom;\r\n\t\t\tvar right = me.right;\r\n\t\t\tvar maxWidth, titleX, titleY;\r\n\r\n\t\t\tctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour\r\n\t\t\tctx.font = titleFont;\r\n\r\n\t\t\t// Horizontal\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\r\n\t\t\t\ttitleY = top + offset;\r\n\t\t\t\tmaxWidth = right - left;\r\n\t\t\t} else {\r\n\t\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\r\n\t\t\t\ttitleY = top + ((bottom - top) / 2);\r\n\t\t\t\tmaxWidth = bottom - top;\r\n\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\r\n\t\t\t}\r\n\r\n\t\t\tctx.save();\r\n\t\t\tctx.translate(titleX, titleY);\r\n\t\t\tctx.rotate(rotation);\r\n\t\t\tctx.textAlign = 'center';\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\tvar text = opts.text;\r\n\t\t\tif (helpers.isArray(text)) {\r\n\t\t\t\tvar y = 0;\r\n\t\t\t\tfor (var i = 0; i < text.length; ++i) {\r\n\t\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\r\n\t\t\t\t\ty += lineHeight;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tctx.fillText(text, 0, 0, maxWidth);\r\n\t\t\t}\r\n\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\r\n\tvar title = new Title({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: titleOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tlayouts.configure(chart, title, titleOpts);\r\n\tlayouts.addBox(chart, title);\r\n\tchart.titleBlock = title;\r\n}\r\n\r\nmodule.exports = {\r\n\tid: 'title',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\r\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Title,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\t\tvar titleBlock = chart.titleBlock;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\thelpers.mergeIf(titleOpts, defaults.global.title);\r\n\r\n\t\t\tif (titleBlock) {\r\n\t\t\t\tlayouts.configure(chart, titleBlock, titleOpts);\r\n\t\t\t\ttitleBlock.options = titleOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t\t}\r\n\t\t} else if (titleBlock) {\r\n\t\t\tlayouts.removeBox(chart, titleBlock);\r\n\t\t\tdelete chart.titleBlock;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],54:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar Scale = require(33);\r\nvar scaleService = require(34);\r\n\r\nmodule.exports = function() {\r\n\r\n\t// Default config for a category scale\r\n\tvar defaultConfig = {\r\n\t\tposition: 'bottom'\r\n\t};\r\n\r\n\tvar DatasetScale = Scale.extend({\r\n\t\t/**\r\n\t\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\r\n\t\t* else fall back to data.labels\r\n\t\t* @private\r\n\t\t*/\r\n\t\tgetLabels: function() {\r\n\t\t\tvar data = this.chart.data;\r\n\t\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\r\n\t\t},\r\n\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar labels = me.getLabels();\r\n\t\t\tme.minIndex = 0;\r\n\t\t\tme.maxIndex = labels.length - 1;\r\n\t\t\tvar findIndex;\r\n\r\n\t\t\tif (me.options.ticks.min !== undefined) {\r\n\t\t\t\t// user specified min value\r\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.min);\r\n\t\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\r\n\t\t\t}\r\n\r\n\t\t\tif (me.options.ticks.max !== undefined) {\r\n\t\t\t\t// user specified max value\r\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.max);\r\n\t\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\r\n\t\t\t}\r\n\r\n\t\t\tme.min = labels[me.minIndex];\r\n\t\t\tme.max = labels[me.maxIndex];\r\n\t\t},\r\n\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar labels = me.getLabels();\r\n\t\t\t// If we are viewing some subset of labels, slice the original array\r\n\t\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\r\n\t\t},\r\n\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar data = me.chart.data;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\t\tif (data.yLabels && !isHorizontal) {\r\n\t\t\t\treturn me.getRightValue(data.datasets[datasetIndex].data[index]);\r\n\t\t\t}\r\n\t\t\treturn me.ticks[index - me.minIndex];\r\n\t\t},\r\n\r\n\t\t// Used to get data value locations. Value can either be an index or a numerical value\r\n\t\tgetPixelForValue: function(value, index) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar offset = me.options.offset;\r\n\t\t\t// 1 is added because we need the length but we have the indexes\r\n\t\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);\r\n\r\n\t\t\t// If value is a data object, then index is the index in the data array,\r\n\t\t\t// not the index of the scale. We need to change that.\r\n\t\t\tvar valueCategory;\r\n\t\t\tif (value !== undefined && value !== null) {\r\n\t\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\r\n\t\t\t}\r\n\t\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\r\n\t\t\t\tvar labels = me.getLabels();\r\n\t\t\t\tvalue = valueCategory || value;\r\n\t\t\t\tvar idx = labels.indexOf(value);\r\n\t\t\t\tindex = idx !== -1 ? idx : index;\r\n\t\t\t}\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tvar valueWidth = me.width / offsetAmt;\r\n\t\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex));\r\n\r\n\t\t\t\tif (offset) {\r\n\t\t\t\t\twidthOffset += (valueWidth / 2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn me.left + Math.round(widthOffset);\r\n\t\t\t}\r\n\t\t\tvar valueHeight = me.height / offsetAmt;\r\n\t\t\tvar heightOffset = (valueHeight * (index - me.minIndex));\r\n\r\n\t\t\tif (offset) {\r\n\t\t\t\theightOffset += (valueHeight / 2);\r\n\t\t\t}\r\n\r\n\t\t\treturn me.top + Math.round(heightOffset);\r\n\t\t},\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null);\r\n\t\t},\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar offset = me.options.offset;\r\n\t\t\tvar value;\r\n\t\t\tvar offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\r\n\t\t\tvar horz = me.isHorizontal();\r\n\t\t\tvar valueDimension = (horz ? me.width : me.height) / offsetAmt;\r\n\r\n\t\t\tpixel -= horz ? me.left : me.top;\r\n\r\n\t\t\tif (offset) {\r\n\t\t\t\tpixel -= (valueDimension / 2);\r\n\t\t\t}\r\n\r\n\t\t\tif (pixel <= 0) {\r\n\t\t\t\tvalue = 0;\r\n\t\t\t} else {\r\n\t\t\t\tvalue = Math.round(pixel / valueDimension);\r\n\t\t\t}\r\n\r\n\t\t\treturn value + me.minIndex;\r\n\t\t},\r\n\t\tgetBasePixel: function() {\r\n\t\t\treturn this.bottom;\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('category', DatasetScale, defaultConfig);\r\n};\r\n\r\n},{\"33\":33,\"34\":34}],55:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar scaleService = require(34);\r\nvar Ticks = require(35);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar defaultConfig = {\r\n\t\tposition: 'left',\r\n\t\tticks: {\r\n\t\t\tcallback: Ticks.formatters.linear\r\n\t\t}\r\n\t};\r\n\r\n\tvar LinearScale = Chart.LinearScaleBase.extend({\r\n\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar data = chart.data;\r\n\t\t\tvar datasets = data.datasets;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tvar DEFAULT_MIN = 0;\r\n\t\t\tvar DEFAULT_MAX = 1;\r\n\r\n\t\t\tfunction IDMatches(meta) {\r\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\r\n\t\t\t}\r\n\r\n\t\t\t// First Calculate the range\r\n\t\t\tme.min = null;\r\n\t\t\tme.max = null;\r\n\r\n\t\t\tvar hasStacks = opts.stacked;\r\n\t\t\tif (hasStacks === undefined) {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tif (hasStacks) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\r\n\t\t\t\t\t\tmeta.stack !== undefined) {\r\n\t\t\t\t\t\thasStacks = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (opts.stacked || hasStacks) {\r\n\t\t\t\tvar valuesPerStack = {};\r\n\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tvar key = [\r\n\t\t\t\t\t\tmeta.type,\r\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\r\n\t\t\t\t\t\tmeta.stack\r\n\t\t\t\t\t].join('.');\r\n\r\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\r\n\t\t\t\t\t\tvaluesPerStack[key] = {\r\n\t\t\t\t\t\t\tpositiveValues: [],\r\n\t\t\t\t\t\t\tnegativeValues: []\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Store these per type\r\n\t\t\t\t\tvar positiveValues = valuesPerStack[key].positiveValues;\r\n\t\t\t\t\tvar negativeValues = valuesPerStack[key].negativeValues;\r\n\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tpositiveValues[index] = positiveValues[index] || 0;\r\n\t\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\r\n\r\n\t\t\t\t\t\t\tif (opts.relativePoints) {\r\n\t\t\t\t\t\t\t\tpositiveValues[index] = 100;\r\n\t\t\t\t\t\t\t} else if (value < 0) {\r\n\t\t\t\t\t\t\t\tnegativeValues[index] += value;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tpositiveValues[index] += value;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\r\n\t\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\r\n\t\t\t\t\tvar minVal = helpers.min(values);\r\n\t\t\t\t\tvar maxVal = helpers.max(values);\r\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\r\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\r\n\t\t\t\t});\r\n\r\n\t\t\t} else {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.min === null) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t} else if (value < me.min) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.max === null) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t} else if (value > me.max) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tme.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\r\n\t\t\tme.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\r\n\r\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\t\tthis.handleTickRangeOptions();\r\n\t\t},\r\n\t\tgetTickLimit: function() {\r\n\t\t\tvar maxTicks;\r\n\t\t\tvar me = this;\r\n\t\t\tvar tickOpts = me.options.ticks;\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));\r\n\t\t\t} else {\r\n\t\t\t\t// The factor of 2 used to scale the font size has been experimentally determined.\r\n\t\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);\r\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));\r\n\t\t\t}\r\n\r\n\t\t\treturn maxTicks;\r\n\t\t},\r\n\t\t// Called after the ticks are built. We need\r\n\t\thandleDirectionalChanges: function() {\r\n\t\t\tif (!this.isHorizontal()) {\r\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\r\n\t\t\t\tthis.ticks.reverse();\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t\t},\r\n\t\t// Utils\r\n\t\tgetPixelForValue: function(value) {\r\n\t\t\t// This must be called after fit has been run so that\r\n\t\t\t// this.left, this.top, this.right, and this.bottom have been defined\r\n\t\t\tvar me = this;\r\n\t\t\tvar start = me.start;\r\n\r\n\t\t\tvar rightValue = +me.getRightValue(value);\r\n\t\t\tvar pixel;\r\n\t\t\tvar range = me.end - start;\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tpixel = me.left + (me.width / range * (rightValue - start));\r\n\t\t\t} else {\r\n\t\t\t\tpixel = me.bottom - (me.height / range * (rightValue - start));\r\n\t\t\t}\r\n\t\t\treturn pixel;\r\n\t\t},\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tvar innerDimension = isHorizontal ? me.width : me.height;\r\n\t\t\tvar offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\r\n\t\t\treturn me.start + ((me.end - me.start) * offset);\r\n\t\t},\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('linear', LinearScale, defaultConfig);\r\n};\r\n\r\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],56:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\nvar Scale = require(33);\r\n\r\n/**\r\n * Generate a set of linear ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {Array} array of tick values\r\n */\r\nfunction generateTicks(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\r\n\t// \"nice number\" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\r\n\t// for details.\r\n\r\n\tvar factor;\r\n\tvar precision;\r\n\tvar spacing;\r\n\r\n\tif (generationOptions.stepSize && generationOptions.stepSize > 0) {\r\n\t\tspacing = generationOptions.stepSize;\r\n\t} else {\r\n\t\tvar niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);\r\n\t\tspacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);\r\n\r\n\t\tprecision = generationOptions.precision;\r\n\t\tif (precision !== undefined) {\r\n\t\t\t// If the user specified a precision, round to that number of decimal places\r\n\t\t\tfactor = Math.pow(10, precision);\r\n\t\t\tspacing = Math.ceil(spacing * factor) / factor;\r\n\t\t}\r\n\t}\r\n\tvar niceMin = Math.floor(dataRange.min / spacing) * spacing;\r\n\tvar niceMax = Math.ceil(dataRange.max / spacing) * spacing;\r\n\r\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\r\n\tif (!helpers.isNullOrUndef(generationOptions.min) && !helpers.isNullOrUndef(generationOptions.max) && generationOptions.stepSize) {\r\n\t\t// If very close to our whole number, use it.\r\n\t\tif (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) {\r\n\t\t\tniceMin = generationOptions.min;\r\n\t\t\tniceMax = generationOptions.max;\r\n\t\t}\r\n\t}\r\n\r\n\tvar numSpaces = (niceMax - niceMin) / spacing;\r\n\t// If very close to our rounded value, use it.\r\n\tif (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\r\n\t\tnumSpaces = Math.round(numSpaces);\r\n\t} else {\r\n\t\tnumSpaces = Math.ceil(numSpaces);\r\n\t}\r\n\r\n\tprecision = 1;\r\n\tif (spacing < 1) {\r\n\t\tprecision = Math.pow(10, 1 - Math.floor(helpers.log10(spacing)));\r\n\t\tniceMin = Math.round(niceMin * precision) / precision;\r\n\t\tniceMax = Math.round(niceMax * precision) / precision;\r\n\t}\r\n\tticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);\r\n\tfor (var j = 1; j < numSpaces; ++j) {\r\n\t\tticks.push(Math.round((niceMin + j * spacing) * precision) / precision);\r\n\t}\r\n\tticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);\r\n\r\n\treturn ticks;\r\n}\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar noop = helpers.noop;\r\n\r\n\tChart.LinearScaleBase = Scale.extend({\r\n\t\tgetRightValue: function(value) {\r\n\t\t\tif (typeof value === 'string') {\r\n\t\t\t\treturn +value;\r\n\t\t\t}\r\n\t\t\treturn Scale.prototype.getRightValue.call(this, value);\r\n\t\t},\r\n\r\n\t\thandleTickRangeOptions: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\r\n\t\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\r\n\t\t\t// axis, they can manually override it\r\n\t\t\tif (tickOpts.beginAtZero) {\r\n\t\t\t\tvar minSign = helpers.sign(me.min);\r\n\t\t\t\tvar maxSign = helpers.sign(me.max);\r\n\r\n\t\t\t\tif (minSign < 0 && maxSign < 0) {\r\n\t\t\t\t\t// move the top up to 0\r\n\t\t\t\t\tme.max = 0;\r\n\t\t\t\t} else if (minSign > 0 && maxSign > 0) {\r\n\t\t\t\t\t// move the bottom down to 0\r\n\t\t\t\t\tme.min = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\r\n\t\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\r\n\r\n\t\t\tif (tickOpts.min !== undefined) {\r\n\t\t\t\tme.min = tickOpts.min;\r\n\t\t\t} else if (tickOpts.suggestedMin !== undefined) {\r\n\t\t\t\tif (me.min === null) {\r\n\t\t\t\t\tme.min = tickOpts.suggestedMin;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (tickOpts.max !== undefined) {\r\n\t\t\t\tme.max = tickOpts.max;\r\n\t\t\t} else if (tickOpts.suggestedMax !== undefined) {\r\n\t\t\t\tif (me.max === null) {\r\n\t\t\t\t\tme.max = tickOpts.suggestedMax;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (setMin !== setMax) {\r\n\t\t\t\t// We set the min or the max but not both.\r\n\t\t\t\t// So ensure that our range is good\r\n\t\t\t\t// Inverted or 0 length range can happen when\r\n\t\t\t\t// ticks.min is set, and no datasets are visible\r\n\t\t\t\tif (me.min >= me.max) {\r\n\t\t\t\t\tif (setMin) {\r\n\t\t\t\t\t\tme.max = me.min + 1;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tme.min = me.max - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (me.min === me.max) {\r\n\t\t\t\tme.max++;\r\n\r\n\t\t\t\tif (!tickOpts.beginAtZero) {\r\n\t\t\t\t\tme.min--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetTickLimit: noop,\r\n\t\thandleDirectionalChanges: noop,\r\n\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\r\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\r\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\r\n\t\t\t// the graph. Make sure we always have at least 2 ticks\r\n\t\t\tvar maxTicks = me.getTickLimit();\r\n\t\t\tmaxTicks = Math.max(2, maxTicks);\r\n\r\n\t\t\tvar numericGeneratorOptions = {\r\n\t\t\t\tmaxTicks: maxTicks,\r\n\t\t\t\tmin: tickOpts.min,\r\n\t\t\t\tmax: tickOpts.max,\r\n\t\t\t\tprecision: tickOpts.precision,\r\n\t\t\t\tstepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\r\n\t\t\t};\r\n\t\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\r\n\r\n\t\t\tme.handleDirectionalChanges();\r\n\r\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t\t// range of the scale\r\n\t\t\tme.max = helpers.max(ticks);\r\n\t\t\tme.min = helpers.min(ticks);\r\n\r\n\t\t\tif (tickOpts.reverse) {\r\n\t\t\t\tticks.reverse();\r\n\r\n\t\t\t\tme.start = me.max;\r\n\t\t\t\tme.end = me.min;\r\n\t\t\t} else {\r\n\t\t\t\tme.start = me.min;\r\n\t\t\t\tme.end = me.max;\r\n\t\t\t}\r\n\t\t},\r\n\t\tconvertTicksToLabels: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tme.ticksAsNumbers = me.ticks.slice();\r\n\t\t\tme.zeroLineIndex = me.ticks.indexOf(0);\r\n\r\n\t\t\tScale.prototype.convertTicksToLabels.call(me);\r\n\t\t}\r\n\t});\r\n};\r\n\r\n},{\"33\":33,\"46\":46}],57:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar helpers = require(46);\r\nvar Scale = require(33);\r\nvar scaleService = require(34);\r\nvar Ticks = require(35);\r\n\r\n/**\r\n * Generate a set of logarithmic ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {Array} array of tick values\r\n */\r\nfunction generateTicks(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\tvar valueOrDefault = helpers.valueOrDefault;\r\n\r\n\t// Figure out what the max number of ticks we can support it is based on the size of\r\n\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\r\n\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\r\n\t// the graph\r\n\tvar tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));\r\n\r\n\tvar endExp = Math.floor(helpers.log10(dataRange.max));\r\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\r\n\tvar exp, significand;\r\n\r\n\tif (tickVal === 0) {\r\n\t\texp = Math.floor(helpers.log10(dataRange.minNotZero));\r\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\r\n\r\n\t\tticks.push(tickVal);\r\n\t\ttickVal = significand * Math.pow(10, exp);\r\n\t} else {\r\n\t\texp = Math.floor(helpers.log10(tickVal));\r\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\r\n\t}\r\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\r\n\r\n\tdo {\r\n\t\tticks.push(tickVal);\r\n\r\n\t\t++significand;\r\n\t\tif (significand === 10) {\r\n\t\t\tsignificand = 1;\r\n\t\t\t++exp;\r\n\t\t\tprecision = exp >= 0 ? 1 : precision;\r\n\t\t}\r\n\r\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\r\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\r\n\r\n\tvar lastTick = valueOrDefault(generationOptions.max, tickVal);\r\n\tticks.push(lastTick);\r\n\r\n\treturn ticks;\r\n}\r\n\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar defaultConfig = {\r\n\t\tposition: 'left',\r\n\r\n\t\t// label settings\r\n\t\tticks: {\r\n\t\t\tcallback: Ticks.formatters.logarithmic\r\n\t\t}\r\n\t};\r\n\r\n\tvar LogarithmicScale = Scale.extend({\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar data = chart.data;\r\n\t\t\tvar datasets = data.datasets;\r\n\t\t\tvar isHorizontal = me.isHorizontal();\r\n\t\t\tfunction IDMatches(meta) {\r\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\r\n\t\t\t}\r\n\r\n\t\t\t// Calculate Range\r\n\t\t\tme.min = null;\r\n\t\t\tme.max = null;\r\n\t\t\tme.minNotZero = null;\r\n\r\n\t\t\tvar hasStacks = opts.stacked;\r\n\t\t\tif (hasStacks === undefined) {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tif (hasStacks) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\r\n\t\t\t\t\t\tmeta.stack !== undefined) {\r\n\t\t\t\t\t\thasStacks = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (opts.stacked || hasStacks) {\r\n\t\t\t\tvar valuesPerStack = {};\r\n\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tvar key = [\r\n\t\t\t\t\t\tmeta.type,\r\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\r\n\t\t\t\t\t\tmeta.stack\r\n\t\t\t\t\t].join('.');\r\n\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\tif (valuesPerStack[key] === undefined) {\r\n\t\t\t\t\t\t\tvaluesPerStack[key] = [];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar values = valuesPerStack[key];\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvalues[index] = values[index] || 0;\r\n\t\t\t\t\t\t\tvalues[index] += value;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\r\n\t\t\t\t\tif (valuesForType.length > 0) {\r\n\t\t\t\t\t\tvar minVal = helpers.min(valuesForType);\r\n\t\t\t\t\t\tvar maxVal = helpers.max(valuesForType);\r\n\t\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\r\n\t\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t} else {\r\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.min === null) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t} else if (value < me.min) {\r\n\t\t\t\t\t\t\t\tme.min = value;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (me.max === null) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t} else if (value > me.max) {\r\n\t\t\t\t\t\t\t\tme.max = value;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\r\n\t\t\t\t\t\t\t\tme.minNotZero = value;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Common base implementation to handle ticks.min, ticks.max\r\n\t\t\tthis.handleTickRangeOptions();\r\n\t\t},\r\n\t\thandleTickRangeOptions: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\t\t\tvar DEFAULT_MIN = 1;\r\n\t\t\tvar DEFAULT_MAX = 10;\r\n\r\n\t\t\tme.min = valueOrDefault(tickOpts.min, me.min);\r\n\t\t\tme.max = valueOrDefault(tickOpts.max, me.max);\r\n\r\n\t\t\tif (me.min === me.max) {\r\n\t\t\t\tif (me.min !== 0 && me.min !== null) {\r\n\t\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);\r\n\t\t\t\t\tme.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.min = DEFAULT_MIN;\r\n\t\t\t\t\tme.max = DEFAULT_MAX;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (me.min === null) {\r\n\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.max)) - 1);\r\n\t\t\t}\r\n\t\t\tif (me.max === null) {\r\n\t\t\t\tme.max = me.min !== 0\r\n\t\t\t\t\t? Math.pow(10, Math.floor(helpers.log10(me.min)) + 1)\r\n\t\t\t\t\t: DEFAULT_MAX;\r\n\t\t\t}\r\n\t\t\tif (me.minNotZero === null) {\r\n\t\t\t\tif (me.min > 0) {\r\n\t\t\t\t\tme.minNotZero = me.min;\r\n\t\t\t\t} else if (me.max < 1) {\r\n\t\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(helpers.log10(me.max)));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.minNotZero = DEFAULT_MIN;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\tvar reverse = !me.isHorizontal();\r\n\r\n\t\t\tvar generationOptions = {\r\n\t\t\t\tmin: tickOpts.min,\r\n\t\t\t\tmax: tickOpts.max\r\n\t\t\t};\r\n\t\t\tvar ticks = me.ticks = generateTicks(generationOptions, me);\r\n\r\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t\t// range of the scale\r\n\t\t\tme.max = helpers.max(ticks);\r\n\t\t\tme.min = helpers.min(ticks);\r\n\r\n\t\t\tif (tickOpts.reverse) {\r\n\t\t\t\treverse = !reverse;\r\n\t\t\t\tme.start = me.max;\r\n\t\t\t\tme.end = me.min;\r\n\t\t\t} else {\r\n\t\t\t\tme.start = me.min;\r\n\t\t\t\tme.end = me.max;\r\n\t\t\t}\r\n\t\t\tif (reverse) {\r\n\t\t\t\tticks.reverse();\r\n\t\t\t}\r\n\t\t},\r\n\t\tconvertTicksToLabels: function() {\r\n\t\t\tthis.tickValues = this.ticks.slice();\r\n\r\n\t\t\tScale.prototype.convertTicksToLabels.call(this);\r\n\t\t},\r\n\t\t// Get the correct tooltip label\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t\t},\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\treturn this.getPixelForValue(this.tickValues[index]);\r\n\t\t},\r\n\t\t/**\r\n\t\t * Returns the value of the first tick.\r\n\t\t * @param {Number} value - The minimum not zero value.\r\n\t\t * @return {Number} The first tick value.\r\n\t\t * @private\r\n\t\t */\r\n\t\t_getFirstTickValue: function(value) {\r\n\t\t\tvar exp = Math.floor(helpers.log10(value));\r\n\t\t\tvar significand = Math.floor(value / Math.pow(10, exp));\r\n\r\n\t\t\treturn significand * Math.pow(10, exp);\r\n\t\t},\r\n\t\tgetPixelForValue: function(value) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar reverse = me.options.ticks.reverse;\r\n\t\t\tvar log10 = helpers.log10;\r\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\r\n\t\t\tvar offset = 0;\r\n\t\t\tvar innerDimension, pixel, start, end, sign;\r\n\r\n\t\t\tvalue = +me.getRightValue(value);\r\n\t\t\tif (reverse) {\r\n\t\t\t\tstart = me.end;\r\n\t\t\t\tend = me.start;\r\n\t\t\t\tsign = -1;\r\n\t\t\t} else {\r\n\t\t\t\tstart = me.start;\r\n\t\t\t\tend = me.end;\r\n\t\t\t\tsign = 1;\r\n\t\t\t}\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tinnerDimension = me.width;\r\n\t\t\t\tpixel = reverse ? me.right : me.left;\r\n\t\t\t} else {\r\n\t\t\t\tinnerDimension = me.height;\r\n\t\t\t\tsign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0)\r\n\t\t\t\tpixel = reverse ? me.top : me.bottom;\r\n\t\t\t}\r\n\t\t\tif (value !== start) {\r\n\t\t\t\tif (start === 0) { // include zero tick\r\n\t\t\t\t\toffset = helpers.getValueOrDefault(\r\n\t\t\t\t\t\tme.options.ticks.fontSize,\r\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\r\n\t\t\t\t\t);\r\n\t\t\t\t\tinnerDimension -= offset;\r\n\t\t\t\t\tstart = firstTickValue;\r\n\t\t\t\t}\r\n\t\t\t\tif (value !== 0) {\r\n\t\t\t\t\toffset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start));\r\n\t\t\t\t}\r\n\t\t\t\tpixel += sign * offset;\r\n\t\t\t}\r\n\t\t\treturn pixel;\r\n\t\t},\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar reverse = me.options.ticks.reverse;\r\n\t\t\tvar log10 = helpers.log10;\r\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\r\n\t\t\tvar innerDimension, start, end, value;\r\n\r\n\t\t\tif (reverse) {\r\n\t\t\t\tstart = me.end;\r\n\t\t\t\tend = me.start;\r\n\t\t\t} else {\r\n\t\t\t\tstart = me.start;\r\n\t\t\t\tend = me.end;\r\n\t\t\t}\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tinnerDimension = me.width;\r\n\t\t\t\tvalue = reverse ? me.right - pixel : pixel - me.left;\r\n\t\t\t} else {\r\n\t\t\t\tinnerDimension = me.height;\r\n\t\t\t\tvalue = reverse ? pixel - me.top : me.bottom - pixel;\r\n\t\t\t}\r\n\t\t\tif (value !== start) {\r\n\t\t\t\tif (start === 0) { // include zero tick\r\n\t\t\t\t\tvar offset = helpers.getValueOrDefault(\r\n\t\t\t\t\t\tme.options.ticks.fontSize,\r\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\r\n\t\t\t\t\t);\r\n\t\t\t\t\tvalue -= offset;\r\n\t\t\t\t\tinnerDimension -= offset;\r\n\t\t\t\t\tstart = firstTickValue;\r\n\t\t\t\t}\r\n\t\t\t\tvalue *= log10(end) - log10(start);\r\n\t\t\t\tvalue /= innerDimension;\r\n\t\t\t\tvalue = Math.pow(10, log10(start) + value);\r\n\t\t\t}\r\n\t\t\treturn value;\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig);\r\n};\r\n\r\n},{\"33\":33,\"34\":34,\"35\":35,\"46\":46}],58:[function(require,module,exports){\r\n'use strict';\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar scaleService = require(34);\r\nvar Ticks = require(35);\r\n\r\nmodule.exports = function(Chart) {\r\n\r\n\tvar globalDefaults = defaults.global;\r\n\r\n\tvar defaultConfig = {\r\n\t\tdisplay: true,\r\n\r\n\t\t// Boolean - Whether to animate scaling the chart from the centre\r\n\t\tanimate: true,\r\n\t\tposition: 'chartArea',\r\n\r\n\t\tangleLines: {\r\n\t\t\tdisplay: true,\r\n\t\t\tcolor: 'rgba(0, 0, 0, 0.1)',\r\n\t\t\tlineWidth: 1\r\n\t\t},\r\n\r\n\t\tgridLines: {\r\n\t\t\tcircular: false\r\n\t\t},\r\n\r\n\t\t// label settings\r\n\t\tticks: {\r\n\t\t\t// Boolean - Show a backdrop to the scale label\r\n\t\t\tshowLabelBackdrop: true,\r\n\r\n\t\t\t// String - The colour of the label backdrop\r\n\t\t\tbackdropColor: 'rgba(255,255,255,0.75)',\r\n\r\n\t\t\t// Number - The backdrop padding above & below the label in pixels\r\n\t\t\tbackdropPaddingY: 2,\r\n\r\n\t\t\t// Number - The backdrop padding to the side of the label in pixels\r\n\t\t\tbackdropPaddingX: 2,\r\n\r\n\t\t\tcallback: Ticks.formatters.linear\r\n\t\t},\r\n\r\n\t\tpointLabels: {\r\n\t\t\t// Boolean - if true, show point labels\r\n\t\t\tdisplay: true,\r\n\r\n\t\t\t// Number - Point label font size in pixels\r\n\t\t\tfontSize: 10,\r\n\r\n\t\t\t// Function - Used to convert point labels\r\n\t\t\tcallback: function(label) {\r\n\t\t\t\treturn label;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getValueCount(scale) {\r\n\t\tvar opts = scale.options;\r\n\t\treturn opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\r\n\t}\r\n\r\n\tfunction getPointLabelFontOptions(scale) {\r\n\t\tvar pointLabelOptions = scale.options.pointLabels;\r\n\t\tvar fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize);\r\n\t\tvar fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle);\r\n\t\tvar fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily);\r\n\t\tvar font = helpers.fontString(fontSize, fontStyle, fontFamily);\r\n\r\n\t\treturn {\r\n\t\t\tsize: fontSize,\r\n\t\t\tstyle: fontStyle,\r\n\t\t\tfamily: fontFamily,\r\n\t\t\tfont: font\r\n\t\t};\r\n\t}\r\n\r\n\tfunction measureLabelSize(ctx, fontSize, label) {\r\n\t\tif (helpers.isArray(label)) {\r\n\t\t\treturn {\r\n\t\t\t\tw: helpers.longestText(ctx, ctx.font, label),\r\n\t\t\t\th: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize)\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tw: ctx.measureText(label).width,\r\n\t\t\th: fontSize\r\n\t\t};\r\n\t}\r\n\r\n\tfunction determineLimits(angle, pos, size, min, max) {\r\n\t\tif (angle === min || angle === max) {\r\n\t\t\treturn {\r\n\t\t\t\tstart: pos - (size / 2),\r\n\t\t\t\tend: pos + (size / 2)\r\n\t\t\t};\r\n\t\t} else if (angle < min || angle > max) {\r\n\t\t\treturn {\r\n\t\t\t\tstart: pos - size - 5,\r\n\t\t\t\tend: pos\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tstart: pos,\r\n\t\t\tend: pos + size + 5\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Helper function to fit a radial linear scale with point labels\r\n\t */\r\n\tfunction fitWithPointLabels(scale) {\r\n\t\t/*\r\n\t\t * Right, this is really confusing and there is a lot of maths going on here\r\n\t\t * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\r\n\t\t *\r\n\t\t * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\r\n\t\t *\r\n\t\t * Solution:\r\n\t\t *\r\n\t\t * We assume the radius of the polygon is half the size of the canvas at first\r\n\t\t * at each index we check if the text overlaps.\r\n\t\t *\r\n\t\t * Where it does, we store that angle and that index.\r\n\t\t *\r\n\t\t * After finding the largest index and angle we calculate how much we need to remove\r\n\t\t * from the shape radius to move the point inwards by that x.\r\n\t\t *\r\n\t\t * We average the left and right distances to get the maximum shape radius that can fit in the box\r\n\t\t * along with labels.\r\n\t\t *\r\n\t\t * Once we have that, we can find the centre point for the chart, by taking the x text protrusion\r\n\t\t * on each side, removing that from the size, halving it and adding the left x protrusion width.\r\n\t\t *\r\n\t\t * This will mean we have a shape fitted to the canvas, as large as it can be with the labels\r\n\t\t * and position it in the most space efficient manner\r\n\t\t *\r\n\t\t * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\r\n\t\t */\r\n\r\n\t\tvar plFont = getPointLabelFontOptions(scale);\r\n\r\n\t\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\r\n\t\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\r\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\r\n\t\tvar furthestLimits = {\r\n\t\t\tr: scale.width,\r\n\t\t\tl: 0,\r\n\t\t\tt: scale.height,\r\n\t\t\tb: 0\r\n\t\t};\r\n\t\tvar furthestAngles = {};\r\n\t\tvar i, textSize, pointPosition;\r\n\r\n\t\tscale.ctx.font = plFont.font;\r\n\t\tscale._pointLabelSizes = [];\r\n\r\n\t\tvar valueCount = getValueCount(scale);\r\n\t\tfor (i = 0; i < valueCount; i++) {\r\n\t\t\tpointPosition = scale.getPointPosition(i, largestPossibleRadius);\r\n\t\t\ttextSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || '');\r\n\t\t\tscale._pointLabelSizes[i] = textSize;\r\n\r\n\t\t\t// Add quarter circle to make degree 0 mean top of circle\r\n\t\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\t\tvar angle = helpers.toDegrees(angleRadians) % 360;\r\n\t\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\r\n\t\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\r\n\r\n\t\t\tif (hLimits.start < furthestLimits.l) {\r\n\t\t\t\tfurthestLimits.l = hLimits.start;\r\n\t\t\t\tfurthestAngles.l = angleRadians;\r\n\t\t\t}\r\n\r\n\t\t\tif (hLimits.end > furthestLimits.r) {\r\n\t\t\t\tfurthestLimits.r = hLimits.end;\r\n\t\t\t\tfurthestAngles.r = angleRadians;\r\n\t\t\t}\r\n\r\n\t\t\tif (vLimits.start < furthestLimits.t) {\r\n\t\t\t\tfurthestLimits.t = vLimits.start;\r\n\t\t\t\tfurthestAngles.t = angleRadians;\r\n\t\t\t}\r\n\r\n\t\t\tif (vLimits.end > furthestLimits.b) {\r\n\t\t\t\tfurthestLimits.b = vLimits.end;\r\n\t\t\t\tfurthestAngles.b = angleRadians;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tscale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles);\r\n\t}\r\n\r\n\t/**\r\n\t * Helper function to fit a radial linear scale with no point labels\r\n\t */\r\n\tfunction fit(scale) {\r\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\r\n\t\tscale.drawingArea = Math.round(largestPossibleRadius);\r\n\t\tscale.setCenterPoint(0, 0, 0, 0);\r\n\t}\r\n\r\n\tfunction getTextAlignForAngle(angle) {\r\n\t\tif (angle === 0 || angle === 180) {\r\n\t\t\treturn 'center';\r\n\t\t} else if (angle < 180) {\r\n\t\t\treturn 'left';\r\n\t\t}\r\n\r\n\t\treturn 'right';\r\n\t}\r\n\r\n\tfunction fillText(ctx, text, position, fontSize) {\r\n\t\tif (helpers.isArray(text)) {\r\n\t\t\tvar y = position.y;\r\n\t\t\tvar spacing = 1.5 * fontSize;\r\n\r\n\t\t\tfor (var i = 0; i < text.length; ++i) {\r\n\t\t\t\tctx.fillText(text[i], position.x, y);\r\n\t\t\t\ty += spacing;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tctx.fillText(text, position.x, position.y);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\r\n\t\tif (angle === 90 || angle === 270) {\r\n\t\t\tposition.y -= (textSize.h / 2);\r\n\t\t} else if (angle > 270 || angle < 90) {\r\n\t\t\tposition.y -= textSize.h;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction drawPointLabels(scale) {\r\n\t\tvar ctx = scale.ctx;\r\n\t\tvar opts = scale.options;\r\n\t\tvar angleLineOpts = opts.angleLines;\r\n\t\tvar pointLabelOpts = opts.pointLabels;\r\n\r\n\t\tctx.lineWidth = angleLineOpts.lineWidth;\r\n\t\tctx.strokeStyle = angleLineOpts.color;\r\n\r\n\t\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\r\n\r\n\t\t// Point Label Font\r\n\t\tvar plFont = getPointLabelFontOptions(scale);\r\n\r\n\t\tctx.textBaseline = 'top';\r\n\r\n\t\tfor (var i = getValueCount(scale) - 1; i >= 0; i--) {\r\n\t\t\tif (angleLineOpts.display) {\r\n\t\t\t\tvar outerPosition = scale.getPointPosition(i, outerDistance);\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.moveTo(scale.xCenter, scale.yCenter);\r\n\t\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t\tctx.closePath();\r\n\t\t\t}\r\n\r\n\t\t\tif (pointLabelOpts.display) {\r\n\t\t\t\t// Extra 3px out for some label spacing\r\n\t\t\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + 5);\r\n\r\n\t\t\t\t// Keep this in loop since we may support array properties here\r\n\t\t\t\tvar pointLabelFontColor = helpers.valueAtIndexOrDefault(pointLabelOpts.fontColor, i, globalDefaults.defaultFontColor);\r\n\t\t\t\tctx.font = plFont.font;\r\n\t\t\t\tctx.fillStyle = pointLabelFontColor;\r\n\r\n\t\t\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\t\t\tvar angle = helpers.toDegrees(angleRadians);\r\n\t\t\t\tctx.textAlign = getTextAlignForAngle(angle);\r\n\t\t\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\r\n\t\t\t\tfillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\r\n\t\tvar ctx = scale.ctx;\r\n\t\tctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1);\r\n\t\tctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);\r\n\r\n\t\tif (scale.options.gridLines.circular) {\r\n\t\t\t// Draw circular arcs between the points\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.stroke();\r\n\t\t} else {\r\n\t\t\t// Draw straight lines connecting each index\r\n\t\t\tvar valueCount = getValueCount(scale);\r\n\r\n\t\t\tif (valueCount === 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tctx.beginPath();\r\n\t\t\tvar pointPosition = scale.getPointPosition(0, radius);\r\n\t\t\tctx.moveTo(pointPosition.x, pointPosition.y);\r\n\r\n\t\t\tfor (var i = 1; i < valueCount; i++) {\r\n\t\t\t\tpointPosition = scale.getPointPosition(i, radius);\r\n\t\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\r\n\t\t\t}\r\n\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction numberOrZero(param) {\r\n\t\treturn helpers.isNumber(param) ? param : 0;\r\n\t}\r\n\r\n\tvar LinearRadialScale = Chart.LinearScaleBase.extend({\r\n\t\tsetDimensions: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\t// Set the unconstrained dimension before label rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.height = me.maxHeight;\r\n\t\t\tme.xCenter = Math.round(me.width / 2);\r\n\t\t\tme.yCenter = Math.round(me.height / 2);\r\n\r\n\t\t\tvar minSize = helpers.min([me.height, me.width]);\r\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\tme.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);\r\n\t\t},\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar min = Number.POSITIVE_INFINITY;\r\n\t\t\tvar max = Number.NEGATIVE_INFINITY;\r\n\r\n\t\t\thelpers.each(chart.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\r\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\r\n\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmin = Math.min(value, min);\r\n\t\t\t\t\t\tmax = Math.max(value, max);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\r\n\t\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\r\n\r\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\t\tme.handleTickRangeOptions();\r\n\t\t},\r\n\t\tgetTickLimit: function() {\r\n\t\t\tvar tickOpts = this.options.ticks;\r\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\treturn Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));\r\n\t\t},\r\n\t\tconvertTicksToLabels: function() {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tChart.LinearScaleBase.prototype.convertTicksToLabels.call(me);\r\n\r\n\t\t\t// Point labels\r\n\t\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\r\n\t\t},\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t\t},\r\n\t\tfit: function() {\r\n\t\t\tif (this.options.pointLabels.display) {\r\n\t\t\t\tfitWithPointLabels(this);\r\n\t\t\t} else {\r\n\t\t\t\tfit(this);\r\n\t\t\t}\r\n\t\t},\r\n\t\t/**\r\n\t\t * Set radius reductions and determine new radius and center point\r\n\t\t * @private\r\n\t\t */\r\n\t\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\r\n\t\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\r\n\t\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\r\n\t\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b);\r\n\r\n\t\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\r\n\t\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\r\n\t\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\r\n\t\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\r\n\r\n\t\t\tme.drawingArea = Math.min(\r\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\r\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\r\n\t\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\r\n\t\t},\r\n\t\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\r\n\t\t\tvar maxLeft = leftMovement + me.drawingArea;\r\n\t\t\tvar maxTop = topMovement + me.drawingArea;\r\n\t\t\tvar maxBottom = me.height - bottomMovement - me.drawingArea;\r\n\r\n\t\t\tme.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);\r\n\t\t\tme.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top);\r\n\t\t},\r\n\r\n\t\tgetIndexAngle: function(index) {\r\n\t\t\tvar angleMultiplier = (Math.PI * 2) / getValueCount(this);\r\n\t\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\r\n\t\t\t\tthis.chart.options.startAngle :\r\n\t\t\t\t0;\r\n\r\n\t\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\r\n\r\n\t\t\t// Start from the top instead of right, so remove a quarter of the circle\r\n\t\t\treturn index * angleMultiplier + startAngleRadians;\r\n\t\t},\r\n\t\tgetDistanceFromCenterForValue: function(value) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tif (value === null) {\r\n\t\t\t\treturn 0; // null always in center\r\n\t\t\t}\r\n\r\n\t\t\t// Take into account half font size + the yPadding of the top value\r\n\t\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\r\n\t\t\tif (me.options.ticks.reverse) {\r\n\t\t\t\treturn (me.max - value) * scalingFactor;\r\n\t\t\t}\r\n\t\t\treturn (value - me.min) * scalingFactor;\r\n\t\t},\r\n\t\tgetPointPosition: function(index, distanceFromCenter) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\r\n\t\t\treturn {\r\n\t\t\t\tx: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,\r\n\t\t\t\ty: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter\r\n\t\t\t};\r\n\t\t},\r\n\t\tgetPointPositionForValue: function(index, value) {\r\n\t\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\r\n\t\t},\r\n\r\n\t\tgetBasePosition: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar min = me.min;\r\n\t\t\tvar max = me.max;\r\n\r\n\t\t\treturn me.getPointPositionForValue(0,\r\n\t\t\t\tme.beginAtZero ? 0 :\r\n\t\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t\t0);\r\n\t\t},\r\n\r\n\t\tdraw: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar opts = me.options;\r\n\t\t\tvar gridLineOpts = opts.gridLines;\r\n\t\t\tvar tickOpts = opts.ticks;\r\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\r\n\r\n\t\t\tif (opts.display) {\r\n\t\t\t\tvar ctx = me.ctx;\r\n\t\t\t\tvar startAngle = this.getIndexAngle(0);\r\n\r\n\t\t\t\t// Tick Font\r\n\t\t\t\tvar tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\r\n\t\t\t\tvar tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\r\n\t\t\t\tvar tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\r\n\t\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\r\n\r\n\t\t\t\thelpers.each(me.ticks, function(label, index) {\r\n\t\t\t\t\t// Don't draw a centre value (if it is minimum)\r\n\t\t\t\t\tif (index > 0 || tickOpts.reverse) {\r\n\t\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\r\n\r\n\t\t\t\t\t\t// Draw circular lines around the scale\r\n\t\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\r\n\t\t\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, yCenterOffset, index);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (tickOpts.display) {\r\n\t\t\t\t\t\t\tvar tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);\r\n\t\t\t\t\t\t\tctx.font = tickLabelFont;\r\n\r\n\t\t\t\t\t\t\tctx.save();\r\n\t\t\t\t\t\t\tctx.translate(me.xCenter, me.yCenter);\r\n\t\t\t\t\t\t\tctx.rotate(startAngle);\r\n\r\n\t\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\r\n\t\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\r\n\t\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\r\n\t\t\t\t\t\t\t\tctx.fillRect(\r\n\t\t\t\t\t\t\t\t\t-labelWidth / 2 - tickOpts.backdropPaddingX,\r\n\t\t\t\t\t\t\t\t\t-yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY,\r\n\t\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\r\n\t\t\t\t\t\t\t\t\ttickFontSize + tickOpts.backdropPaddingY * 2\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tctx.textAlign = 'center';\r\n\t\t\t\t\t\t\tctx.textBaseline = 'middle';\r\n\t\t\t\t\t\t\tctx.fillStyle = tickFontColor;\r\n\t\t\t\t\t\t\tctx.fillText(label, 0, -yCenterOffset);\r\n\t\t\t\t\t\t\tctx.restore();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (opts.angleLines.display || opts.pointLabels.display) {\r\n\t\t\t\t\tdrawPointLabels(me);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig);\r\n};\r\n\r\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],59:[function(require,module,exports){\r\n/* global window: false */\r\n'use strict';\r\n\r\nvar moment = require(1);\r\nmoment = typeof moment === 'function' ? moment : window.moment;\r\n\r\nvar defaults = require(26);\r\nvar helpers = require(46);\r\nvar Scale = require(33);\r\nvar scaleService = require(34);\r\n\r\n// Integer constants are from the ES6 spec.\r\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\r\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\n\r\nvar INTERVALS = {\r\n\tmillisecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1,\r\n\t\tsteps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\r\n\t},\r\n\tsecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1000,\r\n\t\tsteps: [1, 2, 5, 10, 15, 30]\r\n\t},\r\n\tminute: {\r\n\t\tcommon: true,\r\n\t\tsize: 60000,\r\n\t\tsteps: [1, 2, 5, 10, 15, 30]\r\n\t},\r\n\thour: {\r\n\t\tcommon: true,\r\n\t\tsize: 3600000,\r\n\t\tsteps: [1, 2, 3, 6, 12]\r\n\t},\r\n\tday: {\r\n\t\tcommon: true,\r\n\t\tsize: 86400000,\r\n\t\tsteps: [1, 2, 5]\r\n\t},\r\n\tweek: {\r\n\t\tcommon: false,\r\n\t\tsize: 604800000,\r\n\t\tsteps: [1, 2, 3, 4]\r\n\t},\r\n\tmonth: {\r\n\t\tcommon: true,\r\n\t\tsize: 2.628e9,\r\n\t\tsteps: [1, 2, 3]\r\n\t},\r\n\tquarter: {\r\n\t\tcommon: false,\r\n\t\tsize: 7.884e9,\r\n\t\tsteps: [1, 2, 3, 4]\r\n\t},\r\n\tyear: {\r\n\t\tcommon: true,\r\n\t\tsize: 3.154e10\r\n\t}\r\n};\r\n\r\nvar UNITS = Object.keys(INTERVALS);\r\n\r\nfunction sorter(a, b) {\r\n\treturn a - b;\r\n}\r\n\r\nfunction arrayUnique(items) {\r\n\tvar hash = {};\r\n\tvar out = [];\r\n\tvar i, ilen, item;\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\titem = items[i];\r\n\t\tif (!hash[item]) {\r\n\t\t\thash[item] = true;\r\n\t\t\tout.push(item);\r\n\t\t}\r\n\t}\r\n\r\n\treturn out;\r\n}\r\n\r\n/**\r\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\r\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\r\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\r\n * extremity (left + width or top + height). Note that it would be more optimized to directly\r\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\r\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\r\n *\r\n * @param {Number[]} timestamps - timestamps sorted from lowest to highest.\r\n * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min\r\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\r\n * If 'series', timestamps will be positioned at the same distance from each other. In this\r\n * case, only timestamps that break the time linearity are registered, meaning that in the\r\n * best case, all timestamps are linear, the table contains only min and max.\r\n */\r\nfunction buildLookupTable(timestamps, min, max, distribution) {\r\n\tif (distribution === 'linear' || !timestamps.length) {\r\n\t\treturn [\r\n\t\t\t{time: min, pos: 0},\r\n\t\t\t{time: max, pos: 1}\r\n\t\t];\r\n\t}\r\n\r\n\tvar table = [];\r\n\tvar items = [min];\r\n\tvar i, ilen, prev, curr, next;\r\n\r\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\tcurr = timestamps[i];\r\n\t\tif (curr > min && curr < max) {\r\n\t\t\titems.push(curr);\r\n\t\t}\r\n\t}\r\n\r\n\titems.push(max);\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\tnext = items[i + 1];\r\n\t\tprev = items[i - 1];\r\n\t\tcurr = items[i];\r\n\r\n\t\t// only add points that breaks the scale linearity\r\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\r\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\r\n\t\t}\r\n\t}\r\n\r\n\treturn table;\r\n}\r\n\r\n// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\r\nfunction lookup(table, key, value) {\r\n\tvar lo = 0;\r\n\tvar hi = table.length - 1;\r\n\tvar mid, i0, i1;\r\n\r\n\twhile (lo >= 0 && lo <= hi) {\r\n\t\tmid = (lo + hi) >> 1;\r\n\t\ti0 = table[mid - 1] || null;\r\n\t\ti1 = table[mid];\r\n\r\n\t\tif (!i0) {\r\n\t\t\t// given value is outside table (before first item)\r\n\t\t\treturn {lo: null, hi: i1};\r\n\t\t} else if (i1[key] < value) {\r\n\t\t\tlo = mid + 1;\r\n\t\t} else if (i0[key] > value) {\r\n\t\t\thi = mid - 1;\r\n\t\t} else {\r\n\t\t\treturn {lo: i0, hi: i1};\r\n\t\t}\r\n\t}\r\n\r\n\t// given value is outside table (after last item)\r\n\treturn {lo: i1, hi: null};\r\n}\r\n\r\n/**\r\n * Linearly interpolates the given source `value` using the table items `skey` values and\r\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\r\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\r\n * index [0, 1] or [n - 1, n] are used for the interpolation.\r\n */\r\nfunction interpolate(table, skey, sval, tkey) {\r\n\tvar range = lookup(table, skey, sval);\r\n\r\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\r\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\r\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\r\n\r\n\tvar span = next[skey] - prev[skey];\r\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\r\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\r\n\r\n\treturn prev[tkey] + offset;\r\n}\r\n\r\n/**\r\n * Convert the given value to a moment object using the given time options.\r\n * @see http://momentjs.com/docs/#/parsing/\r\n */\r\nfunction momentify(value, options) {\r\n\tvar parser = options.parser;\r\n\tvar format = options.parser || options.format;\r\n\r\n\tif (typeof parser === 'function') {\r\n\t\treturn parser(value);\r\n\t}\r\n\r\n\tif (typeof value === 'string' && typeof format === 'string') {\r\n\t\treturn moment(value, format);\r\n\t}\r\n\r\n\tif (!(value instanceof moment)) {\r\n\t\tvalue = moment(value);\r\n\t}\r\n\r\n\tif (value.isValid()) {\r\n\t\treturn value;\r\n\t}\r\n\r\n\t// Labels are in an incompatible moment format and no `parser` has been provided.\r\n\t// The user might still use the deprecated `format` option to convert his inputs.\r\n\tif (typeof format === 'function') {\r\n\t\treturn format(value);\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\nfunction parse(input, scale) {\r\n\tif (helpers.isNullOrUndef(input)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar options = scale.options.time;\r\n\tvar value = momentify(scale.getRightValue(input), options);\r\n\tif (!value.isValid()) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (options.round) {\r\n\t\tvalue.startOf(options.round);\r\n\t}\r\n\r\n\treturn value.valueOf();\r\n}\r\n\r\n/**\r\n * Returns the number of unit to skip to be able to display up to `capacity` number of ticks\r\n * in `unit` for the given `min` / `max` range and respecting the interval steps constraints.\r\n */\r\nfunction determineStepSize(min, max, unit, capacity) {\r\n\tvar range = max - min;\r\n\tvar interval = INTERVALS[unit];\r\n\tvar milliseconds = interval.size;\r\n\tvar steps = interval.steps;\r\n\tvar i, ilen, factor;\r\n\r\n\tif (!steps) {\r\n\t\treturn Math.ceil(range / (capacity * milliseconds));\r\n\t}\r\n\r\n\tfor (i = 0, ilen = steps.length; i < ilen; ++i) {\r\n\t\tfactor = steps[i];\r\n\t\tif (Math.ceil(range / (milliseconds * factor)) <= capacity) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\treturn factor;\r\n}\r\n\r\n/**\r\n * Figures out what unit results in an appropriate number of auto-generated ticks\r\n */\r\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\r\n\tvar ilen = UNITS.length;\r\n\tvar i, interval, factor;\r\n\r\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\r\n\t\tinterval = INTERVALS[UNITS[i]];\r\n\t\tfactor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER;\r\n\r\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[ilen - 1];\r\n}\r\n\r\n/**\r\n * Figures out what unit to format a set of ticks with\r\n */\r\nfunction determineUnitForFormatting(ticks, minUnit, min, max) {\r\n\tvar duration = moment.duration(moment(max).diff(moment(min)));\r\n\tvar ilen = UNITS.length;\r\n\tvar i, unit;\r\n\r\n\tfor (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) {\r\n\t\tunit = UNITS[i];\r\n\t\tif (INTERVALS[unit].common && duration.as(unit) >= ticks.length) {\r\n\t\t\treturn unit;\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\r\n}\r\n\r\nfunction determineMajorUnit(unit) {\r\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\r\n\t\tif (INTERVALS[UNITS[i]].common) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\r\n * `minor` unit, aligned on the `major` unit and using the given scale time `options`.\r\n * Important: this method can return ticks outside the min and max range, it's the\r\n * responsibility of the calling code to clamp values if needed.\r\n */\r\nfunction generate(min, max, capacity, options) {\r\n\tvar timeOpts = options.time;\r\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\r\n\tvar major = determineMajorUnit(minor);\r\n\tvar stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);\r\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\r\n\tvar majorTicksEnabled = options.ticks.major.enabled;\r\n\tvar interval = INTERVALS[minor];\r\n\tvar first = moment(min);\r\n\tvar last = moment(max);\r\n\tvar ticks = [];\r\n\tvar time;\r\n\r\n\tif (!stepSize) {\r\n\t\tstepSize = determineStepSize(min, max, minor, capacity);\r\n\t}\r\n\r\n\t// For 'week' unit, handle the first day of week option\r\n\tif (weekday) {\r\n\t\tfirst = first.isoWeekday(weekday);\r\n\t\tlast = last.isoWeekday(weekday);\r\n\t}\r\n\r\n\t// Align first/last ticks on unit\r\n\tfirst = first.startOf(weekday ? 'day' : minor);\r\n\tlast = last.startOf(weekday ? 'day' : minor);\r\n\r\n\t// Make sure that the last tick include max\r\n\tif (last < max) {\r\n\t\tlast.add(1, minor);\r\n\t}\r\n\r\n\ttime = moment(first);\r\n\r\n\tif (majorTicksEnabled && major && !weekday && !timeOpts.round) {\r\n\t\t// Align the first tick on the previous `minor` unit aligned on the `major` unit:\r\n\t\t// we first aligned time on the previous `major` unit then add the number of full\r\n\t\t// stepSize there is between first and the previous major time.\r\n\t\ttime.startOf(major);\r\n\t\ttime.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor);\r\n\t}\r\n\r\n\tfor (; time < last; time.add(stepSize, minor)) {\r\n\t\tticks.push(+time);\r\n\t}\r\n\r\n\tticks.push(+time);\r\n\r\n\treturn ticks;\r\n}\r\n\r\n/**\r\n * Returns the right and left offsets from edges in the form of {left, right}.\r\n * Offsets are added when the `offset` option is true.\r\n */\r\nfunction computeOffsets(table, ticks, min, max, options) {\r\n\tvar left = 0;\r\n\tvar right = 0;\r\n\tvar upper, lower;\r\n\r\n\tif (options.offset && ticks.length) {\r\n\t\tif (!options.time.min) {\r\n\t\t\tupper = ticks.length > 1 ? ticks[1] : max;\r\n\t\t\tlower = ticks[0];\r\n\t\t\tleft = (\r\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\r\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\r\n\t\t\t) / 2;\r\n\t\t}\r\n\t\tif (!options.time.max) {\r\n\t\t\tupper = ticks[ticks.length - 1];\r\n\t\t\tlower = ticks.length > 1 ? ticks[ticks.length - 2] : min;\r\n\t\t\tright = (\r\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\r\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\r\n\t\t\t) / 2;\r\n\t\t}\r\n\t}\r\n\r\n\treturn {left: left, right: right};\r\n}\r\n\r\nfunction ticksFromTimestamps(values, majorUnit) {\r\n\tvar ticks = [];\r\n\tvar i, ilen, value, major;\r\n\r\n\tfor (i = 0, ilen = values.length; i < ilen; ++i) {\r\n\t\tvalue = values[i];\r\n\t\tmajor = majorUnit ? value === +moment(value).startOf(majorUnit) : false;\r\n\r\n\t\tticks.push({\r\n\t\t\tvalue: value,\r\n\t\t\tmajor: major\r\n\t\t});\r\n\t}\r\n\r\n\treturn ticks;\r\n}\r\n\r\nfunction determineLabelFormat(data, timeOpts) {\r\n\tvar i, momentDate, hasTime;\r\n\tvar ilen = data.length;\r\n\r\n\t// find the label with the most parts (milliseconds, minutes, etc.)\r\n\t// format all labels with the same level of detail as the most specific label\r\n\tfor (i = 0; i < ilen; i++) {\r\n\t\tmomentDate = momentify(data[i], timeOpts);\r\n\t\tif (momentDate.millisecond() !== 0) {\r\n\t\t\treturn 'MMM D, YYYY h:mm:ss.SSS a';\r\n\t\t}\r\n\t\tif (momentDate.second() !== 0 || momentDate.minute() !== 0 || momentDate.hour() !== 0) {\r\n\t\t\thasTime = true;\r\n\t\t}\r\n\t}\r\n\tif (hasTime) {\r\n\t\treturn 'MMM D, YYYY h:mm:ss a';\r\n\t}\r\n\treturn 'MMM D, YYYY';\r\n}\r\n\r\nmodule.exports = function() {\r\n\r\n\tvar defaultConfig = {\r\n\t\tposition: 'bottom',\r\n\r\n\t\t/**\r\n\t\t * Data distribution along the scale:\r\n\t\t * - 'linear': data are spread according to their time (distances can vary),\r\n\t\t * - 'series': data are spread at the same distance from each other.\r\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t\t * @since 2.7.0\r\n\t\t */\r\n\t\tdistribution: 'linear',\r\n\r\n\t\t/**\r\n\t\t * Scale boundary strategy (bypassed by min/max time options)\r\n\t\t * - `data`: make sure data are fully visible, ticks outside are removed\r\n\t\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\r\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4556\r\n\t\t * @since 2.7.0\r\n\t\t */\r\n\t\tbounds: 'data',\r\n\r\n\t\ttime: {\r\n\t\t\tparser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\r\n\t\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/\r\n\t\t\tunit: false, // false == automatic or override with week, month, year, etc.\r\n\t\t\tround: false, // none, or override with week, month, year, etc.\r\n\t\t\tdisplayFormat: false, // DEPRECATED\r\n\t\t\tisoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/\r\n\t\t\tminUnit: 'millisecond',\r\n\r\n\t\t\t// defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/\r\n\t\t\tdisplayFormats: {\r\n\t\t\t\tmillisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM,\r\n\t\t\t\tsecond: 'h:mm:ss a', // 11:20:01 AM\r\n\t\t\t\tminute: 'h:mm a', // 11:20 AM\r\n\t\t\t\thour: 'hA', // 5PM\r\n\t\t\t\tday: 'MMM D', // Sep 4\r\n\t\t\t\tweek: 'll', // Week 46, or maybe \"[W]WW - YYYY\" ?\r\n\t\t\t\tmonth: 'MMM YYYY', // Sept 2015\r\n\t\t\t\tquarter: '[Q]Q - YYYY', // Q3\r\n\t\t\t\tyear: 'YYYY' // 2015\r\n\t\t\t},\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tautoSkip: false,\r\n\r\n\t\t\t/**\r\n\t\t\t * Ticks generation input values:\r\n\t\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\r\n\t\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\r\n\t\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\r\n\t\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t\t\t * @since 2.7.0\r\n\t\t\t */\r\n\t\t\tsource: 'auto',\r\n\r\n\t\t\tmajor: {\r\n\t\t\t\tenabled: false\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tvar TimeScale = Scale.extend({\r\n\t\tinitialize: function() {\r\n\t\t\tif (!moment) {\r\n\t\t\t\tthrow new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com');\r\n\t\t\t}\r\n\r\n\t\t\tthis.mergeTicksOptions();\r\n\r\n\t\t\tScale.prototype.initialize.call(this);\r\n\t\t},\r\n\r\n\t\tupdate: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\r\n\t\t\t// DEPRECATIONS: output a message only one time per update\r\n\t\t\tif (options.time && options.time.format) {\r\n\t\t\t\tconsole.warn('options.time.format is deprecated and replaced by options.time.parser.');\r\n\t\t\t}\r\n\r\n\t\t\treturn Scale.prototype.update.apply(me, arguments);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Allows data to be referenced via 't' attribute\r\n\t\t */\r\n\t\tgetRightValue: function(rawValue) {\r\n\t\t\tif (rawValue && rawValue.t !== undefined) {\r\n\t\t\t\trawValue = rawValue.t;\r\n\t\t\t}\r\n\t\t\treturn Scale.prototype.getRightValue.call(this, rawValue);\r\n\t\t},\r\n\r\n\t\tdetermineDataLimits: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar chart = me.chart;\r\n\t\t\tvar timeOpts = me.options.time;\r\n\t\t\tvar unit = timeOpts.unit || 'day';\r\n\t\t\tvar min = MAX_INTEGER;\r\n\t\t\tvar max = MIN_INTEGER;\r\n\t\t\tvar timestamps = [];\r\n\t\t\tvar datasets = [];\r\n\t\t\tvar labels = [];\r\n\t\t\tvar i, j, ilen, jlen, data, timestamp;\r\n\r\n\t\t\t// Convert labels to timestamps\r\n\t\t\tfor (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {\r\n\t\t\t\tlabels.push(parse(chart.data.labels[i], me));\r\n\t\t\t}\r\n\r\n\t\t\t// Convert data to timestamps\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\t\tdata = chart.data.datasets[i].data;\r\n\r\n\t\t\t\t\t// Let's consider that all data have the same format.\r\n\t\t\t\t\tif (helpers.isObject(data[0])) {\r\n\t\t\t\t\t\tdatasets[i] = [];\r\n\r\n\t\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\r\n\t\t\t\t\t\t\ttimestamp = parse(data[j], me);\r\n\t\t\t\t\t\t\ttimestamps.push(timestamp);\r\n\t\t\t\t\t\t\tdatasets[i][j] = timestamp;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttimestamps.push.apply(timestamps, labels);\r\n\t\t\t\t\t\tdatasets[i] = labels.slice(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdatasets[i] = [];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (labels.length) {\r\n\t\t\t\t// Sort labels **after** data have been converted\r\n\t\t\t\tlabels = arrayUnique(labels).sort(sorter);\r\n\t\t\t\tmin = Math.min(min, labels[0]);\r\n\t\t\t\tmax = Math.max(max, labels[labels.length - 1]);\r\n\t\t\t}\r\n\r\n\t\t\tif (timestamps.length) {\r\n\t\t\t\ttimestamps = arrayUnique(timestamps).sort(sorter);\r\n\t\t\t\tmin = Math.min(min, timestamps[0]);\r\n\t\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\r\n\t\t\t}\r\n\r\n\t\t\tmin = parse(timeOpts.min, me) || min;\r\n\t\t\tmax = parse(timeOpts.max, me) || max;\r\n\r\n\t\t\t// In case there is no valid min/max, set limits based on unit time option\r\n\t\t\tmin = min === MAX_INTEGER ? +moment().startOf(unit) : min;\r\n\t\t\tmax = max === MIN_INTEGER ? +moment().endOf(unit) + 1 : max;\r\n\r\n\t\t\t// Make sure that max is strictly higher than min (required by the lookup table)\r\n\t\t\tme.min = Math.min(min, max);\r\n\t\t\tme.max = Math.max(min + 1, max);\r\n\r\n\t\t\t// PRIVATE\r\n\t\t\tme._horizontal = me.isHorizontal();\r\n\t\t\tme._table = [];\r\n\t\t\tme._timestamps = {\r\n\t\t\t\tdata: timestamps,\r\n\t\t\t\tdatasets: datasets,\r\n\t\t\t\tlabels: labels\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tbuildTicks: function() {\r\n\t\t\tvar me = this;\r\n\t\t\tvar min = me.min;\r\n\t\t\tvar max = me.max;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar timeOpts = options.time;\r\n\t\t\tvar timestamps = [];\r\n\t\t\tvar ticks = [];\r\n\t\t\tvar i, ilen, timestamp;\r\n\r\n\t\t\tswitch (options.ticks.source) {\r\n\t\t\tcase 'data':\r\n\t\t\t\ttimestamps = me._timestamps.data;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'labels':\r\n\t\t\t\ttimestamps = me._timestamps.labels;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'auto':\r\n\t\t\tdefault:\r\n\t\t\t\ttimestamps = generate(min, max, me.getLabelCapacity(min), options);\r\n\t\t\t}\r\n\r\n\t\t\tif (options.bounds === 'ticks' && timestamps.length) {\r\n\t\t\t\tmin = timestamps[0];\r\n\t\t\t\tmax = timestamps[timestamps.length - 1];\r\n\t\t\t}\r\n\r\n\t\t\t// Enforce limits with user min/max options\r\n\t\t\tmin = parse(timeOpts.min, me) || min;\r\n\t\t\tmax = parse(timeOpts.max, me) || max;\r\n\r\n\t\t\t// Remove ticks outside the min/max range\r\n\t\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\t\t\ttimestamp = timestamps[i];\r\n\t\t\t\tif (timestamp >= min && timestamp <= max) {\r\n\t\t\t\t\tticks.push(timestamp);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tme.min = min;\r\n\t\t\tme.max = max;\r\n\r\n\t\t\t// PRIVATE\r\n\t\t\tme._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max);\r\n\t\t\tme._majorUnit = determineMajorUnit(me._unit);\r\n\t\t\tme._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);\r\n\t\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\r\n\t\t\tme._labelFormat = determineLabelFormat(me._timestamps.data, timeOpts);\r\n\r\n\t\t\treturn ticksFromTimestamps(ticks, me._majorUnit);\r\n\t\t},\r\n\r\n\t\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar data = me.chart.data;\r\n\t\t\tvar timeOpts = me.options.time;\r\n\t\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\r\n\t\t\tvar value = data.datasets[datasetIndex].data[index];\r\n\r\n\t\t\tif (helpers.isObject(value)) {\r\n\t\t\t\tlabel = me.getRightValue(value);\r\n\t\t\t}\r\n\t\t\tif (timeOpts.tooltipFormat) {\r\n\t\t\t\treturn momentify(label, timeOpts).format(timeOpts.tooltipFormat);\r\n\t\t\t}\r\n\t\t\tif (typeof label === 'string') {\r\n\t\t\t\treturn label;\r\n\t\t\t}\r\n\r\n\t\t\treturn momentify(label, timeOpts).format(me._labelFormat);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Function to format an individual tick mark\r\n\t\t * @private\r\n\t\t */\r\n\t\ttickFormatFunction: function(tick, index, ticks, formatOverride) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar options = me.options;\r\n\t\t\tvar time = tick.valueOf();\r\n\t\t\tvar formats = options.time.displayFormats;\r\n\t\t\tvar minorFormat = formats[me._unit];\r\n\t\t\tvar majorUnit = me._majorUnit;\r\n\t\t\tvar majorFormat = formats[majorUnit];\r\n\t\t\tvar majorTime = tick.clone().startOf(majorUnit).valueOf();\r\n\t\t\tvar majorTickOpts = options.ticks.major;\r\n\t\t\tvar major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;\r\n\t\t\tvar label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat);\r\n\t\t\tvar tickOpts = major ? majorTickOpts : options.ticks.minor;\r\n\t\t\tvar formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback);\r\n\r\n\t\t\treturn formatter ? formatter(label, index, ticks) : label;\r\n\t\t},\r\n\r\n\t\tconvertTicksToLabels: function(ticks) {\r\n\t\t\tvar labels = [];\r\n\t\t\tvar i, ilen;\r\n\r\n\t\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\t\tlabels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks));\r\n\t\t\t}\r\n\r\n\t\t\treturn labels;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetPixelForOffset: function(time) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar size = me._horizontal ? me.width : me.height;\r\n\t\t\tvar start = me._horizontal ? me.left : me.top;\r\n\t\t\tvar pos = interpolate(me._table, 'time', time, 'pos');\r\n\r\n\t\t\treturn start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right);\r\n\t\t},\r\n\r\n\t\tgetPixelForValue: function(value, index, datasetIndex) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar time = null;\r\n\r\n\t\t\tif (index !== undefined && datasetIndex !== undefined) {\r\n\t\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\r\n\t\t\t}\r\n\r\n\t\t\tif (time === null) {\r\n\t\t\t\ttime = parse(value, me);\r\n\t\t\t}\r\n\r\n\t\t\tif (time !== null) {\r\n\t\t\t\treturn me.getPixelForOffset(time);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetPixelForTick: function(index) {\r\n\t\t\tvar ticks = this.getTicks();\r\n\t\t\treturn index >= 0 && index < ticks.length ?\r\n\t\t\t\tthis.getPixelForOffset(ticks[index].value) :\r\n\t\t\t\tnull;\r\n\t\t},\r\n\r\n\t\tgetValueForPixel: function(pixel) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar size = me._horizontal ? me.width : me.height;\r\n\t\t\tvar start = me._horizontal ? me.left : me.top;\r\n\t\t\tvar pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right;\r\n\t\t\tvar time = interpolate(me._table, 'pos', pos, 'time');\r\n\r\n\t\t\treturn moment(time);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Crude approximation of what the label width might be\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetLabelWidth: function(label) {\r\n\t\t\tvar me = this;\r\n\t\t\tvar ticksOpts = me.options.ticks;\r\n\t\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\r\n\t\t\tvar angle = helpers.toRadians(ticksOpts.maxRotation);\r\n\t\t\tvar cosRotation = Math.cos(angle);\r\n\t\t\tvar sinRotation = Math.sin(angle);\r\n\t\t\tvar tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);\r\n\r\n\t\t\treturn (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @private\r\n\t\t */\r\n\t\tgetLabelCapacity: function(exampleTime) {\r\n\t\t\tvar me = this;\r\n\r\n\t\t\tvar formatOverride = me.options.time.displayFormats.millisecond;\t// Pick the longest format for guestimation\r\n\r\n\t\t\tvar exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride);\r\n\t\t\tvar tickLabelWidth = me.getLabelWidth(exampleLabel);\r\n\t\t\tvar innerWidth = me.isHorizontal() ? me.width : me.height;\r\n\r\n\t\t\tvar capacity = Math.floor(innerWidth / tickLabelWidth);\r\n\t\t\treturn capacity > 0 ? capacity : 1;\r\n\t\t}\r\n\t});\r\n\r\n\tscaleService.registerScaleType('time', TimeScale, defaultConfig);\r\n};\r\n\r\n},{\"1\":1,\"26\":26,\"33\":33,\"34\":34,\"46\":46}]},{},[7])(7)\r\n});\r\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LOG10E = Math.LOG10E;\n\n// `Math.log10` method\n// https://tc39.github.io/ecma262/#sec-math.log10\n$({ target: 'Math', stat: true }, {\n log10: function log10(x) {\n return log(x) * LOG10E;\n }\n});\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.github.io/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n sign: sign\n});\n","// `Math.sign` method implementation\n// https://tc39.github.io/ecma262/#sec-math.sign\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.github.io/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true }, {\n EPSILON: Math.pow(2, -52)\n});\n","/*!\r\n * chartjs-plugin-datalabels v0.7.0\r\n * https://chartjs-plugin-datalabels.netlify.com\r\n * (c) 2019 Chart.js Contributors\r\n * Released under the MIT license\r\n */\r\n(function (global, factory) {\r\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('chart.js')) :\r\ntypeof define === 'function' && define.amd ? define(['chart.js'], factory) :\r\n(global = global || self, global.ChartDataLabels = factory(global.Chart));\r\n}(this, function (Chart) { 'use strict';\r\n\r\nChart = Chart && Chart.hasOwnProperty('default') ? Chart['default'] : Chart;\r\n\r\nvar helpers = Chart.helpers;\r\n\r\nvar devicePixelRatio = (function() {\r\n\tif (typeof window !== 'undefined') {\r\n\t\tif (window.devicePixelRatio) {\r\n\t\t\treturn window.devicePixelRatio;\r\n\t\t}\r\n\r\n\t\t// devicePixelRatio is undefined on IE10\r\n\t\t// https://stackoverflow.com/a/20204180/8837887\r\n\t\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\r\n\t\tvar screen = window.screen;\r\n\t\tif (screen) {\r\n\t\t\treturn (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\r\n\t\t}\r\n\t}\r\n\r\n\treturn 1;\r\n}());\r\n\r\nvar utils = {\r\n\t// @todo move this in Chart.helpers.toTextLines\r\n\ttoTextLines: function(inputs) {\r\n\t\tvar lines = [];\r\n\t\tvar input;\r\n\r\n\t\tinputs = [].concat(inputs);\r\n\t\twhile (inputs.length) {\r\n\t\t\tinput = inputs.pop();\r\n\t\t\tif (typeof input === 'string') {\r\n\t\t\t\tlines.unshift.apply(lines, input.split('\\n'));\r\n\t\t\t} else if (Array.isArray(input)) {\r\n\t\t\t\tinputs.push.apply(inputs, input);\r\n\t\t\t} else if (!helpers.isNullOrUndef(inputs)) {\r\n\t\t\t\tlines.unshift('' + input);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\t// @todo move this method in Chart.helpers.canvas.toFont (deprecates helpers.fontString)\r\n\t// @see https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n\ttoFontString: function(font) {\r\n\t\tif (!font || helpers.isNullOrUndef(font.size) || helpers.isNullOrUndef(font.family)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn (font.style ? font.style + ' ' : '')\r\n\t\t\t+ (font.weight ? font.weight + ' ' : '')\r\n\t\t\t+ font.size + 'px '\r\n\t\t\t+ font.family;\r\n\t},\r\n\r\n\t// @todo move this in Chart.helpers.canvas.textSize\r\n\t// @todo cache calls of measureText if font doesn't change?!\r\n\ttextSize: function(ctx, lines, font) {\r\n\t\tvar items = [].concat(lines);\r\n\t\tvar ilen = items.length;\r\n\t\tvar prev = ctx.font;\r\n\t\tvar width = 0;\r\n\t\tvar i;\r\n\r\n\t\tctx.font = font.string;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\twidth = Math.max(ctx.measureText(items[i]).width, width);\r\n\t\t}\r\n\r\n\t\tctx.font = prev;\r\n\r\n\t\treturn {\r\n\t\t\theight: ilen * font.lineHeight,\r\n\t\t\twidth: width\r\n\t\t};\r\n\t},\r\n\r\n\t// @todo move this method in Chart.helpers.options.toFont\r\n\tparseFont: function(value) {\r\n\t\tvar global = Chart.defaults.global;\r\n\t\tvar size = helpers.valueOrDefault(value.size, global.defaultFontSize);\r\n\t\tvar font = {\r\n\t\t\tfamily: helpers.valueOrDefault(value.family, global.defaultFontFamily),\r\n\t\t\tlineHeight: helpers.options.toLineHeight(value.lineHeight, size),\r\n\t\t\tsize: size,\r\n\t\t\tstyle: helpers.valueOrDefault(value.style, global.defaultFontStyle),\r\n\t\t\tweight: helpers.valueOrDefault(value.weight, null),\r\n\t\t\tstring: ''\r\n\t\t};\r\n\r\n\t\tfont.string = utils.toFontString(font);\r\n\t\treturn font;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\r\n\t * @todo move this method in Chart.helpers.bound\r\n\t * https://doc.qt.io/qt-5/qtglobal.html#qBound\r\n\t */\r\n\tbound: function(min, value, max) {\r\n\t\treturn Math.max(min, Math.min(value, max));\r\n\t},\r\n\r\n\t/**\r\n\t * Returns an array of pair [value, state] where state is:\r\n\t * * -1: value is only in a0 (removed)\r\n\t * * 1: value is only in a1 (added)\r\n\t */\r\n\tarrayDiff: function(a0, a1) {\r\n\t\tvar prev = a0.slice();\r\n\t\tvar updates = [];\r\n\t\tvar i, j, ilen, v;\r\n\r\n\t\tfor (i = 0, ilen = a1.length; i < ilen; ++i) {\r\n\t\t\tv = a1[i];\r\n\t\t\tj = prev.indexOf(v);\r\n\r\n\t\t\tif (j === -1) {\r\n\t\t\t\tupdates.push([v, 1]);\r\n\t\t\t} else {\r\n\t\t\t\tprev.splice(j, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = prev.length; i < ilen; ++i) {\r\n\t\t\tupdates.push([prev[i], -1]);\r\n\t\t}\r\n\r\n\t\treturn updates;\r\n\t},\r\n\r\n\t/**\r\n\t * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\r\n\t */\r\n\trasterize: function(v) {\r\n\t\treturn Math.round(v * devicePixelRatio) / devicePixelRatio;\r\n\t}\r\n};\r\n\r\nfunction orient(point, origin) {\r\n\tvar x0 = origin.x;\r\n\tvar y0 = origin.y;\r\n\r\n\tif (x0 === null) {\r\n\t\treturn {x: 0, y: -1};\r\n\t}\r\n\tif (y0 === null) {\r\n\t\treturn {x: 1, y: 0};\r\n\t}\r\n\r\n\tvar dx = point.x - x0;\r\n\tvar dy = point.y - y0;\r\n\tvar ln = Math.sqrt(dx * dx + dy * dy);\r\n\r\n\treturn {\r\n\t\tx: ln ? dx / ln : 0,\r\n\t\ty: ln ? dy / ln : -1\r\n\t};\r\n}\r\n\r\nfunction aligned(x, y, vx, vy, align) {\r\n\tswitch (align) {\r\n\tcase 'center':\r\n\t\tvx = vy = 0;\r\n\t\tbreak;\r\n\tcase 'bottom':\r\n\t\tvx = 0;\r\n\t\tvy = 1;\r\n\t\tbreak;\r\n\tcase 'right':\r\n\t\tvx = 1;\r\n\t\tvy = 0;\r\n\t\tbreak;\r\n\tcase 'left':\r\n\t\tvx = -1;\r\n\t\tvy = 0;\r\n\t\tbreak;\r\n\tcase 'top':\r\n\t\tvx = 0;\r\n\t\tvy = -1;\r\n\t\tbreak;\r\n\tcase 'start':\r\n\t\tvx = -vx;\r\n\t\tvy = -vy;\r\n\t\tbreak;\r\n\tcase 'end':\r\n\t\t// keep natural orientation\r\n\t\tbreak;\r\n\tdefault:\r\n\t\t// clockwise rotation (in degree)\r\n\t\talign *= (Math.PI / 180);\r\n\t\tvx = Math.cos(align);\r\n\t\tvy = Math.sin(align);\r\n\t\tbreak;\r\n\t}\r\n\r\n\treturn {\r\n\t\tx: x,\r\n\t\ty: y,\r\n\t\tvx: vx,\r\n\t\tvy: vy\r\n\t};\r\n}\r\n\r\n// Line clipping (Cohen–Sutherland algorithm)\r\n// https://en.wikipedia.org/wiki/Cohen–Sutherland_algorithm\r\n\r\nvar R_INSIDE = 0;\r\nvar R_LEFT = 1;\r\nvar R_RIGHT = 2;\r\nvar R_BOTTOM = 4;\r\nvar R_TOP = 8;\r\n\r\nfunction region(x, y, rect) {\r\n\tvar res = R_INSIDE;\r\n\r\n\tif (x < rect.left) {\r\n\t\tres |= R_LEFT;\r\n\t} else if (x > rect.right) {\r\n\t\tres |= R_RIGHT;\r\n\t}\r\n\tif (y < rect.top) {\r\n\t\tres |= R_TOP;\r\n\t} else if (y > rect.bottom) {\r\n\t\tres |= R_BOTTOM;\r\n\t}\r\n\r\n\treturn res;\r\n}\r\n\r\nfunction clipped(segment, area) {\r\n\tvar x0 = segment.x0;\r\n\tvar y0 = segment.y0;\r\n\tvar x1 = segment.x1;\r\n\tvar y1 = segment.y1;\r\n\tvar r0 = region(x0, y0, area);\r\n\tvar r1 = region(x1, y1, area);\r\n\tvar r, x, y;\r\n\r\n\t// eslint-disable-next-line no-constant-condition\r\n\twhile (true) {\r\n\t\tif (!(r0 | r1) || (r0 & r1)) {\r\n\t\t\t// both points inside or on the same side: no clipping\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\t// at least one point is outside\r\n\t\tr = r0 || r1;\r\n\r\n\t\tif (r & R_TOP) {\r\n\t\t\tx = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\r\n\t\t\ty = area.top;\r\n\t\t} else if (r & R_BOTTOM) {\r\n\t\t\tx = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\r\n\t\t\ty = area.bottom;\r\n\t\t} else if (r & R_RIGHT) {\r\n\t\t\ty = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\r\n\t\t\tx = area.right;\r\n\t\t} else if (r & R_LEFT) {\r\n\t\t\ty = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\r\n\t\t\tx = area.left;\r\n\t\t}\r\n\r\n\t\tif (r === r0) {\r\n\t\t\tx0 = x;\r\n\t\t\ty0 = y;\r\n\t\t\tr0 = region(x0, y0, area);\r\n\t\t} else {\r\n\t\t\tx1 = x;\r\n\t\t\ty1 = y;\r\n\t\t\tr1 = region(x1, y1, area);\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tx0: x0,\r\n\t\tx1: x1,\r\n\t\ty0: y0,\r\n\t\ty1: y1\r\n\t};\r\n}\r\n\r\nfunction compute(range, config) {\r\n\tvar anchor = config.anchor;\r\n\tvar segment = range;\r\n\tvar x, y;\r\n\r\n\tif (config.clamp) {\r\n\t\tsegment = clipped(segment, config.area);\r\n\t}\r\n\r\n\tif (anchor === 'start') {\r\n\t\tx = segment.x0;\r\n\t\ty = segment.y0;\r\n\t} else if (anchor === 'end') {\r\n\t\tx = segment.x1;\r\n\t\ty = segment.y1;\r\n\t} else {\r\n\t\tx = (segment.x0 + segment.x1) / 2;\r\n\t\ty = (segment.y0 + segment.y1) / 2;\r\n\t}\r\n\r\n\treturn aligned(x, y, range.vx, range.vy, config.align);\r\n}\r\n\r\nvar positioners = {\r\n\tarc: function(vm, config) {\r\n\t\tvar angle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar vx = Math.cos(angle);\r\n\t\tvar vy = Math.sin(angle);\r\n\t\tvar r0 = vm.innerRadius;\r\n\t\tvar r1 = vm.outerRadius;\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: vm.x + vx * r0,\r\n\t\t\ty0: vm.y + vy * r0,\r\n\t\t\tx1: vm.x + vx * r1,\r\n\t\t\ty1: vm.y + vy * r1,\r\n\t\t\tvx: vx,\r\n\t\t\tvy: vy\r\n\t\t}, config);\r\n\t},\r\n\r\n\tpoint: function(vm, config) {\r\n\t\tvar v = orient(vm, config.origin);\r\n\t\tvar rx = v.x * vm.radius;\r\n\t\tvar ry = v.y * vm.radius;\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: vm.x - rx,\r\n\t\t\ty0: vm.y - ry,\r\n\t\t\tx1: vm.x + rx,\r\n\t\t\ty1: vm.y + ry,\r\n\t\t\tvx: v.x,\r\n\t\t\tvy: v.y\r\n\t\t}, config);\r\n\t},\r\n\r\n\trect: function(vm, config) {\r\n\t\tvar v = orient(vm, config.origin);\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar sx = 0;\r\n\t\tvar sy = 0;\r\n\r\n\t\tif (vm.horizontal) {\r\n\t\t\tx = Math.min(vm.x, vm.base);\r\n\t\t\tsx = Math.abs(vm.base - vm.x);\r\n\t\t} else {\r\n\t\t\ty = Math.min(vm.y, vm.base);\r\n\t\t\tsy = Math.abs(vm.base - vm.y);\r\n\t\t}\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: x,\r\n\t\t\ty0: y + sy,\r\n\t\t\tx1: x + sx,\r\n\t\t\ty1: y,\r\n\t\t\tvx: v.x,\r\n\t\t\tvy: v.y\r\n\t\t}, config);\r\n\t},\r\n\r\n\tfallback: function(vm, config) {\r\n\t\tvar v = orient(vm, config.origin);\r\n\r\n\t\treturn compute({\r\n\t\t\tx0: vm.x,\r\n\t\t\ty0: vm.y,\r\n\t\t\tx1: vm.x,\r\n\t\t\ty1: vm.y,\r\n\t\t\tvx: v.x,\r\n\t\t\tvy: v.y\r\n\t\t}, config);\r\n\t}\r\n};\r\n\r\nvar helpers$1 = Chart.helpers;\r\nvar rasterize = utils.rasterize;\r\n\r\nfunction boundingRects(model) {\r\n\tvar borderWidth = model.borderWidth || 0;\r\n\tvar padding = model.padding;\r\n\tvar th = model.size.height;\r\n\tvar tw = model.size.width;\r\n\tvar tx = -tw / 2;\r\n\tvar ty = -th / 2;\r\n\r\n\treturn {\r\n\t\tframe: {\r\n\t\t\tx: tx - padding.left - borderWidth,\r\n\t\t\ty: ty - padding.top - borderWidth,\r\n\t\t\tw: tw + padding.width + borderWidth * 2,\r\n\t\t\th: th + padding.height + borderWidth * 2\r\n\t\t},\r\n\t\ttext: {\r\n\t\t\tx: tx,\r\n\t\t\ty: ty,\r\n\t\t\tw: tw,\r\n\t\t\th: th\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction getScaleOrigin(el) {\r\n\tvar horizontal = el._model.horizontal;\r\n\tvar scale = el._scale || (horizontal && el._xScale) || el._yScale;\r\n\r\n\tif (!scale) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (scale.xCenter !== undefined && scale.yCenter !== undefined) {\r\n\t\treturn {x: scale.xCenter, y: scale.yCenter};\r\n\t}\r\n\r\n\tvar pixel = scale.getBasePixel();\r\n\treturn horizontal ?\r\n\t\t{x: pixel, y: null} :\r\n\t\t{x: null, y: pixel};\r\n}\r\n\r\nfunction getPositioner(el) {\r\n\tif (el instanceof Chart.elements.Arc) {\r\n\t\treturn positioners.arc;\r\n\t}\r\n\tif (el instanceof Chart.elements.Point) {\r\n\t\treturn positioners.point;\r\n\t}\r\n\tif (el instanceof Chart.elements.Rectangle) {\r\n\t\treturn positioners.rect;\r\n\t}\r\n\treturn positioners.fallback;\r\n}\r\n\r\nfunction drawFrame(ctx, rect, model) {\r\n\tvar bgColor = model.backgroundColor;\r\n\tvar borderColor = model.borderColor;\r\n\tvar borderWidth = model.borderWidth;\r\n\r\n\tif (!bgColor && (!borderColor || !borderWidth)) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\r\n\thelpers$1.canvas.roundedRect(\r\n\t\tctx,\r\n\t\trasterize(rect.x) + borderWidth / 2,\r\n\t\trasterize(rect.y) + borderWidth / 2,\r\n\t\trasterize(rect.w) - borderWidth,\r\n\t\trasterize(rect.h) - borderWidth,\r\n\t\tmodel.borderRadius);\r\n\r\n\tctx.closePath();\r\n\r\n\tif (bgColor) {\r\n\t\tctx.fillStyle = bgColor;\r\n\t\tctx.fill();\r\n\t}\r\n\r\n\tif (borderColor && borderWidth) {\r\n\t\tctx.strokeStyle = borderColor;\r\n\t\tctx.lineWidth = borderWidth;\r\n\t\tctx.lineJoin = 'miter';\r\n\t\tctx.stroke();\r\n\t}\r\n}\r\n\r\nfunction textGeometry(rect, align, font) {\r\n\tvar h = font.lineHeight;\r\n\tvar w = rect.w;\r\n\tvar x = rect.x;\r\n\tvar y = rect.y + h / 2;\r\n\r\n\tif (align === 'center') {\r\n\t\tx += w / 2;\r\n\t} else if (align === 'end' || align === 'right') {\r\n\t\tx += w;\r\n\t}\r\n\r\n\treturn {\r\n\t\th: h,\r\n\t\tw: w,\r\n\t\tx: x,\r\n\t\ty: y\r\n\t};\r\n}\r\n\r\nfunction drawTextLine(ctx, text, cfg) {\r\n\tvar shadow = ctx.shadowBlur;\r\n\tvar stroked = cfg.stroked;\r\n\tvar x = rasterize(cfg.x);\r\n\tvar y = rasterize(cfg.y);\r\n\tvar w = rasterize(cfg.w);\r\n\r\n\tif (stroked) {\r\n\t\tctx.strokeText(text, x, y, w);\r\n\t}\r\n\r\n\tif (cfg.filled) {\r\n\t\tif (shadow && stroked) {\r\n\t\t\t// Prevent drawing shadow on both the text stroke and fill, so\r\n\t\t\t// if the text is stroked, remove the shadow for the text fill.\r\n\t\t\tctx.shadowBlur = 0;\r\n\t\t}\r\n\r\n\t\tctx.fillText(text, x, y, w);\r\n\r\n\t\tif (shadow && stroked) {\r\n\t\t\tctx.shadowBlur = shadow;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction drawText(ctx, lines, rect, model) {\r\n\tvar align = model.textAlign;\r\n\tvar color = model.color;\r\n\tvar filled = !!color;\r\n\tvar font = model.font;\r\n\tvar ilen = lines.length;\r\n\tvar strokeColor = model.textStrokeColor;\r\n\tvar strokeWidth = model.textStrokeWidth;\r\n\tvar stroked = strokeColor && strokeWidth;\r\n\tvar i;\r\n\r\n\tif (!ilen || (!filled && !stroked)) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Adjust coordinates based on text alignment and line height\r\n\trect = textGeometry(rect, align, font);\r\n\r\n\tctx.font = font.string;\r\n\tctx.textAlign = align;\r\n\tctx.textBaseline = 'middle';\r\n\tctx.shadowBlur = model.textShadowBlur;\r\n\tctx.shadowColor = model.textShadowColor;\r\n\r\n\tif (filled) {\r\n\t\tctx.fillStyle = color;\r\n\t}\r\n\tif (stroked) {\r\n\t\tctx.lineJoin = 'round';\r\n\t\tctx.lineWidth = strokeWidth;\r\n\t\tctx.strokeStyle = strokeColor;\r\n\t}\r\n\r\n\tfor (i = 0, ilen = lines.length; i < ilen; ++i) {\r\n\t\tdrawTextLine(ctx, lines[i], {\r\n\t\t\tstroked: stroked,\r\n\t\t\tfilled: filled,\r\n\t\t\tw: rect.w,\r\n\t\t\tx: rect.x,\r\n\t\t\ty: rect.y + rect.h * i\r\n\t\t});\r\n\t}\r\n}\r\n\r\nvar Label = function(config, ctx, el, index) {\r\n\tvar me = this;\r\n\r\n\tme._config = config;\r\n\tme._index = index;\r\n\tme._model = null;\r\n\tme._rects = null;\r\n\tme._ctx = ctx;\r\n\tme._el = el;\r\n};\r\n\r\nhelpers$1.extend(Label.prototype, {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_modelize: function(display, lines, config, context) {\r\n\t\tvar me = this;\r\n\t\tvar index = me._index;\r\n\t\tvar resolve = helpers$1.options.resolve;\r\n\t\tvar font = utils.parseFont(resolve([config.font, {}], context, index));\r\n\t\tvar color = resolve([config.color, Chart.defaults.global.defaultFontColor], context, index);\r\n\r\n\t\treturn {\r\n\t\t\talign: resolve([config.align, 'center'], context, index),\r\n\t\t\tanchor: resolve([config.anchor, 'center'], context, index),\r\n\t\t\tarea: context.chart.chartArea,\r\n\t\t\tbackgroundColor: resolve([config.backgroundColor, null], context, index),\r\n\t\t\tborderColor: resolve([config.borderColor, null], context, index),\r\n\t\t\tborderRadius: resolve([config.borderRadius, 0], context, index),\r\n\t\t\tborderWidth: resolve([config.borderWidth, 0], context, index),\r\n\t\t\tclamp: resolve([config.clamp, false], context, index),\r\n\t\t\tclip: resolve([config.clip, false], context, index),\r\n\t\t\tcolor: color,\r\n\t\t\tdisplay: display,\r\n\t\t\tfont: font,\r\n\t\t\tlines: lines,\r\n\t\t\toffset: resolve([config.offset, 0], context, index),\r\n\t\t\topacity: resolve([config.opacity, 1], context, index),\r\n\t\t\torigin: getScaleOrigin(me._el),\r\n\t\t\tpadding: helpers$1.options.toPadding(resolve([config.padding, 0], context, index)),\r\n\t\t\tpositioner: getPositioner(me._el),\r\n\t\t\trotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\r\n\t\t\tsize: utils.textSize(me._ctx, lines, font),\r\n\t\t\ttextAlign: resolve([config.textAlign, 'start'], context, index),\r\n\t\t\ttextShadowBlur: resolve([config.textShadowBlur, 0], context, index),\r\n\t\t\ttextShadowColor: resolve([config.textShadowColor, color], context, index),\r\n\t\t\ttextStrokeColor: resolve([config.textStrokeColor, color], context, index),\r\n\t\t\ttextStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\r\n\t\t};\r\n\t},\r\n\r\n\tupdate: function(context) {\r\n\t\tvar me = this;\r\n\t\tvar model = null;\r\n\t\tvar rects = null;\r\n\t\tvar index = me._index;\r\n\t\tvar config = me._config;\r\n\t\tvar value, label, lines;\r\n\r\n\t\t// We first resolve the display option (separately) to avoid computing\r\n\t\t// other options in case the label is hidden (i.e. display: false).\r\n\t\tvar display = helpers$1.options.resolve([config.display, true], context, index);\r\n\r\n\t\tif (display) {\r\n\t\t\tvalue = context.dataset.data[index];\r\n\t\t\tlabel = helpers$1.valueOrDefault(helpers$1.callback(config.formatter, [value, context]), value);\r\n\t\t\tlines = helpers$1.isNullOrUndef(label) ? [] : utils.toTextLines(label);\r\n\r\n\t\t\tif (lines.length) {\r\n\t\t\t\tmodel = me._modelize(display, lines, config, context);\r\n\t\t\t\trects = boundingRects(model);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme._model = model;\r\n\t\tme._rects = rects;\r\n\t},\r\n\r\n\tgeometry: function() {\r\n\t\treturn this._rects ? this._rects.frame : {};\r\n\t},\r\n\r\n\trotation: function() {\r\n\t\treturn this._model ? this._model.rotation : 0;\r\n\t},\r\n\r\n\tvisible: function() {\r\n\t\treturn this._model && this._model.opacity;\r\n\t},\r\n\r\n\tmodel: function() {\r\n\t\treturn this._model;\r\n\t},\r\n\r\n\tdraw: function(chart, center) {\r\n\t\tvar me = this;\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar model = me._model;\r\n\t\tvar rects = me._rects;\r\n\t\tvar area;\r\n\r\n\t\tif (!this.visible()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\tif (model.clip) {\r\n\t\t\tarea = model.area;\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.rect(\r\n\t\t\t\tarea.left,\r\n\t\t\t\tarea.top,\r\n\t\t\t\tarea.right - area.left,\r\n\t\t\t\tarea.bottom - area.top);\r\n\t\t\tctx.clip();\r\n\t\t}\r\n\r\n\t\tctx.globalAlpha = utils.bound(0, model.opacity, 1);\r\n\t\tctx.translate(rasterize(center.x), rasterize(center.y));\r\n\t\tctx.rotate(model.rotation);\r\n\r\n\t\tdrawFrame(ctx, rects.frame, model);\r\n\t\tdrawText(ctx, model.lines, rects.text, model);\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\r\n\r\nvar helpers$2 = Chart.helpers;\r\n\r\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\r\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // eslint-disable-line es/no-number-maxsafeinteger\r\n\r\nfunction rotated(point, center, angle) {\r\n\tvar cos = Math.cos(angle);\r\n\tvar sin = Math.sin(angle);\r\n\tvar cx = center.x;\r\n\tvar cy = center.y;\r\n\r\n\treturn {\r\n\t\tx: cx + cos * (point.x - cx) - sin * (point.y - cy),\r\n\t\ty: cy + sin * (point.x - cx) + cos * (point.y - cy)\r\n\t};\r\n}\r\n\r\nfunction projected(points, axis) {\r\n\tvar min = MAX_INTEGER;\r\n\tvar max = MIN_INTEGER;\r\n\tvar origin = axis.origin;\r\n\tvar i, pt, vx, vy, dp;\r\n\r\n\tfor (i = 0; i < points.length; ++i) {\r\n\t\tpt = points[i];\r\n\t\tvx = pt.x - origin.x;\r\n\t\tvy = pt.y - origin.y;\r\n\t\tdp = axis.vx * vx + axis.vy * vy;\r\n\t\tmin = Math.min(min, dp);\r\n\t\tmax = Math.max(max, dp);\r\n\t}\r\n\r\n\treturn {\r\n\t\tmin: min,\r\n\t\tmax: max\r\n\t};\r\n}\r\n\r\nfunction toAxis(p0, p1) {\r\n\tvar vx = p1.x - p0.x;\r\n\tvar vy = p1.y - p0.y;\r\n\tvar ln = Math.sqrt(vx * vx + vy * vy);\r\n\r\n\treturn {\r\n\t\tvx: (p1.x - p0.x) / ln,\r\n\t\tvy: (p1.y - p0.y) / ln,\r\n\t\torigin: p0,\r\n\t\tln: ln\r\n\t};\r\n}\r\n\r\nvar HitBox = function() {\r\n\tthis._rotation = 0;\r\n\tthis._rect = {\r\n\t\tx: 0,\r\n\t\ty: 0,\r\n\t\tw: 0,\r\n\t\th: 0\r\n\t};\r\n};\r\n\r\nhelpers$2.extend(HitBox.prototype, {\r\n\tcenter: function() {\r\n\t\tvar r = this._rect;\r\n\t\treturn {\r\n\t\t\tx: r.x + r.w / 2,\r\n\t\t\ty: r.y + r.h / 2\r\n\t\t};\r\n\t},\r\n\r\n\tupdate: function(center, rect, rotation) {\r\n\t\tthis._rotation = rotation;\r\n\t\tthis._rect = {\r\n\t\t\tx: rect.x + center.x,\r\n\t\t\ty: rect.y + center.y,\r\n\t\t\tw: rect.w,\r\n\t\t\th: rect.h\r\n\t\t};\r\n\t},\r\n\r\n\tcontains: function(point) {\r\n\t\tvar me = this;\r\n\t\tvar margin = 1;\r\n\t\tvar rect = me._rect;\r\n\r\n\t\tpoint = rotated(point, me.center(), -me._rotation);\r\n\r\n\t\treturn !(point.x < rect.x - margin\r\n\t\t\t|| point.y < rect.y - margin\r\n\t\t\t|| point.x > rect.x + rect.w + margin * 2\r\n\t\t\t|| point.y > rect.y + rect.h + margin * 2);\r\n\t},\r\n\r\n\t// Separating Axis Theorem\r\n\t// https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\r\n\tintersects: function(other) {\r\n\t\tvar r0 = this._points();\r\n\t\tvar r1 = other._points();\r\n\t\tvar axes = [\r\n\t\t\ttoAxis(r0[0], r0[1]),\r\n\t\t\ttoAxis(r0[0], r0[3])\r\n\t\t];\r\n\t\tvar i, pr0, pr1;\r\n\r\n\t\tif (this._rotation !== other._rotation) {\r\n\t\t\t// Only separate with r1 axis if the rotation is different,\r\n\t\t\t// else it's enough to separate r0 and r1 with r0 axis only!\r\n\t\t\taxes.push(\r\n\t\t\t\ttoAxis(r1[0], r1[1]),\r\n\t\t\t\ttoAxis(r1[0], r1[3])\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < axes.length; ++i) {\r\n\t\t\tpr0 = projected(r0, axes[i]);\r\n\t\t\tpr1 = projected(r1, axes[i]);\r\n\r\n\t\t\tif (pr0.max < pr1.min || pr1.max < pr0.min) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_points: function() {\r\n\t\tvar me = this;\r\n\t\tvar rect = me._rect;\r\n\t\tvar angle = me._rotation;\r\n\t\tvar center = me.center();\r\n\r\n\t\treturn [\r\n\t\t\trotated({x: rect.x, y: rect.y}, center, angle),\r\n\t\t\trotated({x: rect.x + rect.w, y: rect.y}, center, angle),\r\n\t\t\trotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\r\n\t\t\trotated({x: rect.x, y: rect.y + rect.h}, center, angle)\r\n\t\t];\r\n\t}\r\n});\r\n\r\nfunction coordinates(view, model, geometry) {\r\n\tvar point = model.positioner(view, model);\r\n\tvar vx = point.vx;\r\n\tvar vy = point.vy;\r\n\r\n\tif (!vx && !vy) {\r\n\t\t// if aligned center, we don't want to offset the center point\r\n\t\treturn {x: point.x, y: point.y};\r\n\t}\r\n\r\n\tvar w = geometry.w;\r\n\tvar h = geometry.h;\r\n\r\n\t// take in account the label rotation\r\n\tvar rotation = model.rotation;\r\n\tvar dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\r\n\tvar dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\r\n\r\n\t// scale the unit vector (vx, vy) to get at least dx or dy equal to\r\n\t// w or h respectively (else we would calculate the distance to the\r\n\t// ellipse inscribed in the bounding rect)\r\n\tvar vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\r\n\tdx *= vx * vs;\r\n\tdy *= vy * vs;\r\n\r\n\t// finally, include the explicit offset\r\n\tdx += model.offset * vx;\r\n\tdy += model.offset * vy;\r\n\r\n\treturn {\r\n\t\tx: point.x + dx,\r\n\t\ty: point.y + dy\r\n\t};\r\n}\r\n\r\nfunction collide(labels, collider) {\r\n\tvar i, j, s0, s1;\r\n\r\n\t// IMPORTANT Iterate in the reverse order since items at the end of the\r\n\t// list have an higher weight/priority and thus should be less impacted\r\n\t// by the overlapping strategy.\r\n\r\n\tfor (i = labels.length - 1; i >= 0; --i) {\r\n\t\ts0 = labels[i].$layout;\r\n\r\n\t\tfor (j = i - 1; j >= 0 && s0._visible; --j) {\r\n\t\t\ts1 = labels[j].$layout;\r\n\r\n\t\t\tif (s1._visible && s0._box.intersects(s1._box)) {\r\n\t\t\t\tcollider(s0, s1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn labels;\r\n}\r\n\r\nfunction compute$1(labels) {\r\n\tvar i, ilen, label, state, geometry, center;\r\n\r\n\t// Initialize labels for overlap detection\r\n\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\tlabel = labels[i];\r\n\t\tstate = label.$layout;\r\n\r\n\t\tif (state._visible) {\r\n\t\t\tgeometry = label.geometry();\r\n\t\t\tcenter = coordinates(label._el._model, label.model(), geometry);\r\n\t\t\tstate._box.update(center, geometry, label.rotation());\r\n\t\t}\r\n\t}\r\n\r\n\t// Auto hide overlapping labels\r\n\treturn collide(labels, function(s0, s1) {\r\n\t\tvar h0 = s0._hidable;\r\n\t\tvar h1 = s1._hidable;\r\n\r\n\t\tif ((h0 && h1) || h1) {\r\n\t\t\ts1._visible = false;\r\n\t\t} else if (h0) {\r\n\t\t\ts0._visible = false;\r\n\t\t}\r\n\t});\r\n}\r\n\r\nvar layout = {\r\n\tprepare: function(datasets) {\r\n\t\tvar labels = [];\r\n\t\tvar i, j, ilen, jlen, label;\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\r\n\t\t\tfor (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\r\n\t\t\t\tlabel = datasets[i][j];\r\n\t\t\t\tlabels.push(label);\r\n\t\t\t\tlabel.$layout = {\r\n\t\t\t\t\t_box: new HitBox(),\r\n\t\t\t\t\t_hidable: false,\r\n\t\t\t\t\t_visible: true,\r\n\t\t\t\t\t_set: i,\r\n\t\t\t\t\t_idx: j\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// TODO New `z` option: labels with a higher z-index are drawn\r\n\t\t// of top of the ones with a lower index. Lowest z-index labels\r\n\t\t// are also discarded first when hiding overlapping labels.\r\n\t\tlabels.sort(function(a, b) {\r\n\t\t\tvar sa = a.$layout;\r\n\t\t\tvar sb = b.$layout;\r\n\r\n\t\t\treturn sa._idx === sb._idx\r\n\t\t\t\t? sb._set - sa._set\r\n\t\t\t\t: sb._idx - sa._idx;\r\n\t\t});\r\n\r\n\t\tthis.update(labels);\r\n\r\n\t\treturn labels;\r\n\t},\r\n\r\n\tupdate: function(labels) {\r\n\t\tvar dirty = false;\r\n\t\tvar i, ilen, label, model, state;\r\n\r\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\t\tlabel = labels[i];\r\n\t\t\tmodel = label.model();\r\n\t\t\tstate = label.$layout;\r\n\t\t\tstate._hidable = model && model.display === 'auto';\r\n\t\t\tstate._visible = label.visible();\r\n\t\t\tdirty |= state._hidable;\r\n\t\t}\r\n\r\n\t\tif (dirty) {\r\n\t\t\tcompute$1(labels);\r\n\t\t}\r\n\t},\r\n\r\n\tlookup: function(labels, point) {\r\n\t\tvar i, state;\r\n\r\n\t\t// IMPORTANT Iterate in the reverse order since items at the end of\r\n\t\t// the list have an higher z-index, thus should be picked first.\r\n\r\n\t\tfor (i = labels.length - 1; i >= 0; --i) {\r\n\t\t\tstate = labels[i].$layout;\r\n\r\n\t\t\tif (state && state._visible && state._box.contains(point)) {\r\n\t\t\t\treturn labels[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\tdraw: function(chart, labels) {\r\n\t\tvar i, ilen, label, state, geometry, center;\r\n\r\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\r\n\t\t\tlabel = labels[i];\r\n\t\t\tstate = label.$layout;\r\n\r\n\t\t\tif (state._visible) {\r\n\t\t\t\tgeometry = label.geometry();\r\n\t\t\t\tcenter = coordinates(label._el._view, label.model(), geometry);\r\n\t\t\t\tstate._box.update(center, geometry, label.rotation());\r\n\t\t\t\tlabel.draw(chart, center);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar helpers$3 = Chart.helpers;\r\n\r\nvar formatter = function(value) {\r\n\tif (helpers$3.isNullOrUndef(value)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar label = value;\r\n\tvar keys, klen, k;\r\n\tif (helpers$3.isObject(value)) {\r\n\t\tif (!helpers$3.isNullOrUndef(value.label)) {\r\n\t\t\tlabel = value.label;\r\n\t\t} else if (!helpers$3.isNullOrUndef(value.r)) {\r\n\t\t\tlabel = value.r;\r\n\t\t} else {\r\n\t\t\tlabel = '';\r\n\t\t\tkeys = Object.keys(value);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tlabel += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn '' + label;\r\n};\r\n\r\n/**\r\n * IMPORTANT: make sure to also update tests and TypeScript definition\r\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\r\n */\r\n\r\nvar defaults = {\r\n\talign: 'center',\r\n\tanchor: 'center',\r\n\tbackgroundColor: null,\r\n\tborderColor: null,\r\n\tborderRadius: 0,\r\n\tborderWidth: 0,\r\n\tclamp: false,\r\n\tclip: false,\r\n\tcolor: undefined,\r\n\tdisplay: true,\r\n\tfont: {\r\n\t\tfamily: undefined,\r\n\t\tlineHeight: 1.2,\r\n\t\tsize: undefined,\r\n\t\tstyle: undefined,\r\n\t\tweight: null\r\n\t},\r\n\tformatter: formatter,\r\n\tlabels: undefined,\r\n\tlisteners: {},\r\n\toffset: 4,\r\n\topacity: 1,\r\n\tpadding: {\r\n\t\ttop: 4,\r\n\t\tright: 4,\r\n\t\tbottom: 4,\r\n\t\tleft: 4\r\n\t},\r\n\trotation: 0,\r\n\ttextAlign: 'start',\r\n\ttextStrokeColor: undefined,\r\n\ttextStrokeWidth: 0,\r\n\ttextShadowBlur: 0,\r\n\ttextShadowColor: undefined\r\n};\r\n\r\n/**\r\n * @see https://github.com/chartjs/Chart.js/issues/4176\r\n */\r\n\r\nvar helpers$4 = Chart.helpers;\r\nvar EXPANDO_KEY = '$datalabels';\r\nvar DEFAULT_KEY = '$default';\r\n\r\nfunction configure(dataset, options) {\r\n\tvar override = dataset.datalabels;\r\n\tvar listeners = {};\r\n\tvar configs = [];\r\n\tvar labels, keys;\r\n\r\n\tif (override === false) {\r\n\t\treturn null;\r\n\t}\r\n\tif (override === true) {\r\n\t\toverride = {};\r\n\t}\r\n\r\n\toptions = helpers$4.merge({}, [options, override]);\r\n\tlabels = options.labels || {};\r\n\tkeys = Object.keys(labels);\r\n\tdelete options.labels;\r\n\r\n\tif (keys.length) {\r\n\t\tkeys.forEach(function(key) {\r\n\t\t\tif (labels[key]) {\r\n\t\t\t\tconfigs.push(helpers$4.merge({}, [\r\n\t\t\t\t\toptions,\r\n\t\t\t\t\tlabels[key],\r\n\t\t\t\t\t{_key: key}\r\n\t\t\t\t]));\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\t// Default label if no \"named\" label defined.\r\n\t\tconfigs.push(options);\r\n\t}\r\n\r\n\t// listeners: {: {: }}\r\n\tlisteners = configs.reduce(function(target, config) {\r\n\t\thelpers$4.each(config.listeners || {}, function(fn, event) {\r\n\t\t\ttarget[event] = target[event] || {};\r\n\t\t\ttarget[event][config._key || DEFAULT_KEY] = fn;\r\n\t\t});\r\n\r\n\t\tdelete config.listeners;\r\n\t\treturn target;\r\n\t}, {});\r\n\r\n\treturn {\r\n\t\tlabels: configs,\r\n\t\tlisteners: listeners\r\n\t};\r\n}\r\n\r\nfunction dispatchEvent(chart, listeners, label) {\r\n\tif (!listeners) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar context = label.$context;\r\n\tvar groups = label.$groups;\r\n\tvar callback;\r\n\r\n\tif (!listeners[groups._set]) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tcallback = listeners[groups._set][groups._key];\r\n\tif (!callback) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (helpers$4.callback(callback, [context]) === true) {\r\n\t\t// Users are allowed to tweak the given context by injecting values that can be\r\n\t\t// used in scriptable options to display labels differently based on the current\r\n\t\t// event (e.g. highlight an hovered label). That's why we update the label with\r\n\t\t// the output context and schedule a new chart render by setting it dirty.\r\n\t\tchart[EXPANDO_KEY]._dirty = true;\r\n\t\tlabel.update(context);\r\n\t}\r\n}\r\n\r\nfunction dispatchMoveEvents(chart, listeners, previous, label) {\r\n\tvar enter, leave;\r\n\r\n\tif (!previous && !label) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (!previous) {\r\n\t\tenter = true;\r\n\t} else if (!label) {\r\n\t\tleave = true;\r\n\t} else if (previous !== label) {\r\n\t\tleave = enter = true;\r\n\t}\r\n\r\n\tif (leave) {\r\n\t\tdispatchEvent(chart, listeners.leave, previous);\r\n\t}\r\n\tif (enter) {\r\n\t\tdispatchEvent(chart, listeners.enter, label);\r\n\t}\r\n}\r\n\r\nfunction handleMoveEvents(chart, event) {\r\n\tvar expando = chart[EXPANDO_KEY];\r\n\tvar listeners = expando._listeners;\r\n\tvar previous, label;\r\n\r\n\tif (!listeners.enter && !listeners.leave) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (event.type === 'mousemove') {\r\n\t\tlabel = layout.lookup(expando._labels, event);\r\n\t} else if (event.type !== 'mouseout') {\r\n\t\treturn;\r\n\t}\r\n\r\n\tprevious = expando._hovered;\r\n\texpando._hovered = label;\r\n\tdispatchMoveEvents(chart, listeners, previous, label);\r\n}\r\n\r\nfunction handleClickEvents(chart, event) {\r\n\tvar expando = chart[EXPANDO_KEY];\r\n\tvar handlers = expando._listeners.click;\r\n\tvar label = handlers && layout.lookup(expando._labels, event);\r\n\tif (label) {\r\n\t\tdispatchEvent(chart, handlers, label);\r\n\t}\r\n}\r\n\r\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/108\r\nfunction invalidate(chart) {\r\n\tif (chart.animating) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// `chart.animating` can be `false` even if there is animation in progress,\r\n\t// so let's iterate all animations to find if there is one for the `chart`.\r\n\tvar animations = Chart.animationService.animations;\r\n\tfor (var i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\tif (animations[i].chart === chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// No render scheduled: trigger a \"lazy\" render that can be canceled in case\r\n\t// of hover interactions. The 1ms duration is a workaround to make sure an\r\n\t// animation is created so the controller can stop it before any transition.\r\n\tchart.render({duration: 1, lazy: true});\r\n}\r\n\r\nChart.defaults.global.plugins.datalabels = defaults;\r\n\r\nvar plugin = {\r\n\tid: 'datalabels',\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tchart[EXPANDO_KEY] = {\r\n\t\t\t_actives: []\r\n\t\t};\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar expando = chart[EXPANDO_KEY];\r\n\t\texpando._listened = false;\r\n\t\texpando._listeners = {}; // {: {: {: }}}\r\n\t\texpando._datasets = []; // per dataset labels: [Label[]]\r\n\t\texpando._labels = []; // layouted labels: Label[]\r\n\t},\r\n\r\n\tafterDatasetUpdate: function(chart, args, options) {\r\n\t\tvar datasetIndex = args.index;\r\n\t\tvar expando = chart[EXPANDO_KEY];\r\n\t\tvar labels = expando._datasets[datasetIndex] = [];\r\n\t\tvar visible = chart.isDatasetVisible(datasetIndex);\r\n\t\tvar dataset = chart.data.datasets[datasetIndex];\r\n\t\tvar config = configure(dataset, options);\r\n\t\tvar elements = args.meta.data || [];\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar i, j, ilen, jlen, cfg, key, el, label;\r\n\r\n\t\tctx.save();\r\n\r\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\r\n\t\t\tel = elements[i];\r\n\t\t\tel[EXPANDO_KEY] = [];\r\n\r\n\t\t\tif (visible && el && !el.hidden && !el._model.skip) {\r\n\t\t\t\tfor (j = 0, jlen = config.labels.length; j < jlen; ++j) {\r\n\t\t\t\t\tcfg = config.labels[j];\r\n\t\t\t\t\tkey = cfg._key;\r\n\r\n\t\t\t\t\tlabel = new Label(cfg, ctx, el, i);\r\n\t\t\t\t\tlabel.$groups = {\r\n\t\t\t\t\t\t_set: datasetIndex,\r\n\t\t\t\t\t\t_key: key || DEFAULT_KEY\r\n\t\t\t\t\t};\r\n\t\t\t\t\tlabel.$context = {\r\n\t\t\t\t\t\tactive: false,\r\n\t\t\t\t\t\tchart: chart,\r\n\t\t\t\t\t\tdataIndex: i,\r\n\t\t\t\t\t\tdataset: dataset,\r\n\t\t\t\t\t\tdatasetIndex: datasetIndex\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tlabel.update(label.$context);\r\n\t\t\t\t\tel[EXPANDO_KEY].push(label);\r\n\t\t\t\t\tlabels.push(label);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\r\n\t\t// Store listeners at the chart level and per event type to optimize\r\n\t\t// cases where no listeners are registered for a specific event.\r\n\t\thelpers$4.merge(expando._listeners, config.listeners, {\r\n\t\t\tmerger: function(event, target, source) {\r\n\t\t\t\ttarget[event] = target[event] || {};\r\n\t\t\t\ttarget[event][args.index] = source[event];\r\n\t\t\t\texpando._listened = true;\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tafterUpdate: function(chart, options) {\r\n\t\tchart[EXPANDO_KEY]._labels = layout.prepare(\r\n\t\t\tchart[EXPANDO_KEY]._datasets,\r\n\t\t\toptions);\r\n\t},\r\n\r\n\t// Draw labels on top of all dataset elements\r\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\r\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\r\n\tafterDatasetsDraw: function(chart) {\r\n\t\tlayout.draw(chart, chart[EXPANDO_KEY]._labels);\r\n\t},\r\n\r\n\tbeforeEvent: function(chart, event) {\r\n\t\t// If there is no listener registered for this chart, `listened` will be false,\r\n\t\t// meaning we can immediately ignore the incoming event and avoid useless extra\r\n\t\t// computation for users who don't implement label interactions.\r\n\t\tif (chart[EXPANDO_KEY]._listened) {\r\n\t\t\tswitch (event.type) {\r\n\t\t\tcase 'mousemove':\r\n\t\t\tcase 'mouseout':\r\n\t\t\t\thandleMoveEvents(chart, event);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'click':\r\n\t\t\t\thandleClickEvents(chart, event);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tafterEvent: function(chart) {\r\n\t\tvar expando = chart[EXPANDO_KEY];\r\n\t\tvar previous = expando._actives;\r\n\t\tvar actives = expando._actives = chart.lastActive || []; // public API?!\r\n\t\tvar updates = utils.arrayDiff(previous, actives);\r\n\t\tvar i, ilen, j, jlen, update, label, labels;\r\n\r\n\t\tfor (i = 0, ilen = updates.length; i < ilen; ++i) {\r\n\t\t\tupdate = updates[i];\r\n\t\t\tif (update[1]) {\r\n\t\t\t\tlabels = update[0][EXPANDO_KEY] || [];\r\n\t\t\t\tfor (j = 0, jlen = labels.length; j < jlen; ++j) {\r\n\t\t\t\t\tlabel = labels[j];\r\n\t\t\t\t\tlabel.$context.active = (update[1] === 1);\r\n\t\t\t\t\tlabel.update(label.$context);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (expando._dirty || updates.length) {\r\n\t\t\tlayout.update(expando._labels);\r\n\t\t\tinvalidate(chart);\r\n\t\t}\r\n\r\n\t\tdelete expando._dirty;\r\n\t}\r\n};\r\n\r\n// TODO Remove at version 1, we shouldn't automatically register plugins.\r\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/42\r\nChart.plugins.unregister(plugin);\r\nreturn plugin;\r\n\r\n}));\r\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/forced-string-html-method');\n\n// `String.prototype.anchor` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n anchor: function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n }\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar quot = /\"/g;\n\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\n// https://tc39.github.io/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = String(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","module.exports = chart;","/*! PhotoSwipe - v4.1.1 - 2015-12-24\r\n * http://photoswipe.com\r\n * Copyright (c) 2015 Dmitry Semenov; */\r\n! function (a, b) {\r\n \"function\" == typeof define && define.amd ? define(b) : \"object\" == typeof exports ? module.exports = b() : window.PhotoSwipe = b()\r\n}(this, function () {\r\n \"use strict\";\r\n var a = function (a, b, c, d) {\r\n var e = {\r\n features: null,\r\n bind: function (a, b, c, d) {\r\n var e = (d ? \"remove\" : \"add\") + \"EventListener\";\r\n b = b.split(\" \");\r\n for (var f = 0; f < b.length; f++) b[f] && a[e](b[f], c, !1)\r\n },\r\n isArray: function (a) {\r\n return a instanceof Array\r\n },\r\n createEl: function (a, b) {\r\n var c = document.createElement(b || \"div\");\r\n return a && (c.className = a), c\r\n },\r\n getScrollY: function () {\r\n var a = window.pageYOffset;\r\n return void 0 !== a ? a : document.documentElement.scrollTop\r\n },\r\n unbind: function (a, b, c) {\r\n e.bind(a, b, c, !0)\r\n },\r\n removeClass: function (a, b) {\r\n var c = new RegExp(\"(\\\\s|^)\" + b + \"(\\\\s|$)\");\r\n a.className = a.className.replace(c, \" \").replace(/^\\s\\s*/, \"\").replace(/\\s\\s*$/, \"\")\r\n },\r\n addClass: function (a, b) {\r\n e.hasClass(a, b) || (a.className += (a.className ? \" \" : \"\") + b)\r\n },\r\n hasClass: function (a, b) {\r\n return a.className && new RegExp(\"(^|\\\\s)\" + b + \"(\\\\s|$)\").test(a.className)\r\n },\r\n getChildByClass: function (a, b) {\r\n for (var c = a.firstChild; c;) {\r\n if (e.hasClass(c, b)) return c;\r\n c = c.nextSibling\r\n }\r\n },\r\n arraySearch: function (a, b, c) {\r\n for (var d = a.length; d--;)\r\n if (a[d][c] === b) return d;\r\n return -1\r\n },\r\n extend: function (a, b, c) {\r\n for (var d in b)\r\n if (b.hasOwnProperty(d)) {\r\n if (c && a.hasOwnProperty(d)) continue;\r\n a[d] = b[d]\r\n }\r\n },\r\n easing: {\r\n sine: {\r\n out: function (a) {\r\n return Math.sin(a * (Math.PI / 2))\r\n },\r\n inOut: function (a) {\r\n return -(Math.cos(Math.PI * a) - 1) / 2\r\n }\r\n },\r\n cubic: {\r\n out: function (a) {\r\n return --a * a * a + 1\r\n }\r\n }\r\n },\r\n detectFeatures: function () {\r\n if (e.features) return e.features;\r\n var a = e.createEl(),\r\n b = a.style,\r\n c = \"\",\r\n d = {};\r\n if (d.oldIE = document.all && !document.addEventListener, d.touch = \"ontouchstart\" in window, window.requestAnimationFrame && (d.raf = window.requestAnimationFrame, d.caf = window.cancelAnimationFrame), d.pointerEvent = navigator.pointerEnabled || navigator.msPointerEnabled, !d.pointerEvent) {\r\n var f = navigator.userAgent;\r\n if (/iP(hone|od)/.test(navigator.platform)) {\r\n var g = navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\r\n g && g.length > 0 && (g = parseInt(g[1], 10), g >= 1 && 8 > g && (d.isOldIOSPhone = !0))\r\n }\r\n var h = f.match(/Android\\s([0-9\\.]*)/),\r\n i = h ? h[1] : 0;\r\n i = parseFloat(i), i >= 1 && (4.4 > i && (d.isOldAndroid = !0), d.androidVersion = i), d.isMobileOpera = /opera mini|opera mobi/i.test(f)\r\n }\r\n for (var j, k, l = [\"transform\", \"perspective\", \"animationName\"], m = [\"\", \"webkit\", \"Moz\", \"ms\", \"O\"], n = 0; 4 > n; n++) {\r\n c = m[n];\r\n for (var o = 0; 3 > o; o++) j = l[o], k = c + (c ? j.charAt(0).toUpperCase() + j.slice(1) : j), !d[j] && k in b && (d[j] = k);\r\n c && !d.raf && (c = c.toLowerCase(), d.raf = window[c + \"RequestAnimationFrame\"], d.raf && (d.caf = window[c + \"CancelAnimationFrame\"] || window[c + \"CancelRequestAnimationFrame\"]))\r\n }\r\n if (!d.raf) {\r\n var p = 0;\r\n d.raf = function (a) {\r\n var b = (new Date).getTime(),\r\n c = Math.max(0, 16 - (b - p)),\r\n d = window.setTimeout(function () {\r\n a(b + c)\r\n }, c);\r\n return p = b + c, d\r\n }, d.caf = function (a) {\r\n clearTimeout(a)\r\n }\r\n }\r\n return d.svg = !!document.createElementNS && !!document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\").createSVGRect, e.features = d, d\r\n }\r\n };\r\n e.detectFeatures(), e.features.oldIE && (e.bind = function (a, b, c, d) {\r\n b = b.split(\" \");\r\n for (var e, f = (d ? \"detach\" : \"attach\") + \"Event\", g = function () {\r\n c.handleEvent.call(c)\r\n }, h = 0; h < b.length; h++)\r\n if (e = b[h])\r\n if (\"object\" == typeof c && c.handleEvent) {\r\n if (d) {\r\n if (!c[\"oldIE\" + e]) return !1\r\n } else c[\"oldIE\" + e] = g;\r\n a[f](\"on\" + e, c[\"oldIE\" + e])\r\n } else a[f](\"on\" + e, c)\r\n });\r\n var f = this,\r\n g = 25,\r\n h = 3,\r\n i = {\r\n allowPanToNext: !0,\r\n spacing: .12,\r\n bgOpacity: 1,\r\n mouseUsed: !1,\r\n loop: !0,\r\n pinchToClose: !0,\r\n closeOnScroll: !0,\r\n closeOnVerticalDrag: !0,\r\n verticalDragRange: .75,\r\n hideAnimationDuration: 333,\r\n showAnimationDuration: 333,\r\n showHideOpacity: !1,\r\n focus: !0,\r\n escKey: !0,\r\n arrowKeys: !0,\r\n mainScrollEndFriction: .35,\r\n panEndFriction: .35,\r\n isClickableElement: function (a) {\r\n return \"A\" === a.tagName\r\n },\r\n getDoubleTapZoom: function (a, b) {\r\n return a ? 1 : b.initialZoomLevel < .7 ? 1 : 1.33\r\n },\r\n maxSpreadZoom: 1.33,\r\n modal: !0,\r\n scaleMode: \"fit\"\r\n };\r\n e.extend(i, d);\r\n var j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _, aa, ba, ca, da, ea, fa, ga, ha, ia, ja, ka, la = function () {\r\n return {\r\n x: 0,\r\n y: 0\r\n }\r\n },\r\n ma = la(),\r\n na = la(),\r\n oa = la(),\r\n pa = {},\r\n qa = 0,\r\n ra = {},\r\n sa = la(),\r\n ta = 0,\r\n ua = !0,\r\n va = [],\r\n wa = {},\r\n xa = !1,\r\n ya = function (a, b) {\r\n e.extend(f, b.publicMethods), va.push(a)\r\n },\r\n za = function (a) {\r\n var b = _b();\r\n return a > b - 1 ? a - b : 0 > a ? b + a : a\r\n },\r\n Aa = {},\r\n Ba = function (a, b) {\r\n return Aa[a] || (Aa[a] = []), Aa[a].push(b)\r\n },\r\n Ca = function (a) {\r\n var b = Aa[a];\r\n if (b) {\r\n var c = Array.prototype.slice.call(arguments);\r\n c.shift();\r\n for (var d = 0; d < b.length; d++) b[d].apply(f, c)\r\n }\r\n },\r\n Da = function () {\r\n return (new Date).getTime()\r\n },\r\n Ea = function (a) {\r\n ia = a, f.bg.style.opacity = a * i.bgOpacity\r\n },\r\n Fa = function (a, b, c, d, e) {\r\n (!xa || e && e !== f.currItem) && (d /= e ? e.fitRatio : f.currItem.fitRatio), a[E] = u + b + \"px, \" + c + \"px\" + v + \" scale(\" + d + \")\"\r\n },\r\n Ga = function (a) {\r\n da && (a && (s > f.currItem.fitRatio ? xa || (lc(f.currItem, !1, !0), xa = !0) : xa && (lc(f.currItem), xa = !1)), Fa(da, oa.x, oa.y, s))\r\n },\r\n Ha = function (a) {\r\n a.container && Fa(a.container.style, a.initialPosition.x, a.initialPosition.y, a.initialZoomLevel, a)\r\n },\r\n Ia = function (a, b) {\r\n b[E] = u + a + \"px, 0px\" + v\r\n },\r\n Ja = function (a, b) {\r\n if (!i.loop && b) {\r\n var c = m + (sa.x * qa - a) / sa.x,\r\n d = Math.round(a - sb.x);\r\n (0 > c && d > 0 || c >= _b() - 1 && 0 > d) && (a = sb.x + d * i.mainScrollEndFriction)\r\n }\r\n sb.x = a, Ia(a, n)\r\n },\r\n Ka = function (a, b) {\r\n var c = tb[a] - ra[a];\r\n return na[a] + ma[a] + c - c * (b / t)\r\n },\r\n La = function (a, b) {\r\n a.x = b.x, a.y = b.y, b.id && (a.id = b.id)\r\n },\r\n Ma = function (a) {\r\n a.x = Math.round(a.x), a.y = Math.round(a.y)\r\n },\r\n Na = null,\r\n Oa = function () {\r\n Na && (e.unbind(document, \"mousemove\", Oa), e.addClass(a, \"pswp--has_mouse\"), i.mouseUsed = !0, Ca(\"mouseUsed\")), Na = setTimeout(function () {\r\n Na = null\r\n }, 100)\r\n },\r\n Pa = function () {\r\n e.bind(document, \"keydown\", f), N.transform && e.bind(f.scrollWrap, \"click\", f), i.mouseUsed || e.bind(document, \"mousemove\", Oa), e.bind(window, \"resize scroll\", f), Ca(\"bindEvents\")\r\n },\r\n Qa = function () {\r\n e.unbind(window, \"resize\", f), e.unbind(window, \"scroll\", r.scroll), e.unbind(document, \"keydown\", f), e.unbind(document, \"mousemove\", Oa), N.transform && e.unbind(f.scrollWrap, \"click\", f), U && e.unbind(window, p, f), Ca(\"unbindEvents\")\r\n },\r\n Ra = function (a, b) {\r\n var c = hc(f.currItem, pa, a);\r\n return b && (ca = c), c\r\n },\r\n Sa = function (a) {\r\n return a || (a = f.currItem), a.initialZoomLevel\r\n },\r\n Ta = function (a) {\r\n return a || (a = f.currItem), a.w > 0 ? i.maxSpreadZoom : 1\r\n },\r\n Ua = function (a, b, c, d) {\r\n return d === f.currItem.initialZoomLevel ? (c[a] = f.currItem.initialPosition[a], !0) : (c[a] = Ka(a, d), c[a] > b.min[a] ? (c[a] = b.min[a], !0) : c[a] < b.max[a] ? (c[a] = b.max[a], !0) : !1)\r\n },\r\n Va = function () {\r\n if (E) {\r\n var b = N.perspective && !G;\r\n return u = \"translate\" + (b ? \"3d(\" : \"(\"), void(v = N.perspective ? \", 0px)\" : \")\")\r\n }\r\n E = \"left\", e.addClass(a, \"pswp--ie\"), Ia = function (a, b) {\r\n b.left = a + \"px\"\r\n }, Ha = function (a) {\r\n var b = a.fitRatio > 1 ? 1 : a.fitRatio,\r\n c = a.container.style,\r\n d = b * a.w,\r\n e = b * a.h;\r\n c.width = d + \"px\", c.height = e + \"px\", c.left = a.initialPosition.x + \"px\", c.top = a.initialPosition.y + \"px\"\r\n }, Ga = function () {\r\n if (da) {\r\n var a = da,\r\n b = f.currItem,\r\n c = b.fitRatio > 1 ? 1 : b.fitRatio,\r\n d = c * b.w,\r\n e = c * b.h;\r\n a.width = d + \"px\", a.height = e + \"px\", a.left = oa.x + \"px\", a.top = oa.y + \"px\"\r\n }\r\n }\r\n },\r\n Wa = function (a) {\r\n var b = \"\";\r\n i.escKey && 27 === a.keyCode ? b = \"close\" : i.arrowKeys && (37 === a.keyCode ? b = \"prev\" : 39 === a.keyCode && (b = \"next\")), b && (a.ctrlKey || a.altKey || a.shiftKey || a.metaKey || (a.preventDefault ? a.preventDefault() : a.returnValue = !1, f[b]()))\r\n },\r\n Xa = function (a) {\r\n a && (X || W || ea || S) && (a.preventDefault(), a.stopPropagation())\r\n },\r\n Ya = function () {\r\n f.setScrollOffset(0, e.getScrollY())\r\n },\r\n Za = {},\r\n $a = 0,\r\n _a = function (a) {\r\n Za[a] && (Za[a].raf && I(Za[a].raf), $a--, delete Za[a])\r\n },\r\n ab = function (a) {\r\n Za[a] && _a(a), Za[a] || ($a++, Za[a] = {})\r\n },\r\n bb = function () {\r\n for (var a in Za) Za.hasOwnProperty(a) && _a(a)\r\n },\r\n cb = function (a, b, c, d, e, f, g) {\r\n var h, i = Da();\r\n ab(a);\r\n var j = function () {\r\n if (Za[a]) {\r\n if (h = Da() - i, h >= d) return _a(a), f(c), void(g && g());\r\n f((c - b) * e(h / d) + b), Za[a].raf = H(j)\r\n }\r\n };\r\n j()\r\n },\r\n db = {\r\n shout: Ca,\r\n listen: Ba,\r\n viewportSize: pa,\r\n options: i,\r\n isMainScrollAnimating: function () {\r\n return ea\r\n },\r\n getZoomLevel: function () {\r\n return s\r\n },\r\n getCurrentIndex: function () {\r\n return m\r\n },\r\n isDragging: function () {\r\n return U\r\n },\r\n isZooming: function () {\r\n return _\r\n },\r\n setScrollOffset: function (a, b) {\r\n ra.x = a, M = ra.y = b, Ca(\"updateScrollOffset\", ra)\r\n },\r\n applyZoomPan: function (a, b, c, d) {\r\n oa.x = b, oa.y = c, s = a, Ga(d)\r\n },\r\n init: function () {\r\n if (!j && !k) {\r\n var c;\r\n f.framework = e, f.template = a, f.bg = e.getChildByClass(a, \"pswp__bg\"), J = a.className, j = !0, N = e.detectFeatures(), H = N.raf, I = N.caf, E = N.transform, L = N.oldIE, f.scrollWrap = e.getChildByClass(a, \"pswp__scroll-wrap\"), f.container = e.getChildByClass(f.scrollWrap, \"pswp__container\"), n = f.container.style, f.itemHolders = y = [{\r\n el: f.container.children[0],\r\n wrap: 0,\r\n index: -1\r\n }, {\r\n el: f.container.children[1],\r\n wrap: 0,\r\n index: -1\r\n }, {\r\n el: f.container.children[2],\r\n wrap: 0,\r\n index: -1\r\n }], y[0].el.style.display = y[2].el.style.display = \"none\", Va(), r = {\r\n resize: f.updateSize,\r\n scroll: Ya,\r\n keydown: Wa,\r\n click: Xa\r\n };\r\n var d = N.isOldIOSPhone || N.isOldAndroid || N.isMobileOpera;\r\n for (N.animationName && N.transform && !d || (i.showAnimationDuration = i.hideAnimationDuration = 0), c = 0; c < va.length; c++) f[\"init\" + va[c]]();\r\n if (b) {\r\n var g = f.ui = new b(f, e);\r\n g.init()\r\n }\r\n Ca(\"firstUpdate\"), m = m || i.index || 0, (isNaN(m) || 0 > m || m >= _b()) && (m = 0), f.currItem = $b(m), (N.isOldIOSPhone || N.isOldAndroid) && (ua = !1), a.setAttribute(\"aria-hidden\", \"false\"), i.modal && (ua ? a.style.position = \"fixed\" : (a.style.position = \"absolute\", a.style.top = e.getScrollY() + \"px\")), void 0 === M && (Ca(\"initialLayout\"), M = K = e.getScrollY());\r\n var l = \"pswp--open \";\r\n for (i.mainClass && (l += i.mainClass + \" \"), i.showHideOpacity && (l += \"pswp--animate_opacity \"), l += G ? \"pswp--touch\" : \"pswp--notouch\", l += N.animationName ? \" pswp--css_animation\" : \"\", l += N.svg ? \" pswp--svg\" : \"\", e.addClass(a, l), f.updateSize(), o = -1, ta = null, c = 0; h > c; c++) Ia((c + o) * sa.x, y[c].el.style);\r\n L || e.bind(f.scrollWrap, q, f), Ba(\"initialZoomInEnd\", function () {\r\n f.setContent(y[0], m - 1), f.setContent(y[2], m + 1), y[0].el.style.display = y[2].el.style.display = \"block\", i.focus && a.focus(), Pa()\r\n }), f.setContent(y[1], m), f.updateCurrItem(), Ca(\"afterInit\"), ua || (w = setInterval(function () {\r\n $a || U || _ || s !== f.currItem.initialZoomLevel || f.updateSize()\r\n }, 1e3)), e.addClass(a, \"pswp--visible\")\r\n }\r\n },\r\n close: function () {\r\n j && (j = !1, k = !0, Ca(\"close\"), Qa(), bc(f.currItem, null, !0, f.destroy))\r\n },\r\n destroy: function () {\r\n Ca(\"destroy\"), Wb && clearTimeout(Wb), a.setAttribute(\"aria-hidden\", \"true\"), a.className = J, w && clearInterval(w), e.unbind(f.scrollWrap, q, f), e.unbind(window, \"scroll\", f), yb(), bb(), Aa = null\r\n },\r\n panTo: function (a, b, c) {\r\n c || (a > ca.min.x ? a = ca.min.x : a < ca.max.x && (a = ca.max.x), b > ca.min.y ? b = ca.min.y : b < ca.max.y && (b = ca.max.y)), oa.x = a, oa.y = b, Ga()\r\n },\r\n handleEvent: function (a) {\r\n a = a || window.event, r[a.type] && r[a.type](a)\r\n },\r\n goTo: function (a) {\r\n a = za(a);\r\n var b = a - m;\r\n ta = b, m = a, f.currItem = $b(m), qa -= b, Ja(sa.x * qa), bb(), ea = !1, f.updateCurrItem()\r\n },\r\n next: function () {\r\n f.goTo(m + 1)\r\n },\r\n prev: function () {\r\n f.goTo(m - 1)\r\n },\r\n updateCurrZoomItem: function (a) {\r\n if (a && Ca(\"beforeChange\", 0), y[1].el.children.length) {\r\n var b = y[1].el.children[0];\r\n da = e.hasClass(b, \"pswp__zoom-wrap\") ? b.style : null\r\n } else da = null;\r\n ca = f.currItem.bounds, t = s = f.currItem.initialZoomLevel, oa.x = ca.center.x, oa.y = ca.center.y, a && Ca(\"afterChange\")\r\n },\r\n invalidateCurrItems: function () {\r\n x = !0;\r\n for (var a = 0; h > a; a++) y[a].item && (y[a].item.needsUpdate = !0)\r\n },\r\n updateCurrItem: function (a) {\r\n if (0 !== ta) {\r\n var b, c = Math.abs(ta);\r\n if (!(a && 2 > c)) {\r\n f.currItem = $b(m), xa = !1, Ca(\"beforeChange\", ta), c >= h && (o += ta + (ta > 0 ? -h : h), c = h);\r\n for (var d = 0; c > d; d++) ta > 0 ? (b = y.shift(), y[h - 1] = b, o++, Ia((o + 2) * sa.x, b.el.style), f.setContent(b, m - c + d + 1 + 1)) : (b = y.pop(), y.unshift(b), o--, Ia(o * sa.x, b.el.style), f.setContent(b, m + c - d - 1 - 1));\r\n if (da && 1 === Math.abs(ta)) {\r\n var e = $b(z);\r\n e.initialZoomLevel !== s && (hc(e, pa), lc(e), Ha(e))\r\n }\r\n ta = 0, f.updateCurrZoomItem(), z = m, Ca(\"afterChange\")\r\n }\r\n }\r\n },\r\n updateSize: function (b) {\r\n if (!ua && i.modal) {\r\n var c = e.getScrollY();\r\n if (M !== c && (a.style.top = c + \"px\", M = c), !b && wa.x === window.innerWidth && wa.y === window.innerHeight) return;\r\n wa.x = window.innerWidth, wa.y = window.innerHeight, a.style.height = wa.y + \"px\"\r\n }\r\n if (pa.x = f.scrollWrap.clientWidth, pa.y = f.scrollWrap.clientHeight, Ya(), sa.x = pa.x + Math.round(pa.x * i.spacing), sa.y = pa.y, Ja(sa.x * qa), Ca(\"beforeResize\"), void 0 !== o) {\r\n for (var d, g, j, k = 0; h > k; k++) d = y[k], Ia((k + o) * sa.x, d.el.style), j = m + k - 1, i.loop && _b() > 2 && (j = za(j)), g = $b(j), g && (x || g.needsUpdate || !g.bounds) ? (f.cleanSlide(g), f.setContent(d, j), 1 === k && (f.currItem = g, f.updateCurrZoomItem(!0)), g.needsUpdate = !1) : -1 === d.index && j >= 0 && f.setContent(d, j), g && g.container && (hc(g, pa), lc(g), Ha(g));\r\n x = !1\r\n }\r\n t = s = f.currItem.initialZoomLevel, ca = f.currItem.bounds, ca && (oa.x = ca.center.x, oa.y = ca.center.y, Ga(!0)), Ca(\"resize\")\r\n },\r\n zoomTo: function (a, b, c, d, f) {\r\n b && (t = s, tb.x = Math.abs(b.x) - oa.x, tb.y = Math.abs(b.y) - oa.y, La(na, oa));\r\n var g = Ra(a, !1),\r\n h = {};\r\n Ua(\"x\", g, h, a), Ua(\"y\", g, h, a);\r\n var i = s,\r\n j = {\r\n x: oa.x,\r\n y: oa.y\r\n };\r\n Ma(h);\r\n var k = function (b) {\r\n 1 === b ? (s = a, oa.x = h.x, oa.y = h.y) : (s = (a - i) * b + i, oa.x = (h.x - j.x) * b + j.x, oa.y = (h.y - j.y) * b + j.y), f && f(b), Ga(1 === b)\r\n };\r\n c ? cb(\"customZoomTo\", 0, 1, c, d || e.easing.sine.inOut, k) : k(1)\r\n }\r\n },\r\n eb = 30,\r\n fb = 10,\r\n gb = {},\r\n hb = {},\r\n ib = {},\r\n jb = {},\r\n kb = {},\r\n lb = [],\r\n mb = {},\r\n nb = [],\r\n ob = {},\r\n pb = 0,\r\n qb = la(),\r\n rb = 0,\r\n sb = la(),\r\n tb = la(),\r\n ub = la(),\r\n vb = function (a, b) {\r\n return a.x === b.x && a.y === b.y\r\n },\r\n wb = function (a, b) {\r\n return Math.abs(a.x - b.x) < g && Math.abs(a.y - b.y) < g\r\n },\r\n xb = function (a, b) {\r\n return ob.x = Math.abs(a.x - b.x), ob.y = Math.abs(a.y - b.y), Math.sqrt(ob.x * ob.x + ob.y * ob.y)\r\n },\r\n yb = function () {\r\n Y && (I(Y), Y = null)\r\n },\r\n zb = function () {\r\n U && (Y = H(zb), Pb())\r\n },\r\n Ab = function () {\r\n return !(\"fit\" === i.scaleMode && s === f.currItem.initialZoomLevel)\r\n },\r\n Bb = function (a, b) {\r\n return a && a !== document ? a.getAttribute(\"class\") && a.getAttribute(\"class\").indexOf(\"pswp__scroll-wrap\") > -1 ? !1 : b(a) ? a : Bb(a.parentNode, b) : !1\r\n },\r\n Cb = {},\r\n Db = function (a, b) {\r\n return Cb.prevent = !Bb(a.target, i.isClickableElement), Ca(\"preventDragEvent\", a, b, Cb), Cb.prevent\r\n },\r\n Eb = function (a, b) {\r\n return b.x = a.pageX, b.y = a.pageY, b.id = a.identifier, b\r\n },\r\n Fb = function (a, b, c) {\r\n c.x = .5 * (a.x + b.x), c.y = .5 * (a.y + b.y)\r\n },\r\n Gb = function (a, b, c) {\r\n if (a - P > 50) {\r\n var d = nb.length > 2 ? nb.shift() : {};\r\n d.x = b, d.y = c, nb.push(d), P = a\r\n }\r\n },\r\n Hb = function () {\r\n var a = oa.y - f.currItem.initialPosition.y;\r\n return 1 - Math.abs(a / (pa.y / 2))\r\n },\r\n Ib = {},\r\n Jb = {},\r\n Kb = [],\r\n Lb = function (a) {\r\n for (; Kb.length > 0;) Kb.pop();\r\n return F ? (ka = 0, lb.forEach(function (a) {\r\n 0 === ka ? Kb[0] = a : 1 === ka && (Kb[1] = a), ka++\r\n })) : a.type.indexOf(\"touch\") > -1 ? a.touches && a.touches.length > 0 && (Kb[0] = Eb(a.touches[0], Ib), a.touches.length > 1 && (Kb[1] = Eb(a.touches[1], Jb))) : (Ib.x = a.pageX, Ib.y = a.pageY, Ib.id = \"\", Kb[0] = Ib), Kb\r\n },\r\n Mb = function (a, b) {\r\n var c, d, e, g, h = 0,\r\n j = oa[a] + b[a],\r\n k = b[a] > 0,\r\n l = sb.x + b.x,\r\n m = sb.x - mb.x;\r\n return c = j > ca.min[a] || j < ca.max[a] ? i.panEndFriction : 1, j = oa[a] + b[a] * c, !i.allowPanToNext && s !== f.currItem.initialZoomLevel || (da ? \"h\" !== fa || \"x\" !== a || W || (k ? (j > ca.min[a] && (c = i.panEndFriction, h = ca.min[a] - j, d = ca.min[a] - na[a]), (0 >= d || 0 > m) && _b() > 1 ? (g = l, 0 > m && l > mb.x && (g = mb.x)) : ca.min.x !== ca.max.x && (e = j)) : (j < ca.max[a] && (c = i.panEndFriction, h = j - ca.max[a], d = na[a] - ca.max[a]), (0 >= d || m > 0) && _b() > 1 ? (g = l, m > 0 && l < mb.x && (g = mb.x)) : ca.min.x !== ca.max.x && (e = j))) : g = l, \"x\" !== a) ? void(ea || Z || s > f.currItem.fitRatio && (oa[a] += b[a] * c)) : (void 0 !== g && (Ja(g, !0), Z = g === mb.x ? !1 : !0), ca.min.x !== ca.max.x && (void 0 !== e ? oa.x = e : Z || (oa.x += b.x * c)), void 0 !== g)\r\n },\r\n Nb = function (a) {\r\n if (!(\"mousedown\" === a.type && a.button > 0)) {\r\n if (Zb) return void a.preventDefault();\r\n if (!T || \"mousedown\" !== a.type) {\r\n if (Db(a, !0) && a.preventDefault(), Ca(\"pointerDown\"), F) {\r\n var b = e.arraySearch(lb, a.pointerId, \"id\");\r\n 0 > b && (b = lb.length), lb[b] = {\r\n x: a.pageX,\r\n y: a.pageY,\r\n id: a.pointerId\r\n }\r\n }\r\n var c = Lb(a),\r\n d = c.length;\r\n $ = null, bb(), U && 1 !== d || (U = ga = !0, e.bind(window, p, f), R = ja = ha = S = Z = X = V = W = !1, fa = null, Ca(\"firstTouchStart\", c), La(na, oa), ma.x = ma.y = 0, La(jb, c[0]), La(kb, jb), mb.x = sa.x * qa, nb = [{\r\n x: jb.x,\r\n y: jb.y\r\n }], P = O = Da(), Ra(s, !0), yb(), zb()), !_ && d > 1 && !ea && !Z && (t = s, W = !1, _ = V = !0, ma.y = ma.x = 0, La(na, oa), La(gb, c[0]), La(hb, c[1]), Fb(gb, hb, ub), tb.x = Math.abs(ub.x) - oa.x, tb.y = Math.abs(ub.y) - oa.y, aa = ba = xb(gb, hb))\r\n }\r\n }\r\n },\r\n Ob = function (a) {\r\n if (a.preventDefault(), F) {\r\n var b = e.arraySearch(lb, a.pointerId, \"id\");\r\n if (b > -1) {\r\n var c = lb[b];\r\n c.x = a.pageX, c.y = a.pageY\r\n }\r\n }\r\n if (U) {\r\n var d = Lb(a);\r\n if (fa || X || _) $ = d;\r\n else if (sb.x !== sa.x * qa) fa = \"h\";\r\n else {\r\n var f = Math.abs(d[0].x - jb.x) - Math.abs(d[0].y - jb.y);\r\n Math.abs(f) >= fb && (fa = f > 0 ? \"h\" : \"v\", $ = d)\r\n }\r\n }\r\n },\r\n Pb = function () {\r\n if ($) {\r\n var a = $.length;\r\n if (0 !== a)\r\n if (La(gb, $[0]), ib.x = gb.x - jb.x, ib.y = gb.y - jb.y, _ && a > 1) {\r\n if (jb.x = gb.x, jb.y = gb.y, !ib.x && !ib.y && vb($[1], hb)) return;\r\n La(hb, $[1]), W || (W = !0, Ca(\"zoomGestureStarted\"));\r\n var b = xb(gb, hb),\r\n c = Ub(b);\r\n c > f.currItem.initialZoomLevel + f.currItem.initialZoomLevel / 15 && (ja = !0);\r\n var d = 1,\r\n e = Sa(),\r\n g = Ta();\r\n if (e > c)\r\n if (i.pinchToClose && !ja && t <= f.currItem.initialZoomLevel) {\r\n var h = e - c,\r\n j = 1 - h / (e / 1.2);\r\n Ea(j), Ca(\"onPinchClose\", j), ha = !0\r\n } else d = (e - c) / e, d > 1 && (d = 1), c = e - d * (e / 3);\r\n else c > g && (d = (c - g) / (6 * e), d > 1 && (d = 1), c = g + d * e);\r\n 0 > d && (d = 0), aa = b, Fb(gb, hb, qb), ma.x += qb.x - ub.x, ma.y += qb.y - ub.y, La(ub, qb), oa.x = Ka(\"x\", c), oa.y = Ka(\"y\", c), R = c > s, s = c, Ga()\r\n } else {\r\n if (!fa) return;\r\n if (ga && (ga = !1, Math.abs(ib.x) >= fb && (ib.x -= $[0].x - kb.x), Math.abs(ib.y) >= fb && (ib.y -= $[0].y - kb.y)), jb.x = gb.x, jb.y = gb.y, 0 === ib.x && 0 === ib.y) return;\r\n if (\"v\" === fa && i.closeOnVerticalDrag && !Ab()) {\r\n ma.y += ib.y, oa.y += ib.y;\r\n var k = Hb();\r\n return S = !0, Ca(\"onVerticalDrag\", k), Ea(k), void Ga()\r\n }\r\n Gb(Da(), gb.x, gb.y), X = !0, ca = f.currItem.bounds;\r\n var l = Mb(\"x\", ib);\r\n l || (Mb(\"y\", ib), Ma(oa), Ga())\r\n }\r\n }\r\n },\r\n Qb = function (a) {\r\n if (N.isOldAndroid) {\r\n if (T && \"mouseup\" === a.type) return;\r\n a.type.indexOf(\"touch\") > -1 && (clearTimeout(T), T = setTimeout(function () {\r\n T = 0\r\n }, 600))\r\n }\r\n Ca(\"pointerUp\"), Db(a, !1) && a.preventDefault();\r\n var b;\r\n if (F) {\r\n var c = e.arraySearch(lb, a.pointerId, \"id\");\r\n if (c > -1)\r\n if (b = lb.splice(c, 1)[0], navigator.pointerEnabled) b.type = a.pointerType || \"mouse\";\r\n else {\r\n var d = {\r\n 4: \"mouse\",\r\n 2: \"touch\",\r\n 3: \"pen\"\r\n };\r\n b.type = d[a.pointerType], b.type || (b.type = a.pointerType || \"mouse\")\r\n }\r\n }\r\n var g, h = Lb(a),\r\n j = h.length;\r\n if (\"mouseup\" === a.type && (j = 0), 2 === j) return $ = null, !0;\r\n 1 === j && La(kb, h[0]), 0 !== j || fa || ea || (b || (\"mouseup\" === a.type ? b = {\r\n x: a.pageX,\r\n y: a.pageY,\r\n type: \"mouse\"\r\n } : a.changedTouches && a.changedTouches[0] && (b = {\r\n x: a.changedTouches[0].pageX,\r\n y: a.changedTouches[0].pageY,\r\n type: \"touch\"\r\n })), Ca(\"touchRelease\", a, b));\r\n var k = -1;\r\n if (0 === j && (U = !1, e.unbind(window, p, f), yb(), _ ? k = 0 : -1 !== rb && (k = Da() - rb)), rb = 1 === j ? Da() : -1, g = -1 !== k && 150 > k ? \"zoom\" : \"swipe\", _ && 2 > j && (_ = !1, 1 === j && (g = \"zoomPointerUp\"), Ca(\"zoomGestureEnded\")), $ = null, X || W || ea || S)\r\n if (bb(), Q || (Q = Rb()), Q.calculateSwipeSpeed(\"x\"), S) {\r\n var l = Hb();\r\n if (l < i.verticalDragRange) f.close();\r\n else {\r\n var m = oa.y,\r\n n = ia;\r\n cb(\"verticalDrag\", 0, 1, 300, e.easing.cubic.out, function (a) {\r\n oa.y = (f.currItem.initialPosition.y - m) * a + m, Ea((1 - n) * a + n), Ga()\r\n }), Ca(\"onVerticalDrag\", 1)\r\n }\r\n } else {\r\n if ((Z || ea) && 0 === j) {\r\n var o = Tb(g, Q);\r\n if (o) return;\r\n g = \"zoomPointerUp\"\r\n }\r\n if (!ea) return \"swipe\" !== g ? void Vb() : void(!Z && s > f.currItem.fitRatio && Sb(Q))\r\n }\r\n },\r\n Rb = function () {\r\n var a, b, c = {\r\n lastFlickOffset: {},\r\n lastFlickDist: {},\r\n lastFlickSpeed: {},\r\n slowDownRatio: {},\r\n slowDownRatioReverse: {},\r\n speedDecelerationRatio: {},\r\n speedDecelerationRatioAbs: {},\r\n distanceOffset: {},\r\n backAnimDestination: {},\r\n backAnimStarted: {},\r\n calculateSwipeSpeed: function (d) {\r\n nb.length > 1 ? (a = Da() - P + 50, b = nb[nb.length - 2][d]) : (a = Da() - O, b = kb[d]), c.lastFlickOffset[d] = jb[d] - b, c.lastFlickDist[d] = Math.abs(c.lastFlickOffset[d]), c.lastFlickDist[d] > 20 ? c.lastFlickSpeed[d] = c.lastFlickOffset[d] / a : c.lastFlickSpeed[d] = 0, Math.abs(c.lastFlickSpeed[d]) < .1 && (c.lastFlickSpeed[d] = 0), c.slowDownRatio[d] = .95, c.slowDownRatioReverse[d] = 1 - c.slowDownRatio[d], c.speedDecelerationRatio[d] = 1\r\n },\r\n calculateOverBoundsAnimOffset: function (a, b) {\r\n c.backAnimStarted[a] || (oa[a] > ca.min[a] ? c.backAnimDestination[a] = ca.min[a] : oa[a] < ca.max[a] && (c.backAnimDestination[a] = ca.max[a]), void 0 !== c.backAnimDestination[a] && (c.slowDownRatio[a] = .7, c.slowDownRatioReverse[a] = 1 - c.slowDownRatio[a], c.speedDecelerationRatioAbs[a] < .05 && (c.lastFlickSpeed[a] = 0, c.backAnimStarted[a] = !0, cb(\"bounceZoomPan\" + a, oa[a], c.backAnimDestination[a], b || 300, e.easing.sine.out, function (b) {\r\n oa[a] = b, Ga()\r\n }))))\r\n },\r\n calculateAnimOffset: function (a) {\r\n c.backAnimStarted[a] || (c.speedDecelerationRatio[a] = c.speedDecelerationRatio[a] * (c.slowDownRatio[a] + c.slowDownRatioReverse[a] - c.slowDownRatioReverse[a] * c.timeDiff / 10), c.speedDecelerationRatioAbs[a] = Math.abs(c.lastFlickSpeed[a] * c.speedDecelerationRatio[a]), c.distanceOffset[a] = c.lastFlickSpeed[a] * c.speedDecelerationRatio[a] * c.timeDiff, oa[a] += c.distanceOffset[a])\r\n },\r\n panAnimLoop: function () {\r\n return Za.zoomPan && (Za.zoomPan.raf = H(c.panAnimLoop), c.now = Da(), c.timeDiff = c.now - c.lastNow, c.lastNow = c.now, c.calculateAnimOffset(\"x\"), c.calculateAnimOffset(\"y\"), Ga(), c.calculateOverBoundsAnimOffset(\"x\"), c.calculateOverBoundsAnimOffset(\"y\"), c.speedDecelerationRatioAbs.x < .05 && c.speedDecelerationRatioAbs.y < .05) ? (oa.x = Math.round(oa.x), oa.y = Math.round(oa.y), Ga(), void _a(\"zoomPan\")) : void 0\r\n }\r\n };\r\n return c\r\n },\r\n Sb = function (a) {\r\n return a.calculateSwipeSpeed(\"y\"), ca = f.currItem.bounds, a.backAnimDestination = {}, a.backAnimStarted = {}, Math.abs(a.lastFlickSpeed.x) <= .05 && Math.abs(a.lastFlickSpeed.y) <= .05 ? (a.speedDecelerationRatioAbs.x = a.speedDecelerationRatioAbs.y = 0, a.calculateOverBoundsAnimOffset(\"x\"), a.calculateOverBoundsAnimOffset(\"y\"), !0) : (ab(\"zoomPan\"), a.lastNow = Da(), void a.panAnimLoop())\r\n },\r\n Tb = function (a, b) {\r\n var c;\r\n ea || (pb = m);\r\n var d;\r\n if (\"swipe\" === a) {\r\n var g = jb.x - kb.x,\r\n h = b.lastFlickDist.x < 10;\r\n g > eb && (h || b.lastFlickOffset.x > 20) ? d = -1 : -eb > g && (h || b.lastFlickOffset.x < -20) && (d = 1)\r\n }\r\n var j;\r\n d && (m += d, 0 > m ? (m = i.loop ? _b() - 1 : 0, j = !0) : m >= _b() && (m = i.loop ? 0 : _b() - 1, j = !0), (!j || i.loop) && (ta += d, qa -= d, c = !0));\r\n var k, l = sa.x * qa,\r\n n = Math.abs(l - sb.x);\r\n return c || l > sb.x == b.lastFlickSpeed.x > 0 ? (k = Math.abs(b.lastFlickSpeed.x) > 0 ? n / Math.abs(b.lastFlickSpeed.x) : 333, k = Math.min(k, 400), k = Math.max(k, 250)) : k = 333, pb === m && (c = !1), ea = !0, Ca(\"mainScrollAnimStart\"), cb(\"mainScroll\", sb.x, l, k, e.easing.cubic.out, Ja, function () {\r\n bb(), ea = !1, pb = -1, (c || pb !== m) && f.updateCurrItem(), Ca(\"mainScrollAnimComplete\")\r\n }), c && f.updateCurrItem(!0), c\r\n },\r\n Ub = function (a) {\r\n return 1 / ba * a * t\r\n },\r\n Vb = function () {\r\n var a = s,\r\n b = Sa(),\r\n c = Ta();\r\n b > s ? a = b : s > c && (a = c);\r\n var d, g = 1,\r\n h = ia;\r\n return ha && !R && !ja && b > s ? (f.close(), !0) : (ha && (d = function (a) {\r\n Ea((g - h) * a + h)\r\n }), f.zoomTo(a, 0, 200, e.easing.cubic.out, d), !0)\r\n };\r\n ya(\"Gestures\", {\r\n publicMethods: {\r\n initGestures: function () {\r\n var a = function (a, b, c, d, e) {\r\n A = a + b, B = a + c, C = a + d, D = e ? a + e : \"\"\r\n };\r\n F = N.pointerEvent, F && N.touch && (N.touch = !1), F ? navigator.pointerEnabled ? a(\"pointer\", \"down\", \"move\", \"up\", \"cancel\") : a(\"MSPointer\", \"Down\", \"Move\", \"Up\", \"Cancel\") : N.touch ? (a(\"touch\", \"start\", \"move\", \"end\", \"cancel\"), G = !0) : a(\"mouse\", \"down\", \"move\", \"up\"), p = B + \" \" + C + \" \" + D, q = A, F && !G && (G = navigator.maxTouchPoints > 1 || navigator.msMaxTouchPoints > 1), f.likelyTouchDevice = G, r[A] = Nb, r[B] = Ob, r[C] = Qb, D && (r[D] = r[C]), N.touch && (q += \" mousedown\", p += \" mousemove mouseup\", r.mousedown = r[A], r.mousemove = r[B], r.mouseup = r[C]), G || (i.allowPanToNext = !1)\r\n }\r\n }\r\n });\r\n var Wb, Xb, Yb, Zb, $b, _b, ac, bc = function (b, c, d, g) {\r\n Wb && clearTimeout(Wb), Zb = !0, Yb = !0;\r\n var h;\r\n b.initialLayout ? (h = b.initialLayout, b.initialLayout = null) : h = i.getThumbBoundsFn && i.getThumbBoundsFn(m);\r\n var j = d ? i.hideAnimationDuration : i.showAnimationDuration,\r\n k = function () {\r\n _a(\"initialZoom\"), d ? (f.template.removeAttribute(\"style\"), f.bg.removeAttribute(\"style\")) : (Ea(1), c && (c.style.display = \"block\"), e.addClass(a, \"pswp--animated-in\"), Ca(\"initialZoom\" + (d ? \"OutEnd\" : \"InEnd\"))), g && g(), Zb = !1\r\n };\r\n if (!j || !h || void 0 === h.x) return Ca(\"initialZoom\" + (d ? \"Out\" : \"In\")), s = b.initialZoomLevel, La(oa, b.initialPosition), Ga(), a.style.opacity = d ? 0 : 1, Ea(1), void(j ? setTimeout(function () {\r\n k()\r\n }, j) : k());\r\n var n = function () {\r\n var c = l,\r\n g = !f.currItem.src || f.currItem.loadError || i.showHideOpacity;\r\n b.miniImg && (b.miniImg.style.webkitBackfaceVisibility = \"hidden\"), d || (s = h.w / b.w, oa.x = h.x, oa.y = h.y - K, f[g ? \"template\" : \"bg\"].style.opacity = .001, Ga()), ab(\"initialZoom\"), d && !c && e.removeClass(a, \"pswp--animated-in\"), g && (d ? e[(c ? \"remove\" : \"add\") + \"Class\"](a, \"pswp--animate_opacity\") : setTimeout(function () {\r\n e.addClass(a, \"pswp--animate_opacity\")\r\n }, 30)), Wb = setTimeout(function () {\r\n if (Ca(\"initialZoom\" + (d ? \"Out\" : \"In\")), d) {\r\n var f = h.w / b.w,\r\n i = {\r\n x: oa.x,\r\n y: oa.y\r\n },\r\n l = s,\r\n m = ia,\r\n n = function (b) {\r\n 1 === b ? (s = f, oa.x = h.x, oa.y = h.y - M) : (s = (f - l) * b + l, oa.x = (h.x - i.x) * b + i.x, oa.y = (h.y - M - i.y) * b + i.y), Ga(), g ? a.style.opacity = 1 - b : Ea(m - b * m)\r\n };\r\n c ? cb(\"initialZoom\", 0, 1, j, e.easing.cubic.out, n, k) : (n(1), Wb = setTimeout(k, j + 20))\r\n } else s = b.initialZoomLevel, La(oa, b.initialPosition), Ga(), Ea(1), g ? a.style.opacity = 1 : Ea(1), Wb = setTimeout(k, j + 20)\r\n }, d ? 25 : 90)\r\n };\r\n n()\r\n },\r\n cc = {},\r\n dc = [],\r\n ec = {\r\n index: 0,\r\n errorMsg: '
      The image could not be loaded.
      ',\r\n forceProgressiveLoading: !1,\r\n preload: [1, 1],\r\n getNumItemsFn: function () {\r\n return Xb.length\r\n }\r\n },\r\n fc = function () {\r\n return {\r\n center: {\r\n x: 0,\r\n y: 0\r\n },\r\n max: {\r\n x: 0,\r\n y: 0\r\n },\r\n min: {\r\n x: 0,\r\n y: 0\r\n }\r\n }\r\n },\r\n gc = function (a, b, c) {\r\n var d = a.bounds;\r\n d.center.x = Math.round((cc.x - b) / 2), d.center.y = Math.round((cc.y - c) / 2) + a.vGap.top, d.max.x = b > cc.x ? Math.round(cc.x - b) : d.center.x, d.max.y = c > cc.y ? Math.round(cc.y - c) + a.vGap.top : d.center.y, d.min.x = b > cc.x ? 0 : d.center.x, d.min.y = c > cc.y ? a.vGap.top : d.center.y\r\n },\r\n hc = function (a, b, c) {\r\n if (a.src && !a.loadError) {\r\n var d = !c;\r\n if (d && (a.vGap || (a.vGap = {\r\n top: 0,\r\n bottom: 0\r\n }), Ca(\"parseVerticalMargin\", a)), cc.x = b.x, cc.y = b.y - a.vGap.top - a.vGap.bottom, d) {\r\n var e = cc.x / a.w,\r\n f = cc.y / a.h;\r\n a.fitRatio = f > e ? e : f;\r\n var g = i.scaleMode;\r\n \"orig\" === g ? c = 1 : \"fit\" === g && (c = a.fitRatio), c > 1 && (c = 1), a.initialZoomLevel = c, a.bounds || (a.bounds = fc())\r\n }\r\n if (!c) return;\r\n return gc(a, a.w * c, a.h * c), d && c === a.initialZoomLevel && (a.initialPosition = a.bounds.center), a.bounds\r\n }\r\n return a.w = a.h = 0, a.initialZoomLevel = a.fitRatio = 1, a.bounds = fc(), a.initialPosition = a.bounds.center, a.bounds\r\n },\r\n ic = function (a, b, c, d, e, g) {\r\n b.loadError || d && (b.imageAppended = !0, lc(b, d, b === f.currItem && xa), c.appendChild(d), g && setTimeout(function () {\r\n b && b.loaded && b.placeholder && (b.placeholder.style.display = \"none\", b.placeholder = null)\r\n }, 500))\r\n },\r\n jc = function (a) {\r\n a.loading = !0, a.loaded = !1;\r\n var b = a.img = e.createEl(\"pswp__img\", \"img\"),\r\n c = function () {\r\n a.loading = !1, a.loaded = !0, a.loadComplete ? a.loadComplete(a) : a.img = null, b.onload = b.onerror = null, b = null\r\n };\r\n return b.onload = c, b.onerror = function () {\r\n a.loadError = !0, c()\r\n }, b.src = a.src, b\r\n },\r\n kc = function (a, b) {\r\n return a.src && a.loadError && a.container ? (b && (a.container.innerHTML = \"\"), a.container.innerHTML = i.errorMsg.replace(\"%url%\", a.src), !0) : void 0\r\n },\r\n lc = function (a, b, c) {\r\n if (a.src) {\r\n b || (b = a.container.lastChild);\r\n var d = c ? a.w : Math.round(a.w * a.fitRatio),\r\n e = c ? a.h : Math.round(a.h * a.fitRatio);\r\n a.placeholder && !a.loaded && (a.placeholder.style.width = d + \"px\", a.placeholder.style.height = e + \"px\"), b.style.width = d + \"px\", b.style.height = e + \"px\"\r\n }\r\n },\r\n mc = function () {\r\n if (dc.length) {\r\n for (var a, b = 0; b < dc.length; b++) a = dc[b], a.holder.index === a.index && ic(a.index, a.item, a.baseDiv, a.img, !1, a.clearPlaceholder);\r\n dc = []\r\n }\r\n };\r\n ya(\"Controller\", {\r\n publicMethods: {\r\n lazyLoadItem: function (a) {\r\n a = za(a);\r\n var b = $b(a);\r\n b && (!b.loaded && !b.loading || x) && (Ca(\"gettingData\", a, b), b.src && jc(b))\r\n },\r\n initController: function () {\r\n e.extend(i, ec, !0), f.items = Xb = c, $b = f.getItemAt, _b = i.getNumItemsFn, ac = i.loop, _b() < 3 && (i.loop = !1), Ba(\"beforeChange\", function (a) {\r\n var b, c = i.preload,\r\n d = null === a ? !0 : a >= 0,\r\n e = Math.min(c[0], _b()),\r\n g = Math.min(c[1], _b());\r\n for (b = 1;\r\n (d ? g : e) >= b; b++) f.lazyLoadItem(m + b);\r\n for (b = 1;\r\n (d ? e : g) >= b; b++) f.lazyLoadItem(m - b)\r\n }), Ba(\"initialLayout\", function () {\r\n f.currItem.initialLayout = i.getThumbBoundsFn && i.getThumbBoundsFn(m)\r\n }), Ba(\"mainScrollAnimComplete\", mc), Ba(\"initialZoomInEnd\", mc), Ba(\"destroy\", function () {\r\n for (var a, b = 0; b < Xb.length; b++) a = Xb[b], a.container && (a.container = null), a.placeholder && (a.placeholder = null), a.img && (a.img = null), a.preloader && (a.preloader = null), a.loadError && (a.loaded = a.loadError = !1);\r\n dc = null\r\n })\r\n },\r\n getItemAt: function (a) {\r\n return a >= 0 && void 0 !== Xb[a] ? Xb[a] : !1\r\n },\r\n allowProgressiveImg: function () {\r\n return i.forceProgressiveLoading || !G || i.mouseUsed || screen.width > 1200\r\n },\r\n setContent: function (a, b) {\r\n i.loop && (b = za(b));\r\n var c = f.getItemAt(a.index);\r\n c && (c.container = null);\r\n var d, g = f.getItemAt(b);\r\n if (!g) return void(a.el.innerHTML = \"\");\r\n Ca(\"gettingData\", b, g), a.index = b, a.item = g;\r\n var h = g.container = e.createEl(\"pswp__zoom-wrap\");\r\n if (!g.src && g.html && (g.html.tagName ? h.appendChild(g.html) : h.innerHTML = g.html), kc(g), hc(g, pa), !g.src || g.loadError || g.loaded) g.src && !g.loadError && (d = e.createEl(\"pswp__img\", \"img\"), d.style.opacity = 1, d.src = g.src, lc(g, d), ic(b, g, h, d, !0));\r\n else {\r\n if (g.loadComplete = function (c) {\r\n if (j) {\r\n if (a && a.index === b) {\r\n if (kc(c, !0)) return c.loadComplete = c.img = null, hc(c, pa), Ha(c), void(a.index === m && f.updateCurrZoomItem());\r\n c.imageAppended ? !Zb && c.placeholder && (c.placeholder.style.display = \"none\", c.placeholder = null) : N.transform && (ea || Zb) ? dc.push({\r\n item: c,\r\n baseDiv: h,\r\n img: c.img,\r\n index: b,\r\n holder: a,\r\n clearPlaceholder: !0\r\n }) : ic(b, c, h, c.img, ea || Zb, !0)\r\n }\r\n c.loadComplete = null, c.img = null, Ca(\"imageLoadComplete\", b, c)\r\n }\r\n }, e.features.transform) {\r\n var k = \"pswp__img pswp__img--placeholder\";\r\n k += g.msrc ? \"\" : \" pswp__img--placeholder--blank\";\r\n var l = e.createEl(k, g.msrc ? \"img\" : \"\");\r\n g.msrc && (l.src = g.msrc), lc(g, l), h.appendChild(l), g.placeholder = l\r\n }\r\n g.loading || jc(g), f.allowProgressiveImg() && (!Yb && N.transform ? dc.push({\r\n item: g,\r\n baseDiv: h,\r\n img: g.img,\r\n index: b,\r\n holder: a\r\n }) : ic(b, g, h, g.img, !0, !0))\r\n }\r\n Yb || b !== m ? Ha(g) : (da = h.style, bc(g, d || g.img)), a.el.innerHTML = \"\", a.el.appendChild(h)\r\n },\r\n cleanSlide: function (a) {\r\n a.img && (a.img.onload = a.img.onerror = null), a.loaded = a.loading = a.img = a.imageAppended = !1\r\n }\r\n }\r\n });\r\n var nc, oc = {},\r\n pc = function (a, b, c) {\r\n var d = document.createEvent(\"CustomEvent\"),\r\n e = {\r\n origEvent: a,\r\n target: a.target,\r\n releasePoint: b,\r\n pointerType: c || \"touch\"\r\n };\r\n d.initCustomEvent(\"pswpTap\", !0, !0, e), a.target.dispatchEvent(d)\r\n };\r\n ya(\"Tap\", {\r\n publicMethods: {\r\n initTap: function () {\r\n Ba(\"firstTouchStart\", f.onTapStart), Ba(\"touchRelease\", f.onTapRelease), Ba(\"destroy\", function () {\r\n oc = {}, nc = null\r\n })\r\n },\r\n onTapStart: function (a) {\r\n a.length > 1 && (clearTimeout(nc), nc = null)\r\n },\r\n onTapRelease: function (a, b) {\r\n if (b && !X && !V && !$a) {\r\n var c = b;\r\n if (nc && (clearTimeout(nc), nc = null, wb(c, oc))) return void Ca(\"doubleTap\", c);\r\n if (\"mouse\" === b.type) return void pc(a, b, \"mouse\");\r\n var d = a.target.tagName.toUpperCase();\r\n if (\"BUTTON\" === d || e.hasClass(a.target, \"pswp__single-tap\")) return void pc(a, b);\r\n La(oc, c), nc = setTimeout(function () {\r\n pc(a, b), nc = null\r\n }, 300)\r\n }\r\n }\r\n }\r\n });\r\n var qc;\r\n ya(\"DesktopZoom\", {\r\n publicMethods: {\r\n initDesktopZoom: function () {\r\n L || (G ? Ba(\"mouseUsed\", function () {\r\n f.setupDesktopZoom()\r\n }) : f.setupDesktopZoom(!0))\r\n },\r\n setupDesktopZoom: function (b) {\r\n qc = {};\r\n var c = \"wheel mousewheel DOMMouseScroll\";\r\n Ba(\"bindEvents\", function () {\r\n e.bind(a, c, f.handleMouseWheel)\r\n }), Ba(\"unbindEvents\", function () {\r\n qc && e.unbind(a, c, f.handleMouseWheel)\r\n }), f.mouseZoomedIn = !1;\r\n var d, g = function () {\r\n f.mouseZoomedIn && (e.removeClass(a, \"pswp--zoomed-in\"), f.mouseZoomedIn = !1), 1 > s ? e.addClass(a, \"pswp--zoom-allowed\") : e.removeClass(a, \"pswp--zoom-allowed\"), h()\r\n },\r\n h = function () {\r\n d && (e.removeClass(a, \"pswp--dragging\"), d = !1)\r\n };\r\n Ba(\"resize\", g), Ba(\"afterChange\", g), Ba(\"pointerDown\", function () {\r\n f.mouseZoomedIn && (d = !0, e.addClass(a, \"pswp--dragging\"))\r\n }), Ba(\"pointerUp\", h), b || g()\r\n },\r\n handleMouseWheel: function (a) {\r\n if (s <= f.currItem.fitRatio) return i.modal && (!i.closeOnScroll || $a || U ? a.preventDefault() : E && Math.abs(a.deltaY) > 2 && (l = !0, f.close())), !0;\r\n if (a.stopPropagation(), qc.x = 0, \"deltaX\" in a) 1 === a.deltaMode ? (qc.x = 18 * a.deltaX, qc.y = 18 * a.deltaY) : (qc.x = a.deltaX, qc.y = a.deltaY);\r\n else if (\"wheelDelta\" in a) a.wheelDeltaX && (qc.x = -.16 * a.wheelDeltaX), a.wheelDeltaY ? qc.y = -.16 * a.wheelDeltaY : qc.y = -.16 * a.wheelDelta;\r\n else {\r\n if (!(\"detail\" in a)) return;\r\n qc.y = a.detail\r\n }\r\n Ra(s, !0);\r\n var b = oa.x - qc.x,\r\n c = oa.y - qc.y;\r\n (i.modal || b <= ca.min.x && b >= ca.max.x && c <= ca.min.y && c >= ca.max.y) && a.preventDefault(), f.panTo(b, c)\r\n },\r\n toggleDesktopZoom: function (b) {\r\n b = b || {\r\n x: pa.x / 2 + ra.x,\r\n y: pa.y / 2 + ra.y\r\n };\r\n var c = i.getDoubleTapZoom(!0, f.currItem),\r\n d = s === c;\r\n f.mouseZoomedIn = !d, f.zoomTo(d ? f.currItem.initialZoomLevel : c, b, 333), e[(d ? \"remove\" : \"add\") + \"Class\"](a, \"pswp--zoomed-in\")\r\n }\r\n }\r\n });\r\n var rc, sc, tc, uc, vc, wc, xc, yc, zc, Ac, Bc, Cc, Dc = {\r\n history: !0,\r\n galleryUID: 1\r\n },\r\n Ec = function () {\r\n return Bc.hash.substring(1)\r\n },\r\n Fc = function () {\r\n rc && clearTimeout(rc), tc && clearTimeout(tc)\r\n },\r\n Gc = function () {\r\n var a = Ec(),\r\n b = {};\r\n if (a.length < 5) return b;\r\n var c, d = a.split(\"&\");\r\n for (c = 0; c < d.length; c++)\r\n if (d[c]) {\r\n var e = d[c].split(\"=\");\r\n e.length < 2 || (b[e[0]] = e[1])\r\n }\r\n if (i.galleryPIDs) {\r\n var f = b.pid;\r\n for (b.pid = 0, c = 0; c < Xb.length; c++)\r\n if (Xb[c].pid === f) {\r\n b.pid = c;\r\n break\r\n }\r\n } else b.pid = parseInt(b.pid, 10) - 1;\r\n return b.pid < 0 && (b.pid = 0), b\r\n },\r\n Hc = function () {\r\n if (tc && clearTimeout(tc), $a || U) return void(tc = setTimeout(Hc, 500));\r\n uc ? clearTimeout(sc) : uc = !0;\r\n var a = m + 1,\r\n b = $b(m);\r\n b.hasOwnProperty(\"pid\") && (a = b.pid);\r\n var c = xc + \"&gid=\" + i.galleryUID + \"&pid=\" + a;\r\n yc || -1 === Bc.hash.indexOf(c) && (Ac = !0);\r\n var d = Bc.href.split(\"#\")[0] + \"#\" + c;\r\n Cc ? \"#\" + c !== window.location.hash && history[yc ? \"replaceState\" : \"pushState\"](\"\", document.title, d) : yc ? Bc.replace(d) : Bc.hash = c, yc = !0, sc = setTimeout(function () {\r\n uc = !1\r\n }, 60)\r\n };\r\n ya(\"History\", {\r\n publicMethods: {\r\n initHistory: function () {\r\n if (e.extend(i, Dc, !0), i.history) {\r\n Bc = window.location, Ac = !1, zc = !1, yc = !1, xc = Ec(), Cc = \"pushState\" in history, xc.indexOf(\"gid=\") > -1 && (xc = xc.split(\"&gid=\")[0], xc = xc.split(\"?gid=\")[0]), Ba(\"afterChange\", f.updateURL), Ba(\"unbindEvents\", function () {\r\n e.unbind(window, \"hashchange\", f.onHashChange)\r\n });\r\n var a = function () {\r\n wc = !0, zc || (Ac ? history.back() : xc ? Bc.hash = xc : Cc ? history.pushState(\"\", document.title, Bc.pathname + Bc.search) : Bc.hash = \"\"), Fc()\r\n };\r\n Ba(\"unbindEvents\", function () {\r\n l && a()\r\n }), Ba(\"destroy\", function () {\r\n wc || a()\r\n }), Ba(\"firstUpdate\", function () {\r\n m = Gc().pid\r\n });\r\n var b = xc.indexOf(\"pid=\");\r\n b > -1 && (xc = xc.substring(0, b), \"&\" === xc.slice(-1) && (xc = xc.slice(0, -1))), setTimeout(function () {\r\n j && e.bind(window, \"hashchange\", f.onHashChange)\r\n }, 40)\r\n }\r\n },\r\n onHashChange: function () {\r\n return Ec() === xc ? (zc = !0, void f.close()) : void(uc || (vc = !0, f.goTo(Gc().pid), vc = !1))\r\n },\r\n updateURL: function () {\r\n Fc(), vc || (yc ? rc = setTimeout(Hc, 800) : Hc())\r\n }\r\n }\r\n }), e.extend(f, db)\r\n };\r\n return a\r\n});\r\n\r\n/*! PhotoSwipe Default UI - 4.1.1 - 2015-12-24\r\n * http://photoswipe.com\r\n * Copyright (c) 2015 Dmitry Semenov; */\r\n! function (a, b) {\r\n \"function\" == typeof define && define.amd ? define(b) : \"object\" == typeof exports ? module.exports = b() : window.PhotoSwipeUI_Default = b()\r\n}(this, function () {\r\n \"use strict\";\r\n var a = function (a, b) {\r\n var c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v = this,\r\n w = !1,\r\n x = !0,\r\n y = !0,\r\n z = {\r\n barsSize: {\r\n top: 44,\r\n bottom: \"auto\"\r\n },\r\n closeElClasses: [\"item\", \"caption\", \"zoom-wrap\", \"ui\", \"top-bar\"],\r\n timeToIdle: 4e3,\r\n timeToIdleOutside: 1e3,\r\n loadingIndicatorDelay: 1e3,\r\n addCaptionHTMLFn: function (a, b) {\r\n return a.title ? (b.children[0].innerHTML = a.title, !0) : (b.children[0].innerHTML = \"\", !1)\r\n },\r\n closeEl: !0,\r\n captionEl: !0,\r\n fullscreenEl: !0,\r\n zoomEl: !0,\r\n shareEl: !0,\r\n counterEl: !0,\r\n arrowEl: !0,\r\n preloaderEl: !0,\r\n tapToClose: !1,\r\n tapToToggleControls: !0,\r\n clickToCloseNonZoomable: !0,\r\n shareButtons: [{\r\n id: \"facebook\",\r\n label: \"Share on Facebook\",\r\n url: \"https://www.facebook.com/sharer/sharer.php?u={{url}}\"\r\n }, {\r\n id: \"twitter\",\r\n label: \"Tweet\",\r\n url: \"https://twitter.com/intent/tweet?text={{text}}&url={{url}}\"\r\n }, {\r\n id: \"pinterest\",\r\n label: \"Pin it\",\r\n url: \"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}\"\r\n }, {\r\n id: \"download\",\r\n label: \"Download image\",\r\n url: \"{{raw_image_url}}\",\r\n download: !0\r\n }],\r\n getImageURLForShare: function () {\r\n return a.currItem.src || \"\"\r\n },\r\n getPageURLForShare: function () {\r\n return window.location.href\r\n },\r\n getTextForShare: function () {\r\n return a.currItem.title || \"\"\r\n },\r\n indexIndicatorSep: \" / \",\r\n fitControlsWidth: 1200\r\n },\r\n A = function (a) {\r\n if (r) return !0;\r\n a = a || window.event, q.timeToIdle && q.mouseUsed && !k && K();\r\n for (var c, d, e = a.target || a.srcElement, f = e.getAttribute(\"class\") || \"\", g = 0; g < S.length; g++) c = S[g], c.onTap && f.indexOf(\"pswp__\" + c.name) > -1 && (c.onTap(), d = !0);\r\n if (d) {\r\n a.stopPropagation && a.stopPropagation(), r = !0;\r\n var h = b.features.isOldAndroid ? 600 : 30;\r\n s = setTimeout(function () {\r\n r = !1\r\n }, h)\r\n }\r\n },\r\n B = function () {\r\n return !a.likelyTouchDevice || q.mouseUsed || screen.width > q.fitControlsWidth\r\n },\r\n C = function (a, c, d) {\r\n b[(d ? \"add\" : \"remove\") + \"Class\"](a, \"pswp__\" + c)\r\n },\r\n D = function () {\r\n var a = 1 === q.getNumItemsFn();\r\n a !== p && (C(d, \"ui--one-slide\", a), p = a)\r\n },\r\n E = function () {\r\n C(i, \"share-modal--hidden\", y)\r\n },\r\n F = function () {\r\n return y = !y, y ? (b.removeClass(i, \"pswp__share-modal--fade-in\"), setTimeout(function () {\r\n y && E()\r\n }, 300)) : (E(), setTimeout(function () {\r\n y || b.addClass(i, \"pswp__share-modal--fade-in\")\r\n }, 30)), y || H(), !1\r\n },\r\n G = function (b) {\r\n b = b || window.event;\r\n var c = b.target || b.srcElement;\r\n return a.shout(\"shareLinkClick\", b, c), c.href ? c.hasAttribute(\"download\") ? !0 : (window.open(c.href, \"pswp_share\", \"scrollbars=yes,resizable=yes,toolbar=no,location=yes,width=550,height=420,top=100,left=\" + (window.screen ? Math.round(screen.width / 2 - 275) : 100)), y || F(), !1) : !1\r\n },\r\n H = function () {\r\n for (var a, b, c, d, e, f = \"\", g = 0; g < q.shareButtons.length; g++) a = q.shareButtons[g], c = q.getImageURLForShare(a), d = q.getPageURLForShare(a), e = q.getTextForShare(a), b = a.url.replace(\"{{url}}\", encodeURIComponent(d)).replace(\"{{image_url}}\", encodeURIComponent(c)).replace(\"{{raw_image_url}}\", c).replace(\"{{text}}\", encodeURIComponent(e)), f += '\", q.parseShareButtonOut && (f = q.parseShareButtonOut(a, f));\r\n i.children[0].innerHTML = f, i.children[0].onclick = G\r\n },\r\n I = function (a) {\r\n for (var c = 0; c < q.closeElClasses.length; c++)\r\n if (b.hasClass(a, \"pswp__\" + q.closeElClasses[c])) return !0\r\n },\r\n J = 0,\r\n K = function () {\r\n clearTimeout(u), J = 0, k && v.setIdle(!1)\r\n },\r\n L = function (a) {\r\n a = a ? a : window.event;\r\n var b = a.relatedTarget || a.toElement;\r\n b && \"HTML\" !== b.nodeName || (clearTimeout(u), u = setTimeout(function () {\r\n v.setIdle(!0)\r\n }, q.timeToIdleOutside))\r\n },\r\n M = function () {\r\n q.fullscreenEl && !b.features.isOldAndroid && (c || (c = v.getFullscreenAPI()), c ? (b.bind(document, c.eventK, v.updateFullscreen), v.updateFullscreen(), b.addClass(a.template, \"pswp--supports-fs\")) : b.removeClass(a.template, \"pswp--supports-fs\"))\r\n },\r\n N = function () {\r\n q.preloaderEl && (O(!0), l(\"beforeChange\", function () {\r\n clearTimeout(o), o = setTimeout(function () {\r\n a.currItem && a.currItem.loading ? (!a.allowProgressiveImg() || a.currItem.img && !a.currItem.img.naturalWidth) && O(!1) : O(!0)\r\n }, q.loadingIndicatorDelay)\r\n }), l(\"imageLoadComplete\", function (b, c) {\r\n a.currItem === c && O(!0)\r\n }))\r\n },\r\n O = function (a) {\r\n n !== a && (C(m, \"preloader--active\", !a), n = a)\r\n },\r\n P = function (a) {\r\n var c = a.vGap;\r\n if (B()) {\r\n var g = q.barsSize;\r\n if (q.captionEl && \"auto\" === g.bottom)\r\n if (f || (f = b.createEl(\"pswp__caption pswp__caption--fake\"), f.appendChild(b.createEl(\"pswp__caption__center\")), d.insertBefore(f, e), b.addClass(d, \"pswp__ui--fit\")), q.addCaptionHTMLFn(a, f, !0)) {\r\n var h = f.clientHeight;\r\n c.bottom = parseInt(h, 10) || 44\r\n } else c.bottom = g.top;\r\n else c.bottom = \"auto\" === g.bottom ? 0 : g.bottom;\r\n c.top = g.top\r\n } else c.top = c.bottom = 0\r\n },\r\n Q = function () {\r\n q.timeToIdle && l(\"mouseUsed\", function () {\r\n b.bind(document, \"mousemove\", K), b.bind(document, \"mouseout\", L), t = setInterval(function () {\r\n J++, 2 === J && v.setIdle(!0)\r\n }, q.timeToIdle / 2)\r\n })\r\n },\r\n R = function () {\r\n l(\"onVerticalDrag\", function (a) {\r\n x && .95 > a ? v.hideControls() : !x && a >= .95 && v.showControls()\r\n });\r\n var a;\r\n l(\"onPinchClose\", function (b) {\r\n x && .9 > b ? (v.hideControls(), a = !0) : a && !x && b > .9 && v.showControls()\r\n }), l(\"zoomGestureEnded\", function () {\r\n a = !1, a && !x && v.showControls()\r\n })\r\n },\r\n S = [{\r\n name: \"caption\",\r\n option: \"captionEl\",\r\n onInit: function (a) {\r\n e = a\r\n }\r\n }, {\r\n name: \"share-modal\",\r\n option: \"shareEl\",\r\n onInit: function (a) {\r\n i = a\r\n },\r\n onTap: function () {\r\n F()\r\n }\r\n }, {\r\n name: \"button--share\",\r\n option: \"shareEl\",\r\n onInit: function (a) {\r\n h = a\r\n },\r\n onTap: function () {\r\n F()\r\n }\r\n }, {\r\n name: \"button--zoom\",\r\n option: \"zoomEl\",\r\n onTap: a.toggleDesktopZoom\r\n }, {\r\n name: \"counter\",\r\n option: \"counterEl\",\r\n onInit: function (a) {\r\n g = a\r\n }\r\n }, {\r\n name: \"button--close\",\r\n option: \"closeEl\",\r\n onTap: a.close\r\n }, {\r\n name: \"button--arrow--left\",\r\n option: \"arrowEl\",\r\n onTap: a.prev\r\n }, {\r\n name: \"button--arrow--right\",\r\n option: \"arrowEl\",\r\n onTap: a.next\r\n }, {\r\n name: \"button--fs\",\r\n option: \"fullscreenEl\",\r\n onTap: function () {\r\n c.isFullscreen() ? c.exit() : c.enter()\r\n }\r\n }, {\r\n name: \"preloader\",\r\n option: \"preloaderEl\",\r\n onInit: function (a) {\r\n m = a\r\n }\r\n }],\r\n T = function () {\r\n var a, c, e, f = function (d) {\r\n if (d)\r\n for (var f = d.length, g = 0; f > g; g++) {\r\n a = d[g], c = a.className;\r\n for (var h = 0; h < S.length; h++) e = S[h], c.indexOf(\"pswp__\" + e.name) > -1 && (q[e.option] ? (b.removeClass(a, \"pswp__element--disabled\"), e.onInit && e.onInit(a)) : b.addClass(a, \"pswp__element--disabled\"))\r\n }\r\n };\r\n f(d.children);\r\n var g = b.getChildByClass(d, \"pswp__top-bar\");\r\n g && f(g.children)\r\n };\r\n v.init = function () {\r\n b.extend(a.options, z, !0), q = a.options, d = b.getChildByClass(a.scrollWrap, \"pswp__ui\"), l = a.listen, R(), l(\"beforeChange\", v.update), l(\"doubleTap\", function (b) {\r\n var c = a.currItem.initialZoomLevel;\r\n a.getZoomLevel() !== c ? a.zoomTo(c, b, 333) : a.zoomTo(q.getDoubleTapZoom(!1, a.currItem), b, 333)\r\n }), l(\"preventDragEvent\", function (a, b, c) {\r\n var d = a.target || a.srcElement;\r\n d && d.getAttribute(\"class\") && a.type.indexOf(\"mouse\") > -1 && (d.getAttribute(\"class\").indexOf(\"__caption\") > 0 || /(SMALL|STRONG|EM)/i.test(d.tagName)) && (c.prevent = !1)\r\n }), l(\"bindEvents\", function () {\r\n b.bind(d, \"pswpTap click\", A), b.bind(a.scrollWrap, \"pswpTap\", v.onGlobalTap), a.likelyTouchDevice || b.bind(a.scrollWrap, \"mouseover\", v.onMouseOver)\r\n }), l(\"unbindEvents\", function () {\r\n y || F(), t && clearInterval(t), b.unbind(document, \"mouseout\", L), b.unbind(document, \"mousemove\", K), b.unbind(d, \"pswpTap click\", A), b.unbind(a.scrollWrap, \"pswpTap\", v.onGlobalTap), b.unbind(a.scrollWrap, \"mouseover\", v.onMouseOver), c && (b.unbind(document, c.eventK, v.updateFullscreen), c.isFullscreen() && (q.hideAnimationDuration = 0, c.exit()), c = null)\r\n }), l(\"destroy\", function () {\r\n q.captionEl && (f && d.removeChild(f), b.removeClass(e, \"pswp__caption--empty\")), i && (i.children[0].onclick = null), b.removeClass(d, \"pswp__ui--over-close\"), b.addClass(d, \"pswp__ui--hidden\"), v.setIdle(!1)\r\n }), q.showAnimationDuration || b.removeClass(d, \"pswp__ui--hidden\"), l(\"initialZoomIn\", function () {\r\n q.showAnimationDuration && b.removeClass(d, \"pswp__ui--hidden\")\r\n }), l(\"initialZoomOut\", function () {\r\n b.addClass(d, \"pswp__ui--hidden\")\r\n }), l(\"parseVerticalMargin\", P), T(), q.shareEl && h && i && (y = !0), D(), Q(), M(), N()\r\n }, v.setIdle = function (a) {\r\n k = a, C(d, \"ui--idle\", a)\r\n }, v.update = function () {\r\n x && a.currItem ? (v.updateIndexIndicator(), q.captionEl && (q.addCaptionHTMLFn(a.currItem, e), C(e, \"caption--empty\", !a.currItem.title)), w = !0) : w = !1, y || F(), D()\r\n }, v.updateFullscreen = function (d) {\r\n d && setTimeout(function () {\r\n a.setScrollOffset(0, b.getScrollY())\r\n }, 50), b[(c.isFullscreen() ? \"add\" : \"remove\") + \"Class\"](a.template, \"pswp--fs\")\r\n }, v.updateIndexIndicator = function () {\r\n q.counterEl && (g.innerHTML = a.getCurrentIndex() + 1 + q.indexIndicatorSep + q.getNumItemsFn())\r\n }, v.onGlobalTap = function (c) {\r\n c = c || window.event;\r\n var d = c.target || c.srcElement;\r\n if (!r)\r\n if (c.detail && \"mouse\" === c.detail.pointerType) {\r\n if (I(d)) return void a.close();\r\n b.hasClass(d, \"pswp__img\") && (1 === a.getZoomLevel() && a.getZoomLevel() <= a.currItem.fitRatio ? q.clickToCloseNonZoomable && a.close() : a.toggleDesktopZoom(c.detail.releasePoint))\r\n } else if (q.tapToToggleControls && (x ? v.hideControls() : v.showControls()), q.tapToClose && (b.hasClass(d, \"pswp__img\") || I(d))) return void a.close()\r\n }, v.onMouseOver = function (a) {\r\n a = a || window.event;\r\n var b = a.target || a.srcElement;\r\n C(d, \"ui--over-close\", I(b))\r\n }, v.hideControls = function () {\r\n b.addClass(d, \"pswp__ui--hidden\"), x = !1\r\n }, v.showControls = function () {\r\n x = !0, w || v.update(), b.removeClass(d, \"pswp__ui--hidden\")\r\n }, v.supportsFullscreen = function () {\r\n var a = document;\r\n return !!(a.exitFullscreen || a.mozCancelFullScreen || a.webkitExitFullscreen || a.msExitFullscreen)\r\n }, v.getFullscreenAPI = function () {\r\n var b, c = document.documentElement,\r\n d = \"fullscreenchange\";\r\n return c.requestFullscreen ? b = {\r\n enterK: \"requestFullscreen\",\r\n exitK: \"exitFullscreen\",\r\n elementK: \"fullscreenElement\",\r\n eventK: d\r\n } : c.mozRequestFullScreen ? b = {\r\n enterK: \"mozRequestFullScreen\",\r\n exitK: \"mozCancelFullScreen\",\r\n elementK: \"mozFullScreenElement\",\r\n eventK: \"moz\" + d\r\n } : c.webkitRequestFullscreen ? b = {\r\n enterK: \"webkitRequestFullscreen\",\r\n exitK: \"webkitExitFullscreen\",\r\n elementK: \"webkitFullscreenElement\",\r\n eventK: \"webkit\" + d\r\n } : c.msRequestFullscreen && (b = {\r\n enterK: \"msRequestFullscreen\",\r\n exitK: \"msExitFullscreen\",\r\n elementK: \"msFullscreenElement\",\r\n eventK: \"MSFullscreenChange\"\r\n }), b && (b.enter = function () {\r\n return j = q.closeOnScroll, q.closeOnScroll = !1, \"webkitRequestFullscreen\" !== this.enterK ? a.template[this.enterK]() : void a.template[this.enterK](Element.ALLOW_KEYBOARD_INPUT)\r\n }, b.exit = function () {\r\n return q.closeOnScroll = j, document[this.exitK]()\r\n }, b.isFullscreen = function () {\r\n return document[this.elementK]\r\n }), b\r\n }\r\n };\r\n return a\r\n});\r\n\r\nvar initPhotoSwipeFromDOM = function (gallerySelector) {\r\n\r\n // parse slide data (url, title, size ...) from DOM elements \r\n // (children of gallerySelector)\r\n var parseThumbnailElements = function (el) {\r\n var thumbElements = el.childNodes,\r\n numNodes = thumbElements.length,\r\n items = [],\r\n figureEl,\r\n linkEl,\r\n size,\r\n item;\r\n\r\n for (var i = 0; i < numNodes; i++) {\r\n\r\n figureEl = thumbElements[i]; //
      element\r\n\r\n // include only element nodes \r\n if (figureEl.nodeType !== 1) {\r\n continue;\r\n }\r\n\r\n linkEl = figureEl.children[0]; // element\r\n\r\n size = linkEl.getAttribute('data-size').split('x');\r\n\r\n // create slide object\r\n item = {\r\n src: linkEl.getAttribute('href'),\r\n w: parseInt(size[0], 10),\r\n h: parseInt(size[1], 10)\r\n };\r\n\r\n\r\n\r\n if (figureEl.children.length > 1) {\r\n //
      content\r\n item.title = figureEl.children[1].innerHTML;\r\n }\r\n\r\n if (linkEl.children.length > 0) {\r\n // thumbnail element, retrieving thumbnail url\r\n item.msrc = linkEl.children[0].getAttribute('src');\r\n }\r\n\r\n item.el = figureEl; // save link to element for getThumbBoundsFn\r\n items.push(item);\r\n }\r\n\r\n return items;\r\n };\r\n\r\n // find nearest parent element\r\n var closest = function closest(el, fn) {\r\n return el && (fn(el) ? el : closest(el.parentNode, fn));\r\n };\r\n\r\n // triggers when user clicks on thumbnail\r\n var onThumbnailsClick = function (e) {\r\n e = e || window.event;\r\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\r\n\r\n var eTarget = e.target || e.srcElement;\r\n\r\n // find root element of slide\r\n var clickedListItem = closest(eTarget, function (el) {\r\n return (el.tagName && el.tagName.toUpperCase() === 'FIGURE');\r\n });\r\n\r\n if (!clickedListItem) {\r\n return;\r\n }\r\n\r\n // find index of clicked item by looping through all child nodes\r\n // alternatively, you may define index via data- attribute\r\n var clickedGallery = clickedListItem.parentNode,\r\n childNodes = clickedListItem.parentNode.childNodes,\r\n numChildNodes = childNodes.length,\r\n nodeIndex = 0,\r\n index;\r\n\r\n for (var i = 0; i < numChildNodes; i++) {\r\n if (childNodes[i].nodeType !== 1) {\r\n continue;\r\n }\r\n\r\n if (childNodes[i] === clickedListItem) {\r\n index = nodeIndex;\r\n break;\r\n }\r\n nodeIndex++;\r\n }\r\n\r\n\r\n\r\n if (index >= 0) {\r\n // open PhotoSwipe if valid index found\r\n openPhotoSwipe(index, clickedGallery);\r\n }\r\n return false;\r\n };\r\n\r\n // parse picture index and gallery index from URL (#&pid=1&gid=2)\r\n var photoswipeParseHash = function () {\r\n var hash = window.location.hash.substring(1),\r\n params = {};\r\n\r\n if (hash.length < 5) {\r\n return params;\r\n }\r\n\r\n var vars = hash.split('&');\r\n for (var i = 0; i < vars.length; i++) {\r\n if (!vars[i]) {\r\n continue;\r\n }\r\n var pair = vars[i].split('=');\r\n if (pair.length < 2) {\r\n continue;\r\n }\r\n params[pair[0]] = pair[1];\r\n }\r\n\r\n if (params.gid) {\r\n params.gid = parseInt(params.gid, 10);\r\n }\r\n\r\n return params;\r\n };\r\n\r\n var openPhotoSwipe = function (index, galleryElement, disableAnimation, fromURL) {\r\n var pswpElement = document.querySelectorAll('.pswp')[0],\r\n gallery,\r\n options,\r\n items;\r\n\r\n items = parseThumbnailElements(galleryElement);\r\n\r\n // define options (if needed)\r\n options = {\r\n\r\n // define gallery index (for URL)\r\n galleryUID: galleryElement.getAttribute('data-pswp-uid'),\r\n\r\n getThumbBoundsFn: function (index) {\r\n // See Options -> getThumbBoundsFn section of documentation for more info\r\n var thumbnail = items[index].el.getElementsByTagName('img')[0], // find thumbnail\r\n pageYScroll = window.pageYOffset || document.documentElement.scrollTop,\r\n rect = thumbnail.getBoundingClientRect();\r\n\r\n return {\r\n x: rect.left,\r\n y: rect.top + pageYScroll,\r\n w: rect.width\r\n };\r\n }\r\n\r\n };\r\n\r\n // PhotoSwipe opened from URL\r\n if (fromURL) {\r\n if (options.galleryPIDs) {\r\n // parse real index when custom PIDs are used \r\n // http://photoswipe.com/documentation/faq.html#custom-pid-in-url\r\n for (var j = 0; j < items.length; j++) {\r\n if (items[j].pid == index) {\r\n options.index = j;\r\n break;\r\n }\r\n }\r\n } else {\r\n // in URL indexes start from 1\r\n options.index = parseInt(index, 10) - 1;\r\n }\r\n } else {\r\n options.index = parseInt(index, 10);\r\n }\r\n\r\n // exit if index not found\r\n if (isNaN(options.index)) {\r\n return;\r\n }\r\n\r\n if (disableAnimation) {\r\n options.showAnimationDuration = 0;\r\n }\r\n\r\n // Pass data to PhotoSwipe and initialize it\r\n gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);\r\n gallery.init();\r\n };\r\n\r\n // loop through all gallery elements and bind events\r\n var galleryElements = document.querySelectorAll(gallerySelector);\r\n\r\n for (var i = 0, l = galleryElements.length; i < l; i++) {\r\n galleryElements[i].setAttribute('data-pswp-uid', i + 1);\r\n galleryElements[i].onclick = onThumbnailsClick;\r\n }\r\n\r\n // Parse URL and open gallery if it contains #&pid=3&gid=1\r\n var hashData = photoswipeParseHash();\r\n if (hashData.pid && hashData.gid) {\r\n openPhotoSwipe(hashData.pid, galleryElements[hashData.gid - 1], true, true);\r\n }\r\n};\r\n\r\n// execute above function\r\ninitPhotoSwipeFromDOM('.mdb-lightbox');","/*!\r\n * Date picker for pickadate.js v3.6.3\r\n * http://amsul.github.io/pickadate.js/date.htm\r\n */\r\n\r\n(function (factory) {\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd)\r\n define(['picker', 'jquery'], factory)\r\n\r\n // Node.js/browserify.\r\n else if (typeof exports == 'object')\r\n module.exports = factory(require('./picker.js'), require('jquery'))\r\n\r\n // Browser globals.\r\n else factory(Picker, jQuery)\r\n\r\n}(function (Picker, $) {\r\n\r\n\r\n /**\r\n * Globals and constants\r\n */\r\n var DAYS_IN_WEEK = 7,\r\n WEEKS_IN_CALENDAR = 6,\r\n _ = Picker._\r\n\r\n\r\n\r\n /**\r\n * The date picker constructor\r\n */\r\n function DatePicker(picker, settings) {\r\n\r\n var calendar = this,\r\n element = picker.$node[0],\r\n elementValue = element.value,\r\n elementDataValue = picker.$node.data('value'),\r\n valueString = elementDataValue || elementValue,\r\n formatString = elementDataValue ? settings.formatSubmit : settings.format,\r\n isRTL = function () {\r\n\r\n return element.currentStyle ?\r\n\r\n // For IE.\r\n element.currentStyle.direction == 'rtl' :\r\n\r\n // For normal browsers.\r\n getComputedStyle(picker.$root[0]).direction == 'rtl'\r\n }\r\n\r\n calendar.settings = settings\r\n calendar.$node = picker.$node\r\n\r\n // The queue of methods that will be used to build item objects.\r\n calendar.queue = {\r\n min: 'measure create',\r\n max: 'measure create',\r\n now: 'now create',\r\n select: 'parse create validate',\r\n highlight: 'parse navigate create validate',\r\n view: 'parse create validate viewset',\r\n disable: 'deactivate',\r\n enable: 'activate'\r\n }\r\n\r\n // The component's item object.\r\n calendar.item = {}\r\n\r\n calendar.item.clear = null\r\n calendar.item.disable = (settings.disable || []).slice(0)\r\n calendar.item.enable = -(function (collectionDisabled) {\r\n return collectionDisabled[0] === true ? collectionDisabled.shift() : -1\r\n })(calendar.item.disable)\r\n\r\n calendar.\r\n set('min', settings.min).\r\n set('max', settings.max).\r\n set('now')\r\n\r\n // When there’s a value, set the `select`, which in turn\r\n // also sets the `highlight` and `view`.\r\n if (valueString) {\r\n calendar.set('select', valueString, {\r\n format: formatString,\r\n defaultValue: true\r\n })\r\n }\r\n\r\n // If there’s no value, default to highlighting “today”.\r\n else {\r\n calendar.\r\n set('select', null).\r\n set('highlight', calendar.item.now)\r\n }\r\n\r\n\r\n // The keycode to movement mapping.\r\n calendar.key = {\r\n 40: 7, // Down\r\n 38: -7, // Up\r\n 39: function () {\r\n return isRTL() ? -1 : 1\r\n }, // Right\r\n 37: function () {\r\n return isRTL() ? 1 : -1\r\n }, // Left\r\n go: function (timeChange) {\r\n var highlightedObject = calendar.item.highlight,\r\n targetDate = new Date(highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange)\r\n calendar.set(\r\n 'highlight',\r\n targetDate, {\r\n interval: timeChange\r\n }\r\n )\r\n this.render()\r\n }\r\n }\r\n\r\n\r\n // Bind some picker events.\r\n picker.\r\n on('render', function () {\r\n picker.$root.find('.' + settings.klass.selectMonth).on('change', function () {\r\n var value = this.value\r\n if (value) {\r\n picker.set('highlight', [picker.get('view').year, value, picker.get('highlight').date])\r\n picker.$root.find('.' + settings.klass.selectMonth).trigger('focus')\r\n }\r\n })\r\n picker.$root.find('.' + settings.klass.selectYear).on('change', function () {\r\n var value = this.value\r\n if (value) {\r\n picker.set('highlight', [value, picker.get('view').month, picker.get('highlight').date])\r\n picker.$root.find('.' + settings.klass.selectYear).trigger('focus')\r\n }\r\n })\r\n }, 1).\r\n on('open', function () {\r\n var includeToday = ''\r\n if (calendar.disabled(calendar.get('now'))) {\r\n includeToday = ':not(.' + settings.klass.buttonToday + ')'\r\n }\r\n picker.$root.find('button' + includeToday + ', select').attr('disabled', false)\r\n }, 1).\r\n on('close', function () {\r\n picker.$root.find('button, select').attr('disabled', true)\r\n }, 1)\r\n\r\n } //DatePicker\r\n\r\n\r\n /**\r\n * Set a datepicker item object.\r\n */\r\n DatePicker.prototype.set = function (type, value, options) {\r\n\r\n var calendar = this,\r\n calendarItem = calendar.item\r\n\r\n // If the value is `null` just set it immediately.\r\n if (value === null) {\r\n if (type == 'clear') type = 'select'\r\n calendarItem[type] = value\r\n return calendar\r\n }\r\n\r\n // Otherwise go through the queue of methods, and invoke the functions.\r\n // Update this as the time unit, and set the final value as this item.\r\n // * In the case of `enable`, keep the queue but set `disable` instead.\r\n // And in the case of `flip`, keep the queue but set `enable` instead.\r\n calendarItem[(type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type)] = calendar.queue[type].split(' ').map(function (method) {\r\n value = calendar[method](type, value, options)\r\n return value\r\n }).pop()\r\n\r\n // Check if we need to cascade through more updates.\r\n if (type == 'select') {\r\n calendar.set('highlight', calendarItem.select, options)\r\n } else if (type == 'highlight') {\r\n calendar.set('view', calendarItem.highlight, options)\r\n } else if (type.match(/^(flip|min|max|disable|enable)$/)) {\r\n if (calendarItem.select && calendar.disabled(calendarItem.select)) {\r\n calendar.set('select', calendarItem.select, options)\r\n }\r\n if (calendarItem.highlight && calendar.disabled(calendarItem.highlight)) {\r\n calendar.set('highlight', calendarItem.highlight, options)\r\n }\r\n }\r\n\r\n return calendar\r\n } //DatePicker.prototype.set\r\n\r\n\r\n /**\r\n * Get a datepicker item object.\r\n */\r\n DatePicker.prototype.get = function (type) {\r\n return this.item[type]\r\n } //DatePicker.prototype.get\r\n\r\n\r\n /**\r\n * Create a picker date object.\r\n */\r\n DatePicker.prototype.create = function (type, value, options) {\r\n\r\n var isInfiniteValue,\r\n calendar = this\r\n\r\n // If there’s no value, use the type as the value.\r\n value = value === undefined ? type : value\r\n\r\n\r\n // If it’s infinity, update the value.\r\n if (value == -Infinity || value == Infinity) {\r\n isInfiniteValue = value\r\n }\r\n\r\n // If it’s an object, use the native date object.\r\n else if ($.isPlainObject(value) && _.isInteger(value.pick)) {\r\n value = value.obj\r\n }\r\n\r\n // If it’s an array, convert it into a date and make sure\r\n // that it’s a valid date – otherwise default to today.\r\n else if ($.isArray(value)) {\r\n value = new Date(value[0], value[1], value[2])\r\n value = _.isDate(value) ? value : calendar.create().obj\r\n }\r\n\r\n // If it’s a number or date object, make a normalized date.\r\n else if (_.isInteger(value) || _.isDate(value)) {\r\n value = calendar.normalize(new Date(value), options)\r\n }\r\n\r\n // If it’s a literal true or any other case, set it to now.\r\n else /*if ( value === true )*/ {\r\n value = calendar.now(type, value, options)\r\n }\r\n\r\n // Return the compiled object.\r\n return {\r\n year: isInfiniteValue || value.getFullYear(),\r\n month: isInfiniteValue || value.getMonth(),\r\n date: isInfiniteValue || value.getDate(),\r\n day: isInfiniteValue || value.getDay(),\r\n obj: isInfiniteValue || value,\r\n pick: isInfiniteValue || value.getTime()\r\n }\r\n } //DatePicker.prototype.create\r\n\r\n\r\n /**\r\n * Create a range limit object using an array, date object,\r\n * literal “true”, or integer relative to another time.\r\n */\r\n DatePicker.prototype.createRange = function (from, to) {\r\n\r\n var calendar = this,\r\n createDate = function (date) {\r\n if (date === true || $.isArray(date) || _.isDate(date)) {\r\n return calendar.create(date)\r\n }\r\n return date\r\n }\r\n\r\n // Create objects if possible.\r\n if (!_.isInteger(from)) {\r\n from = createDate(from)\r\n }\r\n if (!_.isInteger(to)) {\r\n to = createDate(to)\r\n }\r\n\r\n // Create relative dates.\r\n if (_.isInteger(from) && $.isPlainObject(to)) {\r\n from = [to.year, to.month, to.date + from];\r\n } else if (_.isInteger(to) && $.isPlainObject(from)) {\r\n to = [from.year, from.month, from.date + to];\r\n }\r\n\r\n return {\r\n from: createDate(from),\r\n to: createDate(to)\r\n }\r\n } //DatePicker.prototype.createRange\r\n\r\n\r\n /**\r\n * Check if a date unit falls within a date range object.\r\n */\r\n DatePicker.prototype.withinRange = function (range, dateUnit) {\r\n range = this.createRange(range.from, range.to)\r\n return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick\r\n }\r\n\r\n\r\n /**\r\n * Check if two date range objects overlap.\r\n */\r\n DatePicker.prototype.overlapRanges = function (one, two) {\r\n\r\n var calendar = this\r\n\r\n // Convert the ranges into comparable dates.\r\n one = calendar.createRange(one.from, one.to)\r\n two = calendar.createRange(two.from, two.to)\r\n\r\n return calendar.withinRange(one, two.from) || calendar.withinRange(one, two.to) ||\r\n calendar.withinRange(two, one.from) || calendar.withinRange(two, one.to)\r\n }\r\n\r\n\r\n /**\r\n * Get the date today.\r\n */\r\n DatePicker.prototype.now = function (type, value, options) {\r\n value = new Date()\r\n if (options && options.rel) {\r\n value.setDate(value.getDate() + options.rel)\r\n }\r\n return this.normalize(value, options)\r\n }\r\n\r\n\r\n /**\r\n * Navigate to next/prev month.\r\n */\r\n DatePicker.prototype.navigate = function (type, value, options) {\r\n\r\n var targetDateObject,\r\n targetYear,\r\n targetMonth,\r\n targetDate,\r\n isTargetArray = $.isArray(value),\r\n isTargetObject = $.isPlainObject(value),\r\n viewsetObject = this.item.view\r\n /*,\r\n safety = 100*/\r\n\r\n\r\n if (isTargetArray || isTargetObject) {\r\n\r\n if (isTargetObject) {\r\n targetYear = value.year\r\n targetMonth = value.month\r\n targetDate = value.date\r\n } else {\r\n targetYear = +value[0]\r\n targetMonth = +value[1]\r\n targetDate = +value[2]\r\n }\r\n\r\n // If we’re navigating months but the view is in a different\r\n // month, navigate to the view’s year and month.\r\n if (options && options.nav && viewsetObject && viewsetObject.month !== targetMonth) {\r\n targetYear = viewsetObject.year\r\n targetMonth = viewsetObject.month\r\n }\r\n\r\n // Figure out the expected target year and month.\r\n targetDateObject = new Date(targetYear, targetMonth + (options && options.nav ? options.nav : 0), 1)\r\n targetYear = targetDateObject.getFullYear()\r\n targetMonth = targetDateObject.getMonth()\r\n\r\n // If the month we’re going to doesn’t have enough days,\r\n // keep decreasing the date until we reach the month’s last date.\r\n while ( /*safety &&*/ new Date(targetYear, targetMonth, targetDate).getMonth() !== targetMonth) {\r\n targetDate -= 1\r\n /*safety -= 1\r\n if ( !safety ) {\r\n throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.'\r\n }*/\r\n }\r\n\r\n value = [targetYear, targetMonth, targetDate]\r\n }\r\n\r\n return value\r\n } //DatePicker.prototype.navigate\r\n\r\n\r\n /**\r\n * Normalize a date by setting the hours to midnight.\r\n */\r\n DatePicker.prototype.normalize = function (value /*, options*/ ) {\r\n value.setHours(0, 0, 0, 0)\r\n return value\r\n }\r\n\r\n\r\n /**\r\n * Measure the range of dates.\r\n */\r\n DatePicker.prototype.measure = function (type, value /*, options*/ ) {\r\n\r\n var calendar = this\r\n\r\n // If it's an integer, get a date relative to today.\r\n if (_.isInteger(value)) {\r\n value = calendar.now(type, value, {\r\n rel: value\r\n })\r\n }\r\n\r\n // If it’s anything false-y, remove the limits.\r\n else if (!value) {\r\n value = type == 'min' ? -Infinity : Infinity\r\n }\r\n\r\n // If it’s a string, parse it.\r\n else if (typeof value == 'string') {\r\n value = calendar.parse(type, value)\r\n }\r\n\r\n return value\r\n } ///DatePicker.prototype.measure\r\n\r\n\r\n /**\r\n * Create a viewset object based on navigation.\r\n */\r\n DatePicker.prototype.viewset = function (type, dateObject /*, options*/ ) {\r\n return this.create([dateObject.year, dateObject.month, 1])\r\n }\r\n\r\n\r\n /**\r\n * Validate a date as enabled and shift if needed.\r\n */\r\n DatePicker.prototype.validate = function (type, dateObject, options) {\r\n\r\n var calendar = this,\r\n\r\n // Keep a reference to the original date.\r\n originalDateObject = dateObject,\r\n\r\n // Make sure we have an interval.\r\n interval = options && options.interval ? options.interval : 1,\r\n\r\n // Check if the calendar enabled dates are inverted.\r\n isFlippedBase = calendar.item.enable === -1,\r\n\r\n // Check if we have any enabled dates after/before now.\r\n hasEnabledBeforeTarget, hasEnabledAfterTarget,\r\n\r\n // The min & max limits.\r\n minLimitObject = calendar.item.min,\r\n maxLimitObject = calendar.item.max,\r\n\r\n // Check if we’ve reached the limit during shifting.\r\n reachedMin, reachedMax,\r\n\r\n // Check if the calendar is inverted and at least one weekday is enabled.\r\n hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter(function (value) {\r\n\r\n // If there’s a date, check where it is relative to the target.\r\n if ($.isArray(value)) {\r\n var dateTime = calendar.create(value).pick\r\n if (dateTime < dateObject.pick) hasEnabledBeforeTarget = true\r\n else if (dateTime > dateObject.pick) hasEnabledAfterTarget = true\r\n }\r\n\r\n // Return only integers for enabled weekdays.\r\n return _.isInteger(value)\r\n }).length\r\n /*,\r\n\r\n safety = 100*/\r\n\r\n\r\n\r\n // Cases to validate for:\r\n // [1] Not inverted and date disabled.\r\n // [2] Inverted and some dates enabled.\r\n // [3] Not inverted and out of range.\r\n //\r\n // Cases to **not** validate for:\r\n // • Navigating months.\r\n // • Not inverted and date enabled.\r\n // • Inverted and all dates disabled.\r\n // • ..and anything else.\r\n if (!options || (!options.nav && !options.defaultValue))\r\n if (\r\n /* 1 */\r\n (!isFlippedBase && calendar.disabled(dateObject)) ||\r\n /* 2 */\r\n (isFlippedBase && calendar.disabled(dateObject) && (hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget)) ||\r\n /* 3 */\r\n (!isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick))\r\n ) {\r\n\r\n\r\n // When inverted, flip the direction if there aren’t any enabled weekdays\r\n // and there are no enabled dates in the direction of the interval.\r\n if (isFlippedBase && !hasEnabledWeekdays && ((!hasEnabledAfterTarget && interval > 0) || (!hasEnabledBeforeTarget && interval < 0))) {\r\n interval *= -1\r\n }\r\n\r\n\r\n // Keep looping until we reach an enabled date.\r\n while ( /*safety &&*/ calendar.disabled(dateObject)) {\r\n\r\n /*safety -= 1\r\n if ( !safety ) {\r\n throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.'\r\n }*/\r\n\r\n\r\n // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval.\r\n if (Math.abs(interval) > 1 && (dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month)) {\r\n dateObject = originalDateObject\r\n interval = interval > 0 ? 1 : -1\r\n }\r\n\r\n\r\n // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit.\r\n if (dateObject.pick <= minLimitObject.pick) {\r\n reachedMin = true\r\n interval = 1\r\n dateObject = calendar.create([\r\n minLimitObject.year,\r\n minLimitObject.month,\r\n minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1)\r\n ])\r\n } else if (dateObject.pick >= maxLimitObject.pick) {\r\n reachedMax = true\r\n interval = -1\r\n dateObject = calendar.create([\r\n maxLimitObject.year,\r\n maxLimitObject.month,\r\n maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1)\r\n ])\r\n }\r\n\r\n\r\n // If we’ve reached both limits, just break out of the loop.\r\n if (reachedMin && reachedMax) {\r\n break\r\n }\r\n\r\n\r\n // Finally, create the shifted date using the interval and keep looping.\r\n dateObject = calendar.create([dateObject.year, dateObject.month, dateObject.date + interval])\r\n }\r\n\r\n } //endif\r\n\r\n\r\n // Return the date object settled on.\r\n return dateObject\r\n } //DatePicker.prototype.validate\r\n\r\n\r\n /**\r\n * Check if a date is disabled.\r\n */\r\n DatePicker.prototype.disabled = function (dateToVerify) {\r\n\r\n var\r\n calendar = this,\r\n\r\n // Filter through the disabled dates to check if this is one.\r\n isDisabledMatch = calendar.item.disable.filter(function (dateToDisable) {\r\n\r\n // If the date is a number, match the weekday with 0index and `firstDay` check.\r\n if (_.isInteger(dateToDisable)) {\r\n return dateToVerify.day === (calendar.settings.firstDay ? dateToDisable : dateToDisable - 1) % 7\r\n }\r\n\r\n // If it’s an array or a native JS date, create and match the exact date.\r\n if ($.isArray(dateToDisable) || _.isDate(dateToDisable)) {\r\n return dateToVerify.pick === calendar.create(dateToDisable).pick\r\n }\r\n\r\n // If it’s an object, match a date within the “from” and “to” range.\r\n if ($.isPlainObject(dateToDisable)) {\r\n return calendar.withinRange(dateToDisable, dateToVerify)\r\n }\r\n })\r\n\r\n // If this date matches a disabled date, confirm it’s not inverted.\r\n isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function (dateToDisable) {\r\n return $.isArray(dateToDisable) && dateToDisable[3] == 'inverted' ||\r\n $.isPlainObject(dateToDisable) && dateToDisable.inverted\r\n }).length\r\n\r\n // Check the calendar “enabled” flag and respectively flip the\r\n // disabled state. Then also check if it’s beyond the min/max limits.\r\n return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch ||\r\n dateToVerify.pick < calendar.item.min.pick ||\r\n dateToVerify.pick > calendar.item.max.pick\r\n\r\n } //DatePicker.prototype.disabled\r\n\r\n\r\n /**\r\n * Parse a string into a usable type.\r\n */\r\n DatePicker.prototype.parse = function (type, value, options) {\r\n\r\n var calendar = this,\r\n parsingObject = {}\r\n\r\n // If it’s already parsed, we’re good.\r\n if (!value || typeof value != 'string') {\r\n return value\r\n }\r\n\r\n // We need a `.format` to parse the value with.\r\n if (!(options && options.format)) {\r\n options = options || {}\r\n options.format = calendar.settings.format\r\n }\r\n\r\n // Convert the format into an array and then map through it.\r\n calendar.formats.toArray(options.format).map(function (label) {\r\n\r\n var\r\n // Grab the formatting label.\r\n formattingLabel = calendar.formats[label],\r\n\r\n // The format length is from the formatting label function or the\r\n // label length without the escaping exclamation (!) mark.\r\n formatLength = formattingLabel ? _.trigger(formattingLabel, calendar, [value, parsingObject]) : label.replace(/^!/, '').length\r\n\r\n // If there's a format label, split the value up to the format length.\r\n // Then add it to the parsing object with appropriate label.\r\n if (formattingLabel) {\r\n parsingObject[label] = value.substr(0, formatLength)\r\n }\r\n\r\n // Update the value as the substring from format length to end.\r\n value = value.substr(formatLength)\r\n })\r\n\r\n // Compensate for month 0index.\r\n return [\r\n parsingObject.yyyy || parsingObject.yy,\r\n +(parsingObject.mm || parsingObject.m) - 1,\r\n parsingObject.dd || parsingObject.d\r\n ]\r\n } //DatePicker.prototype.parse\r\n\r\n\r\n /**\r\n * Various formats to display the object in.\r\n */\r\n DatePicker.prototype.formats = (function () {\r\n\r\n // Return the length of the first word in a collection.\r\n function getWordLengthFromCollection(string, collection, dateObject) {\r\n\r\n // Grab the first word from the string.\r\n // Regex pattern from http://stackoverflow.com/q/150033\r\n var word = string.match(/[^\\x00-\\x7F]+|\\w+/)[0]\r\n\r\n // If there's no month index, add it to the date object\r\n if (!dateObject.mm && !dateObject.m) {\r\n dateObject.m = collection.indexOf(word) + 1\r\n }\r\n\r\n // Return the length of the word.\r\n return word.length\r\n }\r\n\r\n // Get the length of the first word in a string.\r\n function getFirstWordLength(string) {\r\n return string.match(/\\w+/)[0].length\r\n }\r\n\r\n return {\r\n\r\n d: function (string, dateObject) {\r\n\r\n // If there's string, then get the digits length.\r\n // Otherwise return the selected date.\r\n return string ? _.digits(string) : dateObject.date\r\n },\r\n dd: function (string, dateObject) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected date with a leading zero.\r\n return string ? 2 : _.lead(dateObject.date)\r\n },\r\n ddd: function (string, dateObject) {\r\n\r\n // If there's a string, then get the length of the first word.\r\n // Otherwise return the short selected weekday.\r\n return string ? getFirstWordLength(string) : this.settings.weekdaysShort[dateObject.day]\r\n },\r\n dddd: function (string, dateObject) {\r\n\r\n // If there's a string, then get the length of the first word.\r\n // Otherwise return the full selected weekday.\r\n return string ? getFirstWordLength(string) : this.settings.weekdaysFull[dateObject.day]\r\n },\r\n m: function (string, dateObject) {\r\n\r\n // If there's a string, then get the length of the digits\r\n // Otherwise return the selected month with 0index compensation.\r\n return string ? _.digits(string) : dateObject.month + 1\r\n },\r\n mm: function (string, dateObject) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected month with 0index and leading zero.\r\n return string ? 2 : _.lead(dateObject.month + 1)\r\n },\r\n mmm: function (string, dateObject) {\r\n\r\n var collection = this.settings.monthsShort\r\n\r\n // If there's a string, get length of the relevant month from the short\r\n // months collection. Otherwise return the selected month from that collection.\r\n return string ? getWordLengthFromCollection(string, collection, dateObject) : collection[dateObject.month]\r\n },\r\n mmmm: function (string, dateObject) {\r\n\r\n var collection = this.settings.monthsFull\r\n\r\n // If there's a string, get length of the relevant month from the full\r\n // months collection. Otherwise return the selected month from that collection.\r\n return string ? getWordLengthFromCollection(string, collection, dateObject) : collection[dateObject.month]\r\n },\r\n yy: function (string, dateObject) {\r\n\r\n // If there's a string, then the length is always 2.\r\n // Otherwise return the selected year by slicing out the first 2 digits.\r\n return string ? 2 : ('' + dateObject.year).slice(2)\r\n },\r\n yyyy: function (string, dateObject) {\r\n\r\n // If there's a string, then the length is always 4.\r\n // Otherwise return the selected year.\r\n return string ? 4 : dateObject.year\r\n },\r\n\r\n // Create an array by splitting the formatting string passed.\r\n toArray: function (formatString) {\r\n return formatString.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)\r\n },\r\n\r\n // Format an object into a string using the formatting options.\r\n toString: function (formatString, itemObject) {\r\n var calendar = this\r\n return calendar.formats.toArray(formatString).map(function (label) {\r\n return _.trigger(calendar.formats[label], calendar, [0, itemObject]) || label.replace(/^!/, '')\r\n }).join('')\r\n }\r\n }\r\n })() //DatePicker.prototype.formats\r\n\r\n\r\n\r\n\r\n /**\r\n * Check if two date units are the exact.\r\n */\r\n DatePicker.prototype.isDateExact = function (one, two) {\r\n\r\n var calendar = this\r\n\r\n // When we’re working with weekdays, do a direct comparison.\r\n if (\r\n (_.isInteger(one) && _.isInteger(two)) ||\r\n (typeof one == 'boolean' && typeof two == 'boolean')\r\n ) {\r\n return one === two\r\n }\r\n\r\n // When we’re working with date representations, compare the “pick” value.\r\n if (\r\n (_.isDate(one) || $.isArray(one)) &&\r\n (_.isDate(two) || $.isArray(two))\r\n ) {\r\n return calendar.create(one).pick === calendar.create(two).pick\r\n }\r\n\r\n // When we’re working with range objects, compare the “from” and “to”.\r\n if ($.isPlainObject(one) && $.isPlainObject(two)) {\r\n return calendar.isDateExact(one.from, two.from) && calendar.isDateExact(one.to, two.to)\r\n }\r\n\r\n return false\r\n }\r\n\r\n\r\n /**\r\n * Check if two date units overlap.\r\n */\r\n DatePicker.prototype.isDateOverlap = function (one, two) {\r\n\r\n var calendar = this,\r\n firstDay = calendar.settings.firstDay ? 1 : 0\r\n\r\n // When we’re working with a weekday index, compare the days.\r\n if (_.isInteger(one) && (_.isDate(two) || $.isArray(two))) {\r\n one = one % 7 + firstDay\r\n return one === calendar.create(two).day + 1\r\n }\r\n if (_.isInteger(two) && (_.isDate(one) || $.isArray(one))) {\r\n two = two % 7 + firstDay\r\n return two === calendar.create(one).day + 1\r\n }\r\n\r\n // When we’re working with range objects, check if the ranges overlap.\r\n if ($.isPlainObject(one) && $.isPlainObject(two)) {\r\n return calendar.overlapRanges(one, two)\r\n }\r\n\r\n return false\r\n }\r\n\r\n\r\n /**\r\n * Flip the “enabled” state.\r\n */\r\n DatePicker.prototype.flipEnable = function (val) {\r\n var itemObject = this.item\r\n itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1)\r\n }\r\n\r\n\r\n /**\r\n * Mark a collection of dates as “disabled”.\r\n */\r\n DatePicker.prototype.deactivate = function (type, datesToDisable) {\r\n\r\n var calendar = this,\r\n disabledItems = calendar.item.disable.slice(0)\r\n\r\n\r\n // If we’re flipping, that’s all we need to do.\r\n if (datesToDisable == 'flip') {\r\n calendar.flipEnable()\r\n } else if (datesToDisable === false) {\r\n calendar.flipEnable(1)\r\n disabledItems = []\r\n } else if (datesToDisable === true) {\r\n calendar.flipEnable(-1)\r\n disabledItems = []\r\n }\r\n\r\n // Otherwise go through the dates to disable.\r\n else {\r\n\r\n datesToDisable.map(function (unitToDisable) {\r\n\r\n var matchFound\r\n\r\n // When we have disabled items, check for matches.\r\n // If something is matched, immediately break out.\r\n for (var index = 0; index < disabledItems.length; index += 1) {\r\n if (calendar.isDateExact(unitToDisable, disabledItems[index])) {\r\n matchFound = true\r\n break\r\n }\r\n }\r\n\r\n // If nothing was found, add the validated unit to the collection.\r\n if (!matchFound) {\r\n if (\r\n _.isInteger(unitToDisable) ||\r\n _.isDate(unitToDisable) ||\r\n $.isArray(unitToDisable) ||\r\n ($.isPlainObject(unitToDisable) && unitToDisable.from && unitToDisable.to)\r\n ) {\r\n disabledItems.push(unitToDisable)\r\n }\r\n }\r\n })\r\n }\r\n\r\n // Return the updated collection.\r\n return disabledItems\r\n } //DatePicker.prototype.deactivate\r\n\r\n\r\n /**\r\n * Mark a collection of dates as “enabled”.\r\n */\r\n DatePicker.prototype.activate = function (type, datesToEnable) {\r\n\r\n var calendar = this,\r\n disabledItems = calendar.item.disable,\r\n disabledItemsCount = disabledItems.length\r\n\r\n // If we’re flipping, that’s all we need to do.\r\n if (datesToEnable == 'flip') {\r\n calendar.flipEnable()\r\n } else if (datesToEnable === true) {\r\n calendar.flipEnable(1)\r\n disabledItems = []\r\n } else if (datesToEnable === false) {\r\n calendar.flipEnable(-1)\r\n disabledItems = []\r\n }\r\n\r\n // Otherwise go through the disabled dates.\r\n else {\r\n\r\n datesToEnable.map(function (unitToEnable) {\r\n\r\n var matchFound,\r\n disabledUnit,\r\n index,\r\n isExactRange\r\n\r\n // Go through the disabled items and try to find a match.\r\n for (index = 0; index < disabledItemsCount; index += 1) {\r\n\r\n disabledUnit = disabledItems[index]\r\n\r\n // When an exact match is found, remove it from the collection.\r\n if (calendar.isDateExact(disabledUnit, unitToEnable)) {\r\n matchFound = disabledItems[index] = null\r\n isExactRange = true\r\n break\r\n }\r\n\r\n // When an overlapped match is found, add the “inverted” state to it.\r\n else if (calendar.isDateOverlap(disabledUnit, unitToEnable)) {\r\n if ($.isPlainObject(unitToEnable)) {\r\n unitToEnable.inverted = true\r\n matchFound = unitToEnable\r\n } else if ($.isArray(unitToEnable)) {\r\n matchFound = unitToEnable\r\n if (!matchFound[3]) matchFound.push('inverted')\r\n } else if (_.isDate(unitToEnable)) {\r\n matchFound = [unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted']\r\n }\r\n break\r\n }\r\n }\r\n\r\n // If a match was found, remove a previous duplicate entry.\r\n if (matchFound)\r\n for (index = 0; index < disabledItemsCount; index += 1) {\r\n if (calendar.isDateExact(disabledItems[index], unitToEnable)) {\r\n disabledItems[index] = null\r\n break\r\n }\r\n }\r\n\r\n // In the event that we’re dealing with an exact range of dates,\r\n // make sure there are no “inverted” dates because of it.\r\n if (isExactRange)\r\n for (index = 0; index < disabledItemsCount; index += 1) {\r\n if (calendar.isDateOverlap(disabledItems[index], unitToEnable)) {\r\n disabledItems[index] = null\r\n break\r\n }\r\n }\r\n\r\n // If something is still matched, add it into the collection.\r\n if (matchFound) {\r\n disabledItems.push(matchFound)\r\n }\r\n })\r\n }\r\n\r\n // Return the updated collection.\r\n return disabledItems.filter(function (val) {\r\n return val != null\r\n })\r\n } //DatePicker.prototype.activate\r\n\r\n\r\n /**\r\n * Create a string for the nodes in the picker.\r\n */\r\n DatePicker.prototype.nodes = function (isOpen) {\r\n\r\n var\r\n calendar = this,\r\n settings = calendar.settings,\r\n calendarItem = calendar.item,\r\n nowObject = calendarItem.now,\r\n selectedObject = calendarItem.select,\r\n highlightedObject = calendarItem.highlight,\r\n viewsetObject = calendarItem.view,\r\n disabledCollection = calendarItem.disable,\r\n minLimitObject = calendarItem.min,\r\n maxLimitObject = calendarItem.max,\r\n\r\n\r\n // Create the calendar table head using a copy of weekday labels collection.\r\n // * We do a copy so we don't mutate the original array.\r\n tableHead = (function (collection, fullCollection) {\r\n\r\n // If the first day should be Monday, move Sunday to the end.\r\n if (settings.firstDay) {\r\n collection.push(collection.shift())\r\n fullCollection.push(fullCollection.shift())\r\n }\r\n\r\n // Create and return the table head group.\r\n return _.node(\r\n 'thead',\r\n _.node(\r\n 'tr',\r\n _.group({\r\n min: 0,\r\n max: DAYS_IN_WEEK - 1,\r\n i: 1,\r\n node: 'th',\r\n item: function (counter) {\r\n return [\r\n collection[counter],\r\n settings.klass.weekdays,\r\n 'scope=col title=\"' + fullCollection[counter] + '\"'\r\n ]\r\n }\r\n })\r\n )\r\n ) //endreturn\r\n })((settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysShort).slice(0), settings.weekdaysFull.slice(0)), //tableHead\r\n\r\n\r\n // Create the nav for next/prev month.\r\n createMonthNav = function (next) {\r\n\r\n // Otherwise, return the created month tag.\r\n return _.node(\r\n 'button',\r\n ' ',\r\n settings.klass['nav' + (next ? 'Next' : 'Prev')] + (\r\n\r\n // If the focused month is outside the range, disabled the button.\r\n (next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month) ||\r\n (!next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month) ?\r\n ' ' + settings.klass.navDisabled : ''\r\n ),\r\n 'data-nav=' + (next || -1) + ' ' +\r\n _.ariaAttr({\r\n role: 'button',\r\n\r\n controls: calendar.$node[0].id + '_table'\r\n }) + ' ' +\r\n 'title=\"' + (next ? settings.labelMonthNext : settings.labelMonthPrev) + '\"'\r\n ) //endreturn\r\n }, //createMonthNav\r\n\r\n\r\n // Create the month label.\r\n createMonthLabel = function () {\r\n\r\n var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull\r\n\r\n // If there are months to select, add a dropdown menu.\r\n if (settings.selectMonths) {\r\n\r\n return _.node('select',\r\n _.group({\r\n min: 0,\r\n max: 11,\r\n i: 1,\r\n node: 'option',\r\n item: function (loopedMonth) {\r\n\r\n return [\r\n\r\n // The looped month and no classes.\r\n monthsCollection[loopedMonth], 0,\r\n\r\n // Set the value and selected index.\r\n 'value=' + loopedMonth +\r\n (viewsetObject.month == loopedMonth ? ' selected' : '') +\r\n (\r\n (\r\n (viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month) ||\r\n (viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month)\r\n ) ?\r\n ' disabled' : ''\r\n )\r\n ]\r\n }\r\n }),\r\n settings.klass.selectMonth,\r\n (isOpen ? '' : 'disabled') + ' ' +\r\n _.ariaAttr({\r\n controls: calendar.$node[0].id + '_table'\r\n }) + ' ' +\r\n 'title=\"' + settings.labelMonthSelect + '\"'\r\n )\r\n }\r\n\r\n // If there's a need for a month selector\r\n return _.node('div', monthsCollection[viewsetObject.month], settings.klass.month)\r\n }, //createMonthLabel\r\n\r\n\r\n // Create the year label.\r\n createYearLabel = function () {\r\n\r\n var focusedYear = viewsetObject.year,\r\n\r\n // If years selector is set to a literal \"true\", set it to 5. Otherwise\r\n // divide in half to get half before and half after focused year.\r\n numberYears = settings.selectYears === true ? 5 : ~~(settings.selectYears / 2)\r\n\r\n // If there are years to select, add a dropdown menu.\r\n if (numberYears) {\r\n\r\n var\r\n minYear = minLimitObject.year,\r\n maxYear = maxLimitObject.year,\r\n lowestYear = focusedYear - numberYears,\r\n highestYear = focusedYear + numberYears\r\n\r\n // If the min year is greater than the lowest year, increase the highest year\r\n // by the difference and set the lowest year to the min year.\r\n if (minYear > lowestYear) {\r\n highestYear += minYear - lowestYear\r\n lowestYear = minYear\r\n }\r\n\r\n // If the max year is less than the highest year, decrease the lowest year\r\n // by the lower of the two: available and needed years. Then set the\r\n // highest year to the max year.\r\n if (maxYear < highestYear) {\r\n\r\n var availableYears = lowestYear - minYear,\r\n neededYears = highestYear - maxYear\r\n\r\n lowestYear -= availableYears > neededYears ? neededYears : availableYears\r\n highestYear = maxYear\r\n }\r\n\r\n return _.node('select',\r\n _.group({\r\n min: lowestYear,\r\n max: highestYear,\r\n i: 1,\r\n node: 'option',\r\n item: function (loopedYear) {\r\n return [\r\n\r\n // The looped year and no classes.\r\n loopedYear, 0,\r\n\r\n // Set the value and selected index.\r\n 'value=' + loopedYear + (focusedYear == loopedYear ? ' selected' : '')\r\n ]\r\n }\r\n }),\r\n settings.klass.selectYear,\r\n (isOpen ? '' : 'disabled') + ' ' + _.ariaAttr({\r\n controls: calendar.$node[0].id + '_table'\r\n }) + ' ' +\r\n 'title=\"' + settings.labelYearSelect + '\"'\r\n )\r\n }\r\n\r\n // Otherwise just return the year focused\r\n return _.node('div', focusedYear, settings.klass.year)\r\n } //createYearLabel\r\n\r\n\r\n // Create and return the entire calendar.\r\n return _.node(\r\n 'div',\r\n (settings.selectYears ? createYearLabel() + createMonthLabel() : createMonthLabel() + createYearLabel()) +\r\n createMonthNav() + createMonthNav(1),\r\n settings.klass.header\r\n ) + _.node(\r\n 'table',\r\n tableHead +\r\n _.node(\r\n 'tbody',\r\n _.group({\r\n min: 0,\r\n max: WEEKS_IN_CALENDAR - 1,\r\n i: 1,\r\n node: 'tr',\r\n item: function (rowCounter) {\r\n\r\n // If Monday is the first day and the month starts on Sunday, shift the date back a week.\r\n var shiftDateBy = settings.firstDay && calendar.create([viewsetObject.year, viewsetObject.month, 1]).day === 0 ? -7 : 0\r\n\r\n return [\r\n _.group({\r\n min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index\r\n max: function () {\r\n return this.min + DAYS_IN_WEEK - 1\r\n },\r\n i: 1,\r\n node: 'td',\r\n item: function (targetDate) {\r\n\r\n // Convert the time date from a relative date to a target date.\r\n targetDate = calendar.create([viewsetObject.year, viewsetObject.month, targetDate + (settings.firstDay ? 1 : 0)])\r\n\r\n var isSelected = selectedObject && selectedObject.pick == targetDate.pick,\r\n isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick,\r\n isDisabled = disabledCollection && calendar.disabled(targetDate) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick,\r\n formattedDate = _.trigger(calendar.formats.toString, calendar, [settings.format, targetDate])\r\n\r\n return [\r\n _.node(\r\n 'div',\r\n targetDate.date,\r\n (function (klasses) {\r\n\r\n // Add the `infocus` or `outfocus` classes based on month in view.\r\n klasses.push(viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus)\r\n\r\n // Add the `today` class if needed.\r\n if (nowObject.pick == targetDate.pick) {\r\n klasses.push(settings.klass.now)\r\n }\r\n\r\n // Add the `selected` class if something's selected and the time matches.\r\n if (isSelected) {\r\n klasses.push(settings.klass.selected)\r\n }\r\n\r\n // Add the `highlighted` class if something's highlighted and the time matches.\r\n if (isHighlighted) {\r\n klasses.push(settings.klass.highlighted)\r\n }\r\n\r\n // Add the `disabled` class if something's disabled and the object matches.\r\n if (isDisabled) {\r\n klasses.push(settings.klass.disabled)\r\n }\r\n\r\n return klasses.join(' ')\r\n })([settings.klass.day]),\r\n 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({\r\n role: 'gridcell',\r\n label: formattedDate,\r\n selected: isSelected && calendar.$node.val() === formattedDate ? true : null,\r\n activedescendant: isHighlighted ? true : null,\r\n disabled: isDisabled ? true : null\r\n })\r\n ),\r\n '',\r\n _.ariaAttr({\r\n role: 'presentation'\r\n })\r\n ] //endreturn\r\n }\r\n })\r\n ] //endreturn\r\n }\r\n })\r\n ),\r\n settings.klass.table,\r\n 'id=\"' + calendar.$node[0].id + '_table' + '\" ' + _.ariaAttr({\r\n role: 'grid',\r\n controls: calendar.$node[0].id,\r\n readonly: true\r\n })\r\n ) +\r\n\r\n // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”.\r\n _.node(\r\n 'div',\r\n _.node('button', settings.today, settings.klass.buttonToday,\r\n 'type=button data-pick=' + nowObject.pick +\r\n (isOpen && !calendar.disabled(nowObject) ? '' : ' disabled') + ' ' +\r\n _.ariaAttr({\r\n controls: calendar.$node[0].id\r\n })) +\r\n _.node('button', settings.clear, settings.klass.buttonClear,\r\n 'type=button data-clear=1' +\r\n (isOpen ? '' : ' disabled') + ' ' +\r\n _.ariaAttr({\r\n controls: calendar.$node[0].id\r\n })) +\r\n _.node('button', settings.close, settings.klass.buttonClose,\r\n 'type=button data-close=true ' +\r\n (isOpen ? '' : ' disabled') + ' ' +\r\n _.ariaAttr({\r\n controls: calendar.$node[0].id\r\n })),\r\n settings.klass.footer\r\n ) //endreturn\r\n } //DatePicker.prototype.nodes\r\n\r\n\r\n\r\n\r\n /**\r\n * The date picker defaults.\r\n */\r\n DatePicker.defaults = (function (prefix) {\r\n\r\n return {\r\n\r\n // The title label to use for the month nav buttons\r\n labelMonthNext: 'Next month',\r\n labelMonthPrev: 'Previous month',\r\n\r\n // The title label to use for the dropdown selectors\r\n labelMonthSelect: 'Select a month',\r\n labelYearSelect: 'Select a year',\r\n\r\n // Months and weekdays\r\n monthsFull: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\r\n weekdaysFull: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\r\n\r\n // Today and clear\r\n today: 'Today',\r\n clear: 'Clear',\r\n close: 'Close',\r\n\r\n // Picker close behavior\r\n closeOnSelect: true,\r\n closeOnClear: true,\r\n\r\n // Update input value on select/clear\r\n updateInput: true,\r\n\r\n // The format to show on the `input` element\r\n format: 'd mmmm, yyyy',\r\n\r\n // Classes\r\n klass: {\r\n\r\n table: prefix + 'table',\r\n\r\n header: prefix + 'header',\r\n\r\n navPrev: prefix + 'nav--prev btn btn-flat',\r\n navNext: prefix + 'nav--next btn btn-flat',\r\n navDisabled: prefix + 'nav--disabled',\r\n\r\n month: prefix + 'month',\r\n year: prefix + 'year',\r\n\r\n selectMonth: prefix + 'select--month',\r\n selectYear: prefix + 'select--year',\r\n\r\n weekdays: prefix + 'weekday',\r\n\r\n day: prefix + 'day',\r\n disabled: prefix + 'day--disabled',\r\n selected: prefix + 'day--selected',\r\n highlighted: prefix + 'day--highlighted',\r\n now: prefix + 'day--today',\r\n infocus: prefix + 'day--infocus',\r\n outfocus: prefix + 'day--outfocus',\r\n\r\n footer: prefix + 'footer',\r\n\r\n buttonClear: prefix + 'button--clear',\r\n buttonToday: prefix + 'button--today',\r\n buttonClose: prefix + 'button--close'\r\n }\r\n }\r\n })(Picker.klasses().picker + '__')\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Extend the picker to add the date picker.\r\n */\r\n Picker.extend('pickadate', DatePicker)\r\n\r\n\r\n}));\r\n\r\n$.extend($.fn.pickadate.defaults, {\r\n selectMonths: true, // Creates a dropdown to control month\r\n selectYears: 15, // Creates a dropdown of 15 years to control year,\r\n\r\n onRender: function () {\r\n var $pickerInstance = this.$root;\r\n\r\n var year = this.get('highlight', 'yyyy');\r\n var day = this.get('highlight', 'dd');\r\n var month = this.get('highlight', 'mmm');\r\n var labeldayFirstThreeLetters = this.get('highlight', 'dddd').slice(0, 3);\r\n var monthFirstUC = month.charAt(0).toUpperCase() + month.slice(1)\r\n\r\n $pickerInstance.find('.picker__header').prepend('
      ' + labeldayFirstThreeLetters + ',
      ' + monthFirstUC + '
      ' + day + '
      ' + year + '
      ');\r\n }\r\n});\r\n\r\n$('.picker-opener').on('click', function (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n const elementOpenData = event.target.dataset.open;\r\n const $input = $(`#${elementOpenData}`).pickadate();\r\n const picker = $input.pickadate('picker');\r\n\r\n picker.open();\r\n});","!function($){var apiParams={set:{colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,focus:1},get:{selectedRegions:1,selectedMarkers:1,mapObject:1,regionName:1}};$.fn.vectorMap=function(options){var map,methodName,map=this.children(\".jvectormap-container\").data(\"mapObject\");if(\"addMap\"===options)jvm.Map.maps[arguments[1]]=arguments[2];else{if((\"set\"===options||\"get\"===options)&&apiParams[options][arguments[1]])return methodName=arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1),map[options+methodName].apply(map,Array.prototype.slice.call(arguments,2));options=options||{},options.container=this,map=new jvm.Map(options)}return this}}(jQuery),function(factory){\"function\"==typeof define&&define.amd?define([\"jquery\"],factory):\"object\"==typeof exports?module.exports=factory:factory(jQuery)}(function($){function handler(event){var orgEvent=event||window.event,args=slice.call(arguments,1),delta=0,deltaX=0,deltaY=0,absDelta=0;if(event=$.event.fix(orgEvent),event.type=\"mousewheel\",\"detail\"in orgEvent&&(deltaY=-1*orgEvent.detail),\"wheelDelta\"in orgEvent&&(deltaY=orgEvent.wheelDelta),\"wheelDeltaY\"in orgEvent&&(deltaY=orgEvent.wheelDeltaY),\"wheelDeltaX\"in orgEvent&&(deltaX=-1*orgEvent.wheelDeltaX),\"axis\"in orgEvent&&orgEvent.axis===orgEvent.HORIZONTAL_AXIS&&(deltaX=-1*deltaY,deltaY=0),delta=0===deltaY?deltaX:deltaY,\"deltaY\"in orgEvent&&(deltaY=-1*orgEvent.deltaY,delta=deltaY),\"deltaX\"in orgEvent&&(deltaX=orgEvent.deltaX,0===deltaY&&(delta=-1*deltaX)),0!==deltaY||0!==deltaX){if(1===orgEvent.deltaMode){var lineHeight=$.data(this,\"mousewheel-line-height\");delta*=lineHeight,deltaY*=lineHeight,deltaX*=lineHeight}else if(2===orgEvent.deltaMode){var pageHeight=$.data(this,\"mousewheel-page-height\");delta*=pageHeight,deltaY*=pageHeight,deltaX*=pageHeight}return absDelta=Math.max(Math.abs(deltaY),Math.abs(deltaX)),(!lowestDelta||lowestDelta>absDelta)&&(lowestDelta=absDelta,shouldAdjustOldDeltas(orgEvent,absDelta)&&(lowestDelta/=40)),shouldAdjustOldDeltas(orgEvent,absDelta)&&(delta/=40,deltaX/=40,deltaY/=40),delta=Math[delta>=1?\"floor\":\"ceil\"](delta/lowestDelta),deltaX=Math[deltaX>=1?\"floor\":\"ceil\"](deltaX/lowestDelta),deltaY=Math[deltaY>=1?\"floor\":\"ceil\"](deltaY/lowestDelta),event.deltaX=deltaX,event.deltaY=deltaY,event.deltaFactor=lowestDelta,event.deltaMode=0,args.unshift(event,delta,deltaX,deltaY),nullLowestDeltaTimeout&&clearTimeout(nullLowestDeltaTimeout),nullLowestDeltaTimeout=setTimeout(nullLowestDelta,200),($.event.dispatch||$.event.handle).apply(this,args)}}function nullLowestDelta(){lowestDelta=null}function shouldAdjustOldDeltas(orgEvent,absDelta){return special.settings.adjustOldDeltas&&\"mousewheel\"===orgEvent.type&&absDelta%120===0}var nullLowestDeltaTimeout,lowestDelta,toFix=[\"wheel\",\"mousewheel\",\"DOMMouseScroll\",\"MozMousePixelScroll\"],toBind=\"onwheel\"in document||document.documentMode>=9?[\"wheel\"]:[\"mousewheel\",\"DomMouseScroll\",\"MozMousePixelScroll\"],slice=Array.prototype.slice;if($.event.fixHooks)for(var i=toFix.length;i;)$.event.fixHooks[toFix[--i]]=$.event.mouseHooks;var special=$.event.special.mousewheel={version:\"3.1.9\",setup:function(){if(this.addEventListener)for(var i=toBind.length;i;)this.addEventListener(toBind[--i],handler,!1);else this.onmousewheel=handler;$.data(this,\"mousewheel-line-height\",special.getLineHeight(this)),$.data(this,\"mousewheel-page-height\",special.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var i=toBind.length;i;)this.removeEventListener(toBind[--i],handler,!1);else this.onmousewheel=null},getLineHeight:function(elem){return parseInt($(elem)[\"offsetParent\"in $.fn?\"offsetParent\":\"parent\"]().css(\"fontSize\"),10)},getPageHeight:function(elem){return $(elem).height()},settings:{adjustOldDeltas:!0}};$.fn.extend({mousewheel:function(fn){return fn?this.bind(\"mousewheel\",fn):this.trigger(\"mousewheel\")},unmousewheel:function(fn){return this.unbind(\"mousewheel\",fn)}})});var jvm={inherits:function(child,parent){function temp(){}temp.prototype=parent.prototype,child.prototype=new temp,child.prototype.constructor=child,child.parentClass=parent},mixin:function(target,source){var prop;for(prop in source.prototype)source.prototype.hasOwnProperty(prop)&&(target.prototype[prop]=source.prototype[prop])},min:function(values){var i,min=Number.MAX_VALUE;if(values instanceof Array)for(i=0;imax&&(max=values[i]);else for(i in values)values[i]>max&&(max=values[i]);return max},keys:function(object){var key,keys=[];for(key in object)keys.push(key);return keys},values:function(object){var key,i,values=[];for(i=0;i\");return img.error(function(){deferred.reject()}).load(function(){deferred.resolve(img)}),img.attr(\"src\",url),deferred},isImageUrl:function(s){return/\\.\\w{3,4}$/.test(s)}};jvm.$=jQuery,Array.prototype.indexOf||(Array.prototype.indexOf=function(searchElement,fromIndex){var k;if(null==this)throw new TypeError('\"this\" is null or not defined');var O=Object(this),len=O.length>>>0;if(0===len)return-1;var n=+fromIndex||0;if(1/0===Math.abs(n)&&(n=0),n>=len)return-1;for(k=Math.max(n>=0?n:len-Math.abs(n),0);len>k;){if(k in O&&O[k]===searchElement)return k;k++}return-1}),jvm.AbstractElement=function(name,config){this.node=this.createElement(name),this.name=name,this.properties={},config&&this.set(config)},jvm.AbstractElement.prototype.set=function(property,value){var key;if(\"object\"==typeof property)for(key in property)this.properties[key]=property[key],this.applyAttr(key,property[key]);else this.properties[property]=value,this.applyAttr(property,value)},jvm.AbstractElement.prototype.get=function(property){return this.properties[property]},jvm.AbstractElement.prototype.applyAttr=function(property,value){this.node.setAttribute(property,value)},jvm.AbstractElement.prototype.remove=function(){jvm.$(this.node).remove()},jvm.AbstractCanvasElement=function(container,width,height){this.container=container,this.setSize(width,height),this.rootElement=new jvm[this.classPrefix+\"GroupElement\"],this.node.appendChild(this.rootElement.node),this.container.appendChild(this.node)},jvm.AbstractCanvasElement.prototype.add=function(element,group){group=group||this.rootElement,group.add(element),element.canvas=this},jvm.AbstractCanvasElement.prototype.addPath=function(config,style,group){var el=new jvm[this.classPrefix+\"PathElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addCircle=function(config,style,group){var el=new jvm[this.classPrefix+\"CircleElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addImage=function(config,style,group){var el=new jvm[this.classPrefix+\"ImageElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addText=function(config,style,group){var el=new jvm[this.classPrefix+\"TextElement\"](config,style);return this.add(el,group),el},jvm.AbstractCanvasElement.prototype.addGroup=function(parentGroup){var el=new jvm[this.classPrefix+\"GroupElement\"];return parentGroup?parentGroup.node.appendChild(el.node):this.node.appendChild(el.node),el.canvas=this,el},jvm.AbstractShapeElement=function(name,config,style){this.style=style||{},this.style.current=this.style.current||{},this.isHovered=!1,this.isSelected=!1,this.updateStyle()},jvm.AbstractShapeElement.prototype.setStyle=function(property,value){var styles={};\"object\"==typeof property?styles=property:styles[property]=value,jvm.$.extend(this.style.current,styles),this.updateStyle()},jvm.AbstractShapeElement.prototype.updateStyle=function(){var attrs={};jvm.AbstractShapeElement.mergeStyles(attrs,this.style.initial),jvm.AbstractShapeElement.mergeStyles(attrs,this.style.current),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(attrs,this.style.hover),this.isSelected&&(jvm.AbstractShapeElement.mergeStyles(attrs,this.style.selected),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(attrs,this.style.selectedHover)),this.set(attrs)},jvm.AbstractShapeElement.mergeStyles=function(styles,newStyles){var key;newStyles=newStyles||{};for(key in newStyles)null===newStyles[key]?delete styles[key]:styles[key]=newStyles[key]},jvm.SVGElement=function(){jvm.SVGElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.SVGElement,jvm.AbstractElement),jvm.SVGElement.svgns=\"http://www.w3.org/2000/svg\",jvm.SVGElement.prototype.createElement=function(tagName){return document.createElementNS(jvm.SVGElement.svgns,tagName)},jvm.SVGElement.prototype.addClass=function(className){this.node.setAttribute(\"class\",className)},jvm.SVGElement.prototype.getElementCtr=function(ctr){return jvm[\"SVG\"+ctr]},jvm.SVGElement.prototype.getBBox=function(){return this.node.getBBox()},jvm.SVGGroupElement=function(){jvm.SVGGroupElement.parentClass.call(this,\"g\")},jvm.inherits(jvm.SVGGroupElement,jvm.SVGElement),jvm.SVGGroupElement.prototype.add=function(element){this.node.appendChild(element.node)},jvm.SVGCanvasElement=function(){this.classPrefix=\"SVG\",jvm.SVGCanvasElement.parentClass.call(this,\"svg\"),this.defsElement=new jvm.SVGElement(\"defs\"),this.node.appendChild(this.defsElement.node),jvm.AbstractCanvasElement.apply(this,arguments)},jvm.inherits(jvm.SVGCanvasElement,jvm.SVGElement),jvm.mixin(jvm.SVGCanvasElement,jvm.AbstractCanvasElement),jvm.SVGCanvasElement.prototype.setSize=function(width,height){this.width=width,this.height=height,this.node.setAttribute(\"width\",width),this.node.setAttribute(\"height\",height)},jvm.SVGCanvasElement.prototype.applyTransformParams=function(scale,transX,transY){this.scale=scale,this.transX=transX,this.transY=transY,this.rootElement.node.setAttribute(\"transform\",\"scale(\"+scale+\") translate(\"+transX+\", \"+transY+\")\")},jvm.SVGShapeElement=function(name,config){jvm.SVGShapeElement.parentClass.call(this,name,config),jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.SVGShapeElement,jvm.SVGElement),jvm.mixin(jvm.SVGShapeElement,jvm.AbstractShapeElement),jvm.SVGShapeElement.prototype.applyAttr=function(attr,value){var patternEl,imageEl,that=this;\"fill\"===attr&&jvm.isImageUrl(value)?jvm.SVGShapeElement.images[value]?this.applyAttr(\"fill\",\"url(#image\"+jvm.SVGShapeElement.images[value]+\")\"):jvm.whenImageLoaded(value).then(function(img){imageEl=new jvm.SVGElement(\"image\"),imageEl.node.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",value),imageEl.applyAttr(\"x\",\"0\"),imageEl.applyAttr(\"y\",\"0\"),imageEl.applyAttr(\"width\",img[0].width),imageEl.applyAttr(\"height\",img[0].height),patternEl=new jvm.SVGElement(\"pattern\"),patternEl.applyAttr(\"id\",\"image\"+jvm.SVGShapeElement.imageCounter),patternEl.applyAttr(\"x\",0),patternEl.applyAttr(\"y\",0),patternEl.applyAttr(\"width\",img[0].width/2),patternEl.applyAttr(\"height\",img[0].height/2),patternEl.applyAttr(\"viewBox\",\"0 0 \"+img[0].width+\" \"+img[0].height),patternEl.applyAttr(\"patternUnits\",\"userSpaceOnUse\"),patternEl.node.appendChild(imageEl.node),that.canvas.defsElement.node.appendChild(patternEl.node),jvm.SVGShapeElement.images[value]=jvm.SVGShapeElement.imageCounter++,that.applyAttr(\"fill\",\"url(#image\"+jvm.SVGShapeElement.images[value]+\")\")}):jvm.SVGShapeElement.parentClass.prototype.applyAttr.apply(this,arguments)},jvm.SVGShapeElement.imageCounter=1,jvm.SVGShapeElement.images={},jvm.SVGPathElement=function(config,style){jvm.SVGPathElement.parentClass.call(this,\"path\",config,style),this.node.setAttribute(\"fill-rule\",\"evenodd\")},jvm.inherits(jvm.SVGPathElement,jvm.SVGShapeElement),jvm.SVGCircleElement=function(config,style){jvm.SVGCircleElement.parentClass.call(this,\"circle\",config,style)},jvm.inherits(jvm.SVGCircleElement,jvm.SVGShapeElement),jvm.SVGImageElement=function(config,style){jvm.SVGImageElement.parentClass.call(this,\"image\",config,style)},jvm.inherits(jvm.SVGImageElement,jvm.SVGShapeElement),jvm.SVGImageElement.prototype.applyAttr=function(attr,value){var that=this;\"image\"==attr?jvm.whenImageLoaded(value).then(function(img){that.node.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",value),that.width=img[0].width,that.height=img[0].height,that.applyAttr(\"width\",that.width),that.applyAttr(\"height\",that.height),that.applyAttr(\"x\",that.cx-that.width/2),that.applyAttr(\"y\",that.cy-that.height/2),jvm.$(that.node).trigger(\"imageloaded\",[img])}):\"cx\"==attr?(this.cx=value,this.width&&this.applyAttr(\"x\",value-this.width/2)):\"cy\"==attr?(this.cy=value,this.height&&this.applyAttr(\"y\",value-this.height/2)):jvm.SVGImageElement.parentClass.prototype.applyAttr.apply(this,arguments)},jvm.SVGTextElement=function(config,style){jvm.SVGTextElement.parentClass.call(this,\"text\",config,style)},jvm.inherits(jvm.SVGTextElement,jvm.SVGShapeElement),jvm.SVGTextElement.prototype.applyAttr=function(attr,value){\"text\"===attr?this.node.textContent=value:jvm.SVGTextElement.parentClass.prototype.applyAttr.apply(this,arguments)},jvm.VMLElement=function(){jvm.VMLElement.VMLInitialized||jvm.VMLElement.initializeVML(),jvm.VMLElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.VMLElement,jvm.AbstractElement),jvm.VMLElement.VMLInitialized=!1,jvm.VMLElement.initializeVML=function(){try{document.namespaces.rvml||document.namespaces.add(\"rvml\",\"urn:schemas-microsoft-com:vml\"),jvm.VMLElement.prototype.createElement=function(tagName){return document.createElement(\"')}}catch(e){jvm.VMLElement.prototype.createElement=function(tagName){return document.createElement(\"<\"+tagName+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">')}}document.createStyleSheet().addRule(\".rvml\",\"behavior:url(#default#VML)\"),jvm.VMLElement.VMLInitialized=!0},jvm.VMLElement.prototype.getElementCtr=function(ctr){return jvm[\"VML\"+ctr]},jvm.VMLElement.prototype.addClass=function(className){jvm.$(this.node).addClass(className)},jvm.VMLElement.prototype.applyAttr=function(attr,value){this.node[attr]=value},jvm.VMLElement.prototype.getBBox=function(){var node=jvm.$(this.node);return{x:node.position().left/this.canvas.scale,y:node.position().top/this.canvas.scale,width:node.width()/this.canvas.scale,height:node.height()/this.canvas.scale}},jvm.VMLGroupElement=function(){jvm.VMLGroupElement.parentClass.call(this,\"group\"),this.node.style.left=\"0px\",this.node.style.top=\"0px\",this.node.coordorigin=\"0 0\"},jvm.inherits(jvm.VMLGroupElement,jvm.VMLElement),jvm.VMLGroupElement.prototype.add=function(element){this.node.appendChild(element.node)},jvm.VMLCanvasElement=function(){this.classPrefix=\"VML\",jvm.VMLCanvasElement.parentClass.call(this,\"group\"),jvm.AbstractCanvasElement.apply(this,arguments),this.node.style.position=\"absolute\"},jvm.inherits(jvm.VMLCanvasElement,jvm.VMLElement),jvm.mixin(jvm.VMLCanvasElement,jvm.AbstractCanvasElement),jvm.VMLCanvasElement.prototype.setSize=function(width,height){var paths,groups,i,l;if(this.width=width,this.height=height,this.node.style.width=width+\"px\",this.node.style.height=height+\"px\",this.node.coordsize=width+\" \"+height,this.node.coordorigin=\"0 0\",this.rootElement){for(paths=this.rootElement.node.getElementsByTagName(\"shape\"),i=0,l=paths.length;l>i;i++)paths[i].coordsize=width+\" \"+height,paths[i].style.width=width+\"px\",paths[i].style.height=height+\"px\";for(groups=this.node.getElementsByTagName(\"group\"),i=0,l=groups.length;l>i;i++)groups[i].coordsize=width+\" \"+height,groups[i].style.width=width+\"px\",groups[i].style.height=height+\"px\"}},jvm.VMLCanvasElement.prototype.applyTransformParams=function(scale,transX,transY){this.scale=scale,this.transX=transX,this.transY=transY,this.rootElement.node.coordorigin=this.width-transX-this.width/100+\",\"+(this.height-transY-this.height/100),this.rootElement.node.coordsize=this.width/scale+\",\"+this.height/scale},jvm.VMLShapeElement=function(name,config){jvm.VMLShapeElement.parentClass.call(this,name,config),this.fillElement=new jvm.VMLElement(\"fill\"),this.strokeElement=new jvm.VMLElement(\"stroke\"),this.node.appendChild(this.fillElement.node),this.node.appendChild(this.strokeElement.node),this.node.stroked=!1,jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.VMLShapeElement,jvm.VMLElement),jvm.mixin(jvm.VMLShapeElement,jvm.AbstractShapeElement),jvm.VMLShapeElement.prototype.applyAttr=function(attr,value){switch(attr){case\"fill\":this.node.fillcolor=value;break;case\"fill-opacity\":this.fillElement.node.opacity=Math.round(100*value)+\"%\";break;case\"stroke\":this.node.stroked=\"none\"===value?!1:!0,this.node.strokecolor=value;break;case\"stroke-opacity\":this.strokeElement.node.opacity=Math.round(100*value)+\"%\";break;case\"stroke-width\":this.node.stroked=0===parseInt(value,10)?!1:!0,this.node.strokeweight=value;break;case\"d\":this.node.path=jvm.VMLPathElement.pathSvgToVml(value);break;default:jvm.VMLShapeElement.parentClass.prototype.applyAttr.apply(this,arguments)}},jvm.VMLPathElement=function(config,style){var scale=new jvm.VMLElement(\"skew\");jvm.VMLPathElement.parentClass.call(this,\"shape\",config,style),this.node.coordorigin=\"0 0\",scale.node.on=!0,scale.node.matrix=\"0.01,0,0,0.01,0,0\",scale.node.offset=\"0,0\",this.node.appendChild(scale.node)},jvm.inherits(jvm.VMLPathElement,jvm.VMLShapeElement),jvm.VMLPathElement.prototype.applyAttr=function(attr,value){\"d\"===attr?this.node.path=jvm.VMLPathElement.pathSvgToVml(value):jvm.VMLShapeElement.prototype.applyAttr.call(this,attr,value)},jvm.VMLPathElement.pathSvgToVml=function(path){var ctrlx,ctrly,cx=0,cy=0;return path=path.replace(/(-?\\d+)e(-?\\d+)/g,\"0\"),path.replace(/([MmLlHhVvCcSs])\\s*((?:-?\\d*(?:\\.\\d+)?\\s*,?\\s*)+)/g,function(segment,letter,coords){coords=coords.replace(/(\\d)-/g,\"$1,-\").replace(/^\\s+/g,\"\").replace(/\\s+$/g,\"\").replace(/\\s+/g,\",\").split(\",\"),coords[0]||coords.shift();for(var i=0,l=coords.length;l>i;i++)coords[i]=Math.round(100*coords[i]);switch(letter){case\"m\":return cx+=coords[0],cy+=coords[1],\"t\"+coords.join(\",\");case\"M\":return cx=coords[0],cy=coords[1],\"m\"+coords.join(\",\");case\"l\":return cx+=coords[0],cy+=coords[1],\"r\"+coords.join(\",\");case\"L\":return cx=coords[0],cy=coords[1],\"l\"+coords.join(\",\");case\"h\":return cx+=coords[0],\"r\"+coords[0]+\",0\";case\"H\":return cx=coords[0],\"l\"+cx+\",\"+cy;case\"v\":return cy+=coords[0],\"r0,\"+coords[0];case\"V\":return cy=coords[0],\"l\"+cx+\",\"+cy;case\"c\":return ctrlx=cx+coords[coords.length-4],ctrly=cy+coords[coords.length-3],cx+=coords[coords.length-2],cy+=coords[coords.length-1],\"v\"+coords.join(\",\");case\"C\":return ctrlx=coords[coords.length-4],ctrly=coords[coords.length-3],cx=coords[coords.length-2],cy=coords[coords.length-1],\"c\"+coords.join(\",\");case\"s\":return coords.unshift(cy-ctrly),coords.unshift(cx-ctrlx),ctrlx=cx+coords[coords.length-4],ctrly=cy+coords[coords.length-3],cx+=coords[coords.length-2],cy+=coords[coords.length-1],\"v\"+coords.join(\",\");case\"S\":return coords.unshift(cy+cy-ctrly),coords.unshift(cx+cx-ctrlx),ctrlx=coords[coords.length-4],ctrly=coords[coords.length-3],cx=coords[coords.length-2],cy=coords[coords.length-1],\"c\"+coords.join(\",\")}return\"\"}).replace(/z/g,\"e\")},jvm.VMLCircleElement=function(config,style){jvm.VMLCircleElement.parentClass.call(this,\"oval\",config,style)},jvm.inherits(jvm.VMLCircleElement,jvm.VMLShapeElement),jvm.VMLCircleElement.prototype.applyAttr=function(attr,value){switch(attr){case\"r\":this.node.style.width=2*value+\"px\",this.node.style.height=2*value+\"px\",this.applyAttr(\"cx\",this.get(\"cx\")||0),this.applyAttr(\"cy\",this.get(\"cy\")||0);break;case\"cx\":if(!value)return;this.node.style.left=value-(this.get(\"r\")||0)+\"px\";break;case\"cy\":if(!value)return;this.node.style.top=value-(this.get(\"r\")||0)+\"px\";break;default:jvm.VMLCircleElement.parentClass.prototype.applyAttr.call(this,attr,value)}},jvm.VectorCanvas=function(container,width,height){return this.mode=window.SVGAngle?\"svg\":\"vml\",this.impl=\"svg\"==this.mode?new jvm.SVGCanvasElement(container,width,height):new jvm.VMLCanvasElement(container,width,height),this.impl.mode=this.mode,this.impl},jvm.SimpleScale=function(scale){this.scale=scale},jvm.SimpleScale.prototype.getValue=function(value){return value},jvm.OrdinalScale=function(scale){this.scale=scale},jvm.OrdinalScale.prototype.getValue=function(value){return this.scale[value]},jvm.OrdinalScale.prototype.getTicks=function(){var key,ticks=[];for(key in this.scale)ticks.push({label:key,value:this.scale[key]});return ticks},jvm.NumericScale=function(scale,normalizeFunction,minValue,maxValue){this.scale=[],normalizeFunction=normalizeFunction||\"linear\",scale&&this.setScale(scale),normalizeFunction&&this.setNormalizeFunction(normalizeFunction),\"undefined\"!=typeof minValue&&this.setMin(minValue),\"undefined\"!=typeof maxValue&&this.setMax(maxValue)},jvm.NumericScale.prototype={setMin:function(min){this.clearMinValue=min,this.minValue=\"function\"==typeof this.normalize?this.normalize(min):min},setMax:function(max){this.clearMaxValue=max,this.maxValue=\"function\"==typeof this.normalize?this.normalize(max):max},setScale:function(scale){var i;for(this.scale=[],i=0;i=0;)value-=lengthes[i],i++;return value=this.vectorToNum(i==this.scale.length-1?this.scale[i]:this.vectorAdd(this.scale[i],this.vectorMult(this.vectorSubtract(this.scale[i+1],this.scale[i]),value/lengthes[i])))},vectorToNum:function(vector){var i,num=0;for(i=0;i=err?step*=10:.35>=err?step*=5:.75>=err&&(step*=2),extent[0]=Math.floor(extent[0]/step)*step,extent[1]=Math.ceil(extent[1]/step)*step,tick=extent[0];tick<=extent[1];)v=tick==extent[0]?this.clearMinValue:tick==extent[1]?this.clearMaxValue:tick,ticks.push({label:tick,value:this.getValue(v)}),tick+=step;return ticks}},jvm.ColorScale=function(){jvm.ColorScale.parentClass.apply(this,arguments)},jvm.inherits(jvm.ColorScale,jvm.NumericScale),jvm.ColorScale.prototype.setScale=function(scale){var i;for(i=0;i\"),this.body.addClass(\"jvectormap-legend\"),this.params.cssClass&&this.body.addClass(this.params.cssClass),params.vertical?this.map.legendCntVertical.append(this.body):this.map.legendCntHorizontal.append(this.body),this.render()},jvm.Legend.prototype.render=function(){var i,tick,sample,label,ticks=this.series.scale.getTicks(),inner=jvm.$(\"
      \").addClass(\"jvectormap-legend-inner\");for(this.body.html(\"\"),this.params.title&&this.body.append(jvm.$(\"
      \").addClass(\"jvectormap-legend-title\").html(this.params.title)),this.body.append(inner),i=0;i\").addClass(\"jvectormap-legend-tick\"),sample=jvm.$(\"
      \").addClass(\"jvectormap-legend-tick-sample\"),this.series.params.attribute){case\"fill\":jvm.isImageUrl(ticks[i].value)?sample.css(\"background\",\"url(\"+ticks[i].value+\")\"):sample.css(\"background\",ticks[i].value);break;case\"stroke\":sample.css(\"background\",ticks[i].value);break;case\"image\":sample.css(\"background\",\"url(\"+ticks[i].value+\") no-repeat center center\");break;case\"r\":jvm.$(\"
      \").css({\"border-radius\":ticks[i].value,border:this.map.params.markerStyle.initial[\"stroke-width\"]+\"px \"+this.map.params.markerStyle.initial.stroke+\" solid\",width:2*ticks[i].value+\"px\",height:2*ticks[i].value+\"px\",background:this.map.params.markerStyle.initial.fill}).appendTo(sample)}tick.append(sample),label=ticks[i].label,this.params.labelRender&&(label=this.params.labelRender(label)),tick.append(jvm.$(\"
      \"+label+\"
      \").addClass(\"jvectormap-legend-tick-text\")),inner.append(tick)}inner.append(jvm.$(\"
      \").css(\"clear\",\"both\"))},jvm.DataSeries=function(params,elements,map){var scaleConstructor;params=params||{},params.attribute=params.attribute||\"fill\",this.elements=elements,this.params=params,this.map=map,params.attributes&&this.setAttributes(params.attributes),jvm.$.isArray(params.scale)?(scaleConstructor=\"fill\"===params.attribute||\"stroke\"===params.attribute?jvm.ColorScale:jvm.NumericScale,this.scale=new scaleConstructor(params.scale,params.normalizeFunction,params.min,params.max)):this.scale=params.scale?new jvm.OrdinalScale(params.scale):new jvm.SimpleScale(params.scale),this.values=params.values||{},this.setValues(this.values),this.params.legend&&(this.legend=new jvm.Legend($.extend({map:this.map,series:this},this.params.legend)))},jvm.DataSeries.prototype={setAttributes:function(key,attr){var code,attrs=key;if(\"string\"==typeof key)this.elements[key]&&this.elements[key].setStyle(this.params.attribute,attr);else for(code in attrs)this.elements[code]&&this.elements[code].element.setStyle(this.params.attribute,attrs[code])},setValues:function(values){var val,cc,max=-Number.MAX_VALUE,min=Number.MAX_VALUE,attrs={};if(this.scale instanceof jvm.OrdinalScale||this.scale instanceof jvm.SimpleScale)for(cc in values)attrs[cc]=values[cc]?this.scale.getValue(values[cc]):this.elements[cc].element.style.initial[this.params.attribute];else{if(\"undefined\"==typeof this.params.min||\"undefined\"==typeof this.params.max)for(cc in values)val=parseFloat(values[cc]),val>max&&(max=val),min>val&&(min=val);\"undefined\"==typeof this.params.min?(this.scale.setMin(min),this.params.min=min):this.scale.setMin(this.params.min),\"undefined\"==typeof this.params.max?(this.scale.setMax(max),this.params.max=max):this.scale.setMax(this.params.max);for(cc in values)\"indexOf\"!=cc&&(val=parseFloat(values[cc]),attrs[cc]=isNaN(val)?this.elements[cc].element.style.initial[this.params.attribute]:this.scale.getValue(val))}this.setAttributes(attrs),jvm.$.extend(this.values,values)},clear:function(){var key,attrs={};for(key in this.values)this.elements[key]&&(attrs[key]=this.elements[key].element.shape.style.initial[this.params.attribute]);this.setAttributes(attrs),this.values={}},setScale:function(scale){this.scale.setScale(scale),this.values&&this.setValues(this.values)},setNormalizeFunction:function(f){this.scale.setNormalizeFunction(f),this.values&&this.setValues(this.values)}},jvm.Proj={degRad:180/Math.PI,radDeg:Math.PI/180,radius:6381372,sgn:function(n){return n>0?1:0>n?-1:n},mill:function(lat,lng,c){return{x:this.radius*(lng-c)*this.radDeg,y:-this.radius*Math.log(Math.tan((45+.4*lat)*this.radDeg))/.8}},mill_inv:function(x,y,c){return{lat:(2.5*Math.atan(Math.exp(.8*y/this.radius))-5*Math.PI/8)*this.degRad,lng:(c*this.radDeg+x/this.radius)*this.degRad}},merc:function(lat,lng,c){return{x:this.radius*(lng-c)*this.radDeg,y:-this.radius*Math.log(Math.tan(Math.PI/4+lat*Math.PI/360))}},merc_inv:function(x,y,c){return{lat:(2*Math.atan(Math.exp(y/this.radius))-Math.PI/2)*this.degRad,lng:(c*this.radDeg+x/this.radius)*this.degRad}},aea:function(lat,lng,c){var fi0=0,lambda0=c*this.radDeg,fi1=29.5*this.radDeg,fi2=45.5*this.radDeg,fi=lat*this.radDeg,lambda=lng*this.radDeg,n=(Math.sin(fi1)+Math.sin(fi2))/2,C=Math.cos(fi1)*Math.cos(fi1)+2*n*Math.sin(fi1),theta=n*(lambda-lambda0),ro=Math.sqrt(C-2*n*Math.sin(fi))/n,ro0=Math.sqrt(C-2*n*Math.sin(fi0))/n;return{x:ro*Math.sin(theta)*this.radius,y:-(ro0-ro*Math.cos(theta))*this.radius}},aea_inv:function(xCoord,yCoord,c){var x=xCoord/this.radius,y=yCoord/this.radius,fi0=0,lambda0=c*this.radDeg,fi1=29.5*this.radDeg,fi2=45.5*this.radDeg,n=(Math.sin(fi1)+Math.sin(fi2))/2,C=Math.cos(fi1)*Math.cos(fi1)+2*n*Math.sin(fi1),ro0=Math.sqrt(C-2*n*Math.sin(fi0))/n,ro=Math.sqrt(x*x+(ro0-y)*(ro0-y)),theta=Math.atan(x/(ro0-y));return{lat:Math.asin((C-ro*ro*n*n)/(2*n))*this.degRad,lng:(lambda0+theta/n)*this.degRad}},lcc:function(lat,lng,c){var fi0=0,lambda0=c*this.radDeg,lambda=lng*this.radDeg,fi1=33*this.radDeg,fi2=45*this.radDeg,fi=lat*this.radDeg,n=Math.log(Math.cos(fi1)*(1/Math.cos(fi2)))/Math.log(Math.tan(Math.PI/4+fi2/2)*(1/Math.tan(Math.PI/4+fi1/2))),F=Math.cos(fi1)*Math.pow(Math.tan(Math.PI/4+fi1/2),n)/n,ro=F*Math.pow(1/Math.tan(Math.PI/4+fi/2),n),ro0=F*Math.pow(1/Math.tan(Math.PI/4+fi0/2),n);return{x:ro*Math.sin(n*(lambda-lambda0))*this.radius,y:-(ro0-ro*Math.cos(n*(lambda-lambda0)))*this.radius}},lcc_inv:function(xCoord,yCoord,c){var x=xCoord/this.radius,y=yCoord/this.radius,fi0=0,lambda0=c*this.radDeg,fi1=33*this.radDeg,fi2=45*this.radDeg,n=Math.log(Math.cos(fi1)*(1/Math.cos(fi2)))/Math.log(Math.tan(Math.PI/4+fi2/2)*(1/Math.tan(Math.PI/4+fi1/2))),F=Math.cos(fi1)*Math.pow(Math.tan(Math.PI/4+fi1/2),n)/n,ro0=F*Math.pow(1/Math.tan(Math.PI/4+fi0/2),n),ro=this.sgn(n)*Math.sqrt(x*x+(ro0-y)*(ro0-y)),theta=Math.atan(x/(ro0-y));return{lat:(2*Math.atan(Math.pow(F/ro,1/n))-Math.PI/2)*this.degRad,lng:(lambda0+theta/n)*this.degRad}}},jvm.MapObject=function(){},jvm.MapObject.prototype.getLabelText=function(key){var text;return text=this.config.label?\"function\"==typeof this.config.label.render?this.config.label.render(key):key:null},jvm.MapObject.prototype.getLabelOffsets=function(key){var offsets;return this.config.label&&(\"function\"==typeof this.config.label.offsets?offsets=this.config.label.offsets(key):\"object\"==typeof this.config.label.offsets&&(offsets=this.config.label.offsets[key])),offsets||[0,0]},jvm.MapObject.prototype.setHovered=function(isHovered){this.isHovered!==isHovered&&(this.isHovered=isHovered,this.shape.isHovered=isHovered,this.shape.updateStyle(),this.label&&(this.label.isHovered=isHovered,this.label.updateStyle()))},jvm.MapObject.prototype.setSelected=function(isSelected){this.isSelected!==isSelected&&(this.isSelected=isSelected,this.shape.isSelected=isSelected,this.shape.updateStyle(),this.label&&(this.label.isSelected=isSelected,this.label.updateStyle()),jvm.$(this.shape).trigger(\"selected\",[isSelected]))},jvm.MapObject.prototype.setStyle=function(){this.shape.setStyle.apply(this.shape,arguments)},jvm.MapObject.prototype.remove=function(){this.shape.remove(),this.label&&this.label.remove()},jvm.Region=function(config){var bbox,text,offsets;this.config=config,this.map=this.config.map,this.shape=config.canvas.addPath({d:config.path,\"data-code\":config.code},config.style,config.canvas.rootElement),this.shape.addClass(\"jvectormap-region jvectormap-element\"),bbox=this.shape.getBBox(),text=this.getLabelText(config.code),this.config.label&&text&&(offsets=this.getLabelOffsets(config.code),this.labelX=bbox.x+bbox.width/2+offsets[0],this.labelY=bbox.y+bbox.height/2+offsets[1],this.label=config.canvas.addText({text:text,\"text-anchor\":\"middle\",\"alignment-baseline\":\"central\",x:this.labelX,y:this.labelY,\"data-code\":config.code},config.labelStyle,config.labelsGroup),this.label.addClass(\"jvectormap-region jvectormap-element\"))\r\n},jvm.inherits(jvm.Region,jvm.MapObject),jvm.Region.prototype.updateLabelPosition=function(){this.label&&this.label.set({x:this.labelX*this.map.scale+this.map.transX*this.map.scale,y:this.labelY*this.map.scale+this.map.transY*this.map.scale})},jvm.Marker=function(config){var text;this.config=config,this.map=this.config.map,this.isImage=!!this.config.style.initial.image,this.createShape(),text=this.getLabelText(config.index),this.config.label&&text&&(this.offsets=this.getLabelOffsets(config.index),this.labelX=config.cx/this.map.scale-this.map.transX,this.labelY=config.cy/this.map.scale-this.map.transY,this.label=config.canvas.addText({text:text,\"data-index\":config.index,dy:\"0.6ex\",x:this.labelX,y:this.labelY},config.labelStyle,config.labelsGroup),this.label.addClass(\"jvectormap-marker jvectormap-element\"))},jvm.inherits(jvm.Marker,jvm.MapObject),jvm.Marker.prototype.createShape=function(){var that=this;this.shape&&this.shape.remove(),this.shape=this.config.canvas[this.isImage?\"addImage\":\"addCircle\"]({\"data-index\":this.config.index,cx:this.config.cx,cy:this.config.cy},this.config.style,this.config.group),this.shape.addClass(\"jvectormap-marker jvectormap-element\"),this.isImage&&jvm.$(this.shape.node).on(\"imageloaded\",function(){that.updateLabelPosition()})},jvm.Marker.prototype.updateLabelPosition=function(){this.label&&this.label.set({x:this.labelX*this.map.scale+this.offsets[0]+this.map.transX*this.map.scale+5+(this.isImage?(this.shape.width||0)/2:this.shape.properties.r),y:this.labelY*this.map.scale+this.map.transY*this.map.scale+this.offsets[1]})},jvm.Marker.prototype.setStyle=function(property){var isImage;jvm.Marker.parentClass.prototype.setStyle.apply(this,arguments),\"r\"===property&&this.updateLabelPosition(),isImage=!!this.shape.get(\"image\"),isImage!=this.isImage&&(this.isImage=isImage,this.config.style=jvm.$.extend(!0,{},this.shape.style),this.createShape())},jvm.Map=function(params){var e,map=this;if(this.params=jvm.$.extend(!0,{},jvm.Map.defaultParams,params),!jvm.Map.maps[this.params.map])throw new Error(\"Attempt to use map which was not loaded: \"+this.params.map);this.mapData=jvm.Map.maps[this.params.map],this.markers={},this.regions={},this.regionsColors={},this.regionsData={},this.container=jvm.$(\"
      \").addClass(\"jvectormap-container\"),this.params.container&&this.params.container.append(this.container),this.container.data(\"mapObject\",this),this.defaultWidth=this.mapData.width,this.defaultHeight=this.mapData.height,this.setBackgroundColor(this.params.backgroundColor),this.onResize=function(){map.updateSize()},jvm.$(window).resize(this.onResize);for(e in jvm.Map.apiEvents)this.params[e]&&this.container.bind(jvm.Map.apiEvents[e]+\".jvectormap\",this.params[e]);this.canvas=new jvm.VectorCanvas(this.container[0],this.width,this.height),this.params.bindTouchEvents&&(\"ontouchstart\"in window||window.DocumentTouch&&document instanceof DocumentTouch?this.bindContainerTouchEvents():window.MSGesture&&this.bindContainerPointerEvents()),this.bindContainerEvents(),this.bindElementEvents(),this.createTip(),this.params.zoomButtons&&this.bindZoomButtons(),this.createRegions(),this.createMarkers(this.params.markers||{}),this.updateSize(),this.params.focusOn&&(\"string\"==typeof this.params.focusOn?this.params.focusOn={region:this.params.focusOn}:jvm.$.isArray(this.params.focusOn)&&(this.params.focusOn={regions:this.params.focusOn}),this.setFocus(this.params.focusOn)),this.params.selectedRegions&&this.setSelectedRegions(this.params.selectedRegions),this.params.selectedMarkers&&this.setSelectedMarkers(this.params.selectedMarkers),this.legendCntHorizontal=jvm.$(\"
      \").addClass(\"jvectormap-legend-cnt jvectormap-legend-cnt-h\"),this.legendCntVertical=jvm.$(\"
      \").addClass(\"jvectormap-legend-cnt jvectormap-legend-cnt-v\"),this.container.append(this.legendCntHorizontal),this.container.append(this.legendCntVertical),this.params.series&&this.createSeries()},jvm.Map.prototype={transX:0,transY:0,scale:1,baseTransX:0,baseTransY:0,baseScale:1,width:0,height:0,setBackgroundColor:function(backgroundColor){this.container.css(\"background-color\",backgroundColor)},resize:function(){var curBaseScale=this.baseScale;this.width/this.height>this.defaultWidth/this.defaultHeight?(this.baseScale=this.height/this.defaultHeight,this.baseTransX=Math.abs(this.width-this.defaultWidth*this.baseScale)/(2*this.baseScale)):(this.baseScale=this.width/this.defaultWidth,this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)),this.scale*=this.baseScale/curBaseScale,this.transX*=this.baseScale/curBaseScale,this.transY*=this.baseScale/curBaseScale},updateSize:function(){this.width=this.container.width(),this.height=this.container.height(),this.resize(),this.canvas.setSize(this.width,this.height),this.applyTransform()},reset:function(){var key,i;for(key in this.series)for(i=0;imaxTransY?this.transY=maxTransY:this.transYmaxTransX?this.transX=maxTransX:this.transXtouches[1].pageX?touches[1].pageX+(touches[0].pageX-touches[1].pageX)/2:touches[0].pageX+(touches[1].pageX-touches[0].pageX)/2,centerTouchY=touches[0].pageY>touches[1].pageY?touches[1].pageY+(touches[0].pageY-touches[1].pageY)/2:touches[0].pageY+(touches[1].pageY-touches[0].pageY)/2,centerTouchX-=offset.left,centerTouchY-=offset.top,touchStartScale=map.scale,touchStartDistance=Math.sqrt(Math.pow(touches[0].pageX-touches[1].pageX,2)+Math.pow(touches[0].pageY-touches[1].pageY,2)))),lastTouchesLength=touches.length};jvm.$(this.container).bind(\"touchstart\",handleTouchEvent),jvm.$(this.container).bind(\"touchmove\",handleTouchEvent)},bindContainerPointerEvents:function(){var map=this,gesture=new MSGesture,element=this.container[0],handlePointerDownEvent=function(e){gesture.addPointer(e.pointerId)},handleGestureEvent=function(e){var transXOld,transYOld;(0!=e.translationX||0!=e.translationY)&&(transXOld=map.transX,transYOld=map.transY,map.transX+=e.translationX/map.scale,map.transY+=e.translationY/map.scale,map.applyTransform(),map.tip.hide(),(transXOld!=map.transX||transYOld!=map.transY)&&e.preventDefault()),1!=e.scale&&(map.setScale(map.scale*e.scale,e.offsetX,e.offsetY),map.tip.hide(),e.preventDefault())};gesture.target=element,element.addEventListener(\"MSGestureChange\",handleGestureEvent,!1),element.addEventListener(\"pointerdown\",handlePointerDownEvent,!1)},bindElementEvents:function(){var pageX,pageY,mouseMoved,map=this;this.container.mousemove(function(e){Math.abs(pageX-e.pageX)+Math.abs(pageY-e.pageY)>2&&(mouseMoved=!0)}),this.container.delegate(\"[class~='jvectormap-element']\",\"mouseover mouseout\",function(e){var baseVal=jvm.$(this).attr(\"class\").baseVal||jvm.$(this).attr(\"class\"),type=-1===baseVal.indexOf(\"jvectormap-region\")?\"marker\":\"region\",code=jvm.$(this).attr(\"region\"==type?\"data-code\":\"data-index\"),element=\"region\"==type?map.regions[code].element:map.markers[code].element,tipText=\"region\"==type?map.mapData.paths[code].name:map.markers[code].config.name||\"\",tipShowEvent=jvm.$.Event(type+\"TipShow.jvectormap\"),overEvent=jvm.$.Event(type+\"Over.jvectormap\");\"mouseover\"==e.type?(map.container.trigger(overEvent,[code]),overEvent.isDefaultPrevented()||element.setHovered(!0),map.tip.text(tipText),map.container.trigger(tipShowEvent,[map.tip,code]),tipShowEvent.isDefaultPrevented()||(map.tip.show(),map.tipWidth=map.tip.width(),map.tipHeight=map.tip.height())):(element.setHovered(!1),map.tip.hide(),map.container.trigger(type+\"Out.jvectormap\",[code]))}),this.container.delegate(\"[class~='jvectormap-element']\",\"mousedown\",function(e){pageX=e.pageX,pageY=e.pageY,mouseMoved=!1}),this.container.delegate(\"[class~='jvectormap-element']\",\"mouseup\",function(){var baseVal=jvm.$(this).attr(\"class\").baseVal?jvm.$(this).attr(\"class\").baseVal:jvm.$(this).attr(\"class\"),type=-1===baseVal.indexOf(\"jvectormap-region\")?\"marker\":\"region\",code=jvm.$(this).attr(\"region\"==type?\"data-code\":\"data-index\"),clickEvent=jvm.$.Event(type+\"Click.jvectormap\"),element=\"region\"==type?map.regions[code].element:map.markers[code].element;mouseMoved||(map.container.trigger(clickEvent,[code]),(\"region\"===type&&map.params.regionsSelectable||\"marker\"===type&&map.params.markersSelectable)&&(clickEvent.isDefaultPrevented()||(map.params[type+\"sSelectableOne\"]&&map.clearSelected(type+\"s\"),element.setSelected(!element.isSelected))))})},bindZoomButtons:function(){var map=this;jvm.$(\"
      \").addClass(\"jvectormap-zoomin\").text(\"+\").appendTo(this.container),jvm.$(\"
      \").addClass(\"jvectormap-zoomout\").html(\"−\").appendTo(this.container),this.container.find(\".jvectormap-zoomin\").click(function(){map.setScale(map.scale*map.params.zoomStep,map.width/2,map.height/2,!1,map.params.zoomAnimate)}),this.container.find(\".jvectormap-zoomout\").click(function(){map.setScale(map.scale/map.params.zoomStep,map.width/2,map.height/2,!1,map.params.zoomAnimate)})},createTip:function(){var map=this;this.tip=jvm.$(\"
      \").addClass(\"jvectormap-tip\").appendTo(jvm.$(\"body\")),this.container.mousemove(function(e){var left=e.pageX-15-map.tipWidth,top=e.pageY-15-map.tipHeight;5>left&&(left=e.pageX+15),5>top&&(top=e.pageY+15),map.tip.css({left:left,top:top})})},setScale:function(scale,anchorX,anchorY,isCentered,animate){var interval,scaleStart,scaleDiff,transXStart,transXDiff,transYStart,transYDiff,transX,transY,viewportChangeEvent=jvm.$.Event(\"zoom.jvectormap\"),that=this,i=0,count=Math.abs(Math.round(60*(scale-this.scale)/Math.max(scale,this.scale))),deferred=new jvm.$.Deferred;return scale>this.params.zoomMax*this.baseScale?scale=this.params.zoomMax*this.baseScale:scale0?(scaleStart=this.scale,scaleDiff=(scale-scaleStart)/count,transXStart=this.transX*this.scale,transYStart=this.transY*this.scale,transXDiff=(transX*scale-transXStart)/count,transYDiff=(transY*scale-transYStart)/count,interval=setInterval(function(){i+=1,that.scale=scaleStart+scaleDiff*i,that.transX=(transXStart+transXDiff*i)/that.scale,that.transY=(transYStart+transYDiff*i)/that.scale,that.applyTransform(),i==count&&(clearInterval(interval),that.container.trigger(viewportChangeEvent,[scale/that.baseScale]),deferred.resolve())},10)):(this.transX=transX,this.transY=transY,this.scale=scale,this.applyTransform(),this.container.trigger(viewportChangeEvent,[scale/this.baseScale]),deferred.resolve()),deferred},setFocus:function(config){var bbox,itemBbox,newBbox,codes,i,point;if(config=config||{},config.region?codes=[config.region]:config.regions&&(codes=config.regions),codes){for(i=0;ilng&&(lng+=360),point=jvm.Proj[proj.type](lat,lng,centralMeridian),inset=this.getInsetForPoint(point.x,point.y),inset?(bbox=inset.bbox,point.x=(point.x-bbox[0].x)/(bbox[1].x-bbox[0].x)*inset.width*this.scale,point.y=(point.y-bbox[0].y)/(bbox[1].y-bbox[0].y)*inset.height*this.scale,{x:point.x+this.transX*this.scale+inset.left*this.scale,y:point.y+this.transY*this.scale+inset.top*this.scale}):!1},pointToLatLng:function(x,y){var i,inset,bbox,nx,ny,proj=jvm.Map.maps[this.params.map].projection,centralMeridian=proj.centralMeridian,insets=jvm.Map.maps[this.params.map].insets;for(i=0;ibbox[0].x&&nxbbox[0].y&&nybbox[0].x&&xbbox[0].y&&y\").addClass(\"jvectormap-goback\").text(\"Back\").appendTo(this.params.container),this.backButton.hide(),this.backButton.click(function(){that.goBack()}),this.spinner=jvm.$(\"
      \").addClass(\"jvectormap-spinner\").appendTo(this.params.container),this.spinner.hide()},jvm.MultiMap.prototype={addMap:function(name,config){var cnt=jvm.$(\"
      \").css({width:\"100%\",height:\"100%\"});return this.params.container.append(cnt),this.maps[name]=new jvm.Map(jvm.$.extend(config,{container:cnt})),this.params.maxLevel>config.multiMapLevel&&this.maps[name].container.on(\"regionClick.jvectormap\",{scope:this},function(e,code){var multimap=e.data.scope,mapName=multimap.params.mapNameByCode(code,multimap);multimap.drillDownPromise&&\"pending\"===multimap.drillDownPromise.state()||multimap.drillDown(mapName,code)}),this.maps[name]},downloadMap:function(code){var that=this,deferred=jvm.$.Deferred();return this.mapsLoaded[code]?deferred.resolve():jvm.$.get(this.params.mapUrlByCode(code,this)).then(function(){that.mapsLoaded[code]=!0,deferred.resolve()},function(){deferred.reject()}),deferred},drillDown:function(name,code){var currentMap=this.history[this.history.length-1],that=this,focusPromise=currentMap.setFocus({region:code,animate:!0}),downloadPromise=this.downloadMap(code);focusPromise.then(function(){\"pending\"===downloadPromise.state()&&that.spinner.show()}),downloadPromise.always(function(){that.spinner.hide()}),this.drillDownPromise=jvm.$.when(downloadPromise,focusPromise),this.drillDownPromise.then(function(){currentMap.params.container.hide(),that.maps[name]?that.maps[name].params.container.show():that.addMap(name,{map:name,multiMapLevel:currentMap.params.multiMapLevel+1}),that.history.push(that.maps[name]),that.backButton.show()})},goBack:function(){var currentMap=this.history.pop(),prevMap=this.history[this.history.length-1],that=this;currentMap.setFocus({scale:1,x:.5,y:.5,animate:!0}).then(function(){currentMap.params.container.hide(),prevMap.params.container.show(),prevMap.updateSize(),1===that.history.length&&that.backButton.hide(),prevMap.setFocus({scale:1,x:.5,y:.5,animate:!0})})}},jvm.MultiMap.defaultParams={mapNameByCode:function(code,multiMap){return code.toLowerCase()+\"_\"+multiMap.defaultProjection+\"_en\"},mapUrlByCode:function(code,multiMap){return\"jquery-jvectormap-data-\"+code.toLowerCase()+\"-\"+multiMap.defaultProjection+\"-en.js\"}};","jQuery.fn.vectorMap('addMap', 'world_mill_en',{\"insets\": [{\"width\": 900, \"top\": 0, \"height\": 440.70631074413296, \"bbox\": [{\"y\": -12671671.123330014, \"x\": -20004297.151525836}, {\"y\": 6930392.025135122, \"x\": 20026572.39474939}], \"left\": 0}], \"paths\": {\"BD\": {\"path\": \"M651.84,230.21l-0.6,-2.0l-1.36,-1.71l-2.31,-0.11l-0.41,0.48l0.2,0.94l-0.53,0.99l-0.72,-0.36l-0.68,0.35l-1.2,-0.36l-0.37,-2.0l-0.81,-1.86l0.39,-1.46l-0.22,-0.47l-1.14,-0.53l0.29,-0.5l1.48,-0.94l0.03,-0.65l-1.55,-1.22l0.55,-1.14l1.61,0.94l1.04,0.15l0.18,1.54l0.34,0.35l5.64,0.63l-0.84,1.64l-1.22,0.34l-0.77,1.51l0.07,0.47l1.37,1.37l0.67,-0.19l0.42,-1.39l1.21,3.84l-0.03,1.21l-0.33,-0.15l-0.4,0.28Z\", \"name\": \"Bangladesh\"}, \"BE\": {\"path\": \"M429.29,144.05l1.91,0.24l2.1,-0.63l2.63,1.99l-0.21,1.66l-0.69,0.4l-0.18,1.2l-1.66,-1.13l-1.39,0.15l-2.73,-2.7l-1.17,-0.18l-0.16,-0.52l1.54,-0.5Z\", \"name\": \"Belgium\"}, \"BF\": {\"path\": \"M421.42,247.64l-0.11,0.95l0.34,1.16l1.4,1.71l0.07,1.1l0.32,0.37l2.55,0.51l-0.04,1.28l-0.38,0.53l-1.07,0.21l-0.72,1.18l-0.63,0.21l-3.22,-0.25l-0.94,0.39l-5.4,-0.05l-0.39,0.38l0.16,2.73l-1.23,-0.43l-1.17,0.1l-0.89,0.57l-2.27,-1.72l-0.13,-1.11l0.61,-0.96l0.02,-0.93l1.87,-1.98l0.44,-1.81l0.43,-0.39l1.28,0.26l1.05,-0.52l0.47,-0.73l1.84,-1.09l0.55,-0.83l2.2,-1.0l1.15,-0.3l0.72,0.45l1.13,-0.01Z\", \"name\": \"Burkina Faso\"}, \"BG\": {\"path\": \"M491.65,168.18l-0.86,0.88l-0.91,2.17l0.48,1.34l-1.6,-0.24l-2.55,0.95l-0.28,1.51l-1.8,0.22l-2.0,-1.0l-1.92,0.79l-1.42,-0.07l-0.15,-1.63l-1.05,-0.97l0.0,-0.8l1.2,-1.57l0.01,-0.56l-1.14,-1.23l-0.05,-0.94l0.88,0.97l0.88,-0.2l1.91,0.47l3.68,0.16l1.42,-0.81l2.72,-0.66l2.55,1.24Z\", \"name\": \"Bulgaria\"}, \"BA\": {\"path\": \"M463.49,163.65l2.1,0.5l1.72,-0.03l1.52,0.68l-0.36,0.78l0.08,0.45l1.04,1.02l-0.25,0.98l-1.81,1.15l-0.38,1.38l-1.67,-0.87l-0.89,-1.2l-2.11,-1.83l-1.63,-2.22l0.23,-0.57l0.48,0.38l0.55,-0.06l0.43,-0.51l0.94,-0.06Z\", \"name\": \"Bosnia and Herz.\"}, \"BN\": {\"path\": \"M707.48,273.58l0.68,-0.65l1.41,-0.91l-0.15,1.63l-0.81,-0.05l-0.61,0.58l-0.53,-0.6Z\", \"name\": \"Brunei\"}, \"BO\": {\"path\": \"M263.83,340.69l-3.09,-0.23l-0.38,0.23l-0.7,1.52l-1.31,-1.53l-3.28,-0.64l-2.37,2.4l-1.31,0.26l-0.88,-3.26l-1.3,-2.86l0.74,-2.37l-0.13,-0.43l-1.2,-1.01l-0.37,-1.89l-1.08,-1.55l1.45,-2.56l-0.96,-2.33l0.47,-1.06l-0.34,-0.73l0.91,-1.32l0.16,-3.84l0.5,-1.18l-1.81,-3.41l2.46,0.07l0.8,-0.85l3.4,-1.91l2.66,-0.35l-0.19,1.38l0.3,1.07l-0.05,1.97l2.72,2.27l2.88,0.49l0.89,0.86l1.79,0.58l0.98,0.7l1.71,0.05l1.17,0.61l0.6,2.7l-0.7,0.54l0.96,2.99l0.37,0.28l4.3,0.1l-0.25,1.2l0.27,1.02l1.43,0.9l0.5,1.35l-0.41,1.86l-0.65,1.08l0.12,1.35l-2.69,-1.65l-2.4,-0.03l-4.36,0.76l-1.49,2.5l-0.11,1.52l-0.75,2.37Z\", \"name\": \"Bolivia\"}, \"JP\": {\"path\": \"M781.12,166.87l1.81,0.68l1.62,-0.97l0.39,2.42l-3.35,0.75l-2.23,2.88l-3.63,-1.9l-0.56,0.2l-1.26,3.05l-2.16,0.03l-0.29,-2.51l1.08,-2.03l2.45,-0.16l0.37,-0.33l1.25,-5.94l2.47,2.71l2.03,1.12ZM773.56,187.34l-0.91,2.22l0.37,1.52l-1.14,1.75l-3.02,1.26l-4.58,0.27l-3.34,3.01l-1.25,-0.8l-0.09,-1.9l-0.46,-0.38l-4.35,0.62l-3.0,1.32l-2.85,0.05l-0.37,0.27l0.13,0.44l2.32,1.89l-1.54,4.34l-1.26,0.9l-0.79,-0.7l0.56,-2.27l-0.21,-0.45l-1.47,-0.75l-0.74,-1.4l2.12,-0.84l1.26,-1.7l2.45,-1.42l1.83,-1.91l4.78,-0.81l2.6,0.57l0.44,-0.21l2.39,-4.66l1.29,1.06l0.5,0.01l5.1,-4.02l1.69,-3.73l-0.38,-3.4l0.9,-1.61l2.14,-0.44l1.23,3.72l-0.07,2.18l-2.23,2.84l-0.04,3.16ZM757.78,196.26l0.19,0.56l-1.01,1.21l-1.16,-0.68l-1.28,0.65l-0.69,1.45l-1.02,-0.5l0.01,-0.93l1.14,-1.38l1.57,0.14l0.85,-0.98l1.4,0.46Z\", \"name\": \"Japan\"}, \"BI\": {\"path\": \"M495.45,295.49l-1.08,-2.99l1.14,-0.11l0.64,-1.19l0.76,0.09l0.65,1.83l-2.1,2.36Z\", \"name\": \"Burundi\"}, \"BJ\": {\"path\": \"M429.57,255.75l-0.05,0.8l0.5,1.34l-0.42,0.86l0.17,0.79l-1.81,2.12l-0.57,1.76l-0.08,5.42l-1.41,0.2l-0.48,-1.36l0.11,-5.71l-0.52,-0.7l-0.2,-1.35l-1.48,-1.48l0.21,-0.9l0.89,-0.43l0.42,-0.92l1.27,-0.36l1.22,-1.34l0.61,-0.0l1.62,1.24Z\", \"name\": \"Benin\"}, \"BT\": {\"path\": \"M650.32,213.86l0.84,0.71l-0.12,1.1l-3.76,-0.11l-1.57,0.4l-1.93,-0.87l1.48,-1.96l1.13,-0.57l1.63,0.57l1.33,0.08l0.99,0.65Z\", \"name\": \"Bhutan\"}, \"JM\": {\"path\": \"M228.38,239.28l-0.8,0.4l-2.26,-1.06l0.84,-0.23l2.14,0.3l1.17,0.56l-1.08,0.03Z\", \"name\": \"Jamaica\"}, \"BW\": {\"path\": \"M483.92,330.07l2.27,4.01l2.83,2.86l0.96,0.31l0.78,2.43l2.13,0.61l1.02,0.76l-3.0,1.64l-2.32,2.02l-1.54,2.69l-1.52,0.45l-0.64,1.94l-1.34,0.52l-1.85,-0.12l-1.21,-0.74l-1.35,-0.3l-1.22,0.62l-0.75,1.37l-2.31,1.9l-1.4,0.21l-0.35,-0.59l0.16,-1.75l-1.48,-2.54l-0.62,-0.43l-0.0,-7.1l2.08,-0.08l0.39,-0.4l0.07,-8.9l5.19,-0.93l0.8,0.89l0.51,0.07l1.5,-0.95l2.21,-0.49Z\", \"name\": \"Botswana\"}, \"BR\": {\"path\": \"M259.98,275.05l3.24,0.7l0.65,-0.53l4.55,-1.32l1.08,-1.06l-0.02,-0.63l0.55,-0.05l0.28,0.28l-0.26,0.87l0.22,0.48l0.73,0.32l0.4,0.81l-0.62,0.86l-0.4,2.13l0.82,2.56l1.69,1.43l1.43,0.2l3.17,-1.68l3.18,0.3l0.65,-0.75l-0.27,-0.92l1.9,-0.09l2.39,0.99l1.06,-0.61l0.84,0.78l1.2,-0.18l1.18,-1.06l0.84,-1.94l1.36,-2.11l0.37,-0.05l1.89,5.45l1.33,0.59l0.05,1.28l-1.77,1.94l0.02,0.56l1.02,0.87l4.07,0.36l0.08,2.16l0.66,0.29l1.74,-1.5l6.97,2.32l1.02,1.22l-0.35,1.18l0.49,0.5l2.81,-0.74l4.77,1.3l3.75,-0.08l3.57,2.0l3.29,2.86l1.93,0.72l2.12,0.12l0.71,0.62l1.21,4.51l-0.95,3.98l-4.72,5.06l-1.64,2.92l-1.72,2.05l-0.8,0.3l-0.72,2.03l0.18,4.75l-0.94,5.53l-0.81,1.13l-0.43,3.36l-2.55,3.5l-0.4,2.51l-1.86,1.04l-0.67,1.53l-2.54,0.01l-3.94,1.01l-1.83,1.2l-2.87,0.82l-3.03,2.19l-2.2,2.83l-0.36,2.0l0.4,1.58l-0.44,2.6l-0.51,1.2l-1.77,1.54l-2.75,4.78l-3.83,3.42l-1.24,2.74l-1.18,1.15l-0.36,-0.83l0.95,-1.14l0.01,-0.5l-1.52,-1.97l-4.56,-3.32l-1.03,-0.0l-2.38,-2.02l-0.81,-0.0l5.34,-5.45l3.77,-2.58l0.22,-2.46l-1.35,-1.81l-0.91,0.07l0.58,-2.33l0.01,-1.54l-1.11,-0.83l-1.75,0.3l-0.44,-3.11l-0.52,-0.95l-1.88,-0.88l-1.24,0.47l-2.17,-0.41l0.15,-3.21l-0.62,-1.34l0.66,-0.73l-0.22,-1.34l0.66,-1.13l0.44,-2.04l-0.61,-1.83l-1.4,-0.86l-0.2,-0.75l0.34,-1.39l-0.38,-0.5l-4.52,-0.1l-0.72,-2.22l0.59,-0.42l-0.03,-1.1l-0.5,-0.87l-0.32,-1.7l-1.45,-0.76l-1.63,-0.02l-1.05,-0.72l-1.6,-0.48l-1.13,-0.99l-2.69,-0.4l-2.47,-2.06l0.13,-4.35l-0.45,-0.45l-3.46,0.5l-3.44,1.94l-0.6,0.74l-2.9,-0.17l-1.47,0.42l-0.72,-0.18l0.15,-3.52l-0.63,-0.34l-1.94,1.41l-1.87,-0.06l-0.83,-1.18l-1.37,-0.26l0.21,-1.01l-1.35,-1.49l-0.88,-1.91l0.56,-0.6l-0.0,-0.81l1.29,-0.62l0.22,-0.43l-0.22,-1.19l0.61,-0.91l0.15,-0.99l2.65,-1.58l1.99,-0.47l0.42,-0.36l2.06,0.11l0.42,-0.33l1.19,-8.0l-0.41,-1.56l-1.1,-1.0l0.01,-1.33l1.91,-0.42l0.08,-0.96l-0.33,-0.43l-1.14,-0.2l-0.02,-0.83l4.47,0.05l0.82,-0.67l0.82,1.81l0.8,0.07l1.15,1.1l2.26,-0.05l0.71,-0.83l2.78,-0.96l0.48,-1.13l1.6,-0.64l0.24,-0.47l-0.48,-0.82l-1.83,-0.19l-0.36,-3.22Z\", \"name\": \"Brazil\"}, \"BS\": {\"path\": \"M226.4,223.87l-0.48,-1.15l-0.84,-0.75l0.36,-1.11l0.95,1.95l0.01,1.06ZM225.56,216.43l-1.87,0.29l-0.04,-0.22l0.74,-0.14l1.17,0.06Z\", \"name\": \"Bahamas\"}, \"BY\": {\"path\": \"M493.84,128.32l0.29,0.7l0.49,0.23l1.19,-0.38l2.09,0.72l0.19,1.26l-0.45,1.24l1.57,2.26l0.89,0.59l0.17,0.81l1.58,0.56l0.4,0.5l-0.53,0.41l-1.87,-0.11l-0.73,0.38l-0.13,0.52l1.04,2.74l-1.91,0.26l-0.89,0.99l-0.11,1.18l-2.73,-0.04l-0.53,-0.62l-0.52,-0.08l-0.75,0.46l-0.91,-0.42l-1.92,-0.07l-2.75,-0.79l-2.6,-0.28l-2.0,0.07l-1.5,0.92l-0.67,0.07l-0.08,-1.22l-0.59,-1.19l1.36,-0.88l0.01,-1.35l-0.7,-1.41l-0.07,-1.0l2.16,-0.02l2.72,-1.3l0.75,-2.04l1.91,-1.04l0.2,-0.41l-0.19,-1.25l3.8,-1.78l2.3,0.77Z\", \"name\": \"Belarus\"}, \"BZ\": {\"path\": \"M198.03,244.38l0.1,-4.49l0.69,-0.06l0.74,-1.3l0.34,0.28l-0.4,1.3l0.17,0.58l-0.34,2.25l-1.3,1.42Z\", \"name\": \"Belize\"}, \"RU\": {\"path\": \"M491.55,115.25l2.55,-1.85l-0.01,-0.65l-2.2,-1.5l7.32,-6.76l1.03,-2.11l-0.13,-0.49l-3.46,-2.52l0.86,-2.7l-2.11,-2.81l1.56,-3.67l-2.77,-4.52l2.15,-2.99l-0.08,-0.55l-3.65,-2.73l0.3,-2.54l1.81,-0.37l4.26,-1.77l2.42,-1.45l4.06,2.61l6.79,1.04l9.34,4.85l1.78,1.88l0.14,2.46l-2.55,2.02l-3.9,1.06l-11.07,-3.14l-2.06,0.53l-0.13,0.7l3.94,2.94l0.31,5.86l0.26,0.36l5.14,2.24l0.58,-0.29l0.32,-1.94l-1.35,-1.78l1.13,-1.09l6.13,2.42l2.11,-0.98l0.18,-0.56l-1.51,-2.67l5.41,-3.76l2.07,0.22l2.26,1.41l0.57,-0.16l1.46,-2.87l-0.05,-0.44l-1.92,-2.32l1.12,-2.32l-1.32,-2.27l5.87,1.16l1.04,1.75l-2.59,0.43l-0.33,0.4l0.02,2.36l2.46,1.83l3.87,-0.91l0.86,-2.8l13.69,-5.65l0.99,0.11l-1.92,2.06l0.23,0.67l3.11,0.45l2.0,-1.48l4.56,-0.12l3.64,-1.73l2.65,2.44l0.56,-0.01l2.85,-2.88l-0.01,-0.57l-2.35,-2.29l0.9,-1.01l7.14,1.3l3.41,1.36l9.05,4.97l0.51,-0.11l1.67,-2.27l-0.05,-0.53l-2.43,-2.21l-0.06,-0.78l-0.34,-0.36l-2.52,-0.36l0.64,-1.93l-1.32,-3.46l-0.06,-1.21l4.48,-4.06l1.69,-4.29l1.6,-0.81l6.23,1.18l0.44,2.21l-2.29,3.64l0.06,0.5l1.47,1.39l0.76,3.0l-0.56,6.03l2.69,2.82l-0.96,2.57l-4.86,5.95l0.23,0.64l2.86,0.61l0.42,-0.17l0.93,-1.4l2.64,-1.03l0.87,-2.24l2.09,-1.96l0.07,-0.5l-1.36,-2.28l1.09,-2.69l-0.32,-0.55l-2.47,-0.33l-0.5,-2.06l1.94,-4.38l-0.06,-0.42l-2.96,-3.4l4.12,-2.88l0.16,-0.4l-0.51,-2.93l0.54,-0.05l1.13,2.25l-0.96,4.35l0.27,0.47l2.68,0.84l0.5,-0.51l-1.02,-2.99l3.79,-1.66l5.01,-0.24l4.53,2.61l0.48,-0.06l0.07,-0.48l-2.18,-3.82l-0.23,-4.67l3.98,-0.9l5.97,0.21l5.49,-0.64l0.27,-0.65l-1.83,-2.31l2.56,-2.9l2.87,-0.17l4.8,-2.47l6.54,-0.67l1.03,-1.42l6.25,-0.45l2.32,1.11l5.53,-2.7l4.5,0.08l0.39,-0.28l0.66,-2.15l2.26,-2.12l5.69,-2.11l3.21,1.29l-2.46,0.94l-0.25,0.42l0.34,0.35l5.41,0.77l0.61,2.33l0.58,0.25l2.2,-1.22l7.13,0.07l5.51,2.47l1.79,1.72l-0.53,2.24l-9.16,4.15l-1.97,1.52l0.16,0.71l6.77,1.91l2.16,-0.78l1.13,2.74l0.67,0.11l1.01,-1.15l3.81,-0.73l7.7,0.77l0.54,1.99l0.36,0.29l10.47,0.71l0.43,-0.38l0.13,-3.23l4.87,0.78l3.95,-0.02l3.83,2.4l1.03,2.71l-1.35,1.79l0.02,0.5l3.15,3.64l4.07,1.96l0.53,-0.18l2.23,-4.47l3.95,1.93l4.16,-1.21l4.73,1.39l2.05,-1.26l3.94,0.62l0.43,-0.55l-1.68,-4.02l2.89,-1.8l22.31,3.03l2.16,2.75l6.55,3.51l10.29,-0.81l4.82,0.73l1.85,1.66l-0.29,3.08l0.25,0.41l3.08,1.26l3.56,-0.88l4.35,-0.11l4.8,0.87l4.57,-0.47l4.23,3.79l0.43,0.07l3.1,-1.4l0.16,-0.6l-1.88,-2.62l0.85,-1.52l7.71,1.21l5.22,-0.26l7.09,2.09l9.59,5.22l6.35,4.11l-0.2,2.38l1.88,1.41l0.6,-0.42l-0.48,-2.53l6.15,0.57l4.4,3.51l-1.97,1.43l-4.0,0.41l-0.36,0.39l-0.06,3.79l-0.74,0.62l-2.07,-0.11l-1.91,-1.39l-3.14,-1.11l-0.78,-1.85l-2.72,-0.68l-2.63,0.49l-1.04,-1.1l0.46,-1.31l-0.5,-0.51l-3.0,0.98l-0.22,0.58l0.99,1.7l-1.21,1.48l-3.04,1.68l-3.12,-0.28l-0.4,0.23l0.09,0.46l2.2,2.09l1.46,3.2l1.15,1.1l0.24,1.33l-0.42,0.67l-4.63,-0.77l-6.96,2.9l-2.19,0.44l-7.6,5.06l-0.84,1.45l-3.61,-2.37l-6.24,2.82l-0.94,-1.15l-0.53,-0.08l-2.28,1.52l-3.2,-0.49l-0.44,0.27l-0.78,2.37l-3.05,3.78l0.09,1.47l0.29,0.36l2.54,0.72l-0.29,4.53l-1.97,0.11l-0.35,0.26l-1.07,2.94l0.8,1.45l-3.91,1.58l-1.05,3.95l-3.48,0.77l-0.3,0.3l-0.72,3.29l-3.09,2.65l-0.7,-1.74l-2.44,-12.44l1.16,-4.71l2.04,-2.06l0.22,-1.64l3.8,-0.86l4.46,-4.61l4.28,-3.81l4.48,-3.01l2.17,-5.63l-0.42,-0.54l-3.04,0.33l-1.77,3.31l-5.86,3.86l-1.86,-4.25l-0.45,-0.23l-6.46,1.3l-6.47,6.44l-0.01,0.55l1.58,1.74l-8.24,1.17l0.15,-2.2l-0.34,-0.42l-3.89,-0.56l-3.25,1.81l-7.62,-0.62l-8.45,1.19l-17.71,15.41l0.22,0.7l3.74,0.41l1.36,2.17l2.43,0.76l1.88,-1.68l2.4,0.2l3.4,3.54l0.08,2.6l-1.95,3.42l-0.21,3.9l-1.1,5.06l-3.71,4.54l-0.87,2.21l-8.29,8.89l-3.19,1.7l-1.32,0.03l-1.45,-1.36l-0.49,-0.04l-2.27,1.5l0.41,-3.65l-0.59,-2.47l1.75,-0.89l2.91,0.53l0.42,-0.2l1.68,-3.03l0.87,-3.46l0.97,-1.18l1.32,-2.88l-0.45,-0.56l-4.14,0.95l-2.19,1.25l-3.41,-0.0l-1.06,-2.93l-2.97,-2.3l-4.28,-1.06l-1.75,-5.07l-2.66,-5.01l-2.29,-1.29l-3.75,-1.01l-3.44,0.08l-3.18,0.62l-2.24,1.77l0.05,0.66l1.18,0.69l0.02,1.43l-1.33,1.05l-2.26,3.51l-0.04,1.43l-3.16,1.84l-2.82,-1.16l-3.01,0.23l-1.35,-1.07l-1.5,-0.35l-3.9,2.31l-3.22,0.52l-2.27,0.79l-3.05,-0.51l-2.21,0.03l-1.48,-1.6l-2.6,-1.63l-2.63,-0.43l-5.46,1.01l-3.23,-1.25l-0.72,-2.57l-5.2,-1.24l-2.75,-1.36l-0.5,0.12l-2.59,3.45l0.84,2.1l-2.06,1.93l-3.41,-0.77l-2.42,-0.12l-1.83,-1.54l-2.53,-0.05l-2.42,-0.98l-3.86,1.57l-4.72,2.78l-3.3,0.75l-1.55,-1.92l-3.0,0.41l-1.11,-1.33l-1.62,-0.59l-1.31,-1.94l-1.38,-0.6l-3.7,0.79l-3.31,-1.83l-0.51,0.11l-0.99,1.29l-5.29,-8.05l-2.96,-2.48l0.65,-0.77l0.01,-0.51l-0.5,-0.11l-6.2,3.21l-1.84,0.15l0.15,-1.39l-0.26,-0.42l-3.22,-1.17l-2.46,0.7l-0.69,-3.16l-0.32,-0.31l-4.5,-0.75l-2.47,1.47l-6.19,1.27l-1.29,0.86l-9.51,1.3l-1.15,1.17l-0.03,0.53l1.47,1.9l-1.89,0.69l-0.22,0.56l0.31,0.6l-2.11,1.44l0.03,0.68l3.75,2.12l-0.39,0.98l-3.23,-0.13l-0.86,0.86l-3.09,-1.59l-3.97,0.07l-2.66,1.35l-8.32,-3.56l-4.07,0.06l-5.39,3.68l-0.39,2.0l-2.03,-1.5l-0.59,0.13l-2.0,3.59l0.57,0.93l-1.28,2.16l0.06,0.48l2.13,2.17l1.95,0.04l1.37,1.82l-0.23,1.46l0.25,0.43l0.83,0.33l-0.8,1.31l-2.49,0.62l-2.49,3.2l0.0,0.49l2.17,2.78l-0.15,2.18l2.5,3.24l-1.58,1.59l-0.7,-0.13l-1.63,-1.72l-2.29,-0.84l-0.94,-1.31l-2.34,-0.63l-1.48,0.4l-0.43,-0.47l-3.51,-1.48l-5.76,-1.01l-0.45,0.19l-2.89,-2.34l-2.9,-1.2l-1.53,-1.29l1.29,-0.43l2.08,-2.61l-0.05,-0.55l-0.89,-0.79l3.05,-1.06l0.27,-0.42l-0.07,-0.69l-0.49,-0.35l-1.73,0.39l0.04,-0.68l1.04,-0.72l2.66,-0.48l0.4,-1.32l-0.5,-1.6l0.92,-1.54l0.03,-1.17l-0.29,-0.37l-3.69,-1.06l-1.41,0.02l-1.42,-1.41l-2.19,0.38l-2.77,-1.01l-0.03,-0.59l-0.89,-1.43l-2.0,-0.32l-0.11,-0.54l0.49,-0.53l0.01,-0.53l-1.6,-1.9l-3.58,0.02l-0.88,0.73l-0.46,-0.07l-1.0,-2.79l2.22,-0.02l0.97,-0.74l0.07,-0.57l-0.9,-1.04l-1.35,-0.48l-0.11,-0.7l-0.95,-0.58l-1.38,-1.99l0.46,-0.98l-0.51,-1.96l-2.45,-0.84l-1.21,0.3l-0.46,-0.76l-2.46,-0.83l-0.72,-1.87l-0.21,-1.69l-0.99,-0.85l0.85,-1.17l-0.7,-3.21l1.66,-1.97l-0.16,-0.79ZM749.2,170.72l-0.6,0.4l-0.13,0.16l-0.01,-0.51l0.74,-0.05ZM874.85,67.94l-5.63,0.48l-0.26,-0.84l3.15,-1.89l1.94,0.01l3.19,1.16l-2.39,1.09ZM797.39,48.49l-2.0,1.36l-3.8,-0.42l-4.25,-1.8l0.35,-0.97l9.69,1.83ZM783.67,46.12l-1.63,3.09l-8.98,-0.13l-4.09,1.14l-4.54,-2.97l1.16,-3.01l3.05,-0.89l6.5,0.22l8.54,2.56ZM778.2,134.98l-0.56,-0.9l0.27,-0.12l0.29,1.01ZM778.34,135.48l0.94,3.53l-0.05,3.38l1.05,3.39l2.18,5.0l-2.89,-0.83l-0.49,0.26l-1.54,4.65l2.42,3.5l-0.04,1.13l-1.24,-1.24l-0.61,0.06l-1.09,1.61l-0.28,-1.61l0.27,-3.1l-0.28,-3.4l0.58,-2.47l0.11,-4.39l-1.46,-3.36l0.21,-4.32l2.15,-1.46l0.07,-0.34ZM771.95,56.61l1.76,-1.42l2.89,-0.42l3.28,1.71l0.14,0.6l-3.27,0.03l-4.81,-0.5ZM683.76,31.09l-13.01,1.93l4.03,-6.35l1.82,-0.56l1.73,0.34l5.99,2.98l-0.56,1.66ZM670.85,27.93l-5.08,0.64l-6.86,-1.57l-3.99,-2.05l-2.1,-4.16l-2.6,-0.87l5.72,-3.5l5.2,-1.28l4.69,2.85l5.59,5.4l-0.56,4.53ZM564.15,68.94l-0.64,0.17l-7.85,-0.57l-0.86,-2.04l-4.28,-1.17l-0.28,-1.94l2.27,-0.89l0.25,-0.39l-0.08,-2.38l4.81,-3.97l-0.15,-0.7l-1.47,-0.38l5.3,-3.81l0.15,-0.44l-0.58,-1.94l5.28,-2.51l8.21,-3.27l8.28,-0.96l4.35,-1.94l4.6,-0.64l1.36,1.61l-1.34,1.28l-16.43,4.94l-7.97,4.88l-7.74,9.63l0.66,4.14l4.16,3.27ZM548.81,18.48l-5.5,1.18l-0.58,1.02l-2.59,0.84l-2.13,-1.07l1.12,-1.42l-0.3,-0.65l-2.33,-0.07l1.68,-0.36l3.47,-0.06l0.42,1.29l0.66,0.16l1.38,-1.34l2.15,-0.88l2.94,1.01l-0.39,0.36ZM477.37,133.15l-4.08,0.05l-2.56,-0.32l0.33,-0.87l3.17,-1.03l3.24,0.96l-0.09,1.23Z\", \"name\": \"Russia\"}, \"RW\": {\"path\": \"M497.0,288.25l0.71,1.01l-0.11,1.09l-1.63,0.03l-1.04,1.39l-0.83,-0.11l0.51,-1.2l0.08,-1.34l0.42,-0.41l0.7,0.14l1.19,-0.61Z\", \"name\": \"Rwanda\"}, \"RS\": {\"path\": \"M469.4,163.99l0.42,-0.5l-0.01,-0.52l-1.15,-1.63l1.43,-0.62l1.33,0.12l1.17,1.06l0.46,1.13l1.34,0.64l0.35,1.35l1.46,0.9l0.76,-0.29l0.2,0.69l-0.48,0.78l0.22,1.12l1.05,1.22l-0.77,0.8l-0.37,1.52l-1.21,0.08l0.24,-0.64l-0.39,-0.54l-2.08,-1.64l-0.9,0.05l-0.48,0.94l-2.12,-1.37l0.53,-1.6l-1.11,-1.37l0.51,-1.1l-0.41,-0.57Z\", \"name\": \"Serbia\"}, \"LT\": {\"path\": \"M486.93,129.3l0.17,1.12l-1.81,0.98l-0.72,2.02l-2.47,1.18l-2.1,-0.02l-0.73,-1.05l-1.06,-0.3l-0.09,-1.87l-3.56,-1.13l-0.43,-2.36l2.48,-0.94l4.12,0.22l2.25,-0.31l0.52,0.69l1.24,0.21l2.19,1.56Z\", \"name\": \"Lithuania\"}, \"LU\": {\"path\": \"M436.08,149.45l-0.48,-0.07l0.3,-1.28l0.27,0.4l-0.09,0.96Z\", \"name\": \"Luxembourg\"}, \"LR\": {\"path\": \"M399.36,265.97l0.18,1.54l-0.48,0.99l0.08,0.47l2.47,1.8l-0.33,2.8l-2.65,-1.13l-5.78,-4.61l0.58,-1.32l2.1,-2.33l0.86,-0.22l0.77,1.14l-0.14,0.85l0.59,0.87l1.0,0.14l0.76,-0.99Z\", \"name\": \"Liberia\"}, \"RO\": {\"path\": \"M487.53,154.23l0.6,0.24l2.87,3.98l-0.17,2.69l0.45,1.42l1.32,0.81l1.35,-0.42l0.76,0.36l0.02,0.31l-0.83,0.45l-0.59,-0.22l-0.54,0.3l-0.62,3.3l-1.0,-0.22l-2.07,-1.13l-2.95,0.71l-1.25,0.76l-3.51,-0.15l-1.89,-0.47l-0.87,0.16l-0.82,-1.3l0.29,-0.26l-0.06,-0.64l-1.09,-0.34l-0.56,0.5l-1.05,-0.64l-0.39,-1.39l-1.36,-0.65l-0.35,-1.0l-0.83,-0.75l1.54,-0.54l2.66,-4.21l2.4,-1.24l2.96,0.34l1.48,0.73l0.79,-0.45l1.78,-0.3l0.75,-0.74l0.79,0.0Z\", \"name\": \"Romania\"}, \"GW\": {\"path\": \"M386.23,253.6l-0.29,0.84l0.15,0.6l-2.21,0.59l-0.86,0.96l-1.04,-0.83l-1.09,-0.23l-0.54,-1.06l-0.66,-0.49l2.41,-0.48l4.13,0.1Z\", \"name\": \"Guinea-Bissau\"}, \"GT\": {\"path\": \"M195.08,249.77l-2.48,-0.37l-1.03,-0.45l-1.14,-0.89l0.3,-0.99l-0.24,-0.68l0.96,-1.66l2.98,-0.01l0.4,-0.37l-0.19,-1.28l-1.67,-1.4l0.51,-0.4l0.0,-1.05l3.85,0.02l-0.21,4.53l0.4,0.43l1.46,0.38l-1.48,0.98l-0.35,0.7l0.12,0.57l-2.2,1.96Z\", \"name\": \"Guatemala\"}, \"GR\": {\"path\": \"M487.07,174.59l-0.59,1.43l-0.37,0.21l-2.84,-0.35l-3.03,0.77l-0.18,0.68l1.28,1.23l-0.61,0.23l-1.14,0.0l-1.2,-1.39l-0.63,0.03l-0.53,1.01l0.56,1.76l1.03,1.19l-0.56,0.38l-0.05,0.62l2.52,2.12l0.02,0.87l-1.78,-0.59l-0.48,0.56l0.5,1.0l-1.07,0.2l-0.3,0.53l0.75,2.01l-0.98,0.02l-1.84,-1.12l-1.37,-4.2l-2.21,-2.95l-0.11,-0.56l1.04,-1.28l0.2,-0.95l0.85,-0.66l0.03,-0.46l1.32,-0.21l1.01,-0.64l1.22,0.05l0.65,-0.56l2.26,-0.0l1.82,-0.75l1.85,1.0l2.28,-0.28l0.35,-0.39l0.01,-0.77l0.34,0.22ZM480.49,192.16l0.58,0.4l-0.68,-0.12l0.11,-0.28ZM482.52,192.82l2.51,0.06l0.24,0.32l-1.99,0.13l-0.77,-0.51Z\", \"name\": \"Greece\"}, \"GQ\": {\"path\": \"M448.79,279.62l0.02,2.22l-4.09,0.0l0.69,-2.27l3.38,0.05Z\", \"name\": \"Eq. Guinea\"}, \"GY\": {\"path\": \"M277.42,270.07l-0.32,1.83l-1.32,0.57l-0.23,0.46l-0.28,2.0l1.11,1.82l0.83,0.19l0.32,1.25l1.13,1.62l-1.21,-0.19l-1.08,0.71l-1.77,0.5l-0.44,0.46l-0.86,-0.09l-1.32,-1.01l-0.77,-2.27l0.36,-1.9l0.68,-1.23l-0.57,-1.17l-0.74,-0.43l0.12,-1.16l-0.9,-0.69l-1.1,0.09l-1.31,-1.48l0.53,-0.72l-0.04,-0.84l1.99,-0.86l0.05,-0.59l-0.71,-0.78l0.14,-0.57l1.66,-1.24l1.36,0.77l1.41,1.49l0.06,1.15l0.37,0.38l0.8,0.05l2.06,1.86Z\", \"name\": \"Guyana\"}, \"GE\": {\"path\": \"M521.71,168.93l5.29,0.89l4.07,2.01l1.41,-0.44l2.07,0.56l0.68,1.1l1.07,0.55l-0.12,0.59l0.98,1.29l-1.01,-0.13l-1.81,-0.83l-0.94,0.47l-3.23,0.43l-2.29,-1.39l-2.33,0.05l0.21,-0.97l-0.76,-2.26l-1.45,-1.12l-1.43,-0.39l-0.41,-0.42Z\", \"name\": \"Georgia\"}, \"GB\": {\"path\": \"M412.61,118.72l-2.19,3.22l-0.0,0.45l5.13,-0.3l-0.53,2.37l-2.2,3.12l0.29,0.63l2.37,0.21l2.33,4.3l1.76,0.69l2.2,5.12l2.94,0.77l-0.23,1.62l-1.15,0.88l-0.1,0.52l0.82,1.42l-1.86,1.43l-3.3,-0.02l-4.12,0.87l-1.04,-0.58l-0.47,0.06l-1.51,1.41l-2.12,-0.34l-1.86,1.18l-0.6,-0.29l3.19,-3.0l2.16,-0.69l0.28,-0.41l-0.34,-0.36l-3.73,-0.53l-0.4,-0.76l2.2,-0.87l0.17,-0.61l-1.26,-1.67l0.36,-1.7l3.38,0.28l0.43,-0.33l0.37,-1.99l-1.79,-2.49l-3.11,-0.72l-0.38,-0.59l0.79,-1.35l-0.04,-0.46l-0.82,-0.97l-0.61,0.01l-0.68,0.84l-0.1,-2.34l-1.23,-1.88l0.85,-3.47l1.77,-2.68l1.85,0.26l2.17,-0.22ZM406.26,132.86l-1.01,1.77l-1.57,-0.59l-1.16,0.01l0.37,-1.54l-0.39,-1.39l1.45,-0.1l2.3,1.84Z\", \"name\": \"United Kingdom\"}, \"GA\": {\"path\": \"M453.24,279.52l-0.08,0.98l0.7,1.29l2.36,0.24l-0.98,2.63l1.18,1.79l0.25,1.78l-0.29,1.52l-0.6,0.93l-1.84,-0.09l-1.23,-1.11l-0.66,0.23l-0.15,0.84l-1.42,0.26l-1.02,0.7l-0.11,0.52l0.77,1.35l-1.34,0.97l-3.94,-4.3l-1.44,-2.45l0.06,-0.6l0.54,-0.81l1.05,-3.46l4.17,-0.07l0.4,-0.4l-0.02,-2.66l2.39,0.21l1.25,-0.27Z\", \"name\": \"Gabon\"}, \"GN\": {\"path\": \"M391.8,254.11l0.47,0.8l1.11,-0.32l0.98,0.7l1.07,0.2l2.26,-1.22l0.64,0.44l1.13,1.56l-0.48,1.4l0.8,0.3l-0.08,0.48l0.46,0.68l-0.35,1.36l1.05,2.61l-1.0,0.69l0.03,1.41l-0.72,-0.06l-1.08,1.0l-0.24,-0.27l0.07,-1.11l-1.05,-1.54l-1.79,0.21l-0.35,-2.01l-1.6,-2.18l-2.0,-0.0l-1.31,0.54l-1.95,2.18l-1.86,-2.19l-1.2,-0.78l-0.3,-1.11l-0.8,-0.85l0.65,-0.72l0.81,-0.03l1.64,-0.8l0.23,-1.87l2.67,0.64l0.89,-0.3l1.21,0.15Z\", \"name\": \"Guinea\"}, \"GM\": {\"path\": \"M379.31,251.39l0.1,-0.35l2.43,-0.07l0.74,-0.61l0.51,-0.03l0.77,0.49l-1.03,-0.3l-1.87,0.9l-1.65,-0.04ZM384.03,250.91l0.91,0.05l0.75,-0.24l-0.59,0.31l-1.08,-0.13Z\", \"name\": \"Gambia\"}, \"GL\": {\"path\": \"M353.02,1.2l14.69,4.67l-3.68,1.89l-22.97,0.86l-0.36,0.27l0.12,0.43l1.55,1.18l8.79,-0.66l7.48,2.07l4.86,-1.77l1.66,1.73l-2.53,3.19l-0.01,0.48l0.46,0.15l6.35,-2.2l12.06,-2.31l7.24,1.13l1.09,1.99l-9.79,4.01l-1.44,1.32l-7.87,0.98l-0.35,0.41l0.38,0.38l5.07,0.24l-2.53,3.58l-2.07,3.81l0.08,6.05l2.57,3.11l-3.22,0.2l-4.12,1.66l-0.05,0.72l4.45,2.65l0.51,3.75l-2.3,0.4l-0.25,0.64l2.79,3.69l-4.82,0.31l-0.36,0.29l0.16,0.44l2.62,1.8l-0.59,1.22l-3.3,0.7l-3.45,0.01l-0.29,0.68l3.03,3.12l0.02,1.34l-4.4,-1.73l-1.72,1.35l0.15,0.66l3.31,1.15l3.13,2.71l0.81,3.16l-3.85,0.75l-4.89,-4.26l-0.47,-0.03l-0.17,0.44l0.79,2.86l-2.71,2.21l-0.13,0.44l0.37,0.27l8.73,0.34l-12.32,6.64l-7.24,1.48l-2.94,0.08l-2.69,1.75l-3.43,4.41l-5.24,2.84l-1.73,0.18l-7.12,2.1l-2.15,2.52l-0.13,2.99l-1.19,2.45l-4.01,3.09l-0.14,0.44l0.97,2.9l-2.28,6.48l-3.1,0.2l-3.83,-3.07l-4.86,-0.02l-2.25,-1.93l-1.7,-3.79l-4.3,-4.84l-1.21,-2.49l-0.44,-3.8l-3.32,-3.63l0.84,-2.86l-1.56,-1.7l2.28,-4.6l3.83,-1.74l1.03,-1.96l0.52,-3.47l-0.59,-0.41l-4.17,2.21l-2.07,0.58l-2.72,-1.28l-0.15,-2.71l0.85,-2.09l2.01,-0.06l5.06,1.2l0.46,-0.23l-0.14,-0.49l-6.54,-4.47l-2.67,0.55l-1.58,-0.86l2.56,-4.01l-0.03,-0.48l-1.5,-1.74l-4.98,-8.5l-3.13,-1.96l0.03,-1.88l-0.24,-0.37l-6.85,-3.02l-5.36,-0.38l-12.7,0.58l-2.78,-1.57l-3.66,-2.77l5.73,-1.45l5.0,-0.28l0.38,-0.38l-0.35,-0.41l-10.67,-1.38l-5.3,-2.06l0.25,-1.54l18.41,-5.26l1.22,-2.27l-0.25,-0.55l-6.14,-1.86l1.68,-1.77l8.55,-4.03l3.59,-0.63l0.3,-0.54l-0.88,-2.27l5.47,-1.47l7.65,-0.95l7.55,-0.05l3.04,1.85l6.48,-3.27l5.81,2.22l3.56,0.5l5.16,1.94l0.5,-0.21l-0.17,-0.52l-5.71,-3.13l0.28,-2.13l8.12,-3.6l8.7,0.28l3.35,-2.34l8.71,-0.6l19.93,0.8Z\", \"name\": \"Greenland\"}, \"KW\": {\"path\": \"M540.81,207.91l0.37,0.86l-0.17,0.76l0.6,1.53l-0.95,0.04l-0.82,-1.28l-1.57,-0.18l1.31,-1.88l1.22,0.17Z\", \"name\": \"Kuwait\"}, \"GH\": {\"path\": \"M420.53,257.51l-0.01,0.72l0.96,1.2l0.24,3.73l0.59,0.95l-0.51,2.1l0.19,1.41l1.02,2.21l-6.97,2.84l-1.8,-0.57l0.04,-0.89l-1.02,-2.04l0.61,-2.65l1.07,-2.32l-0.96,-6.47l5.01,0.07l0.94,-0.39l0.61,0.11Z\", \"name\": \"Ghana\"}, \"OM\": {\"path\": \"M568.09,230.93l-0.91,1.67l-1.22,0.04l-0.6,0.76l-0.41,1.51l0.27,1.58l-1.16,0.05l-1.56,0.97l-0.76,1.74l-1.62,0.05l-0.98,0.65l-0.17,1.15l-0.89,0.52l-1.49,-0.18l-2.4,0.94l-2.47,-5.4l7.35,-2.71l1.67,-5.23l-1.12,-2.09l0.05,-0.83l0.67,-1.0l0.07,-1.05l0.9,-0.42l-0.05,-2.07l0.7,-0.01l1.0,1.62l1.51,1.08l3.3,0.84l1.73,2.29l0.81,0.37l-1.23,2.35l-0.99,0.79Z\", \"name\": \"Oman\"}, \"_2\": {\"path\": \"M531.15,258.94l1.51,0.12l5.13,-0.95l5.3,-1.48l-0.01,4.4l-2.67,3.39l-1.85,0.01l-8.04,-2.94l-2.55,-3.17l1.12,-1.71l2.04,2.34Z\", \"name\": \"Somaliland\"}, \"_1\": {\"path\": \"M472.77,172.64l-1.08,-1.29l0.96,-0.77l0.29,-0.83l1.98,1.64l-0.36,0.67l-1.79,0.58Z\", \"name\": \"Kosovo\"}, \"_0\": {\"path\": \"M504.91,192.87l0.34,0.01l0.27,-0.07l-0.29,0.26l-0.31,-0.2Z\", \"name\": \"N. Cyprus\"}, \"JO\": {\"path\": \"M518.64,201.38l-5.14,1.56l-0.19,0.65l2.16,2.39l-0.89,1.14l-1.71,0.34l-1.71,1.8l-2.34,-0.37l1.21,-4.32l0.56,-4.07l2.8,0.94l4.46,-2.71l0.79,2.66Z\", \"name\": \"Jordan\"}, \"HR\": {\"path\": \"M455.59,162.84l1.09,0.07l-0.82,0.94l-0.27,-1.01ZM456.96,162.92l0.62,-0.41l1.73,0.45l0.42,-0.4l-0.01,-0.59l0.86,-0.52l0.2,-1.05l1.63,-0.68l2.57,1.68l2.07,0.6l0.87,-0.31l1.05,1.57l-0.52,0.63l-1.05,-0.56l-1.68,0.04l-2.1,-0.5l-1.29,0.06l-0.57,0.49l-0.59,-0.47l-0.62,0.16l-0.46,1.7l1.79,2.42l2.79,2.75l-1.18,-0.87l-2.21,-0.87l-1.67,-1.78l0.13,-0.63l-1.05,-1.19l-0.32,-1.27l-1.42,-0.43Z\", \"name\": \"Croatia\"}, \"HT\": {\"path\": \"M237.05,238.38l-1.16,0.43l-0.91,-0.55l0.05,-0.2l2.02,0.31ZM237.53,238.43l1.06,0.12l-0.05,0.01l-1.01,-0.12ZM239.25,238.45l0.79,-0.51l0.06,-0.62l-1.02,-1.0l0.02,-0.82l-0.3,-0.4l-0.93,-0.32l3.16,0.45l0.02,1.84l-0.48,0.34l-0.08,0.58l0.54,0.72l-1.78,-0.26Z\", \"name\": \"Haiti\"}, \"HU\": {\"path\": \"M462.08,157.89l0.65,-1.59l-0.09,-0.44l0.64,-0.0l0.39,-0.34l0.1,-0.69l1.75,0.87l2.32,-0.37l0.43,-0.66l3.49,-0.78l0.69,-0.78l0.57,-0.14l2.57,0.93l0.67,-0.23l1.03,0.65l0.08,0.37l-1.42,0.71l-2.59,4.14l-1.8,0.53l-1.68,-0.1l-2.74,1.23l-1.85,-0.54l-2.54,-1.66l-0.66,-1.1Z\", \"name\": \"Hungary\"}, \"HN\": {\"path\": \"M199.6,249.52l-1.7,-1.21l0.06,-0.94l3.04,-2.14l2.37,0.28l1.27,-0.09l1.1,-0.52l1.3,0.28l1.14,-0.25l1.38,0.37l2.23,1.37l-2.36,0.93l-1.23,-0.39l-0.88,1.3l-1.28,0.99l-0.98,-0.22l-0.42,0.52l-0.96,0.05l-0.36,0.41l0.04,0.88l-0.52,0.6l-0.3,0.04l-0.3,-0.55l-0.66,-0.31l0.11,-0.67l-0.48,-0.65l-0.87,-0.26l-0.73,0.2Z\", \"name\": \"Honduras\"}, \"PR\": {\"path\": \"M256.17,238.73l-0.26,0.27l-2.83,0.05l-0.07,-0.55l1.95,-0.1l1.22,0.33Z\", \"name\": \"Puerto Rico\"}, \"PS\": {\"path\": \"M509.21,203.07l0.1,-0.06l-0.02,0.03l-0.09,0.03ZM509.36,202.91l-0.02,-0.63l-0.33,-0.16l0.31,-1.09l0.24,0.1l-0.2,1.78Z\", \"name\": \"Palestine\"}, \"PT\": {\"path\": \"M401.84,187.38l-0.64,0.47l-1.13,-0.35l-0.91,0.17l0.28,-1.78l-0.24,-1.78l-1.25,-0.56l-0.45,-0.84l0.17,-1.66l1.01,-1.18l0.69,-2.92l-0.04,-1.39l-0.59,-1.9l1.3,-0.85l0.84,1.35l3.1,-0.3l0.46,0.99l-1.05,0.94l-0.03,2.16l-0.41,0.57l-0.08,1.1l-0.79,0.18l-0.26,0.59l0.91,1.6l-0.63,1.75l0.76,1.09l-1.1,1.52l0.07,1.05Z\", \"name\": \"Portugal\"}, \"PY\": {\"path\": \"M274.9,336.12l0.74,1.52l-0.16,3.45l0.32,0.41l2.64,0.5l1.11,-0.47l1.4,0.59l0.36,0.6l0.53,3.42l1.27,0.4l0.98,-0.38l0.51,0.27l-0.0,1.18l-1.21,5.32l-2.09,1.9l-1.8,0.4l-4.71,-0.98l2.2,-3.63l-0.32,-1.5l-2.78,-1.28l-3.03,-1.94l-2.07,-0.44l-4.34,-4.06l0.91,-2.9l0.08,-1.42l1.07,-2.04l4.13,-0.72l2.18,0.03l2.05,1.17l0.03,0.59Z\", \"name\": \"Paraguay\"}, \"PA\": {\"path\": \"M213.8,263.68l0.26,-1.52l-0.36,-0.26l-0.01,-0.49l0.44,-0.1l0.93,1.4l1.26,0.03l0.77,0.49l1.38,-0.23l2.51,-1.11l0.86,-0.72l3.45,0.85l1.4,1.18l0.41,1.74l-0.21,0.34l-0.53,-0.12l-0.47,0.29l-0.16,0.6l-0.68,-1.28l0.45,-0.49l-0.19,-0.66l-0.47,-0.13l-0.54,-0.84l-1.5,-0.75l-1.1,0.16l-0.75,0.99l-1.62,0.84l-0.18,0.96l0.85,0.97l-0.58,0.45l-0.69,0.08l-0.34,-1.18l-1.27,0.03l-0.71,-1.05l-2.59,-0.46Z\", \"name\": \"Panama\"}, \"PG\": {\"path\": \"M808.58,298.86l2.54,2.56l-0.13,0.26l-0.33,0.12l-0.87,-0.78l-1.22,-2.16ZM801.41,293.04l0.5,0.29l0.26,0.27l-0.49,-0.35l-0.27,-0.21ZM803.17,294.58l0.59,0.5l0.08,1.06l-0.29,-0.91l-0.38,-0.65ZM796.68,298.41l0.52,0.75l1.43,-0.19l2.27,-1.81l-0.01,-1.43l1.12,0.16l-0.04,1.1l-0.7,1.28l-1.12,0.18l-0.62,0.79l-2.46,1.11l-1.17,-0.0l-3.08,-1.25l3.41,0.0l0.45,-0.68ZM789.15,303.55l2.31,1.8l1.59,2.61l1.34,0.13l-0.06,0.66l0.31,0.43l1.06,0.24l0.06,0.65l2.25,1.05l-1.22,0.13l-0.72,-0.63l-4.56,-0.65l-3.22,-2.87l-1.49,-2.34l-3.27,-1.1l-2.38,0.72l-1.59,0.86l-0.2,0.42l0.27,1.55l-1.55,0.68l-1.36,-0.4l-2.21,-0.09l-0.08,-15.41l8.39,2.93l2.95,2.4l0.6,1.64l4.02,1.49l0.31,0.68l-1.76,0.21l-0.33,0.52l0.55,1.68Z\", \"name\": \"Papua New Guinea\"}, \"PE\": {\"path\": \"M244.96,295.21l-1.26,-0.07l-0.57,0.42l-1.93,0.45l-2.98,1.75l-0.36,1.36l-0.58,0.8l0.12,1.37l-1.24,0.59l-0.22,1.22l-0.62,0.84l1.04,2.27l1.28,1.44l-0.41,0.84l0.32,0.57l1.48,0.13l1.16,1.37l2.21,0.07l1.63,-1.08l-0.13,3.02l0.3,0.4l1.14,0.29l1.31,-0.34l1.9,3.59l-0.48,0.85l-0.17,3.85l-0.94,1.59l0.35,0.75l-0.47,1.07l0.98,1.97l-2.1,3.82l-0.98,0.5l-2.17,-1.28l-0.39,-1.16l-4.95,-2.58l-4.46,-2.79l-1.84,-1.51l-0.91,-1.84l0.3,-0.96l-2.11,-3.33l-4.82,-9.68l-1.04,-1.2l-0.87,-1.94l-3.4,-2.48l0.58,-1.18l-1.13,-2.23l0.66,-1.49l1.45,-1.15l-0.6,0.98l0.07,0.92l0.47,0.36l1.74,0.03l0.97,1.17l0.54,0.07l1.42,-1.03l0.6,-1.84l1.42,-2.02l3.04,-1.04l2.73,-2.62l0.86,-1.74l-0.1,-1.87l1.44,1.02l0.9,1.25l1.06,0.59l1.7,2.73l1.86,0.31l1.45,-0.61l0.96,0.39l1.36,-0.19l1.45,0.89l-1.4,2.21l0.31,0.61l0.59,0.05l0.47,0.5Z\", \"name\": \"Peru\"}, \"PK\": {\"path\": \"M615.09,192.34l-1.83,1.81l-2.6,0.39l-3.73,-0.68l-1.58,1.33l-0.09,0.42l1.77,4.39l1.7,1.23l-1.69,1.27l-0.12,2.14l-2.33,2.64l-1.6,2.8l-2.46,2.67l-3.03,-0.07l-2.76,2.83l0.05,0.6l1.5,1.11l0.26,1.9l1.44,1.5l0.37,1.68l-5.01,-0.01l-1.78,1.7l-1.42,-0.52l-0.76,-1.87l-2.27,-2.15l-11.61,0.86l0.71,-2.34l3.43,-1.32l0.25,-0.44l-0.21,-1.24l-1.2,-0.65l-0.28,-2.46l-2.29,-1.14l-1.28,-1.94l2.82,0.94l2.62,-0.38l1.42,0.33l0.76,-0.56l1.71,0.19l3.25,-1.14l0.27,-0.36l0.08,-2.19l1.18,-1.32l1.68,0.0l0.58,-0.82l1.6,-0.3l1.19,0.16l0.98,-0.78l0.02,-1.88l0.93,-1.47l1.48,-0.66l0.19,-0.55l-0.66,-1.25l2.04,-0.11l0.69,-1.01l-0.02,-1.16l1.11,-1.06l-0.17,-1.78l-0.49,-1.03l1.15,-0.98l5.42,-0.91l2.6,-0.82l1.6,1.16l0.97,2.34l3.45,0.97Z\", \"name\": \"Pakistan\"}, \"PH\": {\"path\": \"M737.01,263.84l0.39,2.97l-0.44,1.18l-0.55,-1.53l-0.67,-0.14l-1.17,1.28l0.65,2.09l-0.42,0.69l-2.48,-1.23l-0.57,-1.49l0.65,-1.03l-0.1,-0.54l-1.59,-1.19l-0.56,0.08l-0.65,0.87l-1.23,0.0l-1.58,0.97l0.83,-1.8l2.56,-1.42l0.65,0.84l0.45,0.13l1.9,-0.69l0.56,-1.11l1.5,-0.06l0.38,-0.43l-0.09,-1.19l1.21,0.71l0.36,2.02ZM733.59,256.58l0.05,0.75l0.08,0.26l-0.8,-0.42l-0.18,-0.71l0.85,0.12ZM734.08,256.1l-0.12,-1.12l-1.0,-1.27l1.36,0.03l0.53,0.73l0.51,2.04l-1.27,-0.4ZM733.76,257.68l0.38,0.98l-0.32,0.15l-0.07,-1.13ZM724.65,238.43l1.46,0.7l0.72,-0.31l-0.32,1.17l0.79,1.71l-0.57,1.84l-1.53,1.04l-0.39,2.25l0.56,2.04l1.63,0.57l1.16,-0.27l2.71,1.23l-0.19,1.08l0.76,0.84l-0.08,0.36l-1.4,-0.9l-0.88,-1.27l-0.66,0.0l-0.38,0.55l-1.6,-1.31l-2.15,0.36l-0.87,-0.39l0.07,-0.61l0.66,-0.55l-0.01,-0.62l-0.75,-0.59l-0.72,0.44l-0.74,-0.87l-0.39,-2.49l0.32,0.27l0.66,-0.28l0.26,-3.97l0.7,-2.02l1.14,0.0ZM731.03,258.87l-0.88,0.85l-1.19,1.94l-1.05,-1.19l0.93,-1.1l0.32,-1.47l0.52,-0.06l-0.27,1.15l0.22,0.45l0.49,-0.12l1.0,-1.32l-0.08,0.85ZM726.83,255.78l0.83,0.38l1.17,-0.0l-0.02,0.48l-2.0,1.4l0.03,-2.26ZM724.81,252.09l-0.38,1.27l-1.42,-1.95l1.2,0.05l0.6,0.63ZM716.55,261.82l1.1,-0.95l0.03,-0.03l-0.28,0.36l-0.85,0.61ZM719.22,259.06l0.04,-0.06l0.8,-1.53l0.16,0.75l-1.0,0.84Z\", \"name\": \"Philippines\"}, \"PL\": {\"path\": \"M468.44,149.42l-1.11,-1.54l-1.86,-0.33l-0.48,-1.05l-1.72,-0.37l-0.65,0.69l-0.72,-0.36l0.11,-0.61l-0.33,-0.46l-1.75,-0.27l-1.04,-0.93l-0.94,-1.94l0.16,-1.22l-0.62,-1.8l-0.78,-1.07l0.57,-1.04l-0.48,-1.43l1.41,-0.83l6.91,-2.71l2.14,0.5l0.52,0.91l5.51,0.44l4.55,-0.05l1.07,0.31l0.48,0.84l0.15,1.58l0.65,1.2l-0.01,0.99l-1.27,0.58l-0.19,0.54l0.73,1.48l0.08,1.55l1.2,2.76l-0.17,0.58l-1.23,0.44l-2.27,2.72l0.18,0.95l-1.97,-1.03l-1.98,0.4l-1.36,-0.28l-1.24,0.58l-1.07,-0.97l-1.16,0.24Z\", \"name\": \"Poland\"}, \"ZM\": {\"path\": \"M481.47,313.3l0.39,0.31l2.52,0.14l0.99,1.17l2.01,0.35l1.4,-0.64l0.69,1.17l1.78,0.33l1.84,2.35l2.23,0.18l0.4,-0.43l-0.21,-2.74l-0.62,-0.3l-0.48,0.32l-1.98,-1.17l0.72,-5.29l-0.51,-1.18l0.57,-1.3l3.68,-0.62l0.26,0.63l1.21,0.63l0.9,-0.22l2.16,0.67l1.33,0.71l1.07,1.02l0.56,1.87l-0.88,2.7l0.43,2.09l-0.73,0.87l-0.76,2.37l0.59,0.68l-6.6,1.83l-0.29,0.44l0.19,1.45l-1.68,0.35l-1.43,1.02l-0.38,0.87l-0.87,0.26l-3.48,3.69l-4.16,-0.53l-1.52,-1.0l-1.77,-0.13l-1.83,0.52l-3.04,-3.4l0.11,-7.59l4.82,0.03l0.39,-0.49l-0.18,-0.76l0.33,-0.83l-0.4,-1.36l0.24,-1.05Z\", \"name\": \"Zambia\"}, \"EH\": {\"path\": \"M384.42,230.28l0.25,-0.79l1.06,-1.29l0.8,-3.51l3.38,-2.78l0.7,-1.81l0.06,4.84l-1.98,0.2l-0.94,1.59l0.39,3.56l-3.7,-0.01ZM392.01,218.1l0.7,-1.8l1.77,-0.24l2.09,0.34l0.95,-0.62l1.28,-0.07l-0.0,2.51l-6.79,-0.12Z\", \"name\": \"W. Sahara\"}, \"EE\": {\"path\": \"M485.71,115.04l2.64,0.6l2.56,0.11l-1.6,1.91l0.61,3.54l-0.81,0.87l-1.78,-0.01l-3.22,-1.76l-1.8,0.45l0.21,-1.53l-0.58,-0.41l-0.69,0.34l-1.26,-1.03l-0.17,-1.63l2.83,-0.92l3.05,-0.52Z\", \"name\": \"Estonia\"}, \"EG\": {\"path\": \"M492.06,205.03l1.46,0.42l2.95,-1.64l2.04,-0.21l1.53,0.3l0.59,1.19l0.69,0.04l0.41,-0.64l1.81,0.58l1.95,0.16l1.04,-0.51l1.42,4.08l-2.03,4.54l-1.66,-1.77l-1.76,-3.85l-0.64,-0.12l-0.36,0.67l1.04,2.88l3.44,6.95l1.78,3.04l2.03,2.65l-0.36,0.53l0.23,2.01l2.7,2.19l-28.41,0.0l0.0,-18.96l-0.73,-2.2l0.59,-1.56l-0.32,-1.26l0.68,-0.99l3.06,-0.04l4.82,1.52Z\", \"name\": \"Egypt\"}, \"ZA\": {\"path\": \"M467.14,373.21l-0.13,-1.96l-0.68,-1.56l0.7,-0.68l-0.13,-2.33l-4.56,-8.19l0.77,-0.86l0.6,0.45l0.69,1.31l2.83,0.72l1.5,-0.26l2.24,-1.39l0.19,-9.55l1.35,2.3l-0.21,1.5l0.61,1.2l0.4,0.19l1.79,-0.27l2.6,-2.07l0.69,-1.32l0.96,-0.48l2.19,1.04l2.04,0.13l1.77,-0.65l0.85,-2.12l1.38,-0.33l1.59,-2.76l2.15,-1.89l3.41,-1.87l2.0,0.45l1.02,-0.28l0.99,0.2l1.75,5.29l-0.38,3.25l-0.81,-0.23l-1.0,0.46l-0.87,1.68l-0.05,1.16l1.97,1.84l1.47,-0.29l0.69,-1.18l1.09,0.01l-0.76,3.69l-0.58,1.09l-2.2,1.79l-3.17,4.76l-2.8,2.83l-3.57,2.88l-2.53,1.05l-1.22,0.14l-0.51,0.7l-1.18,-0.32l-1.39,0.5l-2.59,-0.52l-1.61,0.33l-1.18,-0.11l-2.55,1.1l-2.1,0.44l-1.6,1.07l-0.85,0.05l-0.93,-0.89l-0.93,-0.15l-0.97,-1.13l-0.25,0.05ZM491.45,364.19l0.62,-0.93l1.48,-0.59l1.18,-2.19l-0.07,-0.49l-1.99,-1.69l-1.66,0.56l-1.43,1.14l-1.34,1.73l0.02,0.51l1.88,2.11l1.31,-0.16Z\", \"name\": \"South Africa\"}, \"EC\": {\"path\": \"M231.86,285.53l0.29,1.59l-0.69,1.45l-2.61,2.51l-3.13,1.11l-1.53,2.18l-0.49,1.68l-1.0,0.73l-1.02,-1.11l-1.78,-0.16l0.67,-1.15l-0.24,-0.86l1.25,-2.13l-0.54,-1.09l-0.67,-0.08l-0.72,0.87l-0.87,-0.64l0.35,-0.69l-0.36,-1.96l0.81,-0.51l0.45,-1.51l0.92,-1.57l-0.07,-0.97l2.65,-1.33l2.75,1.35l0.77,1.05l2.12,0.35l0.76,-0.32l1.96,1.21Z\", \"name\": \"Ecuador\"}, \"AL\": {\"path\": \"M470.32,171.8l0.74,0.03l0.92,0.89l-0.17,1.95l0.36,1.28l1.01,0.82l-1.82,2.83l-0.19,-0.61l-1.25,-0.89l-0.18,-1.2l0.53,-2.82l-0.54,-1.47l0.6,-0.83Z\", \"name\": \"Albania\"}, \"AO\": {\"path\": \"M461.55,300.03l1.26,3.15l1.94,2.36l2.47,-0.53l1.25,0.32l0.44,-0.18l0.93,-1.92l1.31,-0.08l0.41,-0.44l0.47,-0.0l-0.1,0.41l0.39,0.49l2.65,-0.02l0.03,1.19l0.48,1.01l-0.34,1.52l0.18,1.55l0.83,1.04l-0.13,2.85l0.54,0.39l3.96,-0.41l-0.1,1.79l0.39,1.05l-0.24,1.43l-4.7,-0.03l-0.4,0.39l-0.12,8.13l2.92,3.49l-3.83,0.88l-5.89,-0.36l-1.88,-1.24l-10.47,0.22l-1.3,-1.01l-1.85,-0.16l-2.4,0.77l-0.15,-1.06l0.33,-2.16l1.0,-3.45l1.35,-3.2l2.24,-2.8l0.33,-2.06l-0.13,-1.53l-0.8,-1.08l-1.21,-2.87l0.87,-1.62l-1.27,-4.12l-1.17,-1.53l2.47,-0.63l7.03,0.03ZM451.71,298.87l-0.47,-1.25l1.25,-1.11l0.32,0.3l-0.99,1.03l-0.12,1.03Z\", \"name\": \"Angola\"}, \"KZ\": {\"path\": \"M552.8,172.89l0.46,-1.27l-0.48,-1.05l-2.96,-1.19l-1.06,-2.58l-1.37,-0.87l-0.03,-0.3l1.95,0.23l0.45,-0.38l0.08,-1.96l1.75,-0.41l2.1,0.45l0.48,-0.33l0.45,-3.04l-0.45,-2.09l-0.41,-0.31l-2.42,0.15l-2.36,-0.73l-2.87,1.37l-2.17,0.61l-0.85,-0.34l0.13,-1.61l-1.6,-2.12l-2.02,-0.08l-1.78,-1.82l1.29,-2.18l-0.57,-0.95l1.62,-2.91l2.21,1.63l0.63,-0.27l0.29,-2.22l4.92,-3.43l3.71,-0.08l8.4,3.6l2.92,-1.36l3.77,-0.06l3.11,1.66l0.51,-0.11l0.6,-0.81l3.31,0.13l0.39,-0.25l0.63,-1.57l-0.17,-0.5l-3.5,-1.98l1.87,-1.27l-0.13,-1.03l1.98,-0.72l0.18,-0.62l-1.59,-2.06l0.81,-0.82l9.23,-1.18l1.33,-0.88l6.18,-1.26l2.26,-1.42l4.08,0.68l0.73,3.33l0.51,0.3l2.48,-0.8l2.79,1.02l-0.17,1.56l0.43,0.44l2.55,-0.24l4.89,-2.53l0.03,0.32l3.15,2.61l5.56,8.47l0.65,0.02l1.12,-1.46l3.15,1.74l3.76,-0.78l1.15,0.49l1.14,1.8l1.84,0.76l0.99,1.29l3.35,-0.25l1.02,1.52l-1.6,1.81l-1.93,0.28l-0.34,0.38l-0.11,3.05l-1.13,1.16l-4.75,-1.0l-0.46,0.27l-1.76,5.47l-1.1,0.59l-4.91,1.23l-0.27,0.54l2.1,4.97l-1.37,0.63l-0.23,0.41l0.13,1.13l-0.88,-0.25l-1.42,-1.13l-7.89,-0.4l-0.92,0.31l-3.73,-1.22l-1.42,0.63l-0.53,1.66l-3.72,-0.94l-1.85,0.43l-0.76,1.4l-4.65,2.62l-1.13,2.08l-0.44,0.01l-0.92,-1.4l-2.87,-0.09l-0.45,-2.14l-0.38,-0.32l-0.8,-0.01l0.0,-2.96l-3.0,-2.22l-7.31,0.58l-2.35,-2.68l-6.71,-3.69l-6.45,1.83l-0.29,0.39l0.1,10.85l-0.7,0.08l-1.62,-2.17l-1.83,-0.96l-3.11,0.59l-0.64,0.51Z\", \"name\": \"Kazakhstan\"}, \"ET\": {\"path\": \"M516.04,247.79l1.1,0.84l1.63,-0.45l0.68,0.47l1.63,0.03l2.01,0.94l1.73,1.66l1.64,2.07l-1.52,2.04l0.16,1.72l0.39,0.38l2.05,0.0l-0.36,1.03l2.86,3.58l8.32,3.08l1.31,0.02l-6.32,6.75l-3.1,0.11l-2.36,1.77l-1.47,0.04l-0.86,0.79l-1.38,-0.0l-1.32,-0.81l-2.29,1.05l-0.76,0.98l-3.29,-0.41l-3.07,-2.07l-1.8,-0.07l-0.62,-0.6l0.0,-1.24l-0.28,-0.38l-1.15,-0.37l-1.4,-2.59l-1.19,-0.68l-0.47,-1.0l-1.27,-1.23l-1.16,-0.22l0.43,-0.72l1.45,-0.28l0.41,-0.95l-0.03,-2.21l0.68,-2.44l1.05,-0.63l1.43,-3.06l1.57,-1.37l1.02,-2.51l0.35,-1.88l2.52,0.46l0.44,-0.24l0.58,-1.43Z\", \"name\": \"Ethiopia\"}, \"ZW\": {\"path\": \"M498.91,341.09l-1.11,-0.22l-0.92,0.28l-2.09,-0.44l-1.5,-1.11l-1.89,-0.43l-0.62,-1.4l-0.01,-0.84l-0.3,-0.38l-0.97,-0.25l-2.71,-2.74l-1.92,-3.32l3.83,0.45l3.73,-3.82l1.08,-0.44l0.26,-0.77l1.25,-0.9l1.41,-0.26l0.5,0.89l1.99,-0.05l1.72,1.17l1.11,0.17l1.05,0.66l0.01,2.99l-0.59,3.76l0.38,0.86l-0.23,1.23l-0.39,0.35l-0.63,1.81l-2.43,2.75Z\", \"name\": \"Zimbabwe\"}, \"ES\": {\"path\": \"M416.0,169.21l1.07,1.17l4.61,1.38l1.06,-0.57l2.6,1.26l2.71,-0.3l0.09,1.12l-2.14,1.8l-3.11,0.61l-0.31,0.31l-0.2,0.89l-1.54,1.69l-0.97,2.4l0.84,1.74l-1.32,1.27l-0.48,1.68l-1.88,0.65l-1.66,2.07l-5.36,-0.01l-1.79,1.08l-0.89,0.98l-0.88,-0.17l-0.79,-0.82l-0.68,-1.59l-2.37,-0.63l-0.11,-0.5l1.21,-1.82l-0.77,-1.13l0.61,-1.68l-0.76,-1.62l0.87,-0.49l0.09,-1.25l0.42,-0.6l0.03,-2.11l0.99,-0.69l0.13,-0.5l-1.03,-1.73l-1.46,-0.11l-0.61,0.38l-1.06,0.0l-0.52,-1.23l-0.53,-0.21l-1.32,0.67l-0.01,-1.49l-0.75,-0.96l3.03,-1.88l2.99,0.53l3.32,-0.02l2.63,0.51l6.01,-0.06Z\", \"name\": \"Spain\"}, \"ER\": {\"path\": \"M520.38,246.23l3.42,2.43l3.5,3.77l0.84,0.54l-0.95,-0.01l-3.51,-3.89l-2.33,-1.15l-1.73,-0.07l-0.91,-0.51l-1.26,0.51l-1.34,-1.02l-0.61,0.17l-0.66,1.61l-2.35,-0.43l-0.17,-0.67l1.29,-5.29l0.61,-0.61l1.95,-0.53l0.87,-1.01l1.17,2.41l0.68,2.33l1.49,1.43Z\", \"name\": \"Eritrea\"}, \"ME\": {\"path\": \"M468.91,172.53l-1.22,-1.02l0.47,-1.81l0.89,-0.72l2.26,1.51l-0.5,0.57l-0.75,-0.27l-1.14,1.73Z\", \"name\": \"Montenegro\"}, \"MD\": {\"path\": \"M488.41,153.73l1.4,-0.27l1.72,0.93l1.07,0.15l0.85,0.65l-0.14,0.84l0.96,0.85l1.12,2.47l-1.15,-0.07l-0.66,-0.41l-0.52,0.25l-0.09,0.86l-1.08,1.89l-0.27,-0.86l0.25,-1.34l-0.16,-1.6l-3.29,-4.34Z\", \"name\": \"Moldova\"}, \"MG\": {\"path\": \"M545.91,319.14l0.4,3.03l0.62,1.21l-0.21,1.02l-0.57,-0.8l-0.69,-0.01l-0.47,0.76l0.41,2.12l-0.18,0.87l-0.73,0.78l-0.15,2.14l-4.71,15.2l-1.06,2.88l-3.92,1.64l-3.12,-1.49l-0.6,-1.21l-0.19,-2.4l-0.86,-2.05l-0.21,-1.77l0.38,-1.62l1.21,-0.75l0.01,-0.76l1.19,-2.04l0.23,-1.66l-1.06,-2.99l-0.19,-2.21l0.81,-1.33l0.32,-1.46l4.63,-1.22l3.44,-3.0l0.85,-1.4l-0.08,-0.7l0.78,-0.04l1.38,-1.77l0.13,-1.64l0.45,-0.61l1.16,1.69l0.59,1.6Z\", \"name\": \"Madagascar\"}, \"MA\": {\"path\": \"M378.78,230.02l0.06,-0.59l0.92,-0.73l0.82,-1.37l-0.09,-1.04l0.79,-1.7l1.31,-1.58l0.96,-0.59l0.66,-1.55l0.09,-1.47l0.81,-1.48l1.72,-1.07l1.55,-2.69l1.16,-0.96l2.44,-0.39l1.94,-1.82l1.31,-0.78l2.09,-2.28l-0.51,-3.65l1.24,-3.7l1.5,-1.75l4.46,-2.57l2.37,-4.47l1.44,0.01l1.68,1.21l2.32,-0.19l3.47,0.65l0.8,1.54l0.16,1.71l0.86,2.96l0.56,0.59l-0.26,0.61l-3.05,0.44l-1.26,1.05l-1.33,0.22l-0.33,0.37l-0.09,1.78l-2.68,1.0l-1.07,1.42l-4.47,1.13l-4.04,2.01l-0.54,4.64l-1.15,0.06l-0.92,0.61l-1.96,-0.35l-2.42,0.54l-0.74,1.9l-0.86,0.4l-1.14,3.26l-3.53,3.01l-0.8,3.55l-0.96,1.1l-0.29,0.82l-4.95,0.18Z\", \"name\": \"Morocco\"}, \"UZ\": {\"path\": \"M598.64,172.75l-1.63,1.52l0.06,0.64l1.85,1.12l1.97,-0.64l2.21,1.17l-2.52,1.68l-2.59,-0.22l-0.18,-0.41l0.46,-1.23l-0.45,-0.53l-3.35,0.69l-2.1,3.51l-1.87,-0.12l-1.03,1.51l0.22,0.55l1.64,0.62l0.46,1.83l-1.19,2.49l-2.66,-0.53l0.05,-1.36l-0.26,-0.39l-3.3,-1.23l-2.56,-1.4l-4.4,-3.34l-1.34,-3.14l-1.08,-0.6l-2.58,0.13l-0.69,-0.44l-0.47,-2.52l-3.37,-1.6l-0.43,0.05l-2.07,1.72l-2.1,1.01l-0.21,0.47l0.28,1.01l-1.91,0.03l-0.09,-10.5l5.99,-1.7l6.19,3.54l2.71,2.84l7.05,-0.67l2.71,2.01l-0.17,2.81l0.39,0.42l0.9,0.02l0.44,2.14l0.38,0.32l2.94,0.09l0.95,1.42l1.28,-0.24l1.05,-2.04l4.43,-2.5Z\", \"name\": \"Uzbekistan\"}, \"MM\": {\"path\": \"M673.9,230.21l-1.97,1.57l-0.57,0.96l-1.4,0.6l-1.36,1.05l-1.99,0.36l-1.08,2.66l-0.91,0.4l-0.19,0.55l1.21,2.27l2.52,3.43l-0.79,1.91l-0.74,0.41l-0.17,0.52l0.65,1.37l1.61,1.95l0.25,2.58l0.9,2.13l-1.92,3.57l0.68,-2.25l-0.81,-1.74l0.19,-2.65l-1.05,-1.53l-1.24,-6.17l-1.12,-2.26l-0.6,-0.13l-4.34,3.02l-2.39,-0.65l0.77,-2.84l-0.52,-2.61l-1.91,-2.96l0.25,-0.75l-0.29,-0.51l-1.33,-0.3l-1.61,-1.93l-0.1,-1.3l0.82,-0.24l0.04,-1.64l1.02,-0.52l0.21,-0.45l-0.23,-0.95l0.54,-0.96l0.08,-2.22l1.46,0.45l0.47,-0.2l1.12,-2.19l0.16,-1.35l1.33,-2.16l-0.0,-1.52l2.89,-1.66l1.63,0.44l0.5,-0.44l-0.17,-1.4l0.64,-0.36l0.08,-1.04l0.77,-0.11l0.71,1.35l1.06,0.69l-0.03,3.86l-2.38,2.37l-0.3,3.15l0.46,0.43l2.28,-0.38l0.51,2.08l1.47,0.67l-0.6,1.8l0.19,0.48l2.97,1.48l1.64,-0.55l0.02,0.32Z\", \"name\": \"Myanmar\"}, \"ML\": {\"path\": \"M392.61,254.08l-0.19,-2.37l-0.99,-0.87l-0.44,-1.3l-0.09,-1.28l0.81,-0.58l0.35,-1.24l2.37,0.65l1.31,-0.47l0.86,0.15l0.66,-0.56l9.83,-0.04l0.38,-0.28l0.56,-1.8l-0.44,-0.65l-2.35,-21.95l3.27,-0.04l16.7,11.38l0.74,1.31l2.5,1.09l0.02,1.38l0.44,0.39l2.34,-0.21l0.01,5.38l-1.28,1.61l-0.26,1.49l-5.31,0.57l-1.07,0.92l-2.9,0.1l-0.86,-0.48l-1.38,0.36l-2.4,1.08l-0.6,0.87l-1.85,1.09l-0.43,0.7l-0.79,0.39l-1.44,-0.21l-0.81,0.84l-0.34,1.64l-1.91,2.02l-0.06,1.03l-0.67,1.22l0.13,1.16l-0.97,0.39l-0.23,-0.64l-0.52,-0.24l-1.35,0.4l-0.34,0.55l-2.69,-0.28l-0.37,-0.35l-0.02,-0.9l-0.65,-0.35l0.45,-0.64l-0.03,-0.53l-2.12,-2.44l-0.76,-0.01l-2.0,1.16l-0.78,-0.15l-0.8,-0.67l-1.21,0.23Z\", \"name\": \"Mali\"}, \"MN\": {\"path\": \"M676.61,146.48l3.81,1.68l5.67,-1.0l2.37,0.41l2.34,1.5l1.79,1.75l2.29,-0.03l3.12,0.52l2.47,-0.81l3.41,-0.59l3.53,-2.21l1.25,0.29l1.53,1.13l2.27,-0.21l-2.66,5.01l0.64,1.68l0.47,0.21l1.32,-0.38l2.38,0.48l2.02,-1.11l1.76,0.89l2.06,2.02l-0.13,0.53l-1.72,-0.29l-3.77,0.46l-1.88,0.99l-1.76,1.99l-3.71,1.17l-2.45,1.6l-3.83,-0.87l-0.41,0.17l-1.31,1.99l1.04,2.24l-1.52,0.9l-1.74,1.57l-2.79,1.02l-3.78,0.13l-4.05,1.05l-2.77,1.52l-1.16,-0.85l-2.94,0.0l-3.62,-1.79l-2.58,-0.49l-3.4,0.41l-5.12,-0.67l-2.63,0.06l-1.31,-1.6l-1.4,-3.0l-1.48,-0.33l-3.13,-1.94l-6.16,-0.93l-0.71,-1.06l0.86,-3.82l-1.93,-2.71l-3.5,-1.18l-1.95,-1.58l-0.5,-1.72l2.34,-0.52l4.75,-2.8l3.62,-1.47l2.18,0.97l2.46,0.05l1.81,1.53l2.46,0.12l3.95,0.71l2.43,-2.28l0.08,-0.48l-0.9,-1.72l2.24,-2.98l2.62,1.27l4.94,1.17l0.43,2.24Z\", \"name\": \"Mongolia\"}, \"MK\": {\"path\": \"M472.8,173.98l0.49,-0.71l3.57,-0.71l1.0,0.77l0.13,1.45l-0.65,0.53l-1.15,-0.05l-1.12,0.67l-1.39,0.22l-0.79,-0.55l-0.29,-1.03l0.19,-0.6Z\", \"name\": \"Macedonia\"}, \"MW\": {\"path\": \"M505.5,309.31l0.85,1.95l0.15,2.86l-0.69,1.65l0.71,1.8l0.06,1.28l0.49,0.64l0.07,1.06l0.4,0.55l0.8,-0.23l0.55,0.61l0.69,-0.21l0.34,0.6l0.19,2.94l-1.04,0.62l-0.54,1.25l-1.11,-1.08l-0.16,-1.56l0.51,-1.31l-0.32,-1.3l-0.99,-0.65l-0.82,0.12l-2.36,-1.64l0.63,-1.96l0.82,-1.18l-0.46,-2.01l0.9,-2.86l-0.94,-2.51l0.96,0.18l0.29,0.4Z\", \"name\": \"Malawi\"}, \"MR\": {\"path\": \"M407.36,220.66l-2.58,0.03l-0.39,0.44l2.42,22.56l0.36,0.43l-0.39,1.24l-9.75,0.04l-0.56,0.53l-0.91,-0.11l-1.27,0.45l-1.61,-0.66l-0.97,0.03l-0.36,0.29l-0.38,1.35l-0.42,0.23l-2.93,-3.4l-2.96,-1.52l-1.62,-0.03l-1.27,0.54l-1.12,-0.2l-0.65,0.4l-0.08,-0.49l0.68,-1.29l0.31,-2.43l-0.57,-3.91l0.23,-1.21l-0.69,-1.5l-1.15,-1.02l0.25,-0.39l9.58,0.02l0.4,-0.45l-0.46,-3.68l0.47,-1.04l2.12,-0.21l0.36,-0.4l-0.08,-6.4l7.81,0.13l0.41,-0.4l0.01,-3.31l7.76,5.35Z\", \"name\": \"Mauritania\"}, \"UG\": {\"path\": \"M498.55,276.32l0.7,-0.46l1.65,0.5l1.96,-0.57l1.7,0.01l1.45,-0.98l0.91,1.33l1.33,3.95l-2.57,4.03l-1.46,-0.4l-2.54,0.91l-1.37,1.61l-0.01,0.81l-2.42,-0.01l-2.26,1.01l-0.17,-1.59l0.58,-1.04l0.14,-1.94l1.37,-2.28l1.78,-1.58l-0.17,-0.65l-0.72,-0.24l0.13,-2.43Z\", \"name\": \"Uganda\"}, \"MY\": {\"path\": \"M717.47,273.46l-1.39,0.65l-2.12,-0.41l-2.88,-0.0l-0.38,0.28l-0.84,2.75l-0.99,0.96l-1.21,3.29l-1.73,0.45l-2.45,-0.68l-1.39,0.31l-1.33,1.15l-1.59,-0.14l-1.41,0.44l-1.44,-1.19l-0.18,-0.73l1.34,0.53l1.93,-0.47l0.75,-2.22l4.02,-1.03l2.75,-3.21l0.82,0.94l0.64,-0.05l0.4,-0.65l0.96,0.06l0.42,-0.36l0.24,-2.68l1.81,-1.64l1.21,-1.86l0.63,-0.01l1.07,1.05l0.34,1.28l3.44,1.35l-0.06,0.35l-1.37,0.1l-0.35,0.54l0.32,0.88ZM673.68,269.59l0.17,1.09l0.47,0.33l1.65,-0.3l0.87,-0.94l1.61,1.52l0.98,1.56l-0.12,2.81l0.41,2.29l0.95,0.9l0.88,2.44l-1.27,0.12l-5.1,-3.67l-0.34,-1.29l-1.37,-1.59l-0.33,-1.97l-0.88,-1.4l0.25,-1.68l-0.46,-1.05l1.63,0.84Z\", \"name\": \"Malaysia\"}, \"MX\": {\"path\": \"M133.12,200.41l0.2,0.47l9.63,3.33l6.96,-0.02l0.4,-0.4l0.0,-0.74l3.77,0.0l3.55,2.93l1.39,2.83l1.52,1.04l2.08,0.82l0.47,-0.14l1.46,-2.0l1.73,-0.04l1.59,0.98l2.05,3.35l1.47,1.56l1.26,3.14l2.18,1.02l2.26,0.58l-1.18,3.72l-0.42,5.04l1.79,4.89l1.62,1.89l0.61,1.52l1.2,1.42l2.55,0.66l1.37,1.1l7.54,-1.89l1.86,-1.3l1.14,-4.3l4.1,-1.21l3.57,-0.11l0.32,0.3l-0.06,0.94l-1.26,1.45l-0.67,1.71l0.38,0.7l-0.72,2.27l-0.49,-0.3l-1.0,0.08l-1.0,1.39l-0.47,-0.11l-0.53,0.47l-4.26,-0.02l-0.4,0.4l-0.0,1.06l-1.1,0.26l0.1,0.44l1.82,1.44l0.56,0.91l-3.19,0.21l-1.21,2.09l0.24,0.72l-0.2,0.44l-2.24,-2.18l-1.45,-0.93l-2.22,-0.69l-1.52,0.22l-3.07,1.16l-10.55,-3.85l-2.86,-1.96l-3.78,-0.92l-1.08,-1.19l-2.62,-1.43l-1.18,-1.54l-0.38,-0.81l0.66,-0.63l-0.18,-0.53l0.52,-0.76l0.01,-0.91l-2.0,-3.82l-2.21,-2.63l-2.53,-2.09l-1.19,-1.62l-2.2,-1.17l-0.3,-0.43l0.34,-1.48l-0.21,-0.45l-1.23,-0.6l-1.36,-1.2l-0.59,-1.78l-1.54,-0.47l-2.44,-2.55l-0.16,-0.9l-1.33,-2.03l-0.84,-1.99l-0.16,-1.33l-1.81,-1.1l-0.97,0.05l-1.31,-0.7l-0.57,0.22l-0.4,1.12l0.72,3.77l3.51,3.89l0.28,0.78l0.53,0.26l0.41,1.43l1.33,1.73l1.58,1.41l0.8,2.39l1.43,2.41l0.13,1.32l0.37,0.36l1.04,0.08l1.67,2.28l-0.85,0.76l-0.66,-1.51l-1.68,-1.54l-2.91,-1.87l0.06,-1.82l-0.54,-1.68l-2.91,-2.03l-0.55,0.09l-1.95,-1.1l-0.88,-0.94l0.68,-0.08l0.93,-1.01l0.08,-1.78l-1.93,-1.94l-1.46,-0.77l-3.75,-7.56l4.88,-0.42Z\", \"name\": \"Mexico\"}, \"VU\": {\"path\": \"M839.04,322.8l0.22,1.14l-0.44,0.03l-0.2,-1.45l0.42,0.27Z\", \"name\": \"Vanuatu\"}, \"FR\": {\"path\": \"M444.48,172.62l-0.64,1.78l-0.58,-0.31l-0.49,-1.72l0.4,-0.89l1.0,-0.72l0.3,1.85ZM429.64,147.1l1.78,1.58l1.46,-0.13l2.1,1.42l1.35,0.27l1.23,0.83l3.04,0.5l-1.03,1.85l-0.3,2.12l-0.41,0.32l-0.95,-0.24l-0.5,0.43l0.06,0.61l-1.81,1.92l-0.04,1.42l0.55,0.38l0.88,-0.36l0.61,0.97l-0.03,1.0l0.57,0.91l-0.75,1.09l0.65,2.39l1.27,0.57l-0.18,0.82l-2.01,1.53l-4.77,-0.8l-3.82,1.0l-0.53,1.85l-2.49,0.34l-2.71,-1.31l-1.16,0.57l-4.31,-1.29l-0.72,-0.86l1.19,-1.78l0.39,-6.45l-2.58,-3.3l-1.9,-1.66l-3.72,-1.23l-0.19,-1.72l2.81,-0.61l4.12,0.81l0.47,-0.48l-0.6,-2.77l1.94,0.95l5.83,-2.54l0.92,-2.74l1.6,-0.49l0.24,0.78l1.36,0.33l1.05,1.19ZM289.01,278.39l-0.81,0.8l-0.78,0.12l-0.5,-0.66l-0.56,-0.1l-0.91,0.6l-0.46,-0.22l1.09,-2.96l-0.96,-1.77l-0.17,-1.49l1.07,-1.77l2.32,0.75l2.51,2.01l0.3,0.74l-2.14,3.96Z\", \"name\": \"France\"}, \"FI\": {\"path\": \"M492.17,76.39l-0.23,3.5l3.52,2.63l-2.08,2.88l-0.02,0.44l2.8,4.56l-1.59,3.31l2.16,3.24l-0.94,2.39l0.14,0.47l3.44,2.51l-0.77,1.62l-7.52,6.95l-4.5,0.31l-4.38,1.37l-3.8,0.74l-1.44,-1.96l-2.17,-1.11l0.5,-3.66l-1.16,-3.33l1.09,-2.08l2.21,-2.42l5.67,-4.32l1.64,-0.83l0.21,-0.42l-0.46,-2.02l-3.38,-1.89l-0.75,-1.43l-0.22,-6.74l-6.79,-4.8l0.8,-0.62l2.54,2.12l3.46,-0.12l3.0,0.96l2.51,-2.11l1.17,-3.08l3.55,-1.38l2.76,1.53l-0.95,2.79Z\", \"name\": \"Finland\"}, \"FJ\": {\"path\": \"M871.53,326.34l-2.8,1.05l-0.08,-0.23l2.97,-1.21l-0.1,0.39ZM867.58,329.25l0.43,0.37l-0.27,0.88l-1.24,0.28l-1.04,-0.24l-0.14,-0.66l0.63,-0.58l0.92,0.26l0.7,-0.31Z\", \"name\": \"Fiji\"}, \"FK\": {\"path\": \"M274.36,425.85l1.44,1.08l-0.47,0.73l-3.0,0.89l-0.96,-1.0l-0.52,-0.05l-1.83,1.29l-0.73,-0.88l2.46,-1.64l1.93,0.76l1.67,-1.19Z\", \"name\": \"Falkland Is.\"}, \"NI\": {\"path\": \"M202.33,252.67l0.81,-0.18l1.03,-1.02l-0.04,-0.88l0.68,-0.0l0.63,-0.54l0.97,0.22l1.53,-1.26l0.58,-0.99l1.17,0.34l2.41,-0.94l0.13,1.32l-0.81,1.94l0.1,2.74l-0.36,0.37l-0.11,1.75l-0.47,0.81l0.18,1.14l-1.73,-0.85l-0.71,0.27l-1.47,-0.6l-0.52,0.16l-4.01,-3.81Z\", \"name\": \"Nicaragua\"}, \"NL\": {\"path\": \"M430.31,143.39l0.6,-0.5l2.13,-4.8l3.2,-1.33l1.74,0.08l0.33,0.8l-0.59,2.92l-0.5,0.99l-1.26,0.0l-0.4,0.45l0.33,2.7l-2.2,-1.78l-2.62,0.58l-0.75,-0.11Z\", \"name\": \"Netherlands\"}, \"NO\": {\"path\": \"M491.44,67.41l6.8,2.89l-2.29,0.86l-0.15,0.65l2.33,2.38l-4.98,1.79l0.84,-2.45l-0.18,-0.48l-3.55,-1.8l-3.89,1.52l-1.42,3.38l-2.12,1.72l-2.64,-1.0l-3.11,0.21l-2.66,-2.22l-0.5,-0.01l-1.41,1.1l-1.44,0.17l-0.35,0.35l-0.32,2.47l-4.32,-0.64l-0.44,0.29l-0.58,2.11l-2.45,0.2l-4.15,7.68l-3.88,5.76l0.78,1.62l-0.64,1.16l-2.24,-0.06l-0.38,0.24l-1.66,3.89l0.15,5.17l1.57,2.04l-0.78,4.16l-2.02,2.48l-0.85,1.63l-1.3,-1.75l-0.58,-0.07l-4.87,4.19l-3.1,0.79l-3.16,-1.7l-0.85,-3.77l-0.77,-8.55l2.14,-2.31l6.55,-3.27l5.02,-4.17l10.63,-13.84l10.98,-8.7l5.35,-1.91l4.34,0.12l3.69,-3.64l4.49,0.19l4.37,-0.89ZM484.55,20.04l4.26,1.75l-3.1,2.55l-7.1,0.65l-7.08,-0.9l-0.37,-1.31l-0.37,-0.29l-3.44,-0.1l-2.08,-2.0l6.87,-1.44l3.9,1.31l2.39,-1.64l6.13,1.4ZM481.69,33.93l-4.45,1.74l-3.54,-0.99l1.12,-0.9l0.05,-0.58l-1.06,-1.22l4.22,-0.89l1.09,1.97l2.57,0.87ZM466.44,24.04l7.43,3.77l-5.41,1.86l-1.58,4.08l-2.26,1.2l-1.12,4.11l-2.61,0.18l-4.79,-2.86l1.84,-1.54l-0.1,-0.68l-3.69,-1.53l-4.77,-4.51l-1.73,-3.89l6.11,-1.82l1.54,1.92l3.57,-0.08l1.2,-1.96l3.32,-0.18l3.05,1.92Z\", \"name\": \"Norway\"}, \"NA\": {\"path\": \"M474.26,330.66l-0.97,0.04l-0.38,0.4l-0.07,8.9l-2.09,0.08l-0.39,0.4l-0.0,17.42l-1.98,1.23l-1.17,0.17l-2.44,-0.66l-0.48,-1.13l-0.99,-0.74l-0.54,0.05l-0.9,1.01l-1.53,-1.68l-0.93,-1.88l-1.99,-8.56l-0.06,-3.12l-0.33,-1.52l-2.3,-3.34l-1.91,-4.83l-1.96,-2.43l-0.12,-1.57l2.33,-0.79l1.43,0.07l1.81,1.13l10.23,-0.25l1.84,1.23l5.87,0.35ZM474.66,330.64l6.51,-1.6l1.9,0.39l-1.69,0.4l-1.31,0.83l-1.12,-0.94l-4.29,0.92Z\", \"name\": \"Namibia\"}, \"NC\": {\"path\": \"M838.78,341.24l-0.33,0.22l-2.9,-1.75l-3.26,-3.37l1.65,0.83l4.85,4.07Z\", \"name\": \"New Caledonia\"}, \"NE\": {\"path\": \"M454.75,226.53l1.33,1.37l0.48,0.07l1.27,-0.7l0.53,3.52l0.94,0.83l0.17,0.92l0.81,0.69l-0.44,0.95l-0.96,5.26l-0.13,3.22l-3.04,2.31l-1.22,3.57l1.02,1.24l-0.0,1.46l0.39,0.4l1.13,0.04l-0.9,1.25l-1.47,-2.42l-0.86,-0.29l-2.09,1.37l-1.74,-0.67l-1.45,-0.17l-0.85,0.35l-1.36,-0.07l-1.64,1.09l-1.06,0.05l-2.94,-1.28l-1.44,0.59l-1.01,-0.03l-0.97,-0.94l-2.7,-0.98l-2.69,0.3l-0.87,0.64l-0.47,1.6l-0.75,1.16l-0.12,1.53l-1.57,-1.1l-1.31,0.24l0.03,-0.81l-0.32,-0.41l-2.59,-0.52l-0.15,-1.16l-1.35,-1.6l-0.29,-1.0l0.13,-0.84l1.29,-0.08l1.08,-0.92l3.31,-0.22l2.22,-0.41l0.32,-0.34l0.2,-1.47l1.39,-1.88l-0.01,-5.66l3.36,-1.12l7.24,-5.12l8.42,-4.92l3.69,1.06Z\", \"name\": \"Niger\"}, \"NG\": {\"path\": \"M456.32,253.89l0.64,0.65l-0.28,1.04l-2.11,2.01l-2.03,5.18l-1.37,1.16l-1.15,3.18l-1.33,0.66l-1.46,-0.97l-1.21,0.16l-1.38,1.36l-0.91,0.24l-1.79,4.06l-2.33,0.81l-1.11,-0.07l-0.86,0.5l-1.71,-0.05l-1.19,-1.39l-0.89,-1.89l-1.77,-1.66l-3.95,-0.08l0.07,-5.21l0.42,-1.43l1.95,-2.3l-0.14,-0.91l0.43,-1.18l-0.53,-1.41l0.25,-2.92l0.72,-1.07l0.32,-1.34l0.46,-0.39l2.47,-0.28l2.34,0.89l1.15,1.02l1.28,0.04l1.22,-0.58l3.03,1.27l1.49,-0.14l1.36,-1.0l1.33,0.07l0.82,-0.35l3.45,0.8l1.82,-1.32l1.84,2.67l0.66,0.16Z\", \"name\": \"Nigeria\"}, \"NZ\": {\"path\": \"M857.8,379.65l1.86,3.12l0.44,0.18l0.3,-0.38l0.03,-1.23l0.38,0.27l0.57,2.31l2.02,0.94l1.81,0.27l1.57,-1.06l0.7,0.18l-1.15,3.59l-1.98,0.11l-0.74,1.2l0.2,1.11l-2.42,3.98l-1.49,0.92l-1.04,-0.85l1.21,-2.05l-0.81,-2.01l-2.63,-1.25l0.04,-0.57l1.82,-1.19l0.43,-2.34l-0.16,-2.03l-0.95,-1.82l-0.06,-0.72l-3.11,-3.64l-0.79,-1.52l1.56,1.45l1.76,0.66l0.65,2.34ZM853.83,393.59l0.57,1.24l0.59,0.16l1.42,-0.97l0.46,0.79l0.0,1.03l-2.47,3.48l-1.26,1.2l-0.06,0.5l0.55,0.87l-1.41,0.07l-2.33,1.38l-2.03,5.02l-3.02,2.16l-2.06,-0.06l-1.71,-1.04l-2.47,-0.2l-0.27,-0.73l1.22,-2.1l3.05,-2.94l1.62,-0.59l4.02,-2.82l1.57,-1.67l1.07,-2.16l0.88,-0.7l0.48,-1.75l1.24,-0.97l0.35,0.79Z\", \"name\": \"New Zealand\"}, \"NP\": {\"path\": \"M641.14,213.62l0.01,3.19l-1.74,0.04l-4.8,-0.86l-1.58,-1.39l-3.37,-0.34l-7.65,-3.7l0.8,-2.09l2.33,-1.7l1.77,0.75l2.49,1.76l1.38,0.41l0.99,1.35l1.9,0.52l1.99,1.17l5.49,0.9Z\", \"name\": \"Nepal\"}, \"CI\": {\"path\": \"M407.4,259.27l0.86,0.42l0.56,0.9l1.13,0.53l1.19,-0.61l0.97,-0.08l1.42,0.54l0.6,3.24l-1.03,2.08l-0.65,2.84l1.06,2.33l-0.06,0.53l-2.54,-0.47l-1.66,0.03l-3.06,0.46l-4.11,1.6l0.32,-3.06l-1.18,-1.31l-1.32,-0.66l0.42,-0.85l-0.2,-1.4l0.5,-0.67l0.01,-1.59l0.84,-0.32l0.26,-0.5l-1.15,-3.01l0.12,-0.5l0.51,-0.25l0.66,0.31l1.93,0.02l0.67,-0.71l0.71,-0.14l0.25,0.69l0.57,0.22l1.4,-0.61Z\", \"name\": \"C\\u00c3\\u00b4te d'Ivoire\"}, \"CH\": {\"path\": \"M444.62,156.35l-0.29,0.87l0.18,0.53l1.13,0.58l1.0,0.1l-0.1,0.65l-0.79,0.38l-1.72,-0.37l-0.45,0.23l-0.45,1.04l-0.75,0.06l-0.84,-0.4l-1.32,1.0l-0.96,0.12l-0.88,-0.55l-0.81,-1.3l-0.49,-0.16l-0.63,0.26l0.02,-0.65l1.71,-1.66l0.1,-0.56l0.93,0.08l0.58,-0.46l1.99,0.02l0.66,-0.61l2.19,0.79Z\", \"name\": \"Switzerland\"}, \"CO\": {\"path\": \"M242.07,254.93l-1.7,0.59l-0.59,1.18l-1.7,1.69l-0.38,1.93l-0.67,1.43l0.31,0.57l1.03,0.13l0.25,0.9l0.57,0.64l-0.04,2.34l1.64,1.42l3.16,-0.24l1.26,0.28l1.67,2.06l0.41,0.13l4.09,-0.39l0.45,0.22l-0.92,1.95l-0.2,1.8l0.52,1.83l0.75,1.05l-1.12,1.1l0.07,0.63l0.84,0.51l0.74,1.29l-0.39,-0.45l-0.59,-0.01l-0.71,0.74l-4.71,-0.05l-0.4,0.41l0.03,1.57l0.33,0.39l1.11,0.2l-1.68,0.4l-0.29,0.38l-0.01,1.82l1.16,1.14l0.34,1.25l-1.05,7.05l-1.04,-0.87l1.26,-1.99l-0.13,-0.56l-2.18,-1.23l-1.38,0.2l-1.14,-0.38l-1.27,0.61l-1.55,-0.26l-1.38,-2.46l-1.23,-0.75l-0.85,-1.2l-1.67,-1.19l-0.86,0.13l-2.11,-1.32l-1.01,0.31l-1.8,-0.29l-0.52,-0.91l-3.09,-1.68l0.77,-0.52l-0.1,-1.12l0.41,-0.64l1.34,-0.32l2.0,-2.88l-0.11,-0.57l-0.66,-0.43l0.39,-1.38l-0.52,-2.1l0.49,-0.83l-0.4,-2.13l-0.97,-1.35l0.17,-0.66l0.86,-0.08l0.47,-0.75l-0.46,-1.63l1.41,-0.07l1.8,-1.69l0.93,-0.24l0.3,-0.38l0.45,-2.76l1.22,-1.0l1.44,-0.04l0.45,-0.5l1.91,0.12l2.93,-1.84l1.15,-1.14l0.91,0.46l-0.25,0.45Z\", \"name\": \"Colombia\"}, \"CN\": {\"path\": \"M740.23,148.97l4.57,1.3l2.8,2.17l0.98,2.9l0.38,0.27l3.8,0.0l2.32,-1.28l3.29,-0.75l-0.96,2.09l-1.02,1.28l-0.85,3.4l-1.52,2.73l-2.76,-0.5l-2.4,1.13l-0.21,0.45l0.64,2.57l-0.32,3.2l-0.94,0.06l-0.37,0.89l-0.91,-1.01l-0.64,0.07l-0.92,1.57l-3.73,1.25l-0.26,0.48l0.26,1.06l-1.5,-0.08l-1.09,-0.86l-0.56,0.06l-1.67,2.06l-2.7,1.56l-2.03,1.88l-3.4,0.83l-1.93,1.4l-1.15,0.34l0.33,-0.7l-0.41,-0.89l1.79,-1.79l0.02,-0.54l-1.32,-1.56l-0.48,-0.1l-2.24,1.09l-2.83,2.06l-1.51,1.83l-2.28,0.13l-1.55,1.49l-0.04,0.5l1.32,1.97l2.0,0.58l0.31,1.35l1.98,0.84l3.0,-1.96l2.0,1.02l1.49,0.11l0.22,0.83l-3.37,0.86l-1.12,1.48l-2.5,1.52l-1.29,1.99l0.14,0.56l2.57,1.48l0.97,2.7l3.17,4.63l-0.03,1.66l-1.35,0.65l-0.2,0.51l0.6,1.47l1.4,0.91l-0.89,3.82l-1.43,0.38l-3.85,6.44l-2.27,3.11l-6.78,4.57l-2.73,0.29l-1.45,1.04l-0.62,-0.61l-0.55,-0.01l-1.36,1.25l-3.39,1.27l-2.61,0.4l-1.1,2.79l-0.81,0.09l-0.49,-1.42l0.5,-0.85l-0.25,-0.59l-3.36,-0.84l-1.3,0.4l-2.31,-0.62l-0.94,-0.84l0.33,-1.28l-0.3,-0.49l-2.19,-0.46l-1.13,-0.93l-0.47,-0.02l-2.06,1.36l-4.29,0.28l-2.76,1.05l-0.28,0.43l0.32,2.53l-0.59,-0.03l-0.19,-1.34l-0.55,-0.34l-1.68,0.7l-2.46,-1.23l0.62,-1.87l-0.26,-0.51l-1.37,-0.44l-0.54,-2.22l-0.45,-0.3l-2.13,0.35l0.24,-2.48l2.39,-2.4l0.03,-4.31l-1.19,-0.92l-0.78,-1.49l-0.41,-0.21l-1.41,0.19l-1.98,-0.3l0.46,-1.07l-1.17,-1.7l-0.55,-0.11l-1.63,1.05l-2.25,-0.57l-2.89,1.73l-2.25,1.98l-1.75,0.29l-1.17,-0.71l-3.31,-0.65l-1.48,0.79l-1.04,1.27l-0.12,-1.17l-0.54,-0.34l-1.44,0.54l-5.55,-0.86l-1.98,-1.16l-1.89,-0.54l-0.99,-1.35l-1.34,-0.37l-2.55,-1.79l-2.01,-0.84l-1.21,0.56l-5.57,-3.45l-0.53,-2.31l1.19,0.25l0.48,-0.37l0.08,-1.42l-0.98,-1.56l0.15,-2.44l-2.69,-3.32l-4.12,-1.23l-0.67,-2.0l-1.92,-1.48l-0.38,-0.7l-0.51,-3.01l-1.52,-0.66l-0.7,0.13l-0.48,-2.05l0.55,-0.51l-0.09,-0.82l2.03,-1.19l1.6,-0.54l2.56,0.38l0.42,-0.22l0.85,-1.7l3.0,-0.33l1.1,-1.26l4.05,-1.77l0.39,-0.91l-0.17,-1.44l1.45,-0.67l0.2,-0.52l-2.07,-4.9l4.51,-1.12l1.37,-0.73l1.89,-5.51l4.98,0.86l1.51,-1.7l0.11,-2.87l1.99,-0.38l1.83,-2.06l0.49,-0.13l0.68,2.08l2.23,1.77l3.44,1.16l1.55,2.29l-0.92,3.49l0.96,1.67l6.54,1.13l2.95,1.87l1.47,0.35l1.06,2.62l1.53,1.91l3.05,0.08l5.14,0.67l3.37,-0.41l2.36,0.43l3.65,1.8l3.06,0.04l1.45,0.88l2.87,-1.59l3.95,-1.02l3.83,-0.14l3.06,-1.14l1.77,-1.6l1.72,-1.01l0.17,-0.49l-1.1,-2.05l1.02,-1.54l4.02,0.8l2.45,-1.61l3.76,-1.19l1.96,-2.13l1.63,-0.83l3.51,-0.4l1.92,0.34l0.46,-0.3l0.17,-1.5l-2.27,-2.22l-2.11,-1.09l-2.18,1.11l-2.32,-0.47l-1.29,0.32l-0.4,-0.82l2.73,-5.16l3.02,1.06l3.53,-2.06l0.18,-1.68l2.16,-3.35l1.49,-1.35l-0.03,-1.85l-1.07,-0.85l1.54,-1.26l2.98,-0.59l3.23,-0.09l3.64,0.99l2.04,1.16l3.29,6.71l0.92,3.19ZM696.92,237.31l-1.87,1.08l-1.63,-0.64l-0.06,-1.79l1.03,-0.98l2.58,-0.69l1.16,0.05l0.3,0.54l-0.98,1.06l-0.53,1.37Z\", \"name\": \"China\"}, \"CM\": {\"path\": \"M457.92,257.49l1.05,1.91l-1.4,0.16l-1.05,-0.23l-0.45,0.22l-0.54,1.19l0.08,0.45l1.48,1.47l1.05,0.45l1.01,2.46l-1.52,2.99l-0.68,0.68l-0.13,3.69l2.38,3.84l1.09,0.8l0.24,2.48l-3.67,-1.14l-11.27,-0.13l0.23,-1.79l-0.98,-1.66l-1.19,-0.54l-0.44,-0.97l-0.6,-0.42l1.71,-4.27l0.75,-0.13l1.38,-1.36l0.65,-0.03l1.71,0.99l1.93,-1.12l1.14,-3.18l1.38,-1.17l2.0,-5.14l2.17,-2.13l0.3,-1.64l-0.86,-0.88l0.03,-0.33l0.94,1.28l0.07,3.22Z\", \"name\": \"Cameroon\"}, \"CL\": {\"path\": \"M246.5,429.18l-3.14,1.83l-0.57,3.16l-0.64,0.05l-2.68,-1.06l-2.82,-2.33l-3.04,-1.89l-0.69,-1.85l0.63,-2.14l-1.21,-2.11l-0.31,-5.37l1.01,-2.91l2.57,-2.38l-0.18,-0.68l-3.16,-0.77l2.05,-2.47l0.77,-4.65l2.32,0.9l0.54,-0.29l1.31,-6.31l-0.22,-0.44l-1.68,-0.8l-0.56,0.28l-0.7,3.36l-0.81,-0.22l1.56,-9.41l1.15,-2.24l-0.71,-2.82l-0.18,-2.84l1.01,-0.33l3.26,-9.14l1.07,-4.22l-0.56,-4.21l0.74,-2.34l-0.29,-3.27l1.46,-3.34l2.04,-16.59l-0.66,-7.76l1.03,-0.53l0.54,-0.9l0.79,1.14l0.32,1.78l1.25,1.16l-0.69,2.55l1.33,2.9l0.97,3.59l0.46,0.29l1.5,-0.3l0.11,0.23l-0.76,2.44l-2.57,1.23l-0.23,0.37l0.08,4.33l-0.46,0.77l0.56,1.21l-1.58,1.51l-1.68,2.62l-0.89,2.47l0.2,2.7l-1.48,2.73l1.12,5.09l0.64,0.61l-0.01,2.29l-1.38,2.68l0.01,2.4l-1.89,2.04l0.02,2.75l0.69,2.57l-1.43,1.13l-1.26,5.68l0.39,3.51l-0.97,0.89l0.58,3.5l1.02,1.14l-0.65,1.02l0.15,0.57l1.0,0.53l0.16,0.69l-1.03,0.85l0.26,1.75l-0.89,4.03l-1.31,2.66l0.24,1.75l-0.71,1.83l-1.99,1.7l0.3,3.67l0.88,1.19l1.58,0.01l0.01,2.21l1.04,1.95l5.98,0.63ZM248.69,430.79l0.0,7.33l0.4,0.4l3.52,0.05l-0.44,0.75l-1.94,0.98l-2.49,-0.37l-1.88,-1.06l-2.55,-0.49l-5.59,-3.71l-2.38,-2.63l4.1,2.48l3.32,1.23l0.45,-0.12l1.29,-1.57l0.83,-2.32l2.05,-1.24l1.31,0.29Z\", \"name\": \"Chile\"}, \"CA\": {\"path\": \"M280.06,145.6l-1.67,2.88l0.07,0.49l0.5,0.04l1.46,-0.98l1.0,0.42l-0.56,0.72l0.17,0.62l2.22,0.89l1.35,-0.71l1.95,0.78l-0.66,2.01l0.5,0.51l1.32,-0.42l0.98,3.17l-0.91,2.41l-0.8,0.08l-1.23,-0.45l0.47,-2.25l-0.89,-0.83l-0.48,0.06l-2.78,2.63l-0.34,-0.02l1.02,-0.85l-0.14,-0.69l-2.4,-0.77l-7.4,0.08l-0.17,-0.41l1.3,-0.94l0.02,-0.64l-0.73,-0.58l1.85,-1.74l2.57,-5.16l1.47,-1.79l1.99,-1.05l0.46,0.06l-1.53,2.45ZM68.32,74.16l4.13,0.95l4.02,2.14l2.61,0.4l2.47,-1.89l2.88,-1.31l3.85,0.48l3.71,-1.94l3.82,-1.04l1.56,1.68l0.49,0.08l1.87,-1.04l0.65,-1.98l1.24,0.35l4.16,3.94l0.54,0.01l2.75,-2.49l0.26,2.59l0.49,0.35l3.08,-0.73l1.04,-1.27l2.73,0.23l3.83,1.86l5.86,1.61l3.47,0.75l2.44,-0.26l2.73,1.78l-2.98,1.81l-0.19,0.41l0.31,0.32l4.53,0.92l6.87,-0.5l2.0,-0.69l2.49,2.39l0.53,0.02l2.72,-2.16l-0.02,-0.64l-2.16,-1.54l1.15,-1.06l4.83,-0.61l1.84,0.95l2.48,2.31l3.01,-0.23l4.55,1.92l3.85,-0.67l3.61,0.1l0.41,-0.44l-0.25,-2.36l1.79,-0.61l3.49,1.32l-0.01,3.77l0.31,0.39l0.45,-0.22l1.48,-3.16l1.74,0.1l0.41,-0.3l1.13,-4.37l-2.78,-3.11l-2.8,-1.74l0.19,-4.64l2.71,-3.07l2.98,0.67l2.41,1.95l3.19,4.8l-1.99,1.97l0.21,0.68l4.33,0.84l-0.01,4.15l0.25,0.37l0.44,-0.09l3.07,-3.15l2.54,2.39l-0.61,3.33l2.42,2.88l0.61,0.0l2.61,-3.08l1.88,-3.82l0.17,-4.58l6.72,0.94l3.13,2.04l0.13,1.82l-1.76,2.19l-0.01,0.49l1.66,2.16l-0.26,1.71l-4.68,2.8l-3.28,0.61l-2.47,-1.2l-0.55,0.23l-0.73,2.04l-2.38,3.43l-0.74,1.77l-2.74,2.57l-3.44,0.25l-2.21,1.78l-0.28,2.53l-2.82,0.55l-3.12,3.22l-2.72,4.31l-1.03,3.17l-0.14,4.31l0.33,0.41l3.44,0.57l2.24,5.95l0.45,0.23l3.4,-0.69l4.52,1.51l2.43,1.31l1.91,1.73l3.1,0.96l2.62,1.46l6.6,0.54l-0.35,2.74l0.81,3.53l1.81,3.78l3.83,3.3l0.45,0.04l2.1,-1.28l1.37,-3.69l-1.31,-5.38l-1.45,-1.58l3.57,-1.47l2.84,-2.46l1.52,-2.8l-0.25,-2.55l-1.7,-3.07l-2.85,-2.61l2.8,-3.95l-1.08,-3.37l-0.79,-5.67l1.36,-0.7l6.76,1.41l2.12,-0.96l5.12,3.36l1.05,1.61l4.08,0.26l-0.06,2.87l0.83,4.7l0.3,0.32l2.16,0.54l1.73,2.06l0.5,0.09l3.63,-2.03l2.52,-4.19l1.26,-1.32l7.6,11.72l-0.92,2.04l0.16,0.51l3.3,1.97l2.22,1.98l4.1,0.98l1.43,0.99l0.95,2.79l2.1,0.68l0.84,1.08l0.17,3.45l-3.37,2.26l-4.22,1.24l-3.06,2.63l-4.06,0.51l-5.35,-0.69l-6.39,0.2l-2.3,2.41l-3.26,1.51l-6.47,7.15l-0.06,0.48l0.44,0.19l2.13,-0.52l4.17,-4.24l5.12,-2.62l3.52,-0.3l1.69,1.21l-2.12,2.21l0.81,3.47l1.02,2.61l3.47,1.6l4.14,-0.45l2.15,-2.8l0.26,1.48l1.14,0.8l-2.56,1.69l-5.5,1.82l-2.54,1.27l-2.74,2.15l-1.4,-0.16l-0.07,-2.01l4.14,-2.44l0.18,-0.45l-0.39,-0.29l-6.63,0.45l-1.39,-1.49l-0.14,-4.43l-1.11,-0.91l-1.82,0.39l-0.66,-0.66l-0.6,0.03l-1.91,2.39l-0.82,2.52l-0.8,1.27l-1.67,0.56l-0.46,0.76l-8.31,0.07l-1.21,0.62l-2.35,1.97l-0.71,-0.14l-1.37,0.96l-1.12,-0.48l-4.74,1.26l-0.9,1.17l0.21,0.62l1.73,0.3l-1.81,0.31l-1.85,0.81l-2.11,-0.13l-2.95,1.78l-0.69,-0.09l1.39,-2.1l1.73,-1.21l0.1,-2.29l1.16,-1.99l0.49,0.53l2.03,0.42l1.2,-1.16l0.02,-0.47l-2.66,-3.51l-2.28,-0.61l-5.64,-0.71l-0.4,-0.57l-0.79,0.13l0.2,-0.41l-0.22,-0.55l-0.68,-0.26l0.19,-1.26l-0.78,-0.73l0.31,-0.64l-0.29,-0.57l-2.6,-0.44l-0.75,-1.63l-0.94,-0.66l-4.31,-0.65l-1.13,1.19l-1.48,0.59l-0.85,1.06l-2.83,-0.76l-2.09,0.39l-2.39,-0.97l-4.24,-0.7l-0.57,-0.4l-0.41,-1.63l-0.4,-0.3l-0.85,0.02l-0.39,0.4l-0.01,0.85l-69.13,-0.01l-6.51,-4.52l-4.5,-1.38l-1.26,-2.66l0.33,-1.93l-0.23,-0.43l-3.01,-1.35l-0.55,-2.77l-2.89,-2.38l-0.04,-1.45l1.39,-1.83l-0.28,-2.55l-4.16,-2.2l-4.07,-6.6l-4.02,-3.22l-1.3,-1.88l-0.5,-0.13l-2.51,1.21l-2.23,1.87l-3.85,-3.88l-2.44,-1.04l-2.22,-0.13l0.03,-37.49ZM260.37,148.65l3.04,0.76l2.26,1.2l-3.78,-0.95l-1.53,-1.01ZM249.4,3.81l6.68,0.49l5.32,0.79l4.26,1.57l-0.07,1.1l-5.85,2.53l-6.02,1.21l-2.39,1.39l-0.18,0.45l0.39,0.29l4.01,-0.02l-4.65,2.82l-4.2,1.74l-4.19,4.59l-5.03,0.92l-1.67,1.15l-7.47,0.59l-0.37,0.37l0.32,0.42l2.41,0.49l-0.81,0.47l-0.12,0.59l1.83,2.41l-2.02,1.59l-3.81,1.51l-1.32,2.16l-3.38,1.53l-0.22,0.48l0.35,1.19l0.4,0.29l3.88,-0.18l0.03,0.61l-6.33,2.95l-6.41,-1.4l-7.43,0.79l-3.72,-0.62l-4.4,-0.25l-0.23,-1.83l4.29,-1.11l0.28,-0.51l-1.1,-3.45l1.0,-0.25l6.58,2.28l0.47,-0.16l-0.05,-0.49l-3.41,-3.45l-3.58,-0.98l1.48,-1.55l4.34,-1.29l0.97,-2.19l-0.16,-0.48l-3.42,-2.13l-0.81,-2.26l6.2,0.22l2.24,0.58l3.91,-2.1l0.2,-0.43l-0.35,-0.32l-5.64,-0.67l-8.73,0.36l-4.26,-1.9l-2.12,-2.4l-2.78,-1.66l-0.41,-1.52l3.31,-1.03l2.93,-0.2l4.91,-0.99l3.7,-2.27l2.87,0.3l2.62,1.67l0.56,-0.14l1.82,-3.2l3.13,-0.94l4.44,-0.69l7.53,-0.26l1.48,0.67l7.19,-1.06l10.8,0.79ZM203.85,57.54l0.01,0.42l1.97,2.97l0.68,-0.02l2.24,-3.72l5.95,-1.86l4.01,4.64l-0.35,2.91l0.5,0.43l4.95,-1.36l2.32,-1.8l5.31,2.28l3.27,2.11l0.3,1.84l0.48,0.33l4.42,-0.99l2.64,2.87l5.97,1.77l2.06,1.72l2.11,3.71l-4.19,1.86l-0.01,0.73l5.9,2.83l3.94,0.94l3.78,3.95l3.46,0.25l-0.63,2.37l-4.11,4.47l-2.76,-1.56l-3.9,-3.94l-3.59,0.41l-0.33,0.34l-0.19,2.72l2.63,2.38l3.42,1.89l0.94,0.97l1.55,3.75l-0.7,2.29l-2.74,-0.92l-6.25,-3.15l-0.51,0.13l0.05,0.52l6.07,5.69l0.18,0.59l-6.09,-1.39l-5.31,-2.24l-2.63,-1.66l0.6,-0.77l-0.12,-0.6l-7.39,-4.01l-0.59,0.37l0.03,0.79l-6.73,0.6l-1.69,-1.1l1.36,-2.46l4.51,-0.07l5.15,-0.52l0.31,-0.6l-0.74,-1.3l0.78,-1.84l3.21,-4.05l-0.67,-2.35l-1.11,-1.6l-3.84,-2.1l-4.35,-1.28l0.91,-0.63l0.06,-0.61l-2.65,-2.75l-2.34,-0.36l-1.89,-1.46l-0.53,0.03l-1.24,1.23l-4.36,0.55l-9.04,-0.99l-9.26,-1.98l-1.6,-1.22l2.22,-1.77l0.13,-0.44l-0.38,-0.27l-3.22,-0.02l-0.72,-4.25l1.83,-4.04l2.42,-1.85l5.5,-1.1l-1.39,2.35ZM261.19,159.33l2.07,0.61l1.44,-0.04l-1.15,0.63l-2.94,-1.23l-0.4,-0.68l0.36,-0.37l0.61,1.07ZM230.83,84.39l-2.37,0.18l-0.49,-1.63l0.93,-2.09l1.94,-0.51l1.62,0.99l0.02,1.52l-1.66,1.54ZM229.43,58.25l0.11,0.65l-4.87,-0.21l-2.72,0.62l-3.1,-2.57l0.08,-1.26l0.86,-0.23l5.57,0.51l4.08,2.5ZM222.0,105.02l-0.72,1.49l-0.63,-0.19l-0.48,-0.84l0.81,-0.99l0.65,0.05l0.37,0.46ZM183.74,38.32l2.9,1.7l4.79,-0.01l1.84,1.46l-0.49,1.68l0.23,0.48l2.82,1.14l1.76,1.26l7.01,0.65l4.1,-1.1l5.03,-0.43l3.93,0.35l2.48,1.77l0.46,1.7l-1.3,1.1l-3.56,1.01l-3.23,-0.59l-7.17,0.76l-5.09,0.09l-3.99,-0.6l-6.42,-1.54l-0.79,-2.51l-0.3,-2.49l-2.64,-2.5l-5.32,-0.72l-2.52,-1.4l0.68,-1.57l4.78,0.31ZM207.38,91.35l0.4,1.56l0.56,0.26l1.06,-0.52l1.32,0.96l5.42,2.57l0.2,1.68l0.46,0.35l1.68,-0.28l1.15,0.85l-1.55,0.87l-3.61,-0.88l-1.32,-1.69l-0.57,-0.06l-2.45,2.1l-3.12,1.79l-0.7,-1.87l-0.42,-0.26l-2.16,0.24l1.39,-1.39l0.32,-3.14l0.76,-3.35l1.18,0.22ZM215.49,102.6l-2.67,1.95l-1.4,-0.07l-0.3,-0.58l1.53,-1.48l2.84,0.18ZM202.7,24.12l2.53,1.59l-2.87,1.4l-4.53,4.05l-4.25,0.38l-5.03,-0.68l-2.45,-2.04l0.03,-1.62l1.82,-1.37l0.14,-0.45l-0.38,-0.27l-4.45,0.04l-2.59,-1.76l-1.41,-2.29l1.57,-2.32l1.62,-1.66l2.44,-0.39l0.25,-0.65l-0.6,-0.74l4.86,-0.25l3.24,3.11l8.16,2.3l1.9,3.61ZM187.47,59.2l-2.76,3.49l-2.38,-0.15l-1.44,-3.84l0.04,-2.2l1.19,-1.88l2.3,-1.23l5.07,0.17l4.11,1.02l-3.24,3.72l-2.88,0.89ZM186.07,48.79l-1.08,1.53l-3.34,-0.34l-2.56,-1.1l1.03,-1.75l3.25,-1.23l1.95,1.58l0.75,1.3ZM185.71,35.32l-5.3,-0.2l-0.32,-0.71l4.31,0.07l1.3,0.84ZM180.68,32.48l-3.34,1.0l-1.79,-1.1l-0.98,-1.87l-0.15,-1.73l4.1,0.53l2.67,1.7l-0.51,1.47ZM180.9,76.31l-1.1,1.08l-3.13,-1.23l-2.12,0.43l-2.71,-1.57l1.72,-1.09l1.55,-1.72l3.81,1.9l1.98,2.2ZM169.74,54.87l2.96,0.97l4.17,-0.57l0.41,0.88l-2.14,2.11l0.09,0.64l3.55,1.92l-0.4,3.72l-3.79,1.65l-2.17,-0.35l-1.72,-1.74l-6.02,-3.5l0.03,-0.85l4.68,0.54l0.4,-0.21l-0.05,-0.45l-2.48,-2.81l2.46,-1.95ZM174.45,40.74l1.37,1.73l0.07,2.44l-1.05,3.45l-3.79,0.47l-2.32,-0.69l0.05,-2.64l-0.44,-0.41l-3.68,0.35l-0.12,-3.1l2.45,0.1l3.67,-1.73l3.41,0.29l0.37,-0.26ZM170.05,31.55l0.67,1.56l-3.33,-0.49l-4.22,-1.77l-4.35,-0.16l1.4,-0.94l-0.06,-0.7l-2.81,-1.23l-0.12,-1.39l4.39,0.68l6.62,1.98l1.81,2.47ZM134.5,58.13l-1.02,1.82l0.45,0.58l5.4,-1.39l3.33,2.29l0.49,-0.03l2.6,-2.23l1.94,1.32l2.0,4.5l0.7,0.06l1.3,-2.29l-1.63,-4.46l1.69,-0.54l2.31,0.71l2.65,1.81l2.49,7.92l8.48,4.27l-0.19,1.35l-3.79,0.33l-0.26,0.67l1.4,1.49l-0.58,1.1l-4.23,-0.64l-4.43,-1.19l-3.0,0.28l-4.66,1.47l-10.52,1.04l-1.43,-2.02l-3.42,-1.2l-2.21,0.43l-2.51,-2.86l4.84,-1.05l3.6,0.19l3.27,-0.78l0.31,-0.39l-0.31,-0.39l-4.84,-1.06l-8.79,0.27l-0.85,-1.07l5.26,-1.66l0.27,-0.45l-0.4,-0.34l-3.8,0.06l-3.81,-1.06l1.81,-3.01l1.66,-1.79l6.48,-2.81l1.97,0.71ZM158.7,56.61l-1.7,2.44l-3.2,-2.75l0.37,-0.3l3.11,-0.18l1.42,0.79ZM149.61,42.73l1.01,1.89l0.5,0.18l2.14,-0.82l2.23,0.19l0.36,2.04l-1.33,2.09l-8.28,0.76l-6.35,2.15l-3.41,0.1l-0.19,-0.96l4.9,-2.08l0.23,-0.46l-0.41,-0.31l-11.25,0.59l-2.89,-0.74l3.04,-4.44l2.14,-1.32l6.81,1.69l4.58,3.06l4.37,0.39l0.36,-0.63l-3.36,-4.6l1.85,-1.53l2.18,0.51l0.77,2.26ZM144.76,34.41l-4.36,1.44l-3.0,-1.4l1.46,-1.24l3.47,-0.52l2.96,0.71l-0.52,1.01ZM145.13,29.83l-1.9,0.66l-3.67,-0.0l2.27,-1.61l3.3,0.95ZM118.92,65.79l-6.03,2.02l-1.33,-1.9l-5.38,-2.28l2.59,-5.05l2.16,-3.14l-0.02,-0.48l-1.97,-2.41l7.64,-0.7l3.6,1.02l6.3,0.27l4.42,2.95l-2.53,0.98l-6.24,3.43l-3.1,3.28l-0.11,2.01ZM129.54,35.53l-0.28,3.37l-1.72,1.62l-2.33,0.28l-4.61,2.19l-3.86,0.76l-2.64,-0.87l3.72,-3.4l5.01,-3.34l3.72,0.07l3.0,-0.67ZM111.09,152.69l-0.67,0.24l-3.85,-1.37l-0.83,-1.17l-2.12,-1.07l-0.66,-1.02l-2.4,-0.55l-0.74,-1.71l6.02,1.45l2.0,2.55l2.52,1.39l0.73,1.27ZM87.8,134.64l0.89,0.29l1.86,-0.21l-0.65,3.34l1.69,2.33l-1.31,-1.33l-0.99,-1.62l-1.17,-0.98l-0.33,-1.82Z\", \"name\": \"Canada\"}, \"CG\": {\"path\": \"M466.72,276.48l-0.1,1.03l-1.25,2.97l-0.19,3.62l-0.46,1.78l-0.23,0.63l-1.61,1.19l-1.21,1.39l-1.09,2.43l0.04,2.09l-3.25,3.24l-0.5,-0.24l-0.5,-0.83l-1.36,-0.02l-0.98,0.89l-1.68,-0.99l-1.54,1.24l-1.52,-1.96l1.57,-1.14l0.11,-0.52l-0.77,-1.35l2.1,-0.66l0.39,-0.73l1.05,0.82l2.21,0.11l1.12,-1.37l0.37,-1.81l-0.27,-2.09l-1.13,-1.5l1.0,-2.69l-0.13,-0.45l-0.92,-0.58l-1.6,0.17l-0.51,-0.94l0.1,-0.61l2.75,0.09l3.97,1.24l0.51,-0.33l0.17,-1.28l1.24,-2.21l1.28,-1.14l2.76,0.49Z\", \"name\": \"Congo\"}, \"CF\": {\"path\": \"M461.16,278.2l-0.26,-1.19l-1.09,-0.77l-0.84,-1.17l-0.29,-1.0l-1.04,-1.15l0.08,-3.43l0.58,-0.49l1.16,-2.35l1.85,-0.17l0.61,-0.62l0.97,0.58l3.15,-0.96l2.48,-1.92l0.02,-0.96l2.81,0.02l2.36,-1.17l1.93,-2.85l1.16,-0.93l1.11,-0.3l0.27,0.86l1.34,1.47l-0.39,2.01l0.3,1.01l4.01,2.75l0.17,0.93l2.63,2.31l0.6,1.44l2.08,1.4l-3.84,-0.21l-1.94,0.88l-1.23,-0.49l-2.67,1.2l-1.29,-0.18l-0.51,0.36l-0.6,1.22l-3.35,-0.65l-1.57,-0.91l-2.42,-0.83l-1.45,0.91l-0.97,1.27l-0.26,1.56l-3.22,-0.43l-1.49,1.33l-0.94,1.62Z\", \"name\": \"Central African Rep.\"}, \"CD\": {\"path\": \"M487.01,272.38l2.34,-0.14l1.35,1.84l1.34,0.45l0.86,-0.39l1.21,0.12l1.07,-0.41l0.54,0.89l2.04,1.54l-0.14,2.72l0.7,0.54l-1.38,1.13l-1.53,2.54l-0.17,2.05l-0.59,1.08l-0.02,1.72l-0.72,0.84l-0.66,3.01l0.63,1.32l-0.44,4.26l0.64,1.47l-0.37,1.22l0.86,1.8l1.53,1.41l0.3,1.26l0.44,0.5l-4.08,0.75l-0.92,1.81l0.51,1.34l-0.74,5.43l0.17,0.38l2.45,1.46l0.54,-0.1l0.12,1.62l-1.28,-0.01l-1.85,-2.35l-1.94,-0.45l-0.48,-1.13l-0.55,-0.2l-1.41,0.74l-1.71,-0.3l-1.01,-1.18l-2.49,-0.19l-0.44,-0.77l-1.98,-0.21l-2.88,0.36l0.11,-2.41l-0.85,-1.13l-0.16,-1.36l0.32,-1.73l-0.46,-0.89l-0.04,-1.49l-0.4,-0.39l-2.53,0.02l0.1,-0.41l-0.39,-0.49l-1.28,0.01l-0.43,0.45l-1.62,0.32l-0.83,1.79l-1.09,-0.28l-2.4,0.52l-1.37,-1.91l-1.3,-3.3l-0.38,-0.27l-7.39,-0.03l-2.46,0.42l0.5,-0.45l0.37,-1.47l0.66,-0.38l0.92,0.08l0.73,-0.82l0.87,0.02l0.31,0.68l1.4,0.36l3.59,-3.63l0.01,-2.23l1.02,-2.29l2.69,-2.39l0.43,-0.99l0.49,-1.96l0.17,-3.51l1.25,-2.95l0.36,-3.14l0.86,-1.13l1.1,-0.66l3.57,1.73l3.65,0.73l0.46,-0.21l0.8,-1.46l1.24,0.19l2.61,-1.17l0.81,0.44l1.04,-0.03l0.59,-0.66l0.7,-0.16l1.81,0.25Z\", \"name\": \"Dem. Rep. Congo\"}, \"CZ\": {\"path\": \"M458.46,144.88l1.22,1.01l1.47,0.23l0.13,0.93l1.36,0.68l0.54,-0.2l0.24,-0.55l1.15,0.25l0.53,1.09l1.68,0.18l0.6,0.84l-1.04,0.73l-0.96,1.28l-1.6,0.17l-0.55,0.56l-1.04,-0.46l-1.05,0.15l-2.12,-0.96l-1.05,0.34l-1.2,1.12l-1.56,-0.87l-2.57,-2.1l-0.53,-1.88l4.7,-2.52l0.71,0.26l0.9,-0.28Z\", \"name\": \"Czech Rep.\"}, \"CY\": {\"path\": \"M504.36,193.47l0.43,0.28l-1.28,0.57l-0.92,-0.28l-0.24,-0.46l2.01,-0.13Z\", \"name\": \"Cyprus\"}, \"CR\": {\"path\": \"M211.34,258.05l0.48,0.99l1.6,1.6l-0.54,0.45l0.29,1.42l-0.25,1.19l-1.09,-0.59l-0.05,-1.25l-2.46,-1.42l-0.28,-0.77l-0.66,-0.45l-0.45,-0.0l-0.11,1.04l-1.32,-0.95l0.31,-1.3l-0.36,-0.6l0.31,-0.27l1.42,0.58l1.29,-0.14l0.56,0.56l0.74,0.17l0.55,-0.27Z\", \"name\": \"Costa Rica\"}, \"CU\": {\"path\": \"M221.21,227.25l1.27,1.02l2.19,-0.28l4.43,3.33l2.08,0.43l-0.1,0.38l0.36,0.5l1.75,0.1l1.48,0.84l-3.11,0.51l-4.15,-0.03l0.77,-0.67l-0.04,-0.64l-1.2,-0.74l-1.49,-0.16l-0.7,-0.61l-0.56,-1.4l-0.4,-0.25l-1.34,0.1l-2.2,-0.66l-0.88,-0.58l-3.18,-0.4l-0.27,-0.16l0.58,-0.74l-0.36,-0.29l-2.72,-0.05l-1.7,1.29l-0.91,0.03l-0.61,0.69l-1.01,0.22l1.11,-1.29l1.01,-0.52l3.69,-1.01l3.98,0.21l2.21,0.84Z\", \"name\": \"Cuba\"}, \"SZ\": {\"path\": \"M500.35,351.36l0.5,2.04l-0.38,0.89l-1.05,0.21l-1.23,-1.2l-0.02,-0.64l0.83,-1.57l1.34,0.27Z\", \"name\": \"Swaziland\"}, \"SY\": {\"path\": \"M511.0,199.79l0.05,-1.33l0.54,-1.36l1.28,-0.99l0.13,-0.45l-0.41,-1.11l-1.14,-0.36l-0.19,-1.74l0.52,-1.0l1.29,-1.21l0.2,-1.18l0.59,0.23l2.62,-0.76l1.36,0.52l2.06,-0.01l2.95,-1.08l3.25,-0.26l-0.67,0.94l-1.28,0.66l-0.21,0.4l0.23,2.01l-0.88,3.19l-10.15,5.73l-2.15,-0.85Z\", \"name\": \"Syria\"}, \"KG\": {\"path\": \"M621.35,172.32l-3.87,1.69l-0.96,1.18l-3.04,0.34l-1.13,1.86l-2.36,-0.35l-1.99,0.63l-2.39,1.4l0.06,0.95l-0.4,0.37l-4.52,0.43l-3.02,-0.93l-2.37,0.17l0.11,-0.79l2.32,0.42l1.13,-0.88l1.99,0.2l3.21,-2.14l-0.03,-0.69l-2.97,-1.57l-1.94,0.65l-1.22,-0.74l1.71,-1.58l-0.12,-0.67l-0.36,-0.15l0.32,-0.77l1.36,-0.35l4.02,1.02l0.49,-0.3l0.35,-1.59l1.09,-0.48l3.42,1.22l1.11,-0.31l7.64,0.39l1.16,1.0l1.23,0.39Z\", \"name\": \"Kyrgyzstan\"}, \"KE\": {\"path\": \"M506.26,284.69l1.87,-2.56l0.93,-2.15l-1.38,-4.08l-1.06,-1.6l2.82,-2.75l0.79,0.26l0.12,1.41l0.86,0.83l1.9,0.11l3.28,2.13l3.57,0.44l1.05,-1.12l1.96,-0.9l0.82,0.68l1.16,0.09l-1.78,2.45l0.03,9.12l1.3,1.94l-1.37,0.78l-0.67,1.03l-1.08,0.46l-0.34,1.67l-0.81,1.07l-0.45,1.55l-0.68,0.56l-3.2,-2.23l-0.35,-1.58l-8.86,-4.98l0.14,-1.6l-0.57,-1.04Z\", \"name\": \"Kenya\"}, \"SS\": {\"path\": \"M481.71,263.34l1.07,-0.72l1.2,-3.18l1.36,-0.26l1.61,1.99l0.87,0.34l1.1,-0.41l1.5,0.07l0.57,0.53l2.49,0.0l0.44,-0.63l1.07,-0.4l0.45,-0.84l0.59,-0.33l1.9,1.33l1.6,-0.2l2.83,-3.33l-0.32,-2.21l1.59,-0.52l-0.24,1.6l0.3,1.83l1.35,1.18l0.2,1.87l0.35,0.41l0.02,1.53l-0.23,0.47l-1.42,0.25l-0.85,1.44l0.3,0.6l1.4,0.16l1.11,1.08l0.59,1.13l1.03,0.53l1.28,2.36l-4.41,3.98l-1.74,0.01l-1.89,0.55l-1.47,-0.52l-1.15,0.57l-2.96,-2.62l-1.3,0.49l-1.06,-0.15l-0.79,0.39l-0.82,-0.22l-1.8,-2.7l-1.91,-1.1l-0.66,-1.5l-2.62,-2.32l-0.18,-0.94l-2.37,-1.6Z\", \"name\": \"S. Sudan\"}, \"SR\": {\"path\": \"M283.12,270.19l2.1,0.53l-1.08,1.95l0.2,1.72l0.93,1.49l-0.59,2.03l-0.43,0.71l-1.12,-0.42l-1.32,0.22l-0.93,-0.2l-0.46,0.26l-0.25,0.73l0.33,0.7l-0.89,-0.13l-1.39,-1.97l-0.31,-1.34l-0.97,-0.31l-0.89,-1.47l0.35,-1.61l1.45,-0.82l0.33,-1.87l2.61,0.44l0.57,-0.47l1.75,-0.16Z\", \"name\": \"Suriname\"}, \"KH\": {\"path\": \"M689.52,249.39l0.49,1.45l-0.28,2.74l-4.0,1.86l-0.16,0.6l0.68,0.95l-2.06,0.17l-2.05,0.97l-1.82,-0.32l-2.12,-3.7l-0.55,-2.85l1.4,-1.85l3.02,-0.45l2.23,0.35l2.01,0.98l0.51,-0.14l0.95,-1.48l1.74,0.74Z\", \"name\": \"Cambodia\"}, \"SV\": {\"path\": \"M195.8,250.13l1.4,-1.19l2.24,1.45l0.98,-0.27l0.44,0.2l-0.27,1.05l-1.14,-0.03l-3.64,-1.21Z\", \"name\": \"El Salvador\"}, \"SK\": {\"path\": \"M476.82,151.17l-1.14,1.9l-2.73,-0.92l-0.82,0.2l-0.74,0.8l-3.46,0.73l-0.47,0.69l-1.76,0.33l-1.88,-1.0l-0.18,-0.81l0.38,-0.75l1.87,-0.32l1.74,-1.89l0.83,0.16l0.79,-0.34l1.51,1.04l1.34,-0.63l1.25,0.3l1.65,-0.42l1.81,0.95Z\", \"name\": \"Slovakia\"}, \"KR\": {\"path\": \"M737.51,185.84l0.98,-0.1l0.87,-1.17l2.69,-0.32l0.33,-0.29l1.76,2.79l0.58,1.76l0.02,3.12l-0.8,1.32l-2.21,0.55l-1.93,1.13l-1.8,0.19l-0.2,-1.1l0.43,-2.28l-0.95,-2.56l1.43,-0.37l0.23,-0.62l-1.43,-2.06Z\", \"name\": \"Korea\"}, \"SI\": {\"path\": \"M456.18,162.07l-0.51,-1.32l0.18,-1.05l1.69,0.2l1.42,-0.71l2.09,-0.07l0.62,-0.51l0.21,0.47l-1.61,0.67l-0.44,1.34l-0.66,0.24l-0.26,0.82l-1.22,-0.49l-0.84,0.46l-0.69,-0.04Z\", \"name\": \"Slovenia\"}, \"KP\": {\"path\": \"M736.77,185.16l-0.92,-0.42l-0.88,0.62l-1.21,-0.88l0.96,-1.15l0.59,-2.59l-0.46,-0.74l-2.09,-0.77l1.64,-1.52l2.72,-1.58l1.58,-1.91l1.11,0.78l2.17,0.11l0.41,-0.5l-0.3,-1.22l3.52,-1.18l0.94,-1.4l0.98,1.08l-2.19,2.18l0.01,2.14l-1.06,0.54l-1.41,1.4l-1.7,0.52l-1.25,1.09l-0.14,1.98l0.94,0.45l1.15,1.04l-0.13,0.26l-2.6,0.29l-1.13,1.29l-1.22,0.08Z\", \"name\": \"Dem. Rep. Korea\"}, \"SO\": {\"path\": \"M525.13,288.48l-1.13,-1.57l-0.03,-8.86l2.66,-3.38l1.67,-0.13l2.13,-1.69l3.41,-0.23l7.08,-7.55l2.91,-3.69l0.08,-4.82l2.98,-0.67l1.24,-0.86l0.45,-0.0l-0.2,3.0l-1.21,3.62l-2.73,5.97l-2.13,3.65l-5.03,6.16l-8.56,6.4l-2.78,3.08l-0.8,1.56Z\", \"name\": \"Somalia\"}, \"SN\": {\"path\": \"M390.09,248.21l0.12,1.55l0.49,1.46l0.96,0.82l0.05,1.28l-1.26,-0.19l-0.75,0.33l-1.84,-0.61l-5.84,-0.13l-2.54,0.51l-0.22,-1.03l1.77,0.04l2.01,-0.91l1.03,0.48l1.09,0.04l1.29,-0.62l0.14,-0.58l-0.51,-0.74l-1.81,0.25l-1.13,-0.63l-0.79,0.04l-0.72,0.61l-2.31,0.06l-0.92,-1.77l-0.81,-0.64l0.64,-0.35l2.46,-3.74l1.04,0.19l1.38,-0.56l1.19,-0.02l2.72,1.37l3.03,3.48Z\", \"name\": \"Senegal\"}, \"SL\": {\"path\": \"M394.46,264.11l-1.73,1.98l-0.58,1.33l-2.07,-1.06l-1.22,-1.26l-0.65,-2.39l1.16,-0.96l0.67,-1.17l1.21,-0.52l1.66,0.0l1.03,1.64l0.52,2.41Z\", \"name\": \"Sierra Leone\"}, \"SB\": {\"path\": \"M826.69,311.6l-0.61,0.09l-0.2,-0.33l0.37,0.15l0.44,0.09ZM824.18,307.38l-0.26,-0.3l-0.31,-0.91l0.03,0.0l0.54,1.21ZM823.04,309.33l-1.66,-0.22l-0.2,-0.52l1.16,0.28l0.69,0.46ZM819.28,304.68l1.14,0.65l0.02,0.03l-0.81,-0.44l-0.35,-0.23Z\", \"name\": \"Solomon Is.\"}, \"SA\": {\"path\": \"M537.53,210.34l2.0,0.24l0.9,1.32l1.49,-0.06l0.87,2.08l1.29,0.76l0.51,0.99l1.56,1.03l-0.1,1.9l0.32,0.9l1.58,2.47l0.76,0.53l0.7,-0.04l1.68,4.23l7.53,1.33l0.51,-0.29l0.77,1.25l-1.55,4.87l-7.29,2.52l-7.3,1.03l-2.34,1.17l-1.88,2.74l-0.76,0.28l-0.82,-0.78l-0.91,0.12l-2.88,-0.51l-3.51,0.25l-0.86,-0.56l-0.57,0.15l-0.66,1.27l0.16,1.11l-0.43,0.32l-0.93,-1.4l-0.33,-1.16l-1.23,-0.88l-1.27,-2.06l-0.78,-2.22l-1.73,-1.79l-1.14,-0.48l-1.54,-2.31l-0.21,-3.41l-1.44,-2.93l-1.27,-1.16l-1.33,-0.57l-1.31,-3.37l-0.77,-0.67l-0.97,-1.97l-2.8,-4.03l-1.06,-0.17l0.37,-1.96l0.2,-0.72l2.74,0.3l1.08,-0.84l0.6,-0.94l1.74,-0.35l0.65,-1.03l0.71,-0.4l0.1,-0.62l-2.06,-2.28l4.39,-1.22l0.48,-0.37l2.77,0.69l3.66,1.9l7.03,5.5l4.87,0.3Z\", \"name\": \"Saudi Arabia\"}, \"SE\": {\"path\": \"M480.22,89.3l-4.03,1.17l-2.43,2.86l0.26,2.57l-8.77,6.64l-1.78,5.79l1.78,2.68l2.22,1.96l-2.07,3.77l-2.72,1.13l-0.95,6.04l-1.29,3.01l-2.74,-0.31l-0.4,0.22l-1.31,2.59l-2.34,0.13l-0.75,-3.09l-2.08,-4.03l-1.83,-4.96l1.0,-1.93l2.14,-2.7l0.83,-4.45l-1.6,-2.17l-0.15,-4.94l1.48,-3.39l2.58,-0.15l0.87,-1.59l-0.78,-1.57l3.76,-5.59l4.04,-7.48l2.17,0.01l0.39,-0.29l0.57,-2.07l4.37,0.64l0.46,-0.34l0.33,-2.56l1.1,-0.13l6.94,4.87l0.06,6.32l0.66,1.36Z\", \"name\": \"Sweden\"}, \"SD\": {\"path\": \"M505.98,259.4l-0.34,-0.77l-1.17,-0.9l-0.26,-1.61l0.29,-1.81l-0.34,-0.46l-1.16,-0.17l-0.54,0.59l-1.23,0.11l-0.28,0.65l0.53,0.65l0.17,1.22l-2.44,3.0l-0.96,0.19l-2.39,-1.4l-0.95,0.52l-0.38,0.78l-1.11,0.41l-0.29,0.5l-1.94,0.0l-0.54,-0.52l-1.81,-0.09l-0.95,0.4l-2.45,-2.35l-2.07,0.54l-0.73,1.26l-0.6,2.1l-1.25,0.58l-0.75,-0.62l0.27,-2.65l-1.48,-1.78l-0.22,-1.48l-0.92,-0.96l-0.02,-1.29l-0.57,-1.16l-0.68,-0.16l0.69,-1.29l-0.18,-1.14l0.65,-0.62l0.03,-0.55l-0.36,-0.41l1.55,-2.97l1.91,0.16l0.43,-0.4l-0.1,-10.94l2.49,-0.01l0.4,-0.4l-0.0,-4.82l29.02,0.0l0.64,2.04l-0.49,0.66l0.36,2.69l0.93,3.16l2.12,1.55l-0.89,1.04l-1.72,0.39l-0.98,0.9l-1.43,5.65l0.24,1.15l-0.38,2.06l-0.96,2.38l-1.53,1.31l-1.32,2.91l-1.22,0.86l-0.37,1.34Z\", \"name\": \"Sudan\"}, \"DO\": {\"path\": \"M241.8,239.2l0.05,-0.65l-0.46,-0.73l0.42,-0.44l0.19,-1.0l-0.09,-1.53l1.66,0.01l1.99,0.63l0.33,0.67l1.28,0.19l0.33,0.76l1.0,0.08l0.8,0.62l-0.45,0.51l-1.13,-0.47l-1.88,-0.01l-1.27,0.59l-0.75,-0.55l-1.01,0.54l-0.79,1.4l-0.23,-0.61Z\", \"name\": \"Dominican Rep.\"}, \"DJ\": {\"path\": \"M528.43,256.18l-0.45,0.66l-0.58,-0.25l-1.51,0.13l-0.18,-1.01l1.45,-1.95l0.83,0.17l0.77,-0.44l0.2,1.0l-1.2,0.51l-0.06,0.7l0.73,0.47Z\", \"name\": \"Djibouti\"}, \"DK\": {\"path\": \"M452.28,129.07l-1.19,2.24l-2.13,-1.6l-0.23,-0.95l2.98,-0.95l0.57,1.26ZM447.74,126.31l-0.26,0.57l-0.88,-0.07l-1.8,2.53l0.48,1.69l-1.09,0.36l-1.61,-0.39l-0.89,-1.69l-0.07,-3.43l0.96,-1.73l2.02,-0.2l1.09,-1.07l1.33,-0.67l-0.05,1.06l-0.73,1.41l0.3,1.0l1.2,0.64Z\", \"name\": \"Denmark\"}, \"DE\": {\"path\": \"M453.14,155.55l-0.55,-0.36l-1.2,-0.1l-1.87,0.57l-2.13,-0.13l-0.56,0.63l-0.86,-0.6l-0.96,0.09l-2.57,-0.93l-0.85,0.67l-1.47,-0.02l0.24,-1.75l1.23,-2.14l-0.28,-0.59l-3.52,-0.58l-0.92,-0.66l0.12,-1.2l-0.48,-0.88l0.27,-2.17l-0.37,-3.03l1.41,-0.22l0.63,-1.26l0.66,-3.19l-0.41,-1.18l0.26,-0.39l1.66,-0.15l0.33,0.54l0.62,0.07l1.7,-1.69l-0.54,-3.02l1.37,0.33l1.31,-0.37l0.31,1.18l2.25,0.71l-0.02,0.92l0.5,0.4l2.55,-0.65l1.34,-0.87l2.57,1.24l1.06,0.98l0.48,1.44l-0.57,0.74l-0.0,0.48l0.87,1.15l0.57,1.64l-0.14,1.29l0.82,1.7l-1.5,-0.07l-0.56,0.57l-4.47,2.15l-0.22,0.54l0.68,2.26l2.58,2.16l-0.66,1.11l-0.79,0.36l-0.23,0.43l0.32,1.87Z\", \"name\": \"Germany\"}, \"YE\": {\"path\": \"M528.27,246.72l0.26,-0.42l-0.22,-1.01l0.19,-1.5l0.92,-0.69l-0.07,-1.35l0.39,-0.75l1.01,0.47l3.34,-0.27l3.76,0.41l0.95,0.81l1.36,-0.58l1.74,-2.62l2.18,-1.09l6.86,-0.94l2.48,5.41l-1.64,0.76l-0.56,1.9l-6.23,2.16l-2.29,1.8l-1.93,0.05l-1.41,1.02l-4.24,0.74l-1.72,1.49l-3.28,0.19l-0.52,-1.18l0.02,-1.51l-1.34,-3.29Z\", \"name\": \"Yemen\"}, \"AT\": {\"path\": \"M462.89,152.8l0.04,2.25l-1.07,0.0l-0.33,0.63l0.36,0.51l-1.04,2.13l-2.02,0.07l-1.33,0.7l-5.29,-0.99l-0.47,-0.93l-0.44,-0.21l-2.47,0.55l-0.42,0.51l-3.18,-0.81l0.43,-0.91l1.12,0.78l0.6,-0.17l0.25,-0.58l1.93,0.12l1.86,-0.56l1.0,0.08l0.68,0.57l0.62,-0.15l0.26,-0.77l-0.3,-1.78l0.8,-0.44l0.68,-1.15l1.52,0.85l0.47,-0.06l1.34,-1.25l0.64,-0.17l1.81,0.92l1.28,-0.11l0.7,0.37Z\", \"name\": \"Austria\"}, \"DZ\": {\"path\": \"M441.46,188.44l-0.32,1.07l0.39,2.64l-0.54,2.16l-1.58,1.82l0.37,2.39l1.91,1.55l0.18,0.8l1.42,1.03l1.84,7.23l0.12,1.16l-0.57,5.0l0.2,1.51l-0.87,0.99l-0.02,0.51l1.41,1.86l0.14,1.2l0.89,1.48l0.5,0.16l0.98,-0.41l1.73,1.08l0.82,1.23l-8.22,4.81l-7.23,5.11l-3.43,1.13l-2.3,0.21l-0.28,-1.59l-2.56,-1.09l-0.67,-1.25l-26.12,-17.86l0.01,-3.47l3.77,-1.88l2.44,-0.41l2.12,-0.75l1.08,-1.42l2.81,-1.05l0.35,-2.08l1.33,-0.29l1.04,-0.94l3.47,-0.69l0.46,-1.08l-0.1,-0.45l-0.58,-0.52l-0.82,-2.81l-0.19,-1.83l-0.78,-1.49l2.03,-1.31l2.63,-0.48l1.7,-1.22l2.31,-0.84l8.24,-0.73l1.49,0.38l2.28,-1.1l2.46,-0.02l0.92,0.6l1.35,-0.05Z\", \"name\": \"Algeria\"}, \"US\": {\"path\": \"M892.72,99.2l1.31,0.53l1.41,-0.37l1.89,0.98l1.89,0.42l-1.32,0.58l-2.9,-1.53l-2.08,0.22l-0.26,-0.15l0.07,-0.67ZM183.22,150.47l0.37,1.47l1.12,0.85l4.23,0.7l2.39,0.98l2.17,-0.38l1.85,0.5l-1.55,0.65l-3.49,2.61l-0.16,0.77l0.5,0.39l2.33,-0.61l1.77,1.02l5.15,-2.4l-0.31,0.65l0.25,0.56l1.36,0.38l1.71,1.16l4.7,-0.88l0.67,0.85l1.31,0.21l0.58,0.58l-1.34,0.17l-2.18,-0.32l-3.6,0.89l-2.71,3.25l0.35,0.9l0.59,-0.0l0.55,-0.6l-1.36,4.65l0.29,3.09l0.67,1.58l0.61,0.45l1.77,-0.44l1.6,-1.96l0.14,-2.21l-0.82,-1.96l0.11,-1.13l1.19,-2.37l0.44,-0.33l0.48,0.75l0.4,-0.29l0.4,-1.37l0.6,-0.47l0.24,-0.8l1.69,0.49l1.65,1.08l-0.03,2.37l-1.27,1.13l-0.0,1.13l0.87,0.36l1.66,-1.29l0.5,0.17l0.5,2.6l-2.49,3.75l0.17,0.61l1.54,0.62l1.48,0.17l1.92,-0.44l4.72,-2.15l2.16,-1.8l-0.05,-1.24l0.75,-0.22l3.92,0.36l2.12,-1.05l0.21,-0.4l-0.28,-1.48l3.27,-2.4l8.32,-0.02l0.56,-0.82l1.9,-0.77l0.93,-1.51l0.74,-2.37l1.58,-1.98l0.92,0.62l1.47,-0.47l0.8,0.66l-0.0,4.09l1.96,2.6l-2.34,1.31l-5.37,2.09l-1.83,2.72l0.02,1.79l0.83,1.59l0.54,0.23l-6.19,0.94l-2.2,0.89l-0.23,0.48l0.45,0.29l2.99,-0.46l-2.19,0.56l-1.13,0.0l-0.15,-0.32l-0.48,0.08l-0.76,0.82l0.22,0.67l0.32,0.06l-0.41,1.62l-1.27,1.58l-1.48,-1.07l-0.49,-0.04l-0.16,0.46l0.52,1.58l0.61,0.59l0.03,0.79l-0.95,1.38l-1.21,-1.22l-0.27,-2.27l-0.35,-0.35l-0.42,0.25l-0.48,1.27l0.33,1.41l-0.97,-0.27l-0.48,0.24l0.18,0.5l1.52,0.83l0.1,2.52l0.79,0.51l0.52,3.42l-1.42,1.88l-2.47,0.8l-1.71,1.66l-1.31,0.25l-1.27,1.03l-0.43,0.99l-2.69,1.78l-2.64,3.03l-0.45,2.12l0.45,2.08l0.85,2.38l1.09,1.9l0.04,1.2l1.16,3.06l-0.18,2.69l-0.55,1.43l-0.47,0.21l-0.89,-0.23l-0.49,-1.18l-0.87,-0.56l-2.75,-5.16l0.48,-1.68l-0.72,-1.78l-2.01,-2.38l-1.12,-0.53l-2.72,1.18l-1.47,-1.35l-1.57,-0.68l-2.99,0.31l-2.17,-0.3l-2.0,0.19l-1.15,0.46l-0.19,0.58l0.39,0.63l0.14,1.34l-0.84,-0.2l-0.84,0.46l-1.58,-0.07l-2.08,-1.44l-2.09,0.33l-1.91,-0.62l-3.73,0.84l-2.39,2.07l-2.54,1.22l-1.45,1.41l-0.61,1.38l0.34,3.71l-0.29,0.02l-3.5,-1.33l-1.25,-3.11l-1.44,-1.5l-2.24,-3.56l-1.76,-1.09l-2.27,-0.01l-1.71,2.07l-1.76,-0.69l-1.16,-0.74l-1.52,-2.98l-3.93,-3.16l-4.34,-0.0l-0.4,0.4l-0.0,0.74l-6.5,0.02l-9.02,-3.14l-0.34,-0.71l-5.7,0.49l-0.43,-1.29l-1.62,-1.61l-1.14,-0.38l-0.55,-0.88l-1.28,-0.13l-1.01,-0.77l-2.22,-0.27l-0.43,-0.3l-0.36,-1.58l-2.4,-2.83l-2.01,-3.85l-0.06,-0.9l-2.92,-3.26l-0.33,-2.29l-1.3,-1.66l0.52,-2.37l-0.09,-2.57l-0.78,-2.3l0.95,-2.82l0.61,-5.68l-0.47,-4.27l-1.46,-4.08l3.19,0.79l1.26,2.83l0.69,0.08l0.69,-1.14l-1.1,-4.79l68.76,-0.0l0.4,-0.4l0.14,-0.86ZM32.44,67.52l1.73,1.97l0.55,0.05l0.99,-0.79l3.65,0.24l-0.09,0.62l0.32,0.45l3.83,0.77l2.61,-0.43l5.19,1.4l4.84,0.43l1.89,0.57l3.42,-0.7l6.14,1.87l-0.03,38.06l0.38,0.4l2.39,0.11l2.31,0.98l3.9,3.99l0.55,0.04l2.4,-2.03l2.16,-1.04l1.2,1.71l3.95,3.14l4.09,6.63l4.2,2.29l0.06,1.83l-1.02,1.23l-1.16,-1.08l-2.04,-1.03l-0.67,-2.89l-3.28,-3.03l-1.65,-3.57l-6.35,-0.32l-2.82,-1.01l-5.26,-3.85l-6.77,-2.04l-3.53,0.3l-4.81,-1.69l-3.25,-1.63l-2.78,0.8l-0.28,0.46l0.44,2.21l-3.91,0.96l-2.26,1.27l-2.3,0.65l-0.27,-1.65l1.05,-3.42l2.49,-1.09l0.16,-0.6l-0.69,-0.96l-0.55,-0.1l-3.19,2.12l-1.78,2.56l-3.55,2.61l-0.04,0.61l1.56,1.52l-2.07,2.29l-5.11,2.57l-0.77,1.66l-3.76,1.77l-0.92,1.73l-2.69,1.38l-1.81,-0.22l-6.95,3.32l-3.97,0.91l4.85,-2.5l2.59,-1.86l3.26,-0.52l1.19,-1.4l3.42,-2.1l2.59,-2.27l0.42,-2.68l1.23,-2.1l-0.04,-0.46l-0.45,-0.11l-2.68,1.03l-0.63,-0.49l-0.53,0.03l-1.05,1.04l-1.36,-1.54l-0.66,0.08l-0.32,0.62l-0.58,-1.14l-0.56,-0.16l-2.41,1.42l-1.07,-0.0l-0.17,-1.75l0.3,-1.71l-1.61,-1.33l-3.41,0.59l-1.96,-1.63l-1.57,-0.84l-0.15,-2.21l-1.7,-1.43l0.82,-1.88l1.99,-2.12l0.88,-1.92l1.71,-0.24l2.04,0.51l1.87,-1.77l1.91,0.25l1.91,-1.23l0.17,-0.43l-0.47,-1.82l-1.07,-0.7l1.39,-1.17l0.12,-0.45l-0.39,-0.26l-1.65,0.07l-2.66,0.88l-0.75,0.78l-1.92,-0.8l-3.46,0.44l-3.44,-0.91l-1.06,-1.61l-2.65,-1.99l2.91,-1.43l5.5,-2.0l1.52,0.0l-0.26,1.62l0.41,0.46l5.29,-0.16l0.3,-0.65l-2.03,-2.59l-3.14,-1.68l-1.79,-2.12l-2.4,-1.83l-3.09,-1.24l1.04,-1.69l4.23,-0.14l3.36,-2.07l0.73,-2.27l2.39,-1.99l2.42,-0.52l4.65,-1.97l2.46,0.23l3.71,-2.35l3.5,0.89ZM37.6,123.41l-2.25,1.23l-0.95,-0.69l-0.29,-1.24l3.21,-1.63l1.42,0.21l0.67,0.7l-1.8,1.42ZM31.06,234.03l0.98,0.47l0.74,0.87l-1.77,1.07l-0.44,-1.53l0.49,-0.89ZM29.34,232.07l0.18,0.05l0.08,0.05l-0.16,0.03l-0.11,-0.14ZM25.16,230.17l0.05,-0.03l0.18,0.22l-0.13,-0.01l-0.1,-0.18ZM5.89,113.26l-1.08,0.41l-2.21,-1.12l1.53,-0.4l1.62,0.28l0.14,0.83Z\", \"name\": \"United States\"}, \"LV\": {\"path\": \"M489.16,122.85l0.96,0.66l0.22,1.65l0.68,1.76l-3.65,1.7l-2.23,-1.58l-1.29,-0.26l-0.68,-0.77l-2.42,0.34l-4.16,-0.23l-2.47,0.9l0.06,-1.98l1.13,-2.06l1.95,-1.02l2.12,2.58l2.01,-0.07l0.38,-0.33l0.44,-2.52l1.76,-0.53l3.06,1.7l2.15,0.07Z\", \"name\": \"Latvia\"}, \"UY\": {\"path\": \"M286.85,372.74l-0.92,1.5l-2.59,1.44l-1.69,-0.52l-1.42,0.26l-2.39,-1.19l-1.52,0.08l-1.27,-1.3l0.16,-1.5l0.56,-0.79l-0.02,-2.73l1.21,-4.74l1.19,-0.21l2.37,2.0l1.08,0.03l4.36,3.17l1.22,1.6l-0.96,1.5l0.61,1.4Z\", \"name\": \"Uruguay\"}, \"LB\": {\"path\": \"M510.37,198.01l-0.88,0.51l1.82,-3.54l0.62,0.08l0.22,0.61l-1.13,0.88l-0.65,1.47Z\", \"name\": \"Lebanon\"}, \"LA\": {\"path\": \"M689.54,248.53l-1.76,-0.74l-0.49,0.15l-0.94,1.46l-1.32,-0.64l0.62,-0.98l0.11,-2.17l-2.04,-2.42l-0.25,-2.65l-1.9,-2.1l-2.15,-0.31l-0.78,0.91l-1.12,0.06l-1.05,-0.4l-2.06,1.2l-0.04,-1.59l0.61,-2.68l-0.36,-0.49l-1.35,-0.1l-0.11,-1.23l-0.96,-0.88l1.96,-1.89l0.39,0.36l1.33,0.07l0.42,-0.45l-0.34,-2.66l0.7,-0.21l1.28,1.81l1.11,2.35l0.36,0.23l2.82,0.02l0.71,1.67l-1.39,0.65l-0.72,0.93l0.13,0.6l2.91,1.51l3.6,5.25l1.88,1.78l0.56,1.62l-0.35,1.96Z\", \"name\": \"Lao PDR\"}, \"TW\": {\"path\": \"M724.01,226.68l-0.74,1.48l-0.9,-1.52l-0.25,-1.74l1.38,-2.44l1.73,-1.74l0.64,0.44l-1.85,5.52Z\", \"name\": \"Taiwan\"}, \"TT\": {\"path\": \"M266.64,259.32l0.28,-1.16l1.13,-0.22l-0.06,1.2l-1.35,0.18Z\", \"name\": \"Trinidad and Tobago\"}, \"TR\": {\"path\": \"M513.21,175.47l3.64,1.17l3.05,-0.44l2.1,0.26l3.11,-1.56l2.46,-0.13l2.19,1.33l0.33,0.82l-0.22,1.33l0.25,0.44l2.28,1.13l-1.17,0.57l-0.21,0.45l0.75,3.2l-0.41,1.16l1.13,1.92l-0.55,0.22l-0.9,-0.67l-2.91,-0.37l-1.24,0.46l-4.23,0.41l-2.81,1.05l-1.91,0.01l-1.52,-0.53l-2.58,0.75l-0.66,-0.45l-0.62,0.3l-0.12,1.45l-0.89,0.84l-0.47,-0.67l0.79,-1.3l-0.41,-0.2l-1.43,0.23l-2.0,-0.63l-2.02,1.65l-3.51,0.3l-2.13,-1.53l-2.7,-0.1l-0.86,1.24l-1.38,0.27l-2.29,-1.44l-2.71,-0.01l-1.37,-2.65l-1.68,-1.52l1.07,-1.99l-0.09,-0.49l-1.27,-1.12l2.37,-2.41l3.7,-0.11l1.28,-2.24l4.49,0.37l3.21,-1.97l2.81,-0.82l3.99,-0.06l4.29,2.07ZM488.79,176.72l-1.72,1.31l-0.5,-0.88l1.37,-2.57l-0.7,-0.85l1.7,-0.63l1.8,0.34l0.46,1.17l1.76,0.78l-2.87,0.32l-1.3,1.01Z\", \"name\": \"Turkey\"}, \"LK\": {\"path\": \"M624.16,268.99l-1.82,0.48l-0.99,-1.67l-0.42,-3.46l0.95,-3.43l1.21,0.98l2.26,4.19l-0.34,2.33l-0.85,0.58Z\", \"name\": \"Sri Lanka\"}, \"TN\": {\"path\": \"M448.1,188.24l-1.0,1.27l-0.02,1.32l0.84,0.88l-0.28,2.09l-1.53,1.32l-0.12,0.42l0.48,1.54l1.42,0.32l0.53,1.11l0.9,0.52l-0.11,1.67l-3.54,2.64l-0.1,2.38l-0.58,0.3l-0.96,-4.45l-1.54,-1.25l-0.16,-0.78l-1.92,-1.56l-0.18,-1.76l1.51,-1.62l0.59,-2.34l-0.38,-2.78l0.42,-1.21l2.45,-1.05l1.29,0.26l-0.06,1.11l0.58,0.38l1.47,-0.73Z\", \"name\": \"Tunisia\"}, \"TL\": {\"path\": \"M734.55,307.93l-0.1,-0.97l4.5,-0.86l-2.82,1.28l-1.59,0.55Z\", \"name\": \"Timor-Leste\"}, \"TM\": {\"path\": \"M553.03,173.76l-0.04,0.34l-0.09,-0.22l0.13,-0.12ZM555.87,172.66l0.45,-0.1l1.48,0.74l2.06,2.43l4.07,-0.18l0.38,-0.51l-0.32,-1.19l1.92,-0.94l1.91,-1.59l2.94,1.39l0.43,2.47l1.19,0.67l2.58,-0.13l0.62,0.4l1.32,3.12l4.54,3.44l2.67,1.45l3.06,1.14l-0.04,1.05l-1.33,-0.75l-0.59,0.19l-0.32,0.84l-2.2,0.81l-0.46,2.13l-1.21,0.74l-1.91,0.42l-0.73,1.33l-1.56,0.31l-2.22,-0.94l-0.2,-2.17l-0.38,-0.36l-1.73,-0.09l-2.76,-2.46l-2.14,-0.4l-2.84,-1.48l-1.78,-0.27l-1.24,0.53l-1.57,-0.08l-2.0,1.69l-1.7,0.43l-0.36,-1.58l0.36,-2.98l-0.22,-0.4l-1.65,-0.84l0.54,-1.69l-0.34,-0.52l-1.22,-0.13l0.36,-1.64l2.22,0.59l2.2,-0.95l0.12,-0.65l-1.77,-1.74l-0.66,-1.57Z\", \"name\": \"Turkmenistan\"}, \"TJ\": {\"path\": \"M597.75,178.82l-2.54,-0.44l-0.47,0.34l-0.24,1.7l0.43,0.45l2.64,-0.22l3.18,0.95l4.39,-0.41l0.56,2.37l0.52,0.29l0.67,-0.24l1.11,0.49l0.21,2.13l-3.76,-0.21l-1.8,1.32l-1.76,0.74l-0.61,-0.58l0.21,-2.23l-0.64,-0.49l-0.07,-0.93l-1.36,-0.66l-0.45,0.07l-1.08,1.01l-0.55,1.48l-1.31,-0.05l-0.95,1.16l-0.9,-0.35l-1.86,0.74l1.26,-2.83l-0.54,-2.17l-1.67,-0.82l0.33,-0.66l2.18,-0.04l1.19,-1.63l0.76,-1.79l2.43,-0.5l-0.26,1.0l0.73,1.05Z\", \"name\": \"Tajikistan\"}, \"LS\": {\"path\": \"M491.06,363.48l-0.49,0.15l-1.49,-1.67l1.1,-1.43l2.19,-1.44l1.51,1.27l-0.98,1.82l-1.23,0.38l-0.62,0.93Z\", \"name\": \"Lesotho\"}, \"TH\": {\"path\": \"M670.27,255.86l-1.41,3.87l0.15,2.0l0.38,0.36l1.38,0.07l0.9,2.04l0.55,2.34l1.4,1.44l1.61,0.38l0.96,0.97l-0.5,0.64l-1.1,0.2l-0.34,-1.18l-2.04,-1.1l-0.63,0.23l-0.63,-0.62l-0.48,-1.3l-2.56,-2.63l-0.73,0.41l0.95,-3.89l2.16,-4.22ZM670.67,254.77l-0.92,-2.18l-0.26,-2.61l-2.14,-3.06l0.71,-0.49l0.89,-2.59l-3.61,-5.45l0.87,-0.51l1.05,-2.58l1.74,-0.18l2.6,-1.59l0.76,0.56l0.13,1.39l0.37,0.36l1.23,0.09l-0.51,2.28l0.05,2.42l0.6,0.34l2.43,-1.42l0.77,0.39l1.47,-0.07l0.71,-0.88l1.48,0.14l1.71,1.88l0.25,2.65l1.92,2.11l-0.1,1.89l-0.61,0.86l-2.22,-0.33l-3.5,0.64l-1.6,2.12l0.36,2.58l-1.51,-0.79l-1.84,-0.01l0.28,-1.52l-0.4,-0.47l-2.21,0.01l-0.4,0.37l-0.19,2.74l-0.34,0.93Z\", \"name\": \"Thailand\"}, \"TF\": {\"path\": \"M596.68,420.38l-3.2,0.18l-0.05,-1.26l0.39,-1.41l1.3,0.78l2.08,0.35l-0.52,1.36Z\", \"name\": \"Fr. S. Antarctic Lands\"}, \"TG\": {\"path\": \"M422.7,257.63l-0.09,1.23l1.53,1.52l0.08,1.09l0.5,0.65l-0.11,5.62l0.49,1.47l-1.31,0.35l-1.02,-2.13l-0.18,-1.12l0.53,-2.19l-0.63,-1.16l-0.22,-3.68l-1.01,-1.4l0.07,-0.28l1.37,0.03Z\", \"name\": \"Togo\"}, \"TD\": {\"path\": \"M480.25,235.49l0.12,9.57l-2.1,0.05l-1.14,1.89l-0.69,1.63l0.34,0.73l-0.66,0.91l0.24,0.89l-0.86,1.95l0.45,0.5l0.6,-0.1l0.34,0.64l0.03,1.38l0.9,1.04l-1.45,0.43l-1.27,1.03l-1.83,2.76l-2.16,1.07l-2.31,-0.15l-0.86,0.25l-0.26,0.49l0.17,0.61l-2.11,1.68l-2.85,0.87l-1.09,-0.57l-0.73,0.66l-1.12,0.1l-1.1,-3.12l-1.25,-0.64l-1.22,-1.22l0.29,-0.64l3.01,0.04l0.35,-0.6l-1.3,-2.2l-0.08,-3.31l-0.97,-1.66l0.22,-1.04l-0.38,-0.48l-1.22,-0.04l0.0,-1.25l-0.98,-1.07l0.96,-3.01l3.25,-2.65l0.13,-3.33l0.95,-5.18l0.52,-1.07l-0.1,-0.48l-0.91,-0.78l-0.2,-0.96l-0.8,-0.58l-0.55,-3.65l2.1,-1.2l19.57,9.83Z\", \"name\": \"Chad\"}, \"LY\": {\"path\": \"M483.48,203.15l-0.75,1.1l0.29,1.39l-0.6,1.83l0.73,2.14l0.0,24.12l-2.48,0.01l-0.41,0.85l-19.41,-9.76l-4.41,2.28l-1.37,-1.33l-3.82,-1.1l-1.14,-1.65l-1.98,-1.23l-1.22,0.32l-0.66,-1.11l-0.17,-1.26l-1.28,-1.69l0.87,-1.19l-0.07,-4.34l0.43,-2.27l-0.86,-3.45l1.13,-0.76l0.22,-1.16l-0.2,-1.03l3.48,-2.61l0.29,-1.94l2.45,0.8l1.18,-0.21l1.98,0.44l3.15,1.18l1.37,2.54l5.72,1.67l2.64,1.35l1.61,-0.72l1.29,-1.34l-0.44,-2.34l0.66,-1.13l1.67,-1.21l1.57,-0.35l3.14,0.53l1.08,1.28l3.99,0.78l0.36,0.54Z\", \"name\": \"Libya\"}, \"AE\": {\"path\": \"M550.76,223.97l1.88,-0.4l3.84,0.02l4.78,-4.75l0.19,0.36l0.26,1.58l-0.81,0.01l-0.39,0.35l-0.08,2.04l-0.81,0.63l-0.01,0.96l-0.66,0.99l-0.39,1.41l-7.08,-1.25l-0.7,-1.96Z\", \"name\": \"United Arab Emirates\"}, \"VE\": {\"path\": \"M240.68,256.69l0.53,0.75l-0.02,1.06l-1.07,1.78l0.95,2.0l0.42,0.22l1.4,-0.44l0.56,-1.83l-0.77,-1.17l-0.1,-1.47l2.82,-0.93l0.26,-0.49l-0.28,-0.96l0.3,-0.28l0.66,1.31l1.96,0.26l1.4,1.22l0.08,0.68l0.39,0.35l4.81,-0.22l1.49,1.11l1.92,0.31l1.67,-0.84l0.22,-0.6l3.44,-0.14l-0.17,0.55l0.86,1.19l2.19,0.35l1.67,1.1l0.37,1.86l0.41,0.32l1.55,0.17l-1.66,1.35l-0.22,0.92l0.65,0.97l-1.67,0.54l-0.3,0.4l0.04,0.99l-0.56,0.57l-0.01,0.55l1.85,2.27l-0.66,0.69l-4.47,1.29l-0.72,0.54l-3.69,-0.9l-0.71,0.27l-0.02,0.7l0.91,0.53l-0.08,1.54l0.35,1.58l0.35,0.31l1.66,0.17l-1.3,0.52l-0.48,1.13l-2.68,0.91l-0.6,0.77l-1.57,0.13l-1.17,-1.13l-0.8,-2.52l-1.25,-1.26l1.02,-1.23l-1.29,-2.95l0.18,-1.62l1.0,-2.21l-0.2,-0.49l-1.14,-0.46l-4.02,0.36l-1.82,-2.1l-1.57,-0.33l-2.99,0.22l-1.06,-0.97l0.25,-1.23l-0.2,-1.01l-0.59,-0.69l-0.29,-1.06l-1.08,-0.39l0.78,-2.79l1.9,-2.11Z\", \"name\": \"Venezuela\"}, \"AF\": {\"path\": \"M600.7,188.88l-1.57,1.3l-0.1,0.48l0.8,2.31l-1.09,1.04l-0.03,1.27l-0.48,0.71l-2.16,-0.08l-0.37,0.59l0.78,1.48l-1.38,0.69l-1.06,1.69l0.06,1.7l-0.65,0.52l-0.91,-0.21l-1.91,0.36l-0.48,0.77l-1.88,0.13l-1.4,1.56l-0.18,2.32l-2.91,1.02l-1.65,-0.23l-0.71,0.55l-1.41,-0.3l-2.41,0.39l-3.52,-1.17l1.96,-2.35l-0.21,-1.78l-0.3,-0.34l-1.63,-0.4l-0.19,-1.58l-0.75,-2.03l0.95,-1.36l-0.19,-0.6l-0.73,-0.28l1.47,-4.8l2.14,0.9l2.12,-0.36l0.74,-1.34l1.77,-0.39l1.54,-0.92l0.63,-2.31l1.87,-0.5l0.49,-0.81l0.94,0.56l2.13,0.11l2.55,0.92l1.95,-0.83l0.65,0.43l0.56,-0.13l0.69,-1.12l1.57,-0.08l0.72,-1.66l0.79,-0.74l0.8,0.39l-0.17,0.56l0.71,0.58l-0.08,2.39l1.11,0.95ZM601.37,188.71l1.73,-0.71l1.43,-1.18l4.03,0.35l-2.23,0.74l-4.95,0.8Z\", \"name\": \"Afghanistan\"}, \"IQ\": {\"path\": \"M530.82,187.47l0.79,0.66l1.26,-0.28l1.46,3.08l1.63,0.94l0.14,1.23l-1.22,1.05l-0.53,2.52l1.73,2.67l3.12,1.62l1.15,1.88l-0.38,1.85l0.39,0.48l0.41,-0.0l0.02,1.07l0.76,0.94l-2.47,-0.1l-1.71,2.44l-4.31,-0.2l-7.02,-5.48l-3.73,-1.94l-2.88,-0.73l-0.85,-2.87l5.45,-3.02l0.95,-3.43l-0.19,-1.96l1.27,-0.7l1.22,-1.7l0.87,-0.36l2.69,0.34Z\", \"name\": \"Iraq\"}, \"IS\": {\"path\": \"M384.14,88.06l-0.37,2.61l2.54,2.51l-2.9,2.75l-9.19,3.4l-9.25,-1.66l1.7,-1.22l-0.1,-0.7l-4.05,-1.47l2.96,-0.53l0.33,-0.43l-0.11,-1.2l-0.33,-0.36l-4.67,-0.85l1.28,-2.04l3.45,-0.56l3.77,2.72l0.44,0.02l3.64,-2.16l3.3,1.08l3.98,-2.16l3.58,0.26Z\", \"name\": \"Iceland\"}, \"IR\": {\"path\": \"M533.43,187.16l-1.27,-2.15l0.42,-0.98l-0.71,-3.04l1.03,-0.5l0.33,0.83l1.26,1.35l2.05,0.51l1.11,-0.16l2.89,-2.11l0.62,-0.14l0.39,0.46l-0.72,1.2l0.06,0.49l1.56,1.53l0.65,0.04l0.67,1.81l2.56,0.83l1.87,1.48l3.69,0.49l3.91,-0.76l0.47,-0.73l2.17,-0.6l1.66,-1.54l1.51,0.08l1.18,-0.53l1.59,0.24l2.83,1.48l1.88,0.3l2.77,2.47l1.77,0.18l0.18,1.99l-1.68,5.49l0.24,0.5l0.61,0.23l-0.82,1.48l0.8,2.18l0.19,1.71l0.3,0.34l1.63,0.4l0.15,1.32l-2.15,2.35l-0.01,0.53l2.21,3.03l2.34,1.24l0.06,2.14l1.24,0.72l0.11,0.69l-3.31,1.27l-1.08,3.03l-9.68,-1.68l-0.99,-3.05l-1.43,-0.73l-2.17,0.46l-2.47,1.26l-2.83,-0.82l-2.46,-2.02l-2.41,-0.8l-3.42,-6.06l-0.48,-0.2l-1.18,0.39l-1.44,-0.82l-0.5,0.08l-0.65,0.74l-0.97,-1.01l-0.02,-1.31l-0.71,-0.39l0.26,-1.81l-1.29,-2.11l-3.13,-1.63l-1.58,-2.43l0.5,-1.9l1.31,-1.26l-0.19,-1.66l-1.74,-1.1l-1.57,-3.3Z\", \"name\": \"Iran\"}, \"AM\": {\"path\": \"M536.99,182.33l-0.28,0.03l-1.23,-2.13l-0.93,0.01l-0.62,-0.66l-0.69,-0.07l-0.96,-0.81l-1.56,-0.62l0.19,-1.12l-0.26,-0.79l2.72,-0.36l1.09,1.01l-0.17,0.92l1.02,0.78l-0.47,0.62l0.08,0.56l2.04,1.23l0.04,1.4Z\", \"name\": \"Armenia\"}, \"IT\": {\"path\": \"M451.59,158.63l3.48,0.94l-0.21,1.17l0.3,0.83l-1.49,-0.24l-2.04,1.1l-0.21,0.39l0.13,1.45l-0.25,1.12l0.82,1.57l2.39,1.63l1.31,2.54l2.79,2.43l2.05,0.08l0.21,0.23l-0.39,0.33l0.09,0.67l4.05,1.97l2.17,1.76l-0.16,0.36l-1.17,-1.08l-2.18,-0.49l-0.44,0.2l-1.05,1.91l0.14,0.54l1.57,0.95l-0.19,0.98l-1.06,0.33l-1.25,2.34l-0.37,0.08l0.0,-0.33l1.0,-2.45l-1.73,-3.17l-1.12,-0.51l-0.88,-1.33l-1.51,-0.51l-1.27,-1.25l-1.75,-0.18l-4.12,-3.21l-1.62,-1.65l-1.03,-3.19l-3.53,-1.36l-1.3,0.51l-1.69,1.41l0.16,-0.72l-0.28,-0.47l-1.14,-0.33l-0.53,-1.96l0.72,-0.78l0.04,-0.48l-0.65,-1.17l0.8,0.39l1.4,-0.23l1.11,-0.84l0.52,0.35l1.19,-0.1l0.75,-1.2l1.53,0.33l1.36,-0.56l0.35,-1.14l1.08,0.32l0.68,-0.64l1.98,-0.44l0.42,0.82ZM459.19,184.75l-0.65,1.65l0.32,1.05l-0.31,0.89l-1.5,-0.85l-4.5,-1.67l0.19,-0.82l2.67,0.23l3.78,-0.48ZM443.93,176.05l1.18,1.66l-0.3,3.32l-1.06,-0.01l-0.77,0.73l-0.53,-0.44l-0.1,-3.37l-0.39,-1.22l1.04,0.01l0.92,-0.68Z\", \"name\": \"Italy\"}, \"VN\": {\"path\": \"M690.56,230.25l-2.7,1.82l-2.09,2.46l-0.63,1.95l4.31,6.45l2.32,1.65l1.43,1.94l1.11,4.59l-0.32,4.24l-1.93,1.54l-2.84,1.61l-2.11,2.15l-2.73,2.06l-0.59,-1.05l0.63,-1.53l-0.13,-0.47l-1.34,-1.04l1.51,-0.71l2.55,-0.18l0.3,-0.63l-0.82,-1.14l4.0,-2.07l0.31,-3.05l-0.57,-1.77l0.42,-2.66l-0.73,-1.97l-1.86,-1.76l-3.63,-5.29l-2.72,-1.46l0.36,-0.47l1.5,-0.64l0.21,-0.52l-0.97,-2.27l-0.37,-0.24l-2.83,-0.02l-2.24,-3.9l0.83,-0.4l4.39,-0.29l2.06,-1.31l1.15,0.89l1.88,0.4l-0.17,1.51l1.35,1.16l1.67,0.45Z\", \"name\": \"Vietnam\"}, \"AR\": {\"path\": \"M249.29,428.93l-2.33,-0.52l-5.83,-0.43l-0.89,-1.66l0.05,-2.37l-0.45,-0.4l-1.43,0.18l-0.67,-0.91l-0.2,-3.13l1.88,-1.47l0.79,-2.04l-0.25,-1.7l1.3,-2.68l0.91,-4.15l-0.22,-1.69l0.85,-0.45l0.2,-0.44l-0.27,-1.16l-0.98,-0.68l0.59,-0.92l-0.05,-0.5l-1.04,-1.07l-0.52,-3.1l0.97,-0.86l-0.42,-3.58l1.2,-5.43l1.38,-0.98l0.16,-0.43l-0.75,-2.79l-0.01,-2.43l1.78,-1.75l0.06,-2.57l1.43,-2.85l0.01,-2.58l-0.69,-0.74l-1.09,-4.52l1.47,-2.7l-0.18,-2.79l0.85,-2.35l1.59,-2.46l1.73,-1.64l0.05,-0.52l-0.6,-0.84l0.44,-0.85l-0.07,-4.19l2.7,-1.44l0.86,-2.75l-0.21,-0.71l1.76,-2.01l2.9,0.57l1.38,1.78l0.68,-0.08l0.87,-1.87l2.39,0.09l4.95,4.77l2.17,0.49l3.0,1.92l2.47,1.0l0.25,0.82l-2.37,3.93l0.23,0.59l5.39,1.16l2.12,-0.44l2.45,-2.16l0.5,-2.38l0.76,-0.31l0.98,1.2l-0.04,1.8l-3.67,2.51l-2.85,2.66l-3.43,3.88l-1.3,5.07l0.01,2.72l-0.54,0.73l-0.36,3.28l3.14,2.64l-0.16,2.11l1.4,1.11l-0.1,1.09l-2.29,3.52l-3.55,1.49l-4.92,0.6l-2.71,-0.29l-0.43,0.51l0.5,1.65l-0.49,2.1l0.38,1.42l-1.19,0.83l-2.36,0.38l-2.3,-1.04l-1.38,0.83l0.41,3.64l1.69,0.91l1.4,-0.71l0.36,0.76l-2.04,0.86l-2.01,1.89l-0.97,4.63l-2.34,0.1l-2.09,1.78l-0.61,2.75l2.46,2.31l2.17,0.63l-0.7,2.32l-2.83,1.73l-1.73,3.86l-2.17,1.22l-1.16,1.67l0.75,3.76l1.04,1.28ZM256.71,438.88l-2.0,0.15l-1.4,-1.22l-3.82,-0.1l-0.0,-5.83l1.6,3.05l3.26,2.07l3.08,0.78l-0.71,1.1Z\", \"name\": \"Argentina\"}, \"AU\": {\"path\": \"M705.8,353.26l0.26,0.04l0.17,-0.47l-0.48,-1.42l0.92,1.11l0.45,0.15l0.27,-0.39l-0.1,-1.56l-1.98,-3.63l1.09,-3.31l-0.24,-1.57l0.34,-0.62l0.38,1.06l0.43,-0.19l0.99,-1.7l1.91,-0.83l1.29,-1.15l1.81,-0.91l0.96,-0.17l0.92,0.26l1.92,-0.95l1.47,-0.28l1.03,-0.8l1.43,0.04l2.78,-0.84l1.36,-1.15l0.71,-1.45l1.41,-1.26l0.3,-2.58l1.27,-1.59l0.78,1.65l0.54,0.19l1.07,-0.51l0.15,-0.6l-0.73,-1.0l0.45,-0.71l0.78,0.39l0.58,-0.3l0.28,-1.82l1.87,-2.14l1.12,-0.39l0.28,-0.58l0.62,0.17l0.53,-0.73l1.87,-0.57l1.65,1.05l1.35,1.48l3.39,0.38l0.43,-0.54l-0.46,-1.23l1.05,-1.79l1.04,-0.61l0.14,-0.55l-0.25,-0.41l0.88,-1.17l1.31,-0.77l1.3,0.27l2.1,-0.48l0.31,-0.4l-0.05,-1.3l-0.92,-0.77l1.48,0.56l1.41,1.07l2.11,0.65l0.81,-0.2l1.4,0.7l1.69,-0.66l0.8,0.19l0.64,-0.33l0.71,0.77l-1.33,1.94l-0.71,0.07l-0.35,0.51l0.24,0.86l-1.52,2.35l0.12,1.05l2.15,1.65l1.97,0.85l3.04,2.36l1.97,0.65l0.55,0.88l2.72,0.85l1.84,-1.1l2.07,-5.97l-0.42,-3.59l0.3,-1.73l0.47,-0.87l-0.31,-0.68l1.09,-3.28l0.46,-0.47l0.4,0.71l0.16,1.51l0.65,0.52l0.16,1.04l0.85,1.21l0.12,2.38l0.9,2.0l0.57,0.18l1.3,-0.78l1.69,1.7l-0.2,1.08l0.53,2.2l0.39,1.3l0.68,0.48l0.6,1.95l-0.19,1.48l0.81,1.76l6.01,3.69l-0.11,0.76l1.38,1.58l0.95,2.77l0.58,0.22l0.72,-0.41l0.8,0.9l0.61,0.01l0.46,2.41l4.81,4.71l0.66,2.02l-0.07,3.31l1.14,2.2l-0.13,2.24l-1.1,3.68l0.03,1.64l-0.47,1.89l-1.05,2.4l-1.9,1.47l-1.72,3.51l-2.38,6.09l-0.24,2.82l-1.14,0.8l-2.85,0.15l-2.31,1.19l-2.51,2.25l-3.09,-1.57l0.3,-1.15l-0.54,-0.47l-1.5,0.63l-2.01,1.94l-7.12,-2.18l-1.48,-1.63l-1.14,-3.74l-1.45,-1.26l-1.81,-0.26l0.56,-1.18l-0.61,-2.1l-0.72,-0.1l-1.14,1.82l-0.9,0.21l0.63,-0.82l0.36,-1.55l0.92,-1.31l-0.13,-2.34l-0.7,-0.22l-2.0,2.34l-1.51,0.93l-0.94,2.01l-1.35,-0.81l-0.02,-1.52l-1.57,-2.04l-1.09,-0.88l0.24,-0.33l-0.14,-0.59l-3.21,-1.69l-1.83,-0.12l-2.54,-1.35l-4.58,0.28l-6.02,1.9l-2.53,-0.13l-2.62,1.41l-2.13,0.63l-1.49,2.6l-3.49,0.31l-2.29,-0.5l-3.48,0.43l-1.6,1.47l-0.81,-0.04l-2.37,1.63l-3.26,-0.1l-3.72,-2.21l0.04,-1.05l1.19,-0.46l0.49,-0.89l0.21,-2.97l-0.28,-1.64l-1.34,-2.86l-0.38,-1.47l0.05,-1.72l-0.95,-1.7l-0.18,-0.97l-1.01,-0.99l-0.29,-1.98l-1.13,-1.75ZM784.92,393.44l2.65,1.02l3.23,-0.96l1.09,0.14l0.15,3.06l-0.85,1.13l-0.17,1.63l-0.87,-0.24l-1.57,1.91l-1.68,-0.18l-1.4,-2.36l-0.37,-2.04l-1.39,-2.51l0.04,-0.8l1.15,0.18Z\", \"name\": \"Australia\"}, \"IL\": {\"path\": \"M507.76,203.05l0.4,-0.78l0.18,0.4l-0.33,1.03l0.52,0.44l0.68,-0.22l-0.86,3.6l-1.16,-3.32l0.59,-0.74l-0.03,-0.41ZM508.73,200.34l0.37,-1.02l0.64,0.0l0.52,-0.51l-0.49,1.53l-0.56,-0.24l-0.48,0.23Z\", \"name\": \"Israel\"}, \"IN\": {\"path\": \"M623.34,207.03l-1.24,1.04l-0.97,2.55l0.22,0.51l8.04,3.87l3.42,0.37l1.57,1.38l4.92,0.88l2.18,-0.04l0.38,-0.3l0.29,-1.24l-0.32,-1.64l0.14,-0.87l0.82,-0.31l0.45,2.48l2.28,1.02l1.77,-0.38l4.14,0.1l0.38,-0.36l0.18,-1.66l-0.5,-0.65l1.37,-0.29l2.25,-1.99l2.7,-1.62l1.93,0.62l1.8,-0.98l0.79,1.14l-0.68,0.91l0.26,0.63l2.42,0.36l0.09,0.47l-0.83,0.75l0.13,1.07l-1.52,-0.29l-3.24,1.86l-0.13,1.78l-1.32,2.14l-0.18,1.39l-0.93,1.82l-1.64,-0.5l-0.52,0.37l-0.09,2.63l-0.56,1.11l0.19,0.81l-0.53,0.27l-1.18,-3.73l-1.08,-0.27l-0.38,0.31l-0.24,1.0l-0.66,-0.66l0.54,-1.06l1.22,-0.34l1.15,-2.25l-0.24,-0.56l-1.57,-0.47l-4.34,-0.28l-0.18,-1.56l-0.35,-0.35l-1.11,-0.12l-1.91,-1.12l-0.56,0.17l-0.88,1.82l0.11,0.49l1.36,1.07l-1.09,0.69l-0.69,1.11l0.18,0.56l1.24,0.57l-0.32,1.54l0.85,1.94l0.36,2.01l-0.22,0.59l-4.58,0.52l-0.33,0.42l0.13,1.8l-1.17,1.36l-3.65,1.81l-2.79,3.03l-4.32,3.28l-0.18,1.27l-4.65,1.79l-0.77,2.16l0.64,5.3l-1.06,2.49l-0.01,3.94l-1.24,0.28l-1.14,1.93l0.39,0.84l-1.68,0.53l-1.04,1.83l-0.65,0.47l-2.06,-2.05l-2.1,-6.02l-2.2,-3.64l-1.05,-4.75l-2.29,-3.57l-1.76,-8.2l0.01,-3.11l-0.49,-2.53l-0.55,-0.29l-3.53,1.52l-1.53,-0.27l-2.86,-2.77l0.85,-0.67l0.08,-0.55l-0.74,-1.03l-2.67,-2.06l1.24,-1.32l5.34,0.01l0.39,-0.49l-0.5,-2.29l-1.42,-1.46l-0.27,-1.93l-1.43,-1.2l2.31,-2.37l3.05,0.06l2.62,-2.85l1.6,-2.81l2.4,-2.73l0.07,-2.04l1.97,-1.48l-0.02,-0.65l-1.93,-1.31l-0.82,-1.78l-0.8,-2.21l0.9,-0.89l3.59,0.65l2.92,-0.42l2.33,-2.19l2.31,2.85l-0.24,2.13l0.99,1.59l-0.05,0.82l-1.34,-0.28l-0.47,0.48l0.7,3.06l2.62,1.99l2.99,1.65Z\", \"name\": \"India\"}, \"TZ\": {\"path\": \"M495.56,296.42l2.8,-3.12l-0.02,-0.81l-0.64,-1.3l0.68,-0.52l0.14,-1.47l-0.76,-1.25l0.31,-0.11l2.26,0.03l-0.51,2.76l0.76,1.3l0.5,0.12l1.05,-0.53l1.19,-0.12l0.61,0.24l1.43,-0.62l0.1,-0.67l-0.71,-0.62l1.57,-1.7l8.65,4.86l0.32,1.53l3.34,2.33l-1.05,2.8l0.13,1.61l1.63,1.12l-0.6,1.76l-0.01,2.33l1.89,4.03l0.57,0.43l-1.46,1.08l-2.61,0.94l-1.43,-0.04l-1.06,0.77l-2.29,0.36l-2.87,-0.68l-0.83,0.07l-0.63,-0.75l-0.31,-2.78l-1.32,-1.35l-3.25,-0.77l-3.96,-1.58l-1.18,-2.41l-0.32,-1.75l-1.76,-1.49l0.42,-1.05l-0.44,-0.89l0.08,-0.96l-0.46,-0.58l0.06,-0.56Z\", \"name\": \"Tanzania\"}, \"AZ\": {\"path\": \"M539.29,175.73l1.33,0.32l1.94,-1.8l2.3,3.34l1.43,0.43l-1.26,0.15l-0.35,0.32l-0.8,3.14l-0.99,0.96l0.05,1.11l-1.26,-1.13l0.7,-1.18l-0.04,-0.47l-0.74,-0.86l-1.48,0.15l-2.34,1.71l-0.03,-1.27l-2.03,-1.35l0.47,-0.62l-0.08,-0.56l-1.03,-0.79l0.29,-0.43l-0.14,-0.58l-1.13,-0.86l1.89,0.68l1.69,0.06l0.37,-0.87l-0.81,-1.37l0.42,0.06l1.63,1.72ZM533.78,180.57l0.61,0.46l0.69,-0.0l0.59,1.15l-0.68,-0.15l-1.21,-1.45Z\", \"name\": \"Azerbaijan\"}, \"IE\": {\"path\": \"M405.08,135.42l0.35,2.06l-1.75,2.78l-4.22,1.88l-2.84,-0.4l1.73,-3.0l-1.18,-3.53l4.6,-3.74l0.32,1.15l-0.49,1.74l0.4,0.51l1.47,-0.04l1.6,0.6Z\", \"name\": \"Ireland\"}, \"ID\": {\"path\": \"M756.47,287.89l0.69,4.01l2.79,1.78l0.51,-0.1l2.04,-2.59l2.71,-1.43l2.05,-0.0l3.9,1.73l2.46,0.45l0.08,15.12l-1.75,-1.54l-2.54,-0.51l-0.88,0.71l-2.32,0.06l0.69,-1.33l1.45,-0.64l0.23,-0.46l-0.65,-2.74l-1.24,-2.21l-5.04,-2.29l-2.09,-0.23l-3.68,-2.27l-0.55,0.13l-0.65,1.07l-0.52,0.12l-0.55,-1.89l-1.21,-0.78l1.84,-0.62l1.72,0.05l0.39,-0.52l-0.21,-0.66l-0.38,-0.28l-3.45,-0.0l-1.13,-1.48l-2.1,-0.43l-0.52,-0.6l2.69,-0.48l1.28,-0.78l3.66,0.94l0.3,0.71ZM757.91,300.34l-0.62,0.82l-0.1,-0.8l0.59,-1.12l0.13,1.1ZM747.38,292.98l0.34,0.72l-1.22,-0.57l-4.68,-0.1l0.27,-0.62l2.78,-0.09l2.52,0.67ZM741.05,285.25l-0.67,-2.88l0.64,-2.01l0.41,0.86l1.21,0.18l0.16,0.7l-0.1,1.68l-0.84,-0.16l-0.46,0.3l-0.34,1.34ZM739.05,293.5l-0.5,0.44l-1.34,-0.36l-0.17,-0.37l1.73,-0.08l0.27,0.36ZM721.45,284.51l-0.19,1.97l2.24,2.23l0.54,0.02l1.27,-1.07l2.75,-0.5l-0.9,1.21l-2.11,0.93l-0.16,0.6l2.22,3.01l-0.3,1.07l1.36,1.74l-2.26,0.85l-0.28,-0.31l0.12,-1.19l-1.64,-1.34l0.17,-2.23l-0.56,-0.39l-1.67,0.76l-0.23,0.39l0.3,6.17l-1.1,0.25l-0.69,-0.47l0.64,-2.21l-0.39,-2.42l-0.39,-0.34l-0.8,-0.01l-0.58,-1.29l0.98,-1.6l0.35,-1.96l1.32,-3.87ZM728.59,296.27l0.38,0.49l-0.02,1.28l-0.88,0.49l-0.53,-0.47l1.04,-1.79ZM729.04,286.98l0.27,-0.05l-0.02,0.13l-0.24,-0.08ZM721.68,284.05l0.16,-0.32l1.89,-1.65l1.83,0.68l3.16,0.35l2.94,-0.1l2.39,-1.66l-1.73,2.13l-1.66,0.43l-2.41,-0.48l-4.17,0.13l-2.39,0.51ZM730.55,310.47l1.11,-1.93l2.03,-0.82l0.08,0.62l-1.45,1.67l-1.77,0.46ZM728.12,305.88l-0.1,0.38l-3.46,0.66l-2.91,-0.27l-0.0,-0.25l1.54,-0.41l1.66,0.73l1.67,-0.19l1.61,-0.65ZM722.9,310.24l-0.64,0.03l-2.26,-1.2l1.11,-0.24l1.78,1.41ZM716.26,305.77l0.88,0.51l1.28,-0.17l0.2,0.35l-4.65,0.73l0.39,-0.67l1.15,-0.02l0.75,-0.73ZM711.66,293.84l-0.38,-0.16l-2.54,1.01l-1.12,-1.44l-1.69,-0.13l-1.16,-0.75l-3.04,0.77l-1.1,-1.15l-3.31,-0.11l-0.35,-3.05l-1.35,-0.95l-1.11,-1.98l-0.33,-2.06l0.27,-2.14l0.9,-1.01l0.37,1.15l2.09,1.49l1.53,-0.48l1.82,0.08l1.38,-1.19l1.0,-0.18l2.28,0.67l2.26,-0.53l1.52,-3.64l1.01,-0.99l0.78,-2.57l4.1,0.3l-1.11,1.77l0.02,0.46l1.7,2.2l-0.23,1.39l2.07,1.71l-2.33,0.42l-0.88,1.9l0.1,2.05l-2.4,1.9l-0.06,2.45l-0.7,2.79ZM692.58,302.03l0.35,0.26l4.8,0.25l0.78,-0.97l4.17,1.09l1.13,1.68l3.69,0.45l2.13,1.04l-1.8,0.6l-2.77,-0.99l-4.8,-0.12l-5.24,-1.41l-1.84,-0.25l-1.11,0.3l-4.26,-0.97l-0.7,-1.14l-1.59,-0.13l1.18,-1.65l2.74,0.13l2.87,1.13l0.26,0.68ZM685.53,299.17l-2.22,0.04l-2.06,-2.03l-3.15,-2.01l-2.93,-3.51l-3.11,-5.33l-2.2,-2.12l-1.64,-4.06l-2.32,-1.69l-1.27,-2.07l-1.96,-1.5l-2.51,-2.65l-0.11,-0.66l4.81,0.53l2.15,2.38l3.31,2.74l2.35,2.66l2.7,0.17l1.95,1.59l1.54,2.17l1.59,0.95l-0.84,1.71l0.15,0.52l1.44,0.87l0.79,0.1l0.4,1.58l0.87,1.4l1.96,0.39l1.0,1.31l-0.6,3.01l-0.09,3.5Z\", \"name\": \"Indonesia\"}, \"UA\": {\"path\": \"M492.5,162.44l1.28,-2.49l1.82,0.19l0.66,-0.23l0.09,-0.71l-0.25,-0.75l-0.79,-0.72l-0.33,-1.21l-0.86,-0.62l-0.02,-1.19l-1.13,-0.86l-1.15,-0.19l-2.04,-1.0l-1.66,0.32l-0.66,0.47l-0.92,-0.0l-0.84,0.78l-2.48,0.7l-1.18,-0.71l-3.07,-0.36l-0.89,0.43l-0.24,-0.55l-1.11,-0.7l0.35,-0.93l1.26,-1.02l-0.54,-1.23l2.04,-2.43l1.4,-0.62l0.25,-1.19l-1.04,-2.39l0.83,-0.13l1.28,-0.84l1.8,-0.07l2.47,0.26l2.86,0.81l1.88,0.06l0.86,0.44l1.04,-0.41l0.77,0.66l2.18,-0.15l0.92,0.3l0.52,-0.34l0.15,-1.53l0.56,-0.54l2.85,-0.05l0.84,-0.72l3.04,-0.18l1.23,1.46l-0.48,0.77l0.21,1.03l0.36,0.32l1.8,0.14l0.93,2.08l3.18,1.15l1.94,-0.45l1.67,1.49l1.4,-0.03l3.35,0.96l0.02,0.54l-0.96,1.59l0.47,1.97l-0.26,0.7l-2.36,0.28l-1.29,0.89l-0.23,1.38l-1.83,0.27l-1.58,0.97l-2.41,0.21l-2.16,1.17l-0.21,0.38l0.34,2.26l1.23,0.75l2.13,-0.08l-0.14,0.31l-2.65,0.53l-3.23,1.69l-0.87,-0.39l0.42,-1.1l-0.25,-0.52l-2.21,-0.73l2.35,-1.06l0.12,-0.65l-0.93,-0.82l-3.62,-0.74l-0.13,-0.89l-0.46,-0.34l-2.61,0.59l-0.91,1.69l-1.71,2.04l-0.86,-0.4l-1.62,0.27Z\", \"name\": \"Ukraine\"}, \"QA\": {\"path\": \"M549.33,221.64l-0.76,-0.23l-0.14,-1.64l0.84,-1.29l0.47,0.52l0.04,1.34l-0.45,1.3Z\", \"name\": \"Qatar\"}, \"MZ\": {\"path\": \"M508.58,318.75l-0.34,-2.57l0.51,-2.05l3.55,0.63l2.5,-0.38l1.02,-0.76l1.49,0.01l2.74,-0.98l1.66,-1.2l0.5,9.24l0.41,1.23l-0.68,1.67l-0.93,1.71l-1.5,1.5l-5.16,2.28l-2.78,2.73l-1.02,0.53l-1.71,1.8l-0.98,0.57l-0.35,2.41l1.16,1.94l0.49,2.17l0.43,0.31l-0.06,2.06l-0.39,1.17l0.5,0.72l-0.25,0.73l-0.92,0.83l-5.12,2.39l-1.22,1.36l0.21,1.13l0.58,0.39l-0.11,0.72l-1.22,-0.01l-0.73,-2.97l0.42,-3.09l-1.78,-5.37l2.49,-2.81l0.69,-1.89l0.44,-0.43l0.28,-1.53l-0.39,-0.93l0.59,-3.65l-0.01,-3.26l-1.49,-1.16l-1.2,-0.22l-1.74,-1.17l-1.92,0.01l-0.29,-2.08l7.06,-1.96l1.28,1.09l0.89,-0.1l0.67,0.44l0.1,0.73l-0.51,1.29l0.19,1.81l1.75,1.83l0.65,-0.13l0.71,-1.65l1.17,-0.86l-0.26,-3.47l-1.05,-1.85l-1.04,-0.94Z\", \"name\": \"Mozambique\"}}, \"height\": 440.70631074413296, \"projection\": {\"type\": \"mill\", \"centralMeridian\": 11.5}, \"width\": 900.0});","/*!\r\n * Name : Just Another Parallax [Jarallax]\r\n * Version : 1.10.4\r\n * Author : nK \r\n * GitHub : https://github.com/nk-o/jarallax\r\n */\r\n/******/ (function(modules) { // webpackBootstrap\r\n/******/ \t// The module cache\r\n/******/ \tvar installedModules = {};\r\n/******/\r\n/******/ \t// The require function\r\n/******/ \tfunction __webpack_require__(moduleId) {\r\n/******/\r\n/******/ \t\t// Check if module is in cache\r\n/******/ \t\tif(installedModules[moduleId]) {\r\n/******/ \t\t\treturn installedModules[moduleId].exports;\r\n/******/ \t\t}\r\n/******/ \t\t// Create a new module (and put it into the cache)\r\n/******/ \t\tvar module = installedModules[moduleId] = {\r\n/******/ \t\t\ti: moduleId,\r\n/******/ \t\t\tl: false,\r\n/******/ \t\t\texports: {}\r\n/******/ \t\t};\r\n/******/\r\n/******/ \t\t// Execute the module function\r\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\r\n/******/\r\n/******/ \t\t// Flag the module as loaded\r\n/******/ \t\tmodule.l = true;\r\n/******/\r\n/******/ \t\t// Return the exports of the module\r\n/******/ \t\treturn module.exports;\r\n/******/ \t}\r\n/******/\r\n/******/\r\n/******/ \t// expose the modules object (__webpack_modules__)\r\n/******/ \t__webpack_require__.m = modules;\r\n/******/\r\n/******/ \t// expose the module cache\r\n/******/ \t__webpack_require__.c = installedModules;\r\n/******/\r\n/******/ \t// define getter function for harmony exports\r\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\r\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\r\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\r\n/******/ \t\t}\r\n/******/ \t};\r\n/******/\r\n/******/ \t// define __esModule on exports\r\n/******/ \t__webpack_require__.r = function(exports) {\r\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\r\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\r\n/******/ \t\t}\r\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\r\n/******/ \t};\r\n/******/\r\n/******/ \t// create a fake namespace object\r\n/******/ \t// mode & 1: value is a module id, require it\r\n/******/ \t// mode & 2: merge all properties of value into the ns\r\n/******/ \t// mode & 4: return value when already ns object\r\n/******/ \t// mode & 8|1: behave like require\r\n/******/ \t__webpack_require__.t = function(value, mode) {\r\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\r\n/******/ \t\tif(mode & 8) return value;\r\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\r\n/******/ \t\tvar ns = Object.create(null);\r\n/******/ \t\t__webpack_require__.r(ns);\r\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\r\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\r\n/******/ \t\treturn ns;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\r\n/******/ \t__webpack_require__.n = function(module) {\r\n/******/ \t\tvar getter = module && module.__esModule ?\r\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\r\n/******/ \t\t\tfunction getModuleExports() { return module; };\r\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\r\n/******/ \t\treturn getter;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// Object.prototype.hasOwnProperty.call\r\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\r\n/******/\r\n/******/ \t// __webpack_public_path__\r\n/******/ \t__webpack_require__.p = \"\";\r\n/******/\r\n/******/\r\n/******/ \t// Load entry module and return exports\r\n/******/ \treturn __webpack_require__(__webpack_require__.s = 11);\r\n/******/ })\r\n/************************************************************************/\r\n/******/ ([\r\n/* 0 */,\r\n/* 1 */,\r\n/* 2 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nmodule.exports = function (callback) {\r\n\r\n\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\r\n\t\t// Already ready or interactive, execute callback\r\n\t\tcallback.call();\r\n\t} else if (document.attachEvent) {\r\n\t\t// Old browsers\r\n\t\tdocument.attachEvent('onreadystatechange', function () {\r\n\t\t\tif (document.readyState === 'interactive') callback.call();\r\n\t\t});\r\n\t} else if (document.addEventListener) {\r\n\t\t// Modern browsers\r\n\t\tdocument.addEventListener('DOMContentLoaded', callback);\r\n\t}\r\n};\r\n\r\n/***/ }),\r\n/* 3 */,\r\n/* 4 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n/* WEBPACK VAR INJECTION */(function(global) {\r\n\r\nvar win;\r\n\r\nif (typeof window !== \"undefined\") {\r\n win = window;\r\n} else if (typeof global !== \"undefined\") {\r\n win = global;\r\n} else if (typeof self !== \"undefined\") {\r\n win = self;\r\n} else {\r\n win = {};\r\n}\r\n\r\nmodule.exports = win;\r\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)))\r\n\r\n/***/ }),\r\n/* 5 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = function () {\r\n\treturn this;\r\n}();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\r\n/***/ }),\r\n/* 6 */,\r\n/* 7 */,\r\n/* 8 */,\r\n/* 9 */,\r\n/* 10 */,\r\n/* 11 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\nmodule.exports = __webpack_require__(12);\r\n\r\n\r\n/***/ }),\r\n/* 12 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\nvar _liteReady = __webpack_require__(2);\r\n\r\nvar _liteReady2 = _interopRequireDefault(_liteReady);\r\n\r\nvar _global = __webpack_require__(4);\r\n\r\nvar _jarallax = __webpack_require__(13);\r\n\r\nvar _jarallax2 = _interopRequireDefault(_jarallax);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\n// no conflict\r\nvar oldPlugin = _global.window.jarallax;\r\n_global.window.jarallax = _jarallax2.default;\r\n_global.window.jarallax.noConflict = function () {\r\n _global.window.jarallax = oldPlugin;\r\n return this;\r\n};\r\n\r\n// jQuery support\r\nif (typeof _global.jQuery !== 'undefined') {\r\n var jQueryPlugin = function jQueryPlugin() {\r\n var args = arguments || [];\r\n Array.prototype.unshift.call(args, this);\r\n var res = _jarallax2.default.apply(_global.window, args);\r\n return (typeof res === 'undefined' ? 'undefined' : _typeof(res)) !== 'object' ? res : this;\r\n };\r\n jQueryPlugin.constructor = _jarallax2.default.constructor;\r\n\r\n // no conflict\r\n var oldJqPlugin = _global.jQuery.fn.jarallax;\r\n _global.jQuery.fn.jarallax = jQueryPlugin;\r\n _global.jQuery.fn.jarallax.noConflict = function () {\r\n _global.jQuery.fn.jarallax = oldJqPlugin;\r\n return this;\r\n };\r\n}\r\n\r\n// data-jarallax initialization\r\n(0, _liteReady2.default)(function () {\r\n (0, _jarallax2.default)(document.querySelectorAll('[data-jarallax]'));\r\n});\r\n\r\n/***/ }),\r\n/* 13 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n/* WEBPACK VAR INJECTION */(function(global) {\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\r\n\r\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\nvar _liteReady = __webpack_require__(2);\r\n\r\nvar _liteReady2 = _interopRequireDefault(_liteReady);\r\n\r\nvar _rafl = __webpack_require__(14);\r\n\r\nvar _rafl2 = _interopRequireDefault(_rafl);\r\n\r\nvar _global = __webpack_require__(4);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\nvar isIE = navigator.userAgent.indexOf('MSIE ') > -1 || navigator.userAgent.indexOf('Trident/') > -1 || navigator.userAgent.indexOf('Edge/') > -1;\r\n\r\nvar supportTransform = function () {\r\n var prefixes = 'transform WebkitTransform MozTransform'.split(' ');\r\n var div = document.createElement('div');\r\n for (var i = 0; i < prefixes.length; i++) {\r\n if (div && div.style[prefixes[i]] !== undefined) {\r\n return prefixes[i];\r\n }\r\n }\r\n return false;\r\n}();\r\n\r\n// Window data\r\nvar wndW = void 0;\r\nvar wndH = void 0;\r\nvar wndY = void 0;\r\nvar forceResizeParallax = false;\r\nvar forceScrollParallax = false;\r\nfunction updateWndVars(e) {\r\n wndW = _global.window.innerWidth || document.documentElement.clientWidth;\r\n wndH = _global.window.innerHeight || document.documentElement.clientHeight;\r\n if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object' && (e.type === 'load' || e.type === 'dom-loaded')) {\r\n forceResizeParallax = true;\r\n }\r\n}\r\nupdateWndVars();\r\n_global.window.addEventListener('resize', updateWndVars);\r\n_global.window.addEventListener('orientationchange', updateWndVars);\r\n_global.window.addEventListener('load', updateWndVars);\r\n(0, _liteReady2.default)(function () {\r\n updateWndVars({\r\n type: 'dom-loaded'\r\n });\r\n});\r\n\r\n// list with all jarallax instances\r\n// need to render all in one scroll/resize event\r\nvar jarallaxList = [];\r\n\r\n// Animate if changed window size or scrolled page\r\nvar oldPageData = false;\r\nfunction updateParallax() {\r\n if (!jarallaxList.length) {\r\n return;\r\n }\r\n\r\n if (_global.window.pageYOffset !== undefined) {\r\n wndY = _global.window.pageYOffset;\r\n } else {\r\n wndY = (document.documentElement || document.body.parentNode || document.body).scrollTop;\r\n }\r\n\r\n var isResized = forceResizeParallax || !oldPageData || oldPageData.width !== wndW || oldPageData.height !== wndH;\r\n var isScrolled = forceScrollParallax || isResized || !oldPageData || oldPageData.y !== wndY;\r\n\r\n forceResizeParallax = false;\r\n forceScrollParallax = false;\r\n\r\n if (isResized || isScrolled) {\r\n jarallaxList.forEach(function (item) {\r\n if (isResized) {\r\n item.onResize();\r\n }\r\n if (isScrolled) {\r\n item.onScroll();\r\n }\r\n });\r\n\r\n oldPageData = {\r\n width: wndW,\r\n height: wndH,\r\n y: wndY\r\n };\r\n }\r\n\r\n (0, _rafl2.default)(updateParallax);\r\n}\r\n\r\n// ResizeObserver\r\nvar resizeObserver = global.ResizeObserver ? new global.ResizeObserver(function (entry) {\r\n if (entry && entry.length) {\r\n (0, _rafl2.default)(function () {\r\n entry.forEach(function (item) {\r\n if (item.target && item.target.jarallax) {\r\n if (!forceResizeParallax) {\r\n item.target.jarallax.onResize();\r\n }\r\n forceScrollParallax = true;\r\n }\r\n });\r\n });\r\n }\r\n}) : false;\r\n\r\nvar instanceID = 0;\r\n\r\n// Jarallax class\r\n\r\nvar Jarallax = function () {\r\n function Jarallax(item, userOptions) {\r\n _classCallCheck(this, Jarallax);\r\n\r\n var self = this;\r\n\r\n self.instanceID = instanceID++;\r\n\r\n self.$item = item;\r\n\r\n self.defaults = {\r\n type: 'scroll', // type of parallax: scroll, scale, opacity, scale-opacity, scroll-opacity\r\n speed: 0.5, // supported value from -1 to 2\r\n imgSrc: null,\r\n imgElement: '.jarallax-img',\r\n imgSize: 'cover',\r\n imgPosition: '50% 50%',\r\n imgRepeat: 'no-repeat', // supported only for background, not for tag\r\n keepImg: false, // keep tag in it's default place\r\n elementInViewport: null,\r\n zIndex: -100,\r\n disableParallax: false,\r\n disableVideo: false,\r\n automaticResize: true, // use ResizeObserver to recalculate position and size of parallax image\r\n\r\n // video\r\n videoSrc: null,\r\n videoStartTime: 0,\r\n videoEndTime: 0,\r\n videoVolume: 0,\r\n videoPlayOnlyVisible: true,\r\n\r\n // events\r\n onScroll: null, // function(calculations) {}\r\n onInit: null, // function() {}\r\n onDestroy: null, // function() {}\r\n onCoverImage: null // function() {}\r\n };\r\n\r\n // DEPRECATED: old data-options\r\n var deprecatedDataAttribute = self.$item.getAttribute('data-jarallax');\r\n var oldDataOptions = JSON.parse(deprecatedDataAttribute || '{}');\r\n if (deprecatedDataAttribute) {\r\n // eslint-disable-next-line no-console\r\n console.warn('Detected usage of deprecated data-jarallax JSON options, you should use pure data-attribute options. See info here - https://github.com/nk-o/jarallax/issues/53');\r\n }\r\n\r\n // prepare data-options\r\n var dataOptions = self.$item.dataset || {};\r\n var pureDataOptions = {};\r\n Object.keys(dataOptions).forEach(function (key) {\r\n var loweCaseOption = key.substr(0, 1).toLowerCase() + key.substr(1);\r\n if (loweCaseOption && typeof self.defaults[loweCaseOption] !== 'undefined') {\r\n pureDataOptions[loweCaseOption] = dataOptions[key];\r\n }\r\n });\r\n\r\n self.options = self.extend({}, self.defaults, oldDataOptions, pureDataOptions, userOptions);\r\n self.pureOptions = self.extend({}, self.options);\r\n\r\n // prepare 'true' and 'false' strings to boolean\r\n Object.keys(self.options).forEach(function (key) {\r\n if (self.options[key] === 'true') {\r\n self.options[key] = true;\r\n } else if (self.options[key] === 'false') {\r\n self.options[key] = false;\r\n }\r\n });\r\n\r\n // fix speed option [-1.0, 2.0]\r\n self.options.speed = Math.min(2, Math.max(-1, parseFloat(self.options.speed)));\r\n\r\n // deprecated noAndroid and noIos options\r\n if (self.options.noAndroid || self.options.noIos) {\r\n // eslint-disable-next-line no-console\r\n console.warn('Detected usage of deprecated noAndroid or noIos options, you should use disableParallax option. See info here - https://github.com/nk-o/jarallax/#disable-on-mobile-devices');\r\n\r\n // prepare fallback if disableParallax option is not used\r\n if (!self.options.disableParallax) {\r\n if (self.options.noIos && self.options.noAndroid) {\r\n self.options.disableParallax = /iPad|iPhone|iPod|Android/;\r\n } else if (self.options.noIos) {\r\n self.options.disableParallax = /iPad|iPhone|iPod/;\r\n } else if (self.options.noAndroid) {\r\n self.options.disableParallax = /Android/;\r\n }\r\n }\r\n }\r\n\r\n // prepare disableParallax callback\r\n if (typeof self.options.disableParallax === 'string') {\r\n self.options.disableParallax = new RegExp(self.options.disableParallax);\r\n }\r\n if (self.options.disableParallax instanceof RegExp) {\r\n var disableParallaxRegexp = self.options.disableParallax;\r\n self.options.disableParallax = function () {\r\n return disableParallaxRegexp.test(navigator.userAgent);\r\n };\r\n }\r\n if (typeof self.options.disableParallax !== 'function') {\r\n self.options.disableParallax = function () {\r\n return false;\r\n };\r\n }\r\n\r\n // prepare disableVideo callback\r\n if (typeof self.options.disableVideo === 'string') {\r\n self.options.disableVideo = new RegExp(self.options.disableVideo);\r\n }\r\n if (self.options.disableVideo instanceof RegExp) {\r\n var disableVideoRegexp = self.options.disableVideo;\r\n self.options.disableVideo = function () {\r\n return disableVideoRegexp.test(navigator.userAgent);\r\n };\r\n }\r\n if (typeof self.options.disableVideo !== 'function') {\r\n self.options.disableVideo = function () {\r\n return false;\r\n };\r\n }\r\n\r\n // custom element to check if parallax in viewport\r\n var elementInVP = self.options.elementInViewport;\r\n // get first item from array\r\n if (elementInVP && (typeof elementInVP === 'undefined' ? 'undefined' : _typeof(elementInVP)) === 'object' && typeof elementInVP.length !== 'undefined') {\r\n var _elementInVP = elementInVP;\r\n\r\n var _elementInVP2 = _slicedToArray(_elementInVP, 1);\r\n\r\n elementInVP = _elementInVP2[0];\r\n }\r\n // check if dom element\r\n if (!(elementInVP instanceof Element)) {\r\n elementInVP = null;\r\n }\r\n self.options.elementInViewport = elementInVP;\r\n\r\n self.image = {\r\n src: self.options.imgSrc || null,\r\n $container: null,\r\n useImgTag: false,\r\n\r\n // position fixed is needed for the most of browsers because absolute position have glitches\r\n // on MacOS with smooth scroll there is a huge lags with absolute position - https://github.com/nk-o/jarallax/issues/75\r\n // on mobile devices better scrolled with absolute position\r\n position: /iPad|iPhone|iPod|Android/.test(navigator.userAgent) ? 'absolute' : 'fixed'\r\n };\r\n\r\n if (self.initImg() && self.canInitParallax()) {\r\n self.init();\r\n }\r\n }\r\n\r\n // add styles to element\r\n\r\n\r\n _createClass(Jarallax, [{\r\n key: 'css',\r\n value: function css(el, styles) {\r\n if (typeof styles === 'string') {\r\n return _global.window.getComputedStyle(el).getPropertyValue(styles);\r\n }\r\n\r\n // add transform property with vendor prefix\r\n if (styles.transform && supportTransform) {\r\n styles[supportTransform] = styles.transform;\r\n }\r\n\r\n Object.keys(styles).forEach(function (key) {\r\n el.style[key] = styles[key];\r\n });\r\n return el;\r\n }\r\n\r\n // Extend like jQuery.extend\r\n\r\n }, {\r\n key: 'extend',\r\n value: function extend(out) {\r\n var _arguments = arguments;\r\n\r\n out = out || {};\r\n Object.keys(arguments).forEach(function (i) {\r\n if (!_arguments[i]) {\r\n return;\r\n }\r\n Object.keys(_arguments[i]).forEach(function (key) {\r\n out[key] = _arguments[i][key];\r\n });\r\n });\r\n return out;\r\n }\r\n\r\n // get window size and scroll position. Useful for extensions\r\n\r\n }, {\r\n key: 'getWindowData',\r\n value: function getWindowData() {\r\n return {\r\n width: wndW,\r\n height: wndH,\r\n y: wndY\r\n };\r\n }\r\n\r\n // Jarallax functions\r\n\r\n }, {\r\n key: 'initImg',\r\n value: function initImg() {\r\n var self = this;\r\n\r\n // find image element\r\n var $imgElement = self.options.imgElement;\r\n if ($imgElement && typeof $imgElement === 'string') {\r\n $imgElement = self.$item.querySelector($imgElement);\r\n }\r\n // check if dom element\r\n if (!($imgElement instanceof Element)) {\r\n $imgElement = null;\r\n }\r\n\r\n if ($imgElement) {\r\n if (self.options.keepImg) {\r\n self.image.$item = $imgElement.cloneNode(true);\r\n } else {\r\n self.image.$item = $imgElement;\r\n self.image.$itemParent = $imgElement.parentNode;\r\n }\r\n self.image.useImgTag = true;\r\n }\r\n\r\n // true if there is img tag\r\n if (self.image.$item) {\r\n return true;\r\n }\r\n\r\n // get image src\r\n if (self.image.src === null) {\r\n self.image.src = self.css(self.$item, 'background-image').replace(/^url\\(['\"]?/g, '').replace(/['\"]?\\)$/g, '');\r\n }\r\n return !(!self.image.src || self.image.src === 'none');\r\n }\r\n }, {\r\n key: 'canInitParallax',\r\n value: function canInitParallax() {\r\n return supportTransform && !this.options.disableParallax();\r\n }\r\n }, {\r\n key: 'init',\r\n value: function init() {\r\n var self = this;\r\n var containerStyles = {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n overflow: 'hidden',\r\n pointerEvents: 'none'\r\n };\r\n var imageStyles = {};\r\n\r\n if (!self.options.keepImg) {\r\n // save default user styles\r\n var curStyle = self.$item.getAttribute('style');\r\n if (curStyle) {\r\n self.$item.setAttribute('data-jarallax-original-styles', curStyle);\r\n }\r\n if (self.image.useImgTag) {\r\n var curImgStyle = self.image.$item.getAttribute('style');\r\n if (curImgStyle) {\r\n self.image.$item.setAttribute('data-jarallax-original-styles', curImgStyle);\r\n }\r\n }\r\n }\r\n\r\n // set relative position and z-index to the parent\r\n if (self.css(self.$item, 'position') === 'static') {\r\n self.css(self.$item, {\r\n position: 'relative'\r\n });\r\n }\r\n if (self.css(self.$item, 'z-index') === 'auto') {\r\n self.css(self.$item, {\r\n zIndex: 0\r\n });\r\n }\r\n\r\n // container for parallax image\r\n self.image.$container = document.createElement('div');\r\n self.css(self.image.$container, containerStyles);\r\n self.css(self.image.$container, {\r\n 'z-index': self.options.zIndex\r\n });\r\n\r\n // fix for IE https://github.com/nk-o/jarallax/issues/110\r\n if (isIE) {\r\n self.css(self.image.$container, {\r\n opacity: 0.9999\r\n });\r\n }\r\n\r\n self.image.$container.setAttribute('id', 'jarallax-container-' + self.instanceID);\r\n self.$item.appendChild(self.image.$container);\r\n\r\n // use img tag\r\n if (self.image.useImgTag) {\r\n imageStyles = self.extend({\r\n 'object-fit': self.options.imgSize,\r\n 'object-position': self.options.imgPosition,\r\n // support for plugin https://github.com/bfred-it/object-fit-images\r\n 'font-family': 'object-fit: ' + self.options.imgSize + '; object-position: ' + self.options.imgPosition + ';',\r\n 'max-width': 'none'\r\n }, containerStyles, imageStyles);\r\n\r\n // use div with background image\r\n } else {\r\n self.image.$item = document.createElement('div');\r\n if (self.image.src) {\r\n imageStyles = self.extend({\r\n 'background-position': self.options.imgPosition,\r\n 'background-size': self.options.imgSize,\r\n 'background-repeat': self.options.imgRepeat,\r\n 'background-image': 'url(\"' + self.image.src + '\")'\r\n }, containerStyles, imageStyles);\r\n }\r\n }\r\n\r\n if (self.options.type === 'opacity' || self.options.type === 'scale' || self.options.type === 'scale-opacity' || self.options.speed === 1) {\r\n self.image.position = 'absolute';\r\n }\r\n\r\n // check if one of parents have transform style (without this check, scroll transform will be inverted if used parallax with position fixed)\r\n // discussion - https://github.com/nk-o/jarallax/issues/9\r\n if (self.image.position === 'fixed') {\r\n var parentWithTransform = 0;\r\n var $itemParents = self.$item;\r\n while ($itemParents !== null && $itemParents !== document && parentWithTransform === 0) {\r\n var parentTransform = self.css($itemParents, '-webkit-transform') || self.css($itemParents, '-moz-transform') || self.css($itemParents, 'transform');\r\n if (parentTransform && parentTransform !== 'none') {\r\n parentWithTransform = 1;\r\n self.image.position = 'absolute';\r\n }\r\n $itemParents = $itemParents.parentNode;\r\n }\r\n }\r\n\r\n // add position to parallax block\r\n imageStyles.position = self.image.position;\r\n\r\n // insert parallax image\r\n self.css(self.image.$item, imageStyles);\r\n self.image.$container.appendChild(self.image.$item);\r\n\r\n // set initial position and size\r\n self.onResize();\r\n self.onScroll(true);\r\n\r\n // ResizeObserver\r\n if (self.options.automaticResize && resizeObserver) {\r\n resizeObserver.observe(self.$item);\r\n }\r\n\r\n // call onInit event\r\n if (self.options.onInit) {\r\n self.options.onInit.call(self);\r\n }\r\n\r\n // remove default user background\r\n if (self.css(self.$item, 'background-image') !== 'none') {\r\n self.css(self.$item, {\r\n 'background-image': 'none'\r\n });\r\n }\r\n\r\n self.addToParallaxList();\r\n }\r\n\r\n // add to parallax instances list\r\n\r\n }, {\r\n key: 'addToParallaxList',\r\n value: function addToParallaxList() {\r\n jarallaxList.push(this);\r\n\r\n if (jarallaxList.length === 1) {\r\n updateParallax();\r\n }\r\n }\r\n\r\n // remove from parallax instances list\r\n\r\n }, {\r\n key: 'removeFromParallaxList',\r\n value: function removeFromParallaxList() {\r\n var self = this;\r\n\r\n jarallaxList.forEach(function (item, key) {\r\n if (item.instanceID === self.instanceID) {\r\n jarallaxList.splice(key, 1);\r\n }\r\n });\r\n }\r\n }, {\r\n key: 'destroy',\r\n value: function destroy() {\r\n var self = this;\r\n\r\n self.removeFromParallaxList();\r\n\r\n // return styles on container as before jarallax init\r\n var originalStylesTag = self.$item.getAttribute('data-jarallax-original-styles');\r\n self.$item.removeAttribute('data-jarallax-original-styles');\r\n // null occurs if there is no style tag before jarallax init\r\n if (!originalStylesTag) {\r\n self.$item.removeAttribute('style');\r\n } else {\r\n self.$item.setAttribute('style', originalStylesTag);\r\n }\r\n\r\n if (self.image.useImgTag) {\r\n // return styles on img tag as before jarallax init\r\n var originalStylesImgTag = self.image.$item.getAttribute('data-jarallax-original-styles');\r\n self.image.$item.removeAttribute('data-jarallax-original-styles');\r\n // null occurs if there is no style tag before jarallax init\r\n if (!originalStylesImgTag) {\r\n self.image.$item.removeAttribute('style');\r\n } else {\r\n self.image.$item.setAttribute('style', originalStylesTag);\r\n }\r\n\r\n // move img tag to its default position\r\n if (self.image.$itemParent) {\r\n self.image.$itemParent.appendChild(self.image.$item);\r\n }\r\n }\r\n\r\n // remove additional dom elements\r\n if (self.$clipStyles) {\r\n self.$clipStyles.parentNode.removeChild(self.$clipStyles);\r\n }\r\n if (self.image.$container) {\r\n self.image.$container.parentNode.removeChild(self.image.$container);\r\n }\r\n\r\n // call onDestroy event\r\n if (self.options.onDestroy) {\r\n self.options.onDestroy.call(self);\r\n }\r\n\r\n // delete jarallax from item\r\n delete self.$item.jarallax;\r\n }\r\n\r\n // it will remove some image overlapping\r\n // overlapping occur due to an image position fixed inside absolute position element\r\n\r\n }, {\r\n key: 'clipContainer',\r\n value: function clipContainer() {\r\n // needed only when background in fixed position\r\n if (this.image.position !== 'fixed') {\r\n return;\r\n }\r\n\r\n var self = this;\r\n var rect = self.image.$container.getBoundingClientRect();\r\n var width = rect.width,\r\n height = rect.height;\r\n\r\n\r\n if (!self.$clipStyles) {\r\n self.$clipStyles = document.createElement('style');\r\n self.$clipStyles.setAttribute('type', 'text/css');\r\n self.$clipStyles.setAttribute('id', 'jarallax-clip-' + self.instanceID);\r\n var head = document.head || document.getElementsByTagName('head')[0];\r\n head.appendChild(self.$clipStyles);\r\n }\r\n\r\n var styles = '#jarallax-container-' + self.instanceID + ' {\\n clip: rect(0 ' + width + 'px ' + height + 'px 0);\\n clip: rect(0, ' + width + 'px, ' + height + 'px, 0);\\n }';\r\n\r\n // add clip styles inline (this method need for support IE8 and less browsers)\r\n if (self.$clipStyles.styleSheet) {\r\n self.$clipStyles.styleSheet.cssText = styles;\r\n } else {\r\n self.$clipStyles.innerHTML = styles;\r\n }\r\n }\r\n }, {\r\n key: 'coverImage',\r\n value: function coverImage() {\r\n var self = this;\r\n\r\n var rect = self.image.$container.getBoundingClientRect();\r\n var contH = rect.height;\r\n var speed = self.options.speed;\r\n\r\n var isScroll = self.options.type === 'scroll' || self.options.type === 'scroll-opacity';\r\n var scrollDist = 0;\r\n var resultH = contH;\r\n var resultMT = 0;\r\n\r\n // scroll parallax\r\n if (isScroll) {\r\n // scroll distance and height for image\r\n if (speed < 0) {\r\n scrollDist = speed * Math.max(contH, wndH);\r\n } else {\r\n scrollDist = speed * (contH + wndH);\r\n }\r\n\r\n // size for scroll parallax\r\n if (speed > 1) {\r\n resultH = Math.abs(scrollDist - wndH);\r\n } else if (speed < 0) {\r\n resultH = scrollDist / speed + Math.abs(scrollDist);\r\n } else {\r\n resultH += Math.abs(wndH - contH) * (1 - speed);\r\n }\r\n\r\n scrollDist /= 2;\r\n }\r\n\r\n // store scroll distance\r\n self.parallaxScrollDistance = scrollDist;\r\n\r\n // vertical center\r\n if (isScroll) {\r\n resultMT = (wndH - resultH) / 2;\r\n } else {\r\n resultMT = (contH - resultH) / 2;\r\n }\r\n\r\n // apply result to item\r\n self.css(self.image.$item, {\r\n height: resultH + 'px',\r\n marginTop: resultMT + 'px',\r\n left: self.image.position === 'fixed' ? rect.left + 'px' : '0',\r\n width: rect.width + 'px'\r\n });\r\n\r\n // call onCoverImage event\r\n if (self.options.onCoverImage) {\r\n self.options.onCoverImage.call(self);\r\n }\r\n\r\n // return some useful data. Used in the video cover function\r\n return {\r\n image: {\r\n height: resultH,\r\n marginTop: resultMT\r\n },\r\n container: rect\r\n };\r\n }\r\n }, {\r\n key: 'isVisible',\r\n value: function isVisible() {\r\n return this.isElementInViewport || false;\r\n }\r\n }, {\r\n key: 'onScroll',\r\n value: function onScroll(force) {\r\n var self = this;\r\n\r\n var rect = self.$item.getBoundingClientRect();\r\n var contT = rect.top;\r\n var contH = rect.height;\r\n var styles = {};\r\n\r\n // check if in viewport\r\n var viewportRect = rect;\r\n if (self.options.elementInViewport) {\r\n viewportRect = self.options.elementInViewport.getBoundingClientRect();\r\n }\r\n self.isElementInViewport = viewportRect.bottom >= 0 && viewportRect.right >= 0 && viewportRect.top <= wndH && viewportRect.left <= wndW;\r\n\r\n // stop calculations if item is not in viewport\r\n if (force ? false : !self.isElementInViewport) {\r\n return;\r\n }\r\n\r\n // calculate parallax helping variables\r\n var beforeTop = Math.max(0, contT);\r\n var beforeTopEnd = Math.max(0, contH + contT);\r\n var afterTop = Math.max(0, -contT);\r\n var beforeBottom = Math.max(0, contT + contH - wndH);\r\n var beforeBottomEnd = Math.max(0, contH - (contT + contH - wndH));\r\n var afterBottom = Math.max(0, -contT + wndH - contH);\r\n var fromViewportCenter = 1 - 2 * (wndH - contT) / (wndH + contH);\r\n\r\n // calculate on how percent of section is visible\r\n var visiblePercent = 1;\r\n if (contH < wndH) {\r\n visiblePercent = 1 - (afterTop || beforeBottom) / contH;\r\n } else if (beforeTopEnd <= wndH) {\r\n visiblePercent = beforeTopEnd / wndH;\r\n } else if (beforeBottomEnd <= wndH) {\r\n visiblePercent = beforeBottomEnd / wndH;\r\n }\r\n\r\n // opacity\r\n if (self.options.type === 'opacity' || self.options.type === 'scale-opacity' || self.options.type === 'scroll-opacity') {\r\n styles.transform = 'translate3d(0,0,0)';\r\n styles.opacity = visiblePercent;\r\n }\r\n\r\n // scale\r\n if (self.options.type === 'scale' || self.options.type === 'scale-opacity') {\r\n var scale = 1;\r\n if (self.options.speed < 0) {\r\n scale -= self.options.speed * visiblePercent;\r\n } else {\r\n scale += self.options.speed * (1 - visiblePercent);\r\n }\r\n styles.transform = 'scale(' + scale + ') translate3d(0,0,0)';\r\n }\r\n\r\n // scroll\r\n if (self.options.type === 'scroll' || self.options.type === 'scroll-opacity') {\r\n var positionY = self.parallaxScrollDistance * fromViewportCenter;\r\n\r\n // fix if parallax block in absolute position\r\n if (self.image.position === 'absolute') {\r\n positionY -= contT;\r\n }\r\n\r\n styles.transform = 'translate3d(0,' + positionY + 'px,0)';\r\n }\r\n\r\n self.css(self.image.$item, styles);\r\n\r\n // call onScroll event\r\n if (self.options.onScroll) {\r\n self.options.onScroll.call(self, {\r\n section: rect,\r\n\r\n beforeTop: beforeTop,\r\n beforeTopEnd: beforeTopEnd,\r\n afterTop: afterTop,\r\n beforeBottom: beforeBottom,\r\n beforeBottomEnd: beforeBottomEnd,\r\n afterBottom: afterBottom,\r\n\r\n visiblePercent: visiblePercent,\r\n fromViewportCenter: fromViewportCenter\r\n });\r\n }\r\n }\r\n }, {\r\n key: 'onResize',\r\n value: function onResize() {\r\n this.coverImage();\r\n this.clipContainer();\r\n }\r\n }]);\r\n\r\n return Jarallax;\r\n}();\r\n\r\n// global definition\r\n\r\n\r\nvar plugin = function plugin(items) {\r\n // check for dom element\r\n // thanks: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\r\n if ((typeof HTMLElement === 'undefined' ? 'undefined' : _typeof(HTMLElement)) === 'object' ? items instanceof HTMLElement : items && (typeof items === 'undefined' ? 'undefined' : _typeof(items)) === 'object' && items !== null && items.nodeType === 1 && typeof items.nodeName === 'string') {\r\n items = [items];\r\n }\r\n\r\n var options = arguments[1];\r\n var args = Array.prototype.slice.call(arguments, 2);\r\n var len = items.length;\r\n var k = 0;\r\n var ret = void 0;\r\n\r\n for (k; k < len; k++) {\r\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object' || typeof options === 'undefined') {\r\n if (!items[k].jarallax) {\r\n items[k].jarallax = new Jarallax(items[k], options);\r\n }\r\n } else if (items[k].jarallax) {\r\n // eslint-disable-next-line prefer-spread\r\n ret = items[k].jarallax[options].apply(items[k].jarallax, args);\r\n }\r\n if (typeof ret !== 'undefined') {\r\n return ret;\r\n }\r\n }\r\n\r\n return items;\r\n};\r\nplugin.constructor = Jarallax;\r\n\r\nexports.default = plugin;\r\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)))\r\n\r\n/***/ }),\r\n/* 14 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nvar global = __webpack_require__(4);\r\n\r\n/**\r\n * `requestAnimationFrame()`\r\n */\r\n\r\nvar request = global.requestAnimationFrame || global.webkitRequestAnimationFrame || global.mozRequestAnimationFrame || fallback;\r\n\r\nvar prev = +new Date();\r\nfunction fallback(fn) {\r\n var curr = +new Date();\r\n var ms = Math.max(0, 16 - (curr - prev));\r\n var req = setTimeout(fn, ms);\r\n return prev = curr, req;\r\n}\r\n\r\n/**\r\n * `cancelAnimationFrame()`\r\n */\r\n\r\nvar cancel = global.cancelAnimationFrame || global.webkitCancelAnimationFrame || global.mozCancelAnimationFrame || clearTimeout;\r\n\r\nif (Function.prototype.bind) {\r\n request = request.bind(global);\r\n cancel = cancel.bind(global);\r\n}\r\n\r\nexports = module.exports = request;\r\nexports.cancel = cancel;\r\n\r\n/***/ })\r\n/******/ ]);\r\n","/*!\r\n * Name : Video Background Extension for Jarallax\r\n * Version : 1.0.1\r\n * Author : nK \r\n * GitHub : https://github.com/nk-o/jarallax\r\n */\r\n/******/ (function(modules) { // webpackBootstrap\r\n/******/ \t// The module cache\r\n/******/ \tvar installedModules = {};\r\n/******/\r\n/******/ \t// The require function\r\n/******/ \tfunction __webpack_require__(moduleId) {\r\n/******/\r\n/******/ \t\t// Check if module is in cache\r\n/******/ \t\tif(installedModules[moduleId]) {\r\n/******/ \t\t\treturn installedModules[moduleId].exports;\r\n/******/ \t\t}\r\n/******/ \t\t// Create a new module (and put it into the cache)\r\n/******/ \t\tvar module = installedModules[moduleId] = {\r\n/******/ \t\t\ti: moduleId,\r\n/******/ \t\t\tl: false,\r\n/******/ \t\t\texports: {}\r\n/******/ \t\t};\r\n/******/\r\n/******/ \t\t// Execute the module function\r\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\r\n/******/\r\n/******/ \t\t// Flag the module as loaded\r\n/******/ \t\tmodule.l = true;\r\n/******/\r\n/******/ \t\t// Return the exports of the module\r\n/******/ \t\treturn module.exports;\r\n/******/ \t}\r\n/******/\r\n/******/\r\n/******/ \t// expose the modules object (__webpack_modules__)\r\n/******/ \t__webpack_require__.m = modules;\r\n/******/\r\n/******/ \t// expose the module cache\r\n/******/ \t__webpack_require__.c = installedModules;\r\n/******/\r\n/******/ \t// define getter function for harmony exports\r\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\r\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\r\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\r\n/******/ \t\t}\r\n/******/ \t};\r\n/******/\r\n/******/ \t// define __esModule on exports\r\n/******/ \t__webpack_require__.r = function(exports) {\r\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\r\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\r\n/******/ \t\t}\r\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\r\n/******/ \t};\r\n/******/\r\n/******/ \t// create a fake namespace object\r\n/******/ \t// mode & 1: value is a module id, require it\r\n/******/ \t// mode & 2: merge all properties of value into the ns\r\n/******/ \t// mode & 4: return value when already ns object\r\n/******/ \t// mode & 8|1: behave like require\r\n/******/ \t__webpack_require__.t = function(value, mode) {\r\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\r\n/******/ \t\tif(mode & 8) return value;\r\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\r\n/******/ \t\tvar ns = Object.create(null);\r\n/******/ \t\t__webpack_require__.r(ns);\r\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\r\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\r\n/******/ \t\treturn ns;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\r\n/******/ \t__webpack_require__.n = function(module) {\r\n/******/ \t\tvar getter = module && module.__esModule ?\r\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\r\n/******/ \t\t\tfunction getModuleExports() { return module; };\r\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\r\n/******/ \t\treturn getter;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// Object.prototype.hasOwnProperty.call\r\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\r\n/******/\r\n/******/ \t// __webpack_public_path__\r\n/******/ \t__webpack_require__.p = \"\";\r\n/******/\r\n/******/\r\n/******/ \t// Load entry module and return exports\r\n/******/ \treturn __webpack_require__(__webpack_require__.s = 6);\r\n/******/ })\r\n/************************************************************************/\r\n/******/ ([\r\n/* 0 */,\r\n/* 1 */,\r\n/* 2 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nmodule.exports = function (callback) {\r\n\r\n\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\r\n\t\t// Already ready or interactive, execute callback\r\n\t\tcallback.call();\r\n\t} else if (document.attachEvent) {\r\n\t\t// Old browsers\r\n\t\tdocument.attachEvent('onreadystatechange', function () {\r\n\t\t\tif (document.readyState === 'interactive') callback.call();\r\n\t\t});\r\n\t} else if (document.addEventListener) {\r\n\t\t// Modern browsers\r\n\t\tdocument.addEventListener('DOMContentLoaded', callback);\r\n\t}\r\n};\r\n\r\n/***/ }),\r\n/* 3 */,\r\n/* 4 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n/* WEBPACK VAR INJECTION */(function(global) {\r\n\r\nvar win;\r\n\r\nif (typeof window !== \"undefined\") {\r\n win = window;\r\n} else if (typeof global !== \"undefined\") {\r\n win = global;\r\n} else if (typeof self !== \"undefined\") {\r\n win = self;\r\n} else {\r\n win = {};\r\n}\r\n\r\nmodule.exports = win;\r\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)))\r\n\r\n/***/ }),\r\n/* 5 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = function () {\r\n\treturn this;\r\n}();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\r\n/***/ }),\r\n/* 6 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\nmodule.exports = __webpack_require__(7);\r\n\r\n\r\n/***/ }),\r\n/* 7 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nvar _videoWorker = __webpack_require__(8);\r\n\r\nvar _videoWorker2 = _interopRequireDefault(_videoWorker);\r\n\r\nvar _global = __webpack_require__(4);\r\n\r\nvar _global2 = _interopRequireDefault(_global);\r\n\r\nvar _liteReady = __webpack_require__(2);\r\n\r\nvar _liteReady2 = _interopRequireDefault(_liteReady);\r\n\r\nvar _jarallaxVideo = __webpack_require__(10);\r\n\r\nvar _jarallaxVideo2 = _interopRequireDefault(_jarallaxVideo);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\n// add video worker globally to fallback jarallax < 1.10 versions\r\n_global2.default.VideoWorker = _global2.default.VideoWorker || _videoWorker2.default;\r\n\r\n(0, _jarallaxVideo2.default)();\r\n\r\n// data-jarallax-video initialization\r\n(0, _liteReady2.default)(function () {\r\n if (typeof jarallax !== 'undefined') {\r\n jarallax(document.querySelectorAll('[data-jarallax-video]'));\r\n }\r\n});\r\n\r\n/***/ }),\r\n/* 8 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nmodule.exports = __webpack_require__(9);\r\n\r\n/***/ }),\r\n/* 9 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\n\r\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\r\n\r\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\n// Deferred\r\n// thanks http://stackoverflow.com/questions/18096715/implement-deferred-object-without-using-jquery\r\nfunction Deferred() {\r\n this._done = [];\r\n this._fail = [];\r\n}\r\nDeferred.prototype = {\r\n execute: function execute(list, args) {\r\n var i = list.length;\r\n args = Array.prototype.slice.call(args);\r\n while (i--) {\r\n list[i].apply(null, args);\r\n }\r\n },\r\n resolve: function resolve() {\r\n this.execute(this._done, arguments);\r\n },\r\n reject: function reject() {\r\n this.execute(this._fail, arguments);\r\n },\r\n done: function done(callback) {\r\n this._done.push(callback);\r\n },\r\n fail: function fail(callback) {\r\n this._fail.push(callback);\r\n }\r\n};\r\n\r\nvar ID = 0;\r\nvar YoutubeAPIadded = 0;\r\nvar VimeoAPIadded = 0;\r\nvar loadingYoutubePlayer = 0;\r\nvar loadingVimeoPlayer = 0;\r\nvar loadingYoutubeDefer = new Deferred();\r\nvar loadingVimeoDefer = new Deferred();\r\n\r\nvar VideoWorker = function () {\r\n function VideoWorker(url, options) {\r\n _classCallCheck(this, VideoWorker);\r\n\r\n var self = this;\r\n\r\n self.url = url;\r\n\r\n self.options_default = {\r\n autoplay: false,\r\n loop: false,\r\n mute: false,\r\n volume: 100,\r\n showContols: true,\r\n\r\n // start / end video time in seconds\r\n startTime: 0,\r\n endTime: 0\r\n };\r\n\r\n self.options = self.extend({}, self.options_default, options);\r\n\r\n // check URL\r\n self.videoID = self.parseURL(url);\r\n\r\n // init\r\n if (self.videoID) {\r\n self.ID = ID++;\r\n self.loadAPI();\r\n self.init();\r\n }\r\n }\r\n\r\n // Extend like jQuery.extend\r\n\r\n\r\n _createClass(VideoWorker, [{\r\n key: 'extend',\r\n value: function extend(out) {\r\n var _arguments = arguments;\r\n\r\n out = out || {};\r\n Object.keys(arguments).forEach(function (i) {\r\n if (!_arguments[i]) {\r\n return;\r\n }\r\n Object.keys(_arguments[i]).forEach(function (key) {\r\n out[key] = _arguments[i][key];\r\n });\r\n });\r\n return out;\r\n }\r\n }, {\r\n key: 'parseURL',\r\n value: function parseURL(url) {\r\n // parse youtube ID\r\n function getYoutubeID(ytUrl) {\r\n // eslint-disable-next-line no-useless-escape\r\n var regExp = /.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#\\&\\?]*).*/;\r\n var match = ytUrl.match(regExp);\r\n return match && match[1].length === 11 ? match[1] : false;\r\n }\r\n\r\n // parse vimeo ID\r\n function getVimeoID(vmUrl) {\r\n // eslint-disable-next-line no-useless-escape\r\n var regExp = /https?:\\/\\/(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^\\/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/;\r\n var match = vmUrl.match(regExp);\r\n return match && match[3] ? match[3] : false;\r\n }\r\n\r\n // parse local string\r\n function getLocalVideos(locUrl) {\r\n // eslint-disable-next-line no-useless-escape\r\n var videoFormats = locUrl.split(/,(?=mp4\\:|webm\\:|ogv\\:|ogg\\:)/);\r\n var result = {};\r\n var ready = 0;\r\n videoFormats.forEach(function (val) {\r\n // eslint-disable-next-line no-useless-escape\r\n var match = val.match(/^(mp4|webm|ogv|ogg)\\:(.*)/);\r\n if (match && match[1] && match[2]) {\r\n // eslint-disable-next-line prefer-destructuring\r\n result[match[1] === 'ogv' ? 'ogg' : match[1]] = match[2];\r\n ready = 1;\r\n }\r\n });\r\n return ready ? result : false;\r\n }\r\n\r\n var Youtube = getYoutubeID(url);\r\n var Vimeo = getVimeoID(url);\r\n var Local = getLocalVideos(url);\r\n\r\n if (Youtube) {\r\n this.type = 'youtube';\r\n return Youtube;\r\n } else if (Vimeo) {\r\n this.type = 'vimeo';\r\n return Vimeo;\r\n } else if (Local) {\r\n this.type = 'local';\r\n return Local;\r\n }\r\n\r\n return false;\r\n }\r\n }, {\r\n key: 'isValid',\r\n value: function isValid() {\r\n return !!this.videoID;\r\n }\r\n\r\n // events\r\n\r\n }, {\r\n key: 'on',\r\n value: function on(name, callback) {\r\n this.userEventsList = this.userEventsList || [];\r\n\r\n // add new callback in events list\r\n (this.userEventsList[name] || (this.userEventsList[name] = [])).push(callback);\r\n }\r\n }, {\r\n key: 'off',\r\n value: function off(name, callback) {\r\n var _this = this;\r\n\r\n if (!this.userEventsList || !this.userEventsList[name]) {\r\n return;\r\n }\r\n\r\n if (!callback) {\r\n delete this.userEventsList[name];\r\n } else {\r\n this.userEventsList[name].forEach(function (val, key) {\r\n if (val === callback) {\r\n _this.userEventsList[name][key] = false;\r\n }\r\n });\r\n }\r\n }\r\n }, {\r\n key: 'fire',\r\n value: function fire(name) {\r\n var _this2 = this;\r\n\r\n var args = [].slice.call(arguments, 1);\r\n if (this.userEventsList && typeof this.userEventsList[name] !== 'undefined') {\r\n this.userEventsList[name].forEach(function (val) {\r\n // call with all arguments\r\n if (val) {\r\n val.apply(_this2, args);\r\n }\r\n });\r\n }\r\n }\r\n }, {\r\n key: 'play',\r\n value: function play(start) {\r\n var self = this;\r\n if (!self.player) {\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube' && self.player.playVideo) {\r\n if (typeof start !== 'undefined') {\r\n self.player.seekTo(start || 0);\r\n }\r\n if (YT.PlayerState.PLAYING !== self.player.getPlayerState()) {\r\n self.player.playVideo();\r\n }\r\n }\r\n\r\n if (self.type === 'vimeo') {\r\n if (typeof start !== 'undefined') {\r\n self.player.setCurrentTime(start);\r\n }\r\n self.player.getPaused().then(function (paused) {\r\n if (paused) {\r\n self.player.play();\r\n }\r\n });\r\n }\r\n\r\n if (self.type === 'local') {\r\n if (typeof start !== 'undefined') {\r\n self.player.currentTime = start;\r\n }\r\n if (self.player.paused) {\r\n self.player.play();\r\n }\r\n }\r\n }\r\n }, {\r\n key: 'pause',\r\n value: function pause() {\r\n var self = this;\r\n if (!self.player) {\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube' && self.player.pauseVideo) {\r\n if (YT.PlayerState.PLAYING === self.player.getPlayerState()) {\r\n self.player.pauseVideo();\r\n }\r\n }\r\n\r\n if (self.type === 'vimeo') {\r\n self.player.getPaused().then(function (paused) {\r\n if (!paused) {\r\n self.player.pause();\r\n }\r\n });\r\n }\r\n\r\n if (self.type === 'local') {\r\n if (!self.player.paused) {\r\n self.player.pause();\r\n }\r\n }\r\n }\r\n }, {\r\n key: 'mute',\r\n value: function mute() {\r\n var self = this;\r\n if (!self.player) {\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube' && self.player.mute) {\r\n self.player.mute();\r\n }\r\n\r\n if (self.type === 'vimeo' && self.player.setVolume) {\r\n self.player.setVolume(0);\r\n }\r\n\r\n if (self.type === 'local') {\r\n self.$video.muted = true;\r\n }\r\n }\r\n }, {\r\n key: 'unmute',\r\n value: function unmute() {\r\n var self = this;\r\n if (!self.player) {\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube' && self.player.mute) {\r\n self.player.unMute();\r\n }\r\n\r\n if (self.type === 'vimeo' && self.player.setVolume) {\r\n self.player.setVolume(self.options.volume);\r\n }\r\n\r\n if (self.type === 'local') {\r\n self.$video.muted = false;\r\n }\r\n }\r\n }, {\r\n key: 'setVolume',\r\n value: function setVolume() {\r\n var volume = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\r\n\r\n var self = this;\r\n if (!self.player || !volume) {\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube' && self.player.setVolume) {\r\n self.player.setVolume(volume);\r\n }\r\n\r\n if (self.type === 'vimeo' && self.player.setVolume) {\r\n self.player.setVolume(volume);\r\n }\r\n\r\n if (self.type === 'local') {\r\n self.$video.volume = volume / 100;\r\n }\r\n }\r\n }, {\r\n key: 'getVolume',\r\n value: function getVolume(callback) {\r\n var self = this;\r\n if (!self.player) {\r\n callback(false);\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube' && self.player.getVolume) {\r\n callback(self.player.getVolume());\r\n }\r\n\r\n if (self.type === 'vimeo' && self.player.getVolume) {\r\n self.player.getVolume().then(function (volume) {\r\n callback(volume);\r\n });\r\n }\r\n\r\n if (self.type === 'local') {\r\n callback(self.$video.volume * 100);\r\n }\r\n }\r\n }, {\r\n key: 'getMuted',\r\n value: function getMuted(callback) {\r\n var self = this;\r\n if (!self.player) {\r\n callback(null);\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube' && self.player.isMuted) {\r\n callback(self.player.isMuted());\r\n }\r\n\r\n if (self.type === 'vimeo' && self.player.getVolume) {\r\n self.player.getVolume().then(function (volume) {\r\n callback(!!volume);\r\n });\r\n }\r\n\r\n if (self.type === 'local') {\r\n callback(self.$video.muted);\r\n }\r\n }\r\n }, {\r\n key: 'getImageURL',\r\n value: function getImageURL(callback) {\r\n var self = this;\r\n\r\n if (self.videoImage) {\r\n callback(self.videoImage);\r\n return;\r\n }\r\n\r\n if (self.type === 'youtube') {\r\n var availableSizes = ['maxresdefault', 'sddefault', 'hqdefault', '0'];\r\n var step = 0;\r\n\r\n var tempImg = new Image();\r\n tempImg.onload = function () {\r\n // if no thumbnail, youtube add their own image with width = 120px\r\n if ((this.naturalWidth || this.width) !== 120 || step === availableSizes.length - 1) {\r\n // ok\r\n self.videoImage = 'https://img.youtube.com/vi/' + self.videoID + '/' + availableSizes[step] + '.jpg';\r\n callback(self.videoImage);\r\n } else {\r\n // try another size\r\n step++;\r\n this.src = 'https://img.youtube.com/vi/' + self.videoID + '/' + availableSizes[step] + '.jpg';\r\n }\r\n };\r\n tempImg.src = 'https://img.youtube.com/vi/' + self.videoID + '/' + availableSizes[step] + '.jpg';\r\n }\r\n\r\n if (self.type === 'vimeo') {\r\n var request = new XMLHttpRequest();\r\n request.open('GET', 'https://vimeo.com/api/v2/video/' + self.videoID + '.json', true);\r\n request.onreadystatechange = function () {\r\n if (this.readyState === 4) {\r\n if (this.status >= 200 && this.status < 400) {\r\n // Success!\r\n var response = JSON.parse(this.responseText);\r\n self.videoImage = response[0].thumbnail_large;\r\n callback(self.videoImage);\r\n } else {\r\n // Error :(\r\n }\r\n }\r\n };\r\n request.send();\r\n request = null;\r\n }\r\n }\r\n\r\n // fallback to the old version.\r\n\r\n }, {\r\n key: 'getIframe',\r\n value: function getIframe(callback) {\r\n this.getVideo(callback);\r\n }\r\n }, {\r\n key: 'getVideo',\r\n value: function getVideo(callback) {\r\n var self = this;\r\n\r\n // return generated video block\r\n if (self.$video) {\r\n callback(self.$video);\r\n return;\r\n }\r\n\r\n // generate new video block\r\n self.onAPIready(function () {\r\n var hiddenDiv = void 0;\r\n if (!self.$video) {\r\n hiddenDiv = document.createElement('div');\r\n hiddenDiv.style.display = 'none';\r\n }\r\n\r\n // Youtube\r\n if (self.type === 'youtube') {\r\n self.playerOptions = {};\r\n self.playerOptions.videoId = self.videoID;\r\n self.playerOptions.playerVars = {\r\n autohide: 1,\r\n rel: 0,\r\n autoplay: 0,\r\n // autoplay enable on mobile devices\r\n playsinline: 1\r\n };\r\n\r\n // hide controls\r\n if (!self.options.showContols) {\r\n self.playerOptions.playerVars.iv_load_policy = 3;\r\n self.playerOptions.playerVars.modestbranding = 1;\r\n self.playerOptions.playerVars.controls = 0;\r\n self.playerOptions.playerVars.showinfo = 0;\r\n self.playerOptions.playerVars.disablekb = 1;\r\n }\r\n\r\n // events\r\n var ytStarted = void 0;\r\n var ytProgressInterval = void 0;\r\n self.playerOptions.events = {\r\n onReady: function onReady(e) {\r\n // mute\r\n if (self.options.mute) {\r\n e.target.mute();\r\n } else if (self.options.volume) {\r\n e.target.setVolume(self.options.volume);\r\n }\r\n\r\n // autoplay\r\n if (self.options.autoplay) {\r\n self.play(self.options.startTime);\r\n }\r\n self.fire('ready', e);\r\n\r\n // volumechange\r\n setInterval(function () {\r\n self.getVolume(function (volume) {\r\n if (self.options.volume !== volume) {\r\n self.options.volume = volume;\r\n self.fire('volumechange', e);\r\n }\r\n });\r\n }, 150);\r\n },\r\n onStateChange: function onStateChange(e) {\r\n // loop\r\n if (self.options.loop && e.data === YT.PlayerState.ENDED) {\r\n self.play(self.options.startTime);\r\n }\r\n if (!ytStarted && e.data === YT.PlayerState.PLAYING) {\r\n ytStarted = 1;\r\n self.fire('started', e);\r\n }\r\n if (e.data === YT.PlayerState.PLAYING) {\r\n self.fire('play', e);\r\n }\r\n if (e.data === YT.PlayerState.PAUSED) {\r\n self.fire('pause', e);\r\n }\r\n if (e.data === YT.PlayerState.ENDED) {\r\n self.fire('ended', e);\r\n }\r\n\r\n // progress check\r\n if (e.data === YT.PlayerState.PLAYING) {\r\n ytProgressInterval = setInterval(function () {\r\n self.fire('timeupdate', e);\r\n\r\n // check for end of video and play again or stop\r\n if (self.options.endTime && self.player.getCurrentTime() >= self.options.endTime) {\r\n if (self.options.loop) {\r\n self.play(self.options.startTime);\r\n } else {\r\n self.pause();\r\n }\r\n }\r\n }, 150);\r\n } else {\r\n clearInterval(ytProgressInterval);\r\n }\r\n }\r\n };\r\n\r\n var firstInit = !self.$video;\r\n if (firstInit) {\r\n var div = document.createElement('div');\r\n div.setAttribute('id', self.playerID);\r\n hiddenDiv.appendChild(div);\r\n document.body.appendChild(hiddenDiv);\r\n }\r\n self.player = self.player || new window.YT.Player(self.playerID, self.playerOptions);\r\n if (firstInit) {\r\n self.$video = document.getElementById(self.playerID);\r\n\r\n // get video width and height\r\n self.videoWidth = parseInt(self.$video.getAttribute('width'), 10) || 1280;\r\n self.videoHeight = parseInt(self.$video.getAttribute('height'), 10) || 720;\r\n }\r\n }\r\n\r\n // Vimeo\r\n if (self.type === 'vimeo') {\r\n self.playerOptions = '';\r\n\r\n self.playerOptions += 'player_id=' + self.playerID;\r\n self.playerOptions += '&autopause=0';\r\n self.playerOptions += '&transparent=0';\r\n\r\n // hide controls\r\n if (!self.options.showContols) {\r\n self.playerOptions += '&badge=0&byline=0&portrait=0&title=0';\r\n }\r\n\r\n // autoplay\r\n self.playerOptions += '&autoplay=' + (self.options.autoplay ? '1' : '0');\r\n\r\n // loop\r\n self.playerOptions += '&loop=' + (self.options.loop ? 1 : 0);\r\n\r\n if (!self.$video) {\r\n self.$video = document.createElement('iframe');\r\n self.$video.setAttribute('id', self.playerID);\r\n self.$video.setAttribute('src', 'https://player.vimeo.com/video/' + self.videoID + '?' + self.playerOptions);\r\n self.$video.setAttribute('frameborder', '0');\r\n hiddenDiv.appendChild(self.$video);\r\n document.body.appendChild(hiddenDiv);\r\n }\r\n\r\n self.player = self.player || new Vimeo.Player(self.$video);\r\n\r\n // get video width and height\r\n self.player.getVideoWidth().then(function (width) {\r\n self.videoWidth = width || 1280;\r\n });\r\n self.player.getVideoHeight().then(function (height) {\r\n self.videoHeight = height || 720;\r\n });\r\n\r\n // set current time for autoplay\r\n if (self.options.startTime && self.options.autoplay) {\r\n self.player.setCurrentTime(self.options.startTime);\r\n }\r\n\r\n // mute\r\n if (self.options.mute) {\r\n self.player.setVolume(0);\r\n } else if (self.options.volume) {\r\n self.player.setVolume(self.options.volume);\r\n }\r\n\r\n var vmStarted = void 0;\r\n self.player.on('timeupdate', function (e) {\r\n if (!vmStarted) {\r\n self.fire('started', e);\r\n vmStarted = 1;\r\n }\r\n\r\n self.fire('timeupdate', e);\r\n\r\n // check for end of video and play again or stop\r\n if (self.options.endTime) {\r\n if (self.options.endTime && e.seconds >= self.options.endTime) {\r\n if (self.options.loop) {\r\n self.play(self.options.startTime);\r\n } else {\r\n self.pause();\r\n }\r\n }\r\n }\r\n });\r\n self.player.on('play', function (e) {\r\n self.fire('play', e);\r\n\r\n // check for the start time and start with it\r\n if (self.options.startTime && e.seconds === 0) {\r\n self.play(self.options.startTime);\r\n }\r\n });\r\n self.player.on('pause', function (e) {\r\n self.fire('pause', e);\r\n });\r\n self.player.on('ended', function (e) {\r\n self.fire('ended', e);\r\n });\r\n self.player.on('loaded', function (e) {\r\n self.fire('ready', e);\r\n });\r\n self.player.on('volumechange', function (e) {\r\n self.fire('volumechange', e);\r\n });\r\n }\r\n\r\n // Local\r\n function addSourceToLocal(element, src, type) {\r\n var source = document.createElement('source');\r\n source.src = src;\r\n source.type = type;\r\n element.appendChild(source);\r\n }\r\n if (self.type === 'local') {\r\n if (!self.$video) {\r\n self.$video = document.createElement('video');\r\n\r\n // show controls\r\n if (self.options.showContols) {\r\n self.$video.controls = true;\r\n }\r\n\r\n // mute\r\n if (self.options.mute) {\r\n self.$video.muted = true;\r\n } else if (self.$video.volume) {\r\n self.$video.volume = self.options.volume / 100;\r\n }\r\n\r\n // loop\r\n if (self.options.loop) {\r\n self.$video.loop = true;\r\n }\r\n\r\n // autoplay enable on mobile devices\r\n self.$video.setAttribute('playsinline', '');\r\n self.$video.setAttribute('webkit-playsinline', '');\r\n\r\n self.$video.setAttribute('id', self.playerID);\r\n hiddenDiv.appendChild(self.$video);\r\n document.body.appendChild(hiddenDiv);\r\n\r\n Object.keys(self.videoID).forEach(function (key) {\r\n addSourceToLocal(self.$video, self.videoID[key], 'video/' + key);\r\n });\r\n }\r\n\r\n self.player = self.player || self.$video;\r\n\r\n var locStarted = void 0;\r\n self.player.addEventListener('playing', function (e) {\r\n if (!locStarted) {\r\n self.fire('started', e);\r\n }\r\n locStarted = 1;\r\n });\r\n self.player.addEventListener('timeupdate', function (e) {\r\n self.fire('timeupdate', e);\r\n\r\n // check for end of video and play again or stop\r\n if (self.options.endTime) {\r\n if (self.options.endTime && this.currentTime >= self.options.endTime) {\r\n if (self.options.loop) {\r\n self.play(self.options.startTime);\r\n } else {\r\n self.pause();\r\n }\r\n }\r\n }\r\n });\r\n self.player.addEventListener('play', function (e) {\r\n self.fire('play', e);\r\n });\r\n self.player.addEventListener('pause', function (e) {\r\n self.fire('pause', e);\r\n });\r\n self.player.addEventListener('ended', function (e) {\r\n self.fire('ended', e);\r\n });\r\n self.player.addEventListener('loadedmetadata', function () {\r\n // get video width and height\r\n self.videoWidth = this.videoWidth || 1280;\r\n self.videoHeight = this.videoHeight || 720;\r\n\r\n self.fire('ready');\r\n\r\n // autoplay\r\n if (self.options.autoplay) {\r\n self.play(self.options.startTime);\r\n }\r\n });\r\n self.player.addEventListener('volumechange', function (e) {\r\n self.getVolume(function (volume) {\r\n self.options.volume = volume;\r\n });\r\n self.fire('volumechange', e);\r\n });\r\n }\r\n\r\n callback(self.$video);\r\n });\r\n }\r\n }, {\r\n key: 'init',\r\n value: function init() {\r\n var self = this;\r\n\r\n self.playerID = 'VideoWorker-' + self.ID;\r\n }\r\n }, {\r\n key: 'loadAPI',\r\n value: function loadAPI() {\r\n var self = this;\r\n\r\n if (YoutubeAPIadded && VimeoAPIadded) {\r\n return;\r\n }\r\n\r\n var src = '';\r\n\r\n // load Youtube API\r\n if (self.type === 'youtube' && !YoutubeAPIadded) {\r\n YoutubeAPIadded = 1;\r\n src = 'https://www.youtube.com/iframe_api';\r\n }\r\n\r\n // load Vimeo API\r\n if (self.type === 'vimeo' && !VimeoAPIadded) {\r\n VimeoAPIadded = 1;\r\n src = 'https://player.vimeo.com/api/player.js';\r\n }\r\n\r\n if (!src) {\r\n return;\r\n }\r\n\r\n // add script in head section\r\n var tag = document.createElement('script');\r\n var head = document.getElementsByTagName('head')[0];\r\n tag.src = src;\r\n\r\n head.appendChild(tag);\r\n\r\n head = null;\r\n tag = null;\r\n }\r\n }, {\r\n key: 'onAPIready',\r\n value: function onAPIready(callback) {\r\n var self = this;\r\n\r\n // Youtube\r\n if (self.type === 'youtube') {\r\n // Listen for global YT player callback\r\n if ((typeof YT === 'undefined' || YT.loaded === 0) && !loadingYoutubePlayer) {\r\n // Prevents Ready event from being called twice\r\n loadingYoutubePlayer = 1;\r\n\r\n // Creates deferred so, other players know when to wait.\r\n window.onYouTubeIframeAPIReady = function () {\r\n window.onYouTubeIframeAPIReady = null;\r\n loadingYoutubeDefer.resolve('done');\r\n callback();\r\n };\r\n } else if ((typeof YT === 'undefined' ? 'undefined' : _typeof(YT)) === 'object' && YT.loaded === 1) {\r\n callback();\r\n } else {\r\n loadingYoutubeDefer.done(function () {\r\n callback();\r\n });\r\n }\r\n }\r\n\r\n // Vimeo\r\n if (self.type === 'vimeo') {\r\n if (typeof Vimeo === 'undefined' && !loadingVimeoPlayer) {\r\n loadingVimeoPlayer = 1;\r\n var vimeoInterval = setInterval(function () {\r\n if (typeof Vimeo !== 'undefined') {\r\n clearInterval(vimeoInterval);\r\n loadingVimeoDefer.resolve('done');\r\n callback();\r\n }\r\n }, 20);\r\n } else if (typeof Vimeo !== 'undefined') {\r\n callback();\r\n } else {\r\n loadingVimeoDefer.done(function () {\r\n callback();\r\n });\r\n }\r\n }\r\n\r\n // Local\r\n if (self.type === 'local') {\r\n callback();\r\n }\r\n }\r\n }]);\r\n\r\n return VideoWorker;\r\n}();\r\n\r\nexports.default = VideoWorker;\r\n\r\n/***/ }),\r\n/* 10 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n});\r\nexports.default = jarallaxVideo;\r\n\r\nvar _videoWorker = __webpack_require__(8);\r\n\r\nvar _videoWorker2 = _interopRequireDefault(_videoWorker);\r\n\r\nvar _global = __webpack_require__(4);\r\n\r\nvar _global2 = _interopRequireDefault(_global);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nfunction jarallaxVideo() {\r\n var jarallax = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _global2.default.jarallax;\r\n\r\n if (typeof jarallax === 'undefined') {\r\n return;\r\n }\r\n\r\n var Jarallax = jarallax.constructor;\r\n\r\n // append video after init Jarallax\r\n var defInit = Jarallax.prototype.init;\r\n Jarallax.prototype.init = function () {\r\n var self = this;\r\n\r\n defInit.apply(self);\r\n\r\n if (self.video && !self.options.disableVideo()) {\r\n self.video.getVideo(function (video) {\r\n var $parent = video.parentNode;\r\n self.css(video, {\r\n position: self.image.position,\r\n top: '0px',\r\n left: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n width: '100%',\r\n height: '100%',\r\n maxWidth: 'none',\r\n maxHeight: 'none',\r\n margin: 0,\r\n zIndex: -1\r\n });\r\n self.$video = video;\r\n self.image.$container.appendChild(video);\r\n\r\n // remove parent video element (created by VideoWorker)\r\n $parent.parentNode.removeChild($parent);\r\n });\r\n }\r\n };\r\n\r\n // cover video\r\n var defCoverImage = Jarallax.prototype.coverImage;\r\n Jarallax.prototype.coverImage = function () {\r\n var self = this;\r\n var imageData = defCoverImage.apply(self);\r\n var node = self.image.$item ? self.image.$item.nodeName : false;\r\n\r\n if (imageData && self.video && node && (node === 'IFRAME' || node === 'VIDEO')) {\r\n var h = imageData.image.height;\r\n var w = h * self.image.width / self.image.height;\r\n var ml = (imageData.container.width - w) / 2;\r\n var mt = imageData.image.marginTop;\r\n\r\n if (imageData.container.width > w) {\r\n w = imageData.container.width;\r\n h = w * self.image.height / self.image.width;\r\n ml = 0;\r\n mt += (imageData.image.height - h) / 2;\r\n }\r\n\r\n // add video height over than need to hide controls\r\n if (node === 'IFRAME') {\r\n h += 400;\r\n mt -= 200;\r\n }\r\n\r\n self.css(self.$video, {\r\n width: w + 'px',\r\n marginLeft: ml + 'px',\r\n height: h + 'px',\r\n marginTop: mt + 'px'\r\n });\r\n }\r\n\r\n return imageData;\r\n };\r\n\r\n // init video\r\n var defInitImg = Jarallax.prototype.initImg;\r\n Jarallax.prototype.initImg = function () {\r\n var self = this;\r\n var defaultResult = defInitImg.apply(self);\r\n\r\n if (!self.options.videoSrc) {\r\n self.options.videoSrc = self.$item.getAttribute('data-jarallax-video') || null;\r\n }\r\n\r\n if (self.options.videoSrc) {\r\n self.defaultInitImgResult = defaultResult;\r\n return true;\r\n }\r\n\r\n return defaultResult;\r\n };\r\n\r\n var defCanInitParallax = Jarallax.prototype.canInitParallax;\r\n Jarallax.prototype.canInitParallax = function () {\r\n var self = this;\r\n var defaultResult = defCanInitParallax.apply(self);\r\n\r\n if (!self.options.videoSrc) {\r\n return defaultResult;\r\n }\r\n\r\n var video = new _videoWorker2.default(self.options.videoSrc, {\r\n autoplay: true,\r\n loop: true,\r\n showContols: false,\r\n startTime: self.options.videoStartTime || 0,\r\n endTime: self.options.videoEndTime || 0,\r\n mute: self.options.videoVolume ? 0 : 1,\r\n volume: self.options.videoVolume || 0\r\n });\r\n\r\n if (video.isValid()) {\r\n // if parallax will not be inited, we can add thumbnail on background.\r\n if (!defaultResult) {\r\n if (!self.defaultInitImgResult) {\r\n video.getImageURL(function (url) {\r\n // save default user styles\r\n var curStyle = self.$item.getAttribute('style');\r\n if (curStyle) {\r\n self.$item.setAttribute('data-jarallax-original-styles', curStyle);\r\n }\r\n\r\n // set new background\r\n self.css(self.$item, {\r\n 'background-image': 'url(\"' + url + '\")',\r\n 'background-position': 'center',\r\n 'background-size': 'cover'\r\n });\r\n });\r\n }\r\n\r\n // init video\r\n } else {\r\n video.on('ready', function () {\r\n if (self.options.videoPlayOnlyVisible) {\r\n var oldOnScroll = self.onScroll;\r\n self.onScroll = function () {\r\n oldOnScroll.apply(self);\r\n if (self.isVisible()) {\r\n video.play();\r\n } else {\r\n video.pause();\r\n }\r\n };\r\n } else {\r\n video.play();\r\n }\r\n });\r\n\r\n video.on('started', function () {\r\n self.image.$default_item = self.image.$item;\r\n self.image.$item = self.$video;\r\n\r\n // set video width and height\r\n self.image.width = self.video.videoWidth || 1280;\r\n self.image.height = self.video.videoHeight || 720;\r\n self.options.imgWidth = self.image.width;\r\n self.options.imgHeight = self.image.height;\r\n self.coverImage();\r\n self.clipContainer();\r\n self.onScroll();\r\n\r\n // hide image\r\n if (self.image.$default_item) {\r\n self.image.$default_item.style.display = 'none';\r\n }\r\n });\r\n\r\n self.video = video;\r\n\r\n // set image if not exists\r\n if (!self.defaultInitImgResult) {\r\n if (video.type !== 'local') {\r\n video.getImageURL(function (url) {\r\n self.image.src = url;\r\n self.init();\r\n });\r\n\r\n return false;\r\n }\r\n\r\n // set empty image on local video if not defined\r\n self.image.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return defaultResult;\r\n };\r\n\r\n // Destroy video parallax\r\n var defDestroy = Jarallax.prototype.destroy;\r\n Jarallax.prototype.destroy = function () {\r\n var self = this;\r\n\r\n if (self.image.$default_item) {\r\n self.image.$item = self.image.$default_item;\r\n delete self.image.$default_item;\r\n }\r\n\r\n defDestroy.apply(self);\r\n };\r\n}\r\n\r\n/***/ })\r\n/******/ ]);","/*! npm.im/object-fit-images 3.2.4 */\r\nvar objectFitImages = (function () {\r\n'use strict';\r\n\r\nvar OFI = 'bfred-it:object-fit-images';\r\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\r\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\r\nvar supportsObjectFit = 'object-fit' in testImg.style;\r\nvar supportsObjectPosition = 'object-position' in testImg.style;\r\nvar supportsOFI = 'background-size' in testImg.style;\r\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\r\nvar nativeGetAttribute = testImg.getAttribute;\r\nvar nativeSetAttribute = testImg.setAttribute;\r\nvar autoModeEnabled = false;\r\n\r\nfunction createPlaceholder(w, h) {\r\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\r\n}\r\n\r\nfunction polyfillCurrentSrc(el) {\r\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\r\n\t\tvar pf = window.picturefill._;\r\n\t\t// parse srcset with picturefill where currentSrc isn't available\r\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\r\n\t\t\t// force synchronous srcset parsing\r\n\t\t\tpf.fillImg(el, {reselect: true});\r\n\t\t}\r\n\r\n\t\tif (!el[pf.ns].curSrc) {\r\n\t\t\t// force picturefill to parse srcset\r\n\t\t\tel[pf.ns].supported = false;\r\n\t\t\tpf.fillImg(el, {reselect: true});\r\n\t\t}\r\n\r\n\t\t// retrieve parsed currentSrc, if any\r\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\r\n\t}\r\n}\r\n\r\nfunction getStyle(el) {\r\n\tvar style = getComputedStyle(el).fontFamily;\r\n\tvar parsed;\r\n\tvar props = {};\r\n\twhile ((parsed = propRegex.exec(style)) !== null) {\r\n\t\tprops[parsed[1]] = parsed[2];\r\n\t}\r\n\treturn props;\r\n}\r\n\r\nfunction setPlaceholder(img, width, height) {\r\n\t// Default: fill width, no height\r\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\r\n\r\n\t// Only set placeholder if it's different\r\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\r\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\r\n\t}\r\n}\r\n\r\nfunction onImageReady(img, callback) {\r\n\t// naturalWidth is only available when the image headers are loaded,\r\n\t// this loop will poll it every 100ms.\r\n\tif (img.naturalWidth) {\r\n\t\tcallback(img);\r\n\t} else {\r\n\t\tsetTimeout(onImageReady, 100, img, callback);\r\n\t}\r\n}\r\n\r\nfunction fixOne(el) {\r\n\tvar style = getStyle(el);\r\n\tvar ofi = el[OFI];\r\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\r\n\r\n\t// Avoid running where unnecessary, unless OFI had already done its deed\r\n\tif (!ofi.img) {\r\n\t\t// fill is the default behavior so no action is necessary\r\n\t\tif (style['object-fit'] === 'fill') {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\r\n\t\tif (\r\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\r\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\r\n\t\t\t!style['object-position'] // unless object-position is used\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// keep a clone in memory while resetting the original to a blank\r\n\tif (!ofi.img) {\r\n\t\tofi.img = new Image(el.width, el.height);\r\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\r\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\r\n\r\n\t\t// preserve for any future cloneNode calls\r\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\r\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\r\n\t\tif (el.srcset) {\r\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\r\n\t\t}\r\n\r\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\r\n\r\n\t\t// remove srcset because it overrides src\r\n\t\tif (el.srcset) {\r\n\t\t\tel.srcset = '';\r\n\t\t}\r\n\t\ttry {\r\n\t\t\tkeepSrcUsable(el);\r\n\t\t} catch (err) {\r\n\t\t\tif (window.console) {\r\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpolyfillCurrentSrc(ofi.img);\r\n\r\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\r\n\tel.style.backgroundPosition = style['object-position'] || 'center';\r\n\tel.style.backgroundRepeat = 'no-repeat';\r\n\tel.style.backgroundOrigin = 'content-box';\r\n\r\n\tif (/scale-down/.test(style['object-fit'])) {\r\n\t\tonImageReady(ofi.img, function () {\r\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\r\n\t\t\t\tel.style.backgroundSize = 'contain';\r\n\t\t\t} else {\r\n\t\t\t\tel.style.backgroundSize = 'auto';\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\r\n\t}\r\n\r\n\tonImageReady(ofi.img, function (img) {\r\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\r\n\t});\r\n}\r\n\r\nfunction keepSrcUsable(el) {\r\n\tvar descriptors = {\r\n\t\tget: function get(prop) {\r\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\r\n\t\t},\r\n\t\tset: function set(value, prop) {\r\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\r\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\r\n\t\t\tfixOne(el);\r\n\t\t\treturn value;\r\n\t\t}\r\n\t};\r\n\tObject.defineProperty(el, 'src', descriptors);\r\n\tObject.defineProperty(el, 'currentSrc', {\r\n\t\tget: function () { return descriptors.get('currentSrc'); }\r\n\t});\r\n\tObject.defineProperty(el, 'srcset', {\r\n\t\tget: function () { return descriptors.get('srcset'); },\r\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\r\n\t});\r\n}\r\n\r\nfunction hijackAttributes() {\r\n\tfunction getOfiImageMaybe(el, name) {\r\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\r\n\t}\r\n\tif (!supportsObjectPosition) {\r\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\r\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\r\n\t\t};\r\n\r\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\r\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\r\n\t\t};\r\n\t}\r\n}\r\n\r\nfunction fix(imgs, opts) {\r\n\tvar startAutoMode = !autoModeEnabled && !imgs;\r\n\topts = opts || {};\r\n\timgs = imgs || 'img';\r\n\r\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// use imgs as a selector or just select all images\r\n\tif (imgs === 'img') {\r\n\t\timgs = document.getElementsByTagName('img');\r\n\t} else if (typeof imgs === 'string') {\r\n\t\timgs = document.querySelectorAll(imgs);\r\n\t} else if (!('length' in imgs)) {\r\n\t\timgs = [imgs];\r\n\t}\r\n\r\n\t// apply fix to all\r\n\tfor (var i = 0; i < imgs.length; i++) {\r\n\t\timgs[i][OFI] = imgs[i][OFI] || {\r\n\t\t\tskipTest: opts.skipTest\r\n\t\t};\r\n\t\tfixOne(imgs[i]);\r\n\t}\r\n\r\n\tif (startAutoMode) {\r\n\t\tdocument.body.addEventListener('load', function (e) {\r\n\t\t\tif (e.target.tagName === 'IMG') {\r\n\t\t\t\tfix(e.target, {\r\n\t\t\t\t\tskipTest: opts.skipTest\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}, true);\r\n\t\tautoModeEnabled = true;\r\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\r\n\t}\r\n\r\n\t// if requested, watch media queries for object-fit change\r\n\tif (opts.watchMQ) {\r\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\r\n\t\t\tskipTest: opts.skipTest\r\n\t\t}));\r\n\t}\r\n}\r\n\r\nfix.supportsObjectFit = supportsObjectFit;\r\nfix.supportsObjectPosition = supportsObjectPosition;\r\n\r\nhijackAttributes();\r\n\r\nreturn fix;\r\n\r\n}());\r\n","/*!\r\n * ClockPicker v0.0.7 (http://weareoutman.github.io/clockpicker/)\r\n * Copyright 2014 Wang Shenwei.\r\n * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/gh-pages/LICENSE)\r\n *\r\n * Further modified\r\n * Copyright 2015 Ching Yaw Hao.\r\n */\r\n\r\n;(function(){\r\n\tvar $ = window.jQuery,\r\n\t\t\t$win = $(window),\r\n\t\t\t$doc = $(document);\r\n\r\n\t// Can I use inline svg ?\r\n\tvar svgNS = 'http://www.w3.org/2000/svg',\r\n\t\t svgSupported = 'SVGAngle' in window && (function() {\r\n\t\t\t var supported,\r\n\t\t\t\tel = document.createElement('div');\r\n\t\t\t\tel.innerHTML = '';\r\n\t\t\t\tsupported = (el.firstChild && el.firstChild.namespaceURI) == svgNS;\r\n\t\t\t\tel.innerHTML = '';\r\n\t\t\t\treturn supported;\r\n\t\t\t})();\r\n\r\n\t// Can I use transition ?\r\n\tvar transitionSupported = (function() {\r\n\t\tvar style = document.createElement('div').style;\r\n\t\treturn 'transition' in style ||\r\n\t\t\t\t\t 'WebkitTransition' in style ||\r\n\t\t\t\t 'MozTransition' in style ||\r\n\t\t\t\t\t 'msTransition' in style ||\r\n\t\t\t\t\t 'OTransition' in style;\r\n\t})();\r\n\r\n\t// Listen touch events in touch screen device, instead of mouse events in desktop.\r\n\tvar touchSupported = 'ontouchstart' in window,\r\n\t\t\tmousedownEvent = 'mousedown' + ( touchSupported ? ' touchstart' : ''),\r\n\t\t\tmousemoveEvent = 'mousemove.clockpicker' + ( touchSupported ? ' touchmove.clockpicker' : ''),\r\n\t\t\tmouseupEvent = 'mouseup.clockpicker' + ( touchSupported ? ' touchend.clockpicker' : '');\r\n\r\n\t// Vibrate the device if supported\r\n\tvar vibrate = navigator.vibrate ? 'vibrate' : navigator.webkitVibrate ? 'webkitVibrate' : null;\r\n\r\n\tfunction createSvgElement(name) {\r\n\t\treturn document.createElementNS(svgNS, name);\r\n\t}\r\n\r\n function debounce(func, wait, immediate) {\r\n var timeout;\r\n return function() {\r\n var context = this, args = arguments;\r\n var later = function() {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n}\r\n\r\n\tfunction leadingZero(num) {\r\n\t\treturn (num < 10 ? '0' : '') + num;\r\n\t}\r\n\r\n\t// Get a unique id\r\n\tvar idCounter = 0;\r\n\tfunction uniqueId(prefix) {\r\n\t\tvar id = ++idCounter + '';\r\n\t\treturn prefix ? prefix + id : id;\r\n\t}\r\n\r\n\t// Clock size\r\n\tvar dialRadius = 135,\r\n\t\t\touterRadius = 110,\r\n\t\t\t// innerRadius = 80 on 12 hour clock\r\n\t\t\tinnerRadius = 80,\r\n\t\t\ttickRadius = 20,\r\n\t\t\tdiameter = dialRadius * 2,\r\n\t\t\tduration = transitionSupported ? 350 : 1;\r\n\r\n\t// Popover template\r\n\tvar tpl = [\r\n\t\t'
      ',\r\n\t\t\t'
      ',\r\n\t\t\t\t'
      ',\r\n\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t\t'',\r\n\t\t\t\t\t\t\t\t\t\t':',\r\n\t\t\t\t\t\t\t\t\t\t'',\r\n\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t\t'
      ',\r\n\t\t\t\t\t'
      ',\r\n\t\t\t\t'
      ',\r\n\t\t\t'
      ',\r\n\t\t'
      '\r\n\t].join('');\r\n\r\n\t// ClockPicker\r\n\tfunction ClockPicker(element, options) {\r\n\t\tvar popover = $(tpl),\r\n\t\t\t\tplate = popover.find('.clockpicker-plate'),\r\n\t\t\t\tholder = popover.find('.picker__holder'),\r\n\t\t\t\thoursView = popover.find('.clockpicker-hours'),\r\n\t\t\t\tminutesView = popover.find('.clockpicker-minutes'),\r\n\t\t\t\tamPmBlock = popover.find('.clockpicker-am-pm-block'),\r\n\t\t\t\tisInput = element.prop('tagName') === 'INPUT',\r\n input = isInput ? element : element.find('input'),\r\n isHTML5 = input.prop('type') === 'time',\r\n\t\t\t\tlabel = $(\"label[for=\" + input.attr(\"id\") + \"]\"),\r\n\t\t\t\tself = this,\r\n\t\t\t\ttimer;\r\n\r\n\t\tthis.id = uniqueId('cp');\r\n\t\tthis.element = element;\r\n\t\tthis.holder = holder;\r\n\t\tthis.options = options;\r\n\t\tthis.isAppended = false;\r\n\t\tthis.isShown = false;\r\n\t\tthis.currentView = 'hours';\r\n\t\tthis.isInput = isInput;\r\n\t\tthis.input = input;\r\n\t\tthis.label = label;\r\n\t\tthis.popover = popover;\r\n\t\tthis.plate = plate;\r\n\t\tthis.hoursView = hoursView;\r\n\t\tthis.minutesView = minutesView;\r\n\t\tthis.amPmBlock = amPmBlock;\r\n\t\tthis.spanHours = popover.find('.clockpicker-span-hours');\r\n\t\tthis.spanMinutes = popover.find('.clockpicker-span-minutes');\r\n\t\tthis.spanAmPm = popover.find('.clockpicker-span-am-pm');\r\n\t\tthis.footer = popover.find('.picker__footer');\r\n\t\tthis.amOrPm = \"\";\r\n\t\tthis.isTwelvehour = options.twelvehour;\r\n\t\tthis.minTime = 0;\r\n this.maxTime = 0;\r\n this.minMinutes = 0;\r\n this.maxMinutes = 59;\r\n this.minHours = 0;\r\n this.maxHours = 23;\r\n this.isInvalidTimeScope = false;\r\n\r\n const parseTimeOptions = (scope) => {\r\n const time = scope + 'Time';\r\n this[time] = options[scope].split(':');\r\n \r\n // user can set using am/pm. Convert 12h clock settings to 24h clock settings \r\n if (this[time][1].length === 4) {\r\n const period = this[time][1].replace(/\\d+/g, '').toUpperCase();\r\n this[time][1] = this[time][1].replace(/\\D+/g, '');\r\n if (period === 'PM') \r\n this[time][0] = parseInt(this[time][0]) + 12\r\n }\r\n \r\n if (this[time].length !== 2)\r\n this[time] = null;\r\n else {\r\n for (let i = 0; i < this[time].length; i++) {\r\n this[time][i] = +this[time][i];\r\n }\r\n }\r\n }\r\n\r\n // Parse minTime Option\r\n if (options.min) {\r\n parseTimeOptions('min');\r\n this.minMinutes = this.minTime[1];\r\n this.minHours = this.minTime[0];\r\n }\r\n\r\n // Parse maxTime Option\r\n if (options.max) {\r\n parseTimeOptions('max');\r\n\r\n // Ensure that max is after min, if not remove the max it's invalid\r\n if ((this.minHours > this.maxHours) || (this.minHours === this.maxHours && this.minMinutes >= this.maxMinutes)) {\r\n this.maxTime = 0;\r\n } else {\r\n this.maxMinutes = this.maxTime[1];\r\n this.maxHours = this.maxTime[0];\r\n }\r\n }\r\n\r\n\t\t// Setup for for 12 hour clock if option is selected\r\n\t\tif (options.twelvehour) {\r\n\t\t\tvar amPmButtonsTemplate = [\r\n\t\t\t\t'
      ',\r\n\t\t\t\t\t'',\r\n\t\t\t\t\t'',\r\n\t\t\t\t'
      '\r\n\t\t\t].join('');\r\n\r\n\t\t\tvar amPmButtons = $(amPmButtonsTemplate);\r\n \r\n const togglePeriod = (period) => {\r\n let previsiousPeriod = 'pm';\r\n\r\n if (period === 'PM')\r\n previsiousPeriod = 'am';\r\n \r\n self.amOrPm = period;\r\n self.amPmBlock.children(`.${previsiousPeriod}-button`).removeClass('active');\r\n self.amPmBlock.children(`.${period.toLowerCase()}-button`).addClass('active');\r\n self.spanAmPm.empty().append(period);\r\n\r\n this.disableOutOfRangeElements();\r\n\t\t\t}\r\n\r\n\t\t\tif (!options.ampmclickable) {\r\n\t\t\t\t$('').on(\"click\", function() {\r\n togglePeriod('AM');\r\n\t\t\t\t}).appendTo(this.amPmBlock);\r\n\t\t\t\t$('').on(\"click\", function() {\r\n togglePeriod('PM');\r\n\t\t\t\t}).appendTo(this.amPmBlock);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.spanAmPm.empty();\r\n\t\t\t\t$('
      AM
      ').on(\"click\", function() {\r\n\t\t\t\t\tself.spanAmPm.children('#click-am').addClass(\"text-primary\");\r\n\t\t\t\t\tself.spanAmPm.children('#click-pm').removeClass(\"text-primary\");\r\n\t\t\t\t\tself.amOrPm = \"AM\";\r\n\t\t\t\t}).appendTo(this.spanAmPm);\r\n\t\t\t\t$('
      PM
      ').on(\"click\", function() {\r\n\t\t\t\t\tself.spanAmPm.children('#click-pm').addClass(\"text-primary\");\r\n\t\t\t\t\tself.spanAmPm.children('#click-am').removeClass(\"text-primary\");\r\n\t\t\t\t\tself.amOrPm = 'PM';\r\n\t\t\t\t}).appendTo(this.spanAmPm);\r\n }\r\n }\r\n \r\n\r\n\t\tif(options.darktheme)\r\n\t\t\tpopover.addClass('darktheme');\r\n\r\n\t\t\t// If autoclose is not setted, append a button\r\n\t\t$('').click($.proxy(this.done, this)).appendTo(this.footer);\r\n\r\n\t\t$('').click($.proxy(this.clearInput, this)).appendTo(this.footer);\r\n\t\tthis.spanHours.click($.proxy(this.toggleView, this, 'hours'));\r\n\t\tthis.spanMinutes.click($.proxy(this.toggleView, this, 'minutes'));\r\n\r\n\t\t// Show or toggle\r\n\t\tinput.on('click.clockpicker', debounce( $.proxy(this.show, this), 100));\r\n\r\n\t\t// Build ticks\r\n\t\tvar tickTpl = $('
      '),\r\n\t\t\t\ti, tick, radian, radius;\r\n\r\n\t\t// Hours view\r\n if (options.twelvehour) {\r\n for (i = 0; i < 12; i += options.hourstep) {\r\n tick = tickTpl.clone();\r\n radian = i / 6 * Math.PI;\r\n radius = outerRadius;\r\n tick.css('font-size', '140%');\r\n tick.css({\r\n left: dialRadius + Math.sin(radian) * radius - tickRadius,\r\n top: dialRadius - Math.cos(radian) * radius - tickRadius\r\n });\r\n tick.html(i === 0 ? 12 : i);\r\n hoursView.append(tick);\r\n tick.on(mousedownEvent, mousedown);\r\n this.disableOutOfRangeElements();\r\n }\r\n\t\t} else {\r\n for (i = 0; i < 24; i += options.hourstep) {\r\n tick = tickTpl.clone();\r\n radian = i / 6 * Math.PI;\r\n var inner = i > 0 && i < 13;\r\n radius = inner ? innerRadius : outerRadius;\r\n tick.css({\r\n left: dialRadius + Math.sin(radian) * radius - tickRadius,\r\n top: dialRadius - Math.cos(radian) * radius - tickRadius\r\n });\r\n if (inner) {\r\n tick.css('font-size', '120%');\r\n }\r\n tick.html(i === 0 ? '00' : i);\r\n hoursView.append(tick);\r\n tick.on(mousedownEvent, mousedown);\r\n this.disableOutOfRangeElements();\r\n }\r\n\t\t}\r\n\r\n // Minutes view\r\n var incrementValue = Math.max(options.minutestep, 5);\r\n for (i = 0; i < 60; i += incrementValue) {\r\n for (i = 0; i < 60; i += 5) {\r\n tick = tickTpl.clone();\r\n radian = i / 30 * Math.PI;\r\n tick.css({\r\n left: dialRadius + Math.sin(radian) * outerRadius - tickRadius,\r\n top: dialRadius - Math.cos(radian) * outerRadius - tickRadius\r\n });\r\n tick.css('font-size', '140%');\r\n tick.html(leadingZero(i));\r\n minutesView.append(tick);\r\n tick.on(mousedownEvent, mousedown);\r\n }\r\n }\r\n\t\t\r\n\t\t// Clicking on minutes view space\r\n\t\tplate.on(mousedownEvent, function(e) {\r\n\t\t\tif ($(e.target).closest('.clockpicker-tick').length === 0)\r\n\t\t\t\tmousedown(e, true);\r\n\t\t});\r\n\r\n\t\t// Mousedown or touchstart\r\n\t\tfunction mousedown(e, space) {\r\n\t\t\tvar offset = plate.offset(),\r\n\t\t\t\t\tisTouch = /^touch/.test(e.type),\r\n\t\t\t\t\tx0 = offset.left + dialRadius,\r\n\t\t\t\t\ty0 = offset.top + dialRadius,\r\n\t\t\t\t\tdx = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0,\r\n\t\t\t\t\tdy = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0,\r\n\t\t\t\t\tz = Math.sqrt(dx * dx + dy * dy),\r\n\t\t\t\t\tmoved = false;\r\n\r\n\t\t\t// When clicking on minutes view space, check the mouse position\r\n\t\t\tif (space && (z < outerRadius - tickRadius || z > outerRadius + tickRadius))\r\n\t\t\t\treturn;\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\t// Set cursor style of body after 200ms\r\n\t\t\tvar movingTimer = setTimeout(function(){\r\n\t\t\t\tself.popover.addClass('clockpicker-moving');\r\n\t\t\t}, 200);\r\n\r\n\t\t\t// Place the canvas to top\r\n\t\t\tif (svgSupported)\r\n\t\t\t\tplate.append(self.canvas);\r\n\r\n\t\t\t// Clock\r\n\t\t\tself.setHand(dx, dy, !space, true);\r\n\r\n\t\t\t// Mousemove on document\r\n\t\t\t$doc.off(mousemoveEvent).on(mousemoveEvent, function(e){\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvar isTouch = /^touch/.test(e.type),\r\n\t\t\t\t\t\tx = (isTouch ? e.originalEvent.touches[0] : e).pageX - x0,\r\n\t\t\t\t\t\ty = (isTouch ? e.originalEvent.touches[0] : e).pageY - y0;\r\n\t\t\t\tif (! moved && x === dx && y === dy)\r\n\t\t\t\t\t// Clicking in chrome on windows will trigger a mousemove event\r\n\t\t\t\t\treturn;\r\n\t\t\t\tmoved = true;\r\n\t\t\t\tself.setHand(x, y, false, true);\r\n\t\t\t});\r\n\r\n\t\t\t// Mouseup on document\r\n\t\t\t$doc.off(mouseupEvent).on(mouseupEvent, function(e) {\r\n\t\t\t\t$doc.off(mouseupEvent);\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvar isTouch = /^touch/.test(e.type),\r\n\t\t\t\t\t\tx = (isTouch ? e.originalEvent.changedTouches[0] : e).pageX - x0,\r\n\t\t\t\t\t\ty = (isTouch ? e.originalEvent.changedTouches[0] : e).pageY - y0;\r\n\t\t\t\tif ((space || moved) && x === dx && y === dy)\r\n self.setHand(x, y);\r\n \r\n let {hours, minutes, amOrPm, maxHours, minHours, maxMinutes, minMinutes} = self;\r\n \r\n if (amOrPm === 'PM') {\r\n if (minHours < 12)\r\n minHours = 0;\r\n if (minHours > 12)\r\n minHours -= 12;\r\n if (maxHours > 12)\r\n maxHours -= 12; \r\n }\r\n\r\n // dont toggleView if selected time out of scope\r\n if (self.isInvalidTimeScope) {\r\n self.isInvalidTimeScope = false;\r\n e.stopPropagation();\r\n }\r\n else if (self.currentView === 'hours')\r\n self.toggleView('minutes', duration / 2);\r\n else if (self.currentView != 'hours' && options.autoclose) {\r\n self.minutesView.addClass('clockpicker-dial-out');\r\n setTimeout(function(){\r\n self.done();\r\n }, duration / 2);\r\n self.currentHours = 0\r\n } \r\n\r\n\t\t\t\tplate.prepend(canvas);\r\n\r\n\t\t\t\t// Reset cursor style of body\r\n\t\t\t\tclearTimeout(movingTimer);\r\n\t\t\t\tself.popover.removeClass('clockpicker-moving');\r\n\r\n\t\t\t\t// Unbind mousemove event\r\n\t\t\t\t$doc.off(mousemoveEvent);\r\n });\r\n self.disableOutOfRangeElements();\r\n\t\t}\r\n\r\n\t\tif (svgSupported) {\r\n\t\t\t// Draw clock hands and others\r\n\t\t\tvar canvas = popover.find('.clockpicker-canvas'),\r\n\t\t\t\t\tsvg = createSvgElement('svg');\r\n\t\t\tsvg.setAttribute('class', 'clockpicker-svg');\r\n\t\t\tsvg.setAttribute('width', diameter);\r\n\t\t\tsvg.setAttribute('height', diameter);\r\n\t\t\tvar g = createSvgElement('g');\r\n\t\t\tg.setAttribute('transform', 'translate(' + dialRadius + ',' + dialRadius + ')');\r\n\t\t\tvar bearing = createSvgElement('circle');\r\n\t\t\tbearing.setAttribute('class', 'clockpicker-canvas-bearing');\r\n\t\t\tbearing.setAttribute('cx', 0);\r\n\t\t\tbearing.setAttribute('cy', 0);\r\n\t\t\tbearing.setAttribute('r', 2);\r\n\t\t\tvar hand = createSvgElement('line');\r\n\t\t\thand.setAttribute('x1', 0);\r\n hand.setAttribute('y1', 0);\r\n\t\t\tvar bg = createSvgElement('circle');\r\n\t\t\tbg.setAttribute('class', 'clockpicker-canvas-bg');\r\n\t\t\tbg.setAttribute('r', tickRadius);\r\n\t\t\tvar fg = createSvgElement('circle');\r\n\t\t\tfg.setAttribute('class', 'clockpicker-canvas-fg');\r\n\t\t\tfg.setAttribute('r', 5);\r\n\t\t\tg.appendChild(hand);\r\n\t\t\tg.appendChild(bg);\r\n\t\t\tg.appendChild(fg);\r\n\t\t\tg.appendChild(bearing);\r\n\t\t\tsvg.appendChild(g);\r\n\t\t\tcanvas.append(svg);\r\n\r\n\t\t\tthis.hand = hand;\r\n\t\t\tthis.bg = bg;\r\n\t\t\tthis.fg = fg;\r\n\t\t\tthis.bearing = bearing;\r\n\t\t\tthis.g = g;\r\n\t\t\tthis.canvas = canvas;\r\n\t\t}\r\n\r\n\t\traiseCallback(this.options.init);\r\n\t}\r\n\r\n\tfunction raiseCallback(callbackFunction) {\r\n\t\tif(callbackFunction && typeof callbackFunction === \"function\")\r\n\t\t\tcallbackFunction();\r\n\t}\r\n\r\n\t// Default options\r\n\tClockPicker.DEFAULTS = {\r\n\t\t'default': '', // default time, 'now' or '13:14' e.g.\r\n\t\tfromnow: 0, // set default time to * milliseconds from now (using with default = 'now')\r\n donetext: 'Done', // done button text\r\n cleartext: 'Clear', // clear button text\r\n\t\tautoclose: false, // auto close when minute is selected\r\n\t\tampmclickable: false, // set am/pm button on itself\r\n\t\tdarktheme: false,\t\t\t // set to dark theme\r\n\t\ttwelvehour: false, // change to 12 hour AM/PM clock from 24 hour\r\n vibrate: true, // vibrate the device when dragging clock hand\r\n hourstep: 1, // allow to multi increment the hour\r\n minutestep: 1, // allow to multi increment the minute\r\n\t\tampmSubmit: false, // allow submit with AM and PM buttons instead of the minute selection/picker\r\n\t\tcontainer: 'body', \t\t // set the container selector\r\n\t};\r\n\r\n\t// Show or hide popover\r\n\tClockPicker.prototype.toggle = function() {\r\n\t\tthis[this.isShown ? 'hide' : 'show']();\r\n\t};\r\n\r\n\t// Set popover position\r\n\tClockPicker.prototype.locate = function() {\r\n\t\tvar element = this.element,\r\n\t\t\t\tpopover = $(this.options.container).append(this.popover),\r\n\t\t\t\toffset = element.offset(),\r\n\t\t\t\twidth = element.outerWidth(),\r\n\t\t\t\theight = element.outerHeight(),\r\n\t\t\t\talign = this.options.align,\r\n\t\t\t\tself = this;\r\n\r\n\t\tthis.popover.show();\r\n };\r\n\r\n // The input can be changed by the user\r\n // So before we can use this.hours/this.minutes we must update it\r\n ClockPicker.prototype.parseInputValue = function(){\r\n var value = this.input.prop('value') || this.options['default'] || '';\r\n\r\n if (value === 'now') {\r\n value = new Date(+ new Date() + this.options.fromnow);\r\n }\r\n if (value instanceof Date) {\r\n value = value.getHours() + ':' + value.getMinutes();\r\n }\r\n\r\n value = value.split(':');\r\n\r\n // Minutes can have AM/PM that needs to be removed\r\n this.hours = + value[0] || 0;\r\n this.minutes = + (value[1] + '').replace(/\\D/g, '') || 0;\r\n\r\n this.hours = Math.round(this.hours / this.options.hourstep) * this.options.hourstep;\r\n this.minutes = Math.round(this.minutes / this.options.minutestep) * this.options.minutestep;\r\n\r\n if (this.options.twelvehour) {\r\n var period = (value[1] + '').replace(/\\d+/g, '').toLowerCase();\r\n this.amOrPm = this.hours > 12 || period === 'pm' ? 'PM' : 'AM';\r\n }\r\n };\r\n\r\n\t// Show popover\r\n\tClockPicker.prototype.show = function(e){\r\n\t\t// Not show again\r\n\t\tif (this.isShown) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\traiseCallback(this.options.beforeShow);\r\n\t\t$(':input').each(function() {\r\n\t\t\t$(this).attr('tabindex', -1);\r\n\t\t})\r\n\t\tvar self = this;\r\n\t\t// Initialize\r\n\t\tthis.input.blur();\r\n\t\tthis.popover.addClass('picker--opened');\r\n\t\tthis.input.addClass('picker__input picker__input--active');\r\n\t\t$(document.body).css('overflow', 'hidden');\r\n\t\tif (!this.isAppended) {\r\n\t\t\t// Append popover to body\r\n\t\t\tthis.popover.insertAfter(this.input);\r\n\t\t\tif(this.options.twelvehour) {\r\n\t\t\t\tthis.amOrPm = 'AM';\r\n\t\t\t\tif(!this.options.ampmclickable) {\r\n\t\t\t\t\tthis.amPmBlock.children('.pm-button').removeClass('active');\r\n\t\t\t\t\tthis.amPmBlock.children('.am-button').addClass('active');\r\n\t\t\t\t\tthis.spanAmPm.empty().append('PM');\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.spanAmPm.children('#click-am').addClass(\"text-primary\");\r\n\t\t\t\t\tthis.spanAmPm.children('#click-pm').removeClass(\"text-primary\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Reset position when resize\r\n\t\t\t$win.on('resize.clockpicker' + this.id, function() {\r\n\t\t\t\tif (self.isShown) {\r\n\t\t\t\t\tself.locate();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.isAppended = true;\r\n\t\t}\r\n\t\t// Get the time\r\n this.parseInputValue();\r\n\r\n if (this.hours === 0) {\r\n this.hours = this.minHours;\r\n }\r\n\r\n\t\tthis.spanHours.html(leadingZero(this.hours));\r\n this.spanMinutes.html(leadingZero(this.minutes));\r\n\r\n if (this.options.twelvehour) {\r\n this.spanAmPm.empty().append(this.amOrPm);\r\n }\r\n this.disableOutOfRangeElements();\r\n\t\t// Toggle to hours view\r\n\t\tthis.toggleView('hours');\r\n\t\t// Set position\r\n\t\tthis.locate();\r\n\t\tthis.isShown = true;\r\n\t\t// Hide when clicking or tabbing on any element except the clock and input\r\n\t\t$doc.on('click.clockpicker.' + this.id + ' focusin.clockpicker.' + this.id, debounce(function(e) {\r\n\t\t\tvar target = $(e.target);\r\n\t\t\tif (target.closest(self.popover.find('.picker__wrap')).length === 0 && target.closest(self.input).length === 0)\r\n\t\t\t\tself.hide();\r\n\t\t}, 100));\r\n\t\t// Hide when ESC is pressed\r\n\t\t$doc.on('keyup.clockpicker.' + this.id, debounce( function(e){\r\n\t\t\tif (e.keyCode === 27)\r\n\t\t\t\tself.hide();\r\n\t\t},100));\r\n\t\traiseCallback(this.options.afterShow);\r\n\t};\r\n\t// Hide popover\r\n\tClockPicker.prototype.hide = function() {\r\n\t\traiseCallback(this.options.beforeHide);\r\n\t\tthis.input.removeClass('picker__input picker__input--active');\r\n\t\tthis.popover.removeClass('picker--opened');\r\n\t\t$(document.body).css('overflow', 'visible');\r\n\t\tthis.isShown = false;\r\n\t\t$(':input').each(function(index) {\r\n\t\t\t$(this).attr('tabindex', index + 1);\r\n\t\t});\r\n\t\t// Unbinding events on document\r\n\t\t$doc.off('click.clockpicker.' + this.id + ' focusin.clockpicker.' + this.id);\r\n\t\t$doc.off('keyup.clockpicker.' + this.id);\r\n\t\tthis.popover.hide();\r\n\t\traiseCallback(this.options.afterHide);\r\n };\r\n // set invalid or disable some elements if needed\r\n ClockPicker.prototype.disableOutOfRangeElements = function() {\r\n let {hours, minutes, currentView, isTwelvehour, amOrPm, maxHours, minHours, maxMinutes, minMinutes} = this;\r\n const $hoursTick = $('.clockpicker-hours').children(),\r\n $minutesTick = $('.clockpicker-minutes').children(),\r\n $amBtn = $('.am-button'),\r\n $pmBtn = $('.pm-button'),\r\n $doneBtn = $('.done-button');\r\n\r\n // disable am/pm switch btn when time is out of allow range for am/pm period\r\n if (isTwelvehour && currentView === 'minutes') {\r\n $doneBtn.removeClass('grey-text disabled');\r\n if (amOrPm === 'AM' && !(hours + 12 <= maxHours))\r\n $pmBtn.addClass('disabled');\r\n else if (amOrPm === 'PM' && !(hours >= minHours))\r\n $amBtn.addClass('disabled');\r\n } \r\n\r\n // min and max hours is in 24h format, conver to 12h format if needed\r\n if (isTwelvehour && amOrPm === 'PM') {\r\n if (minHours < 12)\r\n minHours = 0;\r\n\r\n if (minHours > 12)\r\n minHours -= 12;\r\n \r\n if (maxHours > 12)\r\n maxHours -= 12; \r\n }\r\n\r\n // disable done btn when time is out of allow range \r\n if (isTwelvehour && currentView === 'hours') {\r\n $amBtn.removeClass('disabled');\r\n $pmBtn.removeClass('disabled');\r\n\r\n if (amOrPm === 'AM' && (!(hours >= minHours) || !(hours <= maxHours))) {\r\n $doneBtn.addClass('grey-text disabled');\r\n } else if (amOrPm === 'PM' && (!(hours >= minHours) || !(hours <= maxHours))) {\r\n $doneBtn.addClass('grey-text disabled');\r\n } else {\r\n $doneBtn.removeClass('grey-text disabled');\r\n }\r\n }\r\n\r\n // disable done btn when time is out of allow range \r\n if (currentView === 'minutes') {\r\n if ((hours === minHours && minutes < minMinutes) || (hours === maxHours && minutes > maxMinutes))\r\n $doneBtn.addClass('grey-text disabled');\r\n else\r\n $doneBtn.removeClass('grey-text disabled');\r\n }\r\n\r\n // set invalid if hours is out of allow range\r\n if (currentView === 'hours') {\r\n $hoursTick.each((index, el) => {\r\n let hours = el.innerHTML;\r\n \r\n if (this.isTwelvehour && hours == 12)\r\n hours = 0;\r\n \r\n if (hours > maxHours || hours < minHours)\r\n $(el).addClass('grey-text disabled');\r\n else\r\n $(el).removeClass('grey-text disabled');\r\n });\r\n }\r\n\r\n // set invalid if minutes is out of allow range\r\n if (currentView === 'minutes') {\r\n $minutesTick.each((index, el) => {\r\n if (minHours == hours && el.innerHTML < minMinutes)\r\n $(el).addClass('grey-text disabled');\r\n else if (maxHours == hours && el.innerHTML > maxMinutes)\r\n $(el).addClass('grey-text disabled');\r\n else\r\n $(el).removeClass('grey-text disabled');\r\n });\r\n }\r\n }\r\n\r\n\t// Toggle to hours or minutes view\r\n\tClockPicker.prototype.toggleView = function(view, delay) {\r\n\t\tvar raiseAfterHourSelect = false;\r\n\t\tif (view === 'minutes' && $(this.hoursView).css(\"visibility\") === \"visible\") {\r\n\t\t\traiseCallback(this.options.beforeHourSelect);\r\n\t\t\traiseAfterHourSelect = true;\r\n\t\t}\r\n\t\tvar isHours = view === 'hours',\r\n\t\t\t\tnextView = isHours ? this.hoursView : this.minutesView,\r\n\t\t\t\thideView = isHours ? this.minutesView : this.hoursView;\r\n this.currentView = view;\r\n \r\n\t\tthis.spanHours.toggleClass('text-primary', isHours);\r\n this.spanMinutes.toggleClass('text-primary', ! isHours);\r\n \r\n\t\t// Let's make transitions\r\n\t\thideView.addClass('clockpicker-dial-out');\r\n nextView.css('visibility', 'visible').removeClass('clockpicker-dial-out');\r\n \r\n\t\t// Reset clock hand\r\n\t\tthis.resetClock(delay);\r\n\r\n\t\t// After transitions ended\r\n\t\tclearTimeout(this.toggleViewTimer);\r\n\t\tthis.toggleViewTimer = setTimeout(function() {\r\n\t\t\thideView.css('visibility', 'hidden');\r\n\t\t}, duration);\r\n\r\n this.disableOutOfRangeElements();\r\n\r\n\t\tif (raiseAfterHourSelect)\r\n\t\t\traiseCallback(this.options.afterHourSelect);\r\n\t};\r\n\r\n\t// Reset clock hand\r\n\tClockPicker.prototype.resetClock = function(delay) {\r\n\t\tvar view = this.currentView,\r\n\t\t\t\tvalue = this[view],\r\n\t\t\t\tisHours = view === 'hours',\r\n\t\t\t\tunit = Math.PI / (isHours ? 6 : 30),\r\n\t\t\t\tradian = value * unit,\r\n\t\t\t\tradius = isHours && value > 0 && value < 13 ? innerRadius : outerRadius,\r\n\t\t\t\tx = Math.sin(radian) * radius,\r\n\t\t\t\ty = - Math.cos(radian) * radius,\r\n\t\t\t\tself = this;\r\n\r\n\t\tif(svgSupported && delay) {\r\n\t\t\tself.canvas.addClass('clockpicker-canvas-out');\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tself.canvas.removeClass('clockpicker-canvas-out');\r\n\t\t\t\tself.setHand(x, y);\r\n\t\t\t}, delay);\r\n\t\t} else\r\n\t\t\tthis.setHand(x, y);\r\n\t};\r\n\r\n\t// Set clock hand to (x, y)\r\n\tClockPicker.prototype.setHand = function(x, y, roundBy5, dragging) {\r\n\t\tvar radian = Math.atan2(x, - y),\r\n\t\t\t\tisHours = this.currentView === 'hours',\r\n\t\t\t\tz = Math.sqrt(x * x + y * y),\r\n\t\t\t\toptions = this.options,\r\n\t\t\t\tinner = isHours && z < (outerRadius + innerRadius) / 2,\r\n\t\t\t\tradius = inner ? innerRadius : outerRadius,\r\n\t\t\t\tunit,\r\n value;\r\n\r\n // Calculate the unit\r\n if (isHours) {\r\n unit = options.hourstep / 6 * Math.PI\r\n } else {\r\n unit = options.minutestep / 30 * Math.PI\r\n }\r\n\r\n\t\tif (options.twelvehour)\r\n\t\t\tradius = outerRadius;\r\n\r\n\t\t// Radian should in range [0, 2PI]\r\n\t\tif (radian < 0)\r\n\t\t\tradian = Math.PI * 2 + radian;\r\n\r\n\t\t// Get the round value\r\n value = Math.round(radian / unit);\r\n\r\n\t\t// Get the round radian\r\n\t\tradian = value * unit;\r\n\t\t// Correct the hours or minutes\r\n if (isHours) {\r\n value *= options.hourstep;\r\n if (! options.twelvehour && (!inner)==(value>0)) {\r\n value += 12;\r\n }\r\n if (options.twelvehour && value === 0) {\r\n value = 12;\r\n }\r\n if (value === 24) {\r\n value = 0;\r\n\t\t\t}\r\n } else {\r\n value *= options.minutestep;\r\n if (value === 60) {\r\n value = 0;\r\n }\r\n }\r\n // disable action when out of allow range\r\n let { minHours, maxHours, minMinutes, maxMinutes, amOrPm } = this;\r\n\r\n if (isHours) {\r\n let hours = value; \r\n\r\n if (this.amOrPm === 'PM') {\r\n if (minHours < 12)\r\n minHours = 0;\r\n if (minHours > 12)\r\n minHours -= 12;\r\n if (maxHours > 12)\r\n maxHours -= 12;\r\n }\r\n \r\n if (this.isTwelvehour && hours == 12)\r\n hours = 0;\r\n\r\n if (hours < minHours || hours > maxHours){\r\n this.isInvalidTimeScope = true;\r\n return;\r\n }\r\n\r\n if (this.isTwelvehour && hours === 12) {\r\n this.isInvalidTimeScope = true;\r\n return;\r\n }\r\n } else {\r\n let { hours } = this;\r\n\r\n if (amOrPm === 'PM')\r\n hours += 12;\r\n\r\n if ((hours == minHours && value < minMinutes) || (hours == maxHours && value > maxMinutes)) {\r\n this.isInvalidTimeScope = true;\r\n return;\r\n }\r\n\t\t}\r\n\r\n\t\tif (isHours)\r\n\t\t\tthis.fg.setAttribute('class', 'clockpicker-canvas-fg');\r\n\t\telse {\r\n\t\t\tif (value % 5 == 0)\r\n\t\t\t\tthis.fg.setAttribute('class', 'clockpicker-canvas-fg');\r\n\t\t\telse\r\n\t\t\t\tthis.fg.setAttribute('class', 'clockpicker-canvas-fg active');\r\n\t\t}\r\n\r\n\t\t// Once hours or minutes changed, vibrate the device\r\n\t\tif (this[this.currentView] !== value)\r\n\t\t\tif (vibrate && this.options.vibrate)\r\n\t\t\t\t// Do not vibrate too frequently\r\n\t\t\t\tif (! this.vibrateTimer) {\r\n\t\t\t\t\tnavigator[vibrate](10);\r\n\t\t\t\t\tthis.vibrateTimer = setTimeout($.proxy(function(){\r\n\t\t\t\t\t\tthis.vibrateTimer = null;\r\n\t\t\t\t\t}, this), 100);\r\n }\r\n\t\tthis[this.currentView] = value;\r\n\t\tthis[isHours ? 'spanHours' : 'spanMinutes'].html(leadingZero(value));\r\n\r\n\t\t// If svg is not supported, just add an active class to the tick\r\n\t\tif (! svgSupported) {\r\n\t\t\tthis[isHours ? 'hoursView' : 'minutesView'].find('.clockpicker-tick').each(function(){\r\n\t\t\t\tvar tick = $(this);\r\n\t\t\t\ttick.toggleClass('active', value === + tick.html());\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Place clock hand at the top when dragging\r\n\t\tif (dragging || (! isHours && value % 5)) {\r\n\t\t\tthis.g.insertBefore(this.hand, this.bearing);\r\n\t\t\tthis.g.insertBefore(this.bg, this.fg);\r\n\t\t\tthis.bg.setAttribute('class', 'clockpicker-canvas-bg clockpicker-canvas-bg-trans');\r\n\t\t} else {\r\n\t\t\t// Or place it at the bottom\r\n\t\t\tthis.g.insertBefore(this.hand, this.bg);\r\n\t\t\tthis.g.insertBefore(this.fg, this.bg);\r\n\t\t\tthis.bg.setAttribute('class', 'clockpicker-canvas-bg');\r\n\t\t}\r\n\r\n\t\t// Set clock hand and others' position\r\n var cx = Math.sin(radian) * radius,\r\n cy = - Math.cos(radian) * radius;\r\n this.hand.setAttribute('x2', cx);\r\n this.hand.setAttribute('y2', cy);\r\n this.bg.setAttribute('cx', cx);\r\n this.bg.setAttribute('cy', cy);\r\n this.fg.setAttribute('cx', cx);\r\n this.fg.setAttribute('cy', cy);\r\n };\r\n\r\n \t// Clear clock text\r\n ClockPicker.prototype.clearInput = function() {\r\n\t\tthis.input.val('');\r\n\t\tthis.hide();\r\n\r\n\t\tif(this.options.afterDone && typeof this.options.afterDone === 'function')\r\n\t\t\tthis.options.afterDone(this.input, null);\r\n\t};\r\n\r\n // Allow user to get time as Date object\r\n ClockPicker.prototype.getTime = function(callback) {\r\n this.parseInputValue();\r\n\r\n var hours = this.hours;\r\n if (this.options.twelvehour && hours < 12 && this.amOrPm === 'PM') {\r\n hours += 12;\r\n }\r\n\r\n var selectedTime = new Date();\r\n selectedTime.setMinutes(this.minutes)\r\n selectedTime.setHours(hours);\r\n selectedTime.setSeconds(0);\r\n\r\n return callback && callback.apply(this.element, selectedTime) || selectedTime;\r\n }\r\n\r\n\t// Hours and minutes are selected\r\n\tClockPicker.prototype.done = function() {\r\n\t\traiseCallback(this.options.beforeDone);\r\n\t\tthis.hide();\r\n\t\tthis.label.addClass('active');\r\n\r\n\t\tvar last = this.input.prop('value'),\r\n outHours = this.hours,\r\n value = ':' + leadingZero(this.minutes);\r\n\r\n if (this.isHTML5 && this.options.twelvehour) {\r\n if (this.hours < 12 && this.amOrPm === 'PM') {\r\n outHours += 12;\r\n }\r\n if (this.hours === 12 && this.amOrPm === 'AM') {\r\n outHours = 0;\r\n }\r\n }\r\n\r\n value = leadingZero(outHours) + value;\r\n\r\n if (!this.isHTML5 && this.options.twelvehour) {\r\n value = value + this.amOrPm;\r\n }\r\n\r\n\t\tthis.input.prop('value', value);\r\n\t\tif(value !== last) {\r\n\t\t\tthis.input.trigger('change');\r\n\t\t\tif(!this.isInput)\r\n\t\t\t\tthis.element.trigger('change');\r\n\t\t}\r\n\r\n\t\tif(this.options.autoclose)\r\n\t\t\tthis.input.trigger('blur');\r\n\r\n\t\traiseCallback(this.options.afterDone);\r\n\t};\r\n\r\n\t// Remove clockpicker from input\r\n\tClockPicker.prototype.remove = function() {\r\n\t\tthis.element.removeData('clockpicker');\r\n\t\tthis.input.off('focus.clockpicker click.clockpicker');\r\n\t\tif (this.isShown)\r\n\t\t\tthis.hide();\r\n\t\tif (this.isAppended) {\r\n\t\t\t$win.off('resize.clockpicker' + this.id);\r\n\t\t\tthis.popover.remove();\r\n\t\t}\r\n\t};\r\n\r\n\t// Extends $.fn.clockpicker\r\n\t$.fn.pickatime = function(option){\r\n\t\tvar args = Array.prototype.slice.call(arguments, 1);\r\n\t\tfunction handleClockPickerRequest(){\r\n\t\t\tvar $this = $(this),\r\n\t\t\t\t\tdata = $this.data('clockpicker');\r\n\t\t\tif (!data) {\r\n\t\t\t\tvar options = $.extend({}, ClockPicker.DEFAULTS, $this.data(), typeof option == 'object' && option);\r\n\t\t\t\t$this.data('clockpicker', new ClockPicker($this, options));\r\n\t\t\t} else {\r\n\t\t\t\t// Manual operations. show, hide, remove, e.g.\r\n\t\t\t\tif (typeof data[option] === 'function')\r\n\t\t\t\t\tdata[option].apply(data, args);\r\n\t\t\t}\r\n }\r\n // If we explicitly do a call on a single element then we can return the value (if needed)\r\n // This allows us, for example, to return the value of getTime\r\n if (this.length == 1) {\r\n var returnValue = handleClockPickerRequest.apply(this[0]);\r\n\r\n // If we do not have any return value then return the object itself so you can chain\r\n return returnValue !== undefined ? returnValue : this;\r\n }\r\n\r\n // If we do have a list then we do not care about return values\r\n return this.each(handleClockPickerRequest);\r\n\t};\r\n\t\r\n\t$('.time-picker-opener').on('click', e => {\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\r\n\t\tconst openElementData = e.target.dataset.open;\r\n\t\tconst $picker = $(`#${openElementData}`).pickatime('picker');\r\n\t\t$picker.data('clockpicker').show();\r\n\t});\r\n}());\r\n","jQuery(($) => {\r\n\r\n $.fn.dateTimePicker = function(delimiter = ', ') {\r\n\r\n const $this = $(this)[0];\r\n\r\n let result = $(`.picker-opener[data-open='${$this.dataset.open}']`);\r\n const $timePicker = $(`.timepicker[data-open='${$this.dataset.open}']`);\r\n const $datePicker = $(`#${$this.dataset.open}`);\r\n\r\n $datePicker.pickadate({\r\n onClose: function () {\r\n\r\n const input = $timePicker.pickatime({\r\n afterHide: () => {\r\n $timePicker.trigger(\"change\");\r\n }\r\n });\r\n const picker = input.pickatime('picker');\r\n picker.data('clockpicker').show();\r\n },\r\n format: 'yyyy/mm/dd',\r\n formatSubmit: 'yyyy/mm/dd',\r\n });\r\n\r\n $datePicker.on('change', () => {\r\n let timeValue = $timePicker.val();\r\n let dateValue = $datePicker.val();\r\n result[0].value = `${dateValue}${timeValue !=='' && dateValue !=='' ? delimiter : ''}${timeValue}`;\r\n });\r\n\r\n $timePicker.on('change', () => {\r\n let timeValue = $timePicker.val();\r\n let dateValue = $datePicker.val();\r\n result[0].value = `${dateValue}${timeValue !=='' && dateValue !=='' ? delimiter : ''}${timeValue}`;\r\n });\r\n\r\n };\r\n\r\n});\r\n"],"sourceRoot":""}