UNPKG

1.45 MBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///packages/perspective-viewer/webpack/universalModuleDefinition","webpack:///packages/perspective-viewer/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/an-object.js","webpack:///node_modules/core-js/internals/to-length.js","webpack:///node_modules/core-js/internals/is-object.js","webpack:///node_modules/core-js/internals/has.js","webpack:///node_modules/core-js/internals/export.js","webpack:///node_modules/core-js/internals/descriptors.js","webpack:///node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///node_modules/core-js/internals/object-define-property.js","webpack:///node_modules/lodash/_root.js","webpack:///node_modules/core-js/internals/redefine.js","webpack:///node_modules/core-js/internals/to-object.js","webpack:///node_modules/core-js/modules/es.array.iterator.js","webpack:///node_modules/core-js/internals/classof-raw.js","webpack:///node_modules/core-js/internals/require-object-coercible.js","webpack:///node_modules/core-js/internals/internal-state.js","webpack:///node_modules/core-js/internals/to-integer.js","webpack:///node_modules/core-js/internals/function-bind-context.js","webpack:///node_modules/webpack/buildin/global.js","webpack:///node_modules/core-js/internals/create-property-descriptor.js","webpack:///node_modules/core-js/internals/get-built-in.js","webpack:///node_modules/core-js/internals/set-to-string-tag.js","webpack:///node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///node_modules/core-js/internals/a-function.js","webpack:///node_modules/lodash/_getNative.js","webpack:///node_modules/core-js/internals/is-pure.js","webpack:///node_modules/core-js/internals/iterators.js","webpack:///node_modules/core-js/internals/object-set-prototype-of.js","webpack:///node_modules/core-js/internals/an-instance.js","webpack:///node_modules/core-js/internals/get-iterator-method.js","webpack:///node_modules/lodash/_baseGetTag.js","webpack:///node_modules/lodash/isObjectLike.js","webpack:///../src/js/config/index.js","webpack:///node_modules/core-js/internals/to-indexed-object.js","webpack:///node_modules/core-js/internals/to-primitive.js","webpack:///node_modules/core-js/internals/object-create.js","webpack:///node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///node_modules/core-js/internals/object-get-prototype-of.js","webpack:///node_modules/core-js/modules/es.promise.js","webpack:///node_modules/core-js/internals/classof.js","webpack:///node_modules/core-js/internals/regexp-exec.js","webpack:///node_modules/lodash/isObject.js","webpack:///node_modules/lodash/_ListCache.js","webpack:///node_modules/lodash/_assocIndexOf.js","webpack:///node_modules/lodash/_nativeCreate.js","webpack:///node_modules/lodash/_getMapData.js","webpack:///node_modules/core-js/internals/array-buffer-view-core.js","webpack:///packages/perspective/dist/esm/psp.async.wasm.js","webpack:///node_modules/core-js/internals/indexed-object.js","webpack:///node_modules/core-js/internals/set-global.js","webpack:///node_modules/core-js/internals/document-create-element.js","webpack:///node_modules/core-js/internals/uid.js","webpack:///node_modules/core-js/internals/to-absolute-index.js","webpack:///node_modules/core-js/internals/hidden-keys.js","webpack:///node_modules/core-js/internals/enum-bug-keys.js","webpack:///node_modules/core-js/internals/shared-key.js","webpack:///node_modules/core-js/internals/inspect-source.js","webpack:///node_modules/core-js/internals/object-get-own-property-names.js","webpack:///node_modules/core-js/internals/redefine-all.js","webpack:///node_modules/core-js/internals/species-constructor.js","webpack:///node_modules/core-js/internals/is-array-iterator-method.js","webpack:///node_modules/core-js/modules/es.string.replace.js","webpack:///node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///node_modules/core-js/internals/advance-string-index.js","webpack:///node_modules/core-js/internals/string-multibyte.js","webpack:///node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///node_modules/lodash/_Symbol.js","webpack:///node_modules/core-js/internals/is-array.js","webpack:///node_modules/lodash/isArray.js","webpack:///node_modules/lodash/_Map.js","webpack:///node_modules/core-js/internals/add-to-unscopables.js","webpack:///node_modules/core-js/internals/shared.js","webpack:///node_modules/core-js/internals/shared-store.js","webpack:///node_modules/core-js/internals/ie8-dom-define.js","webpack:///node_modules/core-js/internals/native-symbol.js","webpack:///node_modules/core-js/internals/object-define-properties.js","webpack:///node_modules/core-js/internals/object-keys.js","webpack:///node_modules/core-js/internals/object-keys-internal.js","webpack:///node_modules/core-js/internals/html.js","webpack:///node_modules/core-js/internals/define-iterator.js","webpack:///node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///node_modules/core-js/internals/copy-constructor-properties.js","webpack:///node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///node_modules/core-js/internals/is-forced.js","webpack:///node_modules/core-js/internals/create-iterator-constructor.js","webpack:///node_modules/core-js/internals/iterators-core.js","webpack:///node_modules/core-js/modules/es.object.assign.js","webpack:///node_modules/core-js/internals/object-assign.js","webpack:///node_modules/core-js/modules/es.array-buffer.slice.js","webpack:///node_modules/core-js/internals/array-buffer.js","webpack:///node_modules/core-js/internals/array-buffer-native.js","webpack:///node_modules/core-js/internals/to-index.js","webpack:///node_modules/core-js/internals/set-species.js","webpack:///node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///node_modules/core-js/internals/task.js","webpack:///node_modules/core-js/internals/engine-is-ios.js","webpack:///node_modules/core-js/internals/engine-user-agent.js","webpack:///node_modules/core-js/internals/new-promise-capability.js","webpack:///node_modules/core-js/internals/regexp-flags.js","webpack:///node_modules/core-js/modules/es.regexp.to-string.js","webpack:///node_modules/core-js/modules/es.string.includes.js","webpack:///node_modules/core-js/internals/is-regexp.js","webpack:///node_modules/core-js/modules/es.string.match.js","webpack:///packages/perspective-webpack-plugin/src/js/utils.js","webpack:///node_modules/lodash/_freeGlobal.js","webpack:///node_modules/core-js/internals/whitespaces.js","webpack:///node_modules/lodash/keys.js","webpack:///node_modules/lodash/isBuffer.js","webpack:///node_modules/webpack/buildin/module.js","webpack:///node_modules/lodash/isTypedArray.js","webpack:///node_modules/lodash/isLength.js","webpack:///node_modules/lodash/isFunction.js","webpack:///node_modules/lodash/eq.js","webpack:///node_modules/lodash/_toSource.js","webpack:///node_modules/lodash/_MapCache.js","webpack:///node_modules/lodash/_equalArrays.js","webpack:///node_modules/core-js/internals/array-species-create.js","webpack:///node_modules/core-js/internals/native-url.js","webpack:///packages/perspective/dist/esm/perspective.wasm.js","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/webpack/universalModuleDefinition","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/webpack/bootstrap","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"lit-html\"","webpack:///packages/perspective-viewer/webpack:/src/js/utils.js","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"@finos/perspective/dist/esm/config\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.array.iterator\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/web.dom-collections.iterator\"","webpack:///packages/perspective-viewer/webpack:/src/js/viewer/renderers.js","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"@finos/perspective\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.promise\"","webpack:///packages/perspective-viewer/webpack:/node_modules/css-loader/lib/css-base.js","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.string.replace\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.regexp.to-string\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.string.includes\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"lodash/debounce\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"awesomplete\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.array.reverse\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.string.trim\"","webpack:///packages/perspective-viewer/webpack:/node_modules/webpack/buildin/global.js","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.symbol.description\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"lodash/values\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/dist/html/computed_column.html","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/dist/less/computed_column.less","webpack:///packages/perspective-viewer/webpack:/node_modules/awesomplete/awesomplete.css","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/dist/html/row.html","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/dist/less/row.less","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/dist/html/viewer.html","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/dist/less/viewer.less","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/dist/less/default.less","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"lodash/isEqual\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.array-buffer.slice\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.typed-array.uint8-array\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.typed-array.to-locale-string\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/web.url\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"@webcomponents/webcomponentsjs\"","webpack:///packages/perspective-viewer/webpack:/src/js/polyfill.js","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.object.assign\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.string.match\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.string.split\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.array.flat-map\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.array.sort\"","webpack:///packages/perspective-viewer/webpack:/packages/perspective-viewer/external \"core-js/modules/es.array.unscopables.flat-map\"","webpack:///packages/perspective-viewer/webpack:/src/js/computed_column/state.js","webpack:///packages/perspective-viewer/webpack:/src/js/computed_column/computation.js","webpack:///packages/perspective-viewer/webpack:/src/js/viewer/dragdrop.js","webpack:///packages/perspective-viewer/webpack:/src/js/computed_column.js","webpack:///packages/perspective-viewer/webpack:/src/js/row.js","webpack:///packages/perspective-viewer/webpack:/src/js/viewer/cancel_task.js","webpack:///packages/perspective-viewer/webpack:/src/js/viewer/state_element.js","webpack:///packages/perspective-viewer/webpack:/src/js/viewer/perspective_element.js","webpack:///packages/perspective-viewer/webpack:/src/js/viewer/dom_element.js","webpack:///packages/perspective-viewer/webpack:/src/js/viewer/action_element.js","webpack:///packages/perspective-viewer/webpack:/src/js/viewer.js","webpack:///node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///node_modules/core-js/internals/array-includes.js","webpack:///node_modules/core-js/internals/path.js","webpack:///node_modules/core-js/internals/native-weak-map.js","webpack:///node_modules/core-js/internals/own-keys.js","webpack:///node_modules/core-js/internals/correct-prototype-getter.js","webpack:///node_modules/core-js/internals/a-possible-prototype.js","webpack:///node_modules/core-js/internals/dom-iterables.js","webpack:///../src/js/config/settings.js","webpack:///packages/perspective/dist/esm/config/__node.js","webpack:///packages/perspective/dist/umd/perspective.inline.js","webpack:///node_modules/core-js/internals/ieee754.js","webpack:///node_modules/core-js/internals/array-fill.js","webpack:///node_modules/core-js/internals/native-promise-constructor.js","webpack:///node_modules/core-js/internals/iterate.js","webpack:///node_modules/core-js/internals/to-string-tag-support.js","webpack:///node_modules/core-js/internals/microtask.js","webpack:///node_modules/core-js/internals/promise-resolve.js","webpack:///node_modules/core-js/internals/host-report-errors.js","webpack:///node_modules/core-js/internals/perform.js","webpack:///node_modules/core-js/internals/engine-v8-version.js","webpack:///node_modules/core-js/modules/es.regexp.exec.js","webpack:///node_modules/core-js/internals/regexp-sticky-helpers.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/detectie/detectie.js","webpack:///node_modules/lodash/debounce.js","webpack:///node_modules/lodash/now.js","webpack:///node_modules/lodash/toNumber.js","webpack:///node_modules/lodash/isSymbol.js","webpack:///node_modules/lodash/_getRawTag.js","webpack:///node_modules/lodash/_objectToString.js","webpack:///node_modules/awesomplete/awesomplete.js","webpack:///node_modules/core-js/modules/es.array.reverse.js","webpack:///node_modules/core-js/modules/es.string.trim.js","webpack:///node_modules/core-js/internals/string-trim.js","webpack:///node_modules/core-js/internals/string-trim-forced.js","webpack:///node_modules/core-js/modules/es.symbol.description.js","webpack:///node_modules/lodash/values.js","webpack:///node_modules/lodash/_baseValues.js","webpack:///node_modules/lodash/_arrayMap.js","webpack:///node_modules/lodash/_arrayLikeKeys.js","webpack:///node_modules/lodash/_baseTimes.js","webpack:///node_modules/lodash/isArguments.js","webpack:///node_modules/lodash/_baseIsArguments.js","webpack:///node_modules/lodash/stubFalse.js","webpack:///node_modules/lodash/_isIndex.js","webpack:///node_modules/lodash/_baseIsTypedArray.js","webpack:///node_modules/lodash/_baseUnary.js","webpack:///node_modules/lodash/_nodeUtil.js","webpack:///node_modules/lodash/_baseKeys.js","webpack:///node_modules/lodash/_isPrototype.js","webpack:///node_modules/lodash/_nativeKeys.js","webpack:///node_modules/lodash/_overArg.js","webpack:///node_modules/lodash/isArrayLike.js","webpack:///node_modules/lodash/isEqual.js","webpack:///node_modules/lodash/_baseIsEqual.js","webpack:///node_modules/lodash/_baseIsEqualDeep.js","webpack:///node_modules/lodash/_Stack.js","webpack:///node_modules/lodash/_listCacheClear.js","webpack:///node_modules/lodash/_listCacheDelete.js","webpack:///node_modules/lodash/_listCacheGet.js","webpack:///node_modules/lodash/_listCacheHas.js","webpack:///node_modules/lodash/_listCacheSet.js","webpack:///node_modules/lodash/_stackClear.js","webpack:///node_modules/lodash/_stackDelete.js","webpack:///node_modules/lodash/_stackGet.js","webpack:///node_modules/lodash/_stackHas.js","webpack:///node_modules/lodash/_stackSet.js","webpack:///node_modules/lodash/_baseIsNative.js","webpack:///node_modules/lodash/_isMasked.js","webpack:///node_modules/lodash/_coreJsData.js","webpack:///node_modules/lodash/_getValue.js","webpack:///node_modules/lodash/_mapCacheClear.js","webpack:///node_modules/lodash/_Hash.js","webpack:///node_modules/lodash/_hashClear.js","webpack:///node_modules/lodash/_hashDelete.js","webpack:///node_modules/lodash/_hashGet.js","webpack:///node_modules/lodash/_hashHas.js","webpack:///node_modules/lodash/_hashSet.js","webpack:///node_modules/lodash/_mapCacheDelete.js","webpack:///node_modules/lodash/_isKeyable.js","webpack:///node_modules/lodash/_mapCacheGet.js","webpack:///node_modules/lodash/_mapCacheHas.js","webpack:///node_modules/lodash/_mapCacheSet.js","webpack:///node_modules/lodash/_SetCache.js","webpack:///node_modules/lodash/_setCacheAdd.js","webpack:///node_modules/lodash/_setCacheHas.js","webpack:///node_modules/lodash/_arraySome.js","webpack:///node_modules/lodash/_cacheHas.js","webpack:///node_modules/lodash/_equalByTag.js","webpack:///node_modules/lodash/_Uint8Array.js","webpack:///node_modules/lodash/_mapToArray.js","webpack:///node_modules/lodash/_setToArray.js","webpack:///node_modules/lodash/_equalObjects.js","webpack:///node_modules/lodash/_getAllKeys.js","webpack:///node_modules/lodash/_baseGetAllKeys.js","webpack:///node_modules/lodash/_arrayPush.js","webpack:///node_modules/lodash/_getSymbols.js","webpack:///node_modules/lodash/_arrayFilter.js","webpack:///node_modules/lodash/stubArray.js","webpack:///node_modules/lodash/_getTag.js","webpack:///node_modules/lodash/_DataView.js","webpack:///node_modules/lodash/_Promise.js","webpack:///node_modules/lodash/_Set.js","webpack:///node_modules/lodash/_WeakMap.js","webpack:///node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack:///node_modules/core-js/internals/typed-array-constructor.js","webpack:///node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack:///node_modules/core-js/internals/to-offset.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/internals/array-iteration.js","webpack:///node_modules/core-js/internals/inherit-if-required.js","webpack:///node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:///node_modules/core-js/modules/web.url.js","webpack:///node_modules/core-js/modules/es.string.iterator.js","webpack:///node_modules/core-js/internals/array-from.js","webpack:///node_modules/core-js/internals/create-property.js","webpack:///node_modules/core-js/internals/string-punycode-to-ascii.js","webpack:///node_modules/core-js/modules/web.url-search-params.js","webpack:///node_modules/core-js/internals/get-iterator.js","webpack:///packages/webcomponents-platform/webcomponents-platform.js","webpack:///packages/perspective-viewer/ [synthetic:util/defineproperty] ","webpack:///packages/perspective-viewer/ [synthetic:util/global] ","webpack:///packages/perspective-viewer/ [synthetic:es6/symbol] ","webpack:///packages/perspective-viewer/ [synthetic:es6/util/setprototypeof] ","webpack:///packages/perspective-viewer/ [synthetic:es6/util/makeiterator] ","webpack:///packages/perspective-viewer/ [synthetic:es6/generator_engine] ","webpack:///packages/perspective-viewer/src/symbol.js","webpack:///packages/template/template.js","webpack:///promise-polyfill/src/index.js","webpack:///packages/perspective-viewer/src/promise.js","webpack:///promise-polyfill/src/finally.js","webpack:///es-symbol/dist/symbol.js","webpack:///packages/perspective-viewer/src/flag-parser.js","webpack:///packages/shadydom/src/shady-data.js","webpack:///packages/shadydom/src/utils.js","webpack:///packages/shadydom/src/flush.js","webpack:///packages/shadydom/src/observe-changes.js","webpack:///packages/shadydom/src/native-methods.js","webpack:///packages/shadydom/src/innerHTML.js","webpack:///packages/shadydom/src/native-tree-walker.js","webpack:///packages/shadydom/src/native-tree-accessors.js","webpack:///packages/shadydom/src/native-tree.js","webpack:///packages/shadydom/src/patch-accessors.js","webpack:///packages/shadydom/src/logical-tree.js","webpack:///packages/shadydom/src/logical-mutation.js","webpack:///packages/shadydom/src/attach-shadow.js","webpack:///packages/perspective-viewer/ [synthetic:es6/util/arrayfromiterable] ","webpack:///packages/perspective-viewer/ [synthetic:es6/util/arrayfromiterator] ","webpack:///packages/shadydom/src/patch-events.js","webpack:///packages/shadydom/src/array-splice.js","webpack:///packages/shadydom/src/patch-builtins.js","webpack:///packages/shadydom/src/shadydom.js","webpack:///packages/custom-elements/src/Utilities.js","webpack:///packages/custom-elements/src/CustomElementInternals.js","webpack:///packages/custom-elements/src/CustomElementState.js","webpack:///packages/custom-elements/src/DocumentConstructionObserver.js","webpack:///packages/custom-elements/src/CustomElementRegistry.js","webpack:///packages/custom-elements/src/Deferred.js","webpack:///packages/custom-elements/src/Patch/Native.js","webpack:///packages/custom-elements/src/AlreadyConstructedMarker.js","webpack:///packages/custom-elements/src/Patch/Interface/ParentNode.js","webpack:///packages/custom-elements/src/custom-elements.js","webpack:///packages/custom-elements/src/Patch/HTMLElement.js","webpack:///packages/custom-elements/src/Patch/Document.js","webpack:///packages/custom-elements/src/Patch/DocumentFragment.js","webpack:///packages/custom-elements/src/Patch/Node.js","webpack:///packages/custom-elements/src/Patch/Element.js","webpack:///packages/custom-elements/src/Patch/Interface/ChildNode.js","webpack:///packages/shadycss/src/css-parse.js","webpack:///packages/shadycss/src/style-settings.js","webpack:///packages/shadycss/src/common-regex.js","webpack:///packages/shadycss/src/unscoped-style-handler.js","webpack:///packages/shadycss/src/style-util.js","webpack:///packages/shadycss/src/style-transformer.js","webpack:///packages/shadycss/src/style-info.js","webpack:///packages/shadycss/src/style-properties.js","webpack:///packages/shadycss/src/style-placeholder.js","webpack:///packages/shadycss/src/style-cache.js","webpack:///packages/shadycss/src/document-watcher.js","webpack:///packages/shadycss/src/template-map.js","webpack:///packages/shadycss/src/apply-shim-utils.js","webpack:///packages/shadycss/src/scoping-shim.js","webpack:///packages/shadycss/src/common-utils.js","webpack:///packages/shadycss/entrypoints/scoping-shim.js","webpack:///packages/url/url.js","webpack:///packages/perspective-viewer/src/baseuri.js","webpack:///packages/perspective-viewer/src/unresolved.js","webpack:///packages/perspective-viewer/entrypoints/webcomponents-bundle-index.js","webpack:///node_modules/timers-browserify/main.js","webpack:///node_modules/setimmediate/setImmediate.js","webpack:///node_modules/process/browser.js","webpack:///node_modules/core-js/modules/es.string.split.js","webpack:///node_modules/core-js/modules/es.array.flat-map.js","webpack:///node_modules/core-js/internals/flatten-into-array.js","webpack:///node_modules/core-js/modules/es.array.sort.js","webpack:///node_modules/core-js/internals/array-method-is-strict.js","webpack:///node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack:///packages/src/lib/directive.ts","webpack:///packages/src/lib/dom.ts","webpack:///packages/src/lib/part.ts","webpack:///packages/src/lib/template.ts","webpack:///packages/src/lib/template-instance.ts","webpack:///packages/src/lib/template-result.ts","webpack:///packages/src/lib/parts.ts","webpack:///packages/src/lib/default-template-processor.ts","webpack:///packages/src/lib/template-factory.ts","webpack:///packages/src/lib/render.ts","webpack:///packages/perspective-viewer/src/lit-html.ts","webpack:///../src/js/config/constants.js","webpack:///../src/js/api/dispatch.js","webpack:///src/js/utils.js","webpack:///../src/js/api/view_api.js","webpack:///../src/js/api/table_api.js","webpack:///../src/js/api/client.js","webpack:///src/js/perspective.parallel.js"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","__webpack_require__","moduleId","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","self","global","Function","exec","error","shared","has","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","isObject","TypeError","String","toInteger","min","argument","getOwnPropertyDescriptor","f","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","options","source","target","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","undefined","sham","fails","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","freeGlobal","freeSelf","inspectSource","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","split","unsafe","simple","join","this","requireObjectCoercible","toIndexedObject","addToUnscopables","Iterators","defineIterator","setInternalState","set","getterFor","Array","iterated","kind","type","index","state","length","done","Arguments","toString","slice","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","store","wmget","wmhas","wmset","metadata","STATE","TYPE","ceil","floor","isNaN","aFunction","fn","that","b","apply","arguments","g","e","bitmap","configurable","writable","path","variable","namespace","method","TO_STRING_TAG","wellKnownSymbol","TAG","DOMIterables","ArrayIteratorMethods","ITERATOR","ArrayValues","values","COLLECTION_NAME","Collection","CollectionPrototype","METHOD_NAME","baseIsNative","getValue","aPossiblePrototype","setPrototypeOf","setter","CORRECT_SETTER","test","proto","__proto__","Constructor","classof","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","DEFAULT_CONFIG","require","default","get_config_file","item","isArray","mergeDeep","sources","shift","assign","get_types","keys","get_config","types","get_type_config","config","props","__PERSPECTIVE_CONFIG__","override_config","console","warn","IndexedObject","input","PREFERRED_STRING","val","valueOf","activeXDocument","defineProperties","enumBugKeys","html","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObject","document","domain","ActiveXObject","iframeDocument","iframe","write","close","temp","parentWindow","NullProtoObjectViaActiveX","style","display","appendChild","src","contentWindow","open","F","Properties","result","propertyIsEnumerableModule","nativeGetOwnPropertyDescriptor","toObject","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","getPrototypeOf","constructor","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","$","IS_PURE","getBuiltIn","NativePromise","redefineAll","setToStringTag","setSpecies","anInstance","iterate","checkCorrectnessOfIteration","speciesConstructor","task","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","V8_VERSION","SPECIES","PROMISE","getInternalPromiseState","PromiseConstructor","process","$fetch","newPromiseCapability","newGenericPromiseCapability","IS_NODE","DISPATCH_EVENT","createEvent","dispatchEvent","FORCED","PromiseRejectionEvent","promise","resolve","FakePromise","then","INCORRECT_ITERATION","iterable","all","isThenable","notify","isReject","notified","chain","reactions","ok","exited","reaction","handler","fail","reject","rejection","onHandleUnhandled","enter","exit","onUnhandled","reason","event","initEvent","isUnhandled","emit","parent","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","push","C","fetch","wrap","Promise","capability","x","$promiseResolve","counter","remaining","alreadyCalled","race","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","callee","re1","re2","regexpFlags","stickyHelpers","nativeExec","RegExp","nativeReplace","replace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","str","reCopy","match","re","sticky","flags","charsAdded","strCopy","indexOf","multiline","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","entries","clear","entry","eq","array","nativeCreate","getNative","isKeyable","map","data","__data__","NAME","NATIVE_ARRAY_BUFFER","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","isPrototypeOf","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","isTypedArray","aTypedArray","aTypedArrayConstructor","ARRAY","TypedArrayConstructor","exportTypedArrayMethod","KEY","exportTypedArrayStaticMethod","isView","klass","utils","publicPath","propertyIsEnumerable","EXISTS","createElement","id","postfix","random","max","integer","functionToString","internalObjectKeys","concat","getOwnPropertyNames","defaultConstructor","S","ArrayPrototype","fixRegExpWellKnownSymbolLogic","toLength","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","maybeCallNative","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_KEEPS_$0","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","regexp","res","rx","functionalReplace","fullUnicode","unicode","results","accumulatedResult","nextSourcePosition","matched","position","captures","j","namedCaptures","groups","replacerArgs","replacement","getSubstitution","tailPos","symbols","ch","capture","charAt","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","methods","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","string","arg","createMethod","CONVERT_TO_STRING","$this","pos","first","second","size","charCodeAt","codeAt","R","Map","UNSCOPABLES","version","copyright","getOwnPropertySymbols","objectKeys","names","createIteratorConstructor","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","IteratorConstructor","next","DEFAULT","IS_SET","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","nativePropertyIsEnumerable","NASHORN_BUG","1","V","ownKeys","getOwnPropertyDescriptorModule","feature","detection","normalize","POLYFILL","NATIVE","toLowerCase","PrototypeOfArrayIteratorPrototype","arrayIterator","getOwnPropertySymbolsModule","nativeAssign","A","B","symbol","forEach","chr","T","argumentsLength","ArrayBufferModule","toAbsoluteIndex","ArrayBuffer","DataView","nativeArrayBufferSlice","byteLength","start","end","fin","viewSource","viewTarget","setUint8","getUint8","toIndex","IEEE754","arrayFill","NativeArrayBuffer","$ArrayBuffer","$DataView","$DataViewPrototype","RangeError","packIEEE754","pack","unpackIEEE754","unpack","packInt8","number","packInt16","packInt32","unpackInt32","buffer","packFloat32","packFloat64","addGetter","view","count","isLittleEndian","intIndex","bytes","byteOffset","reverse","conversion","NaN","ArrayBufferPrototype","testView","nativeSetInt8","setInt8","getInt8","bufferLength","offset","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","CONSTRUCTOR_NAME","iterator","ENTRIES","returnMethod","SAFE_CLOSING","called","iteratorWithReturn","from","SKIP_CLOSING","ITERATION_SUPPORT","defer","channel","port","IS_IOS","location","setImmediate","clearImmediate","MessageChannel","Dispatch","queue","run","runner","listener","post","postMessage","protocol","host","args","nextTick","now","port2","port1","onmessage","addEventListener","importScripts","removeChild","setTimeout","userAgent","PromiseCapability","$$resolve","$$reject","ignoreCase","dotAll","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","notARegExp","correctIsRegExpLogic","includes","searchString","MATCH","isRegExp","nativeMatch","matcher","matchStr","__SCRIPT_PATH__","pathParts","Error","stackLines","stack","callerIndex","Number","fullPath","origin","pathname","hostname","file","isCrossOrigin","webpackOrigin","link","href","startsWith","BlobWorker","responseText","ready","blob","Blob","obj","URL","createObjectURL","worker","Worker","XHRWorker","url","oReq","XMLHttpRequest","send","arrayLikeKeys","baseKeys","isArrayLike","stubFalse","freeExports","nodeType","freeModule","Buffer","isBuffer","webpackPolyfill","deprecate","paths","children","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","MAX_SAFE_INTEGER","baseGetTag","asyncTag","funcTag","genTag","proxyTag","other","funcToString","func","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","SetCache","arraySome","cacheHas","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","bitmask","customizer","equalFunc","isPartial","arrLength","othLength","stacked","seen","arrValue","othValue","compared","othIndex","originalArray","searchParams","toJSON","sort","URLSearchParams","username","hash","workerPath","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__2__","__WEBPACK_EXTERNAL_MODULE__3__","__WEBPACK_EXTERNAL_MODULE__4__","__WEBPACK_EXTERNAL_MODULE__6__","__WEBPACK_EXTERNAL_MODULE__7__","__WEBPACK_EXTERNAL_MODULE__9__","__WEBPACK_EXTERNAL_MODULE__10__","__WEBPACK_EXTERNAL_MODULE__11__","__WEBPACK_EXTERNAL_MODULE__12__","__WEBPACK_EXTERNAL_MODULE__13__","__WEBPACK_EXTERNAL_MODULE__14__","__WEBPACK_EXTERNAL_MODULE__15__","__WEBPACK_EXTERNAL_MODULE__17__","__WEBPACK_EXTERNAL_MODULE__18__","__WEBPACK_EXTERNAL_MODULE__27__","__WEBPACK_EXTERNAL_MODULE__28__","__WEBPACK_EXTERNAL_MODULE__29__","__WEBPACK_EXTERNAL_MODULE__30__","__WEBPACK_EXTERNAL_MODULE__31__","__WEBPACK_EXTERNAL_MODULE__32__","__WEBPACK_EXTERNAL_MODULE__34__","__WEBPACK_EXTERNAL_MODULE__35__","__WEBPACK_EXTERNAL_MODULE__36__","__WEBPACK_EXTERNAL_MODULE__37__","__WEBPACK_EXTERNAL_MODULE__38__","__WEBPACK_EXTERNAL_MODULE__39__","bindTemplate","template","styleStrings","cls","templateString","styleString","div","innerHTML","child","createDocumentFragment","firstChild","Node","getAttribute","old","hasAttribute","_initializing","_initialized","setAttribute","log","customElements","attributeChangedCallback","connectedCallback","node","importNode","attachShadow","shadowRoot","super","registerElement","_attribute","_default","desc","old_set","attr","JSON","stringify","parse","copy_to_clipboard","csv","element","body","select","execCommand","invertPromise","_resolve","throttlePromise","lock","async","swap","container","elems","every","classList","contains","insertBefore","json_attribute","array_attribute","RENDERERS","renderers","registerPlugin","plugin","old_plugin","getPlugin","getInstance","__perspective_plugins__","register_debug_plugin","_view","to_csv","delimiter","timer","_render_time","render","selectMode","resize","delete","useSourceMap","list","sourceMap","cssMapping","btoa","sourceMapping","unescape","encodeURIComponent","sourceURLs","sourceRoot","mediaQuery","alreadyImportedModules","EVENT_DRAG_DRAGSTART_PENDING","EVENT_PREFIX","EVENT_DRAG_DRAGSTART_CANCEL","ALLOWED_EFFECTS","DROP_EFFECTS","supportsPassive","supportsPassiveEventListeners","opts","isDOMElement","tagName","addDocumentListener","ev","passive","removeDocumentListener","removeEventListener","onEvt","el","off","average","reduce","v","isTouchIdentifierContainedInTouchEvent","touchEvent","touchIdentifier","changedTouches","identifier","updateCentroidCoordinatesOfTouchesIn","coordinateProp","outPoint","pageXs","pageYs","touches","touch","y","TRANSFORM_CSS_VENDOR_PREFIXES","translateElementToPoint","pnt","originalTransforms","centerOnCoordinates","parseInt","offsetWidth","offsetHeight","translate","transformProp","DataTransfer","_dataStore","_setDragImageHandler","_dropEffect","freeze","effectAllowed","setData","getData","clearData","format","splice","setDragImage","image","determineDropEffect","sourceNode","dispatchDragEvent","dragEvent","targetElement","dataStore","dataTransfer","cancelable","relatedTarget","leaveEvt","dndEvent","Event","bubbles","screenX","screenY","clientX","clientY","pageX","pageY","targetRect","getBoundingClientRect","offsetX","left","offsetY","top","defaultView","cancelled","determineDragOperation","dropEffect","DragOperationController","_initialEvent","_config","_sourceNode","_dragOperationEndedCb","_dragOperationState","_immediateUserSelection","_currentDropTarget","_lastTouchEvent","_initialTouch","_touchMoveHandler","_onTouchMove","_touchEndOrCancelHandler","_onTouchEndOrCancel","_setup","_this","_currentDragOperation","_dragDataStore","_currentHotspotCoordinates","_dragImagePageCoordinates","dragImageSrc","_dataTransfer","_dragImageOffset","_cleanup","dragImage","dragImageSetup","_dragImageTransforms","prefix","transform","zIndex","add","CLASS_PREFIX","_dragImage","dragImageOffset","dragImageCenterOnTouch","cs","getComputedStyle","marginLeft","marginTop","width","height","_iterationIntervalId","setInterval","_iterationLock","_dragAndDropProcessModelIteration","iterationInterval","clearInterval","parentNode","startDrag","dragStartConditionOverride","preventDefault","dragImageTranslateOverride","handledDragImageTranslate_1","previousDragOperation","dragCancelled","_dragOperationEnded","sourceEl","dragImageTransforms","transitionEndCb","visibility","csDragImage","durationInS","parseFloat","transitionDuration","rect","scrollLeft","documentElement","scrollTop","delayInS","transitionDelay","durationInMs","round","_finishDragOperation","newUserSelection","elementFromPoint","previousTargetElement","remove","currentDragOperationClass","dragFailed","tryFindDraggableTarget","draggable","cloneNode","prepareNodeCopyAsDragImage","srcNode","dstNode","csName","setProperty","getPropertyValue","getPropertyPriority","pointerEvents","removeAttribute","nodeName","canvasSrc","canvasDst","canvasSrcImgData","getContext","getImageData","putImageData","hasChildNodes","childNodes","activeDragOperation","onTouchstart","composePath","dragTarget","dragOperationEnded","err","onDelayTouchstart","evt","composedPath","onReleasedItem","cancel","move","scroll","CustomEvent","clearTimeout","holdToDrag","defaultActionOverride","defaultPrevented","override","forceApply","detectedFeatures","features","dragEvents","userAgentSupportingNativeDnD","isBlinkEngine","chrome","navigator","cp","_path","State","edit","column_name","computation","input_columns","swap_target","name_edited","computed_function_name","is_valid","vals","num_params","FORMATTER","Computation","formatter","input_type","return_type","category","calc_index","_active_columns","is_last_null","cidx","offsetTop","last_index","dragend","getRootNode","parentElement","idx","attr_name","attr_value","drop","currentTarget","_drop_target_hover","querySelector","columns","data_index","filtering","_plugin","deselectMode","_get_visible_column_count","querySelectorAll","_update_column_view","_debounce_update","column_dragend","column_dragleave","_drop_target_null","replaceChild","_original_index","_unset_drop_target_null","column_swap","new_index","column_replace","column_dragover","className","toggleAttribute","current_index","over_elem","to_replace","initial","is_diff","from_active","from_replace","from_append","from_required","to_null","column_drop","dragenter","stopPropagation","dragover","dragleave","COMPUTATIONS","hour_of_day","Date","getHours","day_of_week","getDay","month_of_year","getMonth","second_bucket","getTime","minute_bucket","date","setSeconds","setMilliseconds","hour_bucket","setMinutes","day_bucket","setHours","week_bucket","day","diff","getDate","setDate","month_bucket","year_bucket","setMonth","subtract","multiply","divide","invert","pow","sqrt","abs","percent_a_of_b","uppercase","toUpperCase","lowercase","concat_space","concat_comma","_insert_tree","elem","tree","pointer","_get_tree","comp","TREE","column_names","type_markers","float","boolean","datetime","_register_ids","_selector_template","_computation_selector","_register_callbacks","_update_computation","_register_inputs","_register_computations","_clear_error_messages","_disable_save_button","_input_columns","column","_drop_column","_drag_column","_remove_column","_hover_column","_pass_column","_clear_column_name","_parse_data_transfer","column_data","column_type","drop_target","drop_target_hover","nextSibling","is_swap","current_column","current_column_name","current_column_type","swapTarget","_set_input_column","deselect_column","_apply_state","bounds","inside_x","right","inside_y","bottom","inputs","_column_name_input","innerText","_set_column_name","_enable_save_button","_auto_column_name","computation_type","filter","detail","computation_name","selectedIndex","reset_inputs","_computation_type","_set_error_message","message","_column_name_error","_save_button","_save_computed_column","computed_column","_close_computed_column","_side_panel_actions","_close_button","SPAN","get_text_width","text","fontFamily","fontSize","awesomplete_style","_option_template","agg","_select_template","items","perspective","weighted_options","_weights","nothing","set_weights","xs","type_config","agg_dropdown","filter_dropdown","aggregate","filter_operand","_callback","_update_filter","choices","filter_operator","selector","Awesomplete","label","minChars","autoFirst","FILTER_CONTAINS","ITEM","before","evaluate","focus","_filter_operand","trim","operator","filter_input","operand","FILTER_OPERATORS","isNull","isNotNull","_blur_agg_dropdown","_get_computed_data","isIn","isNotIn","_set_data_transfer","_li","_visible","_row_close","_agg_dropdown","_sort_order","_filter_operator","_edit_computed_column_button","_column_aggregate_category","blur","option","_focus_agg_dropdown","debounced_filter","debounce","CancelTask","on_cancel","_on_cancel","_cancelled","StateElement","current_renderers","_get_view_dom_columns","callback","_get_view_all_columns","_get_view_active_columns","_get_view_active_valid_columns","_get_view_all_column_names","_get_view_active_column_names","_get_view_all_valid_column_names","_get_view_active_valid_column_names","_get_view_active_valid_column_count","_get_view_columns","active","col","_get_view_aggregates","op","_get_view_row_pivots","_get_view_column_pivots","_get_view_filter_nodes","_get_view_filters","_get_view_sorts","order","get_aggregate_attribute","aggs","found","Set","new_aggs","_aggregate_defaults","numberWithCommas","TYPE_ORDER","column_sorter","schema","s1","s2","_total_template","total","_nowrap_template","_warning","strings","flatMap","PerspectiveElement","computed_columns","_create_computed_column","ignore_size_check","table","computed","_set_updating","_table","_clear_state","_check_recreate_computed_columns","cols","computed_schema","_clear_columns","_initial_col_order","aggregate_attribute","find","all_cols","aggregates","TYPE_AGGREGATES","shown","row","_new_row","_inactive_columns","active_row","_show_column_container","compute","_show_side_panel_actions","filters","force_update","reset","max_cols","max_rows","num_columns","schema_columns","max_columns","column_group_diff","column_limit","max_cells","_show_warnings","num_rows","columns_are_truncated","rows_are_truncated","_plugin_information","warning","_plugin_information_message","_calculate_throttle_timeout","timeout","throttle","__render_times","_view_on_update","limit_points","_debounced","_task","updater","update","get_maxes","_warn_render_size_exceeded","_datavis","operandNode","getElementById","exclamation","is_valid_filter","title","borderColor","hidden","_is_config_changed","plugin_name","isEqual","_previous_config","_previous_plugin_name","_check_responsive_layout","row_pivots","column_pivots","_validate_filters","view_aggregates","remove_update","_view_updater","on_update","_render_count","_check_loaded_table","_load_table","performance","unshift","_restyle_plugin","styleElement","clear_table","remove_delete","_owner_viewer","_updating_promise","_register_debounce_instance","_update","_new_view","_get_worker","_worker","shared_worker","DomElement","set_aggregate_attribute","is_set","_get_type","_set_row_type","weights","to_json","json","_autocomplete_choices","_column_visibility_clicked","_column_aggregate_clicked","_column_filter_clicked","_sort_order_clicked","overflow","findIndex","pop_cols","lis","_update_column_list","ref","accessor","active_columns","next_col","_set_row_styles","nidx","_remove_null_columns","since_index","_set_column_defaults","active_cols","valid_active_cols","pref","_fill_numeric","labels","bypass","app","clientHeight","clientWidth","_persisted_side_panel_width","_side_panel","panel","_pre_resize","_aggregate_selector","_vis_selector","_filters","_row_pivots","_column_pivots","_add_computed_column","_computed_column","_computed_column_inputs","_inner_drop_target","_drop_target","_config_button","_reset_button","_download_button","_copy_button","_top_panel","_sort","_transpose_button","_plugin_information_action","_plugin_information_action_close","_resize_bar","_register_view_options","_register_data_attribute","load","__ROW_PATH__","ActionElement","_show_context_menu","toggle","_hide_context_menu","button","_show_config","_post_resize","pre","offsetParent","_open_computed_column","stopImmediatePropagation","_set_computed_column_input","_validate_computed_column","new_column","computed_column_name","params","add_computed","min_columns","shiftKey","new_aggregates","updated_agg","new_filters","_updating_filter","_increment_sort","column_sorting","abs_sorting","sort_orders","new_sort_order","_transpose","has_row","has_col","_reset_sidepanel","_resize_sidepanel","cursor","new_width","notifyResize","stop","_vis_selector_changed","classname","_toggle_config","copy","download","PERSISTENT_ATTRIBUTES","view_style","default_style","_resize_handler","toggleConfig","inner","dir","show","fterms","plugin_names","guess_plugin","pivots","pivot","isConnected","immediate","clone","widget","restore","save","delete_table","restyleElement","attributes","plugin_config","_load","flat","binStr","len","arr","click","catch","IS_INCLUDES","fromIndex","getOwnPropertyNamesModule","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","minimumFractionDigits","maximumFractionDigits","week","year","month","hour","minute","null_value","LN2","mantissaLength","exponent","mantissa","exponentLength","eMax","eBias","rt","sign","nBits","endPos","isArrayIteratorMethod","getIteratorMethod","callWithSafeIterationClosing","Result","stopped","AS_ENTRIES","IS_ITERATOR","iterFn","step","boundFunction","flush","head","last","macrotask","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","createTextNode","observe","characterData","promiseCapability","versions","v8","RE","ua","msie","substring","rv","edge","toNumber","FUNC_ERROR_TEXT","nativeMax","nativeMin","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","isSymbol","NAN","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","isObjectLike","symbolTag","objectProto","nativeObjectToString","isOwn","unmasked","_","me","isOpened","instance","properties","attrValue","configure","maxItems","DATA","SORT_BYLENGTH","CONTAINER","tabSelect","ul","role","inside","status","textContent","_events","keyCode","opened","selected","form","li","Suggestion","_list","disabled","activeElement","fire","goto","destroy","unbind","indexOfAwesomplete","previous","suggestions","originalEvent","siblingIndex","suggestion","regExpEscape","FILTER_STARTSWITH","around","item_id","expr","con","$$","init","previousElementSibling","Document","readyState","nativeReverse","$trim","forcedStringTrimMethod","whitespace","ltrim","rtrim","whitespaces","NativeSymbol","description","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","baseValues","arrayMap","iteratee","baseTimes","isArguments","isIndex","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseIsArguments","argsTag","reIsUint","isLength","typedArrayTags","freeProcess","binding","isPrototype","nativeKeys","Ctor","overArg","isFunction","baseIsEqual","baseIsEqualDeep","Stack","equalArrays","equalByTag","equalObjects","getTag","arrayTag","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","stackClear","stackDelete","stackGet","stackHas","stackSet","assocIndexOf","pop","LARGE_ARRAY_SIZE","pairs","isMasked","toSource","reIsHostCtor","funcProto","reIsNative","coreJsData","maskSrcKey","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","HASH_UNDEFINED","getMapData","setCacheAdd","setCacheHas","predicate","cache","mapToArray","setToArray","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","stringTag","arrayBufferTag","dataViewTag","symbolProto","symbolValueOf","convert","getAllKeys","objProps","objLength","skipCtor","objValue","objCtor","othCtor","baseGetAllKeys","getSymbols","arrayPush","keysFunc","symbolsFunc","arrayFilter","stubArray","nativeGetSymbols","resIndex","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","createTypedArrayConstructor","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","toOffset","typedArrayFrom","inheritIfRequired","fromList","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","CLAMPED","BYTES","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","dummy","typedArrayOffset","$length","$len","toPositiveInteger","mapfn","mapping","iteratorMethod","arraySpeciesCreate","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","callbackfn","specificCreate","some","Wrapper","NewTarget","NewTargetPrototype","$toLocaleString","toLocaleString","$slice","TO_LOCALE_STRING_BUG","EOF","USE_NATIVE_URL","arrayFrom","toASCII","URLSearchParamsModule","NativeURL","getInternalSearchParamsState","getState","getInternalURLState","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","part","radix","ipv4","parts","numbersSeen","ipv4Piece","swaps","address","pieceIndex","compress","char","serializeHost","ignore0","ipv6","maxIndex","maxLength","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","code","specialSchemes","ftp","http","https","ws","wss","scheme","includesCredentials","password","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","third","shortenURLsPath","pathSize","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","base","bufferCodePoints","failure","seenAt","seenBracket","seenPasswordToken","query","fragment","codePoint","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","updateSearchParams","updateURL","serializeURL","getOrigin","getProtocol","getUsername","getPassword","getHost","getHostname","getPort","getPathname","search","getSearch","getSearchParams","getHash","URLPrototype","output","accessorDescriptor","nativeCreateObjectURL","nativeRevokeObjectURL","revokeObjectURL","point","createProperty","arrayLike","propertyKey","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","fromCharCode","digitToBasic","digit","adapt","delta","numPoints","firstTime","k","baseMinusTMin","encode","currentValue","inputLength","extra","ucs2decode","bias","basicLength","handledCPCount","handledCPCountPlusOne","q","qMinusT","baseMinusT","encoded","hasOwn","getIterator","Headers","getInternalParamsState","getInternalIteratorState","URL_SEARCH_PARAMS","plus","sequences","percentSequence","percentDecode","sequence","decodeURIComponent","deserialize","serialize","parseSearchParams","attribute","validateArgumentsLength","passed","required","URLSearchParamsIterator","URLSearchParamsConstructor","entryIterator","entryNext","URLSearchParamsPrototype","append","getAll","entriesIndex","sliceIndex","headers","$jscomp.defineProperty","$jscomp.global","$jscomp.initSymbol","$jscomp.Symbol","$jscomp.SYMBOL_PREFIX","$jscomp.arrayIterator","$jscomp.initSymbolIterator","$jscomp.iteratorPrototype","$jscomp.setPrototypeOf","$jscomp.generator.Context","$jscomp.generator.Generator_","$jscomp.generator.Engine_","origPreventDefault","Event.prototype.preventDefault","isIE","window.CustomEvent","inType","initCustomEvent","origEvent","window.Event","MouseEvent","origMouseEvent","window.MouseEvent","initMouseEvent","ctrlKey","altKey","metaKey","Array.from","Object.assign","n$","WebComponents","PolyfilledHTMLTemplateElement","QSA","DOCUMENT_NODE","docQuerySelectorAll","DOCUMENT_FRAGMENT_NODE","fragQuerySelectorAll","elementQuerySelectorAll","needsTemplate","HTMLTemplateElement","brokenDocFragment","DocumentFragment","needsDocFrag","newNode","refNode","origInsertBefore","origCloneNode","Node.prototype.cloneNode","deep","newDom","HTMLElement","origAppendChild","Node.prototype.appendChild","origRemoveChild","origReplaceChild","Node.prototype.replaceChild","newChild","oldChild","Document.prototype.createDocumentFragment","frag","origImportNode","Document.prototype.importNode","impNode","capturedCloneNode","capturedCreateElement","capturedImportNode","capturedRemoveChild","capturedAppendChild","capturedReplaceChild","capturedParseFromString","DOMParser","parseFromString","capturedHTMLElementInnerHTML","capturedChildNodes","Element","needsCloning","t2","contentDoc","implementation","createHTMLDocument","canDecorate","templateStyle","firstElementChild","canProtoPatch","decorate","PolyfilledHTMLTemplateElement.decorate","namespaceURI","template.cloneNode","_cloneNode","defineInnerHTML","defineOuterHTML","bootstrap","topLevelWrappingMap","getInnerHTML","lastChild","docFrag","ownerDocument","PolyfilledHTMLTemplateElement.bootstrap","doc","templates","TEMPLATE_TAG","Document.prototype.createElement","localName","DOMParser.prototype.parseFromString","escapeAttrRegExp","escapeDataRegExp","escapeReplace","voidElements","makeSet","plaintextParents","c$","ELEMENT_NODE","attrs","TEXT_NODE","COMMENT_NODE","PolyfilledHTMLTemplateElement._cloneNode","fixClonedDom","s$","t$","dom","scripts","scriptSelector","ai","setTimeoutFunc","noop","_state","_handled","_value","_deferreds","doResolve","handle","deferred","_immediateFn","cb","ret","newValue","finale","_unhandledRejectionFn","Handler","ex","Promise.prototype.then","prom","$jscompDefaultExport","Promise.all","Promise.resolve","Promise.reject","Promise.race","Promise._unhandledRejectionFn","callbacks","PromisePolyfill._immediateFn","globalSymbolRegistryList","make","defProps","defProp","defValue","w","supportsAccessors","SymbolProto","xSymbol","descString","__description__","__tag__","stringKey","keyFor","sym","substr","hasInstance","isConcatSpreadable","species","unscopables","module$node_modules$es_symbol$dist$symbol.default","$jscomp.generator.createGenerator","script","flagMatcher","forceShady","forceCE","ShadyData","publicRoot","dirty","flattenedNodes","_prevAssignedSlot","_previouslyAssignedNodes","assignedSlot","assignedNodes","observer","previousSibling","ownerShadyRoot","__insideAccessors","__outsideAccessors","__onCallbackListeners","ensureShadyDataForNode","__shady","shadyDataForNode","settings","hasNativeShadowDOM","hasDescriptors","inUse","IS_IE","IS_EDGE","isTrackingLogicalChildNodes","nodeData","isShadyRoot","_localName","ownerShadyRootForNode","useNativeAccessors","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","extend","pd","extendAll","twiddle","hasDocumentContains","createPolyfilledHTMLCollection","nodes","nodes.item","namedItem","nodes.namedItem","$jscomp.makeIterator","scheduled","flushList","enqueue","didFlush","AsyncObserver","_scheduled","addedNodes","removedNodes","mutations","takeRecords","windowAddEventListener","Window","windowRemoveEventListener","elementQuerySelector","fragmentQuerySelector","documentQuerySelector","fragmentQuerySelectorAll","documentQuerySelectorAll","nodeWalker","createTreeWalker","NodeFilter","SHOW_ALL","elementWalker","SHOW_ELEMENT","currentNode","lastElementChild","nextElementSibling","textWalker","SHOW_TEXT","nextNode","nodeValue","nativeProtos","findNodeDescriptor","nodeAccessors","fragmentAccessors","documentAccessors","accessors","nativeTreeAccessors","nativeTreeWalker","clearNode","inertDoc","nativeIsConnectedAccessors","nativeIsConnected","nativeActiveElementDescriptor","OutsideAccessors","ClassNameAccessor","InsideAccessors","childNodes.item","childElementCount","tc","cn","nativeAccessors","containerName","htmlContainer","createElementNS","newContent","ShadowRootAccessor","ActiveElementAccessor","nativeContains","activeRoot","patchAccessorGroup","descriptors","force","objDesc","patchAccessors","patchOutsideElementAccessors","sd","patchInsideElementAccessors","linkNode","ref_node","containerData","ref_nodeData","psd","nsd","recordChildNodes","refData","ownerRoot","slotsAdded","allowNativeInsert","slots","_pendingSlots","_addSlots","_ensureSlotData","_slotList","_slotMap","$jscomp.arrayFromIterator","_asyncRender","resetTo","parentData","hasShadowRootWithSlot","firstComposedNode","composed","flattened","nativeMethods","adoptNode","scheduleObserver","preventNativeRemove","removeOwnerShadyRoot","_removeContainedSlots","changeSlotContent","_validateSlots","slot","_removeFlattenedNodes","didRemove","removingInsertionPoint","_hasInsertionPoint","distributeAttributeChange","_updateSlotName","oldName","__slotName","_nameForSlot","_sortSlots","addedNode","removedNode","schedule","halter","queryElements","elements","scopingShim","eventWrappersName","composedGetter","composedProp","alwaysComposed","unpatchedEvents","pathComposer","startNode","current","startRoot","retarget","refNodePath","ancestor","lastRoot","rootIdx","eventMixin","__composed","isTrusted","__composedPath","__relatedTarget","__relatedTargetComposedPath","__propagationStopped","__immediatePropagationStopped","mixinComposedFlag","Base","klazz","mixin","nonBubblingEventsToRetarget","hasRetargeted","fireHandlers","phase","hs","__handlers","retargetNonBubblingEvent","lastFiredRoot","AT_TARGET","findListener","wrappers","once","savedType","savedListener","savedCapture","savedOnce","savedPassive","savedNode","fnOrObj","optionsOrCapture","handlerType","handleEvent","ael","__shadyTarget","wrapperFn","patchEvent","lastCurrentTargetDesc","eventPhase","BUBBLING_PHASE","CAPTURING_PHASE","rel","patchProto","__sourceProto","PatchedEvent","PatchedCustomEvent","PatchedMouseEvent","newSplice","addedCount","removed","calcSplices","currentEnd","oldEnd","currentStart","oldStart","prefixCount","suffixCount","minLength","index1","index2","equals","rowCount","columnCount","distances","north","west","edits","EDIT_ADD","EDIT_DELETE","northWest","EDIT_LEAVE","EDIT_UPDATE","splices","oldIndex","previousValue","rootRendered","ShadyRootConstructionToken","isRendering","ancestorList","ancestors","ShadyRoot","token","SHADYROOT_NAME","_mode","hostData","MODE_CLOSED","rootData","_hasRendered","_renderPending","_render","_getRenderRoot","renderRoot","_rendererForHost","_isInsertionPoint","_distributeNodeToSlot","forcedSlot","oldSlot","CATCHALL_NAME","_addAssignedToFlattenedNodes","assigned","nestedAssigned","_fireSlotChange","slotData","_mapSlots","slotNamesToSort","listA","listB","nA","nB","wasRendering","_distribute","_clearSlotAssignedNodes","slotParentRoot","slotParentData","prevAssignedNodes","_compose","composeList","_composeNode","_updateChildNodes","connectMap","__shadydom_connectedCallback","__shadydom_disconnectedCallback","connected","disconnected","disconnectedCallback","ManageConnect","connectFlag","base.prototype.__shadydom_connectedCallback","base.prototype.__shadydom_disconnectedCallback","getAssignedSlot","windowMixin","nodeMixin","ATTRIBUTE_NODE","nc","IsConnectedAccessor","textMixin","fragmentMixin","useNative","slotMixin","flatten","elementMixin","documentMixin","nativeBlur","htmlElementMixin","shadowActive","shadyData","eventName","shadowRootMixin","patchBuiltin","ShadyDOM","patch","filterMutations","targetRootNode","mutation","mutationInScope","_observer","_node","unobserveChildren","activateFocusEventOverrides","composedClickFn","patchEvents","nativeHTMLElement","Text","HTMLSlotElement","patchShadowRootAccessors","prop","ShadowRoot","reservedTagList","isValidCustomElementName","reserved","validForm","nativeValue","__CE_isImportDocument","nextSiblingOrAncestorSibling","walkDeepDescendantElements","visitedImports","import","__CE_shadowRoot","setPropertyUnchecked","destination","CustomElementInternals","_localNameToDefinition","_constructorToDefinition","_patches","_hasPatches","addPatch","patchTree","connectTree","custom","__CE_state","upgradeElement","disconnectTree","patchAndUpgradeTree","upgrade","gatherElements","__CE_hasRegistry","__CE_documentLoadHandled","clonedVisitedImports","definition","constructionStack","failed","__CE_definition","observedAttributes","DocumentConstructionObserver","internals","_internals","_document","_handleMutations","childList","subtree","disconnect","Deferred","_promise","CustomElementRegistry","_elementDefinitionIsRunning","_whenDefinedDeferred","_flushCallback","this._flushCallback","_flushPending","_pendingDefinitions","_documentConstructionObserver","__CE_patched","oldValue","SyntaxError","getCallback","callbackValue","adoptedCallback","setDefinition","_flush","pendingDefinitions","elementsWithStableDefinitions","elementsWithPendingDefinitions","pendingElements","pendingUpgradableElements","upgrade.prototype","get.prototype","whenDefined.prototype","CustomElementRegistry$$module$node_modules$$webcomponents$custom_elements$src$CustomElementRegistry_prototype$whenDefined","whenDefined","prior","polyfillWrapFlushCallback.prototype","polyfillWrapFlushCallback","outer","Document_createElement","Document_createElementNS","Document_importNode","Document_prepend","Document_append","DocumentFragment_prepend","DocumentFragment_append","Node_cloneNode","Node_appendChild","Node_insertBefore","Node_removeChild","Node_replaceChild","Node_textContent","Element_attachShadow","Element_innerHTML","Element_getAttribute","Element_setAttribute","Element_removeAttribute","Element_getAttributeNS","getAttributeNS","Element_setAttributeNS","setAttributeNS","Element_removeAttributeNS","removeAttributeNS","Element_insertAdjacentElement","Element_insertAdjacentHTML","Element_prepend","Element_append","Element_before","Element_after","Element_replaceWith","Element_remove","HTMLElement_innerHTML","HTMLElement_insertAdjacentElement","HTMLElement_insertAdjacentHTML","AlreadyConstructedMarker","builtIn","appendPrependPatch","builtInMethod","connectedElements","prepend","priorCustomElements","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_createElement.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_importNode.call","NS_HTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_createElementNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_prepend","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_append","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.DocumentFragment_prepend","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.DocumentFragment_append","patch_textContent","baseDescriptor","assignedValue","childNodesLength","insertedNodes","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_insertBefore.call","nativeResult","nodeWasConnected","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_appendChild.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_cloneNode.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_removeChild.call","nodeToInsert","nodeToRemove","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_replaceChild.call","nodeToInsertWasConnected","thisIsConnected","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_textContent","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_textContent.get","patch_innerHTML","htmlString","removedElements","patch_insertAdjacentElement","baseMethod","wasConnected","insertedElement","patch_insertAdjacentHTML","upgradeNodesInRange","marker","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_attachShadow","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_attachShadow.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_innerHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_innerHTML.get","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_innerHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_innerHTML.get","isTemplate","rawElement","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_setAttribute.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_getAttribute.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_setAttributeNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_getAttributeNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_removeAttribute.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_removeAttributeNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_insertAdjacentElement","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_insertAdjacentElement","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_insertAdjacentHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_insertAdjacentHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_prepend","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_append","beforeAfterPatch","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_before","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_after","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_replaceWith","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_remove","StyleNode","parseCss","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.comments","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.port","OPEN_BRACE","CLOSE_BRACE","_expandUnicodeEscapes","repeat","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.multipleSpaces","lastIndexOf","AT_START","MEDIA_START","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.MEDIA_RULE","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.keyframesRule","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.KEYFRAMES_RULE","VAR_START","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.MIXIN_RULE","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.STYLE_RULE","r$","STYLE_RULE","nativeCssVariables_","KEYFRAMES_RULE","MEDIA_RULE","MIXIN_RULE","comments","customProp","mixinProp","mixinApply","varApply","keyframesRule","multipleSpaces","nativeShadow","calcCssVariables","CSS","supports","ShadyCSS","nativeCss","nativeCssVariables","VAR_ASSIGN","MIXIN_MATCH","VAR_CONSUMED","ANIMATION_MATCH","MEDIA_MATCH","BRACKETED","styleTextSet","toCssText","rules","forEachRule","preserveProperties","cssText","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.customProp","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.mixinProp","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.mixinApply","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.varApply","rulesForStyle","isKeyframesSelector","rule","styleRuleCallback","keyframesRuleCallback","onlyActiveRules","skipRules","matchMedia","applyCss","moniker","contextNode","applyStyle","lastHeadApplyNode","applyStylePlaceHolder","placeHolder","createComment","scope","compareDocumentPosition","DOCUMENT_POSITION_PRECEDING","findMatchingParen","level","setElementClassRaw","getIsExtends","typeExtension","is","extends","splitSelectorList","StyleTransformer","_transformDom","transformer","_content","shouldRemoveScope","SCOPE_NAME","CLASS","domReplaceScope","oldScope","newScope","domRemoveScope","elementStyles","styleRules","cssBuildType","css","ext","hostScope","_calcHostScope","CSS_CLASS_PREFIX","_calcElementScope","isScoped","_transformRule","transformedSelector","_transformRuleCss","_transformComplexSelector","p$","COMPLEX_SELECTOR_SEP","_twiddleNthPlus","NTH","_transformSimpleSelector","PSEUDO_PREFIX","normalizeRootSelector","ROOT","isNth","isMatches","MATCHES","_preserveMatchesPseudo","MATCHES_REPLACEMENT","SLOTTED_START","SIMPLE_SELECTOR_SEP","info","combinator","_transformCompoundSelector","slottedIndex","SLOTTED","_transformHostSelector","HOST_PAREN","paren","SIMPLE_SELECTOR_PREFIX","SELECTOR_NO_MATCH","slotted","SLOTTED_PAREN","DIR_PAREN","_replaceMatchesPseudo","acc","cur","_transformDocumentSelector","SCOPE_DOC_SELECTOR","$jscomp.global.Object.defineProperties","StyleInfo","ast","placeholder","ownStylePropertyNames","overrideStyleProperties","customStyle","scopeSelector","styleProperties","styleInfo","_getStyleRules","StyleProperties","decorateRule","propertyInfo","collectProperties","collectCssText","collectConsumingCssText","any","valueForProperty","valueForProperties","processVariableAndFallback","suffix","comma","fallback","propertyValue","colon","pp","hostAndRootPropertiesForScope","hostProps","rootProps","cssBuild","whenHostOrRootRule","parsedSelector","isRoot","isHost","selectorToMatch","_element","transformStyles","hostSelector","hostRx","HOST_PREFIX","HOST_SUFFIX","keyframeTransforms","_elementKeyframeTransforms","keyframesRules","_keyframes","keyframesNameRx","_scopeKeyframes","transformedKeyframesName","scopeId","_keyframesRuleTransformer","StyleInfo$$module$node_modules$$webcomponents$shadycss$src$style_info.get","applyProperties","applyKeyframeTransforms","hasAnimations","keyframeNamesToTransform","keyframe","_scopeSelector","applyCustomStyle","XSCOPE_NAME","placeholderMap","ce","origDefine","wrappedDefine","clazz","StyleCache","mxns","mxn","classes","currentScope","unscopedNodes","hostForUnscopedNode","unscopedNode","scopeForPreviouslyUnscopedNode","tagname","typeMax","ownPropertyNames","_validate","pn","delayedStart","requestAnimationFrame","module$node_modules$$webcomponents$shadycss$src$document_watcher.flush","templateMap","invalidate","elementName","templateIsValid","styleCache","ScopingShim","_scopeCounter","_documentOwner","_documentOwnerStyleInfo","StyleInfo$$module$node_modules$$webcomponents$shadycss$src$style_info.set","_elementsHaveApplied","_customStyleInterface","_applyShim","_ensure","ApplyShim","_ensureApplyShim","_ensureCustomStyleInterface","CustomStyleInterface","transformCustomStyleForDocument","flushCustomStyles","_styleOwnerForNode","_updateProperties","ownerStyleInfo","owner","hostAndRootProps","_mixinOverrideStyles","propertiesMatchingHost","propertyDataFromStyles","overrides","reify","getStyleAst.prototype","getStyleAst","styleAstToString.prototype","styleAstToString","prepareTemplate.prototype","prepareTemplate","prepareTemplateDom","prepareTemplateStyles","_prepared","_getCssBuild","styleTextParts","styles","scopingAttribute","newStyle","__cssBuild","_cssBuild","decorateStyles","keyframes","ruleIndex","collectPropertiesInCssText","onKeyframesRule","_generateStaticStyle","shadowroot","_style","_ownPropertyNames","prepareTemplateDom.prototype","_domPrepared","domAddScope","flushCustomStyles.prototype","customStyles","_revalidateCustomStyleApplyShim","_revalidateApplyShim","_applyCustomStyles","styleDocument","overrideProps","_prepareHost","removeProperty","startValidatingTemplate","_validating","cachedStyle","cacheEntry","_applyStyleProperties","oldScopeSelector","_generateScopeSelector","applyElementStyle","applyElementScopeSelector","styleDocument.prototype","styleSubtree","shadowChildren","transformCustomStyleForDocument.prototype","documentRule","getComputedStyleValue","setElementClass.prototype","setElementClass","classString","scopeName","classAttr","k$","_styleInfoForNode.prototype","_styleInfoForNode","elementExtends","IDNAToASCII","h","_isInvalid","percentEscape","percentEscapeQuery","errors","_scheme","relative","_isRelative","_query","_fragment","_schemeData","_host","_port","_username","_password","nextC","nextNextC","tempC","tmp","relativePathDotMapping","jURL","_url","hasWorkingUrl","forceJURL","u","authority","OriginalURL","jURL.createObjectURL","jURL.revokeObjectURL","shouldFlush","flusher","flushAndFire","Timeout","clearFn","_id","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","onreadystatechange","attachEvent","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","browser","env","argv","on","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","cwd","chdir","umask","callRegExpExec","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","separator","limit","lim","lastLength","lastLastIndex","separatorCopy","splitter","unicodeMatching","z","flattenIntoArray","sourceLen","original","depth","mapper","targetIndex","sourceIndex","mapFn","arrayMethodIsStrict","nativeSort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STRICT_METHOD","comparefn","directives","isDirective","isCEPolyfill","reparentNodes","removeNodes","noChange","nodeMarker","markerRegex","boundAttributeSuffix","Template","nodesToRemove","walker","lastPartIndex","partIndex","hasAttributes","endsWith","stringForPart","lastAttributeNameRegex","attributeLookupName","attributeValue","statics","insert","createMarker","isTemplatePartActive","processor","__parts","setValue","commit","nodeIndex","handleTextExpression","insertAfterNode","handleAttributeExpressions","commentMarker","isCommentBinding","commentOpen","attributeMatch","getHTML","getTemplateElement","svgElement","isPrimitive","isIterable","AttributeCommitter","_createPart","_getValue","committer","directive","__pendingValue","endNode","__insert","__commitText","__commitTemplateResult","__commitNode","__commitIterable","valueAsString","templateFactory","_clone","itemParts","itemPart","appendIntoPart","insertAfterPart","PropertyCommitter","single","PropertyPart","eventOptionsSupported","_e","eventContext","__boundHandleEvent","newListener","oldListener","shouldRemoveListener","shouldAddListener","__options","getOptions","defaultTemplateProcessor","templateCache","templateCaches","stringsArray","keyString","appendInto","svg","CONFIG_ALIASES","row_pivot","col_pivot","col_pivots","column_pivot","sorts","CONFIG_VALID_KEYS","NUMBER_AGGREGATES","STRING_AGGREGATES","SORT_ORDERS","SORT_ORDER_IDS","lessThan","greaterThan","lessThanOrEquals","greaterThanOrEquals","doesNotEqual","bitwiseAnd","bitwiseOr","and","or","beginsWith","BOOLEAN_FILTERS","NUMBER_FILTERS","STRING_FILTERS","DATETIME_FILTERS","COLUMN_SEPARATOR_STRING","TYPE_FILTERS","__CALLBACK_CACHE__","__CALLBACK_INDEX__","unsubscribe","cmd","callback_id","msg","_name","subscribe","async_queue","bindall","table_name","view_name","proxy_view","to_arrow","arrow","computed_table","proxy_table","searchElement","to_columns","column_paths","set_depth","get_row_expanded","expand","collapse","col_to_js_typed_array","on_delete","execute","Client","initialized","transferable","msg_id","handlers","messages","keep_alive","initialize_profile_thread","open_table","open_view","_handle","msgs","terminate","HEARTBEAT_TIMEOUT","_fetch","wasmXHR","responseType","onload","response","wasm_worker","wasm","_wasm","WebWorkerClient","register","WebAssembly","_detect_transferable","ab","WebSocketClient","_ws","WebSocket","binaryType","onopen","heartbeat","_pending_arrow","is_transferable","WORKER_SINGLETON","__WORKER__","__CONFIG__","config_str","currentScript","mod","websocket","defaults"],"mappings":"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","file":"perspective-viewer.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \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 = 123);\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 has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\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 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","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\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","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\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 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","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\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 || inspectSource(this);\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","'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","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\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 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 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 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","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\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 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","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","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","module.exports = false;\n","module.exports = {};\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","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\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 Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nconst DEFAULT_CONFIG = require(\"./settings.js\").default;\nconst get_config_file = require(\"./__node.js\").default;\n\nmodule.exports.get_types = function() {\n return Object.keys(module.exports.get_config().types);\n};\n\nmodule.exports.get_type_config = function(type) {\n const config = {};\n if (module.exports.get_config().types[type]) {\n Object.assign(config, module.exports.get_config().types[type]);\n }\n if (config.type) {\n const props = module.exports.get_type_config(config.type);\n Object.assign(props, config);\n return props;\n } else {\n return config;\n }\n};\n\nfunction isObject(item) {\n return item && typeof item === \"object\" && !Array.isArray(item);\n}\n\nfunction mergeDeep(target, ...sources) {\n if (!sources.length) return target;\n const source = sources.shift();\n\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, {[key]: {}});\n mergeDeep(target[key], source[key]);\n } else {\n Object.assign(target, {[key]: source[key]});\n }\n }\n }\n\n return mergeDeep(target, ...sources);\n}\n\nglobal.__PERSPECTIVE_CONFIG__ = undefined;\n\nmodule.exports.override_config = function(config) {\n if (global.__PERSPECTIVE_CONFIG__) {\n console.warn(\"Config already initialized!\");\n }\n global.__PERSPECTIVE_CONFIG__ = mergeDeep(DEFAULT_CONFIG, config);\n};\n\nmodule.exports.get_config = function get_config() {\n if (!global.__PERSPECTIVE_CONFIG__) {\n global.__PERSPECTIVE_CONFIG__ = mergeDeep(DEFAULT_CONFIG, typeof window === \"undefined\" ? get_config_file() : global.__TEMPLATE_CONFIG__ || {});\n }\n return global.__PERSPECTIVE_CONFIG__;\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 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 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');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\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 EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\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","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","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar classof = require('../internals/classof-raw');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar IS_NODE = classof(process) == 'process';\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (promise, state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(promise, state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (handler = global['on' + name]) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (promise, state) {\n task.call(global, function () {\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (promise, state) {\n task.call(global, function () {\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, promise, state, unwrap) {\n return function (value) {\n fn(promise, state, value, unwrap);\n };\n};\n\nvar internalReject = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(promise, state, true);\n};\n\nvar internalResolve = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, promise, wrapper, state),\n bind(internalReject, promise, wrapper, state)\n );\n } catch (error) {\n internalReject(promise, wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(promise, state, false);\n }\n } catch (error) {\n internalReject(promise, { done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n } catch (error) {\n internalReject(this, state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(this, state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, promise, state);\n this.reject = bind(internalReject, promise, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.github.io/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.github.io/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.github.io/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.github.io/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar 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 = TO_STRING_TAG_SUPPORT ? classofRaw : 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 regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\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\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\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 || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else 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","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\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 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');\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 exportTypedArrayMethod = 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 exportTypedArrayStaticMethod = 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\nmodule.exports = {\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 exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","\nvar utils = require(\"!!/Users/v625154/work/perspective/packages/perspective-webpack-plugin/src/js/utils.js\");\nmodule.exports = utils.publicPath(__webpack_public_path__) + \"psp.async.wasm\";","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 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 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 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 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(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","module.exports = {};\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 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 store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\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","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 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","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","'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, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\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 if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\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';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\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, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\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\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\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 re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\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 REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\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 }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\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","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","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","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\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","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-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 definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\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.6.4',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\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 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 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 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 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 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 getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\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 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 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","exports.f = Object.getOwnPropertySymbols;\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","'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","'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","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;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\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","'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","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\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 IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\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 $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\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 unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\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 intIndex = toIndex(index);\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 intIndex = toIndex(index);\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\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf($DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataViewPrototype.setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\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 = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\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","'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","var anObject = require('../internals/an-object');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\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 global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (classof(process) == 'process') {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts && !fails(post)) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\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","'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","'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 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 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","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\n/**\n * An Object for capturing details of the invoking script's origin.\n *\n * Returns\n * -------\n * An instance of a ScriptPath object. Interesting methods on this object\n * include:\n * fullPath : The complete path of this script.\n * path : The path (no host).\n * host : The host (no path).\n * file : The file name itself.\n */\nfunction ScriptPath() {\n var pathParts;\n try {\n throw new Error();\n } catch (e) {\n var stackLines = e.stack.split(\"\\n\");\n var callerIndex = 0;\n for (var i in stackLines) {\n if (!stackLines[i].match(/http[s]?:\\/\\//)) continue;\n callerIndex = Number(i);\n break;\n }\n pathParts = stackLines[callerIndex].match(/((http[s]?:\\/\\/.+\\/)([^\\/]+\\.(js|html))).*?:/);\n }\n\n this.fullPath = function() {\n return pathParts ? pathParts[1] : typeof window !== \"undefined\" ? window.location.origin + window.location.pathname : \"\";\n };\n this.path = function() {\n return pathParts ? pathParts[2] : typeof window !== \"undefined\" ? window.location.pathname : \"\";\n };\n this.host = function() {\n var x = this.path().match(/.+?\\/\\/.+?\\//);\n return x ? x[0] : typeof window !== \"undefined\" ? window.location.hostname : \"\";\n };\n this.file = function() {\n return pathParts ? pathParts[3] : \"\";\n };\n}\n\nvar __SCRIPT_PATH__ = new ScriptPath();\n\nmodule.exports.host = __SCRIPT_PATH__.host();\n\nmodule.exports.path = __SCRIPT_PATH__.path();\n\nmodule.exports.isCrossOrigin = function(webpackOrigin) {\n var inWebpack = !!(webpackOrigin && webpackOrigin.length);\n if (inWebpack) {\n var link = document.createElement(\"a\");\n link.href = webpackOrigin;\n\n if (link.href.startsWith(window.location.origin)) {\n return false;\n } else {\n // we're CORS\n return true;\n }\n } else {\n return window.location.origin !== module.exports.host.slice(0, window.location.origin.length);\n }\n};\n\nmodule.exports.publicPath = function(webpackOrigin) {\n var inWebpack = !!(webpackOrigin && webpackOrigin.length);\n if (inWebpack) {\n return webpackOrigin;\n } else {\n return module.exports.path;\n }\n};\n\nmodule.exports.BlobWorker = function(responseText, ready) {\n var blob = new Blob([responseText]);\n var obj = window.URL.createObjectURL(blob);\n var worker = new Worker(obj);\n if (ready) {\n ready(worker);\n }\n};\n\nmodule.exports.XHRWorker = function XHRWorker(url, ready) {\n var oReq = new XMLHttpRequest();\n oReq.addEventListener(\n \"load\",\n function() {\n module.exports.BlobWorker(oReq.responseText, ready);\n },\n oReq\n );\n oReq.open(\"get\", url, true);\n oReq.send();\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\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","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\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","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","module.exports = function() {\n var utils = require(\"!!/Users/v625154/work/perspective/packages/perspective-webpack-plugin/src/js/utils.js\");\n var workerPath = utils.publicPath(__webpack_public_path__) + \"perspective.wasm.worker.js\";\n if (utils.isCrossOrigin(__webpack_public_path__)) {\n return new Promise(function(resolve) {\n utils.XHRWorker(workerPath, resolve);\n });\n } else {\n return new Promise(function(resolve) {\n resolve(new Worker(workerPath)); \n });\n }\n };","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"lit-html\"), require(\"@finos/perspective/dist/esm/config\"), require(\"core-js/modules/es.array.iterator\"), require(\"core-js/modules/web.dom-collections.iterator\"), require(\"@finos/perspective\"), require(\"core-js/modules/es.promise\"), require(\"core-js/modules/es.string.replace\"), require(\"core-js/modules/es.regexp.to-string\"), require(\"core-js/modules/es.string.includes\"), require(\"lodash/debounce\"), require(\"awesomplete\"), require(\"core-js/modules/es.array.reverse\"), require(\"core-js/modules/es.string.trim\"), require(\"core-js/modules/es.symbol.description\"), require(\"lodash/values\"), require(\"lodash/isEqual\"), require(\"core-js/modules/es.array-buffer.slice\"), require(\"core-js/modules/es.typed-array.uint8-array\"), require(\"core-js/modules/es.typed-array.to-locale-string\"), require(\"core-js/modules/web.url\"), require(\"@webcomponents/webcomponentsjs\"), require(\"core-js/modules/es.object.assign\"), require(\"core-js/modules/es.string.match\"), require(\"core-js/modules/es.string.split\"), require(\"core-js/modules/es.array.flat-map\"), require(\"core-js/modules/es.array.sort\"), require(\"core-js/modules/es.array.unscopables.flat-map\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"lit-html\", \"@finos/perspective/dist/esm/config\", \"core-js/modules/es.array.iterator\", \"core-js/modules/web.dom-collections.iterator\", \"@finos/perspective\", \"core-js/modules/es.promise\", \"core-js/modules/es.string.replace\", \"core-js/modules/es.regexp.to-string\", \"core-js/modules/es.string.includes\", \"lodash/debounce\", \"awesomplete\", \"core-js/modules/es.array.reverse\", \"core-js/modules/es.string.trim\", \"core-js/modules/es.symbol.description\", \"lodash/values\", \"lodash/isEqual\", \"core-js/modules/es.array-buffer.slice\", \"core-js/modules/es.typed-array.uint8-array\", \"core-js/modules/es.typed-array.to-locale-string\", \"core-js/modules/web.url\", \"@webcomponents/webcomponentsjs\", \"core-js/modules/es.object.assign\", \"core-js/modules/es.string.match\", \"core-js/modules/es.string.split\", \"core-js/modules/es.array.flat-map\", \"core-js/modules/es.array.sort\", \"core-js/modules/es.array.unscopables.flat-map\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"lit-html\"), require(\"@finos/perspective/dist/esm/config\"), require(\"core-js/modules/es.array.iterator\"), require(\"core-js/modules/web.dom-collections.iterator\"), require(\"@finos/perspective\"), require(\"core-js/modules/es.promise\"), require(\"core-js/modules/es.string.replace\"), require(\"core-js/modules/es.regexp.to-string\"), require(\"core-js/modules/es.string.includes\"), require(\"lodash/debounce\"), require(\"awesomplete\"), require(\"core-js/modules/es.array.reverse\"), require(\"core-js/modules/es.string.trim\"), require(\"core-js/modules/es.symbol.description\"), require(\"lodash/values\"), require(\"lodash/isEqual\"), require(\"core-js/modules/es.array-buffer.slice\"), require(\"core-js/modules/es.typed-array.uint8-array\"), require(\"core-js/modules/es.typed-array.to-locale-string\"), require(\"core-js/modules/web.url\"), require(\"@webcomponents/webcomponentsjs\"), require(\"core-js/modules/es.object.assign\"), require(\"core-js/modules/es.string.match\"), require(\"core-js/modules/es.string.split\"), require(\"core-js/modules/es.array.flat-map\"), require(\"core-js/modules/es.array.sort\"), require(\"core-js/modules/es.array.unscopables.flat-map\")) : factory(root[\"lit-html\"], root[\"@finos/perspective/dist/esm/config\"], root[\"core-js/modules/es.array.iterator\"], root[\"core-js/modules/web.dom-collections.iterator\"], root[\"@finos/perspective\"], root[\"core-js/modules/es.promise\"], root[\"core-js/modules/es.string.replace\"], root[\"core-js/modules/es.regexp.to-string\"], root[\"core-js/modules/es.string.includes\"], root[\"lodash/debounce\"], root[\"awesomplete\"], root[\"core-js/modules/es.array.reverse\"], root[\"core-js/modules/es.string.trim\"], root[\"core-js/modules/es.symbol.description\"], root[\"lodash/values\"], root[\"lodash/isEqual\"], root[\"core-js/modules/es.array-buffer.slice\"], root[\"core-js/modules/es.typed-array.uint8-array\"], root[\"core-js/modules/es.typed-array.to-locale-string\"], root[\"core-js/modules/web.url\"], root[\"@webcomponents/webcomponentsjs\"], root[\"core-js/modules/es.object.assign\"], root[\"core-js/modules/es.string.match\"], root[\"core-js/modules/es.string.split\"], root[\"core-js/modules/es.array.flat-map\"], root[\"core-js/modules/es.array.sort\"], root[\"core-js/modules/es.array.unscopables.flat-map\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__, __WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__3__, __WEBPACK_EXTERNAL_MODULE__4__, __WEBPACK_EXTERNAL_MODULE__6__, __WEBPACK_EXTERNAL_MODULE__7__, __WEBPACK_EXTERNAL_MODULE__9__, __WEBPACK_EXTERNAL_MODULE__10__, __WEBPACK_EXTERNAL_MODULE__11__, __WEBPACK_EXTERNAL_MODULE__12__, __WEBPACK_EXTERNAL_MODULE__13__, __WEBPACK_EXTERNAL_MODULE__14__, __WEBPACK_EXTERNAL_MODULE__15__, __WEBPACK_EXTERNAL_MODULE__17__, __WEBPACK_EXTERNAL_MODULE__18__, __WEBPACK_EXTERNAL_MODULE__27__, __WEBPACK_EXTERNAL_MODULE__28__, __WEBPACK_EXTERNAL_MODULE__29__, __WEBPACK_EXTERNAL_MODULE__30__, __WEBPACK_EXTERNAL_MODULE__31__, __WEBPACK_EXTERNAL_MODULE__32__, __WEBPACK_EXTERNAL_MODULE__34__, __WEBPACK_EXTERNAL_MODULE__35__, __WEBPACK_EXTERNAL_MODULE__36__, __WEBPACK_EXTERNAL_MODULE__37__, __WEBPACK_EXTERNAL_MODULE__38__, __WEBPACK_EXTERNAL_MODULE__39__) {\nreturn "," \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 = 40);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\n/**\n * Instantiate a Template DOM object from an HTML text string.\n *\n * Params\n * ------\n * template : An HTML string representing a template.\n *\n * Returns\n * -------\n * A Template DOM object.\n */\n\nexport function importTemplate(template) {\n const div = document.createElement(\"div\");\n div.innerHTML = template;\n return Array.prototype.slice.call(div.children)[0];\n}\n\nfunction setTemplateContent(template) {\n // return early in browsers that have template tag support\n if (template.content) {\n return;\n }\n template.content = document.createDocumentFragment();\n let child;\n while ((child = template.firstChild)) {\n Node.prototype.appendChild.call(template.content, child);\n }\n}\n\n/**\n * A simple tool for creating Web Components v0.\n *\n * Params\n * ------\n * template : An HTML string representing a template. Should have an 'id'\n * attribute which will become the new Web Component's tag name.\n * proto : The new Web Component's prototype object, as per spec.\n */\nexport function registerElement(templateString, styleString, proto) {\n const template = importTemplate(templateString);\n setTemplateContent(template);\n if (styleString) {\n template.innerHTML = `<style>${styleString.toString()}</style>` + template.innerHTML;\n }\n template.innerHTML = `<style id=\"psp_styles\" scope=\"${template.getAttribute(\"id\")}\">test{}</style>` + template.innerHTML;\n\n const _perspective_element = class extends proto {\n attributeChangedCallback(name, old, value) {\n if (value === null) {\n value = \"null\";\n }\n if (name[0] !== \"_\" && old != value && !!Object.getOwnPropertyDescriptor(proto.prototype, name).set) {\n this[name] = value;\n }\n }\n\n connectedCallback() {\n if (this._initialized) {\n return;\n }\n this._initializing = true;\n var node = document.importNode(template.content, true);\n this.attachShadow({mode: \"open\"});\n this.shadowRoot.appendChild(node);\n\n if (super.connectedCallback) {\n super.connectedCallback();\n }\n\n // Call all attributes bound to setters on the proto\n for (let key of Object.getOwnPropertyNames(proto.prototype)) {\n if (key !== \"connectedCallback\") {\n if (this.hasAttribute(key) && key[0] !== \"_\" && !!Object.getOwnPropertyDescriptor(proto.prototype, key).set) {\n this[key] = this.getAttribute(key);\n }\n }\n }\n this._initializing = false;\n this._initialized = true;\n }\n\n static get observedAttributes() {\n return Object.getOwnPropertyNames(proto.prototype);\n }\n };\n\n for (let key of Object.getOwnPropertyNames(proto.prototype)) {\n let descriptor = Object.getOwnPropertyDescriptor(proto.prototype, key);\n if (descriptor && descriptor.set) {\n let old = descriptor.set;\n descriptor.set = function(val) {\n if (!this.hasAttribute(key) || this.getAttribute(key) !== val) {\n this.setAttribute(key, val);\n return;\n }\n if (!this._initializing && !this._initialized) {\n return;\n }\n old.call(this, val);\n };\n Object.defineProperty(proto.prototype, key, descriptor);\n }\n }\n\n let name = template.getAttribute(\"id\");\n console.log(`Registered ${name}`);\n\n window.customElements.define(name, _perspective_element);\n}\n\nexport function bindTemplate(template, ...styleStrings) {\n const style = styleStrings.map(x => x.toString()).join(\"\\n\");\n return function(cls) {\n return registerElement(template, {toString: () => style}, cls);\n };\n}\n\n/**\n * A decorator for declaring a setter property of an HTMLElement descendent\n * class as serialized JSON. Handles converting these types before invoking\n * the underlying function/\n *\n * @param {object} _default the default value to supply the setter when\n * undefined, removed or invalid.\n */\nfunction _attribute(_default) {\n return function(cls, name, desc) {\n const old_set = desc.value;\n desc.set = function(x) {\n let attr = this.getAttribute(name);\n try {\n if (x === null || x === undefined || x === \"\") {\n x = _default();\n }\n if (typeof x !== \"string\") {\n x = JSON.stringify(x);\n }\n if (x !== attr) {\n attr = x;\n }\n attr = JSON.parse(attr);\n } catch (e) {\n console.warn(`Invalid value for attribute \"${name}\": ${x}`);\n attr = _default();\n }\n old_set.call(this, attr);\n };\n desc.get = function() {\n if (this.hasAttribute(name)) {\n return JSON.parse(this.getAttribute(name));\n } else {\n return _default();\n }\n };\n delete desc[\"value\"];\n delete desc[\"writable\"];\n return desc;\n };\n}\n\nexport function copy_to_clipboard(csv) {\n let element = document.createElement(\"textarea\");\n document.body.appendChild(element);\n element.value = csv;\n element.select();\n document.execCommand(\"copy\");\n document.body.removeChild(element);\n}\n\n/**\n * Just like `setTimeout` except it returns a promise which resolves after the\n * callback has (also resolved).\n *\n * @param {func} cb\n * @param {*} timeout\n */\nexport async function setPromise(cb = async () => {}, timeout = 0) {\n await new Promise(x => setTimeout(x, timeout));\n return await cb();\n}\n\nconst invertPromise = () => {\n let resolve;\n let promise = new Promise(_resolve => {\n resolve = _resolve;\n });\n promise.resolve = resolve;\n return promise;\n};\n\nexport function throttlePromise(target, property, descriptor) {\n const lock = Symbol(\"private lock\");\n const f = descriptor.value;\n descriptor.value = async function(...args) {\n if (this[lock]) {\n await this[lock];\n if (this[lock]) {\n await this[lock];\n return;\n }\n }\n this[lock] = invertPromise();\n let result;\n try {\n result = await f.call(this, ...args);\n } catch (e) {\n console.error(e);\n } finally {\n const l = this[lock];\n this[lock] = undefined;\n l.resolve();\n return result;\n }\n };\n return descriptor;\n}\n\n/**\n * Swap 2 HTMLElements in a container.\n * @param {HTMLElement} container\n * @param {HTMLElement} elem1\n * @param {HTMLElement} elem2\n */\nexport function swap(container, ...elems) {\n if (elems[0] === elems[1]) return;\n if (elems.every(x => x.classList.contains(\"null-column\"))) return;\n let [i, j] = elems.map(x => Array.prototype.slice.call(container.children).indexOf(x));\n if (j < i) {\n [i, j] = [j, i];\n elems = elems.reverse();\n }\n container.insertBefore(elems[1], elems[0]);\n if (j + 1 === container.children.length) {\n container.appendChild(elems[0]);\n } else {\n container.insertBefore(elems[0], container.children[j + 1]);\n }\n}\n\nexport const json_attribute = _attribute(() => ({}));\nexport const array_attribute = _attribute(() => []);\n\nexport const registerPlugin = (name, plugin) => {\n if (global.registerPlugin) {\n global.registerPlugin(name, plugin);\n } else {\n global.__perspective_plugins__ = global.__perspective_plugins__ || [];\n global.__perspective_plugins__.push([name, plugin]);\n }\n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4__;","/******************************************************************************\n *\n * Copyright (c) 2018, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {html, render} from \"lit-html\";\n\nconst RENDERERS = {};\n\nexport const renderers = new (class {\n /**\n * Register a plugin with the <perspective-viewer> component.\n *\n * @param {string} name The logical unique name of the plugin. This will be\n * used to set the component's `view` attribute.\n * @param {object} plugin An object with this plugin's prototype.\n * Valid keys are:\n * @param {string} plugin.name The display name for this plugin.\n * @param {string} plugin.create (required) The creation function - may\n * return a `Promise`.\n * @param {string} plugin.delete The deletion function.\n * @param {string} plugin.mode The selection mode - may be \"toggle\" or\n * \"select\".\n */\n registerPlugin(name, plugin) {\n if (RENDERERS[name]) {\n throw new Error(`A perspective-viewer plugin \"${name}\" has already been registered`);\n }\n for (const id in RENDERERS) {\n const old_plugin = RENDERERS[id];\n if (old_plugin && old_plugin.name === plugin.name) {\n console.warn(`Conflicting plugin name \"${plugin.name}\", qualifying with id`);\n old_plugin.name = `${old_plugin.name} [${id}]`;\n plugin.name = `${plugin.name} [${name}]`;\n }\n }\n RENDERERS[name] = plugin;\n }\n\n getPlugin(name) {\n return RENDERERS[name];\n }\n\n getInstance() {\n return RENDERERS;\n }\n})();\n\nglobal.registerPlugin = renderers.registerPlugin;\n\nglobal.getPlugin = renderers.getPlugin;\n\nif (global.__perspective_plugins__) {\n global.__perspective_plugins__.forEach(([name, plugin]) => global.registerPlugin(name, plugin));\n}\n\nconst template = csv =>\n html`\n <pre style=\"margin:0;overflow:scroll;position:absolute;width:100%;height:100%\">${csv}</pre>\n `;\n\nexport function register_debug_plugin() {\n global.registerPlugin(\"debug\", {\n name: \"Debug\",\n create: async function(div) {\n const csv = await this._view.to_csv({config: {delimiter: \"|\"}});\n const timer = this._render_time();\n render(template(csv), div);\n timer();\n },\n selectMode: \"toggle\",\n resize: function() {},\n delete: function() {}\n });\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__6__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7__;","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__9__;","module.exports = __WEBPACK_EXTERNAL_MODULE__10__;","module.exports = __WEBPACK_EXTERNAL_MODULE__11__;","module.exports = __WEBPACK_EXTERNAL_MODULE__12__;","module.exports = __WEBPACK_EXTERNAL_MODULE__13__;","module.exports = __WEBPACK_EXTERNAL_MODULE__14__;","module.exports = __WEBPACK_EXTERNAL_MODULE__15__;","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__17__;","module.exports = __WEBPACK_EXTERNAL_MODULE__18__;","module.exports = \"<!--\\n\\nCopyright (c) 2017, the Perspective Authors.\\n\\nThis file is part of the Perspective library, distributed under the terms of\\nthe Apache License 2.0. The full license can be found in the LICENSE file.\\n\\n-->\\n\\n<template id=\\\"perspective-computed-column\\\">\\n <div id=\\\"psp-cc__body\\\">\\n <span id=\\\"psp-cc__close\\\" aria-label=\\\"Close Computed Column\\\">&times;</span>\\n <div class=\\\"psp-cc__container\\\" style=\\\"display:none\\\">\\n <span id=\\\"psp-cc__mode\\\"></span>\\n </div>\\n <div class=\\\"psp-cc__container\\\" style=\\\"margin-top:-7px;\\\">\\n <div class=\\\"psp-cc__content\\\">\\n <div id=\\\"psp-cc-computation__type\\\"></div>\\n <span contentEditable=true type=\\\"text\\\" required maxlength=\\\"25\\\" size=\\\"10\\\" autocomplete=\\\"off\\\" id=\\\"psp-cc-name\\\"></span>\\n </div>\\n <div class=\\\"psp-cc__content psp-cc__content--nomargin\\\">\\n <span class=\\\"psp-cc__label psp-cc__error\\\" id=\\\"psp-cc__error--name\\\"></span>\\n </div>\\n </div>\\n <div class=\\\"psp-cc__container\\\">\\n <div class=\\\"psp-cc__content\\\">\\n <select id=\\\"psp-cc-computation__select\\\">\\n </select>\\n </div>\\n </div>\\n <div class=\\\"psp-cc__container\\\" style=\\\"margin-top:-12px;\\\">\\n <div id=\\\"psp-cc-computation-inputs\\\">\\n <!--<div class=\\\"psp-cc-computation__input-column\\\" drop-target></div>-->\\n </div>\\n </div>\\n </div>\\n <div id=\\\"psp-cc__actions\\\">\\n <button id=\\\"psp-cc-button-delete\\\" class=\\\"psp-cc__button\\\">Delete</button>\\n <button id=\\\"psp-cc-button-save\\\" class=\\\"psp-cc__button\\\" disabled>Save</button>\\n </div>\\n</template>\";","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:none;flex-direction:column;max-height:35%;margin-top:34px;margin-bottom:24px;flex:0 0 auto!important}:host *{box-sizing:border-box}:host select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--select--background,url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgNC45IDEwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0LjkgMTA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojQUFBQUFBO30KPC9zdHlsZT4KPHRpdGxlPmFycm93czwvdGl0bGU+Cjxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iMS40LDQuNyAyLjUsMy4yIDMuNSw0LjcgIi8+Cjxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iMy41LDUuMyAyLjUsNi44IDEuNCw1LjMgIi8+Cjwvc3ZnPg==) no-repeat 95% 50%);background-color:#fff;outline:0;border:none;height:24px;padding:0 0 0 6px;font-size:12px}:host.edit #psp-cc-button-delete{display:block!important}:host .psp-cc__label{color:#666;font-size:10px;margin-left:8px}:host .psp-cc__label.psp-cc__error{color:#cb4549!important;display:none}:host #psp-cc__actions{display:flex;justify-content:flex-start;margin-right:5px;margin-left:20px;margin-top:12px}:host #psp-cc__body,:host .psp-cc__container{display:flex;flex-direction:column}:host #psp-cc__body.row,:host .psp-cc__container.row{align-items:center;flex-direction:row}:host span#psp-cc__close{color:#666;position:absolute}:host span#psp-cc__close:hover{cursor:pointer}:host .psp-cc__container{margin:2px 0 10px 26px}:host .psp-cc__container:first-of-type{margin-bottom:0}:host .psp-cc__container span#psp-cc__mode{color:#000;font-size:12px}:host .psp-cc__container input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;border-bottom:1px solid #ccc;font-size:12px;padding:3px 4px;flex-basis:500px}:host #psp-cc-name{background-color:#eee;border-bottom:1px solid #ccc;color:#333;cursor:default!important;font-size:12px;padding-left:2px;width:100%}:host #psp-cc-name:empty:before{content:\\\"New Column\\\";color:#ccc}:host #psp-cc-name *{display:inline}:host #psp-cc-name br{display:none}:host .psp-label__placeholder{color:#ccc;display:inline-block;font-size:12px;margin-left:4px}:host .psp-label__requiredType{margin-left:5px;margin-top:-1px;display:inline-block}:host .psp-label__requiredType.float::before,:host .psp-label__requiredType.integer::before{font-family:monospace;display:flex;content:\\\"123\\\";color:#016bc6}:host .psp-label__requiredType.string::before{font-family:monospace;display:flex;content:\\\"abc\\\";color:#fe9292}:host .psp-label__requiredType.boolean::before{font-family:monospace;display:flex;content:\\\"t/f\\\";color:#999}:host .psp-label__requiredType.datetime::before{font-family:monospace;display:flex;content:\\\"mdy\\\";color:#999}:host .psp-label__requiredType.date::before{font-family:monospace;display:flex;content:\\\"mdy\\\";color:#999}:host .psp-cc-computation__input-column{box-sizing:border-box;display:flex;align-items:center;border-bottom:1px solid #ccc;margin-top:5px;height:23px;width:100%}:host .psp-cc-computation__input-column perspective-row{margin-left:-26px;margin-right:-5px;width:calc(100% + 26px)}:host .psp-cc-computation__input-column.dropping{background-color:#f0f0ff!important;border:1px solid #1078d1!important;cursor:copy!important}:host .psp-cc-computation__input-column.dropping perspective-row{display:none!important;pointer-events:none}:host .psp-cc-computation__input-column.dropped{border:0;background:0 0}:host perspective-row{margin-bottom:2px;--row_draggable-overflow:hidden;--name-before-display:inline-block;--is_visible-display:inline-block;--row_draggable-padding:2px 10px 2px 2px;--row_close-display:none;--psp_row-margin:0 5px 0 0;--column_name-max-width:180px}:host perspective-row[drop-target]{--row_draggable_children-opacity:0}:host .psp-cc__content{align-items:center;display:flex;margin-top:5px}:host .psp-cc__content.psp-cc__content--nomargin{margin-top:0}:host #psp-cc-computation__type{box-sizing:border-box;display:flex;font-family:monospace;flex-direction:column;font-size:12px;padding-right:3px;padding-left:6px;background:eee;height:24px;text-align:center;padding-top:4px}:host #psp-cc-computation__type .boolean,:host #psp-cc-computation__type .date,:host #psp-cc-computation__type .datetime{color:#999}:host #psp-cc-computation__type .float,:host #psp-cc-computation__type .integer{color:#016bc6}:host #psp-cc-computation__type .string{color:#fe9292}:host #psp-cc-computation__select{margin-left:auto;width:100%;background-color:#eee;font-size:10px;border-bottom:none;color:#666}:host #psp-cc-computation__drop-target-hover{display:none}:host .psp-cc__button{border-radius:0;border-bottom:1px solid #ccc;border-left:0;border-right:0;border-top:0;font-size:12px;margin-left:6px;padding:2px 5px;width:45px}:host .psp-cc__button:hover{cursor:pointer}:host .psp-cc__button[disabled]{background:#666!important;color:#a0a0a0!important;cursor:not-allowed;border-bottom-color:#000!important;opacity:.5}:host .psp-cc__button#psp-cc-button-delete{background:#e76056;border-bottom-color:#bf4d45;color:#fff;display:none}:host .psp-cc__button#psp-cc-button-delete:active{background:#bf4d45;border-bottom-color:#9d3f39}:host .psp-cc__button#psp-cc-button-save{background:#0171d2;border-bottom-color:#0160b1;color:#fff;height:22px}:host .psp-cc__button#psp-cc-button-save:active{background:#0160b1;border-bottom-color:#014986}\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".awesomplete [hidden] {\\n display: none;\\n}\\n\\n.awesomplete .visually-hidden {\\n position: absolute;\\n clip: rect(0, 0, 0, 0);\\n}\\n\\n.awesomplete {\\n display: inline-block;\\n position: relative;\\n}\\n\\n.awesomplete > input {\\n display: block;\\n}\\n\\n.awesomplete > ul {\\n position: absolute;\\n left: 0;\\n z-index: 1;\\n min-width: 100%;\\n box-sizing: border-box;\\n list-style: none;\\n padding: 0;\\n margin: 0;\\n background: #fff;\\n}\\n\\n.awesomplete > ul:empty {\\n display: none;\\n}\\n\\n.awesomplete > ul {\\n\\tborder-radius: .3em;\\n\\tmargin: .2em 0 0;\\n\\tbackground: hsla(0,0%,100%,.9);\\n\\tbackground: linear-gradient(to bottom right, white, hsla(0,0%,100%,.8));\\n\\tborder: 1px solid rgba(0,0,0,.3);\\n\\tbox-shadow: .05em .2em .6em rgba(0,0,0,.2);\\n\\ttext-shadow: none;\\n}\\n\\n@supports (transform: scale(0)) {\\n\\t.awesomplete > ul {\\n\\t\\ttransition: .3s cubic-bezier(.4,.2,.5,1.4);\\n\\t\\ttransform-origin: 1.43em -.43em;\\n\\t}\\n\\t\\n\\t.awesomplete > ul[hidden],\\n\\t.awesomplete > ul:empty {\\n\\t\\topacity: 0;\\n\\t\\ttransform: scale(0);\\n\\t\\tdisplay: block;\\n\\t\\ttransition-timing-function: ease;\\n\\t}\\n}\\n\\n\\t/* Pointer */\\n\\t.awesomplete > ul:before {\\n\\t\\tcontent: \\\"\\\";\\n\\t\\tposition: absolute;\\n\\t\\ttop: -.43em;\\n\\t\\tleft: 1em;\\n\\t\\twidth: 0; height: 0;\\n\\t\\tpadding: .4em;\\n\\t\\tbackground: white;\\n\\t\\tborder: inherit;\\n\\t\\tborder-right: 0;\\n\\t\\tborder-bottom: 0;\\n\\t\\t-webkit-transform: rotate(45deg);\\n\\t\\ttransform: rotate(45deg);\\n\\t}\\n\\n\\t.awesomplete > ul > li {\\n\\t\\tposition: relative;\\n\\t\\tpadding: .2em .5em;\\n\\t\\tcursor: pointer;\\n\\t}\\n\\t\\n\\t.awesomplete > ul > li:hover {\\n\\t\\tbackground: hsl(200, 40%, 80%);\\n\\t\\tcolor: black;\\n\\t}\\n\\t\\n\\t.awesomplete > ul > li[aria-selected=\\\"true\\\"] {\\n\\t\\tbackground: hsl(205, 40%, 40%);\\n\\t\\tcolor: white;\\n\\t}\\n\\t\\n\\t\\t.awesomplete mark {\\n\\t\\t\\tbackground: hsl(65, 100%, 50%);\\n\\t\\t}\\n\\t\\t\\n\\t\\t.awesomplete li:hover mark {\\n\\t\\t\\tbackground: hsl(68, 100%, 41%);\\n\\t\\t}\\n\\t\\t\\n\\t\\t.awesomplete li[aria-selected=\\\"true\\\"] mark {\\n\\t\\t\\tbackground: hsl(86, 100%, 21%);\\n\\t\\t\\tcolor: inherit;\\n\\t\\t}\\n\", \"\"]);\n\n// exports\n","module.exports = \"<!--\\r\\n \\r\\n Copyright (c) 2017, the Perspective Authors.\\r\\n \\r\\n This file is part of the Perspective library, distributed under the terms of\\r\\n the Apache License 2.0. The full license can be found in the LICENSE file.\\r\\n\\r\\n-->\\r\\n\\r\\n<template id=\\\"perspective-row\\\">\\r\\n <div id=\\\"psp_row\\\">\\r\\n <span class='is_visible'></span>\\r\\n <div draggable='true' class=\\\"row_draggable\\\">\\r\\n <span id='name' class=\\\"column_name\\\"></span>\\r\\n <div class=\\\"row_computed\\\">\\r\\n <span id=\\\"row_edit\\\"></span>\\r\\n </div>\\r\\n <span id=\\\"sort_order\\\"></span>\\r\\n <select id=\\\"column_aggregate\\\" class=\\\"string\\\"></select>\\r\\n <select id=\\\"filter_operator\\\"></select>\\r\\n <input id=\\\"filter_operand\\\" placeholder=\\\"Value\\\" />\\r\\n <span id=\\\"row_exclamation\\\" hidden>&#x26A0;</span>\\r\\n <span id='row_close'>&#x2715;</span>\\r\\n </div>\\r\\n </div>\\r\\n</template>\";","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host{display:block;border:0 solid transparent}:host .row_computed{display:none;flex-direction:row}.dropping *{pointer-events:none}:host #psp_row{display:var(--psp_row-display,flex);margin:var(--psp_row-margin,0);overflow:visible;align-items:var(--column_selector--align-items,center);width:auto!important;height:auto!important;float:none!important}:host .is_visible{width:var(--column_selector--width,20px);min-width:var(--column_selector--width,20px);height:var(--is_visible--height,auto);cursor:var(--is_visible--cursor,pointer);font-size:var(--column_selector--font-size,14px);margin-top:-2px;display:var(--is_visible-display,none);color:var(--column-selector--color,#999);font-family:var(--column-selector--font-family,Arial)!important}:host #sort_order{display:none;font-family:var(--button--font-family,inherit);margin-right:4px;cursor:pointer;width:10px;display:var(--sort_order-display,none);padding:var(--sort_order-padding,0)}:host #sort_order:before{content:var(--row-sort-order--before, \\\"-\\\")}:host #sort_order:hover{color:var(--active--color,inherit)}:host #filter_operand{display:var(--filter_operand-display,none);margin:0;padding:0;height:19px;color:inherit;outline:0;border-color:var(--inactive--color,#ccc)}:host #filter_operator{margin:0 0 0 15px;display:var(--filter_operator-display,none);height:17px}:host #filter_operator:hover{color:var(--active--color,inherit)}@keyframes expand2{from{transform:translateX(10px)}}@keyframes expand3{from{transform:scale(.9)}}:host(:hover) .is_visible{color:var(--active--color,--column-selector--color)}:host #row_close{display:var(--row_close-display,inline);cursor:pointer;min-width:5px;max-width:5px;margin-right:3px;flex-grow:0;margin-left:3px;color:#999;font-family:Arial;font-size:10px}:host .is_visible:before{content:var(--is_visible--before,none)}:host #row_exclamation{color:red}:host #row_close:hover{color:var(--active--color,inherit)}:host .row_draggable select{border:none}:host .row_draggable select:focus{outline:0}:host select::-ms-expand{display:none}:host select{margin-left:15px;padding-right:15px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:var(--select--background,url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgNC45IDEwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0LjkgMTA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojQUFBQUFBO30KPC9zdHlsZT4KPHRpdGxlPmFycm93czwvdGl0bGU+Cjxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iMS40LDQuNyAyLjUsMy4yIDMuNSw0LjcgIi8+Cjxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iMy41LDUuMyAyLjUsNi44IDEuNCw1LjMgIi8+Cjwvc3ZnPg==) no-repeat 95% 50%);background-color:var(--select--background-color,#fff);color:inherit;border-radius:5px;height:24px;padding:var(--column_type--padding,0 0 0 5px);font-size:12px}:host .awesomplete>ul{border-radius:0;margin:0;border:none;transition:none!important;background:var(--plugin--background,#fff)!important}:host .awesomplete>ul:before{content:none}:host .awesomplete>input,:host input{border-color:#ccc;border-width:0 0 1px;box-sizing:border-box;background-color:transparent}:host .row_draggable{animation:var(--row_draggable--animation,expand2 .5s ease-out);cursor:move;border-style:solid;background-color:var(--row_draggable-background-color,none);overflow:var(--row_draggable-overflow,visible);border-color:var(--row_draggable-border-color,none);border-width:var(--row_draggable-border-width,0);padding:var(--row_draggable-padding,0);font-size:12px;flex-grow:1;color:inherit;transition:height .2s;box-sizing:border-box;height:var(--row_draggable-height,21px);min-height:var(--row_draggable-height,21px);display:var(--row_draggable-display,flex);align-items:var(--row-draggable--align-items);flex-direction:var(--row-draggable--flex-direction,column);justify-content:var(--row_draggable--justify-content,center);margin:var(--row_draggable--margin,0);transition:var(--row_draggable--transition,none)}:host .row_draggable *{opacity:var(--row_draggable_children-opacity,1)}:host .row_draggable select{margin:0 0 0 27px}:host ul{transition:background-color .2s,border-color .2s}:host(.null-column) .is_visible{opacity:0!important}:host(.null-column) .row_draggable{background-color:var(--null--background,transparent)!important;border-color:#ccc!important;border-width:0 0 1px!important}:host([drop-target]) .row_draggable{background-color:var(--active--background,#f0f0ff)!important;animation:var(--drop-target--animation,var(--row_draggable--animation,expand3 .5s ease-out));border:none!important}:host .float:before,:host .integer:before{content:var(--float--column-type--content, var(--column-type--content, \\\"123\\\"));color:var(--float--column-type--color,var(--column-type--color,#016bc6))}:host .string:before{content:var(--string--column-type--content, var(--column-type--content, \\\"abc\\\"));color:var(--string--column-type--color,var(--column-type--color,#fe9292))}:host .boolean:before{content:var(--boolean--column-type--content, var(--column-type--content, \\\"t/f\\\"));color:var(--boolean--column-type--color,var(--column-type--color,#999))}:host .date:before{content:var(--date--column-type--content, var(--column-type--content, \\\"mdy\\\"));color:var(--date--column-type--color,var(--column-type--color,#999))}:host .datetime:before{content:var(--datetime--column-type--content, var(--column-type--content, \\\"mdy\\\"));color:var(--datetime--column-type--color,var(--column-type--color,#999))}:host .column_name{overflow:hidden;max-width:var(--column_name-max-width,none);white-space:nowrap;text-overflow:ellipsis}:host span#name:before{font-family:var(--interface-monospace--font-family,monospace);position:relative;display:inline-block;padding:var(--column_type--padding,0 5px);min-width:18px;display:var(--name-before-display,none);width:var(--column_type--width,auto)}:host #column_aggregate{display:var(--column_aggregate-display,none);font-size:10px;font-family:Arial,sans-serif;width:88%;height:20px}:host span#name{flex:var(--column-name--flex,0 1 auto);width:100%;white-space:nowrap;margin:var(--column_name-margin,0)}\", \"\"]);\n\n// exports\n","module.exports = \"<!--\\r\\n \\r\\n Copyright (c) 2017, the Perspective Authors.\\r\\n \\r\\n This file is part of the Perspective library, distributed under the terms of\\r\\n the Apache License 2.0. The full license can be found in the LICENSE file.\\r\\n\\r\\n-->\\r\\n\\r\\n<template id=\\\"perspective-viewer\\\">\\r\\n\\r\\n <div id=\\\"app\\\">\\r\\n <div id=\\\"menubar\\\">\\r\\n <div id=\\\"copy_button\\\" class=\\\"noselect button\\\" title=\\\"Copy CSV\\\"></div>\\r\\n <div id=\\\"download_button\\\" class=\\\"noselect button\\\" title=\\\"Download CSV\\\"></div>\\r\\n <div id=\\\"reset_button\\\" class=\\\"noselect button\\\" title=\\\"Reset Viewer\\\"></div>\\r\\n </div>\\r\\n <div id='side_panel' class=\\\"column fixed noselect\\\">\\r\\n <div id=\\\"vis_selector_container\\\">\\r\\n <select id=\\\"vis_selector\\\">\\r\\n </select>\\r\\n </div>\\r\\n <div id=\\\"columns_container\\\" style=\\\"visibility: hidden\\\">\\r\\n <ul id='active_columns'></ul>\\r\\n <div id=\\\"sub_columns\\\">\\r\\n <ul id='inactive_columns'></ul>\\r\\n <div id=\\\"side_panel__actions\\\" style=\\\"visibility: hidden\\\">\\r\\n <div id=\\\"add-computed-column\\\" class=\\\"side_panel-action\\\"><span class=\\\"psp-icon psp-icon__add\\\"></span><span class=\\\"psp-title__columnName\\\">New Column</span></div>\\r\\n </div>\\r\\n </div>\\r\\n <perspective-computed-column></perspective-computed-column>\\r\\n </div>\\r\\n <div id=\\\"resize_bar\\\"></div>\\r\\n </div>\\r\\n <div class=\\\"column noselect\\\">\\r\\n <div id='top_panel'>\\r\\n <div class=\\\"rrow\\\">\\r\\n <div id=\\\"row_pivots\\\">\\r\\n <div class=\\\"psp-text-field\\\">\\r\\n <ul class=\\\"psp-text-field__input\\\" for=\\\"row-pivots\\\"></ul>\\r\\n <label for=\\\"row_pivots\\\"></label>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n <span id=\\\"transpose_button\\\" class=\\\"rrow centered\\\" title=\\\"Transpose Pivots\\\">&#x21C4;</span>\\r\\n <div class=\\\"rrow\\\">\\r\\n <div id=\\\"column_pivots\\\">\\r\\n <div class=\\\"psp-text-field\\\">\\r\\n <ul class=\\\"psp-text-field__input\\\" for=\\\"column-pivots\\\"></ul>\\r\\n <label for=\\\"column_pivots\\\"></label>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n <div class=\\\"rrow\\\">\\r\\n <div id=\\\"sort\\\">\\r\\n <div class=\\\"psp-text-field\\\">\\r\\n <ul class=\\\"psp-text-field__input\\\" for=\\\"sort\\\"></ul>\\r\\n <label for=\\\"sort\\\"></label>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n <div class=\\\"rrow\\\" style='flex-grow:3;height:auto;flex:1 1 400px;max-width:none'>\\r\\n <div id=\\\"filters\\\">\\r\\n <div class=\\\"psp-text-field\\\">\\r\\n <ul class=\\\"psp-text-field__input\\\" for='filters'></ul>\\r\\n <label for=\\\"filters\\\"></label>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n <div id=\\\"pivot_chart_container\\\">\\r\\n <div class=\\\"plugin_information plugin_information--warning hidden\\\" id=\\\"plugin_information--size\\\">\\r\\n <span class=\\\"plugin_information__text\\\" id=\\\"plugin_information_count\\\">Estimated rendering</span>\\r\\n <span class=\\\"plugin_information__actions\\\">\\r\\n <span class=\\\"plugin_information__action\\\">Render all points</span>\\r\\n <span class=\\\"plugin_information__action--close\\\" id=\\\"close_button\\\"></span>\\r\\n </span>\\r\\n </div>\\r\\n <div id=\\\"pivot_chart\\\"></div>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <div id=\\\"config_button\\\" class=\\\"noselect button\\\" title=\\\"Right click for additional options\\\"></div>\\r\\n\\r\\n <div id='drop_target'>\\r\\n <div id='drop_target_inner'>\\r\\n\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <slot></slot>\\r\\n </div>\\r\\n\\r\\n</template>\";","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":host #app #top_panel #row_pivots label:before{content:var(--row_pivots--before, \\\"Row Pivots\\\")}:host #app #top_panel #column_pivots label:before{content:var(--column_pivots--before, \\\"Column Pivots\\\")}:host #app #top_panel #sort label:before{content:\\\"Sort\\\"}:host #app #top_panel #filters label:before{content:\\\"Filter\\\"}:host #app #side_panel #active_columns perspective-row:before{font-size:10px;margin-left:var(--column_selector--width,20px);left:1px;padding:var(--column_type--padding,0 0 0 5px);color:var(--inactive--color,#666);position:absolute;margin-top:-15px}:host:hover #config_button{opacity:1}#config_button{background:0 0;opacity:1!important}.button{padding:var(--button--padding,12px 14px 24px 8px)}[settings=true] #config_button{opacity:1!important}@keyframes expand{from{opacity:0}}:host{position:relative;display:inline-block;overflow:hidden;word-wrap:normal;--highcharts-full--gradient:linear-gradient(#4d342f 0%, #e4521b 22.5%, #feeb65 42.5%, #f0f0f0 50%, #dcedc8 57.5%, #42b3d5 67.5%, #1a237e 100%);--highcharts-positive--gradient:linear-gradient(#dcedc8 0%, #42b3d5 35%, #1a237e 100%);--highcharts-negative--gradient:linear-gradient(#feeb65 100%, #e4521b 70%, #4d342f 0%);--hypergrid-tree-header--background:#fff;--hypergrid-tree-header--color:#666;--hypergrid-header--background:#fff;--hypergrid-separator--color:#666;--hypergrid-header--color:#666;--hypergrid-positive--color:#1078d1;--hypergrid-negative--color:#ff8888;--hypergrid--font-size:12px;--hypergrid-header--font-size:12px;--hypergrid--font-family:Helvetica,Arial,sans-serif;--hypergrid-header--font-family:Helvetica,Arial,sans-serif;--hypergrid-row-hover--background:#f6f6f6;--hypergrid-row-hover--color:#666;--hypergrid-cell-hover--background:#eeeeee;--hypergrid-cell-hover--color:#666;--integer--hypergrid--text-align:right;--float--hypergrid--text-align:right;--d3fc-series:rgba(31, 119, 180, 0.5);--d3fc-series-1:#0366d6;--d3fc-series-2:#ff7f0e;--d3fc-series-3:#2ca02c;--d3fc-series-4:#d62728;--d3fc-series-5:#9467bd;--d3fc-series-6:#8c564b;--d3fc-series-7:#e377c2;--d3fc-series-8:#7f7f7f;--d3fc-series-9:#bcbd22;--d3fc-series-10:#17becf;--d3fc-full--gradient:linear-gradient(#4d342f 0%, #e4521b 22.5%, #feeb65 42.5%, #f0f0f0 50%, #dcedc8 57.5%, #42b3d5 67.5%, #1a237e 100%);--d3fc-positive--gradient:linear-gradient(#dcedc8 0%, #42b3d5 35%, #1a237e 100%);--d3fc-negative--gradient:linear-gradient(#feeb65 100%, #e4521b 70%, #4d342f 0%)}:host #pivot_chart{position:absolute;width:100%;height:100%;display:grid;justify-content:stretch}:host .hidden{display:none}:host .psp-icon{color:#999}:host .psp-icon:hover{cursor:pointer}:host .psp-icon__add{display:flex;width:20px;min-width:20px;margin-top:-2px;height:0;font-family:var(--column-add--font-family,inherit)}:host .psp-icon__add:before{font-feature-settings:\\\"liga\\\";content:var(--column-add--before, \\\"+\\\")}:host .psp-title__columnName{display:flex;margin-left:34px;margin-top:3px;font-size:12px;color:#666}:host .side_panel-action:hover{cursor:pointer}:host *{box-sizing:border-box;line-height:1.42857143}:host #app{display:flex;position:relative;width:100%;height:100%}:host #app.hide_message #drop_target{display:none}:host .chart{padding:15px}:host #pivot_chart_container{flex-grow:1;position:relative;border:var(--plugin--border,none);overflow:hidden}:host .config{display:flex}:host #column_pivots #psp_row,:host #filters #psp_row,:host #row_pivots #psp_row,:host #sort #psp_row{display:inline}:host ul{min-height:20px;padding:0;margin:0;font-size:12px}:host #active_columns perspective-row{animation:.3s ease-out expand;--column-selector--color:var(--active--color, #999);--is_visible--before:var(--active-column-selector--content, \\\"\\\\25CF\\\")}:host #inactive_columns perspective-row{animation:.3s ease-out expand;--column-selector--color:var(--inactive-column-selector--color, #999);--is_visible--before:var(--inactive-column-selector--content, \\\"\\\\25CB\\\");--row_draggable--animation:none;opacity:var(--inactive-column--opacity,1);transition:opacity .3s}:host #inactive_columns perspective-row:hover{transition:none;opacity:1}:host #top_panel perspective-row{animation:.3s ease-out expand;--column-name--flex:1;padding:0 10px 0 0;margin-bottom:-1px;display:var(--top-panel-row--display,inline-block);--psp_row-display:inline-block}:host #active_columns,:host #inactive_columns{list-style:none;padding:0;width:100%;margin:var(--column-container--margin,8px 0 0 0);overflow-y:auto;overflow-x:hidden;position:relative}:host #inactive_columns perspective-row.active{--row_draggable--margin:0px 0px 0px 10px;opacity:0;height:0!important;overflow:hidden}:host .columns_horizontal #sub_columns.collapse #side_panel__actions{margin-top:0}:host #sub_columns{min-height:33.3%;flex-shrink:100000;display:flex;flex-direction:column;overflow-x:hidden;width:100%}:host #sub_columns.collapse{flex-shrink:0;min-height:64px}:host #sub_columns.collapse #inactive_columns{display:none}:host .column{display:flex;list-style:none;flex-direction:column;flex:1}:host .rrow{display:flex;flex-grow:1;min-height:24px;align-items:center;max-width:400px;list-style:none;min-width:140px;margin:var(--column-drop-container--margin,5px 10px 0 0)}:host .rrow>div{display:flex;min-height:24px;flex-direction:column;justify-content:flex-end}:host #top_panel>.rrow>*{width:100%;padding:12px 0;margin:-12px 0}:host .rrow #psp_row{white-space:nowrap}:host #sort perspective-row{--sort_order-display:inline;--sort_order-padding:0 0 0 4px}:host #sort perspective-row[sort-order=asc]{--row-sort-order--before:var(--sort-order-asc--before, \\\"\\\\2191\\\")}:host #sort perspective-row[sort-order=desc]{--row-sort-order--before:var(--sort-order-desc--before, \\\"\\\\2193\\\")}:host #sort perspective-row[sort-order=none]{--row-sort-order--before:var(--sort-order-none--before, \\\"-\\\")}:host #sort perspective-row[sort-order=\\\"asc abs\\\"]{--row-sort-order--before:var(--sort-order-asc-abs--before, \\\"\\\\21E7\\\")}:host #sort perspective-row[sort-order=\\\"desc abs\\\"]{--row-sort-order--before:var(--sort-order-desc-abs--before, \\\"\\\\21E9\\\")}:host #sort perspective-row[sort-order=\\\"col asc\\\"]{--row-sort-order--before:var(--sort-order-col-asc--before, \\\"\\\\2192\\\")}:host #sort perspective-row[sort-order=\\\"col desc\\\"]{--row-sort-order--before:var(--sort-order-col-desc--before, \\\"\\\\2190\\\")}:host #sort perspective-row[sort-order=\\\"col asc abs\\\"]{--row-sort-order--before:var(--sort-order-col-asc-abs--before, \\\"\\\\21E8\\\")}:host #sort perspective-row[sort-order=\\\"col desc abs\\\"]{--row-sort-order--before:var(--sort-order-col-desc-abs--before, \\\"\\\\21E6\\\")}:host #top_panel perspective-row::after{content:\\\",\\\"}:host #top_panel perspective-row:last-child::after{display:none;content:\\\"\\\"!important}:host label{white-space:nowrap;display:inline-block;vertical-align:middle;margin-bottom:0}:host #drop_target{position:absolute;left:0;top:0;right:0;bottom:0;padding:30px}:host #drop_target_inner{width:100%;height:100%;display:flex;align-items:center;justify-content:center}:host #drop_target_inner h3{font-weight:300}:host #config_button{position:absolute;top:0;left:0;opacity:0;display:flex;align-items:center;justify-content:center;transition:opacity .2s ease-out}:host #config_button:hover{color:var(--active--color,inherit)}:host .button{cursor:pointer;font-size:16px;font-weight:400}:host select::-ms-expand{display:none}:host select{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;background:var(--select--background,url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgNC45IDEwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0LjkgMTA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojQUFBQUFBO30KPC9zdHlsZT4KPHRpdGxlPmFycm93czwvdGl0bGU+Cjxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iMS40LDQuNyAyLjUsMy4yIDMuNSw0LjcgIi8+Cjxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iMy41LDUuMyAyLjUsNi44IDEuNCw1LjMgIi8+Cjwvc3ZnPg==) no-repeat 95% 50%);background-color:#fff;color:inherit;border-radius:5px;height:24px;padding:var(--select--padding,0 0 0 6px);font-size:12px;font-family:inherit}:host input{padding:0 10px}:host .centered{display:flex;align-items:center;justify-content:center}:host #top_panel{display:flex;flex-wrap:wrap;justify-content:flex-start;padding:var(--top_panel--padding,5px 0 10px 0);max-width:1000px;z-index:1}:host #side_panel{position:relative;flex:0 0 auto;padding:var(--side_panel--padding,10px 10px 0 11px)}:host #side_panel>div{display:flex}:host #vis_selector_container{min-height:29px;margin-left:var(--column_selector--width,20px);overflow:hidden}:host #vis_selector{flex-grow:1}:host #transpose_button{cursor:pointer;min-width:5px;max-width:5px;flex-grow:0;color:#999;font-family:Arial;font-size:12px}:host #transpose_button:hover{color:var(--active--color,inherit)}:host #resize_bar{position:absolute;top:0;right:0;bottom:0;width:8px;cursor:col-resize}\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".psp-text-field{position:relative;background-color:var(--column-drop-container--background,#fff);border-width:0 0 1px;border-style:solid;border-color:var(--inactive--color,#ccc);display:flex;flex-direction:column;justify-content:flex-end;min-height:24px;transition:border-color .3s ease-out}:host(.dragging) .psp-text-field.dropping{border-bottom-width:2px;border-style:solid;border-color:var(--active--color,#1a7da1)}:host(.dragging) .psp-text-field{border-bottom-width:1px;border-style:solid;border-color:var(--active--color,#1a7da1)}.psp-text-field>.psp-text-field__input{border:0;line-height:20px;vertical-align:bottom;padding-bottom:0;display:none}.psp-text-field__input+label{height:var(--column--height,auto);line-height:17px;box-sizing:border-box;color:var(--inactive--color,#ccc);font-weight:400;white-space:nowrap;padding:var(--column-drop-container--padding,0 0 2px 10px);font-size:12px;display:inline-block;transition:font-size .3s,margin .3s}.dropping .psp-text-field__input,.psp-text-field__input:not(:empty){display:block!important}.dropping .psp-text-field__input::after{content:\\\"|\\\";width:0;overflow:visible;margin-top:-1px;position:absolute}.dropping *{pointer-events:none}.dropping .psp-text-field label,.psp-text-field__input:not(:empty)+label{position:absolute;top:0;margin:var(--column-drop-label--margin,0);font-size:var(--column-drop-label--font-size,12px);display:var(--column-drop-label--display,none)}.dropping perspective-row.inserting{border-top:25px solid transparent}.dropping perspective-row.postserting{border-bottom:25px solid transparent}:host perspective-row{height:var(--column--height,21px);--row_draggable-height:var(--column--height, 21px)}:host([row-pivots]) #active_columns perspective-row{height:var(--active-column--height,41px);min-height:var(--active-column--height,41px);--row_draggable-height:var(--active-column--height, 41px);--column_aggregate-display:inline-block;--is_visible--height:var(--active-column-selector--height, auto)}:host{font-family:Arial,sans-serif;background-color:#eee;color:#333}:host #app.columns_horizontal #columns_container{flex-direction:row-reverse}:host #app.columns_horizontal #active_columns,:host #app.columns_horizontal #inactive_columns{display:flex;flex-direction:column;flex:0 1 auto;width:100%}:host #app.columns_horizontal #inactive_columns{flex:1 1 auto}:host #app.columns_horizontal #sub_columns{flex-shrink:1}:host #app.columns_horizontal #sub_columns perspective-row{--column_name-margin:0 25px 0 0}:host #app.columns_horizontal #side_panel #divider{display:none}:host #app.columns_horizontal perspective-computed-column{max-height:none;margin-right:24px}:host perspective-computed-column{--is_visible--before:var(--active-column-selector--content, \\\"\\\\25CF\\\");--row_draggable-background-color:var(--column--background, white);--row_draggable-border-color:var(--inactive--color, #ccc);--row_draggable-border-width:0 0 1px 0;--row_draggable-overflow:hidden;--column-selector--color:var(--active--color, #999)}:host #side_panel perspective-row{--name-before-display:inline-block;--is_visible-display:inline-block;--row_draggable-padding:0px 10px 0px 0px;--row_close-display:none;--column_name-max-width:180px}:host #top_panel perspective-row{--row_draggable-display:inline-flex;--row-draggable--flex-direction:row;--row-draggable--align-items:center}:host #columns_container{flex-direction:column;height:calc(100% - 29px)}:host #columns_container #active_columns{flex:0 1 auto}:host #columns_container #active_columns perspective-row{margin-bottom:2px;--row_draggable-background-color:var(--column--background, white);--row_draggable-border-color:var(--inactive--color, #ccc);--row_draggable-border-width:0 0 1px 0;--row_draggable-overflow:hidden;--row_draggable--justify-content:space-evenly}:host #columns_container #active_columns perspective-row:last-child{--row_draggable-border-width:var(--row_draggable-border-last-child-width, 0 0 1px 0)}:host #columns_container #active_columns perspective-row[drop-target]{--row_draggable_children-opacity:0}:host #columns_container #active_columns perspective-row.null-column{--row_draggable_children-opacity:0;pointer-events:none}:host #columns_container #active_columns.one_lock perspective-row:first-child,:host #columns_container #active_columns.two_lock perspective-row:first-child{--active--color:#ccc;--is_visible--cursor:normal}:host #columns_container #active_columns.two_lock perspective-row:nth-child(2){--active--color:#ccc;--is_visible--cursor:normal}:host #columns_container #active_columns perspective-row:only-child{--active--color:#ccc;--is_visible--cursor:normal}:host #columns_container #active_columns,:host #columns_container #inactive_columns{border:none!important}:host ul{transition:background-color .2s,border-color .2s;outline:0;border-style:solid;border-color:var(--inactive--color,#ccc);font-size:12px;padding:var(--column-drop-container--padding,0 10px 0 10px);border-width:0 0 1px}:host #side_panel #side_panel__actions{display:flex;flex-direction:column;flex-shrink:1000;justify-content:flex-start;position:relative;overflow-y:hidden;width:100%;padding-top:20px;margin:var(--column-container--margin,8px);min-height:36px}:host #side_panel #side_panel__actions button.side_panel-action{align-items:center;align-content:center;background:0 0;border:none;display:flex;flex-direction:row;font-size:12px;padding-right:10px;-webkit-appearance:none;-moz-appearance:none;appearance:none}:host #side_panel #side_panel__actions button.side_panel-action span{margin-left:5px;font-size:15px}:host #side_panel #side_panel__actions button.side_panel-action:hover{cursor:pointer}:host .noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:host svg .highcharts-legend-box{fill:none}:host #pivot_chart{background-color:var(--plugin--background,#fff)}:host #drop_target{border:var(--plugin--border,none);background:var(--plugin--background,#fff)}:host #pivot_chart_container{box-shadow:var(--plugin--box-shadow,none)}:host #filters perspective-row{margin:0;--filter_operator-display:inline-block;--filter_operand-display:inline-block}:host .plugin_information{color:var(--warning--color,inherit);display:flex;position:absolute;flex-direction:row;justify-content:flex-start;padding:.5rem;width:100%;z-index:10000;transition:opacity .3s ease-out;opacity:1}:host .plugin_information.hidden{display:none;opacity:0}:host .plugin_information.plugin_information--warning{background:#ffca28}:host .plugin_information .plugin_information__text{font-size:12px;margin-right:.25rem;display:flex;flex-wrap:wrap;align-items:center}:host .plugin_information .plugin_information__text:before{content:var(--overflow_hint--before);font-family:var(--overflow_hint--font-family);color:var(--overflow_hint--color);padding:var(--overflow_hint--padding);font-size:16px}:host .plugin_information .plugin_information__action{font-size:12px;text-decoration:underline;cursor:pointer;margin-right:.25rem}:host .plugin_information .plugin_information__action--close{margin-left:12px;display:inline-flex;font-size:12px;cursor:pointer}:host .plugin_information .plugin_information__actions{margin-left:auto;display:flex;align-items:center;flex-direction:row;justify-content:flex-start}:host .plugin_information .plugin_information--overflow-hint-percent{font-weight:700}:host .plugin_information .plugin_information--overflow-hint{white-space:nowrap}:host #drop_target_inner h3{color:#aaa;font-weight:300}:host #config_button,:host #copy_button,:host #download_button,:host #reset_button{font-weight:400;font-family:var(--button--font-family,Arial);color:var(--inactive--color,#999);font-size:var(--button--font-size,16px);transition:opacity .3s;overflow:hidden}:host #config_button:hover,:host #copy_button:hover,:host #download_button:hover,:host #reset_button:hover{color:var(--active--color,inherit)}:host #config_button:before{font-feature-settings:\\\"liga\\\";content:var(--settings-button--content, \\\"\\\\1F527\\\")}:host #reset_button:before{font-feature-settings:\\\"liga\\\";content:var(--reset_button--before, \\\"Reset\\\")}:host #close_button:before{font-family:var(--button--font-family,Arial);font-feature-settings:\\\"liga\\\";content:var(--close_button--before, \\\"Close\\\")}:host #download_button:before{font-feature-settings:\\\"liga\\\";content:var(--download_button--before, \\\"Save\\\")}:host #copy_button:before{font-feature-settings:\\\"liga\\\";content:var(--copy_button--before, \\\"Copy\\\")}:host #menubar{display:none;flex-direction:column;padding-top:55px}:host #app.show_menu #menubar{display:flex}:host select{border-radius:0;background-color:var(--select--background-color,#fff);border-style:solid;border-color:var(--inactive--color,#ccc);border-width:0 0 1px}:host select:focus{outline:0}:host input{border-style:solid;border-color:var(--inactive--color,#ccc);border-width:0 0 1px}:host input::placeholder{color:var(--inactive--color,#ccc)}:host option[value=\\\"\\\"]{color:#fff!important}:host #app{background-color:inherit}:host ::-webkit-scrollbar,:host ::shadow ::-webkit-scrollbar{width:12px}:host ::-webkit-scrollbar-thumb,:host ::shadow ::-webkit-scrollbar-thumb{background:#ccc}:host ::-webkit-scrollbar-track,:host ::shadow ::-webkit-scrollbar-track{background:0 0}\", \"\"]);\n\n// exports\n","module.exports = __WEBPACK_EXTERNAL_MODULE__27__;","module.exports = __WEBPACK_EXTERNAL_MODULE__28__;","module.exports = __WEBPACK_EXTERNAL_MODULE__29__;","module.exports = __WEBPACK_EXTERNAL_MODULE__30__;","module.exports = __WEBPACK_EXTERNAL_MODULE__31__;","module.exports = __WEBPACK_EXTERNAL_MODULE__32__;","/*\n\nForked from https://github.com/timruffles/mobile-drag-drop/ v2.3.0-rc.2\n\nCopyright (c) 2013 Tim Ruffles\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\nconst CLASS_PREFIX = \"dnd-poly-\";\nconst CLASS_DRAG_IMAGE = CLASS_PREFIX + \"drag-image\";\nconst CLASS_DRAG_IMAGE_SNAPBACK = CLASS_PREFIX + \"snapback\";\nconst CLASS_DRAG_OPERATION_ICON = CLASS_PREFIX + \"icon\";\nconst EVENT_PREFIX = \"dnd-poly-\";\nconst EVENT_DRAG_DRAGSTART_PENDING = EVENT_PREFIX + \"dragstart-pending\";\nconst EVENT_DRAG_DRAGSTART_CANCEL = EVENT_PREFIX + \"dragstart-cancel\";\nconst ALLOWED_EFFECTS = [\"none\", \"copy\", \"copyLink\", \"copyMove\", \"link\", \"linkMove\", \"move\", \"all\"];\nconst DROP_EFFECTS = [\"none\", \"copy\", \"move\", \"link\"];\n\nfunction detectFeatures() {\n const features = {\n dragEvents: \"ondragstart\" in document.documentElement,\n draggable: \"draggable\" in document.documentElement,\n userAgentSupportingNativeDnD: undefined\n };\n const isBlinkEngine = !!window.chrome || /chrome/i.test(navigator.userAgent);\n features.userAgentSupportingNativeDnD = !(/iPad|iPhone|iPod|Android/.test(navigator.userAgent) || (isBlinkEngine && \"ontouchstart\" in document.documentElement));\n return features;\n}\nfunction supportsPassiveEventListener() {\n let supportsPassiveEventListeners = false;\n try {\n const opts = Object.defineProperty({}, \"passive\", {\n get: function() {\n supportsPassiveEventListeners = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n } catch (e) {}\n return supportsPassiveEventListeners;\n}\n\nconst supportsPassive = supportsPassiveEventListener();\nfunction isDOMElement(object) {\n return object && object.tagName;\n}\nfunction addDocumentListener(ev, handler, passive) {\n if (passive === void 0) {\n passive = true;\n }\n document.addEventListener(ev, handler, supportsPassive ? {passive: passive} : false);\n}\nfunction removeDocumentListener(ev, handler) {\n document.removeEventListener(ev, handler);\n}\nfunction onEvt(el, event, handler, capture) {\n if (capture === void 0) {\n capture = false;\n }\n const options = supportsPassive ? {passive: true, capture: capture} : capture;\n el.addEventListener(event, handler, options);\n return {\n off: function() {\n el.removeEventListener(event, handler, options);\n }\n };\n}\nfunction prepareNodeCopyAsDragImage(srcNode, dstNode) {\n if (srcNode.nodeType === 1) {\n const cs = getComputedStyle(srcNode);\n for (let i = 0; i < cs.length; i++) {\n const csName = cs[i];\n dstNode.style.setProperty(csName, cs.getPropertyValue(csName), cs.getPropertyPriority(csName));\n }\n dstNode.style.pointerEvents = \"none\";\n dstNode.removeAttribute(\"id\");\n dstNode.removeAttribute(\"class\");\n dstNode.removeAttribute(\"draggable\");\n if (dstNode.nodeName === \"CANVAS\") {\n const canvasSrc = srcNode;\n const canvasDst = dstNode;\n const canvasSrcImgData = canvasSrc.getContext(\"2d\").getImageData(0, 0, canvasSrc.width, canvasSrc.height);\n canvasDst.getContext(\"2d\").putImageData(canvasSrcImgData, 0, 0);\n }\n }\n if (srcNode.hasChildNodes()) {\n for (let i = 0; i < srcNode.childNodes.length; i++) {\n prepareNodeCopyAsDragImage(srcNode.childNodes[i], dstNode.childNodes[i]);\n }\n }\n}\nfunction createDragImage(sourceNode) {\n const dragImage = sourceNode.cloneNode(true);\n prepareNodeCopyAsDragImage(sourceNode, dragImage);\n return dragImage;\n}\nfunction average(array) {\n if (array.length === 0) {\n return 0;\n }\n return (\n array.reduce(function(s, v) {\n return v + s;\n }, 0) / array.length\n );\n}\nfunction isTouchIdentifierContainedInTouchEvent(touchEvent, touchIdentifier) {\n for (let i = 0; i < touchEvent.changedTouches.length; i++) {\n const touch = touchEvent.changedTouches[i];\n if (touch.identifier === touchIdentifier) {\n return true;\n }\n }\n return false;\n}\nfunction updateCentroidCoordinatesOfTouchesIn(coordinateProp, event, outPoint) {\n const pageXs = [],\n pageYs = [];\n for (let i = 0; i < event.touches.length; i++) {\n const touch = event.touches[i];\n pageXs.push(touch[coordinateProp + \"X\"]);\n pageYs.push(touch[coordinateProp + \"Y\"]);\n }\n outPoint.x = average(pageXs);\n outPoint.y = average(pageYs);\n}\nconst TRANSFORM_CSS_VENDOR_PREFIXES = [\"\", \"-webkit-\"];\nfunction extractTransformStyles(sourceNode) {\n return TRANSFORM_CSS_VENDOR_PREFIXES.map(function(prefix) {\n const transform = sourceNode.style[prefix + \"transform\"];\n if (!transform || transform === \"none\") {\n return \"\";\n }\n return transform.replace(/translate\\(\\D*\\d+[^,]*,\\D*\\d+[^,]*\\)\\s*/g, \"\");\n });\n}\nfunction translateElementToPoint(element, pnt, originalTransforms, offset, centerOnCoordinates) {\n if (centerOnCoordinates === void 0) {\n centerOnCoordinates = true;\n }\n let x = pnt.x,\n y = pnt.y;\n if (offset) {\n x += offset.x;\n y += offset.y;\n }\n if (centerOnCoordinates) {\n x -= parseInt(element.offsetWidth, 10) / 2;\n y -= parseInt(element.offsetHeight, 10) / 2;\n }\n const translate = \"translate3d(\" + x + \"px,\" + y + \"px, 0)\";\n for (let i = 0; i < TRANSFORM_CSS_VENDOR_PREFIXES.length; i++) {\n const transformProp = TRANSFORM_CSS_VENDOR_PREFIXES[i] + \"transform\";\n element.style[transformProp] = translate + \" \" + originalTransforms[i];\n }\n}\nfunction applyDragImageSnapback(sourceEl, dragImage, dragImageTransforms, transitionEndCb) {\n const cs = getComputedStyle(sourceEl);\n if (cs.visibility === \"hidden\" || cs.display === \"none\") {\n console.log(\"dnd-poly: source node is not visible. skipping snapback transition.\");\n transitionEndCb();\n return;\n }\n dragImage.classList.add(CLASS_DRAG_IMAGE_SNAPBACK);\n const csDragImage = getComputedStyle(dragImage);\n const durationInS = parseFloat(csDragImage.transitionDuration);\n if (isNaN(durationInS) || durationInS === 0) {\n console.log(\"dnd-poly: no transition used - skipping snapback\");\n transitionEndCb();\n return;\n }\n console.log(\"dnd-poly: starting dragimage snap back\");\n const rect = sourceEl.getBoundingClientRect();\n const pnt = {\n x: rect.left,\n y: rect.top\n };\n pnt.x += document.body.scrollLeft || document.documentElement.scrollLeft;\n pnt.y += document.body.scrollTop || document.documentElement.scrollTop;\n pnt.x -= parseInt(cs.marginLeft, 10);\n pnt.y -= parseInt(cs.marginTop, 10);\n const delayInS = parseFloat(csDragImage.transitionDelay);\n const durationInMs = Math.round((durationInS + delayInS) * 1000);\n translateElementToPoint(dragImage, pnt, dragImageTransforms, undefined, false);\n setTimeout(transitionEndCb, durationInMs);\n}\n\nconst DataTransfer = (function() {\n function DataTransfer(_dataStore, _setDragImageHandler) {\n this._dataStore = _dataStore;\n this._setDragImageHandler = _setDragImageHandler;\n this._dropEffect = DROP_EFFECTS[0];\n }\n Object.defineProperty(DataTransfer.prototype, \"dropEffect\", {\n get: function() {\n return this._dropEffect;\n },\n set: function(value) {\n if (this._dataStore.mode !== 0 && ALLOWED_EFFECTS.indexOf(value) > -1) {\n this._dropEffect = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataTransfer.prototype, \"types\", {\n get: function() {\n if (this._dataStore.mode !== 0) {\n return Object.freeze(this._dataStore.types);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataTransfer.prototype, \"effectAllowed\", {\n get: function() {\n return this._dataStore.effectAllowed;\n },\n set: function(value) {\n if (this._dataStore.mode === 2 && ALLOWED_EFFECTS.indexOf(value) > -1) {\n this._dataStore.effectAllowed = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n DataTransfer.prototype.setData = function(type, data) {\n if (this._dataStore.mode === 2) {\n if (type.indexOf(\" \") > -1) {\n throw new Error(\"illegal arg: type contains space\");\n }\n this._dataStore.data[type] = data;\n if (this._dataStore.types.indexOf(type) === -1) {\n this._dataStore.types.push(type);\n }\n }\n };\n DataTransfer.prototype.getData = function(type) {\n if (this._dataStore.mode === 1 || this._dataStore.mode === 2) {\n return this._dataStore.data[type] || \"\";\n }\n };\n DataTransfer.prototype.clearData = function(format) {\n if (this._dataStore.mode === 2) {\n if (format && this._dataStore.data[format]) {\n delete this._dataStore.data[format];\n const index = this._dataStore.types.indexOf(format);\n if (index > -1) {\n this._dataStore.types.splice(index, 1);\n }\n return;\n }\n this._dataStore.data = {};\n this._dataStore.types = [];\n }\n };\n DataTransfer.prototype.setDragImage = function(image, x, y) {\n if (this._dataStore.mode === 2) {\n this._setDragImageHandler(image, x, y);\n }\n };\n return DataTransfer;\n})();\n\nfunction tryFindDraggableTarget(event) {\n let el = event.target;\n do {\n if (el.draggable === false) {\n continue;\n }\n if (el.draggable === true) {\n return el;\n }\n if (el.getAttribute && el.getAttribute(\"draggable\") === \"true\") {\n return el;\n }\n } while ((el = el.parentNode) && el !== document.body);\n}\nfunction determineDropEffect(effectAllowed, sourceNode) {\n if (!effectAllowed) {\n if (sourceNode.nodeType === 3 && sourceNode.tagName === \"A\") {\n return DROP_EFFECTS[3];\n }\n return DROP_EFFECTS[1];\n }\n if (effectAllowed === ALLOWED_EFFECTS[0]) {\n return DROP_EFFECTS[0];\n }\n if (effectAllowed.indexOf(ALLOWED_EFFECTS[1]) === 0 || effectAllowed === ALLOWED_EFFECTS[7]) {\n return DROP_EFFECTS[1];\n }\n if (effectAllowed.indexOf(ALLOWED_EFFECTS[4]) === 0) {\n return DROP_EFFECTS[3];\n }\n if (effectAllowed === ALLOWED_EFFECTS[6]) {\n return DROP_EFFECTS[2];\n }\n return DROP_EFFECTS[1];\n}\nfunction createDragEventFromTouch(targetElement, e, type, cancelable, window, dataTransfer, relatedTarget) {\n if (relatedTarget === void 0) {\n relatedTarget = null;\n }\n const touch = e.changedTouches[0];\n const dndEvent = new Event(type, {\n bubbles: true,\n cancelable: cancelable\n });\n dndEvent.dataTransfer = dataTransfer;\n dndEvent.relatedTarget = relatedTarget;\n dndEvent.screenX = touch.screenX;\n dndEvent.screenY = touch.screenY;\n dndEvent.clientX = touch.clientX;\n dndEvent.clientY = touch.clientY;\n dndEvent.pageX = touch.pageX;\n dndEvent.pageY = touch.pageY;\n const targetRect = targetElement.getBoundingClientRect();\n dndEvent.offsetX = dndEvent.clientX - targetRect.left;\n dndEvent.offsetY = dndEvent.clientY - targetRect.top;\n return dndEvent;\n}\nfunction dispatchDragEvent(dragEvent, targetElement, touchEvent, dataStore, dataTransfer, cancelable, relatedTarget) {\n if (cancelable === void 0) {\n cancelable = true;\n }\n if (relatedTarget === void 0) {\n relatedTarget = null;\n }\n console.log(\"dnd-poly: dispatching \" + dragEvent);\n const leaveEvt = createDragEventFromTouch(targetElement, touchEvent, dragEvent, cancelable, document.defaultView, dataTransfer, relatedTarget);\n const cancelled = !targetElement.dispatchEvent(leaveEvt);\n dataStore.mode = 0;\n return cancelled;\n}\nfunction determineDragOperation(effectAllowed, dropEffect) {\n if (!effectAllowed || effectAllowed === ALLOWED_EFFECTS[7]) {\n return dropEffect;\n }\n if (dropEffect === DROP_EFFECTS[1]) {\n if (effectAllowed.indexOf(DROP_EFFECTS[1]) === 0) {\n return DROP_EFFECTS[1];\n }\n } else if (dropEffect === DROP_EFFECTS[3]) {\n if (effectAllowed.indexOf(DROP_EFFECTS[3]) === 0 || effectAllowed.indexOf(\"Link\") > -1) {\n return DROP_EFFECTS[3];\n }\n } else if (dropEffect === DROP_EFFECTS[2]) {\n if (effectAllowed.indexOf(DROP_EFFECTS[2]) === 0 || effectAllowed.indexOf(\"Move\") > -1) {\n return DROP_EFFECTS[2];\n }\n }\n return DROP_EFFECTS[0];\n}\n\nconst DragOperationController = (function() {\n function DragOperationController(_initialEvent, _config, _sourceNode, _dragOperationEndedCb) {\n this._initialEvent = _initialEvent;\n this._config = _config;\n this._sourceNode = _sourceNode;\n this._dragOperationEndedCb = _dragOperationEndedCb;\n this._dragOperationState = 0;\n this._immediateUserSelection = null;\n this._currentDropTarget = null;\n console.log(\"dnd-poly: setting up potential drag operation..\");\n this._lastTouchEvent = _initialEvent;\n this._initialTouch = _initialEvent.changedTouches[0];\n this._touchMoveHandler = this._onTouchMove.bind(this);\n this._touchEndOrCancelHandler = this._onTouchEndOrCancel.bind(this);\n addDocumentListener(\"touchmove\", this._touchMoveHandler, false);\n addDocumentListener(\"touchend\", this._touchEndOrCancelHandler, false);\n addDocumentListener(\"touchcancel\", this._touchEndOrCancelHandler, false);\n }\n DragOperationController.prototype._setup = function() {\n const _this = this;\n console.log(\"dnd-poly: starting drag and drop operation\");\n this._dragOperationState = 1;\n this._currentDragOperation = DROP_EFFECTS[0];\n this._dragDataStore = {\n data: {},\n effectAllowed: undefined,\n mode: 3,\n types: []\n };\n this._currentHotspotCoordinates = {\n x: null,\n y: null\n };\n this._dragImagePageCoordinates = {\n x: null,\n y: null\n };\n let dragImageSrc = this._sourceNode;\n this._dataTransfer = new DataTransfer(this._dragDataStore, function(element, x, y) {\n dragImageSrc = element;\n if (typeof x === \"number\" || typeof y === \"number\") {\n _this._dragImageOffset = {\n x: x || 0,\n y: y || 0\n };\n }\n });\n this._dragDataStore.mode = 2;\n this._dataTransfer.dropEffect = DROP_EFFECTS[0];\n if (dispatchDragEvent(\"dragstart\", this._sourceNode, this._lastTouchEvent, this._dragDataStore, this._dataTransfer)) {\n console.log(\"dnd-poly: dragstart cancelled\");\n this._dragOperationState = 3;\n this._cleanup();\n return false;\n }\n updateCentroidCoordinatesOfTouchesIn(\"page\", this._lastTouchEvent, this._dragImagePageCoordinates);\n const dragImage = this._config.dragImageSetup(dragImageSrc);\n this._dragImageTransforms = extractTransformStyles(dragImage);\n dragImage.style.position = \"absolute\";\n dragImage.style.left = \"0px\";\n dragImage.style.top = \"0px\";\n dragImage.style.zIndex = \"999999\";\n dragImage.classList.add(CLASS_DRAG_IMAGE);\n dragImage.classList.add(CLASS_DRAG_OPERATION_ICON);\n this._dragImage = dragImage;\n if (!this._dragImageOffset) {\n if (this._config.dragImageOffset) {\n this._dragImageOffset = {\n x: this._config.dragImageOffset.x,\n y: this._config.dragImageOffset.y\n };\n } else if (this._config.dragImageCenterOnTouch) {\n const cs = getComputedStyle(dragImageSrc);\n this._dragImageOffset = {\n x: 0 - parseInt(cs.marginLeft, 10),\n y: 0 - parseInt(cs.marginTop, 10)\n };\n } else {\n const targetRect = dragImageSrc.getBoundingClientRect();\n const cs = getComputedStyle(dragImageSrc);\n this._dragImageOffset = {\n x: targetRect.left - this._initialTouch.clientX - parseInt(cs.marginLeft, 10) + targetRect.width / 2,\n y: targetRect.top - this._initialTouch.clientY - parseInt(cs.marginTop, 10) + targetRect.height / 2\n };\n }\n }\n translateElementToPoint(this._dragImage, this._dragImagePageCoordinates, this._dragImageTransforms, this._dragImageOffset, this._config.dragImageCenterOnTouch);\n document.body.appendChild(this._dragImage);\n this._iterationIntervalId = window.setInterval(function() {\n if (_this._iterationLock) {\n console.log(\"dnd-poly: iteration skipped because previous iteration hast not yet finished.\");\n return;\n }\n _this._iterationLock = true;\n _this._dragAndDropProcessModelIteration();\n _this._iterationLock = false;\n }, this._config.iterationInterval);\n return true;\n };\n DragOperationController.prototype._cleanup = function() {\n console.log(\"dnd-poly: cleanup\");\n if (this._iterationIntervalId) {\n clearInterval(this._iterationIntervalId);\n this._iterationIntervalId = null;\n }\n removeDocumentListener(\"touchmove\", this._touchMoveHandler);\n removeDocumentListener(\"touchend\", this._touchEndOrCancelHandler);\n removeDocumentListener(\"touchcancel\", this._touchEndOrCancelHandler);\n if (this._dragImage) {\n this._dragImage.parentNode.removeChild(this._dragImage);\n this._dragImage = null;\n }\n this._dragOperationEndedCb(this._config, this._lastTouchEvent, this._dragOperationState);\n };\n DragOperationController.prototype._onTouchMove = function(event) {\n const _this = this;\n if (isTouchIdentifierContainedInTouchEvent(event, this._initialTouch.identifier) === false) {\n return;\n }\n this._lastTouchEvent = event;\n if (this._dragOperationState === 0) {\n let startDrag = void 0;\n if (this._config.dragStartConditionOverride) {\n try {\n startDrag = this._config.dragStartConditionOverride(event);\n } catch (e) {\n console.error(\"dnd-poly: error in dragStartConditionOverride hook: \" + e);\n startDrag = false;\n }\n } else {\n startDrag = event.touches.length === 1;\n }\n if (!startDrag) {\n this._cleanup();\n return;\n }\n if (this._setup() === true) {\n this._initialEvent.preventDefault();\n event.preventDefault();\n }\n return;\n }\n console.log(\"dnd-poly: moving draggable..\");\n event.preventDefault();\n updateCentroidCoordinatesOfTouchesIn(\"client\", event, this._currentHotspotCoordinates);\n updateCentroidCoordinatesOfTouchesIn(\"page\", event, this._dragImagePageCoordinates);\n if (this._config.dragImageTranslateOverride) {\n try {\n let handledDragImageTranslate_1 = false;\n this._config.dragImageTranslateOverride(\n event,\n {\n x: this._currentHotspotCoordinates.x,\n y: this._currentHotspotCoordinates.y\n },\n this._immediateUserSelection,\n function(offsetX, offsetY) {\n if (!_this._dragImage) {\n return;\n }\n handledDragImageTranslate_1 = true;\n _this._currentHotspotCoordinates.x += offsetX;\n _this._currentHotspotCoordinates.y += offsetY;\n _this._dragImagePageCoordinates.x += offsetX;\n _this._dragImagePageCoordinates.y += offsetY;\n translateElementToPoint(_this._dragImage, _this._dragImagePageCoordinates, _this._dragImageTransforms, _this._dragImageOffset, _this._config.dragImageCenterOnTouch);\n }\n );\n if (handledDragImageTranslate_1) {\n return;\n }\n } catch (e) {\n console.log(\"dnd-poly: error in dragImageTranslateOverride hook: \" + e);\n }\n }\n translateElementToPoint(this._dragImage, this._dragImagePageCoordinates, this._dragImageTransforms, this._dragImageOffset, this._config.dragImageCenterOnTouch);\n };\n DragOperationController.prototype._onTouchEndOrCancel = function(event) {\n if (isTouchIdentifierContainedInTouchEvent(event, this._initialTouch.identifier) === false) {\n return;\n }\n if (this._config.dragImageTranslateOverride) {\n try {\n this._config.dragImageTranslateOverride(undefined, undefined, undefined, function() {});\n } catch (e) {\n console.log(\"dnd-poly: error in dragImageTranslateOverride hook: \" + e);\n }\n }\n if (this._dragOperationState === 0) {\n this._cleanup();\n return;\n }\n event.preventDefault();\n this._dragOperationState = event.type === \"touchcancel\" ? 3 : 2;\n };\n DragOperationController.prototype._dragAndDropProcessModelIteration = function() {\n const _this = this;\n const previousDragOperation = this._currentDragOperation;\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = DROP_EFFECTS[0];\n const dragCancelled = dispatchDragEvent(\"drag\", this._sourceNode, this._lastTouchEvent, this._dragDataStore, this._dataTransfer);\n if (dragCancelled) {\n console.log(\"dnd-poly: drag event cancelled.\");\n this._currentDragOperation = DROP_EFFECTS[0];\n }\n if (dragCancelled || this._dragOperationState === 2 || this._dragOperationState === 3) {\n const dragFailed = this._dragOperationEnded(this._dragOperationState);\n if (dragFailed) {\n applyDragImageSnapback(this._sourceNode, this._dragImage, this._dragImageTransforms, function() {\n _this._finishDragOperation();\n });\n return;\n }\n this._finishDragOperation();\n return;\n }\n const newUserSelection = this._config.elementFromPoint(this._currentHotspotCoordinates.x, this._currentHotspotCoordinates.y);\n console.log(\"dnd-poly: new immediate user selection is: \" + newUserSelection);\n const previousTargetElement = this._currentDropTarget;\n if (newUserSelection !== this._immediateUserSelection && newUserSelection !== this._currentDropTarget) {\n this._immediateUserSelection = newUserSelection;\n if (this._currentDropTarget !== null) {\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = DROP_EFFECTS[0];\n dispatchDragEvent(\"dragexit\", this._currentDropTarget, this._lastTouchEvent, this._dragDataStore, this._dataTransfer, false);\n }\n if (this._immediateUserSelection === null) {\n this._currentDropTarget = this._immediateUserSelection;\n console.log(\"dnd-poly: current drop target changed to null\");\n } else {\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = determineDropEffect(this._dragDataStore.effectAllowed, this._sourceNode);\n if (dispatchDragEvent(\"dragenter\", this._immediateUserSelection, this._lastTouchEvent, this._dragDataStore, this._dataTransfer)) {\n console.log(\"dnd-poly: dragenter default prevented\");\n this._currentDropTarget = this._immediateUserSelection;\n this._currentDragOperation = determineDragOperation(this._dataTransfer.effectAllowed, this._dataTransfer.dropEffect);\n } else {\n if (this._immediateUserSelection !== document.body) {\n this._currentDropTarget = document.body;\n }\n }\n }\n }\n if (previousTargetElement !== this._currentDropTarget && isDOMElement(previousTargetElement)) {\n console.log(\"dnd-poly: current drop target changed.\");\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = DROP_EFFECTS[0];\n dispatchDragEvent(\"dragleave\", previousTargetElement, this._lastTouchEvent, this._dragDataStore, this._dataTransfer, false, this._currentDropTarget);\n }\n if (isDOMElement(this._currentDropTarget)) {\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = determineDropEffect(this._dragDataStore.effectAllowed, this._sourceNode);\n if (dispatchDragEvent(\"dragover\", this._currentDropTarget, this._lastTouchEvent, this._dragDataStore, this._dataTransfer) === false) {\n console.log(\"dnd-poly: dragover not prevented on possible drop-target.\");\n this._currentDragOperation = DROP_EFFECTS[0];\n } else {\n console.log(\"dnd-poly: dragover prevented.\");\n this._currentDragOperation = determineDragOperation(this._dataTransfer.effectAllowed, this._dataTransfer.dropEffect);\n }\n }\n console.log(\"dnd-poly: d'n'd iteration ended. current drag operation: \" + this._currentDragOperation);\n if (previousDragOperation !== this._currentDragOperation) {\n this._dragImage.classList.remove(CLASS_PREFIX + previousDragOperation);\n }\n const currentDragOperationClass = CLASS_PREFIX + this._currentDragOperation;\n this._dragImage.classList.add(currentDragOperationClass);\n };\n DragOperationController.prototype._dragOperationEnded = function(state) {\n console.log(\"dnd-poly: drag operation end detected with \" + this._currentDragOperation);\n const dragFailed = this._currentDragOperation === DROP_EFFECTS[0] || this._currentDropTarget === null || state === 3;\n if (dragFailed) {\n if (isDOMElement(this._currentDropTarget)) {\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = DROP_EFFECTS[0];\n dispatchDragEvent(\"dragleave\", this._currentDropTarget, this._lastTouchEvent, this._dragDataStore, this._dataTransfer, false);\n }\n } else {\n if (isDOMElement(this._currentDropTarget)) {\n this._dragDataStore.mode = 1;\n this._dataTransfer.dropEffect = this._currentDragOperation;\n if (dispatchDragEvent(\"drop\", this._currentDropTarget, this._lastTouchEvent, this._dragDataStore, this._dataTransfer) === true) {\n this._currentDragOperation = this._dataTransfer.dropEffect;\n } else {\n this._currentDragOperation = DROP_EFFECTS[0];\n }\n }\n }\n return dragFailed;\n };\n DragOperationController.prototype._finishDragOperation = function() {\n console.log(\"dnd-poly: dragimage snap back transition ended\");\n this._dragDataStore.mode = 3;\n this._dataTransfer.dropEffect = this._currentDragOperation;\n dispatchDragEvent(\"dragend\", this._sourceNode, this._lastTouchEvent, this._dragDataStore, this._dataTransfer, false);\n this._dragOperationState = 2;\n this._cleanup();\n };\n return DragOperationController;\n})();\n\nconst config = {\n iterationInterval: 150,\n tryFindDraggableTarget: tryFindDraggableTarget,\n dragImageSetup: createDragImage,\n elementFromPoint: function(x, y) {\n return document.elementFromPoint(x, y);\n }\n};\nlet activeDragOperation;\nfunction onTouchstart(e, composePath) {\n console.log(\"dnd-poly: global touchstart\");\n if (activeDragOperation) {\n console.log(\"dnd-poly: drag operation already active\");\n return;\n }\n const dragTarget = config.tryFindDraggableTarget(e, composePath);\n if (!dragTarget) {\n console.log(\"dnd-poly: no draggable at touchstart coordinates\");\n return;\n }\n try {\n activeDragOperation = new DragOperationController(e, config, dragTarget, dragOperationEnded);\n } catch (err) {\n dragOperationEnded(config, e, 3);\n throw err;\n }\n}\nfunction onDelayTouchstart(evt) {\n console.log(\"dnd-poly: setup delayed dragstart..\");\n const el = evt.target;\n const composePath = evt.composedPath();\n const heldItem = function() {\n console.log(\"dnd-poly: starting delayed drag..\");\n end.off();\n cancel.off();\n move.off();\n scroll.off();\n onTouchstart(evt, composePath);\n };\n const onReleasedItem = function(event) {\n console.log(\"dnd-poly: aborting delayed drag because of \" + event.type);\n end.off();\n cancel.off();\n move.off();\n scroll.off();\n if (el) {\n el.dispatchEvent(new CustomEvent(EVENT_DRAG_DRAGSTART_CANCEL, {bubbles: true, cancelable: true}));\n }\n clearTimeout(timer);\n };\n if (el) {\n el.dispatchEvent(new CustomEvent(EVENT_DRAG_DRAGSTART_PENDING, {bubbles: true, cancelable: true}));\n }\n const timer = window.setTimeout(heldItem, config.holdToDrag);\n const end = onEvt(el, \"touchend\", onReleasedItem);\n const cancel = onEvt(el, \"touchcancel\", onReleasedItem);\n const move = onEvt(el, \"touchmove\", onReleasedItem);\n const scroll = onEvt(window, \"scroll\", onReleasedItem, true);\n}\n\nfunction dragOperationEnded(_config, event, state) {\n if (state === 0) {\n console.log(\"dnd-poly: Drag never started. Last event was \" + event.type);\n if (_config.defaultActionOverride) {\n try {\n _config.defaultActionOverride(event);\n if (event.defaultPrevented) {\n console.log(\"dnd-poly: defaultActionOverride has taken care of triggering the default action. preventing default on original event\");\n }\n } catch (e) {\n console.log(\"dnd-poly: error in defaultActionOverride: \" + e);\n }\n }\n }\n activeDragOperation = null;\n}\n\nfunction polyfill(override) {\n if (override) {\n Object.keys(override).forEach(function(key) {\n config[key] = override[key];\n });\n }\n if (!config.forceApply) {\n const detectedFeatures = detectFeatures();\n if (detectedFeatures.userAgentSupportingNativeDnD && detectedFeatures.draggable && detectedFeatures.dragEvents) {\n return false;\n }\n }\n console.log(\"dnd-poly: Applying mobile drag and drop polyfill.\");\n if (config.holdToDrag) {\n console.log(\"dnd-poly: holdToDrag set to \" + config.holdToDrag);\n addDocumentListener(\"touchstart\", onDelayTouchstart, false);\n } else {\n addDocumentListener(\"touchstart\", onTouchstart, false);\n }\n return true;\n}\n\nfunction tryFindDraggableTarget_override(event, composePath) {\n const cp = composePath || event.composedPath();\n for (let o of cp) {\n let el = o;\n do {\n if (el.draggable === false) {\n continue;\n }\n if (el.getAttribute && el.getAttribute(\"draggable\") === \"true\") {\n return el;\n }\n } while ((el = el.parentNode) && el !== document.body);\n }\n}\n\nfunction elementFromPoint(x, y) {\n for (let o of this._path) {\n if (o.elementFromPoint) {\n let el = o.elementFromPoint(x, y);\n if (el) {\n while (el.shadowRoot) {\n el = el.shadowRoot.elementFromPoint(x, y);\n }\n return el;\n }\n }\n }\n}\n\nfunction dragStartConditionOverride(event) {\n this._path = event.composedPath();\n return true;\n}\n\npolyfill({\n tryFindDraggableTarget: tryFindDraggableTarget_override,\n elementFromPoint: elementFromPoint,\n dragStartConditionOverride: dragStartConditionOverride,\n holdToDrag: 500\n});\n","module.exports = __WEBPACK_EXTERNAL_MODULE__34__;","module.exports = __WEBPACK_EXTERNAL_MODULE__35__;","module.exports = __WEBPACK_EXTERNAL_MODULE__36__;","module.exports = __WEBPACK_EXTERNAL_MODULE__37__;","module.exports = __WEBPACK_EXTERNAL_MODULE__38__;","module.exports = __WEBPACK_EXTERNAL_MODULE__39__;","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport values from \"lodash/values\";\n\nexport default class State {\n constructor() {\n this.edit = false;\n this.column_name = undefined;\n this.computation = undefined;\n this.input_columns = [];\n this.swap_target = false;\n this.name_edited = false;\n this.computed_function_name = \"\";\n }\n\n is_valid() {\n const vals = values(this);\n return !vals.includes(null) && !vals.includes(undefined) && !vals.includes(\"\") && this.input_columns.length === this.computation.num_params;\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nexport const FORMATTER = Symbol(\"formatter\");\n\n// TODO: need to change this to method and method name\n\nexport class Computation {\n constructor(name, formatter, input_type, return_type, func, category, num_params = 1) {\n this.category = category;\n this.name = name;\n this[FORMATTER] = formatter;\n this.input_type = input_type;\n this.return_type = return_type;\n this.func = func.toString();\n this.num_params = num_params;\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2018, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {swap} from \"../utils.js\";\n\nfunction calc_index(event) {\n if (this._active_columns.children.length == 0) {\n return 0;\n } else {\n let is_last_null = false;\n for (let cidx in this._active_columns.children) {\n let child = this._active_columns.children[cidx];\n is_last_null = is_last_null || child?.classList?.contains(\"null-column\");\n if (child.offsetTop + child.offsetHeight > event.offsetY + this._active_columns.scrollTop) {\n return parseInt(cidx);\n }\n }\n let last_index = this._active_columns.children.length;\n if (is_last_null) {\n last_index--;\n }\n return last_index;\n }\n}\n\nexport function dragend(event) {\n let div = event.target.getRootNode().host;\n let parent = div;\n if (parent.tagName === \"PERSPECTIVE-VIEWER\") {\n parent = event.target.parentElement;\n } else {\n parent = div.parentElement;\n }\n let idx = Array.prototype.slice.call(parent.children).indexOf(div.tagName === \"PERSPECTIVE-ROW\" ? div : event.target);\n let attr_name = parent.getAttribute(\"for\");\n if (this.hasAttribute(attr_name)) {\n let attr_value = JSON.parse(this.getAttribute(attr_name));\n attr_value.splice(idx, 1);\n if (attr_value.length === 0) {\n this.removeAttribute(attr_name);\n } else {\n this.setAttribute(attr_name, JSON.stringify(attr_value));\n }\n }\n}\n\nexport function drop(ev) {\n ev.preventDefault();\n ev.currentTarget.classList.remove(\"dropping\");\n if (this._drop_target_hover) {\n this._drop_target_hover.removeAttribute(\"drop-target\");\n }\n let data = ev.dataTransfer.getData(\"text\");\n if (!data) return;\n data = JSON.parse(data);\n\n // Update the columns attribute\n let name = ev.currentTarget.querySelector(\"ul\").getAttribute(\"for\") || ev.currentTarget.getAttribute(\"id\").replace(\"_\", \"-\");\n let columns = JSON.parse(this.getAttribute(name) || \"[]\");\n let data_index = columns.indexOf(data[0]);\n if (data_index !== -1) {\n columns.splice(data_index, 1);\n }\n\n const filtering = name.indexOf(\"filter\") > -1;\n if (filtering) {\n this.setAttribute(name, JSON.stringify(columns.concat([data])));\n } else if (name.indexOf(\"sort\") > -1) {\n this.setAttribute(name, JSON.stringify(columns.concat([[data[0]]])));\n } else {\n this.setAttribute(name, JSON.stringify(columns.concat([data[0]])));\n }\n\n // Deselect the dropped column\n if (this._plugin.deselectMode === \"pivots\" && this._get_visible_column_count() > 1 && name !== \"sort\" && !filtering) {\n for (let x of this.shadowRoot.querySelectorAll(\"#active_columns perspective-row\")) {\n if (x.getAttribute(\"name\") === data[0]) {\n this._active_columns.removeChild(x);\n break;\n }\n }\n this._update_column_view();\n }\n\n this._debounce_update();\n}\n\nexport function column_dragend(event) {\n let data = event.target.parentElement.parentElement;\n if (Array.prototype.slice(this._active_columns.children).indexOf(data) > -1 && this._get_visible_column_count() > 1 && event.dataTransfer.dropEffect !== \"move\") {\n this._active_columns.removeChild(data);\n this._update_column_view();\n }\n this._active_columns.classList.remove(\"dropping\");\n}\n\nexport function column_dragleave(event) {\n let src = event.relatedTarget;\n while (src && src !== this._active_columns) {\n src = src.parentElement;\n }\n if (src === null) {\n this._active_columns.classList.remove(\"dropping\");\n if (this._drop_target_null) {\n this._active_columns.replaceChild(this._drop_target_null, this._drop_target_hover);\n delete this._drop_target_null;\n }\n if (this._drop_target_hover.parentElement === this._active_columns) {\n this._active_columns.removeChild(this._drop_target_hover);\n }\n if (this._original_index !== -1) {\n this._active_columns.insertBefore(this._drop_target_hover, this._active_columns.children[this._original_index]);\n }\n this._drop_target_hover.removeAttribute(\"drop-target\");\n }\n}\n\nfunction _unset_drop_target_null() {\n if (this._drop_target_null) {\n if (this._drop_target_null.parentElement === this._active_columns) {\n swap(this._active_columns, this._drop_target_hover, this._drop_target_null);\n } else {\n this._active_columns.replaceChild(this._drop_target_null, this._drop_target_hover);\n }\n delete this._drop_target_null;\n }\n}\n\nfunction column_swap(new_index) {\n _unset_drop_target_null.call(this);\n if (this._active_columns.children[new_index]) {\n if (this._drop_target_hover !== this._active_columns.children[new_index]) {\n this._drop_target_null = this._active_columns.children[new_index];\n swap(this._active_columns, this._active_columns.children[new_index], this._drop_target_hover);\n }\n }\n}\n\nfunction column_replace(new_index) {\n _unset_drop_target_null.call(this);\n if (this._active_columns.children[new_index]) {\n this._drop_target_null = this._active_columns.children[new_index];\n this._active_columns.replaceChild(this._drop_target_hover, this._active_columns.children[new_index]);\n }\n}\n\nexport function column_dragover(event) {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n if (event.currentTarget.className !== \"dropping\") {\n event.currentTarget.classList.add(\"dropping\");\n }\n if (!this._drop_target_hover.hasAttribute(\"drop-target\")) {\n this._drop_target_hover.toggleAttribute(\"drop-target\", true);\n }\n let new_index = calc_index.call(this, event);\n const current_index = Array.prototype.slice.call(this._active_columns.children).indexOf(this._drop_target_hover);\n const over_elem = this._active_columns.children[new_index];\n const to_replace = new_index < this._plugin.initial?.names?.length - 1;\n const is_diff = this._drop_target_hover !== this._active_columns.children[new_index];\n const from_active = this._original_index !== -1;\n const from_replace = from_active && this._original_index < this._plugin.initial?.names?.length - 1;\n const from_append = from_active && this._original_index >= this._plugin.initial?.names?.length - 1;\n const from_required = from_active && this._original_index < this._plugin.initial?.count;\n const to_required = new_index < this._plugin.initial?.count;\n const to_null = !to_required && over_elem?.classList.contains(\"null-column\");\n if (from_required && to_null) {\n _unset_drop_target_null.call(this);\n } else if (to_replace && from_append && is_diff) {\n _unset_drop_target_null.call(this);\n const from_last =\n this._original_index === this._plugin.initial?.names?.length - 1 &&\n this._drop_target_hover === this._active_columns.children[this._original_index] &&\n this._active_columns.children.length === this._plugin.initial?.names?.length;\n if (from_last) {\n this._drop_target_null = this._active_columns.children[new_index];\n swap(this._active_columns, this._active_columns.children[new_index], this._drop_target_hover);\n } else if (!this._active_columns.children[new_index]?.classList.contains(\"null-column\")) {\n this._drop_target_null = this._active_columns.children[new_index];\n this._active_columns.replaceChild(this._drop_target_hover, this._active_columns.children[new_index]);\n this._active_columns.insertBefore(this._drop_target_null, this._active_columns.children[this._original_index]);\n } else {\n if (this._drop_target_hover !== this._active_columns.children[new_index]) {\n this._drop_target_null = this._active_columns.children[new_index];\n this._active_columns.replaceChild(this._drop_target_hover, this._active_columns.children[new_index]);\n }\n }\n } else if (to_replace && from_active && is_diff) {\n column_swap.call(this, new_index);\n } else if (to_replace && !from_active && is_diff) {\n column_replace.call(this, new_index);\n } else if (!to_replace && from_replace && is_diff) {\n column_swap.call(this, new_index);\n } else if (to_null && from_active) {\n column_swap.call(this, new_index);\n } else if (to_null && !from_active) {\n column_replace.call(this, new_index);\n } else if (current_index < new_index) {\n if (new_index + 1 < this._active_columns.children.length) {\n if (!this._active_columns.children[new_index + 1].hasAttribute(\"drop-target\")) {\n _unset_drop_target_null.call(this);\n this._active_columns.insertBefore(this._drop_target_hover, this._active_columns.children[new_index + 1]);\n }\n } else {\n if (!this._active_columns.children[this._active_columns.children.length - 1].hasAttribute(\"drop-target\")) {\n _unset_drop_target_null.call(this);\n this._active_columns.appendChild(this._drop_target_hover);\n }\n }\n } else if (new_index < this._active_columns.children.length) {\n if (!this._active_columns.children[new_index].hasAttribute(\"drop-target\")) {\n _unset_drop_target_null.call(this);\n this._active_columns.insertBefore(this._drop_target_hover, this._active_columns.children[new_index]);\n }\n } else {\n if (!this._active_columns.children[this._active_columns.children.length - 1].hasAttribute(\"drop-target\")) {\n _unset_drop_target_null.call(this);\n this._active_columns.appendChild(this._drop_target_hover);\n }\n }\n}\n\nexport function column_drop(ev) {\n ev.preventDefault();\n delete this._drop_target_null;\n ev.currentTarget.classList.remove(\"dropping\");\n if (this._drop_target_hover.parentElement === this._active_columns) {\n this._drop_target_hover.removeAttribute(\"drop-target\");\n }\n let data = ev.dataTransfer.getData(\"text\");\n if (!data) return;\n\n this._update_column_view();\n}\n\nexport function dragenter(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n ev.currentTarget.classList.add(\"dropping\");\n}\n\nexport function dragover(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n ev.currentTarget.classList.add(\"dropping\");\n ev.dataTransfer.dropEffect = \"move\";\n}\n\nexport function dragleave(ev) {\n if (ev.currentTarget == ev.target) {\n ev.stopPropagation();\n ev.preventDefault();\n ev.currentTarget.classList.remove(\"dropping\");\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {bindTemplate} from \"./utils.js\";\nimport State from \"./computed_column/state.js\";\nimport {Computation, FORMATTER} from \"./computed_column/computation.js\";\n\nimport template from \"../html/computed_column.html\";\n\nimport style from \"../less/computed_column.less\";\n\nimport {dragleave} from \"./viewer/dragdrop.js\";\nimport {html, render} from \"lit-html\";\n\n// Computations\nconst hour_of_day = function(val) {\n return new Date(val).getHours();\n};\n\nconst day_of_week = function(val) {\n return [\"1 Sunday\", \"2 Monday\", \"3 Tuesday\", \"4 Wednesday\", \"5 Thursday\", \"6 Friday\", \"7 Saturday\"][new Date(val).getDay()];\n};\n\nconst month_of_year = function(val) {\n return [\"01 January\", \"02 February\", \"03 March\", \"04 April\", \"05 May\", \"06 June\", \"07 July\", \"08 August\", \"09 September\", \"10 October\", \"11 November\", \"12 December\"][new Date(val).getMonth()];\n};\n\nconst second_bucket = function(val) {\n return new Date(Math.floor(new Date(val).getTime() / 1000) * 1000);\n};\n\nconst minute_bucket = function(val) {\n let date = new Date(val);\n date.setSeconds(0);\n date.setMilliseconds(0);\n return date;\n};\n\nconst hour_bucket = function(val) {\n let date = new Date(val);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setMilliseconds(0);\n return date;\n};\n\nconst day_bucket = function(val) {\n let date = new Date(val);\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setMilliseconds(0);\n return date;\n};\n\nconst week_bucket = function(val) {\n let date = new Date(val);\n let day = date.getDay();\n let diff = date.getDate() - day + (day == 0 ? -6 : 1);\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setDate(diff);\n return date;\n};\n\nconst month_bucket = function(val) {\n let date = new Date(val);\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setDate(1);\n return date;\n};\n\nconst year_bucket = function(val) {\n let date = new Date(val);\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setDate(1);\n date.setMonth(1);\n return date;\n};\n\nexport const COMPUTATIONS = {\n hour_of_day: new Computation(\"Hour of Day\", x => `hour_of_day(${x})`, \"datetime\", \"integer\", hour_of_day, [\"Time\"]),\n day_of_week: new Computation(\"Day of Week\", x => `day_of_week(${x})`, \"datetime\", \"string\", day_of_week, [\"Time\"]),\n month_of_year: new Computation(\"Month of Year\", x => `month_of_year(${x})`, \"datetime\", \"string\", month_of_year, [\"Time\"]),\n second_bucket: new Computation(\"Bucket (s)\", x => `second_bucket(${x})`, \"datetime\", \"datetime\", second_bucket, [\"Time\"]),\n minute_bucket: new Computation(\"Bucket (m)\", x => `minute_bucket(${x})`, \"datetime\", \"datetime\", minute_bucket, [\"Time\"]),\n hour_bucket: new Computation(\"Bucket (h)\", x => `hour_bucket(${x})`, \"datetime\", \"datetime\", hour_bucket, [\"Time\"]),\n day_bucket: new Computation(\"Bucket (D)\", x => `day_bucket(${x})`, \"datetime\", \"date\", day_bucket, [\"Time\"]),\n week_bucket: new Computation(\"Bucket (W)\", x => `week_bucket(${x})`, \"datetime\", \"date\", week_bucket, [\"Time\"]),\n month_bucket: new Computation(\"Bucket (M)\", x => `month_bucket(${x})`, \"datetime\", \"date\", month_bucket, [\"Time\"]),\n year_bucket: new Computation(\"Bucket (Y)\", x => `year_bucket(${x})`, \"datetime\", \"date\", year_bucket, [\"Time\"]),\n \"10_bucket\": new Computation(\n \"Bucket (10)\",\n x => `bin10(${x})`,\n \"float\",\n \"float\",\n x => Math.floor(x / 10) * 10,\n [\"Math\"]\n ),\n \"100_bucket\": new Computation(\n \"Bucket (100)\",\n x => `bin100(${x})`,\n \"float\",\n \"float\",\n x => Math.floor(x / 100) * 100,\n [\"Math\"]\n ),\n \"1000_bucket\": new Computation(\n \"Bucket (1000)\",\n x => `bin1000(${x})`,\n \"float\",\n \"float\",\n x => Math.floor(x / 1000) * 1000,\n [\"Math\"]\n ),\n \"0.1_bucket\": new Computation(\n \"Bucket (1/10)\",\n x => `bin10th(${x})`,\n \"float\",\n \"float\",\n x => Math.floor(x / 0.1) * 0.1,\n [\"Math\"]\n ),\n \"0.01_bucket\": new Computation(\n \"Bucket (1/100)\",\n x => `bin100th(${x})`,\n \"float\",\n \"float\",\n x => Math.floor(x / 0.01) * 0.01,\n [\"Math\"]\n ),\n \"0.001_bucket\": new Computation(\n \"Bucket (1/1000)\",\n x => `bin1000th(${x})`,\n \"float\",\n \"float\",\n x => Math.floor(x / 0.001) * 0.001,\n [\"Math\"]\n ),\n add: new Computation(\n \"+\",\n (x, y) => `(${x} + ${y})`,\n \"float\",\n \"float\",\n (a, b) => a + b,\n [\"Math\"],\n 2\n ),\n subtract: new Computation(\n \"-\",\n (x, y) => `(${x} - ${y})`,\n \"float\",\n \"float\",\n (a, b) => a - b,\n [\"Math\"],\n 2\n ),\n multiply: new Computation(\n \"*\",\n (x, y) => `(${x} * ${y})`,\n \"float\",\n \"float\",\n (a, b) => a * b,\n [\"Math\"],\n 2\n ),\n divide: new Computation(\n \"/\",\n (x, y) => `(${x} / ${y})`,\n \"float\",\n \"float\",\n (a, b) => a / b,\n [\"Math\"],\n 2\n ),\n invert: new Computation(\n \"1/x\",\n x => `(1 / ${x})`,\n \"float\",\n \"float\",\n a => 1 / a,\n [\"Math\"],\n 1\n ),\n pow: new Computation(\n \"x^2\",\n x => `(${x} ^ 2)`,\n \"float\",\n \"float\",\n a => Math.pow(a, 2),\n [\"Math\"],\n 1\n ),\n sqrt: new Computation(\n \"sqrt\",\n x => `sqrt(${x})`,\n \"float\",\n \"float\",\n a => Math.sqrt(a),\n [\"Math\"],\n 1\n ),\n abs: new Computation(\n \"abs\",\n x => `abs(${x})`,\n \"float\",\n \"float\",\n a => Math.abs(a),\n [\"Math\"],\n 1\n ),\n percent_a_of_b: new Computation(\n \"%\",\n (x, y) => `(${x} %% ${y})`,\n \"float\",\n \"float\",\n (a, b) => (a / b) * 100,\n [\"Math\"],\n 2\n ),\n uppercase: new Computation(\n \"Uppercase\",\n x => `uppercase(${x})`,\n \"string\",\n \"string\",\n x => x.toUpperCase(),\n [\"Text\"]\n ),\n lowercase: new Computation(\n \"Lowercase\",\n x => `lowercase(${x})`,\n \"string\",\n \"string\",\n x => x.toLowerCase(),\n [\"Text\"]\n ),\n length: new Computation(\n \"length\",\n x => `length(${x})`,\n \"string\",\n \"integer\",\n x => x.length,\n [\"Text\"]\n ),\n concat_space: new Computation(\n \"concat_space\",\n x => `concat_space(${x})`,\n \"string\",\n \"string\",\n (a, b) => a + \" \" + b,\n [\"Text\"],\n 2\n ),\n concat_comma: new Computation(\n \"concat_comma\",\n x => `concat_comma(${x})`,\n \"string\",\n \"string\",\n (a, b) => a + \", \" + b,\n [\"Text\"],\n 2\n )\n};\n\nfunction _insert_tree(name, elem, tree) {\n let pointer = tree;\n const path = elem.category;\n for (const category of path) {\n pointer = pointer[category] = pointer[category] || {};\n }\n pointer[name] = elem;\n}\n\nfunction _get_tree() {\n const tree = {};\n for (const comp in COMPUTATIONS) {\n _insert_tree(comp, COMPUTATIONS[comp], tree);\n }\n return tree;\n}\n\nlet TREE = _get_tree();\n\n// Eslint complains here because we don't do anything, but actually we globally\n// register this class as a CustomElement\n@bindTemplate(template, style) // eslint-disable-next-line no-unused-vars\nclass ComputedColumn extends HTMLElement {\n constructor() {\n super();\n\n this.state = new State();\n this.column_names = [];\n\n this.type_markers = {\n float: \"123\",\n integer: \"123\",\n string: \"abc\",\n boolean: \"t/f\",\n datetime: \"mdy\",\n date: \"mdy\"\n };\n }\n\n get computations() {\n return COMPUTATIONS;\n }\n\n connectedCallback() {\n this._register_ids();\n render(Array.from(this._selector_template()), this._computation_selector);\n this._register_callbacks();\n this._update_computation(null);\n this._register_inputs();\n }\n\n _register_computations() {\n TREE = _get_tree();\n render(Array.from(this._selector_template()), this._computation_selector);\n }\n\n *_selector_template(tree = TREE) {\n for (const [category, comp] of Object.entries(tree)) {\n if (comp.name) {\n yield html`\n <option value=${category}>${comp.name}</option>\n `;\n } else {\n yield html`\n <optgroup label=${category}>${Array.from(this._selector_template(comp))}</optgroup>\n `;\n }\n }\n }\n\n // Generate input column holders, reset input column state\n _register_inputs() {\n this._clear_error_messages();\n this._disable_save_button();\n this._input_columns.innerHTML = \"\";\n const computation = this.state.computation;\n const input_type = computation.input_type;\n\n this.state.input_columns = [];\n this.state.swap_target = false;\n\n for (let i = 0; i < computation.num_params; i++) {\n this._input_columns.innerHTML += `<div class=\"psp-cc-computation__input-column\"\n data-index=\"${i}\"\n drop-target>\n <span class=\"psp-label__requiredType ${input_type}\"></span>\n <span class=\"psp-label__placeholder\">Param ${i + 1}</span>\n <div class=\"psp-cc-computation__drop-target-hover\"></div>\n </div>`;\n }\n\n for (let column of this._input_columns.children) {\n column.addEventListener(\"drop\", this._drop_column.bind(this));\n column.addEventListener(\"dragstart\", this._drag_column.bind(this));\n column.addEventListener(\"dragend\", this._remove_column.bind(this));\n column.addEventListener(\"dragover\", this._hover_column.bind(this));\n column.addEventListener(\"dragleave\", this._pass_column.bind(this));\n }\n\n this._clear_column_name();\n }\n\n // Drag & Drop\n _parse_data_transfer(data) {\n const column_data = JSON.parse(data);\n if (!column_data) return;\n\n return {\n column_name: column_data[0],\n column_type: column_data[3]\n };\n }\n\n _drag_column(event) {\n // called when columns are dragged from inside the UI\n if (this.state.computation.num_params > 1) {\n // if there is a chance of a swap happening, cache the swap target\n this.state.swap_target = event.currentTarget;\n }\n }\n\n _hover_column(event) {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n\n const drop_target = event.currentTarget;\n const drop_target_hover = drop_target.querySelector(\".psp-cc-computation__drop-target-hover\");\n if (drop_target.className !== \"dropping\") {\n //event.currentTarget.classList.remove('dropped');\n drop_target.classList.add(\"dropping\");\n }\n if (drop_target_hover && !drop_target_hover.hasAttribute(\"drop-target\")) {\n drop_target_hover.toggleAttribute(\"drop-target\", \"true\");\n }\n\n if (drop_target.children.length === 2) {\n // drop_target_hover is the blue box\n drop_target.parentNode.insertBefore(drop_target_hover, drop_target.nextSibling);\n }\n }\n\n _drop_column(event) {\n const target = event.currentTarget;\n event.preventDefault();\n\n target.classList.remove(\"dropping\");\n\n const is_swap = this.state.swap_target !== undefined && target.innerHTML.indexOf(\"perspective-row\") > -1;\n\n // column must match return type of computation\n const data = this._parse_data_transfer(event.dataTransfer.getData(\"text\"));\n if (!data) return;\n\n if (is_swap) {\n const current_column = target.children[0];\n const current_column_name = current_column.getAttribute(\"name\");\n const current_column_type = current_column.getAttribute(\"type\");\n event.swapTarget = this.state.swap_target;\n\n // take the column at the drop target, and set it to the column\n // being swapped\n this._set_input_column(event, current_column_name, current_column_type);\n\n // reset swap_target and currentTarget\n this.state.swap_target = false;\n delete event.swapTarget;\n }\n\n this._set_input_column(event, data.column_name, data.column_type);\n }\n\n deselect_column(name) {\n this.state.input_columns = this.state.input_columns.map(x => (x && x.name === name ? undefined : x));\n this._apply_state(this.state.input_columns, this.state.computation);\n }\n\n // Called when a column is dragged out of the computed column UI\n _remove_column(event) {\n event.currentTarget.classList.remove(\"dropping\");\n }\n\n // Called when the column passes over and then leaves the drop target\n _pass_column(event) {\n const src = event.currentTarget;\n // are we inside the column? if we are, prevent further calls which\n // cause flickering\n const bounds = src.getBoundingClientRect();\n const inside_x = event.pageX >= bounds.left && event.pageX <= bounds.right - 2;\n const inside_y = event.pageY >= bounds.top && event.pageY <= bounds.bottom - 2;\n if (inside_x && inside_y) {\n return;\n }\n if (src !== null && src.nodeName !== \"SPAN\") {\n src.classList.remove(\"dropping\");\n const drop_target_hover = src.querySelector(\".psp-cc-computation__drop-target-hover\");\n if (drop_target_hover) drop_target_hover.removeAttribute(\"drop-target\");\n }\n }\n\n // When state changes are made manually, apply them to the UI\n _apply_state(columns, computation, name) {\n this._update_computation(null, this.state.computed_function_name);\n this.state[\"input_columns\"] = columns;\n const inputs = this._input_columns.children;\n\n for (let i = 0; i < this.state[\"input_columns\"].length; i++) {\n if (this.state[\"input_columns\"][i] !== undefined) {\n this._set_input_column({currentTarget: inputs[i]}, this.state[\"input_columns\"][i].name, this.state[\"input_columns\"][i].type);\n }\n }\n\n this._column_name_input.innerText = name || \"\";\n this._set_column_name();\n this.state[\"name_edited\"] = name !== undefined;\n\n if (this.state.is_valid()) {\n this._enable_save_button();\n }\n }\n\n // column_name\n _set_column_name() {\n const input = this._column_name_input;\n let name = input.innerText;\n if (name.length == 0) {\n this.state[\"column_name\"] = undefined;\n this._disable_save_button();\n return;\n }\n this.state[\"column_name\"] = name;\n\n if (this.state.is_valid()) {\n this._enable_save_button();\n }\n }\n\n _auto_column_name() {\n if (this.state.name_edited) {\n return;\n }\n if (this.state.input_columns.length > 0) {\n let names = [];\n for (let column of this.state.input_columns) names.push(column.name);\n if (this.state.computation[FORMATTER]) {\n this._column_name_input.innerText = this.state.computation[FORMATTER].apply(undefined, names);\n } else {\n this._column_name_input.innerText = `${this.state.computation.name}(${names.join(\", \")})`;\n }\n } else {\n this._column_name_input.innerText = \"\";\n }\n this._set_column_name();\n }\n\n _clear_column_name() {\n const input = this._column_name_input;\n input.innerText = \"\";\n this.state[\"name_edited\"] = false;\n this._set_column_name();\n }\n\n // input column\n _set_input_column(event, name, type) {\n const computation = this.state.computation;\n const computation_type = computation.input_type;\n const inputs = this.state.input_columns;\n\n let target;\n if (event.swapTarget) {\n target = event.swapTarget;\n } else {\n target = event.currentTarget;\n }\n\n const index = Number.parseInt(target.getAttribute(\"data-index\"));\n\n if (\n (computation_type !== \"float\" && computation_type !== \"datetime\" && type !== computation_type) ||\n (computation_type === \"float\" && type !== \"float\" && type !== \"integer\") ||\n (computation_type === \"datetime\" && type !== \"datetime\" && type !== \"date\")\n ) {\n this._register_inputs();\n target.classList.remove(\"dropped\");\n return;\n }\n\n target.classList.add(\"dropped\");\n\n const drop_target_hover = target.querySelector(\".psp-cc-computation__drop-target-hover\");\n if (drop_target_hover) drop_target_hover.removeAttribute(\"drop-target\");\n\n target.innerHTML = \"\";\n\n const column = {\n name: name,\n type: type\n };\n\n inputs[index] = column;\n\n this.state[\"input_columns\"] = inputs;\n if (inputs.filter(x => x).length === computation.num_params) {\n this._auto_column_name();\n }\n\n this.dispatchEvent(\n new CustomEvent(\"perspective-computed-column-update\", {\n detail: {\n target,\n column\n }\n })\n );\n\n if (this.state.is_valid()) {\n this._enable_save_button();\n }\n }\n\n // computation\n _update_computation(event, computation_name) {\n const select = this._computation_selector;\n\n if (!computation_name) {\n computation_name = select[select.selectedIndex].value;\n } else if (event === null || event === undefined) {\n select.value = computation_name;\n }\n\n const computation = Object.assign({}, COMPUTATIONS[computation_name]);\n\n if (computation === undefined) {\n throw \"Undefined computation could not be set.\";\n }\n\n const num_params = computation.num_params;\n const input_type = computation.input_type;\n const return_type = computation.return_type;\n let reset_inputs = true;\n\n if (this.state[\"computation\"]) {\n // do we need to reset the input? if types/num_params differ then\n // yes\n reset_inputs = input_type !== this.state[\"computation\"].input_type || num_params !== this.state[\"computation\"].num_params;\n }\n\n this._computation_type.innerHTML = `<span class=\"${return_type}\">${this.type_markers[return_type]}</span>`;\n\n this.state[\"computation\"] = computation;\n this.state.computed_function_name = computation_name;\n\n if (reset_inputs || event === null) {\n this._register_inputs();\n this._clear_column_name();\n } else {\n this._auto_column_name();\n }\n }\n\n // error message handlers\n _set_error_message(message, target) {\n if (target) {\n target.innerText = message;\n target.style.display = \"block\";\n }\n }\n\n _clear_error_messages() {\n this._column_name_error.innerText = \"\";\n this._column_name_error.style.display = \"none\";\n }\n\n // save button handlers\n _disable_save_button() {\n this._save_button.toggleAttribute(\"disabled\", true);\n }\n\n _enable_save_button() {\n this._save_button.removeAttribute(\"disabled\");\n }\n\n // save\n _save_computed_column() {\n if (this.state.is_valid()) {\n const computed_column = this.state;\n\n if (this.column_names.includes(this.state.column_name)) {\n this._set_error_message(\"Column names must be unique.\", this._column_name_error);\n return;\n }\n\n this._clear_error_messages();\n\n const event = new CustomEvent(\"perspective-computed-column-save\", {\n detail: {\n name: computed_column.column_name,\n inputs: computed_column.input_columns.map(x => x.name),\n func: computed_column.computed_function_name\n }\n });\n this.dispatchEvent(event);\n\n this.column_names.push(computed_column.column_name);\n }\n }\n\n // close\n _close_computed_column() {\n this.style.display = \"none\";\n this._side_panel_actions.style.display = \"flex\";\n\n this.classList.remove(\"edit\");\n this._column_name_input.innerText = \"\";\n this._input_columns.innerHTML = \"\";\n\n for (let child of this._input_columns.children) child.classList.remove(\"dropped\");\n\n this.state = new State();\n this._update_computation();\n }\n\n _register_ids() {\n this._side_panel_actions = this.parentElement.querySelector(\"#side_panel__actions\");\n this._close_button = this.shadowRoot.querySelector(\"#psp-cc__close\");\n this._column_name_input = this.shadowRoot.querySelector(\"#psp-cc-name\");\n this._column_name_error = this.shadowRoot.querySelector(\"#psp-cc__error--name\");\n this._computation_selector = this.shadowRoot.querySelector(\"#psp-cc-computation__select\");\n this._computation_type = this.shadowRoot.querySelector(\"#psp-cc-computation__type\");\n this._input_columns = this.shadowRoot.querySelector(\"#psp-cc-computation-inputs\");\n //this._delete_button =\n //this.shadowRoot.querySelector('#psp-cc-button-delete');\n this._save_button = this.shadowRoot.querySelector(\"#psp-cc-button-save\");\n }\n\n _register_callbacks() {\n this._close_button.addEventListener(\"click\", this._close_computed_column.bind(this));\n this._computation_selector.addEventListener(\"change\", this._update_computation.bind(this));\n this._column_name_input.addEventListener(\"dragover\", dragleave.bind(this));\n this._column_name_input.addEventListener(\"keyup\", event => {\n this.state[\"name_edited\"] = this._column_name_input.innerText && this._column_name_input.innerText.length > 0;\n this._set_column_name(event);\n });\n //this._delete_button.addEventListener('click',\n //this._delete_computed_column.bind(this));\n this._save_button.addEventListener(\"click\", this._save_computed_column.bind(this));\n }\n}\n","/******************************************************************************\r\n *\r\n * Copyright (c) 2017, the Perspective Authors.\r\n *\r\n * This file is part of the Perspective library, distributed under the terms of\r\n * the Apache License 2.0. The full license can be found in the LICENSE file.\r\n *\r\n */\r\n\r\nimport debounce from \"lodash/debounce\";\r\n\r\nimport Awesomplete from \"awesomplete\";\r\nimport awesomplete_style from \"!!css-loader!awesomplete/awesomplete.css\";\r\n\r\nimport {bindTemplate} from \"./utils.js\";\r\n\r\nimport perspective from \"@finos/perspective\";\r\nimport {get_type_config} from \"@finos/perspective/dist/esm/config\";\r\nimport template from \"../html/row.html\";\r\n\r\nimport style from \"../less/row.less\";\r\nimport {html, render, nothing} from \"lit-html\";\r\n\r\nconst SPAN = document.createElement(\"span\");\r\nSPAN.style.visibility = \"hidden\";\r\nSPAN.style.fontFamily = \"monospace\";\r\nSPAN.style.fontSize = \"12px\";\r\nSPAN.style.position = \"absolute\";\r\n\r\nfunction get_text_width(text, max = 0) {\r\n // FIXME get these values form the stylesheet\r\n SPAN.innerHTML = text;\r\n document.body.appendChild(SPAN);\r\n const width = `${Math.max(max, SPAN.offsetWidth) + 20}px`;\r\n document.body.removeChild(SPAN);\r\n return width;\r\n}\r\n\r\n// Eslint complains here because we don't do anything, but actually we globally\r\n// register this class as a CustomElement\r\n@bindTemplate(template, {toString: () => style + \"\\n\" + awesomplete_style}) // eslint-disable-next-line no-unused-vars\r\nclass Row extends HTMLElement {\r\n set name(n) {\r\n const elem = this.shadowRoot.querySelector(\"#name\");\r\n elem.innerHTML = this.getAttribute(\"name\");\r\n }\r\n\r\n _option_template(agg, name) {\r\n return html`\r\n <option value=\"${agg}\" data-desc=\"${name}\">${name || agg}</option>\r\n `;\r\n }\r\n\r\n _select_template(category, type) {\r\n const items = perspective[category][type] || [];\r\n const weighted_options = html`\r\n <optgroup label=\"weighted mean\">\r\n ${this._weights.map(x => this._option_template(JSON.stringify([\"weighted mean\", x]), x))}\r\n </optgroup>\r\n `;\r\n return html`\r\n ${items.map(x => this._option_template(x))} ${type === \"integer\" || type === \"float\" ? weighted_options : nothing}\r\n `;\r\n }\r\n\r\n set_weights(xs) {\r\n this._weights = xs;\r\n }\r\n\r\n set type(t) {\r\n const elem = this.shadowRoot.querySelector(\"#name\");\r\n const type = this.getAttribute(\"type\");\r\n if (!type) return;\r\n const type_config = get_type_config(type);\r\n if (type_config.type) {\r\n elem.classList.add(type_config.type);\r\n }\r\n elem.classList.add(type);\r\n const agg_dropdown = this.shadowRoot.querySelector(\"#column_aggregate\");\r\n const filter_dropdown = this.shadowRoot.querySelector(\"#filter_operator\");\r\n\r\n render(this._select_template(\"TYPE_AGGREGATES\", type_config.type || type), agg_dropdown);\r\n render(this._select_template(\"TYPE_FILTERS\", type_config.type || type), filter_dropdown);\r\n\r\n if (!this.hasAttribute(\"aggregate\")) {\r\n this.aggregate = type_config.aggregate;\r\n } else {\r\n this.aggregate = this.getAttribute(\"aggregate\");\r\n }\r\n if (this.hasAttribute(\"filter\")) {\r\n this.filter = this.getAttribute(\"filter\");\r\n }\r\n\r\n const filter_operand = this.shadowRoot.querySelector(\"#filter_operand\");\r\n this._callback = event => this._update_filter(event);\r\n filter_operand.addEventListener(\"keyup\", this._callback.bind(this));\r\n }\r\n\r\n choices(choices) {\r\n const filter_operand = this.shadowRoot.querySelector(\"#filter_operand\");\r\n const filter_operator = this.shadowRoot.querySelector(\"#filter_operator\");\r\n const selector = new Awesomplete(filter_operand, {\r\n label: this.getAttribute(\"name\"),\r\n list: choices,\r\n minChars: 0,\r\n autoFirst: true,\r\n filter: function(text, input) {\r\n return Awesomplete.FILTER_CONTAINS(text, input.match(/[^,]*$/)[0]);\r\n },\r\n item: function(text, input) {\r\n return Awesomplete.ITEM(text, input.match(/[^,]*$/)[0]);\r\n },\r\n replace: function(text) {\r\n const before = this.input.value.match(/^.+,\\s*|/)[0];\r\n if (filter_operator.value === \"in\" || filter_operator.value === \"not in\") {\r\n this.input.value = before + text + \", \";\r\n } else {\r\n this.input.value = before + text;\r\n }\r\n }\r\n });\r\n if (filter_operand.value === \"\") {\r\n selector.evaluate();\r\n }\r\n filter_operand.focus();\r\n this._filter_operand.addEventListener(\"focus\", () => {\r\n if (filter_operand.value.trim().length === 0) {\r\n selector.evaluate();\r\n }\r\n });\r\n filter_operand.addEventListener(\"awesomplete-selectcomplete\", this._callback);\r\n }\r\n\r\n set filter(f) {\r\n const filter_dropdown = this.shadowRoot.querySelector(\"#filter_operator\");\r\n const filter = JSON.parse(this.getAttribute(\"filter\"));\r\n if (filter_dropdown.value !== filter.operator) {\r\n filter_dropdown.value = filter.operator || get_type_config(this.getAttribute(\"type\")).filter_operator;\r\n }\r\n filter_dropdown.style.width = get_text_width(filter_dropdown.value);\r\n const filter_input = this.shadowRoot.querySelector(\"#filter_operand\");\r\n const operand = filter.operand ? filter.operand.toString() : \"\";\r\n if (!this._initialized) {\r\n filter_input.value = operand;\r\n }\r\n if (filter_dropdown.value === perspective.FILTER_OPERATORS.isNull || filter_dropdown.value === perspective.FILTER_OPERATORS.isNotNull) {\r\n filter_input.style.display = \"none\";\r\n } else {\r\n filter_input.style.display = \"inline-block\";\r\n filter_input.style.width = get_text_width(operand, 30);\r\n }\r\n }\r\n\r\n set aggregate(a) {\r\n const agg_dropdown = this.shadowRoot.querySelector(\"#column_aggregate\");\r\n const aggregate = this.getAttribute(\"aggregate\");\r\n if (agg_dropdown.value !== aggregate && this.hasAttribute(\"type\")) {\r\n const type = this.getAttribute(\"type\");\r\n agg_dropdown.value = aggregate || get_type_config(type).aggregate;\r\n }\r\n this._blur_agg_dropdown();\r\n }\r\n\r\n set computed_column(c) {\r\n // const data = this._get_computed_data();\r\n // const computed_input_column =\r\n // this.shadowRoot.querySelector('#computed_input_column');\r\n // const computation_name =\r\n // this.shadowRoot.querySelector('#computation_name');\r\n // computation_name.textContent = data.computation.name;\r\n // computed_input_column.textContent = data.input_column;\r\n }\r\n\r\n _get_computed_data() {\r\n const data = JSON.parse(this.getAttribute(\"computed_column\"));\r\n return {\r\n column_name: data.column_name,\r\n input_columns: data.input_columns,\r\n input_type: data.input_type,\r\n computation: data.computation,\r\n type: data.type\r\n };\r\n }\r\n\r\n _update_filter(event) {\r\n const filter_operand = this.shadowRoot.querySelector(\"#filter_operand\");\r\n const filter_operator = this.shadowRoot.querySelector(\"#filter_operator\");\r\n let val = filter_operand.value;\r\n const type = this.getAttribute(\"type\");\r\n switch (type) {\r\n case \"float\":\r\n val = parseFloat(val);\r\n break;\r\n case \"integer\":\r\n val = parseInt(val);\r\n break;\r\n case \"boolean\":\r\n val = val.toLowerCase().indexOf(\"true\") > -1;\r\n break;\r\n case \"string\":\r\n default:\r\n }\r\n if (filter_operator.value === perspective.FILTER_OPERATORS.isIn || filter_operator.value === perspective.FILTER_OPERATORS.isNotIn) {\r\n val = val.split(\",\").map(x => x.trim());\r\n }\r\n this.setAttribute(\"filter\", JSON.stringify({operator: filter_operator.value, operand: val}));\r\n this.dispatchEvent(new CustomEvent(\"filter-selected\", {detail: event}));\r\n }\r\n\r\n _set_data_transfer(event) {\r\n if (this.hasAttribute(\"filter\")) {\r\n const {operator, operand} = JSON.parse(this.getAttribute(\"filter\"));\r\n event.dataTransfer.setData(\"text\", JSON.stringify([this.getAttribute(\"name\"), operator, operand, this.getAttribute(\"type\"), this.getAttribute(\"aggregate\")]));\r\n } else {\r\n event.dataTransfer.setData(\r\n \"text\",\r\n JSON.stringify([this.getAttribute(\"name\"), get_type_config(this.getAttribute(\"type\")).filter_operator, undefined, this.getAttribute(\"type\"), this.getAttribute(\"aggregate\")])\r\n );\r\n }\r\n this.dispatchEvent(new CustomEvent(\"row-drag\"));\r\n }\r\n\r\n _register_ids() {\r\n this._li = this.shadowRoot.querySelector(\".row_draggable\");\r\n this._visible = this.shadowRoot.querySelector(\".is_visible\");\r\n this._row_close = this.shadowRoot.querySelector(\"#row_close\");\r\n this._agg_dropdown = this.shadowRoot.querySelector(\"#column_aggregate\");\r\n this._sort_order = this.shadowRoot.querySelector(\"#sort_order\");\r\n this._filter_operand = this.shadowRoot.querySelector(\"#filter_operand\");\r\n this._filter_operator = this.shadowRoot.querySelector(\"#filter_operator\");\r\n this._edit_computed_column_button = this.shadowRoot.querySelector(\"#row_edit\");\r\n this._column_aggregate_category = this.shadowRoot.querySelector(\"#column_aggregate_category\");\r\n }\r\n\r\n _blur_agg_dropdown() {\r\n this._agg_dropdown.blur();\r\n if (this._agg_dropdown.value[0] === \"[\") {\r\n for (const option of this._agg_dropdown.querySelectorAll(\"optgroup option\")) {\r\n const name = option.getAttribute(\"data-desc\");\r\n option.innerHTML = `mean by ${name}`;\r\n }\r\n }\r\n }\r\n\r\n _focus_agg_dropdown() {\r\n for (const option of this._agg_dropdown.querySelectorAll(\"optgroup option\")) {\r\n const name = option.getAttribute(\"data-desc\");\r\n option.innerHTML = `by ${name}`;\r\n }\r\n }\r\n\r\n _register_callbacks() {\r\n this._li.addEventListener(\"dragstart\", this._set_data_transfer.bind(this));\r\n this._li.addEventListener(\"dragend\", () => {\r\n this.dispatchEvent(new CustomEvent(\"row-dragend\"));\r\n });\r\n this._visible.addEventListener(\"mousedown\", event => this.dispatchEvent(new CustomEvent(\"visibility-clicked\", {detail: event})));\r\n this._row_close.addEventListener(\"mousedown\", event => this.dispatchEvent(new CustomEvent(\"close-clicked\", {detail: event})));\r\n this._agg_dropdown.addEventListener(\"focus\", this._focus_agg_dropdown.bind(this));\r\n\r\n this._agg_dropdown.addEventListener(\"change\", event => {\r\n this._blur_agg_dropdown();\r\n const value = this._agg_dropdown.value;\r\n this.setAttribute(\"aggregate\", value);\r\n this.dispatchEvent(new CustomEvent(\"aggregate-selected\", {detail: event}));\r\n });\r\n this._sort_order.addEventListener(\"click\", event => {\r\n this.dispatchEvent(new CustomEvent(\"sort-order\", {detail: event}));\r\n });\r\n\r\n const debounced_filter = debounce(event => this._update_filter(event), 50);\r\n this._filter_operator.addEventListener(\"change\", () => {\r\n this._filter_operand.focus();\r\n this._filter_operator.style.width = get_text_width(this._filter_operator.value);\r\n const filter_input = this.shadowRoot.querySelector(\"#filter_operand\");\r\n filter_input.style.width = get_text_width(\"\" + this._filter_operand.value, 30);\r\n debounced_filter();\r\n });\r\n this._edit_computed_column_button.addEventListener(\"click\", () => {\r\n this.dispatchEvent(\r\n new CustomEvent(\"perspective-computed-column-edit\", {\r\n bubbles: true,\r\n detail: this._get_computed_data()\r\n })\r\n );\r\n });\r\n }\r\n\r\n connectedCallback() {\r\n this._register_ids();\r\n this._register_callbacks();\r\n }\r\n}\r\n","/******************************************************************************\n *\n * Copyright (c) 2018, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nexport class CancelTask {\n constructor(on_cancel, initial = false) {\n this._on_cancel = on_cancel;\n this._cancelled = false;\n this.initial = initial;\n }\n\n cancel() {\n if (!this._cancelled && this._on_cancel) {\n this._on_cancel();\n this._on_cancel = undefined;\n }\n this._cancelled = true;\n }\n\n get cancelled() {\n return this._cancelled;\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2018, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {renderers} from \"./renderers.js\";\n\nexport class StateElement extends HTMLElement {\n get _plugin() {\n let current_renderers = renderers.getInstance();\n let view = this.getAttribute(\"plugin\");\n if (!view) {\n view = Object.keys(current_renderers)[0];\n this.setAttribute(\"plugin\", view);\n }\n return current_renderers[view] || current_renderers[Object.keys(current_renderers)[0]];\n }\n\n // deprecate\n _get_view_dom_columns(selector, callback) {\n selector = selector || \"#active_columns perspective-row\";\n let columns = Array.prototype.slice.call(this.shadowRoot.querySelectorAll(selector));\n if (!callback) {\n return columns;\n }\n return columns.map(callback).filter(x => x);\n }\n\n _get_view_all_columns() {\n return Array.prototype.slice.call(this.shadowRoot.querySelectorAll(\"#inactive_columns perspective-row\"));\n }\n\n _get_view_active_columns() {\n return Array.prototype.slice.call(this.shadowRoot.querySelectorAll(\"#active_columns perspective-row\"));\n }\n\n _get_view_active_valid_columns() {\n return Array.prototype.slice.call(this.shadowRoot.querySelectorAll(\"#active_columns perspective-row\")).filter(x => !x.classList.contains(\"null-column\"));\n }\n\n _get_view_all_column_names() {\n return this._get_view_all_columns().map(x => x.getAttribute(\"name\"));\n }\n\n _get_view_active_column_names() {\n return this._get_view_active_columns().map(x => x.getAttribute(\"name\"));\n }\n\n _get_view_all_valid_column_names() {\n return this._get_view_all_column_names().filter(x => x);\n }\n\n _get_view_active_valid_column_names() {\n return this._get_view_active_column_names().filter(x => x);\n }\n\n _get_view_active_valid_column_count() {\n return this._get_view_active_valid_column_names().length;\n }\n\n // deprecate\n _get_view_columns({active = true} = {}) {\n let selector;\n if (active) {\n selector = \"#active_columns perspective-row\";\n } else {\n selector = \"#inactive_columns perspective-row\";\n }\n return this._get_view_dom_columns(selector, col => {\n return col.getAttribute(\"name\");\n });\n }\n\n _get_view_aggregates(selector) {\n selector = selector || \"#active_columns perspective-row\";\n return this._get_view_dom_columns(selector, s => {\n let op = s.getAttribute(\"aggregate\");\n if (op[0] === \"[\") {\n try {\n op = JSON.parse(op);\n } catch (e) {\n console.error(e);\n }\n }\n const column = s.getAttribute(\"name\");\n return column && {op, column};\n });\n }\n\n _get_view_row_pivots() {\n return this._get_view_dom_columns(\"#row_pivots perspective-row\", col => {\n return col.getAttribute(\"name\");\n });\n }\n\n _get_view_column_pivots() {\n return this._get_view_dom_columns(\"#column_pivots perspective-row\", col => {\n return col.getAttribute(\"name\");\n });\n }\n\n _get_view_filter_nodes() {\n return this._get_view_dom_columns(\"#filters perspective-row\");\n }\n\n _get_view_filters() {\n return this._get_view_dom_columns(\"#filters perspective-row\", col => {\n let {operator, operand} = JSON.parse(col.getAttribute(\"filter\"));\n return [col.getAttribute(\"name\"), operator, operand];\n });\n }\n\n _get_view_sorts() {\n return this._get_view_dom_columns(\"#sort perspective-row\", col => {\n let order = col.getAttribute(\"sort-order\") || \"asc\";\n return [col.getAttribute(\"name\"), order];\n });\n }\n\n _get_visible_column_count() {\n return this._get_view_dom_columns().length;\n }\n\n get_aggregate_attribute() {\n const aggs = JSON.parse(this.getAttribute(\"aggregates\")) || {};\n const found = new Set();\n const new_aggs = Object.keys(aggs).map(col => {\n found.add(col);\n return {column: col, op: aggs[col]};\n });\n if (this._aggregate_defaults) {\n for (const column of Object.keys(this._aggregate_defaults)) {\n if (!found.has(column)) {\n new_aggs.push({\n column,\n op: this._aggregate_defaults[column]\n });\n }\n }\n }\n return new_aggs;\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2018, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport debounce from \"lodash/debounce\";\nimport isEqual from \"lodash/isEqual\";\nimport {html, render} from \"lit-html\";\n\nimport perspective from \"@finos/perspective\";\nimport {get_type_config} from \"@finos/perspective/dist/esm/config\";\nimport {CancelTask} from \"./cancel_task.js\";\nimport {COMPUTATIONS} from \"../computed_column.js\";\n\nimport {StateElement} from \"./state_element.js\";\n\n/******************************************************************************\n *\n * Helpers\n *\n */\n\nfunction numberWithCommas(x) {\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\nlet TYPE_ORDER = {integer: 2, string: 0, float: 3, boolean: 4, datetime: 1, date: 1};\n\nconst column_sorter = schema => (a, b) => {\n const s1 = TYPE_ORDER[schema[a]];\n const s2 = TYPE_ORDER[schema[b]];\n let r = 0;\n if (s1 == s2) {\n r = a.toLowerCase() < b.toLowerCase() ? -1 : 1;\n } else {\n r = s1 < s2 ? -1 : 1;\n }\n return r;\n};\n\nfunction get_aggregate_defaults(schema, cols) {\n const aggregates = {};\n for (const col of cols) {\n aggregates[col] = get_type_config(schema[col]).aggregate;\n }\n return aggregates;\n}\n\nfunction get_aggregates_with_defaults(aggregate_attribute, schema, cols) {\n const found = new Set();\n const aggregates = [];\n for (const col of aggregate_attribute) {\n const type = schema[col.column];\n const type_config = get_type_config(type);\n found.add(col.column);\n if (type_config.type || type) {\n if (col.op === \"\" || perspective.TYPE_AGGREGATES[type_config.type || type].indexOf(col.op) === -1) {\n col.op = type_config.aggregate;\n }\n aggregates.push(col);\n } else {\n console.warn(`No column \"${col.column}\" found (specified in aggregates attribute).`);\n }\n }\n\n // Add columns detected from dataset.\n for (const col of cols) {\n if (!found.has(col)) {\n aggregates.push({\n column: col,\n op: get_type_config(schema[col]).aggregate\n });\n }\n }\n\n return aggregates;\n}\n\nconst _total_template = args => {\n if (args) {\n const x = numberWithCommas(args[0]);\n const y = numberWithCommas(args[1]);\n const total = Math.floor((args[0] / args[1]) * 100);\n return html`\n <span title=\"${x} / ${y}\" class=\"plugin_information--overflow-hint\">&nbsp;<span class=\"plugin_information--overflow-hint-percent\">${total}%</span>&nbsp;</span>\n `;\n }\n};\n\nconst _nowrap_template = text => {\n if (text !== \"\") {\n return html`\n <span style=\"white-space:nowrap\">${text}</span>\n `;\n }\n};\n\n/**\n * Render warning template tagged literal.\n * @param {*} strings\n * @param {...[n, m]} args tuples of rationals to be formatted.\n */\nconst _warning = (strings, ...args) => strings.flatMap((str, idx) => [_nowrap_template(str), _total_template(args[idx])]).filter(x => x);\n\n/******************************************************************************\n *\n * PerspectiveElement\n *\n */\n\nexport class PerspectiveElement extends StateElement {\n async _check_recreate_computed_columns() {\n const computed_columns = JSON.parse(this.getAttribute(\"computed-columns\"));\n if (computed_columns.length > 0) {\n for (const col of computed_columns) {\n await this._create_computed_column({\n detail: {\n column_name: col.name,\n input_columns: col.inputs.map(x => ({name: x})),\n computation: COMPUTATIONS[col.func]\n }\n });\n }\n this._debounce_update({ignore_size_check: false});\n return true;\n }\n return false;\n }\n\n async _load_table(table, computed = false) {\n this.shadowRoot.querySelector(\"#app\").classList.add(\"hide_message\");\n const resolve = this._set_updating();\n\n if (this._table && !computed) {\n this.removeAttribute(\"computed-columns\");\n }\n\n this._clear_state();\n this._table = table;\n\n if (this.hasAttribute(\"computed-columns\") && !computed) {\n if (await this._check_recreate_computed_columns()) {\n return;\n }\n }\n\n const [cols, schema, computed_schema] = await Promise.all([table.columns(), table.schema(true), table.computed_schema()]);\n\n this._clear_columns();\n\n this._initial_col_order = cols.slice();\n if (!this.hasAttribute(\"columns\")) {\n this.setAttribute(\"columns\", JSON.stringify(this._initial_col_order));\n }\n\n cols.sort(column_sorter(schema));\n\n // Update aggregates\n const aggregate_attribute = this.get_aggregate_attribute();\n\n Object.entries(computed_schema).forEach(([column, op]) => {\n const already_configured = aggregate_attribute.find(agg => agg.column === column);\n if (!already_configured) {\n aggregate_attribute.push({column, op});\n }\n });\n\n const all_cols = cols.concat(Object.keys(computed_schema));\n const aggregates = get_aggregates_with_defaults(aggregate_attribute, schema, all_cols);\n\n let shown = JSON.parse(this.getAttribute(\"columns\")); //.filter(x => all_cols.indexOf(x) > -1);\n if (shown.filter(x => all_cols.indexOf(x) > -1).length === 0) {\n shown = this._initial_col_order;\n }\n\n this._aggregate_defaults = get_aggregate_defaults(schema, all_cols);\n\n for (const name of all_cols) {\n const aggregate = aggregates.find(a => a.column === name).op;\n const row = this._new_row(name, schema[name], aggregate, null, null, computed_schema[name]);\n this._inactive_columns.appendChild(row);\n if (shown.includes(name)) {\n row.classList.add(\"active\");\n }\n }\n\n while (shown.length < this._plugin.initial?.names?.length) {\n shown.push(null);\n }\n\n for (const x of shown) {\n const active_row = this._new_row(x, schema[x]);\n this._active_columns.appendChild(active_row);\n }\n\n if (all_cols.length === shown.filter(x => all_cols.indexOf(x) > -1).length) {\n this._inactive_columns.parentElement.classList.add(\"collapse\");\n } else {\n this._inactive_columns.parentElement.classList.remove(\"collapse\");\n }\n\n this._show_column_container();\n\n if ((await this._table.compute()) === true) {\n this._show_side_panel_actions();\n }\n\n // Filters need type information to populate e.g. the operator dropdown,\n // so reset them.\n if (this.hasAttribute(\"filters\")) {\n this.filters = this.getAttribute(\"filters\");\n }\n try {\n await this._debounce_update({force_update: true});\n } catch (e) {\n console.warn(\"Initial view failed, resetting UI state\");\n await this.reset();\n throw e;\n }\n resolve();\n }\n\n async get_maxes() {\n let max_cols, max_rows;\n const [schema, num_columns] = await Promise.all([this._view.schema(), this._view.num_columns()]);\n const schema_columns = Object.keys(schema || {}).length || 1;\n\n if (typeof this._plugin.max_columns !== \"undefined\") {\n const column_group_diff = this._plugin.max_columns % schema_columns;\n const column_limit = this._plugin.max_columns + column_group_diff;\n max_cols = column_limit < num_columns ? column_limit : undefined;\n }\n\n if (typeof this._plugin.max_cells !== \"undefined\") {\n max_rows = Math.ceil(max_cols ? this._plugin.max_cells / max_cols : this._plugin.max_cells / (num_columns || 1));\n }\n\n return {max_cols, max_rows};\n }\n\n async _warn_render_size_exceeded(max_cols, max_rows) {\n if (this._show_warnings && (max_cols || max_rows)) {\n const num_columns = await this._view.num_columns();\n const num_rows = await this._view.num_rows();\n const count = num_columns * num_rows;\n const columns_are_truncated = max_cols && max_cols < num_columns;\n const rows_are_truncated = max_rows && max_rows < num_rows;\n if (columns_are_truncated && rows_are_truncated) {\n this._plugin_information.classList.remove(\"hidden\");\n const warning = _warning`Rendering ${[max_cols, num_columns]} of columns and ${[num_columns * max_rows, count]} of points.`;\n render(warning, this._plugin_information_message);\n return true;\n } else if (columns_are_truncated) {\n this._plugin_information.classList.remove(\"hidden\");\n const warning = _warning`Rendering ${[max_cols, num_columns]} of columns.`;\n render(warning, this._plugin_information_message);\n return true;\n } else if (rows_are_truncated) {\n this._plugin_information.classList.remove(\"hidden\");\n const warning = _warning`Rendering ${[num_columns * max_rows, count]} of points.`;\n render(warning, this._plugin_information_message);\n return true;\n } else {\n this._plugin_information.classList.add(\"hidden\");\n }\n }\n return false;\n }\n\n /**\n * Calculates the optimal timeout in milliseconds for render events,\n * calculated by 5 frame moving average of this component's render\n * framerate, or explicit override attribute `\"throttle\"`.\n *\n * @private\n * @returns\n * @memberof PerspectiveElement\n */\n _calculate_throttle_timeout() {\n let timeout;\n const throttle = this.getAttribute(\"throttle\");\n if (throttle === undefined || throttle === \"null\" || !this.hasAttribute(\"throttle\")) {\n if (!this.__render_times || this.__render_times.length < 5) {\n return 0;\n }\n timeout = this.__render_times.reduce((x, y) => x + y, 0) / this.__render_times.length;\n timeout = Math.min(5000, timeout);\n } else {\n timeout = parseInt(throttle);\n if (isNaN(timeout) || timeout < 0) {\n console.warn(`Bad throttle attribute value \"${throttle}\". Can be (non-negative integer) milliseconds.`);\n this.removeAttribute(\"throttle\");\n return 0;\n }\n }\n return Math.max(0, timeout);\n }\n\n _view_on_update(limit_points) {\n if (!this._debounced) {\n this._debounced = setTimeout(async () => {\n this._debounced = undefined;\n const timer = this._render_time();\n if (this._task && !this._task.initial) {\n this._task.cancel();\n }\n const task = (this._task = new CancelTask());\n const updater = this._plugin.update || this._plugin.create;\n try {\n if (limit_points) {\n const {max_cols, max_rows} = await this.get_maxes();\n if (!task.cancelled) {\n await this._warn_render_size_exceeded(max_cols, max_rows);\n await updater.call(this, this._datavis, this._view, task, max_cols, max_rows);\n }\n } else {\n await updater.call(this, this._datavis, this._view, task);\n }\n timer();\n task.cancel();\n } catch (err) {\n console.error(\"Error rendering plugin.\", err);\n } finally {\n this.dispatchEvent(new Event(\"perspective-view-update\"));\n }\n }, this._calculate_throttle_timeout());\n }\n }\n\n async _validate_filters() {\n const filters = [];\n for (const node of this._get_view_filter_nodes()) {\n const operandNode = node.shadowRoot.getElementById(\"filter_operand\");\n const exclamation = node.shadowRoot.getElementById(\"row_exclamation\");\n const {operator, operand} = JSON.parse(node.getAttribute(\"filter\"));\n const filter = [node.getAttribute(\"name\"), operator, operand];\n if (await this._table.is_valid_filter(filter)) {\n filters.push(filter);\n node.title = \"\";\n operandNode.style.borderColor = \"\";\n exclamation.hidden = true;\n } else {\n node.title = \"Invalid Filter\";\n operandNode.style.borderColor = \"red\";\n exclamation.hidden = false;\n }\n }\n\n return filters;\n }\n\n _is_config_changed(config) {\n const plugin_name = this.getAttribute(\"plugin\");\n if (isEqual(config, this._previous_config) && plugin_name === this._previous_plugin_name) {\n return false;\n } else {\n this._previous_config = config;\n this._previous_plugin_name = plugin_name;\n return true;\n }\n }\n\n async _new_view({force_update = false, ignore_size_check = false, limit_points = true} = {}) {\n if (!this._table) return;\n this._check_responsive_layout();\n const row_pivots = this._get_view_row_pivots();\n const column_pivots = this._get_view_column_pivots();\n const filters = await this._validate_filters();\n const view_aggregates = this._get_view_aggregates();\n if (view_aggregates.length === 0) return;\n const sort = this._get_view_sorts();\n\n let columns = view_aggregates.map(x => x.column);\n let aggregates = {};\n for (const a of view_aggregates) {\n aggregates[a.column] = a.op;\n }\n\n for (const s of sort) {\n const name = s[0];\n if (columns.indexOf(name) === -1 && !(column_pivots.indexOf(s) > -1 || row_pivots.indexOf(s) > -1)) {\n const all = this.get_aggregate_attribute();\n const {column, op} = all.reduce((obj, y) => (y.column === name ? y : obj));\n aggregates[column] = op;\n }\n }\n\n const config = {\n filter: filters,\n row_pivots: row_pivots,\n column_pivots: column_pivots,\n aggregates: aggregates,\n columns: columns,\n sort: sort\n };\n\n if (this._view) {\n this._view.remove_update(this._view_updater);\n this._view.delete();\n this._view = undefined;\n }\n\n try {\n this._view = this._table.view(config);\n this._view_updater = () => this._view_on_update(limit_points);\n this._view.on_update(this._view_updater);\n } catch (e) {\n this._view.delete();\n throw e;\n }\n\n const timer = this._render_time();\n this._render_count = (this._render_count || 0) + 1;\n if (this._task) {\n this._task.cancel();\n }\n\n const task = (this._task = new CancelTask(() => this._render_count--, true));\n\n try {\n const {max_cols, max_rows} = await this.get_maxes();\n if (!ignore_size_check) {\n await this._warn_render_size_exceeded(max_cols, max_rows);\n }\n if (limit_points) {\n await this._plugin.create.call(this, this._datavis, this._view, task, max_cols, max_rows, force_update);\n } else {\n await this._plugin.create.call(this, this._datavis, this._view, task, undefined, undefined, force_update);\n }\n } catch (err) {\n console.warn(err);\n } finally {\n if (!this.__render_times) {\n this.__render_times = [];\n this.dispatchEvent(new Event(\"perspective-view-update\"));\n }\n timer();\n task.cancel();\n if (this._render_count === 0) {\n this.removeAttribute(\"updating\");\n this.dispatchEvent(new Event(\"perspective-update-complete\"));\n }\n }\n }\n\n _check_loaded_table() {\n if (this._table) {\n const table = this._table;\n delete this._table;\n this._load_table(table);\n }\n }\n\n _render_time() {\n const t = performance.now();\n return () => {\n this.__render_times.unshift(performance.now() - t);\n this.__render_times = this.__render_times.slice(0, 5);\n };\n }\n\n _restyle_plugin() {\n if (this._plugin.styleElement) {\n const task = (this._task = new CancelTask());\n this._plugin.styleElement.call(this, this._datavis, this._view, task);\n }\n }\n\n _clear_state(clear_table = true) {\n if (this._task) {\n this._task.cancel();\n }\n const all = [];\n if (this._view) {\n const view = this._view;\n this._view = undefined;\n all.push(view.delete());\n view.remove_update(this._view_updater);\n view.remove_delete();\n }\n if (this._table && clear_table) {\n const table = this._table;\n this._table = undefined;\n if (table._owner_viewer && table._owner_viewer === this) {\n all.push(table.delete());\n }\n }\n return Promise.all(all);\n }\n\n _set_updating() {\n this.toggleAttribute(\"updating\", true);\n let resolve;\n this._updating_promise = new Promise(_resolve => {\n resolve = _resolve;\n });\n return resolve;\n }\n\n _register_debounce_instance() {\n const _update = debounce((resolve, ignore_size_check, force_update, limit_points) => {\n this._new_view({ignore_size_check, force_update, limit_points}).then(resolve);\n }, 0);\n\n this._debounce_update = async ({force_update = false, ignore_size_check = false, limit_points = true} = {}) => {\n if (this._table) {\n let resolve = this._set_updating();\n await new Promise(resolve => _update(resolve, ignore_size_check, force_update, limit_points));\n resolve();\n }\n };\n }\n\n _get_worker() {\n if (this._table) {\n return this._table._worker;\n }\n return perspective.shared_worker();\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2018, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {get_type_config} from \"@finos/perspective/dist/esm/config\";\nimport {dragend} from \"./dragdrop.js\";\nimport {renderers} from \"./renderers.js\";\n\nimport {PerspectiveElement} from \"./perspective_element.js\";\nimport {html, render} from \"lit-html\";\n\n/**\n * Render `<option>` blocks\n * @param {*} names name objects\n */\nconst options = vals => {\n const opts = [];\n for (name in vals) {\n opts.push(html`\n <option value=\"${name}\">${vals[name].name || name}</option>\n `);\n }\n return opts;\n};\n\nexport class DomElement extends PerspectiveElement {\n _clear_columns() {\n this._inactive_columns.innerHTML = \"\";\n this._active_columns.innerHTML = \"\";\n }\n\n set_aggregate_attribute(aggs) {\n let is_set = false;\n let aggregates = aggs.reduce((obj, agg) => {\n if (this._aggregate_defaults[agg.column] !== agg.op) {\n obj[agg.column] = agg.op;\n is_set = true;\n }\n return obj;\n }, {});\n if (is_set) {\n this.setAttribute(\"aggregates\", JSON.stringify(aggregates));\n } else {\n this.removeAttribute(\"aggregates\");\n }\n }\n\n _get_type(name) {\n let all = this._get_view_dom_columns(\"#inactive_columns perspective-row\");\n if (all.length > 0) {\n const type = all.find(x => x.getAttribute(\"name\") === name);\n if (type) {\n return type.getAttribute(\"type\");\n } else {\n return \"integer\";\n }\n } else {\n return \"\";\n }\n }\n\n _set_row_type(row) {\n const weights = this._get_view_dom_columns(\"#inactive_columns perspective-row\")\n .filter(x => x.getAttribute(\"type\") === \"integer\" || x.getAttribute(\"type\") === \"float\")\n .map(x => x.getAttribute(\"name\"));\n row.set_weights(weights);\n row.setAttribute(\"type\", this._get_type(row.getAttribute(\"name\")));\n }\n\n // Generates a new row in state + DOM\n _new_row(name, type, aggregate, filter, sort, computed) {\n let row = document.createElement(\"perspective-row\");\n type = type || this._get_type(name);\n\n if (!aggregate) {\n let aggregates = this.get_aggregate_attribute();\n if (aggregates) {\n aggregate = aggregates.find(x => x.column === name);\n if (aggregate) {\n aggregate = aggregate.op;\n } else {\n aggregate = get_type_config(type).aggregate;\n }\n } else {\n aggregate = get_type_config(type).aggregate;\n }\n }\n\n if (filter) {\n row.setAttribute(\"filter\", filter);\n\n if (type === \"string\") {\n const view = this._table.view({row_pivots: [name], aggregates: {}});\n view.to_json().then(json => {\n row.choices(this._autocomplete_choices(json));\n });\n view.delete();\n }\n }\n\n if (sort) {\n row.setAttribute(\"sort-order\", sort);\n } else {\n if (this._get_view_column_pivots().indexOf(name) > -1) {\n row.setAttribute(\"sort-order\", \"col asc\");\n } else {\n row.setAttribute(\"sort-order\", \"asc\");\n }\n }\n\n const weights = this._get_view_dom_columns(\"#inactive_columns perspective-row\")\n .filter(x => x.getAttribute(\"type\") === \"integer\" || x.getAttribute(\"type\") === \"float\")\n .map(x => x.getAttribute(\"name\"));\n row.set_weights(weights);\n\n if (name === null) {\n row.classList.add(\"null-column\");\n } else {\n row.setAttribute(\"type\", type);\n row.setAttribute(\"name\", name);\n }\n\n row.setAttribute(\"aggregate\", Array.isArray(aggregate) ? JSON.stringify(aggregate) : aggregate);\n\n row.addEventListener(\"visibility-clicked\", this._column_visibility_clicked.bind(this));\n row.addEventListener(\"aggregate-selected\", this._column_aggregate_clicked.bind(this));\n row.addEventListener(\"filter-selected\", this._column_filter_clicked.bind(this));\n row.addEventListener(\"close-clicked\", event => dragend.call(this, event.detail));\n row.addEventListener(\"sort-order\", this._sort_order_clicked.bind(this));\n\n row.addEventListener(\"row-drag\", () => {\n this.classList.add(\"dragging\");\n this._active_columns.style.overflow = \"hidden\";\n this._original_index = Array.prototype.slice.call(this._active_columns.children).findIndex(x => x.getAttribute(\"name\") === name);\n if (this._original_index !== -1) {\n this._drop_target_hover = this._active_columns.children[this._original_index];\n setTimeout(() => row.setAttribute(\"drop-target\", true));\n } else {\n this._drop_target_hover = this._new_row(name, type, aggregate);\n }\n });\n row.addEventListener(\"row-dragend\", () => {\n this._active_columns.style.overflow = \"auto\";\n this.classList.remove(\"dragging\");\n });\n\n if (computed) {\n row.setAttribute(\"computed_column\", JSON.stringify(computed));\n row.classList.add(\"computed\");\n }\n\n return row;\n }\n\n _update_column_view(columns, reset = false) {\n if (!columns) {\n columns = this._get_view_active_column_names();\n }\n if (this._plugin.initial && this._plugin.initial.names) {\n while (columns.length < this._plugin.initial.names.length) {\n columns.push(null);\n }\n }\n this.setAttribute(\"columns\", JSON.stringify(columns));\n const pop_cols = columns.filter(x => typeof x !== \"undefined\" && x !== null);\n const lis = this._get_view_dom_columns(\"#inactive_columns perspective-row\");\n if (pop_cols.length === lis.length) {\n this._inactive_columns.parentElement.classList.add(\"collapse\");\n } else {\n this._inactive_columns.parentElement.classList.remove(\"collapse\");\n }\n lis.forEach(x => {\n const index = pop_cols.indexOf(x.getAttribute(\"name\"));\n if (index === -1) {\n x.classList.remove(\"active\");\n } else {\n x.classList.add(\"active\");\n }\n });\n if (reset) {\n this._update_column_list(columns, this._active_columns, name => {\n if (name === null) {\n return this._new_row(null);\n } else {\n const ref = lis.find(x => x.getAttribute(\"name\") === name);\n if (ref) {\n return this._new_row(ref.getAttribute(\"name\"), ref.getAttribute(\"type\"));\n }\n }\n });\n }\n }\n\n _update_column_list(columns, container, callback, accessor) {\n accessor = accessor || ((x, y) => y.getAttribute(\"name\") === x);\n const active_columns = Array.prototype.slice.call(container.children);\n for (let i = 0, j = 0; i < active_columns.length || j < columns.length; i++, j++) {\n const name = columns[j];\n const col = active_columns[i];\n const next_col = active_columns[i + 1];\n if (!col) {\n const node = callback(name);\n if (node) {\n container.appendChild(node);\n }\n } else if (typeof name === \"undefined\") {\n container.removeChild(col);\n } else if (accessor(name, col)) {\n this._set_row_type(col);\n } else {\n if (col.classList.contains(\"null-column\")) {\n const node = callback(name);\n if (node) {\n container.replaceChild(node, col);\n }\n } else if (next_col && accessor(name, next_col)) {\n container.removeChild(col);\n i++;\n // j--;\n } else {\n const node = callback(name);\n if (node) {\n container.insertBefore(node, col);\n i--;\n }\n }\n }\n }\n }\n\n _set_row_styles() {\n let style = \"\";\n if (this._plugin.initial && this._plugin.initial.names) {\n for (const nidx in this._plugin.initial.names) {\n const name = this._plugin.initial.names[nidx];\n style += `#active_columns perspective-row:nth-child(${parseInt(nidx) + 1}){margin-top:23px;}`;\n style += `#active_columns perspective-row:nth-child(${parseInt(nidx) + 1}):before{content:\"${name}\";}`;\n }\n }\n this.shadowRoot.querySelector(\"#psp_styles\").innerHTML = style;\n }\n\n _show_column_container() {\n this.shadowRoot.querySelector(\"#columns_container\").style.visibility = \"visible\";\n }\n\n _show_side_panel_actions() {\n this.shadowRoot.querySelector(\"#side_panel__actions\").style.visibility = \"visible\";\n }\n\n _remove_null_columns(since_index = 0) {\n const elems = this._get_view_active_columns();\n while (++since_index < elems.length) {\n const elem = elems[since_index];\n if (elem.classList.contains(\"null-column\")) {\n this.shadowRoot.querySelector(\"#active_columns\").removeChild(elem);\n }\n }\n }\n\n _set_column_defaults() {\n const cols = this._get_view_all_columns();\n const active_cols = this._get_view_active_valid_columns();\n const valid_active_cols = this._get_view_active_valid_column_names();\n if (cols.length > 0) {\n if (this._plugin.initial) {\n let pref = [];\n let count = this._plugin.initial.count || 2;\n this._fill_numeric(active_cols, pref);\n this._fill_numeric(cols, pref);\n this._fill_numeric(cols, pref, true);\n pref = pref.slice(0, count);\n const labels = this._plugin.initial.names;\n while (labels && pref.length < labels.length) {\n pref.push(null);\n }\n this.setAttribute(\"columns\", JSON.stringify(pref));\n } else if (this._plugin.selectMode === \"select\") {\n this.setAttribute(\"columns\", JSON.stringify([cols[0].getAttribute(\"name\")]));\n } else {\n this.setAttribute(\"columns\", JSON.stringify(valid_active_cols));\n this._remove_null_columns();\n }\n }\n }\n\n _fill_numeric(cols, pref, bypass = false) {\n for (let col of cols) {\n let type = col.getAttribute(\"type\");\n let name = col.getAttribute(\"name\");\n if (bypass || ([\"float\", \"integer\"].indexOf(type) > -1 && pref.indexOf(name) === -1)) {\n pref.push(name);\n }\n }\n }\n\n async _check_responsive_layout() {\n if (this.shadowRoot) {\n const app = this.shadowRoot.querySelector(\"#app\");\n if (this.clientHeight < 500 && this.clientWidth > 600 && this._get_view_columns({active: false}).length > this._get_view_columns().length) {\n if (!app.classList.contains(\"columns_horizontal\")) {\n const old = this._persisted_side_panel_width;\n this._persisted_side_panel_width = this._side_panel.style.width;\n this._side_panel.style.width = old || \"\";\n app.classList.add(\"columns_horizontal\");\n return false;\n }\n return false;\n } else if (app.classList.contains(\"columns_horizontal\")) {\n const panel = this.shadowRoot.querySelector(\"#pivot_chart_container\");\n panel.clientWidth + this._side_panel.clientWidth;\n const width = this._persisted_side_panel_width || panel.clientWidth + this._side_panel.clientWidth / 2;\n const height = panel.clientHeight + 50;\n await this._pre_resize(width, height, () => {\n const old = this._persisted_side_panel_width;\n this._persisted_side_panel_width = this._side_panel.style.width;\n this._side_panel.style.width = old || \"\";\n app.classList.remove(\"columns_horizontal\");\n });\n return true;\n }\n }\n return false;\n }\n\n // setup functions\n _register_ids() {\n this._aggregate_selector = this.shadowRoot.querySelector(\"#aggregate_selector\");\n this._vis_selector = this.shadowRoot.querySelector(\"#vis_selector\");\n this._filters = this.shadowRoot.querySelector(\"#filters\");\n this._row_pivots = this.shadowRoot.querySelector(\"#row_pivots\");\n this._column_pivots = this.shadowRoot.querySelector(\"#column_pivots\");\n this._datavis = this.shadowRoot.querySelector(\"#pivot_chart\");\n this._active_columns = this.shadowRoot.querySelector(\"#active_columns\");\n this._inactive_columns = this.shadowRoot.querySelector(\"#inactive_columns\");\n this._side_panel_actions = this.shadowRoot.querySelector(\"#side_panel__actions\");\n this._add_computed_column = this.shadowRoot.querySelector(\"#add-computed-column\");\n this._computed_column = this.shadowRoot.querySelector(\"perspective-computed-column\");\n this._computed_column_inputs = this._computed_column.querySelector(\"#psp-cc-computation-inputs\");\n this._inner_drop_target = this.shadowRoot.querySelector(\"#drop_target_inner\");\n this._drop_target = this.shadowRoot.querySelector(\"#drop_target\");\n this._config_button = this.shadowRoot.querySelector(\"#config_button\");\n this._reset_button = this.shadowRoot.querySelector(\"#reset_button\");\n this._download_button = this.shadowRoot.querySelector(\"#download_button\");\n this._copy_button = this.shadowRoot.querySelector(\"#copy_button\");\n this._side_panel = this.shadowRoot.querySelector(\"#side_panel\");\n this._top_panel = this.shadowRoot.querySelector(\"#top_panel\");\n this._sort = this.shadowRoot.querySelector(\"#sort\");\n this._transpose_button = this.shadowRoot.querySelector(\"#transpose_button\");\n this._plugin_information = this.shadowRoot.querySelector(\".plugin_information\");\n this._plugin_information_action = this.shadowRoot.querySelector(\".plugin_information__action\");\n this._plugin_information_action_close = this.shadowRoot.querySelector(\".plugin_information__action--close\");\n this._plugin_information_message = this.shadowRoot.querySelector(\"#plugin_information_count\");\n this._resize_bar = this.shadowRoot.querySelector(\"#resize_bar\");\n }\n\n // sets state, manipulates DOM\n _register_view_options() {\n let current_renderers = renderers.getInstance();\n render(options(current_renderers), this._vis_selector);\n }\n\n // sets state\n _register_data_attribute() {\n // TODO this feature needs to become a real attribute.\n if (this.getAttribute(\"data\")) {\n let data = this.getAttribute(\"data\");\n try {\n data = JSON.parse(data);\n } catch (e) {}\n this.load(data);\n }\n }\n\n _autocomplete_choices(json) {\n return json\n .slice(1, json.length)\n .map(x => x.__ROW_PATH__)\n .filter(x => (Array.isArray(x) ? x.filter(v => !!v).length > 0 : !!x));\n }\n}\n","/******************************************************************************\n *\n * Copyright (c) 2018, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {dragend, column_dragend, column_dragleave, column_dragover, column_drop, drop, dragenter, dragover, dragleave} from \"./dragdrop.js\";\n\nimport {DomElement} from \"./dom_element.js\";\n\nexport class ActionElement extends DomElement {\n _show_context_menu(event) {\n this.shadowRoot.querySelector(\"#app\").classList.toggle(\"show_menu\");\n event.stopPropagation();\n event.preventDefault();\n return false;\n }\n\n _hide_context_menu() {\n this.shadowRoot.querySelector(\"#app\").classList.remove(\"show_menu\");\n }\n\n async _toggle_config(event) {\n if (!event || event.button !== 2) {\n this._show_config = !this._show_config;\n this._hide_context_menu();\n const panel = this.shadowRoot.querySelector(\"#pivot_chart_container\");\n if (!this._show_config) {\n await this._pre_resize(\n panel.clientWidth + this._side_panel.clientWidth,\n panel.clientHeight + this._top_panel.clientHeight,\n () => {\n this._side_panel.style.display = \"none\";\n this._top_panel.style.display = \"none\";\n this.removeAttribute(\"settings\");\n },\n () => this.dispatchEvent(new CustomEvent(\"perspective-toggle-settings\", {detail: this._show_config}))\n );\n } else {\n await this._post_resize(\n () => {\n this.toggleAttribute(\"settings\", true);\n },\n () => {\n this._side_panel.style.display = \"flex\";\n this._top_panel.style.display = \"flex\";\n this.dispatchEvent(new CustomEvent(\"perspective-toggle-settings\", {detail: this._show_config}));\n }\n );\n }\n }\n }\n\n /**\n * Given a targe `width` and `height`, pre-size the plugin before modifying\n * the HTML to reduce visual tearing.\n *\n * @private\n * @param {*} width\n * @param {*} height\n * @param {*} post Function to run once action is complete\n * @param {*} [pre=undefined] Function to run once visual effects have been\n * applied. This may be before `post`, as pre-sizing will be delayed when\n * the target size is a sub-window of the current view.\n * @memberof ActionElement\n */\n async _pre_resize(width, height, post, pre = undefined) {\n this._datavis.style.width = `${width}px`;\n this._datavis.style.height = `${height}px`;\n try {\n if (!document.hidden && this.offsetParent) {\n await this._plugin.resize.call(this);\n }\n } finally {\n pre?.();\n this._datavis.style.width = \"100%\";\n this._datavis.style.height = \"100%\";\n post();\n }\n }\n\n async _post_resize(post, pre) {\n pre?.();\n try {\n if (!document.hidden && this.offsetParent) {\n await this._plugin.resize.call(this);\n }\n } finally {\n post();\n }\n }\n\n // UI action\n _open_computed_column(event) {\n //const data = event.detail;\n event.stopImmediatePropagation();\n /*if (event.type === 'perspective-computed-column-edit') {\n this._computed_column._edit_computed_column(data);\n }*/\n this._computed_column.style.display = \"flex\";\n this._side_panel_actions.style.display = \"none\";\n }\n\n // edits state\n _set_computed_column_input(event) {\n event.detail.target.appendChild(this._new_row(event.detail.column.name, event.detail.column.type));\n this._update_column_view();\n }\n\n // edits state\n _validate_computed_column(event) {\n const new_column = event.detail;\n let computed_columns = JSON.parse(this.getAttribute(\"computed-columns\"));\n if (computed_columns === null) {\n computed_columns = [];\n }\n // names cannot be duplicates\n for (let col of computed_columns) {\n if (new_column.name === col.name) {\n return;\n }\n }\n computed_columns.push(new_column);\n this.setAttribute(\"computed-columns\", JSON.stringify(computed_columns));\n }\n\n // edits state, calls reload\n async _create_computed_column(event) {\n const data = event.detail;\n let computed_column_name = data.column_name;\n\n const cols = await this._table.columns();\n // edit overwrites last column, otherwise avoid name collision\n if (cols.includes(computed_column_name)) {\n computed_column_name += ` ${Math.round(Math.random() * 100)}`;\n }\n\n const params = [\n {\n computation: data.computation,\n column: computed_column_name,\n computed_function_name: data.computation.name,\n func: data.computation.func,\n inputs: data.input_columns.map(col => col.name),\n input_type: data.computation.input_type,\n type: data.computation.return_type\n }\n ];\n\n const table = this._table.add_computed(params);\n await this._load_table(table, true);\n this._update_column_view();\n }\n\n _column_visibility_clicked(ev) {\n const parent = ev.currentTarget;\n const is_active = parent.parentElement.getAttribute(\"id\") === \"active_columns\";\n if (is_active) {\n const min_columns = this._plugin.initial?.count || 1;\n if (this._get_view_active_valid_column_count() === min_columns) {\n return;\n }\n if (ev.detail.shiftKey) {\n for (let child of Array.prototype.slice.call(this._active_columns.children)) {\n if (child !== parent) {\n this._active_columns.removeChild(child);\n }\n }\n } else {\n const index = Array.prototype.slice.call(this._active_columns.children).indexOf(parent);\n if (index < this._plugin.initial?.count) {\n return;\n } else if (index < this._plugin.initial?.names?.length - 1) {\n this._active_columns.insertBefore(this._new_row(null), parent);\n }\n this._active_columns.removeChild(parent);\n }\n } else {\n // check if we're manipulating computed column input\n if (ev.path[1]?.classList.contains(\"psp-cc-computation__input-column\")) {\n // this._computed_column._register_inputs();\n this._computed_column.deselect_column(ev.currentTarget.getAttribute(\"name\"));\n this._update_column_view();\n return;\n }\n if ((ev.detail.shiftKey && this._plugin.selectMode === \"toggle\") || (!ev.detail.shiftKey && this._plugin.selectMode === \"select\")) {\n for (let child of Array.prototype.slice.call(this._active_columns.children)) {\n this._active_columns.removeChild(child);\n }\n }\n let row = this._new_row(parent.getAttribute(\"name\"), parent.getAttribute(\"type\"));\n const cols = this._get_view_active_columns();\n let i = cols.length - 1;\n if (!cols[i] || !cols[i]?.classList.contains(\"null-column\")) {\n this._active_columns.appendChild(row);\n } else\n while (i-- > 0) {\n if (!cols[i].classList.contains(\"null-column\")) {\n this._active_columns.replaceChild(row, cols[i + 1]);\n break;\n }\n }\n }\n this._check_responsive_layout();\n this._update_column_view();\n }\n\n _column_aggregate_clicked() {\n let aggregates = this.get_aggregate_attribute();\n let new_aggregates = this._get_view_aggregates();\n for (let aggregate of aggregates) {\n let updated_agg = new_aggregates.find(x => x.column === aggregate.column);\n if (updated_agg) {\n aggregate.op = updated_agg.op;\n }\n }\n this.set_aggregate_attribute(aggregates);\n this._update_column_view();\n this._debounce_update();\n }\n\n _column_filter_clicked() {\n let new_filters = this._get_view_filters();\n this._updating_filter = true;\n this.setAttribute(\"filters\", JSON.stringify(new_filters));\n this._updating_filter = false;\n this._debounce_update();\n }\n\n _increment_sort(sort, column_sorting, abs_sorting) {\n let sort_orders = [\"asc\", \"desc\"];\n if (column_sorting) {\n sort_orders.push(\"col asc\", \"col desc\");\n }\n if (abs_sorting) {\n sort_orders = sort_orders.map(x => `${x} abs`);\n }\n sort_orders.push(\"none\");\n return sort_orders[(sort_orders.indexOf(sort) + 1) % sort_orders.length];\n }\n\n _sort_order_clicked(event) {\n const row = event.target;\n const abs_sorting = event.detail.shiftKey && row.getAttribute(\"type\") !== \"string\";\n const new_sort_order = this._increment_sort(row.getAttribute(\"sort-order\"), this._get_view_column_pivots().length > 0, abs_sorting);\n row.setAttribute(\"sort-order\", new_sort_order);\n\n const sort = this._get_view_sorts();\n this.setAttribute(\"sort\", JSON.stringify(sort));\n }\n\n // edits state\n _transpose() {\n const has_row = this.hasAttribute(\"row-pivots\");\n const has_col = this.hasAttribute(\"column-pivots\");\n if (has_row && has_col) {\n let row_pivots = this.getAttribute(\"row-pivots\");\n this.setAttribute(\"row-pivots\", this.getAttribute(\"column-pivots\"));\n this.setAttribute(\"column-pivots\", row_pivots);\n } else if (has_row) {\n let row_pivots = this.getAttribute(\"row-pivots\");\n this.removeAttribute(\"row-pivots\");\n this.setAttribute(\"column-pivots\", row_pivots);\n } else if (has_col) {\n let column_pivots = this.getAttribute(\"column-pivots\");\n this.removeAttribute(\"column-pivots\");\n this.setAttribute(\"row-pivots\", column_pivots);\n } else {\n this.removeAttribute(\"column-pivots\");\n this.removeAttribute(\"row-pivots\");\n }\n }\n\n _reset_sidepanel() {\n this._side_panel.style.width = \"\";\n }\n\n _resize_sidepanel(event) {\n const initial = document.body.style.cursor;\n document.body.style.cursor = \"col-resize\";\n const start = event.clientX;\n const width = this._side_panel.offsetWidth;\n const resize = event => {\n const new_width = Math.max(0, Math.min(width + (event.clientX - start), this.offsetWidth - 10));\n this._side_panel.style.width = `${new_width}px`;\n if (this._plugin) {\n this.notifyResize();\n }\n };\n const stop = () => {\n document.body.style.cursor = initial;\n document.removeEventListener(\"mousemove\", resize);\n document.removeEventListener(\"mouseup\", stop);\n };\n document.addEventListener(\"mousemove\", resize);\n document.addEventListener(\"mouseup\", stop);\n }\n\n _vis_selector_changed() {\n this._plugin_information.classList.add(\"hidden\");\n this.setAttribute(\"plugin\", this._vis_selector.value);\n this._active_columns.classList.remove(\"one_lock\", \"two_lock\");\n const classname = [\"one_lock\", \"two_lock\"][this._plugin.initial?.count - 1];\n if (classname) {\n this._active_columns.classList.add(classname);\n }\n this._debounce_update();\n }\n\n // most of these are drag and drop handlers - how to clean up?\n _register_callbacks() {\n this._sort.addEventListener(\"drop\", drop.bind(this));\n this._sort.addEventListener(\"dragend\", dragend.bind(this));\n this._sort.addEventListener(\"dragenter\", dragenter.bind(this));\n this._sort.addEventListener(\"dragover\", dragover.bind(this));\n this._sort.addEventListener(\"dragleave\", dragleave.bind(this));\n this._row_pivots.addEventListener(\"drop\", drop.bind(this));\n this._row_pivots.addEventListener(\"dragend\", dragend.bind(this));\n this._row_pivots.addEventListener(\"dragenter\", dragenter.bind(this));\n this._row_pivots.addEventListener(\"dragover\", dragover.bind(this));\n this._row_pivots.addEventListener(\"dragleave\", dragleave.bind(this));\n this._column_pivots.addEventListener(\"drop\", drop.bind(this));\n this._column_pivots.addEventListener(\"dragend\", dragend.bind(this));\n this._column_pivots.addEventListener(\"dragenter\", dragenter.bind(this));\n this._column_pivots.addEventListener(\"dragover\", dragover.bind(this));\n this._column_pivots.addEventListener(\"dragleave\", dragleave.bind(this));\n this._filters.addEventListener(\"drop\", drop.bind(this));\n this._filters.addEventListener(\"dragend\", dragend.bind(this));\n this._filters.addEventListener(\"dragenter\", dragenter.bind(this));\n this._filters.addEventListener(\"dragover\", dragover.bind(this));\n this._filters.addEventListener(\"dragleave\", dragleave.bind(this));\n this._active_columns.addEventListener(\"drop\", column_drop.bind(this));\n this._active_columns.addEventListener(\"dragenter\", dragenter.bind(this));\n this._active_columns.addEventListener(\"dragend\", column_dragend.bind(this));\n this._active_columns.addEventListener(\"dragover\", column_dragover.bind(this));\n this._active_columns.addEventListener(\"dragleave\", column_dragleave.bind(this));\n this._add_computed_column.addEventListener(\"click\", this._open_computed_column.bind(this));\n this._computed_column.addEventListener(\"perspective-computed-column-save\", this._validate_computed_column.bind(this));\n this._computed_column.addEventListener(\"perspective-computed-column-update\", this._set_computed_column_input.bind(this));\n // this._side_panel.addEventListener('\n // perspective-computed-column-edit',\n // this._open_computed_column.bind(this)\n // );\n this._config_button.addEventListener(\"mousedown\", this._toggle_config.bind(this));\n this._config_button.addEventListener(\"contextmenu\", this._show_context_menu.bind(this));\n this._reset_button.addEventListener(\"click\", this.reset.bind(this));\n this._copy_button.addEventListener(\"click\", event => this.copy(event.shiftKey));\n this._download_button.addEventListener(\"click\", event => this.download(event.shiftKey));\n this._transpose_button.addEventListener(\"click\", this._transpose.bind(this));\n this._drop_target.addEventListener(\"dragover\", dragover.bind(this));\n this._resize_bar.addEventListener(\"mousedown\", this._resize_sidepanel.bind(this));\n this._resize_bar.addEventListener(\"dblclick\", this._reset_sidepanel.bind(this));\n\n this._vis_selector.addEventListener(\"change\", this._vis_selector_changed.bind(this));\n\n this._plugin_information_action.addEventListener(\"click\", () => {\n this._debounce_update({ignore_size_check: true, limit_points: false});\n this._plugin_information.classList.add(\"hidden\");\n });\n\n this._plugin_information_action_close.addEventListener(\"click\", () => {\n this._plugin_information.classList.add(\"hidden\");\n });\n }\n}\n","/******************************************************************************\r\n *\r\n * Copyright (c) 2017, the Perspective Authors.\r\n *\r\n * This file is part of the Perspective library, distributed under the terms of\r\n * the Apache License 2.0. The full license can be found in the LICENSE file.\r\n *\r\n */\r\n\r\nimport \"@webcomponents/webcomponentsjs\";\r\nimport \"./polyfill.js\";\r\n\r\nimport {bindTemplate, json_attribute, array_attribute, copy_to_clipboard, throttlePromise} from \"./utils.js\";\r\nimport {renderers, register_debug_plugin} from \"./viewer/renderers.js\";\r\nimport {COMPUTATIONS} from \"./computed_column.js\";\r\nimport \"./row.js\";\r\n\r\nimport template from \"../html/viewer.html\";\r\n\r\nimport view_style from \"../less/viewer.less\";\r\nimport default_style from \"../less/default.less\";\r\n\r\nimport {ActionElement} from \"./viewer/action_element.js\";\r\n\r\n/**\r\n * Module for the `<perspective-viewer>` custom element.\r\n *\r\n * This module has no exports, but importing it has a side\r\n * effect: the {@link module:perspective_viewer~PerspectiveViewer} class is\r\n * registered as a custom element, after which it can be used as a standard DOM\r\n * element.\r\n *\r\n * The documentation in this module defines the instance structure of a\r\n * `<perspective-viewer>` DOM object instantiated typically, through HTML or any\r\n * relevent DOM method e.g. `document.createElement(\"perspective-viewer\")` or\r\n * `document.getElementsByTagName(\"perspective-viewer\")`.\r\n *\r\n * @module perspective-viewer\r\n */\r\n\r\nconst PERSISTENT_ATTRIBUTES = [\"selectable\", \"editable\", \"plugin\", \"row-pivots\", \"column-pivots\", \"aggregates\", \"filters\", \"sort\", \"computed-columns\", \"columns\"];\r\n\r\n/**\r\n * The HTMLElement class for `<perspective-viewer>` custom element.\r\n *\r\n * This class is not exported, so this constructor cannot be invoked in the\r\n * typical manner; instead, instances of the class are created through the\r\n * Custom Elements DOM API.\r\n *\r\n * Properties of an instance of this class, such as\r\n * {@link module:perspective_viewer~PerspectiveViewer#columns}, are reflected on\r\n * the DOM element as Attributes, and should be accessed as such - e.g.\r\n * `instance.setAttribute(\"columns\", JSON.stringify([\"a\", \"b\"]))`.\r\n *\r\n * @class PerspectiveViewer\r\n * @extends {HTMLElement}\r\n * @example\r\n * // Create a new `<perspective-viewer>`\r\n * const elem = document.createElement(\"perspective-viewer\");\r\n * elem.setAttribute(\"columns\", JSON.stringify([\"a\", \"b\"]));\r\n * document.body.appendChild(elem);\r\n *\r\n */\r\n@bindTemplate(template, view_style, default_style) // eslint-disable-next-line no-unused-vars\r\nclass PerspectiveViewer extends ActionElement {\r\n constructor() {\r\n super();\r\n this._register_debounce_instance();\r\n this._show_config = true;\r\n this._show_warnings = true;\r\n this.__render_times = [];\r\n this._resize_handler = this.notifyResize.bind(this);\r\n window.addEventListener(\"resize\", this._resize_handler);\r\n }\r\n\r\n connectedCallback() {\r\n if (Object.keys(renderers.getInstance()).length === 0) {\r\n register_debug_plugin();\r\n }\r\n\r\n this.toggleAttribute(\"settings\", true);\r\n\r\n this._register_ids();\r\n this._register_callbacks();\r\n this._register_view_options();\r\n this._register_data_attribute();\r\n this.toggleConfig();\r\n this._check_loaded_table();\r\n }\r\n\r\n /**\r\n * Sets this `perspective.table.view`'s `sort` property, an array of column\r\n * names.\r\n *\r\n * @kind member\r\n * @type {array<string>} Array of arrays tuples of column name and\r\n * direction, where the possible values are \"asc\", \"desc\", \"asc abs\", \"desc\r\n * abs\" and \"none\".\r\n * @fires PerspectiveViewer#perspective-config-update\r\n * @example <caption>via Javascript DOM</caption>\r\n * let elem = document.getElementById('my_viewer');\r\n * elem.setAttribute('sort', JSON.stringify([[\"x\",\"desc\"]));\r\n * @example <caption>via HTML</caption>\r\n * <perspective-viewer sort='[[\"x\",\"desc\"]]'></perspective-viewer>\r\n */\r\n @array_attribute\r\n sort(sort) {\r\n if (sort === null || sort === undefined || sort.length === 0) {\r\n if (this.hasAttribute(\"sort\")) {\r\n this.removeAttribute(\"sort\");\r\n }\r\n sort = [];\r\n }\r\n var inner = this._sort.querySelector(\"ul\");\r\n this._update_column_list(\r\n sort,\r\n inner,\r\n s => {\r\n let dir = \"asc\";\r\n if (Array.isArray(s)) {\r\n dir = s[1];\r\n s = s[0];\r\n }\r\n return this._new_row(s, false, false, false, dir);\r\n },\r\n (sort, node) => {\r\n if (Array.isArray(sort)) {\r\n return node.getAttribute(\"name\") === sort[0] && node.getAttribute(\"sort-order\") === sort[1];\r\n }\r\n return node.getAttribute(\"name\") === sort;\r\n }\r\n );\r\n this.dispatchEvent(new Event(\"perspective-config-update\"));\r\n this._debounce_update();\r\n }\r\n\r\n /**\r\n * The set of visible columns.\r\n *\r\n * @kind member\r\n * @param {array} columns An array of strings, the names of visible columns.\r\n * @fires PerspectiveViewer#perspective-config-update\r\n * @example <caption>via Javascript DOM</caption>\r\n * let elem = document.getElementById('my_viewer');\r\n * elem.setAttribute('columns', JSON.stringify([\"x\", \"y'\"]));\r\n * @example <caption>via HTML</caption>\r\n * <perspective-viewer columns='[\"x\", \"y\"]'></perspective-viewer>\r\n */\r\n @array_attribute\r\n columns(show) {\r\n if (show === null || show === undefined || show.length === 0) {\r\n if (this.hasAttribute(\"columns\")) {\r\n if (this._initial_col_order) {\r\n this.setAttribute(\"columns\", JSON.stringify(this._initial_col_order));\r\n } else {\r\n this.removeAttribute(\"columns\");\r\n }\r\n }\r\n show = (this._initial_col_order || []).slice();\r\n }\r\n this._update_column_view(show, true);\r\n this.dispatchEvent(new Event(\"perspective-config-update\"));\r\n this._debounce_update();\r\n }\r\n\r\n /* eslint-disable max-len */\r\n\r\n /**\r\n * The set of visible columns.\r\n *\r\n * @kind member\r\n * @param {array} computed-columns An array of computed column objects\r\n * @fires PerspectiveViewer#perspective-config-update\r\n * @example <caption>via Javascript DOM</caption>\r\n * let elem = document.getElementById('my_viewer');\r\n * elem.setAttribute('computed-columns', JSON.stringify([{name: \"x+y\", func: \"add\", inputs: [\"x\", \"y\"]}]));\r\n * @example <caption>via HTML</caption>\r\n * <perspective-viewer computed-columns=\"[{name:'x+y',func:'add',inputs:['x','y']}]\"\"></perspective-viewer>\r\n */\r\n @array_attribute\r\n \"computed-columns\"(computed_columns) {\r\n if (computed_columns === null || computed_columns === undefined || computed_columns.length === 0) {\r\n if (this.hasAttribute(\"computed-columns\")) {\r\n this.removeAttribute(\"computed-columns\");\r\n }\r\n computed_columns = [];\r\n }\r\n const resolve = this._set_updating();\r\n\r\n (async () => {\r\n if (this._table) {\r\n const computed_schema = await this._table.computed_schema();\r\n this._computed_column._close_computed_column();\r\n for (let col of computed_columns) {\r\n if (!computed_schema[col.name]) {\r\n await this._create_computed_column({\r\n detail: {\r\n column_name: col.name,\r\n input_columns: col.inputs.map(x => ({name: x})),\r\n computation: COMPUTATIONS[col.func]\r\n }\r\n });\r\n }\r\n }\r\n\r\n await this._debounce_update();\r\n resolve();\r\n } else {\r\n this._computed_column._close_computed_column();\r\n }\r\n this.dispatchEvent(new Event(\"perspective-config-update\"));\r\n this.dispatchEvent(new Event(\"perspective-computed-column-update\"));\r\n })();\r\n }\r\n\r\n /* eslint-enable max-len */\r\n\r\n /**\r\n * The set of column aggregate configurations.\r\n *\r\n * @kind member\r\n * @param {object} aggregates A dictionary whose keys are column names, and\r\n * values are valid aggregations. The `aggregates` attribute works as an\r\n * override; in lieu of a key for a column supplied by the developers, a\r\n * default will be selected and reflected to the attribute based on the\r\n * column's type. See {@link perspective/src/js/defaults.js}\r\n * @fires PerspectiveViewer#perspective-config-update\r\n * @example <caption>via Javascript DOM</caption>\r\n * let elem = document.getElementById('my_viewer');\r\n * elem.setAttribute('aggregates', JSON.stringify({x: \"distinct count\"}));\r\n * @example <caption>via HTML</caption>\r\n * <perspective-viewer aggregates='{\"x\": \"distinct count\"}'>\r\n * </perspective-viewer>\r\n */\r\n @json_attribute\r\n aggregates(show) {\r\n if (show === null || show === undefined || Object.keys(show).length === 0) {\r\n if (this.hasAttribute(\"aggregates\")) {\r\n this.removeAttribute(\"aggregates\");\r\n }\r\n show = {};\r\n }\r\n\r\n let lis = this._get_view_dom_columns();\r\n lis.map(x => {\r\n let agg = show[x.getAttribute(\"name\")];\r\n if (agg) {\r\n x.setAttribute(\"aggregate\", Array.isArray(agg) ? JSON.stringify(agg) : agg);\r\n }\r\n });\r\n this.dispatchEvent(new Event(\"perspective-config-update\"));\r\n this._debounce_update();\r\n }\r\n\r\n /**\r\n * The set of column filter configurations.\r\n *\r\n * @kind member\r\n * @type {array} filters An array of filter config objects. A filter config\r\n * object is an array of three elements: * The column name. * The filter\r\n * operation as a string. See\r\n * {@link perspective/src/js/config/constants.js} * The filter argument, as\r\n * a string, float or Array<string> as the filter operation demands.\r\n * @fires PerspectiveViewer#perspective-config-update\r\n * @example <caption>via Javascript DOM</caption>\r\n * let filters = [\r\n * [\"x\", \"<\", 3],\r\n * [\"y\", \"contains\", \"abc\"]\r\n * ];\r\n * let elem = document.getElementById('my_viewer');\r\n * elem.setAttribute('filters', JSON.stringify(filters));\r\n * @example <caption>via HTML</caption>\r\n * <perspective-viewer filters='[[\"x\", \"<\", 3], [\"y\", \"contains\", \"abc\"]]'>\r\n * </perspective-viewer>\r\n */\r\n @array_attribute\r\n filters(filters) {\r\n if (filters === null || filters === undefined || filters.length === 0) {\r\n if (this.hasAttribute(\"filters\")) {\r\n this.removeAttribute(\"filters\");\r\n }\r\n filters = [];\r\n }\r\n if (!this._updating_filter) {\r\n var inner = this._filters.querySelector(\"ul\");\r\n this._update_column_list(\r\n filters,\r\n inner,\r\n filter => {\r\n const fterms = JSON.stringify({\r\n operator: filter[1],\r\n operand: filter[2]\r\n });\r\n return this._new_row(filter[0], undefined, undefined, fterms);\r\n },\r\n (filter, node) =>\r\n node.getAttribute(\"name\") === filter[0] &&\r\n node.getAttribute(\"filter\") ===\r\n JSON.stringify({\r\n operator: filter[1],\r\n operand: filter[2]\r\n })\r\n );\r\n }\r\n this.dispatchEvent(new Event(\"perspective-config-update\"));\r\n this._debounce_update();\r\n }\r\n\r\n /**\r\n * Sets the currently selected plugin, via its `name` field.\r\n *\r\n * @type {string}\r\n * @fires PerspectiveViewer#perspective-config-update\r\n */\r\n set plugin(v) {\r\n if (v === \"null\" || v === null || v === undefined) {\r\n this.setAttribute(\"plugin\", this._vis_selector.options[0].value);\r\n return;\r\n }\r\n\r\n const plugin_names = Object.keys(renderers.getInstance());\r\n if (this.hasAttribute(\"plugin\")) {\r\n let plugin = this.getAttribute(\"plugin\");\r\n if (plugin_names.indexOf(plugin) === -1) {\r\n const guess_plugin = plugin_names.find(x => x.indexOf(plugin) > -1);\r\n if (guess_plugin) {\r\n console.warn(`Unknown plugin \"${plugin}\", using \"${guess_plugin}\"`);\r\n this.setAttribute(\"plugin\", guess_plugin);\r\n } else {\r\n console.error(`Unknown plugin \"${plugin}\"`);\r\n this.setAttribute(\"plugin\", this._vis_selector.options[0].value);\r\n }\r\n } else {\r\n if (this._vis_selector.value !== plugin) {\r\n this._vis_selector.value = plugin;\r\n this._vis_selector_changed();\r\n }\r\n this._set_row_styles();\r\n this._set_column_defaults();\r\n this.dispatchEvent(new Event(\"perspective-config-update\"));\r\n }\r\n } else {\r\n this.setAttribute(\"plugin\", this._vis_selector.options[0].value);\r\n }\r\n }\r\n\r\n /**\r\n * Sets this `perspective.table.view`'s `column_pivots` property.\r\n *\r\n * @kind member\r\n * @type {Array<String>} Array of column names\r\n * @fires PerspectiveViewer#perspective-config-update\r\n */\r\n @array_attribute\r\n \"column-pivots\"(pivots) {\r\n if (pivots === null || pivots === undefined || pivots.length === 0) {\r\n if (this.hasAttribute(\"column-pivots\")) {\r\n this.removeAttribute(\"column-pivots\");\r\n }\r\n pivots = [];\r\n }\r\n\r\n var inner = this._column_pivots.querySelector(\"ul\");\r\n this._update_column_list(pivots, inner, pivot => this._new_row(pivot));\r\n this.dispatchEvent(new Event(\"perspective-config-update\"));\r\n this._debounce_update();\r\n }\r\n\r\n /**\r\n * Sets this `perspective.table.view`'s `row_pivots` property.\r\n *\r\n * @kind member\r\n * @type {array<string>} Array of column names\r\n * @fires PerspectiveViewer#perspective-config-update\r\n */\r\n @array_attribute\r\n \"row-pivots\"(pivots) {\r\n if (pivots === null || pivots === undefined || pivots.length === 0) {\r\n if (this.hasAttribute(\"row-pivots\")) {\r\n this.removeAttribute(\"row-pivots\");\r\n }\r\n pivots = [];\r\n }\r\n\r\n var inner = this._row_pivots.querySelector(\"ul\");\r\n this._update_column_list(pivots, inner, pivot => this._new_row(pivot));\r\n this.dispatchEvent(new Event(\"perspective-config-update\"));\r\n this._debounce_update();\r\n }\r\n\r\n /**\r\n * Determines whether this viewer is editable or not (though it is\r\n * ultimately up to the plugin as to whether editing is implemented).\r\n *\r\n * @kind member\r\n * @type {boolean} Is this viewer editable?\r\n * @fires PerspectiveViewer#perspective-config-update\r\n */\r\n set editable(x) {\r\n if (x === \"null\") {\r\n if (this.hasAttribute(\"editable\")) {\r\n this.removeAttribute(\"editable\");\r\n }\r\n } else {\r\n this.toggleAttribute(\"editable\", true);\r\n }\r\n this._debounce_update({force_update: true});\r\n this.dispatchEvent(new Event(\"perspective-config-update\"));\r\n }\r\n\r\n /**\r\n * Determines the render throttling behavior. Can be an integer, for\r\n * millisecond window to throttle render event; or, if `undefined`,\r\n * will try to determine the optimal throttle time from this component's\r\n * render framerate.\r\n *\r\n * @kind member\r\n * @type {integer|string} The throttle rate - milliseconds (integer), or the\r\n * enum \"adaptive\" for a dynamic throttle based on render time.\r\n * @example\r\n * <!-- Only draws at most 1 frame/sec. -->\r\n * <perspective-viewer throttle=\"1000\"></perspective-viewer>\r\n */\r\n set throttle(x) {\r\n if (x === \"null\") {\r\n if (this.hasAttribute(\"throttle\")) {\r\n this.removeAttribute(\"throttle\");\r\n }\r\n }\r\n // Returns the throttle time, but also perform validaiton - we only want\r\n // the latter here.\r\n this._calculate_throttle_timeout();\r\n }\r\n\r\n /*\r\n * Determines whether row selections is enabled on this viewer (though it is\r\n * ultimately up to the plugin as to whether selectable is implemented).\r\n *\r\n * @kind member\r\n * @type {boolean} Is this viewer editable?\r\n * @fires PerspectiveViewer#perspective-config-update\r\n */\r\n set selectable(x) {\r\n if (x === \"null\") {\r\n if (this.hasAttribute(\"selectable\")) {\r\n this.removeAttribute(\"selectable\");\r\n }\r\n } else {\r\n this.toggleAttribute(\"selectable\", true);\r\n }\r\n this._debounce_update({force_update: true});\r\n this.dispatchEvent(new Event(\"perspective-config-update\"));\r\n }\r\n\r\n /**\r\n * This element's `perspective` worker instance. This property is not\r\n * reflected as an HTML attribute, and is readonly; it can be effectively\r\n * set however by calling the `load() method with a `perspective.table`\r\n * instance from the preferred worker.\r\n *\r\n * @readonly\r\n * @example\r\n * let elem = document.getElementById('my_viewer');\r\n * let table = elem.worker.table([{x:1, y:2}]);\r\n * elem.load(table);\r\n */\r\n get worker() {\r\n return this._get_worker();\r\n }\r\n\r\n /**\r\n * This element's `perspective.table` instance.\r\n *\r\n * @readonly\r\n */\r\n get table() {\r\n return this._table;\r\n }\r\n\r\n /**\r\n * This element's `perspective.table.view` instance. The instance itself\r\n * will change after every `PerspectiveViewer#perspective-config-update`\r\n * event.\r\n *\r\n * @readonly\r\n */\r\n get view() {\r\n return this._view;\r\n }\r\n\r\n /**\r\n * Load data. If `load` or `update` have already been called on this\r\n * element, its internal `perspective.table` will also be deleted.\r\n *\r\n * @async\r\n * @param {any} data The data to load. Works with the same input types\r\n * supported by `perspective.table`.\r\n * @returns {Promise<void>} A promise which resolves once the data is loaded\r\n * and a `perspective.view` has been created.\r\n * @fires module:perspective_viewer~PerspectiveViewer#perspective-click\r\n * PerspectiveViewer#perspective-view-update\r\n * ]);\r\n * @example <caption>Load CSV</caption>\r\n * const my_viewer = document.getElementById('#my_viewer');\r\n * my_viewer.load(\"x,y\\n1,a\\n2,b\");\r\n * @example <caption>Load perspective.table</caption>\r\n * const my_viewer = document.getElementById('#my_viewer');\r\n * const tbl = perspective.table(\"x,y\\n1,a\\n2,b\");\r\n * my_viewer.load(tbl);\r\n * @example <caption>Load Promise<perspective.table></caption>\r\n * const my_viewer = document.getElementById('#my_viewer');\r\n * const tbl = async () => perspective.table(\"x,y\\n1,a\\n2,b\");\r\n * my_viewer.load(tbl);\r\n */\r\n async load(data, options) {\r\n let table;\r\n if (data instanceof Promise) {\r\n table = await data;\r\n } else {\r\n try {\r\n data = data.trim();\r\n } catch (e) {}\r\n if (data.type === \"table\") {\r\n table = data;\r\n } else {\r\n table = this.worker.table(data, options);\r\n table._owner_viewer = this;\r\n }\r\n }\r\n if (this.isConnected) {\r\n await this._load_table(table);\r\n } else {\r\n this._table = table;\r\n }\r\n }\r\n\r\n /**\r\n * Updates this element's `perspective.table` with new data.\r\n *\r\n * @param {any} data The data to load. Works with the same input types\r\n * supported by `perspective.table.update`.\r\n * @fires PerspectiveViewer#perspective-view-update\r\n * @example\r\n * const my_viewer = document.getElementById('#my_viewer');\r\n * my_viewer.update([\r\n * {x: 1, y: 'a'},\r\n * {x: 2, y: 'b'}\r\n * ]);\r\n */\r\n update(data) {\r\n if (this._table === undefined) {\r\n this.load(data);\r\n } else {\r\n this._table.update(data);\r\n }\r\n }\r\n\r\n /**\r\n * Determine whether to reflow the viewer and redraw.\r\n *\r\n */\r\n @throttlePromise\r\n async notifyResize(immediate) {\r\n const resized = await this._check_responsive_layout();\r\n if (!resized && !document.hidden && this.offsetParent) {\r\n await this._plugin.resize.call(this, immediate);\r\n }\r\n }\r\n\r\n /**\r\n * Duplicate an existing `<perspective-element>`, including data and view\r\n * settings. The underlying `perspective.table` will be shared between both\r\n * elements\r\n *\r\n * @param {any} widget A `<perspective-viewer>` instance to clone.\r\n */\r\n clone(widget) {\r\n if (this._inner_drop_target) {\r\n this._inner_drop_target.innerHTML = widget._inner_drop_target.innerHTML;\r\n }\r\n\r\n this._load_table(widget.table);\r\n this.restore(widget.save());\r\n }\r\n\r\n /**\r\n * Deletes this element's data and clears it's internal state (but not its\r\n * user state). This (or the underlying `perspective.table`'s equivalent\r\n * method) must be called in order for its memory to be reclaimed.\r\n *\r\n * @param {boolean} delete_table Should a delete call also be made to the\r\n * underlying `table()`.\r\n * @returns {Promise<boolean>} Whether or not this call resulted in the\r\n * underlying `perspective.table` actually being deleted.\r\n */\r\n delete(delete_table = true) {\r\n let x = this._clear_state(delete_table);\r\n if (this._plugin.delete) {\r\n this._plugin.delete.call(this);\r\n }\r\n window.removeEventListener(\"load\", this._resize_handler);\r\n window.removeEventListener(\"resize\", this._resize_handler);\r\n return x;\r\n }\r\n\r\n /**\r\n * Restyles the elements and to pick up any style changes\r\n */\r\n restyleElement() {\r\n this._restyle_plugin();\r\n }\r\n\r\n /**\r\n * Serialize this element's attribute/interaction state.\r\n *\r\n * @returns {object} a serialized element.\r\n */\r\n save() {\r\n let obj = {};\r\n const cols = new Set(PERSISTENT_ATTRIBUTES);\r\n for (let key = 0; key < this.attributes.length; key++) {\r\n let attr = this.attributes[key];\r\n if (cols.has(attr.name)) {\r\n if (attr.value === \"\") {\r\n obj[attr.name] = true;\r\n } else if (attr.name !== \"plugin\" && attr.value !== undefined && attr.value !== null) {\r\n obj[attr.name] = JSON.parse(attr.value);\r\n } else {\r\n obj[attr.name] = attr.value;\r\n }\r\n cols.delete(attr.name);\r\n }\r\n }\r\n for (const col of cols) {\r\n obj[col] = null;\r\n }\r\n if (this._plugin.save) {\r\n obj.plugin_config = this._plugin.save.call(this);\r\n }\r\n return obj;\r\n }\r\n\r\n /**\r\n * Restore this element to a state as generated by a reciprocal call to\r\n * `save` or `serialize`.\r\n *\r\n * @param {object|string} config returned by `save` or `serialize`.\r\n * @returns {Promise<void>} A promise which resolves when the changes have\r\n * been applied.\r\n */\r\n async restore(config) {\r\n if (typeof config === \"string\") {\r\n config = JSON.parse(config);\r\n }\r\n for (const key of PERSISTENT_ATTRIBUTES) {\r\n if (config.hasOwnProperty(key)) {\r\n let val = config[key];\r\n if (val === true) {\r\n this.toggleAttribute(key, true);\r\n } else if (val !== undefined && val !== null && val !== false) {\r\n if (typeof val !== \"string\") {\r\n val = JSON.stringify(val);\r\n }\r\n this.setAttribute(key, val);\r\n } else {\r\n this.removeAttribute(key);\r\n }\r\n }\r\n }\r\n\r\n if (this._plugin.restore && config.plugin_config) {\r\n this._plugin.restore.call(this, config.plugin_config);\r\n }\r\n await this._debounce_update();\r\n }\r\n\r\n /**\r\n * Flush any pending attribute modifications to this element.\r\n *\r\n * @returns {Promise<void>} A promise which resolves when the current\r\n * attribute state has been applied.\r\n */\r\n async flush() {\r\n await new Promise(setTimeout);\r\n while (this.hasAttribute(\"updating\")) {\r\n await this._updating_promise;\r\n }\r\n }\r\n\r\n /**\r\n * Clears the rows in the current {@link table}.\r\n */\r\n clear() {\r\n this._table?.clear();\r\n }\r\n\r\n /**\r\n * Replaces all rows in the current {@link table}.\r\n */\r\n replace(data) {\r\n this._table ? this._table.replace(data) : this._load(data);\r\n }\r\n\r\n /**\r\n * Reset's this element's view state and attributes to default. Does not\r\n * delete this element's `perspective.table` or otherwise modify the data\r\n * state.\r\n */\r\n reset() {\r\n this.removeAttribute(\"row-pivots\");\r\n this.removeAttribute(\"column-pivots\");\r\n this.removeAttribute(\"filters\");\r\n this.removeAttribute(\"sort\");\r\n if (this._initial_col_order) {\r\n this.setAttribute(\"columns\", JSON.stringify(this._initial_col_order));\r\n } else {\r\n this.removeAttribute(\"columns\");\r\n }\r\n this.setAttribute(\"plugin\", Object.keys(renderers.getInstance())[0]);\r\n this.dispatchEvent(new Event(\"perspective-config-update\"));\r\n this._hide_context_menu();\r\n }\r\n\r\n /**\r\n * Download this element's data as a CSV file.\r\n *\r\n * @param {boolean} [flat=false] Whether to use the element's current view\r\n * config, or to use a default \"flat\" view.\r\n * @memberof PerspectiveViewer\r\n */\r\n async download(flat = false) {\r\n const view = flat ? this._table.view() : this._view;\r\n const csv = await view.to_csv();\r\n const element = document.createElement(\"a\");\r\n const binStr = csv;\r\n const len = binStr.length;\r\n const arr = new Uint8Array(len);\r\n for (let i = 0; i < len; i++) {\r\n arr[i] = binStr.charCodeAt(i);\r\n }\r\n const blob = new Blob([arr]);\r\n element.setAttribute(\"href\", URL.createObjectURL(blob));\r\n element.setAttribute(\"download\", \"perspective.csv\");\r\n element.style.display = \"none\";\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n this._hide_context_menu();\r\n }\r\n\r\n /**\r\n * Copies this element's view data (as a CSV) to the clipboard. This method\r\n * must be called from an event handler, subject to the browser's\r\n * restrictions on clipboard access. See\r\n * {@link https://www.w3.org/TR/clipboard-apis/#allow-read-clipboard}.\r\n */\r\n copy(flat = false) {\r\n let data;\r\n const view = flat ? this._table.view() : this._view;\r\n view.to_csv()\r\n .then(csv => {\r\n data = csv;\r\n })\r\n .catch(err => {\r\n console.error(err);\r\n data = \"\";\r\n });\r\n let count = 0;\r\n let f = () => {\r\n if (typeof data !== \"undefined\") {\r\n copy_to_clipboard(data);\r\n } else if (count < 200) {\r\n count++;\r\n setTimeout(f, 50);\r\n } else {\r\n console.warn(\"Timeout expired - copy to clipboard cancelled.\");\r\n }\r\n };\r\n f();\r\n this._hide_context_menu();\r\n }\r\n\r\n /**\r\n * Opens/closes the element's config menu.\r\n *\r\n * @async\r\n */\r\n async toggleConfig() {\r\n await this._toggle_config();\r\n }\r\n}\r\n\r\n/**\r\n * `perspective-click` is fired whenever underlying `view`'s grid or chart are\r\n * clicked providing a detail that includes a `config`, `column_names` and\r\n * `row`.\r\n *\r\n * @event module:perspective_viewer~PerspectiveViewer#perspective-click\r\n * @type {object}\r\n * @property {array} column_names - Includes a list of column names.\r\n * @property {object} config - Contains a property `filters` that can be applied\r\n * to a `<perspective-viewer>` through the use of `restore()` updating it to\r\n * show the filtered subset of data..\r\n * @property {array} row - Includes the data row.\r\n */\r\n\r\n/**\r\n * `perspective-config-update` is fired whenever an configuration attribute has\r\n * been modified, by the user or otherwise.\r\n *\r\n * @event module:perspective_viewer~PerspectiveViewer#perspective-config-update\r\n * @type {string}\r\n */\r\n\r\n/**\r\n * `perspective-view-update` is fired whenever underlying `view`'s data has\r\n * updated, including every invocation of `load` and `update`.\r\n *\r\n * @event module:perspective_viewer~PerspectiveViewer#perspective-view-update\r\n * @type {string}\r\n */\r\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\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","var global = require('../internals/global');\n\nmodule.exports = global;\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\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 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","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","// 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","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\n/**\n * The default settings which populate `perspective.config.js`.\n */\nmodule.exports.default = {\n /**\n * `types` are the type-specific configuration options. Each key is the\n * name of a perspective type; their values are configuration objects for\n * that type.\n */\n types: {\n float: {\n /**\n * Which filter operator should be the default when a column of this\n * type is pivotted.\n */\n filter_operator: \"==\",\n\n /**\n * Which aggregate should be the default when a column of this type\n * is pivotted.\n */\n aggregate: \"sum\",\n\n /**\n * The format object for this type. Can be either an\n * `toLocaleString()` `options` object for this type (or supertype),\n * or a function which returns the formatted string for this type.\n */\n format: {\n style: \"decimal\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2\n }\n },\n string: {\n filter_operator: \"==\",\n aggregate: \"count\"\n },\n integer: {\n filter_operator: \"==\",\n aggregate: \"sum\",\n format: {}\n },\n boolean: {\n filter_operator: \"==\",\n aggregate: \"count\"\n },\n datetime: {\n filter_operator: \"==\",\n aggregate: \"count\",\n format: {\n week: \"numeric\",\n year: \"numeric\",\n month: \"numeric\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"numeric\",\n second: \"numeric\"\n },\n null_value: -1\n },\n date: {\n filter_operator: \"==\",\n aggregate: \"count\",\n format: {\n week: \"numeric\",\n year: \"numeric\",\n month: \"numeric\",\n day: \"numeric\"\n },\n null_value: -1\n }\n }\n};\n","module.exports.default = function() {}","module.exports = require(\"/Users/v625154/work/perspective/node_modules/source-map-loader/index.js!/Users/v625154/work/perspective/packages/perspective/dist/esm/perspective.parallel.js\");","// IEEE754 conversions based on https://github.com/feross/ieee754\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\nvar pack = 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 unpack = 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\nmodule.exports = {\n pack: pack,\n unpack: unpack\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","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar classof = require('../internals/classof-raw');\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar IS_NODE = classof(process) == 'process';\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n } else if (MutationObserver && !IS_IOS) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\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';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\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","/**\n * detect IE\n * returns version of IE or false, if browser is not Internet Explorer\n */\nvar detectie = function() {\n var ua = window.navigator.userAgent;\n\n var msie = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n\n var trident = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf('rv:');\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n }\n\n var edge = ua.indexOf('Edge/');\n if (edge > 0) {\n // IE 12 => return version number\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n }\n // other browser\n return false;\n}\n\nmodule.exports = detectie;","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Simple, lightweight, usable local autocomplete library for modern browsers\n * Because there weren’t enough autocomplete scripts in the world? Because I’m completely insane and have NIH syndrome? Probably both. :P\n * @author Lea Verou http://leaverou.github.io/awesomplete\n * MIT license\n */\n\n(function () {\n\nvar _ = function (input, o) {\n\tvar me = this;\n\n // Keep track of number of instances for unique IDs\n _.count = (_.count || 0) + 1;\n this.count = _.count;\n\n\t// Setup\n\n\tthis.isOpened = false;\n\n\tthis.input = $(input);\n\tthis.input.setAttribute(\"autocomplete\", \"off\");\n\tthis.input.setAttribute(\"aria-expanded\", \"false\");\n\tthis.input.setAttribute(\"aria-owns\", \"awesomplete_list_\" + this.count);\n\tthis.input.setAttribute(\"role\", \"combobox\");\n\n\t// store constructor options in case we need to distinguish\n\t// between default and customized behavior later on\n\tthis.options = o = o || {};\n\n\tconfigure(this, {\n\t\tminChars: 2,\n\t\tmaxItems: 10,\n\t\tautoFirst: false,\n\t\tdata: _.DATA,\n\t\tfilter: _.FILTER_CONTAINS,\n\t\tsort: o.sort === false ? false : _.SORT_BYLENGTH,\n\t\tcontainer: _.CONTAINER,\n\t\titem: _.ITEM,\n\t\treplace: _.REPLACE,\n\t\ttabSelect: false\n\t}, o);\n\n\tthis.index = -1;\n\n\t// Create necessary elements\n\n\tthis.container = this.container(input);\n\n\tthis.ul = $.create(\"ul\", {\n\t\thidden: \"hidden\",\n role: \"listbox\",\n id: \"awesomplete_list_\" + this.count,\n\t\tinside: this.container\n\t});\n\n\tthis.status = $.create(\"span\", {\n\t\tclassName: \"visually-hidden\",\n\t\trole: \"status\",\n\t\t\"aria-live\": \"assertive\",\n \"aria-atomic\": true,\n inside: this.container,\n textContent: this.minChars != 0 ? (\"Type \" + this.minChars + \" or more characters for results.\") : \"Begin typing for results.\"\n\t});\n\n\t// Bind events\n\n\tthis._events = {\n\t\tinput: {\n\t\t\t\"input\": this.evaluate.bind(this),\n\t\t\t\"blur\": this.close.bind(this, { reason: \"blur\" }),\n\t\t\t\"keydown\": function(evt) {\n\t\t\t\tvar c = evt.keyCode;\n\n\t\t\t\t// If the dropdown `ul` is in view, then act on keydown for the following keys:\n\t\t\t\t// Enter / Esc / Up / Down\n\t\t\t\tif(me.opened) {\n\t\t\t\t\tif (c === 13 && me.selected) { // Enter\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\tme.select(undefined, undefined, evt);\n\t\t\t\t\t}\n\t\t\t\t\telse if (c === 9 && me.selected && me.tabSelect) {\n\t\t\t\t\t\tme.select(undefined, undefined, evt);\n\t\t\t\t\t}\n\t\t\t\t\telse if (c === 27) { // Esc\n\t\t\t\t\t\tme.close({ reason: \"esc\" });\n\t\t\t\t\t}\n\t\t\t\t\telse if (c === 38 || c === 40) { // Down/Up arrow\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\tme[c === 38? \"previous\" : \"next\"]();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tform: {\n\t\t\t\"submit\": this.close.bind(this, { reason: \"submit\" })\n\t\t},\n\t\tul: {\n\t\t\t// Prevent the default mousedowm, which ensures the input is not blurred.\n\t\t\t// The actual selection will happen on click. This also ensures dragging the\n\t\t\t// cursor away from the list item will cancel the selection\n\t\t\t\"mousedown\": function(evt) {\n\t\t\t\tevt.preventDefault();\n\t\t\t},\n\t\t\t// The click event is fired even if the corresponding mousedown event has called preventDefault\n\t\t\t\"click\": function(evt) {\n\t\t\t\tvar li = evt.target;\n\n\t\t\t\tif (li !== this) {\n\n\t\t\t\t\twhile (li && !/li/i.test(li.nodeName)) {\n\t\t\t\t\t\tli = li.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (li && evt.button === 0) { // Only select on left click\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t\tme.select(li, evt.target, evt);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t$.bind(this.input, this._events.input);\n\t$.bind(this.input.form, this._events.form);\n\t$.bind(this.ul, this._events.ul);\n\n\tif (this.input.hasAttribute(\"list\")) {\n\t\tthis.list = \"#\" + this.input.getAttribute(\"list\");\n\t\tthis.input.removeAttribute(\"list\");\n\t}\n\telse {\n\t\tthis.list = this.input.getAttribute(\"data-list\") || o.list || [];\n\t}\n\n\t_.all.push(this);\n};\n\n_.prototype = {\n\tset list(list) {\n\t\tif (Array.isArray(list)) {\n\t\t\tthis._list = list;\n\t\t}\n\t\telse if (typeof list === \"string\" && list.indexOf(\",\") > -1) {\n\t\t\t\tthis._list = list.split(/\\s*,\\s*/);\n\t\t}\n\t\telse { // Element or CSS selector\n\t\t\tlist = $(list);\n\n\t\t\tif (list && list.children) {\n\t\t\t\tvar items = [];\n\t\t\t\tslice.apply(list.children).forEach(function (el) {\n\t\t\t\t\tif (!el.disabled) {\n\t\t\t\t\t\tvar text = el.textContent.trim();\n\t\t\t\t\t\tvar value = el.value || text;\n\t\t\t\t\t\tvar label = el.label || text;\n\t\t\t\t\t\tif (value !== \"\") {\n\t\t\t\t\t\t\titems.push({ label: label, value: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis._list = items;\n\t\t\t}\n\t\t}\n\n\t\tif (document.activeElement === this.input) {\n\t\t\tthis.evaluate();\n\t\t}\n\t},\n\n\tget selected() {\n\t\treturn this.index > -1;\n\t},\n\n\tget opened() {\n\t\treturn this.isOpened;\n\t},\n\n\tclose: function (o) {\n\t\tif (!this.opened) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.input.setAttribute(\"aria-expanded\", \"false\");\n\t\tthis.ul.setAttribute(\"hidden\", \"\");\n\t\tthis.isOpened = false;\n\t\tthis.index = -1;\n\n\t\tthis.status.setAttribute(\"hidden\", \"\");\n\n\t\t$.fire(this.input, \"awesomplete-close\", o || {});\n\t},\n\n\topen: function () {\n\t\tthis.input.setAttribute(\"aria-expanded\", \"true\");\n\t\tthis.ul.removeAttribute(\"hidden\");\n\t\tthis.isOpened = true;\n\n\t\tthis.status.removeAttribute(\"hidden\");\n\n\t\tif (this.autoFirst && this.index === -1) {\n\t\t\tthis.goto(0);\n\t\t}\n\n\t\t$.fire(this.input, \"awesomplete-open\");\n\t},\n\n\tdestroy: function() {\n\t\t//remove events from the input and its form\n\t\t$.unbind(this.input, this._events.input);\n\t\t$.unbind(this.input.form, this._events.form);\n\n\t\t// cleanup container if it was created by Awesomplete but leave it alone otherwise\n\t\tif (!this.options.container) {\n\t\t\t//move the input out of the awesomplete container and remove the container and its children\n\t\t\tvar parentNode = this.container.parentNode;\n\n\t\t\tparentNode.insertBefore(this.input, this.container);\n\t\t\tparentNode.removeChild(this.container);\n\t\t}\n\n\t\t//remove autocomplete and aria-autocomplete attributes\n\t\tthis.input.removeAttribute(\"autocomplete\");\n\t\tthis.input.removeAttribute(\"aria-autocomplete\");\n\n\t\t//remove this awesomeplete instance from the global array of instances\n\t\tvar indexOfAwesomplete = _.all.indexOf(this);\n\n\t\tif (indexOfAwesomplete !== -1) {\n\t\t\t_.all.splice(indexOfAwesomplete, 1);\n\t\t}\n\t},\n\n\tnext: function () {\n\t\tvar count = this.ul.children.length;\n\t\tthis.goto(this.index < count - 1 ? this.index + 1 : (count ? 0 : -1) );\n\t},\n\n\tprevious: function () {\n\t\tvar count = this.ul.children.length;\n\t\tvar pos = this.index - 1;\n\n\t\tthis.goto(this.selected && pos !== -1 ? pos : count - 1);\n\t},\n\n\t// Should not be used, highlights specific item without any checks!\n\tgoto: function (i) {\n\t\tvar lis = this.ul.children;\n\n\t\tif (this.selected) {\n\t\t\tlis[this.index].setAttribute(\"aria-selected\", \"false\");\n\t\t}\n\n\t\tthis.index = i;\n\n\t\tif (i > -1 && lis.length > 0) {\n\t\t\tlis[i].setAttribute(\"aria-selected\", \"true\");\n\n\t\t\tthis.status.textContent = lis[i].textContent + \", list item \" + (i + 1) + \" of \" + lis.length;\n\n this.input.setAttribute(\"aria-activedescendant\", this.ul.id + \"_item_\" + this.index);\n\n\t\t\t// scroll to highlighted element in case parent's height is fixed\n\t\t\tthis.ul.scrollTop = lis[i].offsetTop - this.ul.clientHeight + lis[i].clientHeight;\n\n\t\t\t$.fire(this.input, \"awesomplete-highlight\", {\n\t\t\t\ttext: this.suggestions[this.index]\n\t\t\t});\n\t\t}\n\t},\n\n\tselect: function (selected, origin, originalEvent) {\n\t\tif (selected) {\n\t\t\tthis.index = $.siblingIndex(selected);\n\t\t} else {\n\t\t\tselected = this.ul.children[this.index];\n\t\t}\n\n\t\tif (selected) {\n\t\t\tvar suggestion = this.suggestions[this.index];\n\n\t\t\tvar allowed = $.fire(this.input, \"awesomplete-select\", {\n\t\t\t\ttext: suggestion,\n\t\t\t\torigin: origin || selected,\n\t\t\t\toriginalEvent: originalEvent\n\t\t\t});\n\n\t\t\tif (allowed) {\n\t\t\t\tthis.replace(suggestion);\n\t\t\t\tthis.close({ reason: \"select\" });\n\t\t\t\t$.fire(this.input, \"awesomplete-selectcomplete\", {\n\t\t\t\t\ttext: suggestion,\n\t\t\t\t\toriginalEvent: originalEvent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\n\tevaluate: function() {\n\t\tvar me = this;\n\t\tvar value = this.input.value;\n\n\t\tif (value.length >= this.minChars && this._list && this._list.length > 0) {\n\t\t\tthis.index = -1;\n\t\t\t// Populate list with options that match\n\t\t\tthis.ul.innerHTML = \"\";\n\n\t\t\tthis.suggestions = this._list\n\t\t\t\t.map(function(item) {\n\t\t\t\t\treturn new Suggestion(me.data(item, value));\n\t\t\t\t})\n\t\t\t\t.filter(function(item) {\n\t\t\t\t\treturn me.filter(item, value);\n\t\t\t\t});\n\n\t\t\tif (this.sort !== false) {\n\t\t\t\tthis.suggestions = this.suggestions.sort(this.sort);\n\t\t\t}\n\n\t\t\tthis.suggestions = this.suggestions.slice(0, this.maxItems);\n\n\t\t\tthis.suggestions.forEach(function(text, index) {\n\t\t\t\t\tme.ul.appendChild(me.item(text, value, index));\n\t\t\t\t});\n\n\t\t\tif (this.ul.children.length === 0) {\n\n this.status.textContent = \"No results found\";\n\n\t\t\t\tthis.close({ reason: \"nomatches\" });\n\n\t\t\t} else {\n\t\t\t\tthis.open();\n\n this.status.textContent = this.ul.children.length + \" results found\";\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tthis.close({ reason: \"nomatches\" });\n\n this.status.textContent = \"No results found\";\n\t\t}\n\t}\n};\n\n// Static methods/properties\n\n_.all = [];\n\n_.FILTER_CONTAINS = function (text, input) {\n\treturn RegExp($.regExpEscape(input.trim()), \"i\").test(text);\n};\n\n_.FILTER_STARTSWITH = function (text, input) {\n\treturn RegExp(\"^\" + $.regExpEscape(input.trim()), \"i\").test(text);\n};\n\n_.SORT_BYLENGTH = function (a, b) {\n\tif (a.length !== b.length) {\n\t\treturn a.length - b.length;\n\t}\n\n\treturn a < b? -1 : 1;\n};\n\n_.CONTAINER = function (input) {\n\treturn $.create(\"div\", {\n\t\tclassName: \"awesomplete\",\n\t\taround: input\n\t});\n}\n\n_.ITEM = function (text, input, item_id) {\n\tvar html = input.trim() === \"\" ? text : text.replace(RegExp($.regExpEscape(input.trim()), \"gi\"), \"<mark>$&</mark>\");\n\treturn $.create(\"li\", {\n\t\tinnerHTML: html,\n\t\t\"role\": \"option\",\n\t\t\"aria-selected\": \"false\",\n\t\t\"id\": \"awesomplete_list_\" + this.count + \"_item_\" + item_id\n\t});\n};\n\n_.REPLACE = function (text) {\n\tthis.input.value = text.value;\n};\n\n_.DATA = function (item/*, input*/) { return item; };\n\n// Private functions\n\nfunction Suggestion(data) {\n\tvar o = Array.isArray(data)\n\t ? { label: data[0], value: data[1] }\n\t : typeof data === \"object\" && \"label\" in data && \"value\" in data ? data : { label: data, value: data };\n\n\tthis.label = o.label || o.value;\n\tthis.value = o.value;\n}\nObject.defineProperty(Suggestion.prototype = Object.create(String.prototype), \"length\", {\n\tget: function() { return this.label.length; }\n});\nSuggestion.prototype.toString = Suggestion.prototype.valueOf = function () {\n\treturn \"\" + this.label;\n};\n\nfunction configure(instance, properties, o) {\n\tfor (var i in properties) {\n\t\tvar initial = properties[i],\n\t\t attrValue = instance.input.getAttribute(\"data-\" + i.toLowerCase());\n\n\t\tif (typeof initial === \"number\") {\n\t\t\tinstance[i] = parseInt(attrValue);\n\t\t}\n\t\telse if (initial === false) { // Boolean options must be false by default anyway\n\t\t\tinstance[i] = attrValue !== null;\n\t\t}\n\t\telse if (initial instanceof Function) {\n\t\t\tinstance[i] = null;\n\t\t}\n\t\telse {\n\t\t\tinstance[i] = attrValue;\n\t\t}\n\n\t\tif (!instance[i] && instance[i] !== 0) {\n\t\t\tinstance[i] = (i in o)? o[i] : initial;\n\t\t}\n\t}\n}\n\n// Helpers\n\nvar slice = Array.prototype.slice;\n\nfunction $(expr, con) {\n\treturn typeof expr === \"string\"? (con || document).querySelector(expr) : expr || null;\n}\n\nfunction $$(expr, con) {\n\treturn slice.call((con || document).querySelectorAll(expr));\n}\n\n$.create = function(tag, o) {\n\tvar element = document.createElement(tag);\n\n\tfor (var i in o) {\n\t\tvar val = o[i];\n\n\t\tif (i === \"inside\") {\n\t\t\t$(val).appendChild(element);\n\t\t}\n\t\telse if (i === \"around\") {\n\t\t\tvar ref = $(val);\n\t\t\tref.parentNode.insertBefore(element, ref);\n\t\t\telement.appendChild(ref);\n\n\t\t\tif (ref.getAttribute(\"autofocus\") != null) {\n\t\t\t\tref.focus();\n\t\t\t}\n\t\t}\n\t\telse if (i in element) {\n\t\t\telement[i] = val;\n\t\t}\n\t\telse {\n\t\t\telement.setAttribute(i, val);\n\t\t}\n\t}\n\n\treturn element;\n};\n\n$.bind = function(element, o) {\n\tif (element) {\n\t\tfor (var event in o) {\n\t\t\tvar callback = o[event];\n\n\t\t\tevent.split(/\\s+/).forEach(function (event) {\n\t\t\t\telement.addEventListener(event, callback);\n\t\t\t});\n\t\t}\n\t}\n};\n\n$.unbind = function(element, o) {\n\tif (element) {\n\t\tfor (var event in o) {\n\t\t\tvar callback = o[event];\n\n\t\t\tevent.split(/\\s+/).forEach(function(event) {\n\t\t\t\telement.removeEventListener(event, callback);\n\t\t\t});\n\t\t}\n\t}\n};\n\n$.fire = function(target, type, properties) {\n\tvar evt = document.createEvent(\"HTMLEvents\");\n\n\tevt.initEvent(type, true, true );\n\n\tfor (var j in properties) {\n\t\tevt[j] = properties[j];\n\t}\n\n\treturn target.dispatchEvent(evt);\n};\n\n$.regExpEscape = function (s) {\n\treturn s.replace(/[-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n};\n\n$.siblingIndex = function (el) {\n\t/* eslint-disable no-cond-assign */\n\tfor (var i = 0; el = el.previousElementSibling; i++);\n\treturn i;\n};\n\n// Initialization\n\nfunction init() {\n\t$$(\"input.awesomplete\").forEach(function (input) {\n\t\tnew _(input);\n\t});\n}\n\n// Make sure to export Awesomplete on self when in a browser\nif (typeof self !== \"undefined\") {\n\tself.Awesomplete = _;\n}\n\n// Are we in a browser? Check for Document constructor\nif (typeof Document !== \"undefined\") {\n\t// DOM already loaded?\n\tif (document.readyState !== \"loading\") {\n\t\tinit();\n\t}\n\telse {\n\t\t// Wait for it\n\t\tdocument.addEventListener(\"DOMContentLoaded\", init);\n\t}\n}\n\n_.$ = $;\n_.$$ = $$;\n\n// Expose Awesomplete as a CJS module\nif (typeof module === \"object\" && module.exports) {\n\tmodule.exports = _;\n}\n\nreturn _;\n\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 // eslint-disable-next-line no-self-assign\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\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 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","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","// `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 baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.github.io/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(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-array-constructors-require-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');\nvar inheritIfRequired = require('../internals/inherit-if-required');\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, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\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 return inheritIfRequired(function () {\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 }(), dummy, TypedArrayConstructor);\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 - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\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 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/function-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","var bind = require('../internals/function-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 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","'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 exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\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\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+\\-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n// eslint-disable-next-line no-control-regex\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\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","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\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 index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\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';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.appent` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n 'use strict';\n\n // defaultPrevented is broken in IE.\n // https://connect.microsoft.com/IE/feedback/details/790389/event-defaultprevented-returns-false-after-preventdefault-was-called\n var workingDefaultPrevented = (function() {\n var e = document.createEvent('Event');\n e.initEvent('foo', true, true);\n e.preventDefault();\n return e.defaultPrevented;\n })();\n\n if (!workingDefaultPrevented) {\n var origPreventDefault = Event.prototype.preventDefault;\n Event.prototype.preventDefault = function() {\n if (!this.cancelable) {\n return;\n }\n\n origPreventDefault.call(this);\n\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n },\n configurable: true\n });\n };\n }\n\n var isIE = /Trident/.test(navigator.userAgent);\n\n // CustomEvent constructor shim\n if (!window.CustomEvent || isIE && (typeof window.CustomEvent !== 'function')) {\n window.CustomEvent = function(inType, params) {\n params = params || {};\n var e = document.createEvent('CustomEvent');\n e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable), params.detail);\n return e;\n };\n window.CustomEvent.prototype = window.Event.prototype;\n }\n\n // Event constructor shim\n if (!window.Event || isIE && (typeof window.Event !== 'function')) {\n var origEvent = window.Event;\n window.Event = function(inType, params) {\n params = params || {};\n var e = document.createEvent('Event');\n e.initEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable));\n return e;\n };\n if (origEvent) {\n for (var i in origEvent) {\n window.Event[i] = origEvent[i];\n }\n }\n window.Event.prototype = origEvent.prototype;\n }\n\n if (!window.MouseEvent || isIE && (typeof window.MouseEvent !== 'function')) {\n var origMouseEvent = window.MouseEvent;\n window.MouseEvent = function(inType, params) {\n params = params || {};\n var e = document.createEvent('MouseEvent');\n e.initMouseEvent(inType,\n Boolean(params.bubbles), Boolean(params.cancelable),\n params.view || window, params.detail,\n params.screenX, params.screenY, params.clientX, params.clientY,\n params.ctrlKey, params.altKey, params.shiftKey, params.metaKey,\n params.button, params.relatedTarget);\n return e;\n };\n if (origMouseEvent) {\n for (var i in origMouseEvent) {\n window.MouseEvent[i] = origMouseEvent[i];\n }\n }\n window.MouseEvent.prototype = origMouseEvent.prototype;\n }\n\n // ES6 stuff\n if (!Array.from) {\n Array.from = function (object) {\n return [].slice.call(object);\n };\n }\n\n if (!Object.assign) {\n var assign = function(target, source) {\n var n$ = Object.getOwnPropertyNames(source);\n for (var i=0, p; i < n$.length; i++) {\n p = n$[i];\n target[p] = source[p];\n }\n }\n\n Object.assign = function(target, sources) {\n var args = [].slice.call(arguments, 1);\n for (var i=0, s; i < args.length; i++) {\n s = args[i];\n if (s) {\n assign(target, s);\n }\n }\n return target;\n }\n }\n\n})(window.WebComponents);\n",null,null,null,null,null,null,"/**\n@license\nCopyright (c) 2018 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n'use strict';\n\nimport SymbolPolyfill from '../node_modules/es-symbol/dist/symbol.js';\n\nif (!window.Symbol) {\n window.Symbol = SymbolPolyfill;\n const iterator = window.Symbol.iterator;\n\n // implement iterators for IE 11\n\n /** @this {Array} */\n Array.prototype[iterator] = function*() {\n for (let i = 0; i < this.length; i++) {\n yield this[i];\n }\n };\n\n /** @this {Set} */\n Set.prototype[iterator] = function*() {\n const temp = [];\n this.forEach((value) => {\n temp.push(value);\n });\n for (let i = 0; i < temp.length; i++) {\n yield temp[i];\n }\n };\n\n /** @this {Map} */\n Map.prototype[iterator] = function*() {\n const entries = [];\n this.forEach((value, key) => {\n entries.push([key, value]);\n });\n for(let i = 0; i < entries.length; i++) {\n yield entries[i];\n }\n };\n\n /** @this {String} */\n String.prototype[iterator] = function*() {\n for (let i = 0; i < this.length; i++) {\n yield this[i];\n }\n };\n}","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n// minimal template polyfill\n(function() {\n 'use strict';\n\n var needsTemplate = (typeof HTMLTemplateElement === 'undefined');\n var brokenDocFragment = !(document.createDocumentFragment().cloneNode() instanceof DocumentFragment);\n var needsDocFrag = false;\n\n // NOTE: Replace DocumentFragment to work around IE11 bug that\n // causes children of a document fragment modified while\n // there is a mutation observer to not have a parentNode, or\n // have a broken parentNode (!?!)\n if (/Trident/.test(navigator.userAgent)) {\n (function() {\n\n needsDocFrag = true;\n\n var origCloneNode = Node.prototype.cloneNode;\n Node.prototype.cloneNode = function cloneNode(deep) {\n var newDom = origCloneNode.call(this, deep);\n if (this instanceof DocumentFragment) {\n newDom.__proto__ = DocumentFragment.prototype;\n }\n return newDom;\n };\n\n // IE's DocumentFragment querySelector code doesn't work when\n // called on an element instance\n DocumentFragment.prototype.querySelectorAll = HTMLElement.prototype.querySelectorAll;\n DocumentFragment.prototype.querySelector = HTMLElement.prototype.querySelector;\n\n Object.defineProperties(DocumentFragment.prototype, {\n 'nodeType': {\n get: function () {\n return Node.DOCUMENT_FRAGMENT_NODE;\n },\n configurable: true\n },\n\n 'localName': {\n get: function () {\n return undefined;\n },\n configurable: true\n },\n\n 'nodeName': {\n get: function () {\n return '#document-fragment';\n },\n configurable: true\n }\n });\n\n var origInsertBefore = Node.prototype.insertBefore;\n function insertBefore(newNode, refNode) {\n if (newNode instanceof DocumentFragment) {\n var child;\n while ((child = newNode.firstChild)) {\n origInsertBefore.call(this, child, refNode);\n }\n } else {\n origInsertBefore.call(this, newNode, refNode);\n }\n return newNode;\n }\n Node.prototype.insertBefore = insertBefore;\n\n var origAppendChild = Node.prototype.appendChild;\n Node.prototype.appendChild = function appendChild(child) {\n if (child instanceof DocumentFragment) {\n insertBefore.call(this, child, null);\n } else {\n origAppendChild.call(this, child);\n }\n return child;\n };\n\n var origRemoveChild = Node.prototype.removeChild;\n var origReplaceChild = Node.prototype.replaceChild;\n Node.prototype.replaceChild = function replaceChild(newChild, oldChild) {\n if (newChild instanceof DocumentFragment) {\n insertBefore.call(this, newChild, oldChild);\n origRemoveChild.call(this, oldChild);\n } else {\n origReplaceChild.call(this, newChild, oldChild);\n }\n return oldChild;\n };\n\n Document.prototype.createDocumentFragment = function createDocumentFragment() {\n var frag = this.createElement('df');\n frag.__proto__ = DocumentFragment.prototype;\n return frag;\n };\n\n var origImportNode = Document.prototype.importNode;\n Document.prototype.importNode = function importNode(impNode, deep) {\n deep = deep || false;\n var newNode = origImportNode.call(this, impNode, deep);\n if (impNode instanceof DocumentFragment) {\n newNode.__proto__ = DocumentFragment.prototype;\n }\n return newNode;\n };\n })();\n }\n\n // NOTE: we rely on this cloneNode not causing element upgrade.\n // This means this polyfill must load before the CE polyfill and\n // this would need to be re-worked if a browser supports native CE\n // but not <template>.\n var capturedCloneNode = Node.prototype.cloneNode;\n var capturedCreateElement = Document.prototype.createElement;\n var capturedImportNode = Document.prototype.importNode;\n var capturedRemoveChild = Node.prototype.removeChild;\n var capturedAppendChild = Node.prototype.appendChild;\n var capturedReplaceChild = Node.prototype.replaceChild;\n var capturedParseFromString = DOMParser.prototype.parseFromString;\n var capturedHTMLElementInnerHTML = Object.getOwnPropertyDescriptor(window.HTMLElement.prototype, 'innerHTML');\n var capturedChildNodes = Object.getOwnPropertyDescriptor(window.Node.prototype, 'childNodes');\n\n var elementQuerySelectorAll = Element.prototype.querySelectorAll;\n var docQuerySelectorAll = Document.prototype.querySelectorAll;\n var fragQuerySelectorAll = DocumentFragment.prototype.querySelectorAll;\n\n var scriptSelector = 'script:not([type]),script[type=\"application/javascript\"],script[type=\"text/javascript\"]';\n\n function QSA(node, selector) {\n // IE 11 throws a SyntaxError with `scriptSelector` if the node has no children due to the `:not([type])` syntax\n if (!node.childNodes.length) {\n return [];\n }\n switch (node.nodeType) {\n case Node.DOCUMENT_NODE:\n return docQuerySelectorAll.call(node, selector);\n case Node.DOCUMENT_FRAGMENT_NODE:\n return fragQuerySelectorAll.call(node, selector);\n default:\n return elementQuerySelectorAll.call(node, selector);\n }\n }\n\n // returns true if nested templates cannot be cloned (they cannot be on\n // some impl's like Safari 8 and Edge)\n // OR if cloning a document fragment does not result in a document fragment\n var needsCloning = (function() {\n if (!needsTemplate) {\n var t = document.createElement('template');\n var t2 = document.createElement('template');\n t2.content.appendChild(document.createElement('div'));\n t.content.appendChild(t2);\n var clone = t.cloneNode(true);\n return (clone.content.childNodes.length === 0 || clone.content.firstChild.content.childNodes.length === 0\n || brokenDocFragment);\n }\n })();\n\n var TEMPLATE_TAG = 'template';\n var PolyfilledHTMLTemplateElement = function() {};\n\n if (needsTemplate) {\n\n var contentDoc = document.implementation.createHTMLDocument('template');\n var canDecorate = true;\n\n var templateStyle = document.createElement('style');\n templateStyle.textContent = TEMPLATE_TAG + '{display:none;}';\n\n var head = document.head;\n head.insertBefore(templateStyle, head.firstElementChild);\n\n /**\n Provides a minimal shim for the <template> element.\n */\n PolyfilledHTMLTemplateElement.prototype = Object.create(HTMLElement.prototype);\n\n\n // if elements do not have `innerHTML` on instances, then\n // templates can be patched by swizzling their prototypes.\n var canProtoPatch =\n !(document.createElement('div').hasOwnProperty('innerHTML'));\n\n /**\n The `decorate` method moves element children to the template's `content`.\n NOTE: there is no support for dynamically adding elements to templates.\n */\n PolyfilledHTMLTemplateElement.decorate = function(template) {\n // if the template is decorated or not in HTML namespace, return fast\n if (template.content ||\n template.namespaceURI !== document.documentElement.namespaceURI) {\n return;\n }\n template.content = contentDoc.createDocumentFragment();\n var child;\n while ((child = template.firstChild)) {\n capturedAppendChild.call(template.content, child);\n }\n // NOTE: prefer prototype patching for performance and\n // because on some browsers (IE11), re-defining `innerHTML`\n // can result in intermittent errors.\n if (canProtoPatch) {\n template.__proto__ = PolyfilledHTMLTemplateElement.prototype;\n } else {\n template.cloneNode = function(deep) {\n return PolyfilledHTMLTemplateElement._cloneNode(this, deep);\n };\n // add innerHTML to template, if possible\n // Note: this throws on Safari 7\n if (canDecorate) {\n try {\n defineInnerHTML(template);\n defineOuterHTML(template);\n } catch (err) {\n canDecorate = false;\n }\n }\n }\n // bootstrap recursively\n PolyfilledHTMLTemplateElement.bootstrap(template.content);\n };\n\n // Taken from https://github.com/jquery/jquery/blob/73d7e6259c63ac45f42c6593da8c2796c6ce9281/src/manipulation/wrapMap.js\n var topLevelWrappingMap = {\n 'option': ['select'],\n 'thead': ['table'],\n 'col': ['colgroup', 'table'],\n 'tr': ['tbody', 'table'],\n 'th': ['tr', 'tbody', 'table'],\n 'td': ['tr', 'tbody', 'table']\n };\n\n var getTagName = function(text) {\n // Taken from https://github.com/jquery/jquery/blob/73d7e6259c63ac45f42c6593da8c2796c6ce9281/src/manipulation/var/rtagName.js\n return ( /<([a-z][^/\\0>\\x20\\t\\r\\n\\f]+)/i.exec(text) || ['', ''])[1].toLowerCase();\n };\n\n var defineInnerHTML = function defineInnerHTML(obj) {\n Object.defineProperty(obj, 'innerHTML', {\n get: function() {\n return getInnerHTML(this);\n },\n set: function(text) {\n // For IE11, wrap the text in the correct (table) context\n var wrap = topLevelWrappingMap[getTagName(text)];\n if (wrap) {\n for (var i = 0; i < wrap.length; i++) {\n text = '<' + wrap[i] + '>' + text + '</' + wrap[i] + '>';\n }\n }\n contentDoc.body.innerHTML = text;\n PolyfilledHTMLTemplateElement.bootstrap(contentDoc);\n while (this.content.firstChild) {\n capturedRemoveChild.call(this.content, this.content.firstChild);\n }\n var body = contentDoc.body;\n // If we had wrapped, get back to the original node\n if (wrap) {\n for (var j = 0; j < wrap.length; j++) {\n body = body.lastChild;\n }\n }\n while (body.firstChild) {\n capturedAppendChild.call(this.content, body.firstChild);\n }\n },\n configurable: true\n });\n };\n\n var defineOuterHTML = function defineOuterHTML(obj) {\n Object.defineProperty(obj, 'outerHTML', {\n get: function() {\n return '<' + TEMPLATE_TAG + '>' + this.innerHTML + '</' + TEMPLATE_TAG + '>';\n },\n set: function(innerHTML) {\n if (this.parentNode) {\n contentDoc.body.innerHTML = innerHTML;\n var docFrag = this.ownerDocument.createDocumentFragment();\n while (contentDoc.body.firstChild) {\n capturedAppendChild.call(docFrag, contentDoc.body.firstChild);\n }\n capturedReplaceChild.call(this.parentNode, docFrag, this);\n } else {\n throw new Error(\"Failed to set the 'outerHTML' property on 'Element': This element has no parent node.\");\n }\n },\n configurable: true\n });\n };\n\n defineInnerHTML(PolyfilledHTMLTemplateElement.prototype);\n defineOuterHTML(PolyfilledHTMLTemplateElement.prototype);\n\n /**\n The `bootstrap` method is called automatically and \"fixes\" all\n <template> elements in the document referenced by the `doc` argument.\n */\n PolyfilledHTMLTemplateElement.bootstrap = function bootstrap(doc) {\n var templates = QSA(doc, TEMPLATE_TAG);\n for (var i=0, l=templates.length, t; (i<l) && (t=templates[i]); i++) {\n PolyfilledHTMLTemplateElement.decorate(t);\n }\n };\n\n // auto-bootstrapping for main document\n document.addEventListener('DOMContentLoaded', function() {\n PolyfilledHTMLTemplateElement.bootstrap(document);\n });\n\n // Patch document.createElement to ensure newly created templates have content\n Document.prototype.createElement = function createElement() {\n var el = capturedCreateElement.apply(this, arguments);\n if (el.localName === 'template') {\n PolyfilledHTMLTemplateElement.decorate(el);\n }\n return el;\n };\n\n DOMParser.prototype.parseFromString = function() {\n var el = capturedParseFromString.apply(this, arguments);\n PolyfilledHTMLTemplateElement.bootstrap(el);\n return el;\n };\n\n Object.defineProperty(HTMLElement.prototype, 'innerHTML', {\n get: function() {\n return getInnerHTML(this);\n },\n set: function(text) {\n capturedHTMLElementInnerHTML.set.call(this, text);\n PolyfilledHTMLTemplateElement.bootstrap(this);\n },\n configurable: true,\n enumerable: true\n });\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#escapingString\n var escapeAttrRegExp = /[&\\u00A0\"]/g;\n var escapeDataRegExp = /[&\\u00A0<>]/g;\n\n var escapeReplace = function(c) {\n switch (c) {\n case '&':\n return '&amp;';\n case '<':\n return '&lt;';\n case '>':\n return '&gt;';\n case '\"':\n return '&quot;';\n case '\\u00A0':\n return '&nbsp;';\n }\n };\n\n var escapeAttr = function(s) {\n return s.replace(escapeAttrRegExp, escapeReplace);\n };\n\n var escapeData = function(s) {\n return s.replace(escapeDataRegExp, escapeReplace);\n };\n\n var makeSet = function(arr) {\n var set = {};\n for (var i = 0; i < arr.length; i++) {\n set[arr[i]] = true;\n }\n return set;\n };\n\n // http://www.whatwg.org/specs/web-apps/current-work/#void-elements\n var voidElements = makeSet([\n 'area',\n 'base',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n ]);\n\n var plaintextParents = makeSet([\n 'style',\n 'script',\n 'xmp',\n 'iframe',\n 'noembed',\n 'noframes',\n 'plaintext',\n 'noscript'\n ]);\n\n /**\n * @param {Node} node\n * @param {Node} parentNode\n * @param {Function=} callback\n */\n var getOuterHTML = function(node, parentNode, callback) {\n switch (node.nodeType) {\n case Node.ELEMENT_NODE: {\n var tagName = node.localName;\n var s = '<' + tagName;\n var attrs = node.attributes;\n for (var i = 0, attr; (attr = attrs[i]); i++) {\n s += ' ' + attr.name + '=\"' + escapeAttr(attr.value) + '\"';\n }\n s += '>';\n if (voidElements[tagName]) {\n return s;\n }\n return s + getInnerHTML(node, callback) + '</' + tagName + '>';\n }\n case Node.TEXT_NODE: {\n var data = /** @type {Text} */ (node).data;\n if (parentNode && plaintextParents[parentNode.localName]) {\n return data;\n }\n return escapeData(data);\n }\n case Node.COMMENT_NODE: {\n return '<!--' + /** @type {Comment} */ (node).data + '-->';\n }\n default: {\n window.console.error(node);\n throw new Error('not implemented');\n }\n }\n };\n\n /**\n * @param {Node} node\n * @param {Function=} callback\n */\n var getInnerHTML = function(node, callback) {\n if (node.localName === 'template') {\n node = /** @type {HTMLTemplateElement} */ (node).content;\n }\n var s = '';\n var c$ = callback ? callback(node) : capturedChildNodes.get.call(node);\n for (var i=0, l=c$.length, child; (i<l) && (child=c$[i]); i++) {\n s += getOuterHTML(child, node, callback);\n }\n return s;\n };\n\n }\n\n // make cloning/importing work!\n if (needsTemplate || needsCloning) {\n\n PolyfilledHTMLTemplateElement._cloneNode = function _cloneNode(template, deep) {\n var clone = capturedCloneNode.call(template, false);\n // NOTE: decorate doesn't auto-fix children because they are already\n // decorated so they need special clone fixup.\n if (this.decorate) {\n this.decorate(clone);\n }\n if (deep) {\n // NOTE: use native clone node to make sure CE's wrapped\n // cloneNode does not cause elements to upgrade.\n capturedAppendChild.call(clone.content, capturedCloneNode.call(template.content, true));\n // now ensure nested templates are cloned correctly.\n fixClonedDom(clone.content, template.content);\n }\n return clone;\n };\n\n // Given a source and cloned subtree, find <template>'s in the cloned\n // subtree and replace them with cloned <template>'s from source.\n // We must do this because only the source templates have proper .content.\n var fixClonedDom = function fixClonedDom(clone, source) {\n // do nothing if cloned node is not an element\n if (!source.querySelectorAll) return;\n // these two lists should be coincident\n var s$ = QSA(source, TEMPLATE_TAG);\n if (s$.length === 0) {\n return;\n }\n var t$ = QSA(clone, TEMPLATE_TAG);\n for (var i=0, l=t$.length, t, s; i<l; i++) {\n s = s$[i];\n t = t$[i];\n if (PolyfilledHTMLTemplateElement && PolyfilledHTMLTemplateElement.decorate) {\n PolyfilledHTMLTemplateElement.decorate(s);\n }\n capturedReplaceChild.call(t.parentNode, cloneNode.call(s, true), t);\n }\n };\n\n // make sure scripts inside of a cloned template are executable\n var fixClonedScripts = function fixClonedScripts(fragment) {\n var scripts = QSA(fragment, scriptSelector);\n for (var ns, s, i = 0; i < scripts.length; i++) {\n s = scripts[i];\n ns = capturedCreateElement.call(document, 'script');\n ns.textContent = s.textContent;\n var attrs = s.attributes;\n for (var ai = 0, a; ai < attrs.length; ai++) {\n a = attrs[ai];\n ns.setAttribute(a.name, a.value);\n }\n capturedReplaceChild.call(s.parentNode, ns, s);\n }\n };\n\n // override all cloning to fix the cloned subtree to contain properly\n // cloned templates.\n var cloneNode = Node.prototype.cloneNode = function cloneNode(deep) {\n var dom;\n // workaround for Edge bug cloning documentFragments\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8619646/\n if (!needsDocFrag && brokenDocFragment && this instanceof DocumentFragment) {\n if (!deep) {\n return this.ownerDocument.createDocumentFragment();\n } else {\n dom = importNode.call(this.ownerDocument, this, true);\n }\n } else if (this.nodeType === Node.ELEMENT_NODE &&\n this.localName === TEMPLATE_TAG &&\n this.namespaceURI == document.documentElement.namespaceURI) {\n dom = PolyfilledHTMLTemplateElement._cloneNode(this, deep);\n } else {\n dom = capturedCloneNode.call(this, deep);\n }\n // template.content is cloned iff `deep`.\n if (deep) {\n fixClonedDom(dom, this);\n }\n return dom;\n };\n\n // NOTE: we are cloning instead of importing <template>'s.\n // However, the ownerDocument of the cloned template will be correct!\n // This is because the native import node creates the right document owned\n // subtree and `fixClonedDom` inserts cloned templates into this subtree,\n // thus updating the owner doc.\n var importNode = Document.prototype.importNode = function importNode(element, deep) {\n deep = deep || false;\n if (element.localName === TEMPLATE_TAG) {\n return PolyfilledHTMLTemplateElement._cloneNode(element, deep);\n } else {\n var dom = capturedImportNode.call(this, element, deep);\n if (deep) {\n fixClonedDom(dom, element);\n fixClonedScripts(dom);\n }\n return dom;\n }\n };\n }\n\n if (needsTemplate) {\n window.HTMLTemplateElement = PolyfilledHTMLTemplateElement;\n }\n\n})();\n","import promiseFinally from './finally';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n this._state = 0;\n this._handled = false;\n this._value = undefined;\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = promiseFinally;\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!arr || typeof arr.length === 'undefined')\n throw new TypeError('Promise.all accepts an array');\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(values) {\n return new Promise(function(resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n (typeof setImmediate === 'function' &&\n function(fn) {\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nexport default Promise;\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n'use strict';\nimport PromisePolyfill from '../node_modules/promise-polyfill/src/index.js';\n\n/*\nAssign the ES6 promise polyfill to window ourselves instead of using the \"auto\" polyfill\nto work around https://github.com/webcomponents/webcomponentsjs/issues/837\n*/\nif (!window.Promise) {\n window.Promise = PromisePolyfill;\n // save Promise API\n /* eslint-disable no-self-assign */\n // PromisePolyfill.prototype['catch'] = PromisePolyfill.prototype.catch;\n PromisePolyfill.prototype['then'] = PromisePolyfill.prototype.then;\n // PromisePolyfill.prototype['finally'] = PromisePolyfill.prototype.finally;\n PromisePolyfill['all'] = PromisePolyfill.all;\n PromisePolyfill['race'] = PromisePolyfill.race;\n PromisePolyfill['resolve'] = PromisePolyfill.resolve;\n PromisePolyfill['reject'] = PromisePolyfill.reject;\n /* eslint-enable */\n\n if (!window.setImmediate) {\n // approach copied from https://github.com/Polymer/polymer/blob/v3.0.2/lib/utils/async.js\n const node = document.createTextNode('');\n const twiddleNode = function twiddleNode() {\n node.textContent = node.textContent.length > 0 ? '' : 'a';\n };\n /** @type {!Array<function():void>} */\n const callbacks = [];\n (new MutationObserver(() => {\n const len = callbacks.length;\n for (let i = 0; i < len; i++) {\n callbacks[i]();\n }\n callbacks.splice(0, len);\n }).observe(node, {characterData: true}));\n\n // set _immediateFn to a MutationObserver for close-to-native timing\n PromisePolyfill._immediateFn = (fn) => {\n callbacks.push(fn);\n twiddleNode();\n }\n }\n}","export default function(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n return constructor.resolve(callback()).then(function() {\n return constructor.reject(reason);\n });\n }\n );\n}\n","\"use strict\";\n\nvar globalSymbolRegistryList = {};\n\n// Aliases & Helpers\nvar make = Object.create;\nvar defProps = Object.defineProperties;\nvar defProp = Object.defineProperty;\nvar defValue = function (value) {\n var opts = arguments[1] === undefined ? {} : arguments[1];\n return {\n value: value,\n configurable: !!opts.c,\n writable: !!opts.w,\n enumerable: !!opts.e\n };\n};\nvar isSymbol = function (symbol) {\n return symbol && symbol[xSymbol.toStringTag] === \"Symbol\";\n};\n\nvar supportsAccessors = undefined;\ntry {\n var x = defProp({}, \"y\", { get: function () {\n return 1;\n } });\n supportsAccessors = x.y === 1;\n} catch (e) {\n supportsAccessors = false;\n}\n\nvar id = {};\nvar uid = function (desc) {\n desc = String(desc);\n var x = \"\";\n var i = 0;\n while (id[desc + x]) {\n x = i += 1;\n }\n id[desc + x] = 1;\n\n var tag = \"Symbol(\" + desc + \"\" + x + \")\";\n\n /* istanbul ignore else */\n if (supportsAccessors) {\n // Make the symbols hidden to pre-es6 code\n defProp(Object.prototype, tag, {\n get: undefined,\n set: function (value) {\n defProp(this, tag, defValue(value, { c: true, w: true }));\n },\n configurable: true,\n enumerable: false\n });\n }\n\n return tag;\n};\n\n// The base symbol\nvar SymbolProto = make(null);\n\n// 19.4.1.1\nfunction xSymbol(descString) {\n if (this instanceof xSymbol) {\n throw new TypeError(\"Symbol is not a constructor\");\n }\n\n descString = descString === undefined ? \"\" : String(descString);\n\n var tag = uid(descString);\n\n /* istanbul ignore next */\n if (!supportsAccessors) {\n return tag;\n }\n\n return make(SymbolProto, {\n __description__: defValue(descString),\n __tag__: defValue(tag)\n });\n}\n\ndefProps(xSymbol, {\n // 19.4.2.1\n \"for\": defValue(function (key) {\n var stringKey = String(key);\n\n if (globalSymbolRegistryList[stringKey]) {\n return globalSymbolRegistryList[stringKey];\n }\n\n var symbol = xSymbol(stringKey);\n globalSymbolRegistryList[stringKey] = symbol;\n\n return symbol;\n }),\n\n // 19.4.2.5\n keyFor: defValue(function (sym) {\n if (supportsAccessors && !isSymbol(sym)) {\n throw new TypeError(\"\" + sym + \" is not a symbol\");\n }\n\n for (var key in globalSymbolRegistryList) {\n if (globalSymbolRegistryList[key] === sym) {\n return supportsAccessors ? globalSymbolRegistryList[key].__description__ : globalSymbolRegistryList[key].substr(7, globalSymbolRegistryList[key].length - 8);\n }\n }\n })\n});\n\n// 6.1.5.1\ndefProps(xSymbol, {\n hasInstance: defValue(xSymbol(\"hasInstance\")),\n isConcatSpreadable: defValue(xSymbol(\"isConcatSpreadable\")),\n iterator: defValue(xSymbol(\"iterator\")),\n match: defValue(xSymbol(\"match\")),\n replace: defValue(xSymbol(\"replace\")),\n search: defValue(xSymbol(\"search\")),\n species: defValue(xSymbol(\"species\")),\n split: defValue(xSymbol(\"split\")),\n toPrimitive: defValue(xSymbol(\"toPrimitive\")),\n toStringTag: defValue(xSymbol(\"toStringTag\")),\n unscopables: defValue(xSymbol(\"unscopables\"))\n});\n\n// 19.4.3\ndefProps(SymbolProto, {\n constructor: defValue(xSymbol),\n\n // 19.4.3.2\n toString: defValue(function () {\n return this.__tag__;\n }),\n\n // 19.4.3.3\n valueOf: defValue(function () {\n return \"Symbol(\" + this.__description__ + \")\";\n })\n});\n\n// 19.4.3.5\n/* istanbul ignore else */\nif (supportsAccessors) {\n defProp(SymbolProto, xSymbol.toStringTag, defValue(\"Symbol\", { c: true }));\n}\n\nmodule.exports = typeof Symbol === \"function\" ? Symbol : xSymbol;\n\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n'use strict';\n\n// Establish scope.\nwindow['WebComponents'] = window['WebComponents'] || {'flags':{}};\n\n// loading script\nlet file = 'webcomponents-bundle';\nlet script = document.querySelector('script[src*=\"' + file + '\"]');\nlet flagMatcher = /wc-(.+)/;\n\n// Flags. Convert url arguments to flags\nlet flags = {};\nif (!flags['noOpts']) {\n // from url\n location.search.slice(1).split('&').forEach(function(option) {\n let parts = option.split('=');\n let match;\n if (parts[0] && (match = parts[0].match(flagMatcher))) {\n flags[match[1]] = parts[1] || true;\n }\n });\n // from script\n if (script) {\n for (let i=0, a; (a=script.attributes[i]); i++) {\n if (a.name !== 'src') {\n flags[a.name] = a.value || true;\n }\n }\n }\n // log flags\n if (flags['log'] && flags['log']['split']) {\n let parts = flags['log'].split(',');\n flags['log'] = {};\n parts.forEach(function(f) {\n flags['log'][f] = true;\n });\n } else {\n flags['log'] = {};\n }\n}\n\n// exports\nwindow['WebComponents']['flags'] = flags;\nlet forceShady = flags['shadydom'];\nif (forceShady) {\n window['ShadyDOM'] = window['ShadyDOM'] || {};\n window['ShadyDOM']['force'] = forceShady;\n}\n\nlet forceCE = flags['register'] || flags['ce'];\nif (forceCE && window['customElements']) {\n window['customElements']['forcePolyfill'] = forceCE;\n}","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n\nexport class ShadyData {\n constructor() {\n /** @type {ShadowRoot} */\n this.root = null;\n /** @type {ShadowRoot} */\n this.publicRoot = null;\n this.dirty = false;\n this.observer = null;\n /** @type {Array<Node>} */\n this.assignedNodes = null;\n /** @type {Element} */\n this.assignedSlot = null;\n /** @type {Array<Node>} */\n this._previouslyAssignedNodes = null;\n /** @type {Element} */\n this._prevAssignedSlot = null;\n /** @type {Array<Node>} */\n this.flattenedNodes = null;\n this.ownerShadyRoot = undefined;\n /** @type {Node|undefined} */\n this.parentNode = undefined;\n /** @type {Node|undefined} */\n this.firstChild = undefined;\n /** @type {Node|undefined} */\n this.lastChild = undefined;\n /** @type {Node|undefined} */\n this.previousSibling = undefined;\n /** @type {Node|undefined} */\n this.nextSibling = undefined;\n /** @type {Array<Node>|undefined} */\n this.childNodes = undefined;\n this.__outsideAccessors = false;\n this.__insideAccessors = false;\n this.__onCallbackListeners = {};\n }\n\n toJSON() {\n return {};\n }\n}\n\nexport function ensureShadyDataForNode(node) {\n if (!node.__shady) {\n node.__shady = new ShadyData();\n }\n return node.__shady;\n}\n\nexport function shadyDataForNode(node) {\n return node && node.__shady;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nimport {shadyDataForNode} from './shady-data.js';\n\nexport let settings = window['ShadyDOM'] || {};\n\nsettings.hasNativeShadowDOM = Boolean(Element.prototype.attachShadow && Node.prototype.getRootNode);\n\nlet desc = Object.getOwnPropertyDescriptor(Node.prototype, 'firstChild');\n\nsettings.hasDescriptors = Boolean(desc && desc.configurable && desc.get);\nsettings.inUse = settings['force'] || !settings.hasNativeShadowDOM;\n\n// Default to using native accessors (instead of treewalker) only for\n// IE/Edge where they are faster.\nconst IS_IE = navigator.userAgent.match('Trident');\nconst IS_EDGE = navigator.userAgent.match('Edge');\nif (settings.useNativeAccessors === undefined) {\n settings.useNativeAccessors = settings.hasDescriptors && (IS_IE || IS_EDGE);\n}\n\nexport function isTrackingLogicalChildNodes(node) {\n const nodeData = shadyDataForNode(node);\n return (nodeData && nodeData.firstChild !== undefined);\n}\n\nexport function isShadyRoot(obj) {\n return Boolean(obj._localName === 'ShadyRoot');\n}\n\nexport function ownerShadyRootForNode(node) {\n let root = node.getRootNode();\n if (isShadyRoot(root)) {\n return root;\n }\n}\n\nlet p = Element.prototype;\nlet matches = p.matches || p.matchesSelector ||\n p.mozMatchesSelector || p.msMatchesSelector ||\n p.oMatchesSelector || p.webkitMatchesSelector;\n\nexport function matchesSelector(element, selector) {\n return matches.call(element, selector);\n}\n\nfunction copyOwnProperty(name, source, target) {\n let pd = Object.getOwnPropertyDescriptor(source, name);\n if (pd) {\n Object.defineProperty(target, name, pd);\n }\n}\n\nexport function extend(target, source) {\n if (target && source) {\n let n$ = Object.getOwnPropertyNames(source);\n for (let i=0, n; (i<n$.length) && (n=n$[i]); i++) {\n copyOwnProperty(n, source, target);\n }\n }\n return target || source;\n}\n\nexport function extendAll(target, ...sources) {\n for (let i=0; i < sources.length; i++) {\n extend(target, sources[i]);\n }\n return target;\n}\n\nexport function mixin(target, source) {\n for (var i in source) {\n target[i] = source[i];\n }\n return target;\n}\n\nexport function patchPrototype(obj, mixin) {\n let proto = Object.getPrototypeOf(obj);\n if (!proto.hasOwnProperty('__patchProto')) {\n let patchProto = Object.create(proto);\n patchProto.__sourceProto = proto;\n extend(patchProto, mixin);\n proto['__patchProto'] = patchProto;\n }\n // old browsers don't have setPrototypeOf\n obj.__proto__ = proto['__patchProto'];\n}\n\n\nlet twiddle = document.createTextNode('');\nlet content = 0;\nlet queue = [];\nnew MutationObserver(() => {\n while (queue.length) {\n // catch errors in user code...\n try {\n queue.shift()();\n } catch(e) {\n // enqueue another record and throw\n twiddle.textContent = content++;\n throw(e);\n }\n }\n}).observe(twiddle, {characterData: true});\n\n// use MutationObserver to get microtask async timing.\nexport function microtask(callback) {\n queue.push(callback);\n twiddle.textContent = content++;\n}\n\nexport const hasDocumentContains = Boolean(document.contains);\n\nexport function contains(container, node) {\n while (node) {\n if (node == container) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\nfunction getNodeHTMLCollectionName(node) {\n return node.getAttribute('id') || node.getAttribute('name');\n}\n\nfunction isValidHTMLCollectionName(name) {\n return name !== 'length' && isNaN(name);\n}\n\nexport function createPolyfilledHTMLCollection(nodes) {\n // Note: loop in reverse so that the first named item matches the named property\n for (let l = nodes.length - 1; l >= 0; l--) {\n const node = nodes[l];\n const name = getNodeHTMLCollectionName(node);\n\n if (name && isValidHTMLCollectionName(name)) {\n nodes[name] = node;\n }\n }\n nodes.item = function(index) {\n return nodes[index];\n }\n nodes.namedItem = function(name) {\n if (isValidHTMLCollectionName(name) && nodes[name]) {\n return nodes[name];\n }\n\n for (const node of nodes) {\n const nodeName = getNodeHTMLCollectionName(node);\n\n if (nodeName == name) {\n return node;\n }\n }\n\n return null;\n };\n return nodes;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\n\n// render enqueuer/flusher\nlet flushList = [];\nlet scheduled;\nexport function enqueue(callback) {\n if (!scheduled) {\n scheduled = true;\n utils.microtask(flush);\n }\n flushList.push(callback);\n}\n\nexport function flush() {\n scheduled = false;\n let didFlush = Boolean(flushList.length);\n while (flushList.length) {\n flushList.shift()();\n }\n return didFlush;\n}\n\nflush['list'] = flushList;\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {ensureShadyDataForNode} from './shady-data.js';\n\nclass AsyncObserver {\n\n constructor() {\n this._scheduled = false;\n this.addedNodes = [];\n this.removedNodes = [];\n this.callbacks = new Set();\n }\n\n schedule() {\n if (!this._scheduled) {\n this._scheduled = true;\n utils.microtask(() => {\n this.flush();\n });\n }\n }\n\n flush() {\n if (this._scheduled) {\n this._scheduled = false;\n let mutations = this.takeRecords();\n if (mutations.length) {\n this.callbacks.forEach(function(cb) {\n cb(mutations);\n });\n }\n }\n }\n\n takeRecords() {\n if (this.addedNodes.length || this.removedNodes.length) {\n let mutations = [{\n addedNodes: this.addedNodes,\n removedNodes: this.removedNodes\n }];\n this.addedNodes = [];\n this.removedNodes = [];\n return mutations;\n }\n return [];\n }\n\n}\n\n// TODO(sorvell): consider instead polyfilling MutationObserver\n// directly so that users do not have to fork their code.\n// Supporting the entire api may be challenging: e.g. filtering out\n// removed nodes in the wrong scope and seeing non-distributing\n// subtree child mutations.\nexport let observeChildren = function(node, callback) {\n const sd = ensureShadyDataForNode(node);\n if (!sd.observer) {\n sd.observer = new AsyncObserver();\n }\n sd.observer.callbacks.add(callback);\n let observer = sd.observer;\n return {\n _callback: callback,\n _observer: observer,\n _node: node,\n takeRecords() {\n return observer.takeRecords()\n }\n };\n}\n\nexport let unobserveChildren = function(handle) {\n let observer = handle && handle._observer;\n if (observer) {\n observer.callbacks.delete(handle._callback);\n if (!observer.callbacks.size) {\n ensureShadyDataForNode(handle._node).observer = null;\n }\n }\n}\n\nexport function filterMutations(mutations, target) {\n /** @const {Node} */\n const targetRootNode = target.getRootNode();\n return mutations.map(function(mutation) {\n /** @const {boolean} */\n const mutationInScope = (targetRootNode === mutation.target.getRootNode());\n if (mutationInScope && mutation.addedNodes) {\n let nodes = Array.from(mutation.addedNodes).filter(function(n) {\n return (targetRootNode === n.getRootNode());\n });\n if (nodes.length) {\n mutation = Object.create(mutation);\n Object.defineProperty(mutation, 'addedNodes', {\n value: nodes,\n configurable: true\n });\n return mutation;\n }\n } else if (mutationInScope) {\n return mutation;\n }\n }).filter(function(m) { return m});\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nexport let appendChild = Element.prototype.appendChild;\nexport let insertBefore = Element.prototype.insertBefore;\nexport let replaceChild = Element.prototype.replaceChild;\nexport let removeChild = Element.prototype.removeChild;\nexport let setAttribute = Element.prototype.setAttribute;\nexport let removeAttribute = Element.prototype.removeAttribute;\nexport let cloneNode = Element.prototype.cloneNode;\nexport let importNode = Document.prototype.importNode;\nexport let addEventListener = Element.prototype.addEventListener;\nexport let removeEventListener = Element.prototype.removeEventListener;\nexport let windowAddEventListener = Window.prototype.addEventListener;\nexport let windowRemoveEventListener = Window.prototype.removeEventListener;\nexport let dispatchEvent = Element.prototype.dispatchEvent;\nexport let contains = Node.prototype.contains || HTMLElement.prototype.contains;\nexport let getElementById = Document.prototype.getElementById;\nexport let elementQuerySelector = Element.prototype.querySelector;\nexport let fragmentQuerySelector = DocumentFragment.prototype.querySelector;\nexport let documentQuerySelector = Document.prototype.querySelector;\nexport let querySelector = /** @this {Element|Document|DocumentFragment} */ function(selector) {\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n return elementQuerySelector.call(/** @type {Element} */ (this), selector);\n case Node.DOCUMENT_NODE:\n return documentQuerySelector.call(/** @type {Document} */ (this), selector);\n default:\n return fragmentQuerySelector.call(this, selector);\n }\n};\nexport let elementQuerySelectorAll = Element.prototype.querySelectorAll;\nexport let fragmentQuerySelectorAll = DocumentFragment.prototype.querySelectorAll;\nexport let documentQuerySelectorAll = Document.prototype.querySelectorAll;\nexport let querySelectorAll = /** @this {Element|Document|DocumentFragment} */ function(selector) {\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n return elementQuerySelectorAll.call(/** @type {Element} */ (this), selector);\n case Node.DOCUMENT_NODE:\n return documentQuerySelectorAll.call(/** @type {Document} */ (this), selector);\n default:\n return fragmentQuerySelectorAll.call(this, selector);\n }\n};\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n// Cribbed from ShadowDOM polyfill\n// https://github.com/webcomponents/webcomponentsjs/blob/master/src/ShadowDOM/wrappers/HTMLElement.js#L28\n/////////////////////////////////////////////////////////////////////////////\n// innerHTML and outerHTML\n\n// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#escapingString\nlet escapeAttrRegExp = /[&\\u00A0\"]/g;\nlet escapeDataRegExp = /[&\\u00A0<>]/g;\n\nfunction escapeReplace(c) {\n switch (c) {\n case '&':\n return '&amp;';\n case '<':\n return '&lt;';\n case '>':\n return '&gt;';\n case '\"':\n return '&quot;';\n case '\\u00A0':\n return '&nbsp;';\n }\n}\n\nfunction escapeAttr(s) {\n return s.replace(escapeAttrRegExp, escapeReplace);\n}\n\nfunction escapeData(s) {\n return s.replace(escapeDataRegExp, escapeReplace);\n}\n\nfunction makeSet(arr) {\n let set = {};\n for (let i = 0; i < arr.length; i++) {\n set[arr[i]] = true;\n }\n return set;\n}\n\n// http://www.whatwg.org/specs/web-apps/current-work/#void-elements\nlet voidElements = makeSet([\n 'area',\n 'base',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]);\n\nlet plaintextParents = makeSet([\n 'style',\n 'script',\n 'xmp',\n 'iframe',\n 'noembed',\n 'noframes',\n 'plaintext',\n 'noscript'\n]);\n\n/**\n * @param {Node} node\n * @param {Node} parentNode\n * @param {Function=} callback\n */\nexport function getOuterHTML(node, parentNode, callback) {\n switch (node.nodeType) {\n case Node.ELEMENT_NODE: {\n let tagName = node.localName;\n let s = '<' + tagName;\n let attrs = node.attributes;\n for (let i = 0, attr; (attr = attrs[i]); i++) {\n s += ' ' + attr.name + '=\"' + escapeAttr(attr.value) + '\"';\n }\n s += '>';\n if (voidElements[tagName]) {\n return s;\n }\n return s + getInnerHTML(node, callback) + '</' + tagName + '>';\n }\n case Node.TEXT_NODE: {\n let data = /** @type {Text} */ (node).data;\n if (parentNode && plaintextParents[parentNode.localName]) {\n return data;\n }\n return escapeData(data);\n }\n case Node.COMMENT_NODE: {\n return '<!--' + /** @type {Comment} */ (node).data + '-->';\n }\n default: {\n window.console.error(node);\n throw new Error('not implemented');\n }\n }\n}\n\n/**\n * @param {Node} node\n * @param {Function=} callback\n */\nexport function getInnerHTML(node, callback) {\n if (node.localName === 'template') {\n node = /** @type {HTMLTemplateElement} */ (node).content;\n }\n let s = '';\n let c$ = callback ? callback(node) : node.childNodes;\n for (let i=0, l=c$.length, child; (i<l) && (child=c$[i]); i++) {\n s += getOuterHTML(child, node, callback);\n }\n return s;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {getInnerHTML} from './innerHTML.js';\nimport * as utils from './utils.js';\n\nlet nodeWalker = document.createTreeWalker(document, NodeFilter.SHOW_ALL,\n null, false);\n\nlet elementWalker = document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT,\n null, false);\n\nexport function parentNode(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.parentNode();\n}\n\nexport function firstChild(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.firstChild();\n}\n\nexport function lastChild(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.lastChild();\n}\n\nexport function previousSibling(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.previousSibling();\n}\n\nexport function nextSibling(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.nextSibling();\n}\n\nexport function childNodes(node) {\n let nodes = [];\n nodeWalker.currentNode = node;\n let n = nodeWalker.firstChild();\n while (n) {\n nodes.push(n);\n n = nodeWalker.nextSibling();\n }\n return nodes;\n}\n\nexport function parentElement(node) {\n elementWalker.currentNode = node;\n return elementWalker.parentNode();\n}\n\nexport function firstElementChild(node) {\n elementWalker.currentNode = node;\n return elementWalker.firstChild();\n}\n\nexport function lastElementChild(node) {\n elementWalker.currentNode = node;\n return elementWalker.lastChild();\n}\n\nexport function previousElementSibling(node) {\n elementWalker.currentNode = node;\n return elementWalker.previousSibling();\n}\n\nexport function nextElementSibling(node) {\n elementWalker.currentNode = node;\n return elementWalker.nextSibling();\n}\n\nexport function children(node) {\n let nodes = [];\n elementWalker.currentNode = node;\n let n = elementWalker.firstChild();\n while (n) {\n nodes.push(n);\n n = elementWalker.nextSibling();\n }\n return utils.createPolyfilledHTMLCollection(nodes);\n}\n\nexport function innerHTML(node) {\n return getInnerHTML(node, (n) => childNodes(n));\n}\n\nexport function textContent(node) {\n /* eslint-disable no-case-declarations */\n switch (node.nodeType) {\n case Node.ELEMENT_NODE:\n case Node.DOCUMENT_FRAGMENT_NODE:\n let textWalker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT,\n null, false);\n let content = '', n;\n while ( (n = textWalker.nextNode()) ) {\n // TODO(sorvell): can't use textContent since we patch it on Node.prototype!\n // However, should probably patch it only on element.\n content += n.nodeValue;\n }\n return content;\n default:\n return node.nodeValue;\n }\n /* eslint-enable */\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nimport * as utils from './utils.js';\n\nconst hasDescriptors = utils.settings.hasDescriptors;\n\n// Find descriptor on the \"lowest\" native prototype. Safe as these are not\n// overridden and we call these on nodes.\nconst nativeProtos = [Node.prototype, Element.prototype, HTMLElement.prototype];\n// note, avoid Array.find for IE11 compat.\nfunction findNativeProtoWithDescriptor(name) {\n for (let i=0; i < nativeProtos.length; i++) {\n const proto = nativeProtos[i];\n if (proto.hasOwnProperty(name)) {\n return proto;\n }\n }\n}\nfunction findNodeDescriptor(name) {\n const proto = findNativeProtoWithDescriptor(name);\n if (!proto) {\n throw Error(`Could not find descriptor for ${name}`);\n }\n return Object.getOwnPropertyDescriptor(proto, name);\n}\n\nexport const nodeAccessors = hasDescriptors ? {\n parentNode: findNodeDescriptor('parentNode'),\n firstChild: findNodeDescriptor('firstChild'),\n lastChild: findNodeDescriptor('lastChild'),\n previousSibling: findNodeDescriptor('previousSibling'),\n nextSibling: findNodeDescriptor('nextSibling'),\n childNodes: findNodeDescriptor('childNodes'),\n parentElement: findNodeDescriptor('parentElement'),\n previousElementSibling: findNodeDescriptor('previousElementSibling'),\n nextElementSibling: findNodeDescriptor('nextElementSibling'),\n innerHTML: findNodeDescriptor('innerHTML'),\n textContent: findNodeDescriptor('textContent'),\n firstElementChild: findNodeDescriptor('firstElementChild'),\n lastElementChild: findNodeDescriptor('lastElementChild'),\n children: findNodeDescriptor('children'),\n} : {};\n\nexport const fragmentAccessors = hasDescriptors ? {\n firstElementChild: Object.getOwnPropertyDescriptor(\n DocumentFragment.prototype, 'firstElementChild'),\n lastElementChild: Object.getOwnPropertyDescriptor(\n DocumentFragment.prototype, 'lastElementChild'),\n children: Object.getOwnPropertyDescriptor(\n DocumentFragment.prototype, 'children')\n} : {};\n\nexport const documentAccessors = hasDescriptors ? {\n firstElementChild: Object.getOwnPropertyDescriptor(\n Document.prototype, 'firstElementChild'),\n lastElementChild: Object.getOwnPropertyDescriptor(\n Document.prototype, 'lastElementChild'),\n children: Object.getOwnPropertyDescriptor(\n Document.prototype, 'children')\n} : {};\n\nexport function parentNode(node) {\n return nodeAccessors.parentNode.get.call(node);\n}\n\nexport function firstChild(node) {\n return nodeAccessors.firstChild.get.call(node);\n}\n\nexport function lastChild(node) {\n return nodeAccessors.lastChild.get.call(node);\n}\n\nexport function previousSibling(node) {\n return nodeAccessors.previousSibling.get.call(node);\n}\n\nexport function nextSibling(node) {\n return nodeAccessors.nextSibling.get.call(node);\n}\n\nexport function childNodes(node) {\n return Array.prototype.slice.call(nodeAccessors.childNodes.get.call(node));\n}\n\nexport function parentElement(node) {\n return nodeAccessors.parentElement.get.call(node);\n}\n\nexport function previousElementSibling(node) {\n return nodeAccessors.previousElementSibling.get.call(node);\n}\n\nexport function nextElementSibling(node) {\n return nodeAccessors.nextElementSibling.get.call(node);\n}\n\nexport function innerHTML(node) {\n return nodeAccessors.innerHTML.get.call(node);\n}\n\nexport function textContent(node) {\n return nodeAccessors.textContent.get.call(node);\n}\n\nexport function children(node) {\n switch (node.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n return fragmentAccessors.children.get.call(node);\n case Node.DOCUMENT_NODE:\n return documentAccessors.children.get.call(node);\n default:\n return nodeAccessors.children.get.call(node);\n }\n}\n\nexport function firstElementChild(node) {\n switch (node.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n return fragmentAccessors.firstElementChild.get.call(node);\n case Node.DOCUMENT_NODE:\n return documentAccessors.firstElementChild.get.call(node);\n default:\n return nodeAccessors.firstElementChild.get.call(node);\n }\n}\n\nexport function lastElementChild(node) {\n switch (node.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n return fragmentAccessors.lastElementChild.get.call(node);\n case Node.DOCUMENT_NODE:\n return documentAccessors.lastElementChild.get.call(node);\n default:\n return nodeAccessors.lastElementChild.get.call(node);\n }\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as nativeTreeWalker from './native-tree-walker.js';\nimport * as nativeTreeAccessors from './native-tree-accessors.js';\nimport * as utils from './utils.js';\n\nexport const accessors = utils.settings.useNativeAccessors ?\n nativeTreeAccessors : nativeTreeWalker;","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {getInnerHTML} from './innerHTML.js';\nimport {accessors as nativeTree} from './native-tree.js';\nimport {nodeAccessors as nativeAccessors} from './native-tree-accessors.js';\nimport {contains as nativeContains} from './native-methods.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nfunction clearNode(node) {\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n}\n\nconst hasDescriptors = utils.settings.hasDescriptors;\nconst inertDoc = document.implementation.createHTMLDocument('inert');\n\nconst nativeIsConnectedAccessors =\n/** @type {ObjectPropertyDescriptor} */(\n Object.getOwnPropertyDescriptor(Node.prototype, 'isConnected')\n);\n\nconst nativeIsConnected = nativeIsConnectedAccessors && nativeIsConnectedAccessors.get;\n\nconst nativeActiveElementDescriptor =\n /** @type {ObjectPropertyDescriptor} */(\n Object.getOwnPropertyDescriptor(Document.prototype, 'activeElement')\n );\nfunction getDocumentActiveElement() {\n if (nativeActiveElementDescriptor && nativeActiveElementDescriptor.get) {\n return nativeActiveElementDescriptor.get.call(document);\n } else if (!utils.settings.hasDescriptors) {\n return document.activeElement;\n }\n}\n\nfunction activeElementForNode(node) {\n let active = getDocumentActiveElement();\n // In IE11, activeElement might be an empty object if the document is\n // contained in an iframe.\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10998788/\n if (!active || !active.nodeType) {\n return null;\n }\n let isShadyRoot = !!(utils.isShadyRoot(node));\n if (node !== document) {\n // If this node isn't a document or shady root, then it doesn't have\n // an active element.\n if (!isShadyRoot) {\n return null;\n }\n // If this shady root's host is the active element or the active\n // element is not a descendant of the host (in the composed tree),\n // then it doesn't have an active element.\n if (node.host === active ||\n !nativeContains.call(node.host, active)) {\n return null;\n }\n }\n // This node is either the document or a shady root of which the active\n // element is a (composed) descendant of its host; iterate upwards to\n // find the active element's most shallow host within it.\n let activeRoot = utils.ownerShadyRootForNode(active);\n while (activeRoot && activeRoot !== node) {\n active = activeRoot.host;\n activeRoot = utils.ownerShadyRootForNode(active);\n }\n if (node === document) {\n // This node is the document, so activeRoot should be null.\n return activeRoot ? null : active;\n } else {\n // This node is a non-document shady root, and it should be\n // activeRoot.\n return activeRoot === node ? active : null;\n }\n}\n\nlet OutsideAccessors = {\n\n parentElement: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n let l = nodeData && nodeData.parentNode;\n if (l && l.nodeType !== Node.ELEMENT_NODE) {\n l = null;\n }\n return l !== undefined ? l : nativeTree.parentElement(this);\n },\n configurable: true\n },\n\n parentNode: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.parentNode;\n return l !== undefined ? l : nativeTree.parentNode(this);\n },\n configurable: true\n },\n\n nextSibling: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.nextSibling;\n return l !== undefined ? l : nativeTree.nextSibling(this);\n },\n configurable: true\n },\n\n previousSibling: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.previousSibling;\n return l !== undefined ? l : nativeTree.previousSibling(this);\n },\n configurable: true\n },\n\n // fragment, element, document\n nextElementSibling: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.nextSibling !== undefined) {\n let n = this.nextSibling;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.nextSibling;\n }\n return n;\n } else {\n return nativeTree.nextElementSibling(this);\n }\n },\n configurable: true\n },\n\n previousElementSibling: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.previousSibling !== undefined) {\n let n = this.previousSibling;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.previousSibling;\n }\n return n;\n } else {\n return nativeTree.previousElementSibling(this);\n }\n },\n configurable: true\n }\n\n};\n\nexport const ClassNameAccessor = {\n className: {\n /**\n * @this {HTMLElement}\n */\n get() {\n return this.getAttribute('class') || '';\n },\n /**\n * @this {HTMLElement}\n */\n set(value) {\n this.setAttribute('class', value);\n },\n configurable: true\n }\n}\n\nexport const IsConnectedAccessor = {\n\n isConnected: {\n /**\n * @this {Node}\n */\n get() {\n if (nativeIsConnected && nativeIsConnected.call(this)) {\n return true;\n }\n if (this.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {\n return false;\n }\n // Fast path for distributed nodes.\n const ownerDocument = this.ownerDocument;\n if (utils.hasDocumentContains) {\n if (nativeContains.call(ownerDocument, this)) {\n return true;\n }\n } else if (ownerDocument.documentElement &&\n nativeContains.call(ownerDocument.documentElement, this)) {\n return true;\n }\n // Slow path for non-distributed nodes.\n let node = this;\n while (node && !(node instanceof Document)) {\n node = node.parentNode || (utils.isShadyRoot(node) ? /** @type {ShadowRoot} */(node).host : undefined);\n }\n return !!(node && node instanceof Document);\n },\n configurable: true\n }\n};\n\nlet InsideAccessors = {\n\n childNodes: {\n /**\n * @this {HTMLElement}\n */\n get() {\n let childNodes;\n if (utils.isTrackingLogicalChildNodes(this)) {\n const nodeData = shadyDataForNode(this);\n if (!nodeData.childNodes) {\n nodeData.childNodes = [];\n for (let n=this.firstChild; n; n=n.nextSibling) {\n nodeData.childNodes.push(n);\n }\n }\n childNodes = nodeData.childNodes;\n } else {\n childNodes = nativeTree.childNodes(this);\n }\n childNodes.item = function(index) {\n return childNodes[index];\n }\n return childNodes;\n },\n configurable: true\n },\n\n childElementCount: {\n /** @this {HTMLElement} */\n get() {\n return this.children.length;\n },\n configurable: true\n },\n\n firstChild: {\n /** @this {HTMLElement} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.firstChild;\n return l !== undefined ? l : nativeTree.firstChild(this);\n },\n configurable: true\n },\n\n lastChild: {\n /** @this {HTMLElement} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.lastChild;\n return l !== undefined ? l : nativeTree.lastChild(this);\n },\n configurable: true\n },\n\n textContent: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (utils.isTrackingLogicalChildNodes(this)) {\n let tc = [];\n for (let i = 0, cn = this.childNodes, c; (c = cn[i]); i++) {\n if (c.nodeType !== Node.COMMENT_NODE) {\n tc.push(c.textContent);\n }\n }\n return tc.join('');\n } else {\n return nativeTree.textContent(this);\n }\n },\n /**\n * @this {HTMLElement}\n * @param {string} text\n */\n set(text) {\n if (typeof text === 'undefined' || text === null) {\n text = ''\n }\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n case Node.DOCUMENT_FRAGMENT_NODE:\n if (!utils.isTrackingLogicalChildNodes(this) && hasDescriptors) {\n // may be removing a nested slot but fast path if we know we are not.\n const firstChild = this.firstChild;\n if (firstChild != this.lastChild ||\n (firstChild && firstChild.nodeType != Node.TEXT_NODE)) {\n clearNode(this);\n }\n nativeAccessors.textContent.set.call(this, text);\n } else {\n clearNode(this);\n // Document fragments must have no childnodes if setting a blank string\n if (text.length > 0 || this.nodeType === Node.ELEMENT_NODE) {\n this.appendChild(document.createTextNode(text));\n }\n }\n break;\n default:\n // TODO(sorvell): can't do this if patch nodeValue.\n this.nodeValue = text;\n break;\n }\n },\n configurable: true\n },\n\n // fragment, element, document\n firstElementChild: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.firstChild !== undefined) {\n let n = this.firstChild;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.nextSibling;\n }\n return n;\n } else {\n return nativeTree.firstElementChild(this);\n }\n },\n configurable: true\n },\n\n lastElementChild: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.lastChild !== undefined) {\n let n = this.lastChild;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.previousSibling;\n }\n return n;\n } else {\n return nativeTree.lastElementChild(this);\n }\n },\n configurable: true\n },\n\n children: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (!utils.isTrackingLogicalChildNodes(this)) {\n return nativeTree.children(this);\n }\n return utils.createPolyfilledHTMLCollection(Array.prototype.filter.call(this.childNodes, function(n) {\n return (n.nodeType === Node.ELEMENT_NODE);\n }));\n },\n configurable: true\n },\n\n // element (HTMLElement on IE11)\n innerHTML: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (utils.isTrackingLogicalChildNodes(this)) {\n const content = this.localName === 'template' ?\n /** @type {HTMLTemplateElement} */(this).content : this;\n return getInnerHTML(content);\n } else {\n return nativeTree.innerHTML(this);\n }\n },\n /**\n * @this {HTMLElement}\n */\n set(text) {\n const content = this.localName === 'template' ?\n /** @type {HTMLTemplateElement} */(this).content : this;\n clearNode(content);\n const containerName = this.localName || 'div';\n let htmlContainer;\n if (!this.namespaceURI || this.namespaceURI === inertDoc.namespaceURI) {\n htmlContainer = inertDoc.createElement(containerName);\n } else {\n htmlContainer = inertDoc.createElementNS(this.namespaceURI, containerName);\n }\n if (hasDescriptors) {\n nativeAccessors.innerHTML.set.call(htmlContainer, text);\n } else {\n htmlContainer.innerHTML = text;\n }\n const newContent = this.localName === 'template' ?\n /** @type {HTMLTemplateElement} */(htmlContainer).content : htmlContainer;\n while (newContent.firstChild) {\n content.appendChild(newContent.firstChild);\n }\n },\n configurable: true\n }\n\n};\n\n// Note: Can be patched on element prototype on all browsers.\n// Must be patched on instance on browsers that support native Shadow DOM\n// but do not have builtin accessors (old Chrome).\nexport let ShadowRootAccessor = {\n\n shadowRoot: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n return nodeData && nodeData.publicRoot || null;\n },\n configurable: true\n }\n};\n\n// Note: Can be patched on document prototype on browsers with builtin accessors.\n// Must be patched separately on simulated ShadowRoot.\n// Must be patched as `_activeElement` on browsers without builtin accessors.\nexport let ActiveElementAccessor = {\n\n activeElement: {\n /**\n * @this {HTMLElement}\n */\n get() {\n return activeElementForNode(this);\n },\n /**\n * @this {HTMLElement}\n */\n set() {},\n configurable: true\n }\n\n};\n\n// patch a group of descriptors on an object only if it exists or if the `force`\n// argument is true.\n/**\n * @param {!Object} obj\n * @param {!Object} descriptors\n * @param {boolean=} force\n */\nfunction patchAccessorGroup(obj, descriptors, force) {\n for (let p in descriptors) {\n let objDesc = Object.getOwnPropertyDescriptor(obj, p);\n if ((objDesc && objDesc.configurable) ||\n (!objDesc && force)) {\n Object.defineProperty(obj, p, descriptors[p]);\n } else if (force) {\n console.warn('Could not define', p, 'on', obj); // eslint-disable-line no-console\n }\n }\n}\n\n// patch dom accessors on proto where they exist\nexport function patchAccessors(proto) {\n patchAccessorGroup(proto, OutsideAccessors);\n patchAccessorGroup(proto, ClassNameAccessor);\n patchAccessorGroup(proto, InsideAccessors);\n patchAccessorGroup(proto, ActiveElementAccessor);\n}\n\nexport function patchShadowRootAccessors(proto) {\n proto.__proto__ = DocumentFragment.prototype;\n // ensure element descriptors (IE/Edge don't have em)\n patchAccessorGroup(proto, OutsideAccessors, true);\n patchAccessorGroup(proto, InsideAccessors, true);\n patchAccessorGroup(proto, ActiveElementAccessor, true);\n // Ensure native properties are all safely wrapped since ShadowRoot is not an\n // actual DocumentFragment instance.\n Object.defineProperties(proto, {\n nodeType: {\n value: Node.DOCUMENT_FRAGMENT_NODE,\n configurable: true\n },\n nodeName: {\n value: '#document-fragment',\n configurable: true\n },\n nodeValue: {\n value: null,\n configurable: true\n }\n });\n // make undefined\n [\n 'localName',\n 'namespaceURI',\n 'prefix'\n ].forEach((prop) => {\n Object.defineProperty(proto, prop, {\n value: undefined,\n configurable: true\n });\n });\n // defer properties to host\n [\n 'ownerDocument',\n 'baseURI',\n 'isConnected'\n ].forEach((prop) => {\n Object.defineProperty(proto, prop, {\n get() {\n return this.host[prop];\n },\n configurable: true\n });\n });\n}\n\n// ensure an element has patched \"outside\" accessors; no-op when not needed\nexport let patchOutsideElementAccessors = utils.settings.hasDescriptors ?\n function() {} : function(element) {\n const sd = ensureShadyDataForNode(element);\n if (!sd.__outsideAccessors) {\n sd.__outsideAccessors = true;\n patchAccessorGroup(element, OutsideAccessors, true);\n patchAccessorGroup(element, ClassNameAccessor, true);\n }\n }\n\n// ensure an element has patched \"inside\" accessors; no-op when not needed\nexport let patchInsideElementAccessors = utils.settings.hasDescriptors ?\n function() {} : function(element) {\n const sd = ensureShadyDataForNode(element);\n if (!sd.__insideAccessors) {\n patchAccessorGroup(element, InsideAccessors, true);\n patchAccessorGroup(element, ShadowRootAccessor, true);\n }\n }\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {patchInsideElementAccessors, patchOutsideElementAccessors} from './patch-accessors.js';\nimport {accessors} from './native-tree.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nconst {childNodes} = accessors;\n\nexport function recordInsertBefore(node, container, ref_node) {\n patchInsideElementAccessors(container);\n const containerData = ensureShadyDataForNode(container);\n if (containerData.firstChild !== undefined) {\n containerData.childNodes = null;\n }\n // handle document fragments\n if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n let c$ = node.childNodes;\n for (let i=0; i < c$.length; i++) {\n linkNode(c$[i], container, ref_node);\n }\n // cleanup logical dom in doc fragment.\n const nodeData = ensureShadyDataForNode(node);\n let resetTo = (nodeData.firstChild !== undefined) ? null : undefined;\n nodeData.firstChild = nodeData.lastChild = resetTo;\n nodeData.childNodes = resetTo;\n } else {\n linkNode(node, container, ref_node);\n }\n}\n\nfunction linkNode(node, container, ref_node) {\n patchOutsideElementAccessors(node);\n ref_node = ref_node || null;\n const nodeData = ensureShadyDataForNode(node);\n const containerData = ensureShadyDataForNode(container);\n const ref_nodeData = ref_node ? ensureShadyDataForNode(ref_node) : null;\n // update ref_node.previousSibling <-> node\n nodeData.previousSibling = ref_node ? ref_nodeData.previousSibling :\n container.lastChild;\n let psd = shadyDataForNode(nodeData.previousSibling);\n if (psd) {\n psd.nextSibling = node;\n }\n // update node <-> ref_node\n let nsd = shadyDataForNode(nodeData.nextSibling = ref_node);\n if (nsd) {\n nsd.previousSibling = node;\n }\n // update node <-> container\n nodeData.parentNode = container;\n if (ref_node) {\n if (ref_node === containerData.firstChild) {\n containerData.firstChild = node;\n }\n } else {\n containerData.lastChild = node;\n if (!containerData.firstChild) {\n containerData.firstChild = node;\n }\n }\n // remove caching of childNodes\n containerData.childNodes = null;\n}\n\nexport function recordRemoveChild(node, container) {\n const nodeData = ensureShadyDataForNode(node);\n const containerData = ensureShadyDataForNode(container);\n if (node === containerData.firstChild) {\n containerData.firstChild = nodeData.nextSibling;\n }\n if (node === containerData.lastChild) {\n containerData.lastChild = nodeData.previousSibling;\n }\n let p = nodeData.previousSibling;\n let n = nodeData.nextSibling;\n if (p) {\n ensureShadyDataForNode(p).nextSibling = n;\n }\n if (n) {\n ensureShadyDataForNode(n).previousSibling = p;\n }\n // When an element is removed, logical data is no longer tracked.\n // Explicitly set `undefined` here to indicate this. This is disginguished\n // from `null` which is set if info is null.\n nodeData.parentNode = nodeData.previousSibling =\n nodeData.nextSibling = undefined;\n if (containerData.childNodes !== undefined) {\n // remove caching of childNodes\n containerData.childNodes = null;\n }\n}\n\n/**\n * @param {!Node} node\n * @param {Array<Node>=} nodes\n */\nfunction recordChildNodes(node, nodes) {\n const nodeData = ensureShadyDataForNode(node);\n if (nodeData.firstChild === undefined) {\n // remove caching of childNodes\n nodeData.childNodes = null;\n const c$ = nodes || childNodes(node);\n nodeData.firstChild = c$[0] || null;\n nodeData.lastChild = c$[c$.length-1] || null;\n patchInsideElementAccessors(node);\n for (let i=0; i<c$.length; i++) {\n const n = c$[i];\n const sd = ensureShadyDataForNode(n);\n sd.parentNode = node;\n sd.nextSibling = c$[i+1] || null;\n sd.previousSibling = c$[i-1] || null;\n patchOutsideElementAccessors(n);\n }\n }\n}\n\nexport {recordChildNodes}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport * as logicalTree from './logical-tree.js';\nimport * as nativeMethods from './native-methods.js';\nimport {accessors} from './native-tree.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nconst {parentNode} = accessors;\n\n// Patched `insertBefore`. Note that all mutations that add nodes are routed\n// here. When a <slot> is added or a node is added to a host with a shadowRoot\n// with a slot, a standard dom `insert` call is aborted and `_asyncRender`\n// is called on the relevant shadowRoot. In all other cases, a standard dom\n// `insert` can be made, but the location and ref_node may need to be changed.\n/**\n * @param {Node} parent\n * @param {Node} node\n * @param {Node=} ref_node\n */\nexport function insertBefore(parent, node, ref_node) {\n if (node === parent) {\n throw Error(`Failed to execute 'appendChild' on 'Node': The new child element contains the parent.`);\n }\n if (ref_node) {\n const refData = shadyDataForNode(ref_node);\n const p = refData && refData.parentNode;\n if ((p !== undefined && p !== parent) ||\n (p === undefined && parentNode(ref_node) !== parent)) {\n throw Error(`Failed to execute 'insertBefore' on 'Node': The node ` +\n `before which the new node is to be inserted is not a child of this node.`);\n }\n }\n if (ref_node === node) {\n return node;\n }\n // remove from existing location\n if (node.parentNode) {\n // NOTE: avoid node.removeChild as this *can* trigger another patched\n // method (e.g. custom elements) and we want only the shady method to run.\n removeChild(node.parentNode, node);\n }\n // add to new parent\n let allowNativeInsert = true;\n let ownerRoot;\n let slotsAdded;\n if (!node['__noInsertionPoint']) {\n ownerRoot = utils.ownerShadyRootForNode(parent);\n slotsAdded = ownerRoot && findContainedSlots(node);\n if (slotsAdded) {\n ownerRoot._addSlots(slotsAdded);\n }\n }\n // if a slot is added, must render containing root.\n if (parent.localName === 'slot' || slotsAdded) {\n ownerRoot = ownerRoot || utils.ownerShadyRootForNode(parent);\n if (ownerRoot) {\n ownerRoot._asyncRender();\n }\n }\n if (utils.isTrackingLogicalChildNodes(parent)) {\n logicalTree.recordInsertBefore(node, parent, ref_node);\n // when inserting into a host with a shadowRoot with slot, use\n // `shadowRoot._asyncRender()` via `attach-shadow` module\n const parentData = shadyDataForNode(parent);\n if (hasShadowRootWithSlot(parent)) {\n parentData.root._asyncRender();\n allowNativeInsert = false;\n // when inserting into a host with shadowRoot with NO slot, do nothing\n // as the node should not be added to composed dome anywhere.\n } else if (parentData.root) {\n allowNativeInsert = false;\n }\n }\n if (allowNativeInsert) {\n // if adding to a shadyRoot, add to host instead\n let container = utils.isShadyRoot(parent) ?\n /** @type {ShadowRoot} */(parent).host : parent;\n // if ref_node, get the ref_node that's actually in composed dom.\n if (ref_node) {\n ref_node = firstComposedNode(ref_node);\n nativeMethods.insertBefore.call(container, node, ref_node);\n } else {\n nativeMethods.appendChild.call(container, node);\n }\n // Since ownerDocument is not patched, it can be incorrect afer this call\n // if the node is physically appended via distribution. This can result\n // in the custom elements polyfill not upgrading the node if it's in an inert doc.\n // We correct this by calling `adoptNode`.\n } else if (node.ownerDocument !== parent.ownerDocument) {\n parent.ownerDocument.adoptNode(node);\n }\n scheduleObserver(parent, node);\n return node;\n}\n\nfunction findContainedSlots(node) {\n let slots;\n if (node.localName === 'slot') {\n slots = [node];\n } else if (node.querySelectorAll) {\n slots = node.querySelectorAll('slot');\n }\n if (slots && slots.length) {\n return slots;\n }\n}\n\n/**\n * Patched `removeChild`. Note that all dom \"removals\" are routed here.\n * Removes the given `node` from the element's `children`.\n * This method also performs dom composition.\n * @param {Node} parent\n * @param {Node} node\n*/\nexport function removeChild(parent, node) {\n if (node.parentNode !== parent) {\n throw Error('The node to be removed is not a child of this node: ' +\n node);\n }\n let preventNativeRemove;\n let ownerRoot = utils.ownerShadyRootForNode(node);\n let removingInsertionPoint;\n const parentData = shadyDataForNode(parent);\n if (utils.isTrackingLogicalChildNodes(parent)) {\n logicalTree.recordRemoveChild(node, parent);\n if (hasShadowRootWithSlot(parent)) {\n parentData.root._asyncRender();\n preventNativeRemove = true;\n }\n }\n removeOwnerShadyRoot(node);\n // if removing slot, must render containing root\n if (ownerRoot) {\n let changeSlotContent = parent && parent.localName === 'slot';\n if (changeSlotContent) {\n preventNativeRemove = true;\n }\n removingInsertionPoint = ownerRoot._removeContainedSlots(node);\n if (removingInsertionPoint || changeSlotContent) {\n ownerRoot._asyncRender();\n }\n }\n if (!preventNativeRemove) {\n // if removing from a shadyRoot, remove form host instead\n let container = utils.isShadyRoot(parent) ?\n /** @type {ShadowRoot} */(parent).host :\n parent;\n // not guaranteed to physically be in container; e.g.\n // (1) if parent has a shadyRoot, element may or may not at distributed\n // location (could be undistributed)\n // (2) if parent is a slot, element may not ben in composed dom\n if (!(parentData.root || node.localName === 'slot') ||\n (container === parentNode(node))) {\n nativeMethods.removeChild.call(container, node);\n }\n }\n scheduleObserver(parent, null, node);\n return node;\n}\n\nfunction removeOwnerShadyRoot(node) {\n // optimization: only reset the tree if node is actually in a root\n if (hasCachedOwnerRoot(node)) {\n let c$ = node.childNodes;\n for (let i=0, l=c$.length, n; (i<l) && (n=c$[i]); i++) {\n removeOwnerShadyRoot(n);\n }\n }\n const nodeData = shadyDataForNode(node);\n if (nodeData) {\n nodeData.ownerShadyRoot = undefined;\n }\n}\n\nfunction hasCachedOwnerRoot(node) {\n const nodeData = shadyDataForNode(node);\n return Boolean(nodeData && nodeData.ownerShadyRoot !== undefined);\n}\n\n/**\n * Finds the first flattened node that is composed in the node's parent.\n * If the given node is a slot, then the first flattened node is returned\n * if it exists, otherwise advance to the node's nextSibling.\n * @param {Node} node within which to find first composed node\n * @returns {Node} first composed node\n */\nfunction firstComposedNode(node) {\n let composed = node;\n if (node && node.localName === 'slot') {\n const nodeData = shadyDataForNode(node);\n const flattened = nodeData && nodeData.flattenedNodes;\n composed = flattened && flattened.length ? flattened[0] :\n firstComposedNode(node.nextSibling);\n }\n return composed;\n}\n\nfunction hasShadowRootWithSlot(node) {\n const nodeData = shadyDataForNode(node);\n let root = nodeData && nodeData.root;\n return (root && root._hasInsertionPoint());\n}\n\n/**\n * Should be called whenever an attribute changes. If the `slot` attribute\n * changes, provokes rendering if necessary. If a `<slot>` element's `name`\n * attribute changes, updates the root's slot map and renders.\n * @param {Node} node\n * @param {string} name\n */\nfunction distributeAttributeChange(node, name) {\n if (name === 'slot') {\n const parent = node.parentNode;\n if (hasShadowRootWithSlot(parent)) {\n shadyDataForNode(parent).root._asyncRender();\n }\n } else if (node.localName === 'slot' && name === 'name') {\n let root = utils.ownerShadyRootForNode(node);\n if (root) {\n root._updateSlotName(node);\n root._asyncRender();\n }\n }\n}\n\n/**\n * @param {Node} node\n * @param {Node=} addedNode\n * @param {Node=} removedNode\n */\nfunction scheduleObserver(node, addedNode, removedNode) {\n const nodeData = shadyDataForNode(node);\n const observer = nodeData && nodeData.observer;\n if (observer) {\n if (addedNode) {\n observer.addedNodes.push(addedNode);\n }\n if (removedNode) {\n observer.removedNodes.push(removedNode);\n }\n observer.schedule();\n }\n}\n\n/**\n * @param {Node} node\n * @param {Object=} options\n */\nexport function getRootNode(node, options) { // eslint-disable-line no-unused-vars\n if (!node || !node.nodeType) {\n return;\n }\n const nodeData = ensureShadyDataForNode(node);\n let root = nodeData.ownerShadyRoot;\n if (root === undefined) {\n if (utils.isShadyRoot(node)) {\n root = node;\n nodeData.ownerShadyRoot = root;\n } else {\n let parent = node.parentNode;\n root = parent ? getRootNode(parent) : node;\n // memo-ize result for performance but only memo-ize\n // result if node is in the document. This avoids a problem where a root\n // can be cached while an element is inside a fragment.\n // If this happens and we cache the result, the value can become stale\n // because for perf we avoid processing the subtree of added fragments.\n if (nativeMethods.contains.call(document.documentElement, node)) {\n nodeData.ownerShadyRoot = root;\n }\n }\n\n }\n return root;\n}\n\n// NOTE: `query` is used primarily for ShadyDOM's querySelector impl,\n// but it's also generally useful to recurse through the element tree\n// and is used by Polymer's styling system.\n/**\n * @param {Node} node\n * @param {Function} matcher\n * @param {Function=} halter\n */\nexport function query(node, matcher, halter) {\n let list = [];\n queryElements(node.childNodes, matcher,\n halter, list);\n return list;\n}\n\nfunction queryElements(elements, matcher, halter, list) {\n for (let i=0, l=elements.length, c; (i<l) && (c=elements[i]); i++) {\n if (c.nodeType === Node.ELEMENT_NODE &&\n queryElement(c, matcher, halter, list)) {\n return true;\n }\n }\n}\n\nfunction queryElement(node, matcher, halter, list) {\n let result = matcher(node);\n if (result) {\n list.push(node);\n }\n if (halter && halter(result)) {\n return result;\n }\n queryElements(node.childNodes, matcher,\n halter, list);\n}\n\nexport function renderRootNode(element) {\n var root = element.getRootNode();\n if (utils.isShadyRoot(root)) {\n root._render();\n }\n}\n\nlet scopingShim = null;\n\nexport function setAttribute(node, attr, value) {\n if (!scopingShim) {\n scopingShim = window['ShadyCSS'] && window['ShadyCSS']['ScopingShim'];\n }\n if (scopingShim && attr === 'class') {\n scopingShim['setElementClass'](node, value);\n } else {\n nativeMethods.setAttribute.call(node, attr, value);\n distributeAttributeChange(node, attr);\n }\n}\n\nexport function removeAttribute(node, attr) {\n nativeMethods.removeAttribute.call(node, attr);\n distributeAttributeChange(node, attr);\n}\n\nexport function cloneNode(node, deep) {\n if (node.localName == 'template') {\n return nativeMethods.cloneNode.call(node, deep);\n } else {\n let n = nativeMethods.cloneNode.call(node, false);\n // Attribute nodes historically had childNodes, but they have later\n // been removed from the spec.\n // Make sure we do not do a deep clone on them for old browsers (IE11)\n if (deep && n.nodeType !== Node.ATTRIBUTE_NODE) {\n let c$ = node.childNodes;\n for (let i=0, nc; i < c$.length; i++) {\n nc = c$[i].cloneNode(true);\n n.appendChild(nc);\n }\n }\n return n;\n }\n}\n\n// note: Though not technically correct, we fast path `importNode`\n// when called on a node not owned by the main document.\n// This allows, for example, elements that cannot\n// contain custom elements and are therefore not likely to contain shadowRoots\n// to cloned natively. This is a fairly significant performance win.\nexport function importNode(node, deep) {\n // A template element normally has no children with shadowRoots, so make\n // sure we always make a deep copy to correctly construct the template.content\n if (node.ownerDocument !== document || node.localName === 'template') {\n return nativeMethods.importNode.call(document, node, deep);\n }\n let n = nativeMethods.importNode.call(document, node, false);\n if (deep) {\n let c$ = node.childNodes;\n for (let i=0, nc; i < c$.length; i++) {\n nc = importNode(c$[i], true);\n n.appendChild(nc);\n }\n }\n return n;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {calculateSplices} from './array-splice.js';\nimport * as utils from './utils.js';\nimport {enqueue} from './flush.js';\nimport {recordChildNodes} from './logical-tree.js';\nimport {removeChild, insertBefore, dispatchEvent} from './native-methods.js';\nimport {accessors} from './native-tree.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nconst {parentNode, childNodes} = accessors;\n\n// Do not export this object. It must be passed as the first argument to the\n// ShadyRoot constructor in `attachShadow` to prevent the constructor from\n// throwing. This prevents the user from being able to manually construct a\n// ShadyRoot (i.e. `new ShadowRoot()`).\nconst ShadyRootConstructionToken = {};\n\nconst CATCHALL_NAME = '__catchall';\nconst SHADYROOT_NAME = 'ShadyRoot';\n\nconst MODE_CLOSED = 'closed';\n\nlet isRendering = utils.settings['deferConnectionCallbacks'] && document.readyState === 'loading';\nlet rootRendered;\n\nfunction ancestorList(node) {\n let ancestors = [];\n do {\n ancestors.unshift(node);\n } while ((node = node.parentNode));\n return ancestors;\n}\n\n/**\n * @extends {ShadowRoot}\n */\nclass ShadyRoot {\n\n constructor(token, host, options) {\n if (token !== ShadyRootConstructionToken) {\n throw new TypeError('Illegal constructor');\n }\n // NOTE: set a fake local name so this element can be\n // distinguished from a DocumentFragment when patching.\n // FF doesn't allow this to be `localName`\n this._localName = SHADYROOT_NAME;\n // root <=> host\n this.host = host;\n this._mode = options && options.mode;\n recordChildNodes(host);\n const hostData = ensureShadyDataForNode(host);\n hostData.root = this;\n hostData.publicRoot = this._mode !== MODE_CLOSED ? this : null;\n // setup root\n const rootData = ensureShadyDataForNode(this);\n rootData.firstChild = rootData.lastChild =\n rootData.parentNode = rootData.nextSibling =\n rootData.previousSibling = null;\n rootData.childNodes = [];\n // state flags\n this._renderPending = false;\n this._hasRendered = false;\n // marsalled lazily\n this._slotList = null;\n /** @type {Object<string, Array<HTMLSlotElement>>} */\n this._slotMap = null;\n this._pendingSlots = null;\n this._initialChildren = null;\n this._asyncRender();\n }\n\n // async render\n _asyncRender() {\n if (!this._renderPending) {\n this._renderPending = true;\n enqueue(() => this._render());\n }\n }\n\n // returns the oldest renderPending ancestor root.\n _getRenderRoot() {\n let renderRoot;\n let root = this;\n while (root) {\n if (root._renderPending) {\n renderRoot = root;\n }\n root = root._rendererForHost();\n }\n return renderRoot;\n }\n\n // Returns the shadyRoot `this.host` if `this.host`\n // has children that require distribution.\n _rendererForHost() {\n let root = this.host.getRootNode();\n if (utils.isShadyRoot(root)) {\n let c$ = this.host.childNodes;\n for (let i=0, c; i < c$.length; i++) {\n c = c$[i];\n if (this._isInsertionPoint(c)) {\n return root;\n }\n }\n }\n }\n\n _render() {\n const root = this._getRenderRoot();\n if (root) {\n root['_renderRoot']();\n }\n }\n\n // NOTE: avoid renaming to ease testability.\n ['_renderRoot']() {\n // track rendering state.\n const wasRendering = isRendering;\n isRendering = true;\n this._renderPending = false;\n if (this._slotList) {\n this._distribute();\n this._compose();\n }\n // on initial render remove any undistributed children.\n if (!this._hasRendered) {\n const c$ = this.host.childNodes;\n for (let i=0, l=c$.length; i < l; i++) {\n const child = c$[i];\n const data = shadyDataForNode(child);\n if (parentNode(child) === this.host &&\n (child.localName === 'slot' || !data.assignedSlot)) {\n removeChild.call(this.host, child);\n }\n }\n }\n this._hasRendered = true;\n isRendering = wasRendering;\n if (rootRendered) {\n rootRendered();\n }\n }\n\n _distribute() {\n this._validateSlots();\n // capture # of previously assigned nodes to help determine if dirty.\n for (let i=0, slot; i < this._slotList.length; i++) {\n slot = this._slotList[i];\n this._clearSlotAssignedNodes(slot);\n }\n // distribute host children.\n for (let n=this.host.firstChild; n; n=n.nextSibling) {\n this._distributeNodeToSlot(n);\n }\n // fallback content, slotchange, and dirty roots\n for (let i=0; i < this._slotList.length; i++) {\n const slot = this._slotList[i];\n const slotData = shadyDataForNode(slot);\n // distribute fallback content\n if (!slotData.assignedNodes.length) {\n for (let n=slot.firstChild; n; n=n.nextSibling) {\n this._distributeNodeToSlot(n, slot);\n }\n }\n const slotParentData = shadyDataForNode(slot.parentNode);\n const slotParentRoot = slotParentData && slotParentData.root;\n if (slotParentRoot && slotParentRoot._hasInsertionPoint()) {\n slotParentRoot['_renderRoot']();\n }\n this._addAssignedToFlattenedNodes(slotData.flattenedNodes,\n slotData.assignedNodes);\n let prevAssignedNodes = slotData._previouslyAssignedNodes;\n if (prevAssignedNodes) {\n for (let i=0; i < prevAssignedNodes.length; i++) {\n shadyDataForNode(prevAssignedNodes[i])._prevAssignedSlot = null;\n }\n slotData._previouslyAssignedNodes = null;\n // dirty if previously less assigned nodes than previously assigned.\n if (prevAssignedNodes.length > slotData.assignedNodes.length) {\n slotData.dirty = true;\n }\n }\n /* Note: A slot is marked dirty whenever a node is newly assigned to it\n or a node is assigned to a different slot (done in `_distributeNodeToSlot`)\n or if the number of nodes assigned to the slot has decreased (done above);\n */\n if (slotData.dirty) {\n slotData.dirty = false;\n this._fireSlotChange(slot);\n }\n }\n }\n\n /**\n * Distributes given `node` to the appropriate slot based on its `slot`\n * attribute. If `forcedSlot` is given, then the node is distributed to the\n * `forcedSlot`.\n * Note: slot to which the node is assigned will be marked dirty for firing\n * `slotchange`.\n * @param {Node} node\n * @param {Node=} forcedSlot\n *\n */\n _distributeNodeToSlot(node, forcedSlot) {\n const nodeData = ensureShadyDataForNode(node);\n let oldSlot = nodeData._prevAssignedSlot;\n nodeData._prevAssignedSlot = null;\n let slot = forcedSlot;\n if (!slot) {\n let name = node.slot || CATCHALL_NAME;\n const list = this._slotMap[name];\n slot = list && list[0];\n }\n if (slot) {\n const slotData = ensureShadyDataForNode(slot);\n slotData.assignedNodes.push(node);\n nodeData.assignedSlot = slot;\n } else {\n nodeData.assignedSlot = undefined;\n }\n if (oldSlot !== nodeData.assignedSlot) {\n if (nodeData.assignedSlot) {\n ensureShadyDataForNode(nodeData.assignedSlot).dirty = true;\n }\n }\n }\n\n /**\n * Clears the assignedNodes tracking data for a given `slot`. Note, the current\n * assigned node data is tracked (via _previouslyAssignedNodes and\n * _prevAssignedSlot) to see if `slotchange` should fire. This data may be out\n * of date at this time because the assigned nodes may have already been\n * distributed to another root. This is ok since this data is only used to\n * track changes.\n * @param {HTMLSlotElement} slot\n */\n _clearSlotAssignedNodes(slot) {\n const slotData = shadyDataForNode(slot);\n let n$ = slotData.assignedNodes;\n slotData.assignedNodes = [];\n slotData.flattenedNodes = [];\n slotData._previouslyAssignedNodes = n$;\n if (n$) {\n for (let i=0; i < n$.length; i++) {\n let n = shadyDataForNode(n$[i]);\n n._prevAssignedSlot = n.assignedSlot;\n // only clear if it was previously set to this slot;\n // this helps ensure that if the node has otherwise been distributed\n // ignore it.\n if (n.assignedSlot === slot) {\n n.assignedSlot = null;\n }\n }\n }\n }\n\n _addAssignedToFlattenedNodes(flattened, assigned) {\n for (let i=0, n; (i<assigned.length) && (n=assigned[i]); i++) {\n if (n.localName == 'slot') {\n const nestedAssigned = shadyDataForNode(n).assignedNodes;\n if (nestedAssigned && nestedAssigned.length) {\n this._addAssignedToFlattenedNodes(flattened, nestedAssigned);\n }\n } else {\n flattened.push(assigned[i]);\n }\n }\n }\n\n _fireSlotChange(slot) {\n // NOTE: cannot bubble correctly here so not setting bubbles: true\n // Safari tech preview does not bubble but chrome does\n // Spec says it bubbles (https://dom.spec.whatwg.org/#mutation-observers)\n dispatchEvent.call(slot, new Event('slotchange'));\n const slotData = shadyDataForNode(slot);\n if (slotData.assignedSlot) {\n this._fireSlotChange(slotData.assignedSlot);\n }\n }\n\n // Reify dom such that it is at its correct rendering position\n // based on logical distribution.\n // NOTE: here we only compose parents of <slot> elements and not the\n // shadowRoot into the host. The latter is performend via a fast path\n // in the `logical-mutation`.insertBefore.\n _compose() {\n const slots = this._slotList;\n let composeList = [];\n for (let i=0; i < slots.length; i++) {\n const parent = slots[i].parentNode;\n /* compose node only if:\n (1) parent does not have a shadowRoot since shadowRoot has already\n composed into the host\n (2) we're not already composing it\n [consider (n^2) but rare better than Set]\n */\n const parentData = shadyDataForNode(parent);\n if (!(parentData && parentData.root) &&\n composeList.indexOf(parent) < 0) {\n composeList.push(parent);\n }\n }\n for (let i=0; i < composeList.length; i++) {\n const node = composeList[i];\n const targetNode = node === this ? this.host : node;\n this._updateChildNodes(targetNode, this._composeNode(node));\n }\n }\n\n // Returns the list of nodes which should be rendered inside `node`.\n _composeNode(node) {\n let children = [];\n let c$ = node.childNodes;\n for (let i = 0; i < c$.length; i++) {\n let child = c$[i];\n // Note: if we see a slot here, the nodes are guaranteed to need to be\n // composed here. This is because if there is redistribution, it has\n // already been handled by this point.\n if (this._isInsertionPoint(child)) {\n let flattenedNodes = shadyDataForNode(child).flattenedNodes;\n for (let j = 0; j < flattenedNodes.length; j++) {\n let distributedNode = flattenedNodes[j];\n children.push(distributedNode);\n }\n } else {\n children.push(child);\n }\n }\n return children;\n }\n\n _isInsertionPoint(node) {\n return node.localName == 'slot';\n }\n\n // Ensures that the rendered node list inside `container` is `children`.\n _updateChildNodes(container, children) {\n let composed = childNodes(container);\n let splices = calculateSplices(children, composed);\n // process removals\n for (let i=0, d=0, s; (i<splices.length) && (s=splices[i]); i++) {\n for (let j=0, n; (j < s.removed.length) && (n=s.removed[j]); j++) {\n // check if the node is still where we expect it is before trying\n // to remove it; this can happen if we move a node and\n // then schedule its previous host for distribution resulting in\n // the node being removed here.\n if (parentNode(n) === container) {\n removeChild.call(container, n);\n }\n // TODO(sorvell): avoid the need for splicing here.\n composed.splice(s.index + d, 1);\n }\n d -= s.addedCount;\n }\n // process adds\n for (let i=0, s, next; (i<splices.length) && (s=splices[i]); i++) { //eslint-disable-line no-redeclare\n next = composed[s.index];\n for (let j=s.index, n; j < s.index + s.addedCount; j++) {\n n = children[j];\n insertBefore.call(container, n, next);\n composed.splice(j, 0, n);\n }\n }\n }\n\n _ensureSlotData() {\n this._pendingSlots = this._pendingSlots || [];\n this._slotList = this._slotList || [];\n this._slotMap = this._slotMap || {};\n }\n\n _addSlots(slots) {\n this._ensureSlotData();\n this._pendingSlots.push(...slots);\n }\n\n _validateSlots() {\n if (this._pendingSlots && this._pendingSlots.length) {\n this._mapSlots(this._pendingSlots);\n this._pendingSlots = [];\n }\n }\n\n /**\n * Adds the given slots. Slots are maintained in an dom-ordered list.\n * In addition a map of name to slot is updated.\n */\n _mapSlots(slots) {\n let slotNamesToSort;\n for (let i=0; i < slots.length; i++) {\n let slot = slots[i];\n // ensure insertionPoints's and their parents have logical dom info.\n // save logical tree info\n // a. for shadyRoot\n // b. for insertion points (fallback)\n // c. for parents of insertion points\n recordChildNodes(slot);\n recordChildNodes(slot.parentNode);\n let name = this._nameForSlot(slot);\n if (this._slotMap[name]) {\n slotNamesToSort = slotNamesToSort || {};\n slotNamesToSort[name] = true;\n this._slotMap[name].push(slot);\n } else {\n this._slotMap[name] = [slot];\n }\n this._slotList.push(slot);\n }\n if (slotNamesToSort) {\n for (let n in slotNamesToSort) {\n this._slotMap[n] = this._sortSlots(this._slotMap[n]);\n }\n }\n }\n\n _nameForSlot(slot) {\n const name = slot['name'] || slot.getAttribute('name') || CATCHALL_NAME;\n slot.__slotName = name;\n return name;\n }\n\n /**\n * Slots are kept in an ordered list. Slots with the same name\n * are sorted here by tree order.\n */\n _sortSlots(slots) {\n // NOTE: Cannot use `compareDocumentPosition` because it's not polyfilled,\n // but the code here could be used to polyfill the preceeding/following info\n // in `compareDocumentPosition`.\n return slots.sort((a, b) => {\n let listA = ancestorList(a);\n let listB = ancestorList(b);\n for (var i=0; i < listA.length; i++) {\n let nA = listA[i];\n let nB = listB[i];\n if (nA !== nB) {\n let c$ = Array.from(nA.parentNode.childNodes);\n return c$.indexOf(nA) - c$.indexOf(nB);\n }\n }\n });\n }\n\n /**\n * Removes from tracked slot data any slots contained within `container` and\n * then updates the tracked data (_slotList and _slotMap).\n * Any removed slots also have their `assignedNodes` removed from comopsed dom.\n */\n _removeContainedSlots(container) {\n if (!this._slotList) {\n return;\n }\n this._validateSlots();\n let didRemove;\n const map = this._slotMap;\n for (let n in map) {\n let slots = map[n];\n for (let i=0; i < slots.length; i++) {\n let slot = slots[i];\n if (utils.contains(container, slot)) {\n slots.splice(i, 1);\n const x = this._slotList.indexOf(slot);\n if (x >= 0) {\n this._slotList.splice(x, 1);\n }\n i--;\n this._removeFlattenedNodes(slot);\n didRemove = true;\n }\n }\n }\n return didRemove;\n }\n\n _updateSlotName(slot) {\n if (!this._slotList) {\n return;\n }\n // make sure slotMap is initialized with this slot\n this._validateSlots();\n const oldName = slot.__slotName;\n const name = this._nameForSlot(slot);\n if (name === oldName) {\n return;\n }\n // remove from existing tracking\n let slots = this._slotMap[oldName];\n const i = slots.indexOf(slot);\n if (i >= 0) {\n slots.splice(i, 1);\n }\n // add to new location and sort if nedessary\n let list = this._slotMap[name] || (this._slotMap[name] = []);\n list.push(slot);\n if (list.length > 1) {\n this._slotMap[name] = this._sortSlots(list);\n }\n }\n\n _removeFlattenedNodes(slot) {\n const data = shadyDataForNode(slot);\n let n$ = data.flattenedNodes;\n if (n$) {\n for (let i=0; i<n$.length; i++) {\n let node = n$[i];\n let parent = parentNode(node);\n if (parent) {\n removeChild.call(parent, node);\n }\n }\n }\n data.flattenedNodes = [];\n data.assignedNodes = [];\n }\n\n _hasInsertionPoint() {\n this._validateSlots();\n return Boolean(this._slotList && this._slotList.length);\n }\n}\n\nexport {ShadyRoot};\n\n/**\n Implements a pared down version of ShadowDOM's scoping, which is easy to\n polyfill across browsers.\n*/\nexport function attachShadow(host, options) {\n if (!host) {\n throw 'Must provide a host.';\n }\n if (!options) {\n throw 'Not enough arguments.'\n }\n return new ShadyRoot(ShadyRootConstructionToken, host, options);\n}\n\n// Mitigate connect/disconnect spam by wrapping custom element classes.\nif (window['customElements'] && utils.settings.inUse) {\n\n // process connect/disconnect after roots have rendered to avoid\n // issues with reaction stack.\n let connectMap = new Map();\n rootRendered = function() {\n // allow elements to connect\n const map = Array.from(connectMap);\n connectMap.clear();\n for (const [e, value] of map) {\n if (value) {\n e.__shadydom_connectedCallback();\n } else {\n e.__shadydom_disconnectedCallback();\n }\n }\n }\n\n // Document is in loading state and flag is set (deferConnectionCallbacks)\n // so process connection stack when `readystatechange` fires.\n if (isRendering) {\n document.addEventListener('readystatechange', () => {\n isRendering = false;\n rootRendered();\n }, {once: true});\n }\n\n /*\n * (1) elements can only be connected/disconnected if they are in the expected\n * state.\n * (2) never run connect/disconnect during rendering to avoid reaction stack issues.\n */\n const ManageConnect = (base, connected, disconnected) => {\n let counter = 0;\n const connectFlag = `__isConnected${counter++}`;\n if (connected || disconnected) {\n\n base.prototype.connectedCallback = base.prototype.__shadydom_connectedCallback = function() {\n // if rendering defer connected\n // otherwise connect only if we haven't already\n if (isRendering) {\n connectMap.set(this, true);\n } else if (!this[connectFlag]) {\n this[connectFlag] = true;\n if (connected) {\n connected.call(this);\n }\n }\n }\n\n base.prototype.disconnectedCallback = base.prototype.__shadydom_disconnectedCallback = function() {\n // if rendering, cancel a pending connection and queue disconnect,\n // otherwise disconnect only if a connection has been allowed\n if (isRendering) {\n // This is necessary only because calling removeChild\n // on a node that requires distribution leaves it in the DOM tree\n // until distribution.\n // NOTE: remember this is checking the patched isConnected to determine\n // if the node is in the logical tree.\n if (!this.isConnected) {\n connectMap.set(this, false);\n }\n } else if (this[connectFlag]) {\n this[connectFlag] = false;\n if (disconnected) {\n disconnected.call(this);\n }\n }\n }\n }\n\n return base;\n }\n\n const define = window['customElements']['define'];\n // NOTE: Instead of patching customElements.define,\n // re-define on the CustomElementRegistry.prototype.define\n // for Safari 10 compatibility (it's flakey otherwise).\n Object.defineProperty(window['CustomElementRegistry'].prototype, 'define', {\n value: function(name, constructor) {\n const connected = constructor.prototype.connectedCallback;\n const disconnected = constructor.prototype.disconnectedCallback;\n define.call(window['customElements'], name,\n ManageConnect(constructor, connected, disconnected));\n // unpatch connected/disconnected on class; custom elements tears this off\n // so the patch is maintained, but if the user calls these methods for\n // e.g. testing, they will be as expected.\n constructor.prototype.connectedCallback = connected;\n constructor.prototype.disconnectedCallback = disconnected;\n }\n });\n\n}\n",null,null,"/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport * as nativeMethods from './native-methods.js';\nimport {shadyDataForNode} from './shady-data.js';\n\n/*\nMake this name unique so it is unlikely to conflict with properties on objects passed to `addEventListener`\nhttps://github.com/webcomponents/shadydom/issues/173\n*/\nconst /** string */ eventWrappersName = `__eventWrappers${Date.now()}`;\n\n/** @type {?function(!Event): boolean} */\nconst composedGetter = (() => {\n const composedProp = Object.getOwnPropertyDescriptor(Event.prototype, 'composed');\n return composedProp ? (ev) => composedProp.get.call(ev) : null;\n})();\n\n// https://github.com/w3c/webcomponents/issues/513#issuecomment-224183937\nconst alwaysComposed = {\n 'blur': true,\n 'focus': true,\n 'focusin': true,\n 'focusout': true,\n 'click': true,\n 'dblclick': true,\n 'mousedown': true,\n 'mouseenter': true,\n 'mouseleave': true,\n 'mousemove': true,\n 'mouseout': true,\n 'mouseover': true,\n 'mouseup': true,\n 'wheel': true,\n 'beforeinput': true,\n 'input': true,\n 'keydown': true,\n 'keyup': true,\n 'compositionstart': true,\n 'compositionupdate': true,\n 'compositionend': true,\n 'touchstart': true,\n 'touchend': true,\n 'touchmove': true,\n 'touchcancel': true,\n 'pointerover': true,\n 'pointerenter': true,\n 'pointerdown': true,\n 'pointermove': true,\n 'pointerup': true,\n 'pointercancel': true,\n 'pointerout': true,\n 'pointerleave': true,\n 'gotpointercapture': true,\n 'lostpointercapture': true,\n 'dragstart': true,\n 'drag': true,\n 'dragenter': true,\n 'dragleave': true,\n 'dragover': true,\n 'drop': true,\n 'dragend': true,\n 'DOMActivate': true,\n 'DOMFocusIn': true,\n 'DOMFocusOut': true,\n 'keypress': true\n};\n\nconst unpatchedEvents = {\n 'DOMAttrModified': true,\n 'DOMAttributeNameChanged': true,\n 'DOMCharacterDataModified': true,\n 'DOMElementNameChanged': true,\n 'DOMNodeInserted': true,\n 'DOMNodeInsertedIntoDocument': true,\n 'DOMNodeRemoved': true,\n 'DOMNodeRemovedFromDocument': true,\n 'DOMSubtreeModified': true\n}\n\nfunction pathComposer(startNode, composed) {\n let composedPath = [];\n let current = startNode;\n let startRoot = startNode === window ? window : startNode.getRootNode();\n while (current) {\n composedPath.push(current);\n if (current.assignedSlot) {\n current = current.assignedSlot;\n } else if (current.nodeType === Node.DOCUMENT_FRAGMENT_NODE && current.host && (composed || current !== startRoot)) {\n current = current.host;\n } else {\n current = current.parentNode;\n }\n }\n // event composedPath includes window when startNode's ownerRoot is document\n if (composedPath[composedPath.length - 1] === document) {\n composedPath.push(window);\n }\n return composedPath;\n}\n\nfunction retarget(refNode, path) {\n if (!utils.isShadyRoot) {\n return refNode;\n }\n // If ANCESTOR's root is not a shadow root or ANCESTOR's root is BASE's\n // shadow-including inclusive ancestor, return ANCESTOR.\n let refNodePath = pathComposer(refNode, true);\n let p$ = path;\n for (let i=0, ancestor, lastRoot, root, rootIdx; i < p$.length; i++) {\n ancestor = p$[i];\n root = ancestor === window ? window : ancestor.getRootNode();\n if (root !== lastRoot) {\n rootIdx = refNodePath.indexOf(root);\n lastRoot = root;\n }\n if (!utils.isShadyRoot(root) || rootIdx > -1) {\n return ancestor;\n }\n }\n}\n\nlet eventMixin = {\n\n /**\n * @this {Event}\n */\n get composed() {\n if (this.__composed === undefined) {\n // if there's an original `composed` getter on the Event prototype, use that\n if (composedGetter) {\n this.__composed = composedGetter(this);\n // If the event is trusted, or `isTrusted` is not supported, check the list of always composed events\n } else if (this.isTrusted !== false) {\n this.__composed = alwaysComposed[this.type];\n }\n }\n return this.__composed || false;\n },\n\n /**\n * @this {Event}\n */\n composedPath() {\n if (!this.__composedPath) {\n this.__composedPath = pathComposer(this['__target'], this.composed);\n }\n return this.__composedPath;\n },\n\n /**\n * @this {Event}\n */\n get target() {\n return retarget(this.currentTarget || this['__previousCurrentTarget'], this.composedPath());\n },\n\n // http://w3c.github.io/webcomponents/spec/shadow/#event-relatedtarget-retargeting\n /**\n * @this {Event}\n */\n get relatedTarget() {\n if (!this.__relatedTarget) {\n return null;\n }\n if (!this.__relatedTargetComposedPath) {\n this.__relatedTargetComposedPath = pathComposer(this.__relatedTarget, true);\n }\n // find the deepest node in relatedTarget composed path that is in the same root with the currentTarget\n return retarget(this.currentTarget || this['__previousCurrentTarget'], this.__relatedTargetComposedPath);\n },\n /**\n * @this {Event}\n */\n stopPropagation() {\n Event.prototype.stopPropagation.call(this);\n this.__propagationStopped = true;\n },\n /**\n * @this {Event}\n */\n stopImmediatePropagation() {\n Event.prototype.stopImmediatePropagation.call(this);\n this.__immediatePropagationStopped = true;\n this.__propagationStopped = true;\n }\n\n};\n\nfunction mixinComposedFlag(Base) {\n // NOTE: avoiding use of `class` here so that transpiled output does not\n // try to do `Base.call` with a dom construtor.\n let klazz = function(type, options) {\n let event = new Base(type, options);\n event.__composed = options && Boolean(options['composed']);\n return event;\n }\n // put constructor properties on subclass\n utils.mixin(klazz, Base);\n klazz.prototype = Base.prototype;\n return klazz;\n}\n\nlet nonBubblingEventsToRetarget = {\n 'focus': true,\n 'blur': true\n};\n\n\n/**\n * Check if the event has been retargeted by comparing original `target`, and calculated `target`\n * @param {Event} event\n * @return {boolean} True if the original target and calculated target are the same\n */\nfunction hasRetargeted(event) {\n return event['__target'] !== event.target || event.__relatedTarget !== event.relatedTarget;\n}\n\n/**\n *\n * @param {Event} event\n * @param {Node} node\n * @param {string} phase\n */\nfunction fireHandlers(event, node, phase) {\n let hs = node.__handlers && node.__handlers[event.type] &&\n node.__handlers[event.type][phase];\n if (hs) {\n for (let i = 0, fn; (fn = hs[i]); i++) {\n if (hasRetargeted(event) && event.target === event.relatedTarget) {\n return;\n }\n fn.call(node, event);\n if (event.__immediatePropagationStopped) {\n return;\n }\n }\n }\n}\n\nfunction retargetNonBubblingEvent(e) {\n let path = e.composedPath();\n let node;\n // override `currentTarget` to let patched `target` calculate correctly\n Object.defineProperty(e, 'currentTarget', {\n get: function() {\n return node;\n },\n configurable: true\n });\n for (let i = path.length - 1; i >= 0; i--) {\n node = path[i];\n // capture phase fires all capture handlers\n fireHandlers(e, node, 'capture');\n if (e.__propagationStopped) {\n return;\n }\n }\n\n // set the event phase to `AT_TARGET` as in spec\n Object.defineProperty(e, 'eventPhase', {get() { return Event.AT_TARGET }});\n\n // the event only needs to be fired when owner roots change when iterating the event path\n // keep track of the last seen owner root\n let lastFiredRoot;\n for (let i = 0; i < path.length; i++) {\n node = path[i];\n const nodeData = shadyDataForNode(node);\n const root = nodeData && nodeData.root;\n if (i === 0 || (root && root === lastFiredRoot)) {\n fireHandlers(e, node, 'bubble');\n // don't bother with window, it doesn't have `getRootNode` and will be last in the path anyway\n if (node !== window) {\n lastFiredRoot = node.getRootNode();\n }\n if (e.__propagationStopped) {\n return;\n }\n }\n }\n}\n\nfunction listenerSettingsEqual(savedListener, node, type, capture, once, passive) {\n let {\n node: savedNode,\n type: savedType,\n capture: savedCapture,\n once: savedOnce,\n passive: savedPassive\n } = savedListener;\n return node === savedNode &&\n type === savedType &&\n capture === savedCapture &&\n once === savedOnce &&\n passive === savedPassive;\n}\n\nexport function findListener(wrappers, node, type, capture, once, passive) {\n for (let i = 0; i < wrappers.length; i++) {\n if (listenerSettingsEqual(wrappers[i], node, type, capture, once, passive)) {\n return i;\n }\n }\n return -1;\n}\n\n/**\n * Firefox can throw on accessing eventWrappers inside of `removeEventListener` during a selenium run\n * Try/Catch accessing eventWrappers to work around\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1353074\n */\nfunction getEventWrappers(eventLike) {\n let wrappers = null;\n try {\n wrappers = eventLike[eventWrappersName];\n } catch (e) {} // eslint-disable-line no-empty\n return wrappers;\n}\n\n/**\n * @this {Event}\n */\nexport function addEventListener(type, fnOrObj, optionsOrCapture) {\n if (!fnOrObj) {\n return;\n }\n\n const handlerType = typeof fnOrObj;\n\n // bail if `fnOrObj` is not a function, not an object\n if (handlerType !== 'function' && handlerType !== 'object') {\n return;\n }\n\n // bail if `fnOrObj` is an object without a `handleEvent` method\n if (handlerType === 'object' && (!fnOrObj.handleEvent || typeof fnOrObj.handleEvent !== 'function')) {\n return;\n }\n\n const ael = this instanceof Window ? nativeMethods.windowAddEventListener :\n nativeMethods.addEventListener;\n\n if (unpatchedEvents[type]) {\n return ael.call(this, type, fnOrObj, optionsOrCapture);\n }\n\n // The callback `fn` might be used for multiple nodes/events. Since we generate\n // a wrapper function, we need to keep track of it when we remove the listener.\n // It's more efficient to store the node/type/options information as Array in\n // `fn` itself rather than the node (we assume that the same callback is used\n // for few nodes at most, whereas a node will likely have many event listeners).\n // NOTE(valdrin) invoking external functions is costly, inline has better perf.\n let capture, once, passive;\n if (optionsOrCapture && typeof optionsOrCapture === 'object') {\n capture = Boolean(optionsOrCapture.capture);\n once = Boolean(optionsOrCapture.once);\n passive = Boolean(optionsOrCapture.passive);\n } else {\n capture = Boolean(optionsOrCapture);\n once = false;\n passive = false;\n }\n // hack to let ShadyRoots have event listeners\n // event listener will be on host, but `currentTarget`\n // will be set to shadyroot for event listener\n let target = (optionsOrCapture && optionsOrCapture.__shadyTarget) || this;\n\n let wrappers = fnOrObj[eventWrappersName];\n if (wrappers) {\n // Stop if the wrapper function has already been created.\n if (findListener(wrappers, target, type, capture, once, passive) > -1) {\n return;\n }\n } else {\n fnOrObj[eventWrappersName] = [];\n }\n\n /**\n * @this {HTMLElement}\n * @param {Event} e\n */\n const wrapperFn = function(e) {\n // Support `once` option.\n if (once) {\n this.removeEventListener(type, fnOrObj, optionsOrCapture);\n }\n if (!e['__target']) {\n patchEvent(e);\n }\n let lastCurrentTargetDesc;\n if (target !== this) {\n // replace `currentTarget` to make `target` and `relatedTarget` correct for inside the shadowroot\n lastCurrentTargetDesc = Object.getOwnPropertyDescriptor(e, 'currentTarget');\n Object.defineProperty(e, 'currentTarget', {get() { return target }, configurable: true});\n }\n e['__previousCurrentTarget'] = e['currentTarget'];\n // Always check if a shadowRoot is in the current event path.\n // If it is not, the event was generated on either the host of the shadowRoot\n // or a children of the host.\n if (utils.isShadyRoot(target) && e.composedPath().indexOf(target) == -1) {\n return;\n }\n // There are two critera that should stop events from firing on this node\n // 1. the event is not composed and the current node is not in the same root as the target\n // 2. when bubbling, if after retargeting, relatedTarget and target point to the same node\n if (e.composed || e.composedPath().indexOf(target) > -1) {\n if (hasRetargeted(e) && e.target === e.relatedTarget) {\n if (e.eventPhase === Event.BUBBLING_PHASE) {\n e.stopImmediatePropagation();\n }\n return;\n }\n // prevent non-bubbling events from triggering bubbling handlers on shadowroot, but only if not in capture phase\n if (e.eventPhase !== Event.CAPTURING_PHASE && !e.bubbles && e.target !== target && !(target instanceof Window)) {\n return;\n }\n let ret = handlerType === 'function' ?\n fnOrObj.call(target, e) :\n (fnOrObj.handleEvent && fnOrObj.handleEvent(e));\n if (target !== this) {\n // replace the \"correct\" `currentTarget`\n if (lastCurrentTargetDesc) {\n Object.defineProperty(e, 'currentTarget', lastCurrentTargetDesc);\n lastCurrentTargetDesc = null;\n } else {\n delete e['currentTarget'];\n }\n }\n return ret;\n }\n };\n // Store the wrapper information.\n fnOrObj[eventWrappersName].push({\n // note: use target here which is either a shadowRoot\n // (when the host element is proxy'ing the event) or this element\n node: target,\n type: type,\n capture: capture,\n once: once,\n passive: passive,\n wrapperFn: wrapperFn\n });\n\n if (nonBubblingEventsToRetarget[type]) {\n this.__handlers = this.__handlers || {};\n this.__handlers[type] = this.__handlers[type] ||\n {'capture': [], 'bubble': []};\n this.__handlers[type][capture ? 'capture' : 'bubble'].push(wrapperFn);\n } else {\n ael.call(this, type, wrapperFn, optionsOrCapture);\n }\n}\n\n/**\n * @this {Event}\n */\nexport function removeEventListener(type, fnOrObj, optionsOrCapture) {\n if (!fnOrObj) {\n return;\n }\n const rel = this instanceof Window ? nativeMethods.windowRemoveEventListener :\n nativeMethods.removeEventListener;\n if (unpatchedEvents[type]) {\n return rel.call(this, type, fnOrObj, optionsOrCapture);\n }\n // NOTE(valdrin) invoking external functions is costly, inline has better perf.\n let capture, once, passive;\n if (optionsOrCapture && typeof optionsOrCapture === 'object') {\n capture = Boolean(optionsOrCapture.capture);\n once = Boolean(optionsOrCapture.once);\n passive = Boolean(optionsOrCapture.passive);\n } else {\n capture = Boolean(optionsOrCapture);\n once = false;\n passive = false;\n }\n let target = (optionsOrCapture && optionsOrCapture.__shadyTarget) || this;\n // Search the wrapped function.\n let wrapperFn = undefined;\n let wrappers = getEventWrappers(fnOrObj);\n if (wrappers) {\n let idx = findListener(wrappers, target, type, capture, once, passive);\n if (idx > -1) {\n wrapperFn = wrappers.splice(idx, 1)[0].wrapperFn;\n // Cleanup.\n if (!wrappers.length) {\n fnOrObj[eventWrappersName] = undefined;\n }\n }\n }\n rel.call(this, type, wrapperFn || fnOrObj, optionsOrCapture);\n if (wrapperFn && nonBubblingEventsToRetarget[type] &&\n this.__handlers && this.__handlers[type]) {\n const arr = this.__handlers[type][capture ? 'capture' : 'bubble'];\n const idx = arr.indexOf(wrapperFn);\n if (idx > -1) {\n arr.splice(idx, 1);\n }\n }\n}\n\nfunction activateFocusEventOverrides() {\n for (let ev in nonBubblingEventsToRetarget) {\n window.addEventListener(ev, function(e) {\n if (!e['__target']) {\n patchEvent(e);\n retargetNonBubblingEvent(e);\n }\n }, true);\n }\n}\n\nfunction patchEvent(event) {\n event['__target'] = event.target;\n event.__relatedTarget = event.relatedTarget;\n // patch event prototype if we can\n if (utils.settings.hasDescriptors) {\n utils.patchPrototype(event, eventMixin);\n // and fallback to patching instance\n } else {\n utils.extend(event, eventMixin);\n }\n}\n\nlet PatchedEvent = mixinComposedFlag(window.Event);\nlet PatchedCustomEvent = mixinComposedFlag(window.CustomEvent);\nlet PatchedMouseEvent = mixinComposedFlag(window.MouseEvent);\n\nexport function patchEvents() {\n window.Event = PatchedEvent;\n window.CustomEvent = PatchedCustomEvent;\n window.MouseEvent = PatchedMouseEvent;\n activateFocusEventOverrides();\n\n // Fix up `Element.prototype.click()` if `isTrusted` is supported, but `composed` isn't\n if (!composedGetter && Object.getOwnPropertyDescriptor(Event.prototype, 'isTrusted')) {\n /** @this {Element} */\n const composedClickFn = function() {\n const ev = new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n composed: true\n });\n this.dispatchEvent(ev);\n };\n if (Element.prototype.click) {\n Element.prototype.click = composedClickFn;\n } else if (HTMLElement.prototype.click) {\n HTMLElement.prototype.click = composedClickFn;\n }\n }\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nfunction newSplice(index, removed, addedCount) {\n return {\n index: index,\n removed: removed,\n addedCount: addedCount\n };\n}\n\nconst EDIT_LEAVE = 0;\nconst EDIT_UPDATE = 1;\nconst EDIT_ADD = 2;\nconst EDIT_DELETE = 3;\n\n// Note: This function is *based* on the computation of the Levenshtein\n// \"edit\" distance. The one change is that \"updates\" are treated as two\n// edits - not one. With Array splices, an update is really a delete\n// followed by an add. By retaining this, we optimize for \"keeping\" the\n// maximum array items in the original array. For example:\n//\n// 'xxxx123' -> '123yyyy'\n//\n// With 1-edit updates, the shortest path would be just to update all seven\n// characters. With 2-edit updates, we delete 4, leave 3, and add 4. This\n// leaves the substring '123' intact.\nfunction calcEditDistances(current, currentStart, currentEnd,\n old, oldStart, oldEnd) {\n // \"Deletion\" columns\n let rowCount = oldEnd - oldStart + 1;\n let columnCount = currentEnd - currentStart + 1;\n let distances = new Array(rowCount);\n\n // \"Addition\" rows. Initialize null column.\n for (let i = 0; i < rowCount; i++) {\n distances[i] = new Array(columnCount);\n distances[i][0] = i;\n }\n\n // Initialize null row\n for (let j = 0; j < columnCount; j++)\n distances[0][j] = j;\n\n for (let i = 1; i < rowCount; i++) {\n for (let j = 1; j < columnCount; j++) {\n if (equals(current[currentStart + j - 1], old[oldStart + i - 1]))\n distances[i][j] = distances[i - 1][j - 1];\n else {\n let north = distances[i - 1][j] + 1;\n let west = distances[i][j - 1] + 1;\n distances[i][j] = north < west ? north : west;\n }\n }\n }\n\n return distances;\n}\n\n// This starts at the final weight, and walks \"backward\" by finding\n// the minimum previous weight recursively until the origin of the weight\n// matrix.\nfunction spliceOperationsFromEditDistances(distances) {\n let i = distances.length - 1;\n let j = distances[0].length - 1;\n let current = distances[i][j];\n let edits = [];\n while (i > 0 || j > 0) {\n if (i == 0) {\n edits.push(EDIT_ADD);\n j--;\n continue;\n }\n if (j == 0) {\n edits.push(EDIT_DELETE);\n i--;\n continue;\n }\n let northWest = distances[i - 1][j - 1];\n let west = distances[i - 1][j];\n let north = distances[i][j - 1];\n\n let min;\n if (west < north)\n min = west < northWest ? west : northWest;\n else\n min = north < northWest ? north : northWest;\n\n if (min == northWest) {\n if (northWest == current) {\n edits.push(EDIT_LEAVE);\n } else {\n edits.push(EDIT_UPDATE);\n current = northWest;\n }\n i--;\n j--;\n } else if (min == west) {\n edits.push(EDIT_DELETE);\n i--;\n current = west;\n } else {\n edits.push(EDIT_ADD);\n j--;\n current = north;\n }\n }\n\n edits.reverse();\n return edits;\n}\n\n/**\n * Splice Projection functions:\n *\n * A splice map is a representation of how a previous array of items\n * was transformed into a new array of items. Conceptually it is a list of\n * tuples of\n *\n * <index, removed, addedCount>\n *\n * which are kept in ascending index order of. The tuple represents that at\n * the |index|, |removed| sequence of items were removed, and counting forward\n * from |index|, |addedCount| items were added.\n */\n\n/**\n * Lacking individual splice mutation information, the minimal set of\n * splices can be synthesized given the previous state and final state of an\n * array. The basic approach is to calculate the edit distance matrix and\n * choose the shortest path through it.\n *\n * Complexity: O(l * p)\n * l: The length of the current array\n * p: The length of the old array\n */\nfunction calcSplices(current, currentStart, currentEnd,\n old, oldStart, oldEnd) {\n let prefixCount = 0;\n let suffixCount = 0;\n let splice;\n\n let minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart);\n if (currentStart == 0 && oldStart == 0)\n prefixCount = sharedPrefix(current, old, minLength);\n\n if (currentEnd == current.length && oldEnd == old.length)\n suffixCount = sharedSuffix(current, old, minLength - prefixCount);\n\n currentStart += prefixCount;\n oldStart += prefixCount;\n currentEnd -= suffixCount;\n oldEnd -= suffixCount;\n\n if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0)\n return [];\n\n if (currentStart == currentEnd) {\n splice = newSplice(currentStart, [], 0);\n while (oldStart < oldEnd)\n splice.removed.push(old[oldStart++]);\n\n return [ splice ];\n } else if (oldStart == oldEnd)\n return [ newSplice(currentStart, [], currentEnd - currentStart) ];\n\n let ops = spliceOperationsFromEditDistances(\n calcEditDistances(current, currentStart, currentEnd,\n old, oldStart, oldEnd));\n\n splice = undefined;\n let splices = [];\n let index = currentStart;\n let oldIndex = oldStart;\n for (let i = 0; i < ops.length; i++) {\n switch(ops[i]) {\n case EDIT_LEAVE:\n if (splice) {\n splices.push(splice);\n splice = undefined;\n }\n\n index++;\n oldIndex++;\n break;\n case EDIT_UPDATE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.addedCount++;\n index++;\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n case EDIT_ADD:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.addedCount++;\n index++;\n break;\n case EDIT_DELETE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n }\n }\n\n if (splice) {\n splices.push(splice);\n }\n return splices;\n}\n\nfunction sharedPrefix(current, old, searchLength) {\n for (let i = 0; i < searchLength; i++)\n if (!equals(current[i], old[i]))\n return i;\n return searchLength;\n}\n\nfunction sharedSuffix(current, old, searchLength) {\n let index1 = current.length;\n let index2 = old.length;\n let count = 0;\n while (count < searchLength && equals(current[--index1], old[--index2]))\n count++;\n\n return count;\n}\n\nfunction equals(currentValue, previousValue) {\n return currentValue === previousValue;\n}\n\nexport function calculateSplices(current, previous) {\n return calcSplices(current, 0, current.length, previous, 0,\n previous.length);\n}\n\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {flush} from './flush.js';\nimport {dispatchEvent, querySelectorAll} from './native-methods.js';\nimport * as mutation from './logical-mutation.js';\nimport {ActiveElementAccessor, ShadowRootAccessor, patchAccessors, patchShadowRootAccessors, IsConnectedAccessor} from './patch-accessors.js';\nimport {addEventListener, removeEventListener} from './patch-events.js';\nimport {attachShadow, ShadyRoot} from './attach-shadow.js';\nimport {shadyDataForNode, ensureShadyDataForNode} from './shady-data.js';\n\nfunction getAssignedSlot(node) {\n mutation.renderRootNode(node);\n const nodeData = shadyDataForNode(node);\n return nodeData && nodeData.assignedSlot || null;\n}\n\nlet windowMixin = {\n\n // NOTE: ensure these methods are bound to `window` so that `this` is correct\n // when called directly from global context without a receiver; e.g.\n // `addEventListener(...)`.\n addEventListener: addEventListener.bind(window),\n\n removeEventListener: removeEventListener.bind(window)\n\n};\n\nlet nodeMixin = {\n\n addEventListener: addEventListener,\n\n removeEventListener: removeEventListener,\n\n appendChild(node) {\n return mutation.insertBefore(this, node);\n },\n\n insertBefore(node, ref_node) {\n return mutation.insertBefore(this, node, ref_node);\n },\n\n removeChild(node) {\n return mutation.removeChild(this, node);\n },\n\n /**\n * @this {Node}\n */\n replaceChild(node, ref_node) {\n mutation.insertBefore(this, node, ref_node);\n mutation.removeChild(this, ref_node);\n return node;\n },\n\n /**\n * @this {Node}\n */\n cloneNode(deep) {\n return mutation.cloneNode(this, deep);\n },\n\n /**\n * @this {Node}\n */\n getRootNode(options) {\n return mutation.getRootNode(this, options);\n },\n\n contains(node) {\n return utils.contains(this, node);\n },\n\n /**\n * @this {Node}\n */\n dispatchEvent(event) {\n flush();\n return dispatchEvent.call(this, event);\n }\n\n};\n\n// NOTE: we can do this regardless of the browser supporting native accessors\n// since this is always \"new\" in that case.\nObject.defineProperties(nodeMixin, IsConnectedAccessor);\n\n// NOTE: For some reason 'Text' redefines 'assignedSlot'\nlet textMixin = {\n /**\n * @this {Text}\n */\n get assignedSlot() {\n return getAssignedSlot(this);\n }\n};\n\nlet fragmentMixin = {\n\n // TODO(sorvell): consider doing native QSA and filtering results.\n /**\n * @this {DocumentFragment}\n */\n querySelector(selector) {\n // match selector and halt on first result.\n let result = mutation.query(this, function(n) {\n return utils.matchesSelector(n, selector);\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n },\n\n /**\n * @this {DocumentFragment}\n */\n // TODO(sorvell): `useNative` option relies on native querySelectorAll and\n // misses distributed nodes, see\n // https://github.com/webcomponents/shadydom/pull/210#issuecomment-361435503\n querySelectorAll(selector, useNative) {\n if (useNative) {\n const o = Array.prototype.slice.call(querySelectorAll.call(this, selector));\n const root = this.getRootNode();\n return o.filter(e => e.getRootNode() == root);\n }\n return mutation.query(this, function(n) {\n return utils.matchesSelector(n, selector);\n });\n }\n\n};\n\nlet slotMixin = {\n\n /**\n * @this {HTMLSlotElement}\n */\n assignedNodes(options) {\n if (this.localName === 'slot') {\n mutation.renderRootNode(this);\n const nodeData = shadyDataForNode(this);\n return nodeData ?\n ((options && options.flatten ? nodeData.flattenedNodes :\n nodeData.assignedNodes) || []) :\n [];\n }\n }\n\n};\n\nlet elementMixin = utils.extendAll({\n\n /**\n * @this {HTMLElement}\n */\n setAttribute(name, value) {\n mutation.setAttribute(this, name, value);\n },\n\n /**\n * @this {HTMLElement}\n */\n removeAttribute(name) {\n mutation.removeAttribute(this, name);\n },\n\n /**\n * @this {HTMLElement}\n */\n attachShadow(options) {\n return attachShadow(this, options);\n },\n\n /**\n * @this {HTMLElement}\n */\n get slot() {\n return this.getAttribute('slot');\n },\n\n /**\n * @this {HTMLElement}\n */\n set slot(value) {\n mutation.setAttribute(this, 'slot', value);\n },\n\n /**\n * @this {HTMLElement}\n */\n get assignedSlot() {\n return getAssignedSlot(this);\n }\n\n}, fragmentMixin, slotMixin);\n\nObject.defineProperties(elementMixin, ShadowRootAccessor);\n\nlet documentMixin = utils.extendAll({\n /**\n * @this {Document}\n */\n importNode(node, deep) {\n return mutation.importNode(node, deep);\n },\n\n /**\n * @this {Document}\n */\n getElementById(id) {\n let result = mutation.query(this, function(n) {\n return n.id == id;\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n }\n\n}, fragmentMixin);\n\nObject.defineProperties(documentMixin, {\n '_activeElement': ActiveElementAccessor.activeElement\n});\n\nlet nativeBlur = HTMLElement.prototype.blur;\n\nlet htmlElementMixin = {\n /**\n * @this {HTMLElement}\n */\n blur() {\n const nodeData = shadyDataForNode(this);\n let root = nodeData && nodeData.root;\n let shadowActive = root && root.activeElement;\n if (shadowActive) {\n shadowActive.blur();\n } else {\n nativeBlur.call(this);\n }\n }\n};\n\nfor (const property of Object.getOwnPropertyNames(Document.prototype)) {\n if (property.substring(0,2) === 'on') {\n Object.defineProperty(htmlElementMixin, property, {\n /** @this {HTMLElement} */\n set: function(fn) {\n const shadyData = ensureShadyDataForNode(this);\n const eventName = property.substring(2);\n shadyData.__onCallbackListeners[property] && this.removeEventListener(eventName, shadyData.__onCallbackListeners[property]);\n this.addEventListener(eventName, fn, {});\n shadyData.__onCallbackListeners[property] = fn;\n },\n /** @this {HTMLElement} */\n get() {\n const shadyData = shadyDataForNode(this);\n return shadyData && shadyData.__onCallbackListeners[property];\n },\n configurable: true\n });\n }\n}\n\nconst shadowRootMixin = {\n /**\n * @this {ShadowRoot}\n */\n addEventListener(type, fn, optionsOrCapture) {\n if (typeof optionsOrCapture !== 'object') {\n optionsOrCapture = {\n capture: Boolean(optionsOrCapture)\n }\n }\n optionsOrCapture.__shadyTarget = this;\n this.host.addEventListener(type, fn, optionsOrCapture);\n },\n\n /**\n * @this {ShadowRoot}\n */\n removeEventListener(type, fn, optionsOrCapture) {\n if (typeof optionsOrCapture !== 'object') {\n optionsOrCapture = {\n capture: Boolean(optionsOrCapture)\n }\n }\n optionsOrCapture.__shadyTarget = this;\n this.host.removeEventListener(type, fn, optionsOrCapture);\n },\n\n /**\n * @this {ShadowRoot}\n */\n getElementById(id) {\n let result = mutation.query(this, function(n) {\n return n.id == id;\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n }\n}\n\nfunction patchBuiltin(proto, obj) {\n let n$ = Object.getOwnPropertyNames(obj);\n for (let i=0; i < n$.length; i++) {\n let n = n$[i];\n let d = Object.getOwnPropertyDescriptor(obj, n);\n // NOTE: we prefer writing directly here because some browsers\n // have descriptors that are writable but not configurable (e.g.\n // `appendChild` on older browsers)\n if (d.value) {\n proto[n] = d.value;\n } else {\n Object.defineProperty(proto, n, d);\n }\n }\n}\n\n// Apply patches to builtins (e.g. Element.prototype). Some of these patches\n// can be done unconditionally (mostly methods like\n// `Element.prototype.appendChild`) and some can only be done when the browser\n// has proper descriptors on the builtin prototype\n// (e.g. `Element.prototype.firstChild`)`. When descriptors are not available,\n// elements are individually patched when needed (see e.g.\n// `patchInside/OutsideElementAccessors` in `patch-accessors.js`).\nexport function patchBuiltins() {\n let nativeHTMLElement =\n (window['customElements'] && window['customElements']['nativeHTMLElement']) ||\n HTMLElement;\n // These patches can always be done, for all supported browsers.\n patchBuiltin(ShadyRoot.prototype, shadowRootMixin);\n patchBuiltin(window.Node.prototype, nodeMixin);\n patchBuiltin(window.Window.prototype, windowMixin);\n patchBuiltin(window.Text.prototype, textMixin);\n patchBuiltin(window.DocumentFragment.prototype, fragmentMixin);\n patchBuiltin(window.Element.prototype, elementMixin);\n patchBuiltin(window.Document.prototype, documentMixin);\n if (window.HTMLSlotElement) {\n patchBuiltin(window.HTMLSlotElement.prototype, slotMixin);\n }\n patchBuiltin(nativeHTMLElement.prototype, htmlElementMixin);\n // These patches can *only* be done\n // on browsers that have proper property descriptors on builtin prototypes.\n // This includes: IE11, Edge, Chrome >= 4?; Safari >= 10, Firefox\n // On older browsers (Chrome <= 4?, Safari 9), a per element patching\n // strategy is used for patching accessors.\n if (utils.settings.hasDescriptors) {\n patchAccessors(window.Node.prototype);\n patchAccessors(window.Text.prototype);\n patchAccessors(window.DocumentFragment.prototype);\n patchAccessors(window.Element.prototype);\n patchAccessors(nativeHTMLElement.prototype);\n patchAccessors(window.Document.prototype);\n if (window.HTMLSlotElement) {\n patchAccessors(window.HTMLSlotElement.prototype);\n }\n }\n patchShadowRootAccessors(ShadyRoot.prototype);\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n/**\n * Patches elements that interacts with ShadyDOM\n * such that tree traversal and mutation apis act like they would under\n * ShadowDOM.\n *\n * This import enables seemless interaction with ShadyDOM powered\n * custom elements, enabling better interoperation with 3rd party code,\n * libraries, and frameworks that use DOM tree manipulation apis.\n */\n\nimport * as utils from './utils.js';\nimport {flush, enqueue} from './flush.js';\nimport {observeChildren, unobserveChildren, filterMutations} from './observe-changes.js';\nimport * as nativeMethods from './native-methods.js';\nimport {accessors as nativeTree} from './native-tree.js';\nimport {patchBuiltins} from './patch-builtins.js';\nimport {patchInsideElementAccessors, patchOutsideElementAccessors} from './patch-accessors.js';\nimport {patchEvents} from './patch-events.js';\nimport {ShadyRoot} from './attach-shadow.js';\n\nif (utils.settings.inUse) {\n let ShadyDOM = {\n // TODO(sorvell): remove when Polymer does not depend on this.\n 'inUse': utils.settings.inUse,\n // NOTE: old browsers without prototype accessors (very old Chrome\n // and Safari) need manually patched accessors to properly set\n // `innerHTML` and `textContent` when an element is:\n // (1) inside a shadowRoot\n // (2) does not have special (slot) children itself\n // (3) and setting the property needs to provoke distribution (because\n // a nested slot is added/removed)\n 'patch': (node) => {\n patchInsideElementAccessors(node);\n patchOutsideElementAccessors(node);\n return node;\n },\n 'isShadyRoot': utils.isShadyRoot,\n 'enqueue': enqueue,\n 'flush': flush,\n 'settings': utils.settings,\n 'filterMutations': filterMutations,\n 'observeChildren': observeChildren,\n 'unobserveChildren': unobserveChildren,\n 'nativeMethods': nativeMethods,\n 'nativeTree': nativeTree,\n // Set to true to defer native custom elements connection until the\n // document has fully parsed. This enables custom elements that create\n // shadowRoots to be defined while the document is loading. Elements\n // customized as they are created by the parser will successfully\n // render with this flag on.\n 'deferConnectionCallbacks': utils.settings['deferConnectionCallbacks']\n };\n\n window['ShadyDOM'] = ShadyDOM;\n\n // Apply patches to events...\n patchEvents();\n // Apply patches to builtins (e.g. Element.prototype) where applicable.\n patchBuiltins();\n\n window.ShadowRoot = ShadyRoot;\n}\n","const reservedTagList = new Set([\n 'annotation-xml',\n 'color-profile',\n 'font-face',\n 'font-face-src',\n 'font-face-uri',\n 'font-face-format',\n 'font-face-name',\n 'missing-glyph',\n]);\n\n/**\n * @param {string} localName\n * @returns {boolean}\n */\nexport function isValidCustomElementName(localName) {\n const reserved = reservedTagList.has(localName);\n const validForm = /^[a-z][.0-9_a-z]*-[\\-.0-9_a-z]*$/.test(localName);\n return !reserved && validForm;\n}\n\n/**\n * @private\n * @param {!Node} node\n * @return {boolean}\n */\nexport function isConnected(node) {\n // Use `Node#isConnected`, if defined.\n const nativeValue = node.isConnected;\n if (nativeValue !== undefined) {\n return nativeValue;\n }\n\n /** @type {?Node|undefined} */\n let current = node;\n while (current && !(current.__CE_isImportDocument || current instanceof Document)) {\n current = current.parentNode || (window.ShadowRoot && current instanceof ShadowRoot ? current.host : undefined);\n }\n return !!(current && (current.__CE_isImportDocument || current instanceof Document));\n}\n\n/**\n * @param {!Node} root\n * @param {!Node} start\n * @return {?Node}\n */\nfunction nextSiblingOrAncestorSibling(root, start) {\n let node = start;\n while (node && node !== root && !node.nextSibling) {\n node = node.parentNode;\n }\n return (!node || node === root) ? null : node.nextSibling;\n}\n\n/**\n * @param {!Node} root\n * @param {!Node} start\n * @return {?Node}\n */\nfunction nextNode(root, start) {\n return start.firstChild ? start.firstChild : nextSiblingOrAncestorSibling(root, start);\n}\n\n/**\n * @param {!Node} root\n * @param {!function(!Element)} callback\n * @param {!Set<Node>=} visitedImports\n */\nexport function walkDeepDescendantElements(root, callback, visitedImports = new Set()) {\n let node = root;\n while (node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = /** @type {!Element} */(node);\n\n callback(element);\n\n const localName = element.localName;\n if (localName === 'link' && element.getAttribute('rel') === 'import') {\n // If this import (polyfilled or not) has it's root node available,\n // walk it.\n const importNode = /** @type {!Node} */ (element.import);\n if (importNode instanceof Node && !visitedImports.has(importNode)) {\n // Prevent multiple walks of the same import root.\n visitedImports.add(importNode);\n\n for (let child = importNode.firstChild; child; child = child.nextSibling) {\n walkDeepDescendantElements(child, callback, visitedImports);\n }\n }\n\n // Ignore descendants of import links to prevent attempting to walk the\n // elements created by the HTML Imports polyfill that we just walked\n // above.\n node = nextSiblingOrAncestorSibling(root, element);\n continue;\n } else if (localName === 'template') {\n // Ignore descendants of templates. There shouldn't be any descendants\n // because they will be moved into `.content` during construction in\n // browsers that support template but, in case they exist and are still\n // waiting to be moved by a polyfill, they will be ignored.\n node = nextSiblingOrAncestorSibling(root, element);\n continue;\n }\n\n // Walk shadow roots.\n const shadowRoot = element.__CE_shadowRoot;\n if (shadowRoot) {\n for (let child = shadowRoot.firstChild; child; child = child.nextSibling) {\n walkDeepDescendantElements(child, callback, visitedImports);\n }\n }\n }\n\n node = nextNode(root, node);\n }\n}\n\n/**\n * Used to suppress Closure's \"Modifying the prototype is only allowed if the\n * constructor is in the same scope\" warning without using\n * `@suppress {newCheckTypes, duplicate}` because `newCheckTypes` is too broad.\n *\n * @param {!Object} destination\n * @param {string} name\n * @param {*} value\n */\nexport function setPropertyUnchecked(destination, name, value) {\n destination[name] = value;\n}\n","import * as Utilities from './Utilities.js';\nimport CEState from './CustomElementState.js';\n\nexport default class CustomElementInternals {\n constructor() {\n /** @type {!Map<string, !CustomElementDefinition>} */\n this._localNameToDefinition = new Map();\n\n /** @type {!Map<!Function, !CustomElementDefinition>} */\n this._constructorToDefinition = new Map();\n\n /** @type {!Array<!function(!Node)>} */\n this._patches = [];\n\n /** @type {boolean} */\n this._hasPatches = false;\n }\n\n /**\n * @param {string} localName\n * @param {!CustomElementDefinition} definition\n */\n setDefinition(localName, definition) {\n this._localNameToDefinition.set(localName, definition);\n this._constructorToDefinition.set(definition.constructor, definition);\n }\n\n /**\n * @param {string} localName\n * @return {!CustomElementDefinition|undefined}\n */\n localNameToDefinition(localName) {\n return this._localNameToDefinition.get(localName);\n }\n\n /**\n * @param {!Function} constructor\n * @return {!CustomElementDefinition|undefined}\n */\n constructorToDefinition(constructor) {\n return this._constructorToDefinition.get(constructor);\n }\n\n /**\n * @param {!function(!Node)} listener\n */\n addPatch(listener) {\n this._hasPatches = true;\n this._patches.push(listener);\n }\n\n /**\n * @param {!Node} node\n */\n patchTree(node) {\n if (!this._hasPatches) return;\n\n Utilities.walkDeepDescendantElements(node, element => this.patch(element));\n }\n\n /**\n * @param {!Node} node\n */\n patch(node) {\n if (!this._hasPatches) return;\n\n if (node.__CE_patched) return;\n node.__CE_patched = true;\n\n for (let i = 0; i < this._patches.length; i++) {\n this._patches[i](node);\n }\n }\n\n /**\n * @param {!Node} root\n */\n connectTree(root) {\n const elements = [];\n\n Utilities.walkDeepDescendantElements(root, element => elements.push(element));\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (element.__CE_state === CEState.custom) {\n this.connectedCallback(element);\n } else {\n this.upgradeElement(element);\n }\n }\n }\n\n /**\n * @param {!Node} root\n */\n disconnectTree(root) {\n const elements = [];\n\n Utilities.walkDeepDescendantElements(root, element => elements.push(element));\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (element.__CE_state === CEState.custom) {\n this.disconnectedCallback(element);\n }\n }\n }\n\n /**\n * Upgrades all uncustomized custom elements at and below a root node for\n * which there is a definition. When custom element reaction callbacks are\n * assumed to be called synchronously (which, by the current DOM / HTML spec\n * definitions, they are *not*), callbacks for both elements customized\n * synchronously by the parser and elements being upgraded occur in the same\n * relative order.\n *\n * NOTE: This function, when used to simulate the construction of a tree that\n * is already created but not customized (i.e. by the parser), does *not*\n * prevent the element from reading the 'final' (true) state of the tree. For\n * example, the element, during truly synchronous parsing / construction would\n * see that it contains no children as they have not yet been inserted.\n * However, this function does not modify the tree, the element will\n * (incorrectly) have children. Additionally, self-modification restrictions\n * for custom element constructors imposed by the DOM spec are *not* enforced.\n *\n *\n * The following nested list shows the steps extending down from the HTML\n * spec's parsing section that cause elements to be synchronously created and\n * upgraded:\n *\n * The \"in body\" insertion mode:\n * https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n * - Switch on token:\n * .. other cases ..\n * -> Any other start tag\n * - [Insert an HTML element](below) for the token.\n *\n * Insert an HTML element:\n * https://html.spec.whatwg.org/multipage/syntax.html#insert-an-html-element\n * - Insert a foreign element for the token in the HTML namespace:\n * https://html.spec.whatwg.org/multipage/syntax.html#insert-a-foreign-element\n * - Create an element for a token:\n * https://html.spec.whatwg.org/multipage/syntax.html#create-an-element-for-the-token\n * - Will execute script flag is true?\n * - (Element queue pushed to the custom element reactions stack.)\n * - Create an element:\n * https://dom.spec.whatwg.org/#concept-create-element\n * - Sync CE flag is true?\n * - Constructor called.\n * - Self-modification restrictions enforced.\n * - Sync CE flag is false?\n * - (Upgrade reaction enqueued.)\n * - Attributes appended to element.\n * (`attributeChangedCallback` reactions enqueued.)\n * - Will execute script flag is true?\n * - (Element queue popped from the custom element reactions stack.\n * Reactions in the popped stack are invoked.)\n * - (Element queue pushed to the custom element reactions stack.)\n * - Insert the element:\n * https://dom.spec.whatwg.org/#concept-node-insert\n * - Shadow-including descendants are connected. During parsing\n * construction, there are no shadow-*excluding* descendants.\n * However, the constructor may have validly attached a shadow\n * tree to itself and added descendants to that shadow tree.\n * (`connectedCallback` reactions enqueued.)\n * - (Element queue popped from the custom element reactions stack.\n * Reactions in the popped stack are invoked.)\n *\n * @param {!Node} root\n * @param {{\n * visitedImports: (!Set<!Node>|undefined),\n * upgrade: (!function(!Element)|undefined),\n * }=} options\n */\n patchAndUpgradeTree(root, options = {}) {\n const visitedImports = options.visitedImports || new Set();\n const upgrade = options.upgrade || (element => this.upgradeElement(element));\n\n const elements = [];\n\n const gatherElements = element => {\n if (element.localName === 'link' && element.getAttribute('rel') === 'import') {\n // The HTML Imports polyfill sets a descendant element of the link to\n // the `import` property, specifically this is *not* a Document.\n const importNode = /** @type {?Node} */ (element.import);\n\n if (importNode instanceof Node) {\n importNode.__CE_isImportDocument = true;\n // Connected links are associated with the registry.\n importNode.__CE_hasRegistry = true;\n }\n\n if (importNode && importNode.readyState === 'complete') {\n importNode.__CE_documentLoadHandled = true;\n } else {\n // If this link's import root is not available, its contents can't be\n // walked. Wait for 'load' and walk it when it's ready.\n element.addEventListener('load', () => {\n const importNode = /** @type {!Node} */ (element.import);\n\n if (importNode.__CE_documentLoadHandled) return;\n importNode.__CE_documentLoadHandled = true;\n\n // Clone the `visitedImports` set that was populated sync during\n // the `patchAndUpgradeTree` call that caused this 'load' handler to\n // be added. Then, remove *this* link's import node so that we can\n // walk that import again, even if it was partially walked later\n // during the same `patchAndUpgradeTree` call.\n const clonedVisitedImports = new Set(visitedImports);\n clonedVisitedImports.delete(importNode);\n\n this.patchAndUpgradeTree(importNode, {visitedImports: clonedVisitedImports, upgrade});\n });\n }\n } else {\n elements.push(element);\n }\n };\n\n // `walkDeepDescendantElements` populates (and internally checks against)\n // `visitedImports` when traversing a loaded import.\n Utilities.walkDeepDescendantElements(root, gatherElements, visitedImports);\n\n if (this._hasPatches) {\n for (let i = 0; i < elements.length; i++) {\n this.patch(elements[i]);\n }\n }\n\n for (let i = 0; i < elements.length; i++) {\n upgrade(elements[i]);\n }\n }\n\n /**\n * @param {!Element} element\n */\n upgradeElement(element) {\n const currentState = element.__CE_state;\n if (currentState !== undefined) return;\n\n // Prevent elements created in documents without a browsing context from\n // upgrading.\n //\n // https://html.spec.whatwg.org/multipage/custom-elements.html#look-up-a-custom-element-definition\n // \"If document does not have a browsing context, return null.\"\n //\n // https://html.spec.whatwg.org/multipage/window-object.html#dom-document-defaultview\n // \"The defaultView IDL attribute of the Document interface, on getting,\n // must return this Document's browsing context's WindowProxy object, if\n // this Document has an associated browsing context, or null otherwise.\"\n const ownerDocument = element.ownerDocument;\n if (\n !ownerDocument.defaultView &&\n !(ownerDocument.__CE_isImportDocument && ownerDocument.__CE_hasRegistry)\n ) return;\n\n const definition = this.localNameToDefinition(element.localName);\n if (!definition) return;\n\n definition.constructionStack.push(element);\n\n const constructor = definition.constructor;\n try {\n try {\n let result = new (constructor)();\n if (result !== element) {\n throw new Error('The custom element constructor did not produce the element being upgraded.');\n }\n } finally {\n definition.constructionStack.pop();\n }\n } catch (e) {\n element.__CE_state = CEState.failed;\n throw e;\n }\n\n element.__CE_state = CEState.custom;\n element.__CE_definition = definition;\n\n if (definition.attributeChangedCallback) {\n const observedAttributes = definition.observedAttributes;\n for (let i = 0; i < observedAttributes.length; i++) {\n const name = observedAttributes[i];\n const value = element.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(element, name, null, value, null);\n }\n }\n }\n\n if (Utilities.isConnected(element)) {\n this.connectedCallback(element);\n }\n }\n\n /**\n * @param {!Element} element\n */\n connectedCallback(element) {\n const definition = element.__CE_definition;\n if (definition.connectedCallback) {\n definition.connectedCallback.call(element);\n }\n }\n\n /**\n * @param {!Element} element\n */\n disconnectedCallback(element) {\n const definition = element.__CE_definition;\n if (definition.disconnectedCallback) {\n definition.disconnectedCallback.call(element);\n }\n }\n\n /**\n * @param {!Element} element\n * @param {string} name\n * @param {?string} oldValue\n * @param {?string} newValue\n * @param {?string} namespace\n */\n attributeChangedCallback(element, name, oldValue, newValue, namespace) {\n const definition = element.__CE_definition;\n if (\n definition.attributeChangedCallback &&\n definition.observedAttributes.indexOf(name) > -1\n ) {\n definition.attributeChangedCallback.call(element, name, oldValue, newValue, namespace);\n }\n }\n}\n","/**\n * @enum {number}\n */\nconst CustomElementState = {\n custom: 1,\n failed: 2,\n};\n\nexport default CustomElementState;\n","import CustomElementInternals from './CustomElementInternals.js';\n\nexport default class DocumentConstructionObserver {\n constructor(internals, doc) {\n /**\n * @type {!CustomElementInternals}\n */\n this._internals = internals;\n\n /**\n * @type {!Document}\n */\n this._document = doc;\n\n /**\n * @type {MutationObserver|undefined}\n */\n this._observer = undefined;\n\n\n // Simulate tree construction for all currently accessible nodes in the\n // document.\n this._internals.patchAndUpgradeTree(this._document);\n\n if (this._document.readyState === 'loading') {\n this._observer = new MutationObserver(this._handleMutations.bind(this));\n\n // Nodes created by the parser are given to the observer *before* the next\n // task runs. Inline scripts are run in a new task. This means that the\n // observer will be able to handle the newly parsed nodes before the inline\n // script is run.\n this._observer.observe(this._document, {\n childList: true,\n subtree: true,\n });\n }\n }\n\n disconnect() {\n if (this._observer) {\n this._observer.disconnect();\n }\n }\n\n /**\n * @param {!Array<!MutationRecord>} mutations\n */\n _handleMutations(mutations) {\n // Once the document's `readyState` is 'interactive' or 'complete', all new\n // nodes created within that document will be the result of script and\n // should be handled by patching.\n const readyState = this._document.readyState;\n if (readyState === 'interactive' || readyState === 'complete') {\n this.disconnect();\n }\n\n for (let i = 0; i < mutations.length; i++) {\n const addedNodes = mutations[i].addedNodes;\n for (let j = 0; j < addedNodes.length; j++) {\n const node = addedNodes[j];\n this._internals.patchAndUpgradeTree(node);\n }\n }\n }\n}\n","import CustomElementInternals from './CustomElementInternals.js';\nimport DocumentConstructionObserver from './DocumentConstructionObserver.js';\nimport Deferred from './Deferred.js';\nimport * as Utilities from './Utilities.js';\n\n/**\n * @unrestricted\n */\nexport default class CustomElementRegistry {\n\n /**\n * @param {!CustomElementInternals} internals\n */\n constructor(internals) {\n /**\n * @private\n * @type {boolean}\n */\n this._elementDefinitionIsRunning = false;\n\n /**\n * @private\n * @type {!CustomElementInternals}\n */\n this._internals = internals;\n\n /**\n * @private\n * @type {!Map<string, !Deferred<undefined>>}\n */\n this._whenDefinedDeferred = new Map();\n\n /**\n * The default flush callback triggers the document walk synchronously.\n * @private\n * @type {!Function}\n */\n this._flushCallback = fn => fn();\n\n /**\n * @private\n * @type {boolean}\n */\n this._flushPending = false;\n\n /**\n * @private\n * @type {!Array<!CustomElementDefinition>}\n */\n this._pendingDefinitions = [];\n\n /**\n * @private\n * @type {!DocumentConstructionObserver}\n */\n this._documentConstructionObserver = new DocumentConstructionObserver(internals, document);\n }\n\n /**\n * @param {string} localName\n * @param {!Function} constructor\n */\n define(localName, constructor) {\n if (!(constructor instanceof Function)) {\n throw new TypeError('Custom element constructors must be functions.');\n }\n\n if (!Utilities.isValidCustomElementName(localName)) {\n throw new SyntaxError(`The element name '${localName}' is not valid.`);\n }\n\n if (this._internals.localNameToDefinition(localName)) {\n throw new Error(`A custom element with name '${localName}' has already been defined.`);\n }\n\n if (this._elementDefinitionIsRunning) {\n throw new Error('A custom element is already being defined.');\n }\n this._elementDefinitionIsRunning = true;\n\n let connectedCallback;\n let disconnectedCallback;\n let adoptedCallback;\n let attributeChangedCallback;\n let observedAttributes;\n try {\n /** @type {!Object} */\n const prototype = constructor.prototype;\n if (!(prototype instanceof Object)) {\n throw new TypeError('The custom element constructor\\'s prototype is not an object.');\n }\n\n function getCallback(name) {\n const callbackValue = prototype[name];\n if (callbackValue !== undefined && !(callbackValue instanceof Function)) {\n throw new Error(`The '${name}' callback must be a function.`);\n }\n return callbackValue;\n }\n\n connectedCallback = getCallback('connectedCallback');\n disconnectedCallback = getCallback('disconnectedCallback');\n adoptedCallback = getCallback('adoptedCallback');\n attributeChangedCallback = getCallback('attributeChangedCallback');\n observedAttributes = constructor['observedAttributes'] || [];\n } catch (e) {\n return;\n } finally {\n this._elementDefinitionIsRunning = false;\n }\n\n const definition = {\n localName,\n constructor,\n connectedCallback,\n disconnectedCallback,\n adoptedCallback,\n attributeChangedCallback,\n observedAttributes,\n constructionStack: [],\n };\n\n this._internals.setDefinition(localName, definition);\n this._pendingDefinitions.push(definition);\n\n // If we've already called the flush callback and it hasn't called back yet,\n // don't call it again.\n if (!this._flushPending) {\n this._flushPending = true;\n this._flushCallback(() => this._flush());\n }\n }\n\n upgrade(element) {\n this._internals.patchAndUpgradeTree(element);\n }\n\n _flush() {\n // If no new definitions were defined, don't attempt to flush. This could\n // happen if a flush callback keeps the function it is given and calls it\n // multiple times.\n if (this._flushPending === false) return;\n this._flushPending = false;\n\n const pendingDefinitions = this._pendingDefinitions;\n\n /**\n * Unupgraded elements with definitions that were defined *before* the last\n * flush, in document order.\n * @type {!Array<!Element>}\n */\n const elementsWithStableDefinitions = [];\n\n /**\n * A map from `localName`s of definitions that were defined *after* the last\n * flush to unupgraded elements matching that definition, in document order.\n * @type {!Map<string, !Array<!Element>>}\n */\n const elementsWithPendingDefinitions = new Map();\n for (let i = 0; i < pendingDefinitions.length; i++) {\n elementsWithPendingDefinitions.set(pendingDefinitions[i].localName, []);\n }\n\n this._internals.patchAndUpgradeTree(document, {\n upgrade: element => {\n // Ignore the element if it has already upgraded or failed to upgrade.\n if (element.__CE_state !== undefined) return;\n\n const localName = element.localName;\n\n // If there is an applicable pending definition for the element, add the\n // element to the list of elements to be upgraded with that definition.\n const pendingElements = elementsWithPendingDefinitions.get(localName);\n if (pendingElements) {\n pendingElements.push(element);\n // If there is *any other* applicable definition for the element, add it\n // to the list of elements with stable definitions that need to be upgraded.\n } else if (this._internals.localNameToDefinition(localName)) {\n elementsWithStableDefinitions.push(element);\n }\n },\n });\n\n // Upgrade elements with 'stable' definitions first.\n for (let i = 0; i < elementsWithStableDefinitions.length; i++) {\n this._internals.upgradeElement(elementsWithStableDefinitions[i]);\n }\n\n // Upgrade elements with 'pending' definitions in the order they were defined.\n while (pendingDefinitions.length > 0) {\n const definition = pendingDefinitions.shift();\n const localName = definition.localName;\n\n // Attempt to upgrade all applicable elements.\n const pendingUpgradableElements = elementsWithPendingDefinitions.get(definition.localName);\n for (let i = 0; i < pendingUpgradableElements.length; i++) {\n this._internals.upgradeElement(pendingUpgradableElements[i]);\n }\n\n // Resolve any promises created by `whenDefined` for the definition.\n const deferred = this._whenDefinedDeferred.get(localName);\n if (deferred) {\n deferred.resolve(undefined);\n }\n }\n }\n\n /**\n * @param {string} localName\n * @return {Function|undefined}\n */\n get(localName) {\n const definition = this._internals.localNameToDefinition(localName);\n if (definition) {\n return definition.constructor;\n }\n\n return undefined;\n }\n\n /**\n * @param {string} localName\n * @return {!Promise<undefined>}\n */\n whenDefined(localName) {\n if (!Utilities.isValidCustomElementName(localName)) {\n return Promise.reject(new SyntaxError(`'${localName}' is not a valid custom element name.`));\n }\n\n const prior = this._whenDefinedDeferred.get(localName);\n if (prior) {\n return prior.toPromise();\n }\n\n const deferred = new Deferred();\n this._whenDefinedDeferred.set(localName, deferred);\n\n const definition = this._internals.localNameToDefinition(localName);\n // Resolve immediately only if the given local name has a definition *and*\n // the full document walk to upgrade elements with that local name has\n // already happened.\n if (definition && !this._pendingDefinitions.some(d => d.localName === localName)) {\n deferred.resolve(undefined);\n }\n\n return deferred.toPromise();\n }\n\n polyfillWrapFlushCallback(outer) {\n this._documentConstructionObserver.disconnect();\n const inner = this._flushCallback;\n this._flushCallback = flush => outer(() => inner(flush));\n }\n}\n\n// Closure compiler exports.\nwindow['CustomElementRegistry'] = CustomElementRegistry;\nCustomElementRegistry.prototype['define'] = CustomElementRegistry.prototype.define;\nCustomElementRegistry.prototype['upgrade'] = CustomElementRegistry.prototype.upgrade;\nCustomElementRegistry.prototype['get'] = CustomElementRegistry.prototype.get;\nCustomElementRegistry.prototype['whenDefined'] = CustomElementRegistry.prototype.whenDefined;\nCustomElementRegistry.prototype['polyfillWrapFlushCallback'] = CustomElementRegistry.prototype.polyfillWrapFlushCallback;\n","/**\n * @template T\n */\nexport default class Deferred {\n constructor() {\n /**\n * @private\n * @type {T|undefined}\n */\n this._value = undefined;\n\n /**\n * @private\n * @type {Function|undefined}\n */\n this._resolve = undefined;\n\n /**\n * @private\n * @type {!Promise<T>}\n */\n this._promise = new Promise(resolve => {\n this._resolve = resolve;\n\n if (this._value) {\n resolve(this._value);\n }\n });\n }\n\n /**\n * @param {T} value\n */\n resolve(value) {\n if (this._value) {\n throw new Error('Already resolved.');\n }\n\n this._value = value;\n\n if (this._resolve) {\n this._resolve(value);\n }\n }\n\n /**\n * @return {!Promise<T>}\n */\n toPromise() {\n return this._promise;\n }\n}\n","export default {\n Document_createElement: window.Document.prototype.createElement,\n Document_createElementNS: window.Document.prototype.createElementNS,\n Document_importNode: window.Document.prototype.importNode,\n Document_prepend: window.Document.prototype['prepend'],\n Document_append: window.Document.prototype['append'],\n DocumentFragment_prepend: window.DocumentFragment.prototype['prepend'],\n DocumentFragment_append: window.DocumentFragment.prototype['append'],\n Node_cloneNode: window.Node.prototype.cloneNode,\n Node_appendChild: window.Node.prototype.appendChild,\n Node_insertBefore: window.Node.prototype.insertBefore,\n Node_removeChild: window.Node.prototype.removeChild,\n Node_replaceChild: window.Node.prototype.replaceChild,\n Node_textContent: Object.getOwnPropertyDescriptor(window.Node.prototype, 'textContent'),\n Element_attachShadow: window.Element.prototype['attachShadow'],\n Element_innerHTML: Object.getOwnPropertyDescriptor(window.Element.prototype, 'innerHTML'),\n Element_getAttribute: window.Element.prototype.getAttribute,\n Element_setAttribute: window.Element.prototype.setAttribute,\n Element_removeAttribute: window.Element.prototype.removeAttribute,\n Element_getAttributeNS: window.Element.prototype.getAttributeNS,\n Element_setAttributeNS: window.Element.prototype.setAttributeNS,\n Element_removeAttributeNS: window.Element.prototype.removeAttributeNS,\n Element_insertAdjacentElement: window.Element.prototype['insertAdjacentElement'],\n Element_insertAdjacentHTML: window.Element.prototype['insertAdjacentHTML'],\n Element_prepend: window.Element.prototype['prepend'],\n Element_append: window.Element.prototype['append'],\n Element_before: window.Element.prototype['before'],\n Element_after: window.Element.prototype['after'],\n Element_replaceWith: window.Element.prototype['replaceWith'],\n Element_remove: window.Element.prototype['remove'],\n HTMLElement: window.HTMLElement,\n HTMLElement_innerHTML: Object.getOwnPropertyDescriptor(window.HTMLElement.prototype, 'innerHTML'),\n HTMLElement_insertAdjacentElement: window.HTMLElement.prototype['insertAdjacentElement'],\n HTMLElement_insertAdjacentHTML: window.HTMLElement.prototype['insertAdjacentHTML'],\n};\n","/**\n * This class exists only to work around Closure's lack of a way to describe\n * singletons. It represents the 'already constructed marker' used in custom\n * element construction stacks.\n *\n * https://html.spec.whatwg.org/#concept-already-constructed-marker\n */\nclass AlreadyConstructedMarker {}\n\nexport default new AlreadyConstructedMarker();\n","import CustomElementInternals from '../../CustomElementInternals.js';\nimport * as Utilities from '../../Utilities.js';\n\n/**\n * @typedef {{\n * prepend: !function(...(!Node|string)),\n * append: !function(...(!Node|string)),\n * }}\n */\nlet ParentNodeNativeMethods;\n\n/**\n * @param {!CustomElementInternals} internals\n * @param {!Object} destination\n * @param {!ParentNodeNativeMethods} builtIn\n */\nexport default function(internals, destination, builtIn) {\n /**\n * @param {!function(...(!Node|string))} builtInMethod\n * @return {!function(...(!Node|string))}\n */\n function appendPrependPatch(builtInMethod) {\n return function(...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n * @type {!Array<!Node>}\n */\n const flattenedNodes = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n * @type {!Array<!Node>}\n */\n const connectedElements = [];\n\n for (var i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n builtInMethod.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n };\n }\n\n if (builtIn.prepend !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'prepend', appendPrependPatch(builtIn.prepend));\n }\n\n if (builtIn.append !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'append', appendPrependPatch(builtIn.append));\n }\n};\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport CustomElementInternals from './CustomElementInternals.js';\nimport CustomElementRegistry from './CustomElementRegistry.js';\n\nimport PatchHTMLElement from './Patch/HTMLElement.js';\nimport PatchDocument from './Patch/Document.js';\nimport PatchDocumentFragment from './Patch/DocumentFragment.js';\nimport PatchNode from './Patch/Node.js';\nimport PatchElement from './Patch/Element.js';\n\nconst priorCustomElements = window['customElements'];\n\nif (!priorCustomElements ||\n priorCustomElements['forcePolyfill'] ||\n (typeof priorCustomElements['define'] != 'function') ||\n (typeof priorCustomElements['get'] != 'function')) {\n /** @type {!CustomElementInternals} */\n const internals = new CustomElementInternals();\n\n PatchHTMLElement(internals);\n PatchDocument(internals);\n PatchDocumentFragment(internals);\n PatchNode(internals);\n PatchElement(internals);\n\n // The main document is always associated with the registry.\n document.__CE_hasRegistry = true;\n\n /** @type {!CustomElementRegistry} */\n const customElements = new CustomElementRegistry(internals);\n\n Object.defineProperty(window, 'customElements', {\n configurable: true,\n enumerable: true,\n value: customElements,\n });\n}\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport CEState from '../CustomElementState.js';\nimport AlreadyConstructedMarker from '../AlreadyConstructedMarker.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n window['HTMLElement'] = (function() {\n /**\n * @type {function(new: HTMLElement): !HTMLElement}\n */\n function HTMLElement() {\n // This should really be `new.target` but `new.target` can't be emulated\n // in ES5. Assuming the user keeps the default value of the constructor's\n // prototype's `constructor` property, this is equivalent.\n /** @type {!Function} */\n const constructor = this.constructor;\n\n const definition = internals.constructorToDefinition(constructor);\n if (!definition) {\n throw new Error('The custom element being constructed was not registered with `customElements`.');\n }\n\n const constructionStack = definition.constructionStack;\n\n if (constructionStack.length === 0) {\n const element = Native.Document_createElement.call(document, definition.localName);\n Object.setPrototypeOf(element, constructor.prototype);\n element.__CE_state = CEState.custom;\n element.__CE_definition = definition;\n internals.patch(element);\n return element;\n }\n\n const lastIndex = constructionStack.length - 1;\n const element = constructionStack[lastIndex];\n if (element === AlreadyConstructedMarker) {\n throw new Error('The HTMLElement constructor was either called reentrantly for this constructor or called multiple times.');\n }\n constructionStack[lastIndex] = AlreadyConstructedMarker;\n\n Object.setPrototypeOf(element, constructor.prototype);\n internals.patch(/** @type {!HTMLElement} */ (element));\n\n return element;\n }\n\n HTMLElement.prototype = Native.HTMLElement.prototype;\n // Safari 9 has `writable: false` on the propertyDescriptor\n // Make it writable so that TypeScript can patch up the\n // constructor in the ES5 compiled code.\n Object.defineProperty(HTMLElement.prototype, 'constructor', {\n writable: true,\n configurable: true,\n enumerable: false,\n value: HTMLElement\n });\n\n return HTMLElement;\n })();\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport * as Utilities from '../Utilities.js';\n\nimport PatchParentNode from './Interface/ParentNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n Utilities.setPropertyUnchecked(Document.prototype, 'createElement',\n /**\n * @this {Document}\n * @param {string} localName\n * @return {!Element}\n */\n function(localName) {\n // Only create custom elements if this document is associated with the registry.\n if (this.__CE_hasRegistry) {\n const definition = internals.localNameToDefinition(localName);\n if (definition) {\n return new (definition.constructor)();\n }\n }\n\n const result = /** @type {!Element} */\n (Native.Document_createElement.call(this, localName));\n internals.patch(result);\n return result;\n });\n\n Utilities.setPropertyUnchecked(Document.prototype, 'importNode',\n /**\n * @this {Document}\n * @param {!Node} node\n * @param {boolean=} deep\n * @return {!Node}\n */\n function(node, deep) {\n const clone = Native.Document_importNode.call(this, node, deep);\n // Only create custom elements if this document is associated with the registry.\n if (!this.__CE_hasRegistry) {\n internals.patchTree(clone);\n } else {\n internals.patchAndUpgradeTree(clone);\n }\n return clone;\n });\n\n const NS_HTML = \"http://www.w3.org/1999/xhtml\";\n\n Utilities.setPropertyUnchecked(Document.prototype, 'createElementNS',\n /**\n * @this {Document}\n * @param {?string} namespace\n * @param {string} localName\n * @return {!Element}\n */\n function(namespace, localName) {\n // Only create custom elements if this document is associated with the registry.\n if (this.__CE_hasRegistry && (namespace === null || namespace === NS_HTML)) {\n const definition = internals.localNameToDefinition(localName);\n if (definition) {\n return new (definition.constructor)();\n }\n }\n\n const result = /** @type {!Element} */\n (Native.Document_createElementNS.call(this, namespace, localName));\n internals.patch(result);\n return result;\n });\n\n PatchParentNode(internals, Document.prototype, {\n prepend: Native.Document_prepend,\n append: Native.Document_append,\n });\n};\n","import CustomElementInternals from '../CustomElementInternals.js';\nimport Native from './Native.js';\nimport PatchParentNode from './Interface/ParentNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n PatchParentNode(internals, DocumentFragment.prototype, {\n prepend: Native.DocumentFragment_prepend,\n append: Native.DocumentFragment_append,\n });\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport * as Utilities from '../Utilities.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n // `Node#nodeValue` is implemented on `Attr`.\n // `Node#textContent` is implemented on `Attr`, `Element`.\n\n Utilities.setPropertyUnchecked(Node.prototype, 'insertBefore',\n /**\n * @this {Node}\n * @param {!Node} node\n * @param {?Node} refNode\n * @return {!Node}\n */\n function(node, refNode) {\n if (node instanceof DocumentFragment) {\n const insertedNodes = Array.prototype.slice.apply(node.childNodes);\n const nativeResult = Native.Node_insertBefore.call(this, node, refNode);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeWasConnected = Utilities.isConnected(node);\n const nativeResult = Native.Node_insertBefore.call(this, node, refNode);\n\n if (nodeWasConnected) {\n internals.disconnectTree(node);\n }\n\n if (Utilities.isConnected(this)) {\n internals.connectTree(node);\n }\n\n return nativeResult;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'appendChild',\n /**\n * @this {Node}\n * @param {!Node} node\n * @return {!Node}\n */\n function(node) {\n if (node instanceof DocumentFragment) {\n const insertedNodes = Array.prototype.slice.apply(node.childNodes);\n const nativeResult = Native.Node_appendChild.call(this, node);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeWasConnected = Utilities.isConnected(node);\n const nativeResult = Native.Node_appendChild.call(this, node);\n\n if (nodeWasConnected) {\n internals.disconnectTree(node);\n }\n\n if (Utilities.isConnected(this)) {\n internals.connectTree(node);\n }\n\n return nativeResult;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'cloneNode',\n /**\n * @this {Node}\n * @param {boolean=} deep\n * @return {!Node}\n */\n function(deep) {\n const clone = Native.Node_cloneNode.call(this, deep);\n // Only create custom elements if this element's owner document is\n // associated with the registry.\n if (!this.ownerDocument.__CE_hasRegistry) {\n internals.patchTree(clone);\n } else {\n internals.patchAndUpgradeTree(clone);\n }\n return clone;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'removeChild',\n /**\n * @this {Node}\n * @param {!Node} node\n * @return {!Node}\n */\n function(node) {\n const nodeWasConnected = Utilities.isConnected(node);\n const nativeResult = Native.Node_removeChild.call(this, node);\n\n if (nodeWasConnected) {\n internals.disconnectTree(node);\n }\n\n return nativeResult;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'replaceChild',\n /**\n * @this {Node}\n * @param {!Node} nodeToInsert\n * @param {!Node} nodeToRemove\n * @return {!Node}\n */\n function(nodeToInsert, nodeToRemove) {\n if (nodeToInsert instanceof DocumentFragment) {\n const insertedNodes = Array.prototype.slice.apply(nodeToInsert.childNodes);\n const nativeResult = Native.Node_replaceChild.call(this, nodeToInsert, nodeToRemove);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n internals.disconnectTree(nodeToRemove);\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeToInsertWasConnected = Utilities.isConnected(nodeToInsert);\n const nativeResult = Native.Node_replaceChild.call(this, nodeToInsert, nodeToRemove);\n const thisIsConnected = Utilities.isConnected(this);\n\n if (thisIsConnected) {\n internals.disconnectTree(nodeToRemove);\n }\n\n if (nodeToInsertWasConnected) {\n internals.disconnectTree(nodeToInsert);\n }\n\n if (thisIsConnected) {\n internals.connectTree(nodeToInsert);\n }\n\n return nativeResult;\n });\n\n\n function patch_textContent(destination, baseDescriptor) {\n Object.defineProperty(destination, 'textContent', {\n enumerable: baseDescriptor.enumerable,\n configurable: true,\n get: baseDescriptor.get,\n set: /** @this {Node} */ function(assignedValue) {\n // If this is a text node then there are no nodes to disconnect.\n if (this.nodeType === Node.TEXT_NODE) {\n baseDescriptor.set.call(this, assignedValue);\n return;\n }\n\n let removedNodes = undefined;\n // Checking for `firstChild` is faster than reading `childNodes.length`\n // to compare with 0.\n if (this.firstChild) {\n // Using `childNodes` is faster than `children`, even though we only\n // care about elements.\n const childNodes = this.childNodes;\n const childNodesLength = childNodes.length;\n if (childNodesLength > 0 && Utilities.isConnected(this)) {\n // Copying an array by iterating is faster than using slice.\n removedNodes = new Array(childNodesLength);\n for (let i = 0; i < childNodesLength; i++) {\n removedNodes[i] = childNodes[i];\n }\n }\n }\n\n baseDescriptor.set.call(this, assignedValue);\n\n if (removedNodes) {\n for (let i = 0; i < removedNodes.length; i++) {\n internals.disconnectTree(removedNodes[i]);\n }\n }\n },\n });\n }\n\n if (Native.Node_textContent && Native.Node_textContent.get) {\n patch_textContent(Node.prototype, Native.Node_textContent);\n } else {\n internals.addPatch(function(element) {\n patch_textContent(element, {\n enumerable: true,\n configurable: true,\n // NOTE: This implementation of the `textContent` getter assumes that\n // text nodes' `textContent` getter will not be patched.\n get: /** @this {Node} */ function() {\n /** @type {!Array<string>} */\n const parts = [];\n\n for (let i = 0; i < this.childNodes.length; i++) {\n parts.push(this.childNodes[i].textContent);\n }\n\n return parts.join('');\n },\n set: /** @this {Node} */ function(assignedValue) {\n while (this.firstChild) {\n Native.Node_removeChild.call(this, this.firstChild);\n }\n Native.Node_appendChild.call(this, document.createTextNode(assignedValue));\n },\n });\n });\n }\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport CEState from '../CustomElementState.js';\nimport * as Utilities from '../Utilities.js';\n\nimport PatchParentNode from './Interface/ParentNode.js';\nimport PatchChildNode from './Interface/ChildNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n if (Native.Element_attachShadow) {\n Utilities.setPropertyUnchecked(Element.prototype, 'attachShadow',\n /**\n * @this {Element}\n * @param {!{mode: string}} init\n * @return {ShadowRoot}\n */\n function(init) {\n const shadowRoot = Native.Element_attachShadow.call(this, init);\n this.__CE_shadowRoot = shadowRoot;\n return shadowRoot;\n });\n }\n\n\n function patch_innerHTML(destination, baseDescriptor) {\n Object.defineProperty(destination, 'innerHTML', {\n enumerable: baseDescriptor.enumerable,\n configurable: true,\n get: baseDescriptor.get,\n set: /** @this {Element} */ function(htmlString) {\n const isConnected = Utilities.isConnected(this);\n\n // NOTE: In IE11, when using the native `innerHTML` setter, all nodes\n // that were previously descendants of the context element have all of\n // their children removed as part of the set - the entire subtree is\n // 'disassembled'. This work around walks the subtree *before* using the\n // native setter.\n /** @type {!Array<!Element>|undefined} */\n let removedElements = undefined;\n if (isConnected) {\n removedElements = [];\n Utilities.walkDeepDescendantElements(this, element => {\n if (element !== this) {\n removedElements.push(element);\n }\n });\n }\n\n baseDescriptor.set.call(this, htmlString);\n\n if (removedElements) {\n for (let i = 0; i < removedElements.length; i++) {\n const element = removedElements[i];\n if (element.__CE_state === CEState.custom) {\n internals.disconnectedCallback(element);\n }\n }\n }\n\n // Only create custom elements if this element's owner document is\n // associated with the registry.\n if (!this.ownerDocument.__CE_hasRegistry) {\n internals.patchTree(this);\n } else {\n internals.patchAndUpgradeTree(this);\n }\n return htmlString;\n },\n });\n }\n\n if (Native.Element_innerHTML && Native.Element_innerHTML.get) {\n patch_innerHTML(Element.prototype, Native.Element_innerHTML);\n } else if (Native.HTMLElement_innerHTML && Native.HTMLElement_innerHTML.get) {\n patch_innerHTML(HTMLElement.prototype, Native.HTMLElement_innerHTML);\n } else {\n\n internals.addPatch(function(element) {\n patch_innerHTML(element, {\n enumerable: true,\n configurable: true,\n // Implements getting `innerHTML` by performing an unpatched `cloneNode`\n // of the element and returning the resulting element's `innerHTML`.\n // TODO: Is this too expensive?\n get: /** @this {Element} */ function() {\n return Native.Node_cloneNode.call(this, true).innerHTML;\n },\n // Implements setting `innerHTML` by creating an unpatched element,\n // setting `innerHTML` of that element and replacing the target\n // element's children with those of the unpatched element.\n set: /** @this {Element} */ function(assignedValue) {\n // NOTE: re-route to `content` for `template` elements.\n // We need to do this because `template.appendChild` does not\n // route into `template.content`.\n const isTemplate = (this.localName === 'template');\n /** @type {!Node} */\n const content = isTemplate ? (/** @type {!HTMLTemplateElement} */\n (this)).content : this;\n /** @type {!Node} */\n const rawElement = Native.Document_createElementNS.call(document,\n this.namespaceURI, this.localName);\n rawElement.innerHTML = assignedValue;\n\n while (content.childNodes.length > 0) {\n Native.Node_removeChild.call(content, content.childNodes[0]);\n }\n const container = isTemplate ? rawElement.content : rawElement;\n while (container.childNodes.length > 0) {\n Native.Node_appendChild.call(content, container.childNodes[0]);\n }\n },\n });\n });\n }\n\n\n Utilities.setPropertyUnchecked(Element.prototype, 'setAttribute',\n /**\n * @this {Element}\n * @param {string} name\n * @param {string} newValue\n */\n function(name, newValue) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_setAttribute.call(this, name, newValue);\n }\n\n const oldValue = Native.Element_getAttribute.call(this, name);\n Native.Element_setAttribute.call(this, name, newValue);\n newValue = Native.Element_getAttribute.call(this, name);\n internals.attributeChangedCallback(this, name, oldValue, newValue, null);\n });\n\n Utilities.setPropertyUnchecked(Element.prototype, 'setAttributeNS',\n /**\n * @this {Element}\n * @param {?string} namespace\n * @param {string} name\n * @param {string} newValue\n */\n function(namespace, name, newValue) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_setAttributeNS.call(this, namespace, name, newValue);\n }\n\n const oldValue = Native.Element_getAttributeNS.call(this, namespace, name);\n Native.Element_setAttributeNS.call(this, namespace, name, newValue);\n newValue = Native.Element_getAttributeNS.call(this, namespace, name);\n internals.attributeChangedCallback(this, name, oldValue, newValue, namespace);\n });\n\n Utilities.setPropertyUnchecked(Element.prototype, 'removeAttribute',\n /**\n * @this {Element}\n * @param {string} name\n */\n function(name) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_removeAttribute.call(this, name);\n }\n\n const oldValue = Native.Element_getAttribute.call(this, name);\n Native.Element_removeAttribute.call(this, name);\n if (oldValue !== null) {\n internals.attributeChangedCallback(this, name, oldValue, null, null);\n }\n });\n\n Utilities.setPropertyUnchecked(Element.prototype, 'removeAttributeNS',\n /**\n * @this {Element}\n * @param {?string} namespace\n * @param {string} name\n */\n function(namespace, name) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_removeAttributeNS.call(this, namespace, name);\n }\n\n const oldValue = Native.Element_getAttributeNS.call(this, namespace, name);\n Native.Element_removeAttributeNS.call(this, namespace, name);\n // In older browsers, `Element#getAttributeNS` may return the empty string\n // instead of null if the attribute does not exist. For details, see;\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttributeNS#Notes\n const newValue = Native.Element_getAttributeNS.call(this, namespace, name);\n if (oldValue !== newValue) {\n internals.attributeChangedCallback(this, name, oldValue, newValue, namespace);\n }\n });\n\n\n function patch_insertAdjacentElement(destination, baseMethod) {\n Utilities.setPropertyUnchecked(destination, 'insertAdjacentElement',\n /**\n * @this {Element}\n * @param {string} position\n * @param {!Element} element\n * @return {?Element}\n */\n function(position, element) {\n const wasConnected = Utilities.isConnected(element);\n const insertedElement = /** @type {!Element} */\n (baseMethod.call(this, position, element));\n\n if (wasConnected) {\n internals.disconnectTree(element);\n }\n\n if (Utilities.isConnected(insertedElement)) {\n internals.connectTree(element);\n }\n return insertedElement;\n });\n }\n\n if (Native.HTMLElement_insertAdjacentElement) {\n patch_insertAdjacentElement(HTMLElement.prototype, Native.HTMLElement_insertAdjacentElement);\n } else if (Native.Element_insertAdjacentElement) {\n patch_insertAdjacentElement(Element.prototype, Native.Element_insertAdjacentElement);\n } else {\n console.warn('Custom Elements: `Element#insertAdjacentElement` was not patched.');\n }\n\n\n function patch_insertAdjacentHTML(destination, baseMethod) {\n /**\n * Patches and upgrades all nodes which are siblings between `start`\n * (inclusive) and `end` (exclusive). If `end` is `null`, then all siblings\n * following `start` will be patched and upgraded.\n * @param {!Node} start\n * @param {?Node} end\n */\n function upgradeNodesInRange(start, end) {\n const nodes = [];\n for (let node = start; node !== end; node = node.nextSibling) {\n nodes.push(node);\n }\n for (let i = 0; i < nodes.length; i++) {\n internals.patchAndUpgradeTree(nodes[i]);\n }\n }\n\n Utilities.setPropertyUnchecked(destination, 'insertAdjacentHTML',\n /**\n * @this {Element}\n * @param {string} position\n * @param {string} text\n */\n function(position, text) {\n position = position.toLowerCase();\n\n if (position === \"beforebegin\") {\n const marker = this.previousSibling;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(\n /** @type {!Node} */ (marker || this.parentNode.firstChild), this);\n } else if (position === \"afterbegin\") {\n const marker = this.firstChild;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(/** @type {!Node} */ (this.firstChild), marker);\n } else if (position === \"beforeend\") {\n const marker = this.lastChild;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(marker || this.firstChild, null);\n } else if (position === \"afterend\") {\n const marker = this.nextSibling;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(/** @type {!Node} */ (this.nextSibling), marker);\n } else {\n throw new SyntaxError(`The value provided (${String(position)}) is ` +\n \"not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'.\");\n }\n });\n }\n\n if (Native.HTMLElement_insertAdjacentHTML) {\n patch_insertAdjacentHTML(HTMLElement.prototype, Native.HTMLElement_insertAdjacentHTML);\n } else if (Native.Element_insertAdjacentHTML) {\n patch_insertAdjacentHTML(Element.prototype, Native.Element_insertAdjacentHTML);\n } else {\n console.warn('Custom Elements: `Element#insertAdjacentHTML` was not patched.');\n }\n\n\n PatchParentNode(internals, Element.prototype, {\n prepend: Native.Element_prepend,\n append: Native.Element_append,\n });\n\n PatchChildNode(internals, Element.prototype, {\n before: Native.Element_before,\n after: Native.Element_after,\n replaceWith: Native.Element_replaceWith,\n remove: Native.Element_remove,\n });\n};\n","import CustomElementInternals from '../../CustomElementInternals.js';\nimport * as Utilities from '../../Utilities.js';\n\n/**\n * @typedef {{\n * before: !function(...(!Node|string)),\n * after: !function(...(!Node|string)),\n * replaceWith: !function(...(!Node|string)),\n * remove: !function(),\n * }}\n */\nlet ChildNodeNativeMethods;\n\n/**\n * @param {!CustomElementInternals} internals\n * @param {!Object} destination\n * @param {!ChildNodeNativeMethods} builtIn\n */\nexport default function(internals, destination, builtIn) {\n /**\n * @param {!function(...(!Node|string))} builtInMethod\n * @return {!function(...(!Node|string))}\n */\n function beforeAfterPatch(builtInMethod) {\n return function(...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n * @type {!Array<!Node>}\n */\n const flattenedNodes = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n * @type {!Array<!Node>}\n */\n const connectedElements = [];\n\n for (var i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n builtInMethod.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n };\n }\n\n if (builtIn.before !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'before', beforeAfterPatch(builtIn.before));\n }\n\n if (builtIn.before !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'after', beforeAfterPatch(builtIn.after));\n }\n\n if (builtIn.replaceWith !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'replaceWith',\n /**\n * @param {...(!Node|string)} nodes\n */\n function(...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n * @type {!Array<!Node>}\n */\n const flattenedNodes = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n * @type {!Array<!Node>}\n */\n const connectedElements = [];\n\n for (var i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n const wasConnected = Utilities.isConnected(this);\n\n builtIn.replaceWith.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (wasConnected) {\n internals.disconnectTree(this);\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n });\n }\n\n if (builtIn.remove !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'remove',\n function() {\n const wasConnected = Utilities.isConnected(this);\n\n builtIn.remove.call(this);\n\n if (wasConnected) {\n internals.disconnectTree(this);\n }\n });\n }\n};\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n/*\nExtremely simple css parser. Intended to be not more than what we need\nand definitely not necessarily correct =).\n*/\n\n'use strict';\n\n/** @unrestricted */\nclass StyleNode {\n constructor() {\n /** @type {number} */\n this['start'] = 0;\n /** @type {number} */\n this['end'] = 0;\n /** @type {StyleNode} */\n this['previous'] = null;\n /** @type {StyleNode} */\n this['parent'] = null;\n /** @type {Array<StyleNode>} */\n this['rules'] = null;\n /** @type {string} */\n this['parsedCssText'] = '';\n /** @type {string} */\n this['cssText'] = '';\n /** @type {boolean} */\n this['atRule'] = false;\n /** @type {number} */\n this['type'] = 0;\n /** @type {string} */\n this['keyframesName'] = '';\n /** @type {string} */\n this['selector'] = '';\n /** @type {string} */\n this['parsedSelector'] = '';\n }\n}\n\nexport {StyleNode}\n\n// given a string of css, return a simple rule tree\n/**\n * @param {string} text\n * @return {StyleNode}\n */\nexport function parse(text) {\n text = clean(text);\n return parseCss(lex(text), text);\n}\n\n// remove stuff we don't care about that may hinder parsing\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction clean(cssText) {\n return cssText.replace(RX.comments, '').replace(RX.port, '');\n}\n\n// super simple {...} lexer that returns a node tree\n/**\n * @param {string} text\n * @return {StyleNode}\n */\nfunction lex(text) {\n let root = new StyleNode();\n root['start'] = 0;\n root['end'] = text.length\n let n = root;\n for (let i = 0, l = text.length; i < l; i++) {\n if (text[i] === OPEN_BRACE) {\n if (!n['rules']) {\n n['rules'] = [];\n }\n let p = n;\n let previous = p['rules'][p['rules'].length - 1] || null;\n n = new StyleNode();\n n['start'] = i + 1;\n n['parent'] = p;\n n['previous'] = previous;\n p['rules'].push(n);\n } else if (text[i] === CLOSE_BRACE) {\n n['end'] = i + 1;\n n = n['parent'] || root;\n }\n }\n return root;\n}\n\n// add selectors/cssText to node tree\n/**\n * @param {StyleNode} node\n * @param {string} text\n * @return {StyleNode}\n */\nfunction parseCss(node, text) {\n let t = text.substring(node['start'], node['end'] - 1);\n node['parsedCssText'] = node['cssText'] = t.trim();\n if (node['parent']) {\n let ss = node['previous'] ? node['previous']['end'] : node['parent']['start'];\n t = text.substring(ss, node['start'] - 1);\n t = _expandUnicodeEscapes(t);\n t = t.replace(RX.multipleSpaces, ' ');\n // TODO(sorvell): ad hoc; make selector include only after last ;\n // helps with mixin syntax\n t = t.substring(t.lastIndexOf(';') + 1);\n let s = node['parsedSelector'] = node['selector'] = t.trim();\n node['atRule'] = (s.indexOf(AT_START) === 0);\n // note, support a subset of rule types...\n if (node['atRule']) {\n if (s.indexOf(MEDIA_START) === 0) {\n node['type'] = types.MEDIA_RULE;\n } else if (s.match(RX.keyframesRule)) {\n node['type'] = types.KEYFRAMES_RULE;\n node['keyframesName'] =\n node['selector'].split(RX.multipleSpaces).pop();\n }\n } else {\n if (s.indexOf(VAR_START) === 0) {\n node['type'] = types.MIXIN_RULE;\n } else {\n node['type'] = types.STYLE_RULE;\n }\n }\n }\n let r$ = node['rules'];\n if (r$) {\n for (let i = 0, l = r$.length, r;\n (i < l) && (r = r$[i]); i++) {\n parseCss(r, text);\n }\n }\n return node;\n}\n\n/**\n * conversion of sort unicode escapes with spaces like `\\33 ` (and longer) into\n * expanded form that doesn't require trailing space `\\000033`\n * @param {string} s\n * @return {string}\n */\nfunction _expandUnicodeEscapes(s) {\n return s.replace(/\\\\([0-9a-f]{1,6})\\s/gi, function() {\n let code = arguments[1],\n repeat = 6 - code.length;\n while (repeat--) {\n code = '0' + code;\n }\n return '\\\\' + code;\n });\n}\n\n/**\n * stringify parsed css.\n * @param {StyleNode} node\n * @param {boolean=} preserveProperties\n * @param {string=} text\n * @return {string}\n */\nexport function stringify(node, preserveProperties, text = '') {\n // calc rule cssText\n let cssText = '';\n if (node['cssText'] || node['rules']) {\n let r$ = node['rules'];\n if (r$ && !_hasMixinRules(r$)) {\n for (let i = 0, l = r$.length, r;\n (i < l) && (r = r$[i]); i++) {\n cssText = stringify(r, preserveProperties, cssText);\n }\n } else {\n cssText = preserveProperties ? node['cssText'] :\n removeCustomProps(node['cssText']);\n cssText = cssText.trim();\n if (cssText) {\n cssText = ' ' + cssText + '\\n';\n }\n }\n }\n // emit rule if there is cssText\n if (cssText) {\n if (node['selector']) {\n text += node['selector'] + ' ' + OPEN_BRACE + '\\n';\n }\n text += cssText;\n if (node['selector']) {\n text += CLOSE_BRACE + '\\n\\n';\n }\n }\n return text;\n}\n\n/**\n * @param {Array<StyleNode>} rules\n * @return {boolean}\n */\nfunction _hasMixinRules(rules) {\n let r = rules[0];\n return Boolean(r) && Boolean(r['selector']) && r['selector'].indexOf(VAR_START) === 0;\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomProps(cssText) {\n cssText = removeCustomPropAssignment(cssText);\n return removeCustomPropApply(cssText);\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nexport function removeCustomPropAssignment(cssText) {\n return cssText\n .replace(RX.customProp, '')\n .replace(RX.mixinProp, '');\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomPropApply(cssText) {\n return cssText\n .replace(RX.mixinApply, '')\n .replace(RX.varApply, '');\n}\n\n/** @enum {number} */\nexport const types = {\n STYLE_RULE: 1,\n KEYFRAMES_RULE: 7,\n MEDIA_RULE: 4,\n MIXIN_RULE: 1000\n}\n\nconst OPEN_BRACE = '{';\nconst CLOSE_BRACE = '}';\n\n// helper regexp's\nconst RX = {\n comments: /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//gim,\n port: /@import[^;]*;/gim,\n customProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\\n]|$)/gim,\n mixinProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\\n]|$)?/gim,\n mixinApply: /@apply\\s*\\(?[^);]*\\)?\\s*(?:[;\\n]|$)?/gim,\n varApply: /[^;:]*?:[^;]*?var\\([^;]*\\)(?:[;\\n]|$)?/gim,\n keyframesRule: /^@[^\\s]*keyframes/,\n multipleSpaces: /\\s+/g\n}\n\nconst VAR_START = '--';\nconst MEDIA_START = '@media';\nconst AT_START = '@';\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nexport const nativeShadow = !(window['ShadyDOM'] && window['ShadyDOM']['inUse']);\nlet nativeCssVariables_;\n\n/**\n * @param {(ShadyCSSOptions | ShadyCSSInterface)=} settings\n */\nfunction calcCssVariables(settings) {\n if (settings && settings['shimcssproperties']) {\n nativeCssVariables_ = false;\n } else {\n // chrome 49 has semi-working css vars, check if box-shadow works\n // safari 9.1 has a recalc bug: https://bugs.webkit.org/show_bug.cgi?id=155782\n // However, shim css custom properties are only supported with ShadyDOM enabled,\n // so fall back on native if we do not detect ShadyDOM\n // Edge 15: custom properties used in ::before and ::after will also be used in the parent element\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12414257/\n nativeCssVariables_ = nativeShadow || Boolean(!navigator.userAgent.match(/AppleWebKit\\/601|Edge\\/15/) &&\n window.CSS && CSS.supports && CSS.supports('box-shadow', '0 0 0 var(--foo)'));\n }\n}\n\nif (window.ShadyCSS && window.ShadyCSS.nativeCss !== undefined) {\n nativeCssVariables_ = window.ShadyCSS.nativeCss;\n} else if (window.ShadyCSS) {\n calcCssVariables(window.ShadyCSS);\n // reset window variable to let ShadyCSS API take its place\n window.ShadyCSS = undefined;\n} else {\n calcCssVariables(window['WebComponents'] && window['WebComponents']['flags']);\n}\n\n// Hack for type error under new type inference which doesn't like that\n// nativeCssVariables is updated in a function and assigns the type\n// `function(): ?` instead of `boolean`.\nexport const nativeCssVariables = /** @type {boolean} */(nativeCssVariables_);\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nexport const VAR_ASSIGN = /(?:^|[;\\s{]\\s*)(--[\\w-]*?)\\s*:\\s*(?:((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};{])+)|\\{([^}]*)\\}(?:(?=[;\\s}])|$))/gi;\nexport const MIXIN_MATCH = /(?:^|\\W+)@apply\\s*\\(?([^);\\n]*)\\)?/gi;\nexport const VAR_CONSUMED = /(--[\\w-]+)\\s*([:,;)]|$)/gi;\nexport const ANIMATION_MATCH = /(animation\\s*:)|(animation-name\\s*:)/;\nexport const MEDIA_MATCH = /@media\\s(.*)/;\nexport const IS_VAR = /^--/;\nexport const BRACKETED = /\\{[^}]*\\}/g;\nexport const HOST_PREFIX = '(?:^|[^.#[:])';\nexport const HOST_SUFFIX = '($|[.:[\\\\s>+~])';\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/** @type {!Set<string>} */\nconst styleTextSet = new Set();\n\nexport const scopingAttribute = 'shady-unscoped';\n\n/**\n * Add a specifically-marked style to the document directly, and only one copy of that style.\n *\n * @param {!HTMLStyleElement} style\n * @return {undefined}\n */\nexport function processUnscopedStyle(style) {\n const text = style.textContent;\n if (!styleTextSet.has(text)) {\n styleTextSet.add(text);\n const newStyle = style.cloneNode(true);\n document.head.appendChild(newStyle);\n }\n}\n\n/**\n * Check if a style is supposed to be unscoped\n * @param {!HTMLStyleElement} style\n * @return {boolean} true if the style has the unscoping attribute\n */\nexport function isUnscopedStyle(style) {\n return style.hasAttribute(scopingAttribute);\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {nativeShadow, nativeCssVariables} from './style-settings.js';\nimport {parse, stringify, types, StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport {MEDIA_MATCH} from './common-regex.js';\nimport {processUnscopedStyle, isUnscopedStyle} from './unscoped-style-handler.js';\n\n/**\n * @param {string|StyleNode} rules\n * @param {function(StyleNode)=} callback\n * @return {string}\n */\nexport function toCssText (rules, callback) {\n if (!rules) {\n return '';\n }\n if (typeof rules === 'string') {\n rules = parse(rules);\n }\n if (callback) {\n forEachRule(rules, callback);\n }\n return stringify(rules, nativeCssVariables);\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @return {StyleNode}\n */\nexport function rulesForStyle(style) {\n if (!style['__cssRules'] && style.textContent) {\n style['__cssRules'] = parse(style.textContent);\n }\n return style['__cssRules'] || null;\n}\n\n// Tests if a rule is a keyframes selector, which looks almost exactly\n// like a normal selector but is not (it has nothing to do with scoping\n// for example).\n/**\n * @param {StyleNode} rule\n * @return {boolean}\n */\nexport function isKeyframesSelector(rule) {\n return Boolean(rule['parent']) &&\n rule['parent']['type'] === types.KEYFRAMES_RULE;\n}\n\n/**\n * @param {StyleNode} node\n * @param {Function=} styleRuleCallback\n * @param {Function=} keyframesRuleCallback\n * @param {boolean=} onlyActiveRules\n */\nexport function forEachRule(node, styleRuleCallback, keyframesRuleCallback, onlyActiveRules) {\n if (!node) {\n return;\n }\n let skipRules = false;\n let type = node['type'];\n if (onlyActiveRules) {\n if (type === types.MEDIA_RULE) {\n let matchMedia = node['selector'].match(MEDIA_MATCH);\n if (matchMedia) {\n // if rule is a non matching @media rule, skip subrules\n if (!window.matchMedia(matchMedia[1]).matches) {\n skipRules = true;\n }\n }\n }\n }\n if (type === types.STYLE_RULE) {\n styleRuleCallback(node);\n } else if (keyframesRuleCallback &&\n type === types.KEYFRAMES_RULE) {\n keyframesRuleCallback(node);\n } else if (type === types.MIXIN_RULE) {\n skipRules = true;\n }\n let r$ = node['rules'];\n if (r$ && !skipRules) {\n for (let i=0, l=r$.length, r; (i<l) && (r=r$[i]); i++) {\n forEachRule(r, styleRuleCallback, keyframesRuleCallback, onlyActiveRules);\n }\n }\n}\n\n// add a string of cssText to the document.\n/**\n * @param {string} cssText\n * @param {string} moniker\n * @param {Node} target\n * @param {Node} contextNode\n * @return {HTMLStyleElement}\n */\nexport function applyCss(cssText, moniker, target, contextNode) {\n let style = createScopeStyle(cssText, moniker);\n applyStyle(style, target, contextNode);\n return style;\n}\n\n/**\n * @param {string} cssText\n * @param {string} moniker\n * @return {HTMLStyleElement}\n */\nexport function createScopeStyle(cssText, moniker) {\n let style = /** @type {HTMLStyleElement} */(document.createElement('style'));\n if (moniker) {\n style.setAttribute('scope', moniker);\n }\n style.textContent = cssText;\n return style;\n}\n\n/**\n * Track the position of the last added style for placing placeholders\n * @type {Node}\n */\nlet lastHeadApplyNode = null;\n\n// insert a comment node as a styling position placeholder.\n/**\n * @param {string} moniker\n * @return {!Comment}\n */\nexport function applyStylePlaceHolder(moniker) {\n let placeHolder = document.createComment(' Shady DOM styles for ' +\n moniker + ' ');\n let after = lastHeadApplyNode ?\n lastHeadApplyNode['nextSibling'] : null;\n let scope = document.head;\n scope.insertBefore(placeHolder, after || scope.firstChild);\n lastHeadApplyNode = placeHolder;\n return placeHolder;\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @param {?Node} target\n * @param {?Node} contextNode\n */\nexport function applyStyle(style, target, contextNode) {\n target = target || document.head;\n let after = (contextNode && contextNode.nextSibling) ||\n target.firstChild;\n target.insertBefore(style, after);\n if (!lastHeadApplyNode) {\n lastHeadApplyNode = style;\n } else {\n // only update lastHeadApplyNode if the new style is inserted after the old lastHeadApplyNode\n let position = style.compareDocumentPosition(lastHeadApplyNode);\n if (position === Node.DOCUMENT_POSITION_PRECEDING) {\n lastHeadApplyNode = style;\n }\n }\n}\n\n/**\n * @param {string} buildType\n * @return {boolean}\n */\nexport function isTargetedBuild(buildType) {\n return nativeShadow ? buildType === 'shadow' : buildType === 'shady';\n}\n\n/**\n * @param {Element} element\n * @return {?string}\n */\nexport function getCssBuildType(element) {\n return element.getAttribute('css-build');\n}\n\n/**\n * Walk from text[start] matching parens and\n * returns position of the outer end paren\n * @param {string} text\n * @param {number} start\n * @return {number}\n */\nexport function findMatchingParen(text, start) {\n let level = 0;\n for (let i=start, l=text.length; i < l; i++) {\n if (text[i] === '(') {\n level++;\n } else if (text[i] === ')') {\n if (--level === 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\n/**\n * @param {string} str\n * @param {function(string, string, string, string)} callback\n */\nexport function processVariableAndFallback(str, callback) {\n // find 'var('\n let start = str.indexOf('var(');\n if (start === -1) {\n // no var?, everything is prefix\n return callback(str, '', '', '');\n }\n //${prefix}var(${inner})${suffix}\n let end = findMatchingParen(str, start + 3);\n let inner = str.substring(start + 4, end);\n let prefix = str.substring(0, start);\n // suffix may have other variables\n let suffix = processVariableAndFallback(str.substring(end + 1), callback);\n let comma = inner.indexOf(',');\n // value and fallback args should be trimmed to match in property lookup\n if (comma === -1) {\n // variable, no fallback\n return callback(prefix, inner.trim(), '', suffix);\n }\n // var(${value},${fallback})\n let value = inner.substring(0, comma).trim();\n let fallback = inner.substring(comma + 1).trim();\n return callback(prefix, value, fallback, suffix);\n}\n\n/**\n * @param {Element} element\n * @param {string} value\n */\nexport function setElementClassRaw(element, value) {\n // use native setAttribute provided by ShadyDOM when setAttribute is patched\n if (nativeShadow) {\n element.setAttribute('class', value);\n } else {\n window['ShadyDOM']['nativeMethods']['setAttribute'].call(element, 'class', value);\n }\n}\n\n/**\n * @param {Element | {is: string, extends: string}} element\n * @return {{is: string, typeExtension: string}}\n */\nexport function getIsExtends(element) {\n let localName = element['localName'];\n let is = '', typeExtension = '';\n /*\n NOTE: technically, this can be wrong for certain svg elements\n with `-` in the name like `<font-face>`\n */\n if (localName) {\n if (localName.indexOf('-') > -1) {\n is = localName;\n } else {\n typeExtension = localName;\n is = (element.getAttribute && element.getAttribute('is')) || '';\n }\n } else {\n is = /** @type {?} */(element).is;\n typeExtension = /** @type {?} */(element).extends;\n }\n return {is, typeExtension};\n}\n\n/**\n * @param {Element|DocumentFragment} element\n * @return {string}\n */\nexport function gatherStyleText(element) {\n /** @type {!Array<string>} */\n const styleTextParts = [];\n const styles = /** @type {!NodeList<!HTMLStyleElement>} */(element.querySelectorAll('style'));\n for (let i = 0; i < styles.length; i++) {\n const style = styles[i];\n if (isUnscopedStyle(style)) {\n if (!nativeShadow) {\n processUnscopedStyle(style);\n style.parentNode.removeChild(style);\n }\n } else {\n styleTextParts.push(style.textContent);\n style.parentNode.removeChild(style);\n }\n }\n return styleTextParts.join('').trim();\n}\n\n/**\n * Split a selector separated by commas into an array in a smart way\n * @param {string} selector\n * @return {!Array<string>}\n */\nexport function splitSelectorList(selector) {\n const parts = [];\n let part = '';\n for (let i = 0; i >= 0 && i < selector.length; i++) {\n // A selector with parentheses will be one complete part\n if (selector[i] === '(') {\n // find the matching paren\n const end = findMatchingParen(selector, i);\n // push the paren block into the part\n part += selector.slice(i, end + 1);\n // move the index to after the paren block\n i = end;\n } else if (selector[i] === ',') {\n parts.push(part);\n part = '';\n } else {\n part += selector[i];\n }\n }\n // catch any pieces after the last comma\n if (part) {\n parts.push(part);\n }\n return parts;\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport * as StyleUtil from './style-util.js';\nimport {nativeShadow} from './style-settings.js';\n\n/* Transforms ShadowDOM styling into ShadyDOM styling\n\n* scoping:\n\n * elements in scope get scoping selector class=\"x-foo-scope\"\n * selectors re-written as follows:\n\n div button -> div.x-foo-scope button.x-foo-scope\n\n* :host -> scopeName\n\n* :host(...) -> scopeName...\n\n* ::slotted(...) -> scopeName > ...\n\n* ...:dir(ltr|rtl) -> [dir=\"ltr|rtl\"] ..., ...[dir=\"ltr|rtl\"]\n\n* :host(:dir[rtl]) -> scopeName:dir(rtl) -> [dir=\"rtl\"] scopeName, scopeName[dir=\"rtl\"]\n\n*/\nconst SCOPE_NAME = 'style-scope';\n\nclass StyleTransformer {\n get SCOPE_NAME() {\n return SCOPE_NAME;\n }\n /**\n * Given a node and scope name, add a scoping class to each node\n * in the tree. This facilitates transforming css into scoped rules.\n * @param {!Node} node\n * @param {string} scope\n * @param {boolean=} shouldRemoveScope\n * @deprecated\n */\n dom(node, scope, shouldRemoveScope) {\n // one time optimization to skip scoping...\n if (node['__styleScoped']) {\n node['__styleScoped'] = null;\n } else {\n const fn = (node) => {\n this.element(node, scope || '', shouldRemoveScope);\n };\n this._transformDom(node, fn);\n }\n }\n\n /**\n * Given a node and scope name, add a scoping class to each node in the tree.\n * @param {!Node} node\n * @param {string} scope\n */\n domAddScope(node, scope) {\n // one time optimization to skip scoping...\n if (node['__styleScoped']) {\n node['__styleScoped'] = null;\n } else {\n const fn = (node) => {\n this.element(node, scope || '');\n };\n this._transformDom(node, fn);\n }\n }\n\n /**\n * @param {!Node} startNode\n * @param {!function(!Node)} transformer\n */\n _transformDom(startNode, transformer) {\n if (startNode.nodeType === Node.ELEMENT_NODE) {\n transformer(startNode)\n }\n let c$ = (startNode.localName === 'template') ?\n // In case the template is in svg context, fall back to the node\n // since it won't be an HTMLTemplateElement with a .content property\n (startNode.content || startNode._content || startNode).childNodes :\n startNode.children || startNode.childNodes;\n if (c$) {\n for (let i=0; i<c$.length; i++) {\n this._transformDom(c$[i], transformer);\n }\n }\n }\n\n /**\n * @param {?} element\n * @param {?} scope\n * @param {?=} shouldRemoveScope\n */\n element(element, scope, shouldRemoveScope) {\n // note: if using classes, we add both the general 'style-scope' class\n // as well as the specific scope. This enables easy filtering of all\n // `style-scope` elements\n if (scope) {\n // note: svg on IE does not have classList so fallback to class\n if (element.classList) {\n if (shouldRemoveScope) {\n element.classList.remove(SCOPE_NAME);\n element.classList.remove(scope);\n } else {\n element.classList.add(SCOPE_NAME);\n element.classList.add(scope);\n }\n } else if (element.getAttribute) {\n let c = element.getAttribute(CLASS);\n if (shouldRemoveScope) {\n if (c) {\n let newValue = c.replace(SCOPE_NAME, '').replace(scope, '');\n StyleUtil.setElementClassRaw(element, newValue);\n }\n } else {\n let newValue = (c ? c + ' ' : '') + SCOPE_NAME + ' ' + scope;\n StyleUtil.setElementClassRaw(element, newValue);\n }\n }\n }\n }\n\n /**\n * Given a node, replace the scoping class to each subnode in the tree.\n * @param {!Node} node\n * @param {string} oldScope\n * @param {string} newScope\n */\n domReplaceScope(node, oldScope, newScope) {\n // one time optimization to skip scoping...\n if (node['__styleScoped']) {\n node['__styleScoped'] = null;\n } else {\n const fn = (node) => {\n this.element(node, oldScope, true);\n this.element(node, newScope);\n };\n this._transformDom(node, fn);\n }\n }\n /**\n * Given a node, remove the scoping class to each subnode in the tree.\n * @param {!Node} node\n * @param {string} oldScope\n */\n domRemoveScope(node, oldScope) {\n // one time optimization to skip scoping...\n if (node['__styleScoped']) {\n node['__styleScoped'] = null;\n } else {\n const fn = (node) => {\n this.element(node, oldScope || '', true);\n };\n this._transformDom(node, fn);\n }\n }\n\n /**\n * @param {?} element\n * @param {?} styleRules\n * @param {?=} callback\n */\n elementStyles(element, styleRules, callback) {\n let cssBuildType = element['__cssBuild'];\n // no need to shim selectors if settings.useNativeShadow, also\n // a shady css build will already have transformed selectors\n // NOTE: This method may be called as part of static or property shimming.\n // When there is a targeted build it will not be called for static shimming,\n // but when the property shim is used it is called and should opt out of\n // static shimming work when a proper build exists.\n let cssText = '';\n if (nativeShadow || cssBuildType === 'shady') {\n cssText = StyleUtil.toCssText(styleRules, callback);\n } else {\n let {is, typeExtension} = StyleUtil.getIsExtends(element);\n cssText = this.css(styleRules, is, typeExtension, callback) + '\\n\\n';\n }\n return cssText.trim();\n }\n\n // Given a string of cssText and a scoping string (scope), returns\n // a string of scoped css where each selector is transformed to include\n // a class created from the scope. ShadowDOM selectors are also transformed\n // (e.g. :host) to use the scoping selector.\n css(rules, scope, ext, callback) {\n let hostScope = this._calcHostScope(scope, ext);\n scope = this._calcElementScope(scope);\n let self = this;\n return StyleUtil.toCssText(rules, function(/** StyleNode */rule) {\n if (!rule.isScoped) {\n self.rule(rule, scope, hostScope);\n rule.isScoped = true;\n }\n if (callback) {\n callback(rule, scope, hostScope);\n }\n });\n }\n\n _calcElementScope(scope) {\n if (scope) {\n return CSS_CLASS_PREFIX + scope;\n } else {\n return '';\n }\n }\n\n _calcHostScope(scope, ext) {\n return ext ? `[is=${scope}]` : scope;\n }\n\n rule(rule, scope, hostScope) {\n this._transformRule(rule, this._transformComplexSelector,\n scope, hostScope);\n }\n\n /**\n * transforms a css rule to a scoped rule.\n *\n * @param {StyleNode} rule\n * @param {Function} transformer\n * @param {string=} scope\n * @param {string=} hostScope\n */\n _transformRule(rule, transformer, scope, hostScope) {\n // NOTE: save transformedSelector for subsequent matching of elements\n // against selectors (e.g. when calculating style properties)\n rule['selector'] = rule.transformedSelector =\n this._transformRuleCss(rule, transformer, scope, hostScope);\n }\n\n /**\n * @param {StyleNode} rule\n * @param {Function} transformer\n * @param {string=} scope\n * @param {string=} hostScope\n */\n _transformRuleCss(rule, transformer, scope, hostScope) {\n let p$ = StyleUtil.splitSelectorList(rule['selector']);\n // we want to skip transformation of rules that appear in keyframes,\n // because they are keyframe selectors, not element selectors.\n if (!StyleUtil.isKeyframesSelector(rule)) {\n for (let i=0, l=p$.length, p; (i<l) && (p=p$[i]); i++) {\n p$[i] = transformer.call(this, p, scope, hostScope);\n }\n }\n return p$.filter((part) => Boolean(part)).join(COMPLEX_SELECTOR_SEP);\n }\n\n /**\n * @param {string} selector\n * @return {string}\n */\n _twiddleNthPlus(selector) {\n return selector.replace(NTH, (m, type, inside) => {\n if (inside.indexOf('+') > -1) {\n inside = inside.replace(/\\+/g, '___');\n } else if (inside.indexOf('___') > -1) {\n inside = inside.replace(/___/g, '+');\n }\n return `:${type}(${inside})`;\n });\n }\n\n /**\n * Preserve `:matches()` selectors by replacing them with MATCHES_REPLACMENT\n * and returning an array of `:matches()` selectors.\n * Use `_replacesMatchesPseudo` to replace the `:matches()` parts\n *\n * @param {string} selector\n * @return {{selector: string, matches: !Array<string>}}\n */\n _preserveMatchesPseudo(selector) {\n /** @type {!Array<string>} */\n const matches = [];\n let match;\n while ((match = selector.match(MATCHES))) {\n const start = match.index;\n const end = StyleUtil.findMatchingParen(selector, start);\n if (end === -1) {\n throw new Error(`${match.input} selector missing ')'`)\n }\n const part = selector.slice(start, end + 1);\n selector = selector.replace(part, MATCHES_REPLACEMENT);\n matches.push(part);\n }\n return {selector, matches};\n }\n\n /**\n * Replace MATCHES_REPLACMENT character with the given set of `:matches()`\n * selectors.\n *\n * @param {string} selector\n * @param {!Array<string>} matches\n * @return {string}\n */\n _replaceMatchesPseudo(selector, matches) {\n const parts = selector.split(MATCHES_REPLACEMENT);\n return matches.reduce((acc, cur, idx) => acc + cur + parts[idx + 1], parts[0]);\n }\n\n/**\n * @param {string} selector\n * @param {string} scope\n * @param {string=} hostScope\n */\n _transformComplexSelector(selector, scope, hostScope) {\n let stop = false;\n selector = selector.trim();\n // Remove spaces inside of selectors like `:nth-of-type` because it confuses SIMPLE_SELECTOR_SEP\n let isNth = NTH.test(selector);\n if (isNth) {\n selector = selector.replace(NTH, (m, type, inner) => `:${type}(${inner.replace(/\\s/g, '')})`)\n selector = this._twiddleNthPlus(selector);\n }\n // Preserve selectors like `:-webkit-any` so that SIMPLE_SELECTOR_SEP does\n // not get confused by spaces inside the pseudo selector\n const isMatches = MATCHES.test(selector);\n /** @type {!Array<string>} */\n let matches;\n if (isMatches) {\n ({selector, matches} = this._preserveMatchesPseudo(selector));\n }\n selector = selector.replace(SLOTTED_START, `${HOST} $1`);\n selector = selector.replace(SIMPLE_SELECTOR_SEP, (m, c, s) => {\n if (!stop) {\n let info = this._transformCompoundSelector(s, c, scope, hostScope);\n stop = stop || info.stop;\n c = info.combinator;\n s = info.value;\n }\n return c + s;\n });\n // replace `:matches()` selectors\n if (isMatches) {\n selector = this._replaceMatchesPseudo(selector, matches);\n }\n if (isNth) {\n selector = this._twiddleNthPlus(selector);\n }\n return selector;\n }\n\n _transformCompoundSelector(selector, combinator, scope, hostScope) {\n // replace :host with host scoping class\n let slottedIndex = selector.indexOf(SLOTTED);\n if (selector.indexOf(HOST) >= 0) {\n selector = this._transformHostSelector(selector, hostScope);\n // replace other selectors with scoping class\n } else if (slottedIndex !== 0) {\n selector = scope ? this._transformSimpleSelector(selector, scope) :\n selector;\n }\n // mark ::slotted() scope jump to replace with descendant selector + arg\n // also ignore left-side combinator\n let slotted = false;\n if (slottedIndex >= 0) {\n combinator = '';\n slotted = true;\n }\n // process scope jumping selectors up to the scope jump and then stop\n let stop;\n if (slotted) {\n stop = true;\n if (slotted) {\n // .zonk ::slotted(.foo) -> .zonk.scope > .foo\n selector = selector.replace(SLOTTED_PAREN, (m, paren) => ` > ${paren}`);\n }\n }\n selector = selector.replace(DIR_PAREN, (m, before, dir) =>\n `[dir=\"${dir}\"] ${before}, ${before}[dir=\"${dir}\"]`);\n return {value: selector, combinator, stop};\n }\n\n _transformSimpleSelector(selector, scope) {\n let p$ = selector.split(PSEUDO_PREFIX);\n p$[0] += scope;\n return p$.join(PSEUDO_PREFIX);\n }\n\n // :host(...) -> scopeName...\n _transformHostSelector(selector, hostScope) {\n let m = selector.match(HOST_PAREN);\n let paren = m && m[2].trim() || '';\n if (paren) {\n if (!paren[0].match(SIMPLE_SELECTOR_PREFIX)) {\n // paren starts with a type selector\n let typeSelector = paren.split(SIMPLE_SELECTOR_PREFIX)[0];\n // if the type selector is our hostScope then avoid pre-pending it\n if (typeSelector === hostScope) {\n return paren;\n // otherwise, this selector should not match in this scope so\n // output a bogus selector.\n } else {\n return SELECTOR_NO_MATCH;\n }\n } else {\n // make sure to do a replace here to catch selectors like:\n // `:host(.foo)::before`\n return selector.replace(HOST_PAREN, function(m, host, paren) {\n return hostScope + paren;\n });\n }\n // if no paren, do a straight :host replacement.\n // TODO(sorvell): this should not strictly be necessary but\n // it's needed to maintain support for `:host[foo]` type selectors\n // which have been improperly used under Shady DOM. This should be\n // deprecated.\n } else {\n return selector.replace(HOST, hostScope);\n }\n }\n\n /**\n * @param {StyleNode} rule\n */\n documentRule(rule) {\n // reset selector in case this is redone.\n rule['selector'] = rule['parsedSelector'];\n this.normalizeRootSelector(rule);\n this._transformRule(rule, this._transformDocumentSelector);\n }\n\n /**\n * @param {StyleNode} rule\n */\n normalizeRootSelector(rule) {\n if (rule['selector'] === ROOT) {\n rule['selector'] = 'html';\n }\n }\n\n/**\n * @param {string} selector\n */\n _transformDocumentSelector(selector) {\n if (selector.match(HOST)) {\n // remove ':host' type selectors in document rules\n return '';\n } else if (selector.match(SLOTTED)) {\n return this._transformComplexSelector(selector, SCOPE_DOC_SELECTOR)\n } else {\n return this._transformSimpleSelector(selector.trim(), SCOPE_DOC_SELECTOR);\n }\n }\n}\n\nlet NTH = /:(nth[-\\w]+)\\(([^)]+)\\)/;\nlet SCOPE_DOC_SELECTOR = `:not(.${SCOPE_NAME})`;\nlet COMPLEX_SELECTOR_SEP = ',';\nlet SIMPLE_SELECTOR_SEP = /(^|[\\s>+~]+)((?:\\[.+?\\]|[^\\s>+~=[])+)/g;\nlet SIMPLE_SELECTOR_PREFIX = /[[.:#*]/;\nlet HOST = ':host';\nlet ROOT = ':root';\nlet SLOTTED = '::slotted';\nlet SLOTTED_START = new RegExp(`^(${SLOTTED})`);\n// NOTE: this supports 1 nested () pair for things like\n// :host(:not([selected]), more general support requires\n// parsing which seems like overkill\nlet HOST_PAREN = /(:host)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;\n// similar to HOST_PAREN\nlet SLOTTED_PAREN = /(?:::slotted)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;\nlet DIR_PAREN = /(.*):dir\\((?:(ltr|rtl))\\)/;\nlet CSS_CLASS_PREFIX = '.';\nlet PSEUDO_PREFIX = ':';\nlet CLASS = 'class';\nlet SELECTOR_NO_MATCH = 'should_not_match';\nconst MATCHES = /:(?:matches|any|-(?:webkit|moz)-any)/;\nconst MATCHES_REPLACEMENT = '\\u{e000}';\n\nexport default new StyleTransformer()\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\n\n/** @const {string} */\nconst infoKey = '__styleInfo';\n\nexport default class StyleInfo {\n /**\n * @param {Element} node\n * @return {StyleInfo}\n */\n static get(node) {\n if (node) {\n return node[infoKey];\n } else {\n return null;\n }\n }\n /**\n * @param {!Element} node\n * @param {StyleInfo} styleInfo\n * @return {StyleInfo}\n */\n static set(node, styleInfo) {\n node[infoKey] = styleInfo;\n return styleInfo;\n }\n /**\n * @param {StyleNode} ast\n * @param {Node=} placeholder\n * @param {Array<string>=} ownStylePropertyNames\n * @param {string=} elementName\n * @param {string=} typeExtension\n * @param {string=} cssBuild\n */\n constructor(ast, placeholder, ownStylePropertyNames, elementName, typeExtension, cssBuild) {\n /** @type {StyleNode} */\n this.styleRules = ast || null;\n /** @type {Node} */\n this.placeholder = placeholder || null;\n /** @type {!Array<string>} */\n this.ownStylePropertyNames = ownStylePropertyNames || [];\n /** @type {Array<Object>} */\n this.overrideStyleProperties = null;\n /** @type {string} */\n this.elementName = elementName || '';\n /** @type {string} */\n this.cssBuild = cssBuild || '';\n /** @type {string} */\n this.typeExtension = typeExtension || '';\n /** @type {Object<string, string>} */\n this.styleProperties = null;\n /** @type {?string} */\n this.scopeSelector = null;\n /** @type {HTMLStyleElement} */\n this.customStyle = null;\n }\n _getStyleRules() {\n return this.styleRules;\n }\n}\n\nStyleInfo.prototype['_getStyleRules'] = StyleInfo.prototype._getStyleRules;","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {removeCustomPropAssignment, StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport {nativeShadow} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport * as StyleUtil from './style-util.js';\nimport * as RX from './common-regex.js';\nimport StyleInfo from './style-info.js';\n\n// TODO: dedupe with shady\n/**\n * @param {string} selector\n * @return {boolean}\n * @this {Element}\n */\nconst matchesSelector = function(selector) {\n const method = this.matches || this.matchesSelector ||\n this.mozMatchesSelector || this.msMatchesSelector ||\n this.oMatchesSelector || this.webkitMatchesSelector;\n return method && method.call(this, selector);\n};\n\nconst IS_IE = navigator.userAgent.match('Trident');\n\nconst XSCOPE_NAME = 'x-scope';\n\nclass StyleProperties {\n get XSCOPE_NAME() {\n return XSCOPE_NAME;\n }\n/**\n * decorates styles with rule info and returns an array of used style property names\n *\n * @param {StyleNode} rules\n * @return {Array<string>}\n */\n decorateStyles(rules) {\n let self = this, props = {}, keyframes = [], ruleIndex = 0;\n StyleUtil.forEachRule(rules, function(rule) {\n self.decorateRule(rule);\n // mark in-order position of ast rule in styles block, used for cache key\n rule.index = ruleIndex++;\n self.collectPropertiesInCssText(rule.propertyInfo.cssText, props);\n }, function onKeyframesRule(rule) {\n keyframes.push(rule);\n });\n // Cache all found keyframes rules for later reference:\n rules._keyframes = keyframes;\n // return this list of property names *consumes* in these styles.\n let names = [];\n for (let i in props) {\n names.push(i);\n }\n return names;\n }\n\n // decorate a single rule with property info\n decorateRule(rule) {\n if (rule.propertyInfo) {\n return rule.propertyInfo;\n }\n let info = {}, properties = {};\n let hasProperties = this.collectProperties(rule, properties);\n if (hasProperties) {\n info.properties = properties;\n // TODO(sorvell): workaround parser seeing mixins as additional rules\n rule['rules'] = null;\n }\n info.cssText = this.collectCssText(rule);\n rule.propertyInfo = info;\n return info;\n }\n\n // collects the custom properties from a rule's cssText\n collectProperties(rule, properties) {\n let info = rule.propertyInfo;\n if (info) {\n if (info.properties) {\n Object.assign(properties, info.properties);\n return true;\n }\n } else {\n let m, rx = RX.VAR_ASSIGN;\n let cssText = rule['parsedCssText'];\n let value;\n let any;\n while ((m = rx.exec(cssText))) {\n // note: group 2 is var, 3 is mixin\n value = (m[2] || m[3]).trim();\n // value of 'inherit' or 'unset' is equivalent to not setting the property here\n if (value !== 'inherit' || value !== 'unset') {\n properties[m[1].trim()] = value;\n }\n any = true;\n }\n return any;\n }\n\n }\n\n // returns cssText of properties that consume variables/mixins\n collectCssText(rule) {\n return this.collectConsumingCssText(rule['parsedCssText']);\n }\n\n // NOTE: we support consumption inside mixin assignment\n // but not production, so strip out {...}\n collectConsumingCssText(cssText) {\n return cssText.replace(RX.BRACKETED, '')\n .replace(RX.VAR_ASSIGN, '');\n }\n\n collectPropertiesInCssText(cssText, props) {\n let m;\n while ((m = RX.VAR_CONSUMED.exec(cssText))) {\n let name = m[1];\n // This regex catches all variable names, and following non-whitespace char\n // If next char is not ':', then variable is a consumer\n if (m[2] !== ':') {\n props[name] = true;\n }\n }\n }\n\n // turns custom properties into realized values.\n reify(props) {\n // big perf optimization here: reify only *own* properties\n // since this object has __proto__ of the element's scope properties\n let names = Object.getOwnPropertyNames(props);\n for (let i=0, n; i < names.length; i++) {\n n = names[i];\n props[n] = this.valueForProperty(props[n], props);\n }\n }\n\n // given a property value, returns the reified value\n // a property value may be:\n // (1) a literal value like: red or 5px;\n // (2) a variable value like: var(--a), var(--a, red), or var(--a, --b) or\n // var(--a, var(--b));\n // (3) a literal mixin value like { properties }. Each of these properties\n // can have values that are: (a) literal, (b) variables, (c) @apply mixins.\n valueForProperty(property, props) {\n // case (1) default\n // case (3) defines a mixin and we have to reify the internals\n if (property) {\n if (property.indexOf(';') >=0) {\n property = this.valueForProperties(property, props);\n } else {\n // case (2) variable\n let self = this;\n let fn = function(prefix, value, fallback, suffix) {\n if (!value) {\n return prefix + suffix;\n }\n let propertyValue = self.valueForProperty(props[value], props);\n // if value is \"initial\", then the variable should be treated as unset\n if (!propertyValue || propertyValue === 'initial') {\n // fallback may be --a or var(--a) or literal\n propertyValue = self.valueForProperty(props[fallback] || fallback, props) ||\n fallback;\n } else if (propertyValue === 'apply-shim-inherit') {\n // CSS build will replace `inherit` with `apply-shim-inherit`\n // for use with native css variables.\n // Since we have full control, we can use `inherit` directly.\n propertyValue = 'inherit';\n }\n return prefix + (propertyValue || '') + suffix;\n };\n property = StyleUtil.processVariableAndFallback(property, fn);\n }\n }\n return property && property.trim() || '';\n }\n\n // note: we do not yet support mixin within mixin\n valueForProperties(property, props) {\n let parts = property.split(';');\n for (let i=0, p, m; i<parts.length; i++) {\n if ((p = parts[i])) {\n RX.MIXIN_MATCH.lastIndex = 0;\n m = RX.MIXIN_MATCH.exec(p);\n if (m) {\n p = this.valueForProperty(props[m[1]], props);\n } else {\n let colon = p.indexOf(':');\n if (colon !== -1) {\n let pp = p.substring(colon);\n pp = pp.trim();\n pp = this.valueForProperty(pp, props) || pp;\n p = p.substring(0, colon) + pp;\n }\n }\n parts[i] = (p && p.lastIndexOf(';') === p.length - 1) ?\n // strip trailing ;\n p.slice(0, -1) :\n p || '';\n }\n }\n return parts.join(';');\n }\n\n applyProperties(rule, props) {\n let output = '';\n // dynamically added sheets may not be decorated so ensure they are.\n if (!rule.propertyInfo) {\n this.decorateRule(rule);\n }\n if (rule.propertyInfo.cssText) {\n output = this.valueForProperties(rule.propertyInfo.cssText, props);\n }\n rule['cssText'] = output;\n }\n\n // Apply keyframe transformations to the cssText of a given rule. The\n // keyframeTransforms object is a map of keyframe names to transformer\n // functions which take in cssText and spit out transformed cssText.\n applyKeyframeTransforms(rule, keyframeTransforms) {\n let input = rule['cssText'];\n let output = rule['cssText'];\n if (rule.hasAnimations == null) {\n // Cache whether or not the rule has any animations to begin with:\n rule.hasAnimations = RX.ANIMATION_MATCH.test(input);\n }\n // If there are no animations referenced, we can skip transforms:\n if (rule.hasAnimations) {\n let transform;\n // If we haven't transformed this rule before, we iterate over all\n // transforms:\n if (rule.keyframeNamesToTransform == null) {\n rule.keyframeNamesToTransform = [];\n for (let keyframe in keyframeTransforms) {\n transform = keyframeTransforms[keyframe];\n output = transform(input);\n // If the transform actually changed the CSS text, we cache the\n // transform name for future use:\n if (input !== output) {\n input = output;\n rule.keyframeNamesToTransform.push(keyframe);\n }\n }\n } else {\n // If we already have a list of keyframe names that apply to this\n // rule, we apply only those keyframe name transforms:\n for (let i = 0; i < rule.keyframeNamesToTransform.length; ++i) {\n transform = keyframeTransforms[rule.keyframeNamesToTransform[i]];\n input = transform(input);\n }\n output = input;\n }\n }\n rule['cssText'] = output;\n }\n\n // Test if the rules in these styles matches the given `element` and if so,\n // collect any custom properties into `props`.\n /**\n * @param {StyleNode} rules\n * @param {Element} element\n */\n propertyDataFromStyles(rules, element) {\n let props = {}, self = this;\n // generates a unique key for these matches\n let o = [];\n // note: active rules excludes non-matching @media rules\n StyleUtil.forEachRule(rules, function(rule) {\n // TODO(sorvell): we could trim the set of rules at declaration\n // time to only include ones that have properties\n if (!rule.propertyInfo) {\n self.decorateRule(rule);\n }\n // match element against transformedSelector: selector may contain\n // unwanted uniquification and parsedSelector does not directly match\n // for :host selectors.\n let selectorToMatch = rule.transformedSelector || rule['parsedSelector'];\n if (element && rule.propertyInfo.properties && selectorToMatch) {\n if (matchesSelector.call(element, selectorToMatch)) {\n self.collectProperties(rule, props);\n // produce numeric key for these matches for lookup\n addToBitMask(rule.index, o);\n }\n }\n }, null, true);\n return {properties: props, key: o};\n }\n\n /**\n * @param {Element} scope\n * @param {StyleNode} rule\n * @param {string|undefined} cssBuild\n * @param {function(Object)} callback\n */\n whenHostOrRootRule(scope, rule, cssBuild, callback) {\n if (!rule.propertyInfo) {\n this.decorateRule(rule);\n }\n if (!rule.propertyInfo.properties) {\n return;\n }\n let {is, typeExtension} = StyleUtil.getIsExtends(scope);\n let hostScope = is ?\n StyleTransformer._calcHostScope(is, typeExtension) :\n 'html';\n let parsedSelector = rule['parsedSelector'];\n let isRoot = (parsedSelector === ':host > *' || parsedSelector === 'html');\n let isHost = parsedSelector.indexOf(':host') === 0 && !isRoot;\n // build info is either in scope (when scope is an element) or in the style\n // when scope is the default scope; note: this allows default scope to have\n // mixed mode built and unbuilt styles.\n if (cssBuild === 'shady') {\n // :root -> x-foo > *.x-foo for elements and html for custom-style\n isRoot = parsedSelector === (hostScope + ' > *.' + hostScope) || parsedSelector.indexOf('html') !== -1;\n // :host -> x-foo for elements, but sub-rules have .x-foo in them\n isHost = !isRoot && parsedSelector.indexOf(hostScope) === 0;\n }\n if (cssBuild === 'shadow') {\n isRoot = parsedSelector === ':host > *' || parsedSelector === 'html';\n isHost = isHost && !isRoot;\n }\n if (!isRoot && !isHost) {\n return;\n }\n let selectorToMatch = hostScope;\n if (isHost) {\n // need to transform :host because `:host` does not work with `matches`\n if (!rule.transformedSelector) {\n // transform :host into a matchable selector\n rule.transformedSelector =\n StyleTransformer._transformRuleCss(\n rule,\n StyleTransformer._transformComplexSelector,\n StyleTransformer._calcElementScope(is),\n hostScope\n );\n }\n selectorToMatch = rule.transformedSelector || hostScope;\n }\n callback({\n selector: selectorToMatch,\n isHost: isHost,\n isRoot: isRoot\n });\n }\n/**\n * @param {Element} scope\n * @param {StyleNode} rules\n * @return {Object}\n */\n hostAndRootPropertiesForScope(scope, rules) {\n let hostProps = {}, rootProps = {}, self = this;\n // note: active rules excludes non-matching @media rules\n let cssBuild = rules && rules['__cssBuild'];\n StyleUtil.forEachRule(rules, function(rule) {\n // if scope is StyleDefaults, use _element for matchesSelector\n self.whenHostOrRootRule(scope, rule, cssBuild, function(info) {\n let element = scope._element || scope;\n if (matchesSelector.call(element, info.selector)) {\n if (info.isHost) {\n self.collectProperties(rule, hostProps);\n } else {\n self.collectProperties(rule, rootProps);\n }\n }\n });\n }, null, true);\n return {rootProps: rootProps, hostProps: hostProps};\n }\n\n /**\n * @param {Element} element\n * @param {Object} properties\n * @param {string} scopeSelector\n */\n transformStyles(element, properties, scopeSelector) {\n let self = this;\n let {is, typeExtension} = StyleUtil.getIsExtends(element);\n let hostSelector = StyleTransformer\n ._calcHostScope(is, typeExtension);\n let rxHostSelector = element.extends ?\n '\\\\' + hostSelector.slice(0, -1) + '\\\\]' :\n hostSelector;\n let hostRx = new RegExp(RX.HOST_PREFIX + rxHostSelector +\n RX.HOST_SUFFIX);\n let rules = StyleInfo.get(element).styleRules;\n let keyframeTransforms =\n this._elementKeyframeTransforms(element, rules, scopeSelector);\n return StyleTransformer.elementStyles(element, rules, function(rule) {\n self.applyProperties(rule, properties);\n if (!nativeShadow &&\n !StyleUtil.isKeyframesSelector(rule) &&\n rule['cssText']) {\n // NOTE: keyframe transforms only scope munge animation names, so it\n // is not necessary to apply them in ShadowDOM.\n self.applyKeyframeTransforms(rule, keyframeTransforms);\n self._scopeSelector(rule, hostRx, hostSelector, scopeSelector);\n }\n });\n }\n\n /**\n * @param {Element} element\n * @param {StyleNode} rules\n * @param {string} scopeSelector\n * @return {Object}\n */\n _elementKeyframeTransforms(element, rules, scopeSelector) {\n let keyframesRules = rules._keyframes;\n let keyframeTransforms = {};\n if (!nativeShadow && keyframesRules) {\n // For non-ShadowDOM, we transform all known keyframes rules in\n // advance for the current scope. This allows us to catch keyframes\n // rules that appear anywhere in the stylesheet:\n for (let i = 0, keyframesRule = keyframesRules[i];\n i < keyframesRules.length;\n keyframesRule = keyframesRules[++i]) {\n this._scopeKeyframes(keyframesRule, scopeSelector);\n keyframeTransforms[keyframesRule['keyframesName']] =\n this._keyframesRuleTransformer(keyframesRule);\n }\n }\n return keyframeTransforms;\n }\n\n // Generate a factory for transforming a chunk of CSS text to handle a\n // particular scoped keyframes rule.\n /**\n * @param {StyleNode} keyframesRule\n * @return {function(string):string}\n */\n _keyframesRuleTransformer(keyframesRule) {\n return function(cssText) {\n return cssText.replace(\n keyframesRule.keyframesNameRx,\n keyframesRule.transformedKeyframesName);\n };\n }\n\n/**\n * Transforms `@keyframes` names to be unique for the current host.\n * Example: @keyframes foo-anim -> @keyframes foo-anim-x-foo-0\n *\n * @param {StyleNode} rule\n * @param {string} scopeId\n */\n _scopeKeyframes(rule, scopeId) {\n // Animation names are of the form [\\w-], so ensure that the name regex does not partially apply\n // to similarly named keyframe names by checking for a word boundary at the beginning and\n // a non-word boundary or `-` at the end.\n rule.keyframesNameRx = new RegExp(`\\\\b${rule['keyframesName']}(?!\\\\B|-)`, 'g');\n rule.transformedKeyframesName = rule['keyframesName'] + '-' + scopeId;\n rule.transformedSelector = rule.transformedSelector || rule['selector'];\n rule['selector'] = rule.transformedSelector.replace(\n rule['keyframesName'], rule.transformedKeyframesName);\n }\n\n // Strategy: x scope shim a selector e.g. to scope `.x-foo-42` (via classes):\n // non-host selector: .a.x-foo -> .x-foo-42 .a.x-foo\n // host selector: x-foo.wide -> .x-foo-42.wide\n // note: we use only the scope class (.x-foo-42) and not the hostSelector\n // (x-foo) to scope :host rules; this helps make property host rules\n // have low specificity. They are overrideable by class selectors but,\n // unfortunately, not by type selectors (e.g. overriding via\n // `.special` is ok, but not by `x-foo`).\n /**\n * @param {StyleNode} rule\n * @param {RegExp} hostRx\n * @param {string} hostSelector\n * @param {string} scopeId\n */\n _scopeSelector(rule, hostRx, hostSelector, scopeId) {\n rule.transformedSelector = rule.transformedSelector || rule['selector'];\n let selector = rule.transformedSelector;\n let scope = '.' + scopeId;\n let parts = StyleUtil.splitSelectorList(selector);\n for (let i=0, l=parts.length, p; (i<l) && (p=parts[i]); i++) {\n parts[i] = p.match(hostRx) ?\n p.replace(hostSelector, scope) :\n scope + ' ' + p;\n }\n rule['selector'] = parts.join(',');\n }\n\n /**\n * @param {Element} element\n * @param {string} selector\n * @param {string} old\n */\n applyElementScopeSelector(element, selector, old) {\n let c = element.getAttribute('class') || '';\n let v = c;\n if (old) {\n v = c.replace(\n new RegExp('\\\\s*' + XSCOPE_NAME + '\\\\s*' + old + '\\\\s*', 'g'), ' ');\n }\n v += (v ? ' ' : '') + XSCOPE_NAME + ' ' + selector;\n if (c !== v) {\n StyleUtil.setElementClassRaw(element, v);\n }\n }\n\n /**\n * @param {HTMLElement} element\n * @param {Object} properties\n * @param {string} selector\n * @param {HTMLStyleElement} style\n * @return {HTMLStyleElement}\n */\n applyElementStyle(element, properties, selector, style) {\n // calculate cssText to apply\n let cssText = style ? style.textContent || '' :\n this.transformStyles(element, properties, selector);\n // if shady and we have a cached style that is not style, decrement\n let styleInfo = StyleInfo.get(element);\n let s = styleInfo.customStyle;\n if (s && !nativeShadow && (s !== style)) {\n s['_useCount']--;\n if (s['_useCount'] <= 0 && s.parentNode) {\n s.parentNode.removeChild(s);\n }\n }\n // apply styling always under native or if we generated style\n // or the cached style is not in document(!)\n if (nativeShadow) {\n // update existing style only under native\n if (styleInfo.customStyle) {\n styleInfo.customStyle.textContent = cssText;\n style = styleInfo.customStyle;\n // otherwise, if we have css to apply, do so\n } else if (cssText) {\n // apply css after the scope style of the element to help with\n // style precedence rules.\n style = StyleUtil.applyCss(cssText, selector, element.shadowRoot,\n styleInfo.placeholder);\n }\n } else {\n // shady and no cache hit\n if (!style) {\n // apply css after the scope style of the element to help with\n // style precedence rules.\n if (cssText) {\n style = StyleUtil.applyCss(cssText, selector, null,\n styleInfo.placeholder);\n }\n // shady and cache hit but not in document\n } else if (!style.parentNode) {\n if (IS_IE && cssText.indexOf('@media') > -1) {\n // @media rules may be stale in IE 10 and 11\n // refresh the text content of the style to revalidate them.\n style.textContent = cssText;\n }\n StyleUtil.applyStyle(style, null, styleInfo.placeholder);\n }\n }\n // ensure this style is our custom style and increment its use count.\n if (style) {\n style['_useCount'] = style['_useCount'] || 0;\n // increment use count if we changed styles\n if (styleInfo.customStyle != style) {\n style['_useCount']++;\n }\n styleInfo.customStyle = style;\n }\n return style;\n }\n\n /**\n * @param {Element} style\n * @param {Object} properties\n */\n applyCustomStyle(style, properties) {\n let rules = StyleUtil.rulesForStyle(/** @type {HTMLStyleElement} */(style));\n let self = this;\n style.textContent = StyleUtil.toCssText(rules, function(/** StyleNode */rule) {\n let css = rule['cssText'] = rule['parsedCssText'];\n if (rule.propertyInfo && rule.propertyInfo.cssText) {\n // remove property assignments\n // so next function isn't confused\n // NOTE: we have 3 categories of css:\n // (1) normal properties,\n // (2) custom property assignments (--foo: red;),\n // (3) custom property usage: border: var(--foo); @apply(--foo);\n // In elements, 1 and 3 are separated for efficiency; here they\n // are not and this makes this case unique.\n css = removeCustomPropAssignment(/** @type {string} */(css));\n // replace with reified properties, scenario is same as mixin\n rule['cssText'] = self.valueForProperties(css, properties);\n }\n });\n }\n}\n\n/**\n * @param {number} n\n * @param {Array<number>} bits\n */\nfunction addToBitMask(n, bits) {\n let o = parseInt(n / 32, 10);\n let v = 1 << (n % 32);\n bits[o] = (bits[o] || 0) | v;\n}\n\nexport default new StyleProperties();","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {applyStylePlaceHolder} from './style-util.js';\nimport {nativeShadow} from './style-settings.js';\n\n/** @type {!Object<string, !Node>} */\nconst placeholderMap = {};\n\n/**\n * @param {string} elementName\n * @return {Node}\n */\nexport function getStylePlaceholder(elementName) {\n return placeholderMap[elementName] || null;\n}\n\n/**\n * @param {string} elementName\n */\nexport function ensureStylePlaceholder(elementName) {\n if (!placeholderMap[elementName]) {\n placeholderMap[elementName] = applyStylePlaceHolder(elementName);\n }\n}\n\n/**\n * @const {CustomElementRegistry}\n */\nconst ce = window['customElements'];\nif (ce && !nativeShadow) {\n /**\n * @const {function(this:CustomElementRegistry, string,function(new:HTMLElement),{extends: string}=)}\n */\n const origDefine = ce['define'];\n /**\n * @param {string} name\n * @param {function(new:HTMLElement)} clazz\n * @param {{extends: string}=} options\n */\n const wrappedDefine = (name, clazz, options) => {\n ensureStylePlaceholder(name);\n origDefine.call(/** @type {!CustomElementRegistry} */(ce), name, clazz, options);\n };\n ce['define'] = wrappedDefine;\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n'use strict';\n\nexport default class StyleCache {\n constructor(typeMax = 100) {\n // map element name -> [{properties, styleElement, scopeSelector}]\n this.cache = {};\n this.typeMax = typeMax;\n }\n\n _validate(cacheEntry, properties, ownPropertyNames) {\n for (let idx = 0; idx < ownPropertyNames.length; idx++) {\n let pn = ownPropertyNames[idx];\n if (cacheEntry.properties[pn] !== properties[pn]) {\n return false;\n }\n }\n return true;\n }\n\n store(tagname, properties, styleElement, scopeSelector) {\n let list = this.cache[tagname] || [];\n list.push({properties, styleElement, scopeSelector});\n if (list.length > this.typeMax) {\n list.shift();\n }\n this.cache[tagname] = list;\n }\n\n fetch(tagname, properties, ownPropertyNames) {\n let list = this.cache[tagname];\n if (!list) {\n return;\n }\n // reverse list for most-recent lookups\n for (let idx = list.length - 1; idx >= 0; idx--) {\n let entry = list[idx];\n if (this._validate(entry, properties, ownPropertyNames)) {\n return entry;\n }\n }\n }\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {nativeShadow} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport {getIsExtends} from './style-util.js';\n\nexport let flush = function() {};\n\n/**\n * @param {HTMLElement} element\n * @return {!Array<string>}\n */\nfunction getClasses(element) {\n let classes = [];\n if (element.classList) {\n classes = Array.from(element.classList);\n } else if (element instanceof window['SVGElement'] && element.hasAttribute('class')) {\n classes = element.getAttribute('class').split(/\\s+/);\n }\n return classes;\n}\n\n/**\n * @param {HTMLElement} element\n * @return {string}\n */\nfunction getCurrentScope(element) {\n let classes = getClasses(element);\n let idx = classes.indexOf(StyleTransformer.SCOPE_NAME);\n if (idx > -1) {\n return classes[idx + 1];\n }\n return '';\n}\n\n/**\n * @param {Array<MutationRecord|null>|null} mxns\n */\nfunction handler(mxns) {\n for (let x=0; x < mxns.length; x++) {\n let mxn = mxns[x];\n if (mxn.target === document.documentElement ||\n mxn.target === document.head) {\n continue;\n }\n for (let i=0; i < mxn.addedNodes.length; i++) {\n let n = mxn.addedNodes[i];\n if (n.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n n = /** @type {HTMLElement} */(n); // eslint-disable-line no-self-assign\n let root = n.getRootNode();\n let currentScope = getCurrentScope(n);\n // node was scoped, but now is in document\n if (currentScope && root === n.ownerDocument) {\n StyleTransformer.domRemoveScope(n, currentScope);\n } else if (root.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n let newScope;\n let host = /** @type {ShadowRoot} */(root).host;\n // element may no longer be in a shadowroot\n if (!host) {\n continue;\n }\n newScope = getIsExtends(host).is;\n // rescope current node and subtree if necessary\n if (newScope !== currentScope) {\n StyleTransformer.domReplaceScope(n, currentScope, newScope);\n }\n // make sure all the subtree elements are scoped correctly\n let unscopedNodes = window['ShadyDOM']['nativeMethods']['querySelectorAll'].call(\n n, `:not(.${StyleTransformer.SCOPE_NAME})`);\n for (let j = 0; j < unscopedNodes.length; j++) {\n // it's possible, during large batch inserts, that nodes that aren't\n // scoped within the current scope were added.\n // To make sure that any unscoped nodes that were inserted in the current batch are correctly styled,\n // query all unscoped nodes and force their style-scope to be applied.\n // This could happen if a sub-element appended an unscoped node in its shadowroot and this function\n // runs on a parent element of the host of that unscoped node:\n // parent-element -> element -> unscoped node\n // Here unscoped node should have the style-scope element, not parent-element.\n const unscopedNode = unscopedNodes[j];\n const rootForUnscopedNode = unscopedNode.getRootNode();\n const hostForUnscopedNode = rootForUnscopedNode.host;\n if (!hostForUnscopedNode) {\n continue;\n }\n const scopeForPreviouslyUnscopedNode = getIsExtends(hostForUnscopedNode).is;\n StyleTransformer.element(unscopedNode, scopeForPreviouslyUnscopedNode);\n }\n }\n }\n }\n}\n\nif (!nativeShadow) {\n let observer = new MutationObserver(handler);\n let start = (node) => {\n observer.observe(node, {childList: true, subtree: true});\n }\n let nativeCustomElements = (window['customElements'] &&\n !window['customElements']['polyfillWrapFlushCallback']);\n // need to start immediately with native custom elements\n // TODO(dfreedm): with polyfilled HTMLImports and native custom elements\n // excessive mutations may be observed; this can be optimized via cooperation\n // with the HTMLImports polyfill.\n if (nativeCustomElements) {\n start(document);\n } else {\n let delayedStart = () => {\n start(document.body);\n }\n // use polyfill timing if it's available\n if (window['HTMLImports']) {\n window['HTMLImports']['whenReady'](delayedStart);\n // otherwise push beyond native imports being ready\n // which requires RAF + readystate interactive.\n } else {\n requestAnimationFrame(function() {\n if (document.readyState === 'loading') {\n let listener = function() {\n delayedStart();\n document.removeEventListener('readystatechange', listener);\n }\n document.addEventListener('readystatechange', listener);\n } else {\n delayedStart();\n }\n });\n }\n }\n\n flush = function() {\n handler(observer.takeRecords());\n }\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/**\n * @const {!Object<string, !HTMLTemplateElement>}\n */\nconst templateMap = {};\nexport default templateMap;\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\nimport templateMap from './template-map.js';\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\n\n/*\n * Utilities for handling invalidating apply-shim mixins for a given template.\n *\n * The invalidation strategy involves keeping track of the \"current\" version of a template's mixins, and updating that count when a mixin is invalidated.\n * The template\n */\n\n/** @const {string} */\nconst CURRENT_VERSION = '_applyShimCurrentVersion';\n\n/** @const {string} */\nconst NEXT_VERSION = '_applyShimNextVersion';\n\n/** @const {string} */\nconst VALIDATING_VERSION = '_applyShimValidatingVersion';\n\n/**\n * @const {Promise<void>}\n */\nconst promise = Promise.resolve();\n\n/**\n * @param {string} elementName\n */\nexport function invalidate(elementName){\n let template = templateMap[elementName];\n if (template) {\n invalidateTemplate(template);\n }\n}\n\n/**\n * This function can be called multiple times to mark a template invalid\n * and signal that the style inside must be regenerated.\n *\n * Use `startValidatingTemplate` to begin an asynchronous validation cycle.\n * During that cycle, call `templateIsValidating` to see if the template must\n * be revalidated\n * @param {HTMLTemplateElement} template\n */\nexport function invalidateTemplate(template) {\n // default the current version to 0\n template[CURRENT_VERSION] = template[CURRENT_VERSION] || 0;\n // ensure the \"validating for\" flag exists\n template[VALIDATING_VERSION] = template[VALIDATING_VERSION] || 0;\n // increment the next version\n template[NEXT_VERSION] = (template[NEXT_VERSION] || 0) + 1;\n}\n\n/**\n * @param {string} elementName\n * @return {boolean}\n */\nexport function isValid(elementName) {\n let template = templateMap[elementName];\n if (template) {\n return templateIsValid(template);\n }\n return true;\n}\n\n/**\n * @param {HTMLTemplateElement} template\n * @return {boolean}\n */\nexport function templateIsValid(template) {\n return template[CURRENT_VERSION] === template[NEXT_VERSION];\n}\n\n/**\n * @param {string} elementName\n * @return {boolean}\n */\nexport function isValidating(elementName) {\n let template = templateMap[elementName];\n if (template) {\n return templateIsValidating(template);\n }\n return false;\n}\n\n/**\n * Returns true if the template is currently invalid and `startValidating` has been called since the last invalidation.\n * If false, the template must be validated.\n * @param {HTMLTemplateElement} template\n * @return {boolean}\n */\nexport function templateIsValidating(template) {\n return !templateIsValid(template) && template[VALIDATING_VERSION] === template[NEXT_VERSION];\n}\n\n/**\n * the template is marked as `validating` for one microtask so that all instances\n * found in the tree crawl of `applyStyle` will update themselves,\n * but the template will only be updated once.\n * @param {string} elementName\n*/\nexport function startValidating(elementName) {\n let template = templateMap[elementName];\n startValidatingTemplate(template);\n}\n\n/**\n * Begin an asynchronous invalidation cycle.\n * This should be called after every validation of a template\n *\n * After one microtask, the template will be marked as valid until the next call to `invalidateTemplate`\n * @param {HTMLTemplateElement} template\n */\nexport function startValidatingTemplate(template) {\n // remember that the current \"next version\" is the reason for this validation cycle\n template[VALIDATING_VERSION] = template[NEXT_VERSION];\n // however, there only needs to be one async task to clear the counters\n if (!template._validating) {\n template._validating = true;\n promise.then(function() {\n // sync the current version to let future invalidations cause a refresh cycle\n template[CURRENT_VERSION] = template[NEXT_VERSION];\n template._validating = false;\n });\n }\n}\n\n/**\n * @return {boolean}\n */\nexport function elementsAreInvalid() {\n for (let elementName in templateMap) {\n let template = templateMap[elementName];\n if (!templateIsValid(template)) {\n return true;\n }\n }\n return false;\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {parse, StyleNode} from './css-parse.js';\nimport {nativeShadow, nativeCssVariables} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport * as StyleUtil from './style-util.js';\nimport StyleProperties from './style-properties.js';\nimport {ensureStylePlaceholder, getStylePlaceholder} from './style-placeholder.js';\nimport StyleInfo from './style-info.js';\nimport StyleCache from './style-cache.js';\nimport {flush as watcherFlush} from './document-watcher.js';\nimport templateMap from './template-map.js';\nimport * as ApplyShimUtils from './apply-shim-utils.js';\nimport {updateNativeProperties, detectMixin} from './common-utils.js';\nimport {CustomStyleInterfaceInterface} from './custom-style-interface.js'; // eslint-disable-line no-unused-vars\n\n/**\n * @const {StyleCache}\n */\nconst styleCache = new StyleCache();\n\nexport default class ScopingShim {\n constructor() {\n this._scopeCounter = {};\n this._documentOwner = /** @type {!HTMLElement} */(document.documentElement);\n let ast = new StyleNode();\n ast['rules'] = [];\n this._documentOwnerStyleInfo = StyleInfo.set(this._documentOwner, new StyleInfo(ast));\n this._elementsHaveApplied = false;\n this._applyShim = null;\n /** @type {?CustomStyleInterfaceInterface} */\n this._customStyleInterface = null;\n }\n flush() {\n watcherFlush();\n }\n _generateScopeSelector(name) {\n let id = this._scopeCounter[name] = (this._scopeCounter[name] || 0) + 1;\n return `${name}-${id}`;\n }\n getStyleAst(style) {\n return StyleUtil.rulesForStyle(style);\n }\n styleAstToString(ast) {\n return StyleUtil.toCssText(ast);\n }\n _gatherStyles(template) {\n return StyleUtil.gatherStyleText(template.content);\n }\n _getCssBuild(template) {\n let style = template.content.querySelector('style');\n if (!style) {\n return '';\n }\n return style.getAttribute('css-build') || '';\n }\n /**\n * Prepare the styling and template for the given element type\n *\n * @param {HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} typeExtension\n */\n prepareTemplate(template, elementName, typeExtension) {\n this.prepareTemplateDom(template, elementName);\n this.prepareTemplateStyles(template, elementName, typeExtension);\n }\n /**\n * Prepare styling for the given element type\n * @param {HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} typeExtension\n */\n prepareTemplateStyles(template, elementName, typeExtension) {\n if (template._prepared) {\n return;\n }\n // style placeholders are only used when ShadyDOM is active\n if (!nativeShadow) {\n ensureStylePlaceholder(elementName);\n }\n template._prepared = true;\n template.name = elementName;\n template.extends = typeExtension;\n templateMap[elementName] = template;\n let cssBuild = this._getCssBuild(template);\n let cssText = this._gatherStyles(template);\n let info = {\n is: elementName,\n extends: typeExtension,\n __cssBuild: cssBuild,\n };\n // check if the styling has mixin definitions or uses\n this._ensure();\n let hasMixins = detectMixin(cssText)\n let ast = parse(cssText);\n // only run the applyshim transforms if there is a mixin involved\n if (hasMixins && nativeCssVariables && this._applyShim) {\n this._applyShim['transformRules'](ast, elementName);\n }\n template['_styleAst'] = ast;\n template._cssBuild = cssBuild;\n\n let ownPropertyNames = [];\n if (!nativeCssVariables) {\n ownPropertyNames = StyleProperties.decorateStyles(template['_styleAst']);\n }\n if (!ownPropertyNames.length || nativeCssVariables) {\n let root = nativeShadow ? template.content : null;\n let placeholder = getStylePlaceholder(elementName);\n let style = this._generateStaticStyle(info, template['_styleAst'], root, placeholder);\n template._style = style;\n }\n template._ownPropertyNames = ownPropertyNames;\n }\n /**\n * Prepare template for the given element type\n * @param {HTMLTemplateElement} template\n * @param {string} elementName\n */\n prepareTemplateDom(template, elementName) {\n if (!nativeShadow && !template._domPrepared) {\n template._domPrepared = true;\n StyleTransformer.domAddScope(template.content, elementName);\n }\n }\n _generateStaticStyle(info, rules, shadowroot, placeholder) {\n let cssText = StyleTransformer.elementStyles(info, rules);\n if (cssText.length) {\n return StyleUtil.applyCss(cssText, info.is, shadowroot, placeholder);\n }\n }\n _prepareHost(host) {\n let {is, typeExtension} = StyleUtil.getIsExtends(host);\n let placeholder = getStylePlaceholder(is)\n let template = templateMap[is];\n let ast;\n let ownStylePropertyNames;\n let cssBuild;\n if (template) {\n ast = template['_styleAst'];\n ownStylePropertyNames = template._ownPropertyNames;\n cssBuild = template._cssBuild;\n }\n const styleInfo = new StyleInfo(\n ast,\n placeholder,\n ownStylePropertyNames,\n is,\n typeExtension,\n cssBuild\n );\n // only set the style info after this element has registered its template\n if (template) {\n StyleInfo.set(host, styleInfo);\n }\n return styleInfo;\n }\n _ensureApplyShim() {\n if (this._applyShim) {\n return;\n } else if (window.ShadyCSS && window.ShadyCSS.ApplyShim) {\n this._applyShim = window.ShadyCSS.ApplyShim;\n this._applyShim['invalidCallback'] = ApplyShimUtils.invalidate;\n }\n }\n _ensureCustomStyleInterface() {\n if (this._customStyleInterface) {\n return;\n } else if (window.ShadyCSS && window.ShadyCSS.CustomStyleInterface) {\n this._customStyleInterface = /** @type {!CustomStyleInterfaceInterface} */(window.ShadyCSS.CustomStyleInterface);\n /** @type {function(!HTMLStyleElement)} */\n this._customStyleInterface['transformCallback'] = (style) => {this.transformCustomStyleForDocument(style)};\n this._customStyleInterface['validateCallback'] = () => {\n requestAnimationFrame(() => {\n if (this._customStyleInterface['enqueued'] || this._elementsHaveApplied) {\n this.flushCustomStyles();\n }\n })\n };\n }\n }\n _ensure() {\n this._ensureApplyShim();\n this._ensureCustomStyleInterface();\n }\n /**\n * Flush and apply custom styles to document\n */\n flushCustomStyles() {\n this._ensure();\n if (!this._customStyleInterface) {\n return;\n }\n let customStyles = this._customStyleInterface['processStyles']();\n // early return if custom-styles don't need validation\n if (!this._customStyleInterface['enqueued']) {\n return;\n }\n if (!nativeCssVariables) {\n this._updateProperties(this._documentOwner, this._documentOwnerStyleInfo);\n this._applyCustomStyles(customStyles);\n } else {\n this._revalidateCustomStyleApplyShim(customStyles);\n }\n this._customStyleInterface['enqueued'] = false;\n // if custom elements have upgraded and there are no native css variables, we must recalculate the whole tree\n if (this._elementsHaveApplied && !nativeCssVariables) {\n this.styleDocument();\n }\n }\n /**\n * Apply styles for the given element\n *\n * @param {!HTMLElement} host\n * @param {Object=} overrideProps\n */\n styleElement(host, overrideProps) {\n let {is} = StyleUtil.getIsExtends(host);\n let styleInfo = StyleInfo.get(host);\n if (!styleInfo) {\n styleInfo = this._prepareHost(host);\n }\n // Only trip the `elementsHaveApplied` flag if a node other that the root document has `applyStyle` called\n if (!this._isRootOwner(host)) {\n this._elementsHaveApplied = true;\n }\n if (overrideProps) {\n styleInfo.overrideStyleProperties =\n styleInfo.overrideStyleProperties || {};\n Object.assign(styleInfo.overrideStyleProperties, overrideProps);\n }\n if (!nativeCssVariables) {\n this.flush();\n this._updateProperties(host, styleInfo);\n if (styleInfo.ownStylePropertyNames && styleInfo.ownStylePropertyNames.length) {\n this._applyStyleProperties(host, styleInfo);\n }\n } else {\n if (styleInfo.overrideStyleProperties) {\n updateNativeProperties(host, styleInfo.overrideStyleProperties);\n }\n let template = templateMap[is];\n // bail early if there is no shadowroot for this element\n if (!template && !this._isRootOwner(host)) {\n return;\n }\n if (template && template._style && !ApplyShimUtils.templateIsValid(template)) {\n // update template\n if (!ApplyShimUtils.templateIsValidating(template)) {\n this._ensure();\n this._applyShim && this._applyShim['transformRules'](template['_styleAst'], is);\n template._style.textContent = StyleTransformer.elementStyles(host, styleInfo.styleRules);\n ApplyShimUtils.startValidatingTemplate(template);\n }\n // update instance if native shadowdom\n if (nativeShadow) {\n let root = host.shadowRoot;\n if (root) {\n let style = root.querySelector('style');\n style.textContent = StyleTransformer.elementStyles(host, styleInfo.styleRules);\n }\n }\n styleInfo.styleRules = template['_styleAst'];\n }\n }\n }\n _styleOwnerForNode(node) {\n let root = node.getRootNode();\n let host = root.host;\n if (host) {\n if (StyleInfo.get(host)) {\n return host;\n } else {\n return this._styleOwnerForNode(host);\n }\n }\n return this._documentOwner;\n }\n _isRootOwner(node) {\n return (node === this._documentOwner);\n }\n _applyStyleProperties(host, styleInfo) {\n let is = StyleUtil.getIsExtends(host).is;\n let cacheEntry = styleCache.fetch(is, styleInfo.styleProperties, styleInfo.ownStylePropertyNames);\n let cachedScopeSelector = cacheEntry && cacheEntry.scopeSelector;\n let cachedStyle = cacheEntry ? cacheEntry.styleElement : null;\n let oldScopeSelector = styleInfo.scopeSelector;\n // only generate new scope if cached style is not found\n styleInfo.scopeSelector = cachedScopeSelector || this._generateScopeSelector(is);\n let style = StyleProperties.applyElementStyle(host, styleInfo.styleProperties, styleInfo.scopeSelector, cachedStyle);\n if (!nativeShadow) {\n StyleProperties.applyElementScopeSelector(host, styleInfo.scopeSelector, oldScopeSelector);\n }\n if (!cacheEntry) {\n styleCache.store(is, styleInfo.styleProperties, style, styleInfo.scopeSelector);\n }\n return style;\n }\n _updateProperties(host, styleInfo) {\n let owner = this._styleOwnerForNode(host);\n let ownerStyleInfo = StyleInfo.get(owner);\n let ownerProperties = ownerStyleInfo.styleProperties;\n let props = Object.create(ownerProperties || null);\n let hostAndRootProps = StyleProperties.hostAndRootPropertiesForScope(host, styleInfo.styleRules);\n let propertyData = StyleProperties.propertyDataFromStyles(ownerStyleInfo.styleRules, host);\n let propertiesMatchingHost = propertyData.properties\n Object.assign(\n props,\n hostAndRootProps.hostProps,\n propertiesMatchingHost,\n hostAndRootProps.rootProps\n );\n this._mixinOverrideStyles(props, styleInfo.overrideStyleProperties);\n StyleProperties.reify(props);\n styleInfo.styleProperties = props;\n }\n _mixinOverrideStyles(props, overrides) {\n for (let p in overrides) {\n let v = overrides[p];\n // skip override props if they are not truthy or 0\n // in order to fall back to inherited values\n if (v || v === 0) {\n props[p] = v;\n }\n }\n }\n /**\n * Update styles of the whole document\n *\n * @param {Object=} properties\n */\n styleDocument(properties) {\n this.styleSubtree(this._documentOwner, properties);\n }\n /**\n * Update styles of a subtree\n *\n * @param {!HTMLElement} host\n * @param {Object=} properties\n */\n styleSubtree(host, properties) {\n let root = host.shadowRoot;\n if (root || this._isRootOwner(host)) {\n this.styleElement(host, properties);\n }\n // process the shadowdom children of `host`\n let shadowChildren = root && (root.children || root.childNodes);\n if (shadowChildren) {\n for (let i = 0; i < shadowChildren.length; i++) {\n let c = /** @type {!HTMLElement} */(shadowChildren[i]);\n this.styleSubtree(c);\n }\n } else {\n // process the lightdom children of `host`\n let children = host.children || host.childNodes;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n let c = /** @type {!HTMLElement} */(children[i]);\n this.styleSubtree(c);\n }\n }\n }\n }\n /* Custom Style operations */\n _revalidateCustomStyleApplyShim(customStyles) {\n for (let i = 0; i < customStyles.length; i++) {\n let c = customStyles[i];\n let s = this._customStyleInterface['getStyleForCustomStyle'](c);\n if (s) {\n this._revalidateApplyShim(s);\n }\n }\n }\n _applyCustomStyles(customStyles) {\n for (let i = 0; i < customStyles.length; i++) {\n let c = customStyles[i];\n let s = this._customStyleInterface['getStyleForCustomStyle'](c);\n if (s) {\n StyleProperties.applyCustomStyle(s, this._documentOwnerStyleInfo.styleProperties);\n }\n }\n }\n transformCustomStyleForDocument(style) {\n let ast = StyleUtil.rulesForStyle(style);\n StyleUtil.forEachRule(ast, (rule) => {\n if (nativeShadow) {\n StyleTransformer.normalizeRootSelector(rule);\n } else {\n StyleTransformer.documentRule(rule);\n }\n if (nativeCssVariables) {\n this._ensure();\n this._applyShim && this._applyShim['transformRule'](rule);\n }\n });\n if (nativeCssVariables) {\n style.textContent = StyleUtil.toCssText(ast);\n } else {\n this._documentOwnerStyleInfo.styleRules['rules'].push(ast);\n }\n }\n _revalidateApplyShim(style) {\n if (nativeCssVariables && this._applyShim) {\n let ast = StyleUtil.rulesForStyle(style);\n this._ensure();\n this._applyShim['transformRules'](ast);\n style.textContent = StyleUtil.toCssText(ast);\n }\n }\n getComputedStyleValue(element, property) {\n let value;\n if (!nativeCssVariables) {\n // element is either a style host, or an ancestor of a style host\n let styleInfo = StyleInfo.get(element) || StyleInfo.get(this._styleOwnerForNode(element));\n value = styleInfo.styleProperties[property];\n }\n // fall back to the property value from the computed styling\n value = value || window.getComputedStyle(element).getPropertyValue(property);\n // trim whitespace that can come after the `:` in css\n // example: padding: 2px -> \" 2px\"\n return value ? value.trim() : '';\n }\n // given an element and a classString, replaces\n // the element's class with the provided classString and adds\n // any necessary ShadyCSS static and property based scoping selectors\n setElementClass(element, classString) {\n let root = element.getRootNode();\n let classes = classString ? classString.split(/\\s/) : [];\n let scopeName = root.host && root.host.localName;\n // If no scope, try to discover scope name from existing class.\n // This can occur if, for example, a template stamped element that\n // has been scoped is manipulated when not in a root.\n if (!scopeName) {\n var classAttr = element.getAttribute('class');\n if (classAttr) {\n let k$ = classAttr.split(/\\s/);\n for (let i=0; i < k$.length; i++) {\n if (k$[i] === StyleTransformer.SCOPE_NAME) {\n scopeName = k$[i+1];\n break;\n }\n }\n }\n }\n if (scopeName) {\n classes.push(StyleTransformer.SCOPE_NAME, scopeName);\n }\n if (!nativeCssVariables) {\n let styleInfo = StyleInfo.get(element);\n if (styleInfo && styleInfo.scopeSelector) {\n classes.push(StyleProperties.XSCOPE_NAME, styleInfo.scopeSelector);\n }\n }\n StyleUtil.setElementClassRaw(element, classes.join(' '));\n }\n _styleInfoForNode(node) {\n return StyleInfo.get(node);\n }\n}\n\n/* exports */\nScopingShim.prototype['flush'] = ScopingShim.prototype.flush;\nScopingShim.prototype['prepareTemplate'] = ScopingShim.prototype.prepareTemplate;\nScopingShim.prototype['styleElement'] = ScopingShim.prototype.styleElement;\nScopingShim.prototype['styleDocument'] = ScopingShim.prototype.styleDocument;\nScopingShim.prototype['styleSubtree'] = ScopingShim.prototype.styleSubtree;\nScopingShim.prototype['getComputedStyleValue'] = ScopingShim.prototype.getComputedStyleValue;\nScopingShim.prototype['setElementClass'] = ScopingShim.prototype.setElementClass;\nScopingShim.prototype['_styleInfoForNode'] = ScopingShim.prototype._styleInfoForNode;\nScopingShim.prototype['transformCustomStyleForDocument'] = ScopingShim.prototype.transformCustomStyleForDocument;\nScopingShim.prototype['getStyleAst'] = ScopingShim.prototype.getStyleAst;\nScopingShim.prototype['styleAstToString'] = ScopingShim.prototype.styleAstToString;\nScopingShim.prototype['flushCustomStyles'] = ScopingShim.prototype.flushCustomStyles;\nObject.defineProperties(ScopingShim.prototype, {\n 'nativeShadow': {\n get() {\n return nativeShadow;\n }\n },\n 'nativeCss': {\n get() {\n return nativeCssVariables;\n }\n }\n});\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport { MIXIN_MATCH, VAR_ASSIGN } from './common-regex.js';\n\n/**\n * @param {Element} element\n * @param {Object=} properties\n */\nexport function updateNativeProperties(element, properties) {\n // remove previous properties\n for (let p in properties) {\n // NOTE: for bc with shim, don't apply null values.\n if (p === null) {\n element.style.removeProperty(p);\n } else {\n element.style.setProperty(p, properties[p]);\n }\n }\n}\n\n/**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\nexport function getComputedStyleValue(element, property) {\n /**\n * @const {string}\n */\n const value = window.getComputedStyle(element).getPropertyValue(property);\n if (!value) {\n return '';\n } else {\n return value.trim();\n }\n}\n\n/**\n * return true if `cssText` contains a mixin definition or consumption\n * @param {string} cssText\n * @return {boolean}\n */\nexport function detectMixin(cssText) {\n const has = MIXIN_MATCH.test(cssText) || VAR_ASSIGN.test(cssText);\n // reset state of the regexes\n MIXIN_MATCH.lastIndex = 0;\n VAR_ASSIGN.lastIndex = 0;\n return has;\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport ScopingShim from '../src/scoping-shim.js';\nimport {nativeCssVariables, nativeShadow} from '../src/style-settings.js';\n\n/** @const {ScopingShim} */\nconst scopingShim = new ScopingShim();\n\nlet ApplyShim, CustomStyleInterface;\n\nif (window['ShadyCSS']) {\n ApplyShim = window['ShadyCSS']['ApplyShim'];\n CustomStyleInterface = window['ShadyCSS']['CustomStyleInterface'];\n}\n\nwindow.ShadyCSS = {\n ScopingShim: scopingShim,\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} elementExtends\n */\n prepareTemplate(template, elementName, elementExtends) {\n scopingShim.flushCustomStyles();\n scopingShim.prepareTemplate(template, elementName, elementExtends)\n },\n\n prepareTemplateDom(template, elementName) {\n scopingShim.prepareTemplateDom(template, elementName);\n },\n\n prepareTemplateStyles(template, elementName, elementExtends) {\n scopingShim.flushCustomStyles();\n scopingShim.prepareTemplateStyles(template, elementName, elementExtends)\n },\n /**\n * @param {!HTMLElement} element\n * @param {Object=} properties\n */\n styleSubtree(element, properties) {\n scopingShim.flushCustomStyles();\n scopingShim.styleSubtree(element, properties);\n },\n\n /**\n * @param {!HTMLElement} element\n */\n styleElement(element) {\n scopingShim.flushCustomStyles();\n scopingShim.styleElement(element);\n },\n\n /**\n * @param {Object=} properties\n */\n styleDocument(properties) {\n scopingShim.flushCustomStyles();\n scopingShim.styleDocument(properties);\n },\n\n flushCustomStyles() {\n scopingShim.flushCustomStyles();\n },\n\n /**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\n getComputedStyleValue(element, property) {\n return scopingShim.getComputedStyleValue(element, property);\n },\n\n nativeCss: nativeCssVariables,\n\n nativeShadow: nativeShadow\n};\n\nif (ApplyShim) {\n window.ShadyCSS.ApplyShim = ApplyShim;\n}\n\nif (CustomStyleInterface) {\n window.ShadyCSS.CustomStyleInterface = CustomStyleInterface;\n}","/* Any copyright is dedicated to the Public Domain.\n * http://creativecommons.org/publicdomain/zero/1.0/ */\n\n(function(scope) {\n 'use strict';\n\n // feature detect for URL constructor\n var hasWorkingUrl = false;\n if (!scope.forceJURL) {\n try {\n var u = new URL('b', 'http://a');\n u.pathname = 'c%20d';\n hasWorkingUrl = u.href === 'http://a/c%20d';\n } catch(e) {}\n }\n\n if (hasWorkingUrl)\n return;\n\n var relative = Object.create(null);\n relative['ftp'] = 21;\n relative['file'] = 0;\n relative['gopher'] = 70;\n relative['http'] = 80;\n relative['https'] = 443;\n relative['ws'] = 80;\n relative['wss'] = 443;\n\n var relativePathDotMapping = Object.create(null);\n relativePathDotMapping['%2e'] = '.';\n relativePathDotMapping['.%2e'] = '..';\n relativePathDotMapping['%2e.'] = '..';\n relativePathDotMapping['%2e%2e'] = '..';\n\n function isRelativeScheme(scheme) {\n return relative[scheme] !== undefined;\n }\n\n function invalid() {\n clear.call(this);\n this._isInvalid = true;\n }\n\n function IDNAToASCII(h) {\n if ('' == h) {\n invalid.call(this)\n }\n // XXX\n return h.toLowerCase()\n }\n\n function percentEscape(c) {\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ? `\n [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) == -1\n ) {\n return c;\n }\n return encodeURIComponent(c);\n }\n\n function percentEscapeQuery(c) {\n // XXX This actually needs to encode c using encoding and then\n // convert the bytes one-by-one.\n\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ` (do not escape '?')\n [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) == -1\n ) {\n return c;\n }\n return encodeURIComponent(c);\n }\n\n var EOF = undefined,\n ALPHA = /[a-zA-Z]/,\n ALPHANUMERIC = /[a-zA-Z0-9\\+\\-\\.]/;\n\n function parse(input, stateOverride, base) {\n function err(message) {\n errors.push(message)\n }\n\n var state = stateOverride || 'scheme start',\n cursor = 0,\n buffer = '',\n seenAt = false,\n seenBracket = false,\n errors = [];\n\n loop: while ((input[cursor - 1] != EOF || cursor == 0) && !this._isInvalid) {\n var c = input[cursor];\n switch (state) {\n case 'scheme start':\n if (c && ALPHA.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\n state = 'scheme';\n } else if (!stateOverride) {\n buffer = '';\n state = 'no scheme';\n continue;\n } else {\n err('Invalid scheme.');\n break loop;\n }\n break;\n\n case 'scheme':\n if (c && ALPHANUMERIC.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\n } else if (':' == c) {\n this._scheme = buffer;\n buffer = '';\n if (stateOverride) {\n break loop;\n }\n if (isRelativeScheme(this._scheme)) {\n this._isRelative = true;\n }\n if ('file' == this._scheme) {\n state = 'relative';\n } else if (this._isRelative && base && base._scheme == this._scheme) {\n state = 'relative or authority';\n } else if (this._isRelative) {\n state = 'authority first slash';\n } else {\n state = 'scheme data';\n }\n } else if (!stateOverride) {\n buffer = '';\n cursor = 0;\n state = 'no scheme';\n continue;\n } else if (EOF == c) {\n break loop;\n } else {\n err('Code point not allowed in scheme: ' + c)\n break loop;\n }\n break;\n\n case 'scheme data':\n if ('?' == c) {\n this._query = '?';\n state = 'query';\n } else if ('#' == c) {\n this._fragment = '#';\n state = 'fragment';\n } else {\n // XXX error handling\n if (EOF != c && '\\t' != c && '\\n' != c && '\\r' != c) {\n this._schemeData += percentEscape(c);\n }\n }\n break;\n\n case 'no scheme':\n if (!base || !(isRelativeScheme(base._scheme))) {\n err('Missing scheme.');\n invalid.call(this);\n } else {\n state = 'relative';\n continue;\n }\n break;\n\n case 'relative or authority':\n if ('/' == c && '/' == input[cursor+1]) {\n state = 'authority ignore slashes';\n } else {\n err('Expected /, got: ' + c);\n state = 'relative';\n continue\n }\n break;\n\n case 'relative':\n this._isRelative = true;\n if ('file' != this._scheme)\n this._scheme = base._scheme;\n if (EOF == c) {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = base._query;\n this._username = base._username;\n this._password = base._password;\n break loop;\n } else if ('/' == c || '\\\\' == c) {\n if ('\\\\' == c)\n err('\\\\ is an invalid code point.');\n state = 'relative slash';\n } else if ('?' == c) {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = '?';\n this._username = base._username;\n this._password = base._password;\n state = 'query';\n } else if ('#' == c) {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = base._query;\n this._fragment = '#';\n this._username = base._username;\n this._password = base._password;\n state = 'fragment';\n } else {\n var nextC = input[cursor+1]\n var nextNextC = input[cursor+2]\n if (\n 'file' != this._scheme || !ALPHA.test(c) ||\n (nextC != ':' && nextC != '|') ||\n (EOF != nextNextC && '/' != nextNextC && '\\\\' != nextNextC && '?' != nextNextC && '#' != nextNextC)) {\n this._host = base._host;\n this._port = base._port;\n this._username = base._username;\n this._password = base._password;\n this._path = base._path.slice();\n this._path.pop();\n }\n state = 'relative path';\n continue;\n }\n break;\n\n case 'relative slash':\n if ('/' == c || '\\\\' == c) {\n if ('\\\\' == c) {\n err('\\\\ is an invalid code point.');\n }\n if ('file' == this._scheme) {\n state = 'file host';\n } else {\n state = 'authority ignore slashes';\n }\n } else {\n if ('file' != this._scheme) {\n this._host = base._host;\n this._port = base._port;\n this._username = base._username;\n this._password = base._password;\n }\n state = 'relative path';\n continue;\n }\n break;\n\n case 'authority first slash':\n if ('/' == c) {\n state = 'authority second slash';\n } else {\n err(\"Expected '/', got: \" + c);\n state = 'authority ignore slashes';\n continue;\n }\n break;\n\n case 'authority second slash':\n state = 'authority ignore slashes';\n if ('/' != c) {\n err(\"Expected '/', got: \" + c);\n continue;\n }\n break;\n\n case 'authority ignore slashes':\n if ('/' != c && '\\\\' != c) {\n state = 'authority';\n continue;\n } else {\n err('Expected authority, got: ' + c);\n }\n break;\n\n case 'authority':\n if ('@' == c) {\n if (seenAt) {\n err('@ already seen.');\n buffer += '%40';\n }\n seenAt = true;\n for (var i = 0; i < buffer.length; i++) {\n var cp = buffer[i];\n if ('\\t' == cp || '\\n' == cp || '\\r' == cp) {\n err('Invalid whitespace in authority.');\n continue;\n }\n // XXX check URL code points\n if (':' == cp && null === this._password) {\n this._password = '';\n continue;\n }\n var tempC = percentEscape(cp);\n (null !== this._password) ? this._password += tempC : this._username += tempC;\n }\n buffer = '';\n } else if (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' == c) {\n cursor -= buffer.length;\n buffer = '';\n state = 'host';\n continue;\n } else {\n buffer += c;\n }\n break;\n\n case 'file host':\n if (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' == c) {\n if (buffer.length == 2 && ALPHA.test(buffer[0]) && (buffer[1] == ':' || buffer[1] == '|')) {\n state = 'relative path';\n } else if (buffer.length == 0) {\n state = 'relative path start';\n } else {\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'relative path start';\n }\n continue;\n } else if ('\\t' == c || '\\n' == c || '\\r' == c) {\n err('Invalid whitespace in file host.');\n } else {\n buffer += c;\n }\n break;\n\n case 'host':\n case 'hostname':\n if (':' == c && !seenBracket) {\n // XXX host parsing\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'port';\n if ('hostname' == stateOverride) {\n break loop;\n }\n } else if (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' == c) {\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'relative path start';\n if (stateOverride) {\n break loop;\n }\n continue;\n } else if ('\\t' != c && '\\n' != c && '\\r' != c) {\n if ('[' == c) {\n seenBracket = true;\n } else if (']' == c) {\n seenBracket = false;\n }\n buffer += c;\n } else {\n err('Invalid code point in host/hostname: ' + c);\n }\n break;\n\n case 'port':\n if (/[0-9]/.test(c)) {\n buffer += c;\n } else if (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' == c || stateOverride) {\n if ('' != buffer) {\n var temp = parseInt(buffer, 10);\n if (temp != relative[this._scheme]) {\n this._port = temp + '';\n }\n buffer = '';\n }\n if (stateOverride) {\n break loop;\n }\n state = 'relative path start';\n continue;\n } else if ('\\t' == c || '\\n' == c || '\\r' == c) {\n err('Invalid code point in port: ' + c);\n } else {\n invalid.call(this);\n }\n break;\n\n case 'relative path start':\n if ('\\\\' == c)\n err(\"'\\\\' not allowed in path.\");\n state = 'relative path';\n if ('/' != c && '\\\\' != c) {\n continue;\n }\n break;\n\n case 'relative path':\n if (EOF == c || '/' == c || '\\\\' == c || (!stateOverride && ('?' == c || '#' == c))) {\n if ('\\\\' == c) {\n err('\\\\ not allowed in relative path.');\n }\n var tmp;\n if (tmp = relativePathDotMapping[buffer.toLowerCase()]) {\n buffer = tmp;\n }\n if ('..' == buffer) {\n this._path.pop();\n if ('/' != c && '\\\\' != c) {\n this._path.push('');\n }\n } else if ('.' == buffer && '/' != c && '\\\\' != c) {\n this._path.push('');\n } else if ('.' != buffer) {\n if ('file' == this._scheme && this._path.length == 0 && buffer.length == 2 && ALPHA.test(buffer[0]) && buffer[1] == '|') {\n buffer = buffer[0] + ':';\n }\n this._path.push(buffer);\n }\n buffer = '';\n if ('?' == c) {\n this._query = '?';\n state = 'query';\n } else if ('#' == c) {\n this._fragment = '#';\n state = 'fragment';\n }\n } else if ('\\t' != c && '\\n' != c && '\\r' != c) {\n buffer += percentEscape(c);\n }\n break;\n\n case 'query':\n if (!stateOverride && '#' == c) {\n this._fragment = '#';\n state = 'fragment';\n } else if (EOF != c && '\\t' != c && '\\n' != c && '\\r' != c) {\n this._query += percentEscapeQuery(c);\n }\n break;\n\n case 'fragment':\n if (EOF != c && '\\t' != c && '\\n' != c && '\\r' != c) {\n this._fragment += c;\n }\n break;\n }\n\n cursor++;\n }\n }\n\n function clear() {\n this._scheme = '';\n this._schemeData = '';\n this._username = '';\n this._password = null;\n this._host = '';\n this._port = '';\n this._path = [];\n this._query = '';\n this._fragment = '';\n this._isInvalid = false;\n this._isRelative = false;\n }\n\n // Does not process domain names or IP addresses.\n // Does not handle encoding for the query parameter.\n /**\n * @constructor\n * @implements {URL}\n */\n function jURL(url, base /* , encoding */) {\n if (base !== undefined && !(base instanceof jURL))\n base = new jURL(String(base));\n\n this._url = url;\n clear.call(this);\n\n var input = url.replace(/^[ \\t\\r\\n\\f]+|[ \\t\\r\\n\\f]+$/g, '');\n // encoding = encoding || 'utf-8'\n\n parse.call(this, input, null, base);\n }\n\n jURL.prototype = {\n toString: function() {\n return this.href;\n },\n get href() {\n if (this._isInvalid)\n return this._url;\n\n var authority = '';\n if ('' != this._username || null != this._password) {\n authority = this._username +\n (null != this._password ? ':' + this._password : '') + '@';\n }\n\n return this.protocol +\n (this._isRelative ? '//' + authority + this.host : '') +\n this.pathname + this._query + this._fragment;\n },\n set href(href) {\n clear.call(this);\n parse.call(this, href);\n },\n\n get protocol() {\n return this._scheme + ':';\n },\n set protocol(protocol) {\n if (this._isInvalid)\n return;\n parse.call(this, protocol + ':', 'scheme start');\n },\n\n get host() {\n return this._isInvalid ? '' : this._port ?\n this._host + ':' + this._port : this._host;\n },\n set host(host) {\n if (this._isInvalid || !this._isRelative)\n return;\n parse.call(this, host, 'host');\n },\n\n get hostname() {\n return this._host;\n },\n set hostname(hostname) {\n if (this._isInvalid || !this._isRelative)\n return;\n parse.call(this, hostname, 'hostname');\n },\n\n get port() {\n return this._port;\n },\n set port(port) {\n if (this._isInvalid || !this._isRelative)\n return;\n parse.call(this, port, 'port');\n },\n\n get pathname() {\n return this._isInvalid ? '' : this._isRelative ?\n '/' + this._path.join('/') : this._schemeData;\n },\n set pathname(pathname) {\n if (this._isInvalid || !this._isRelative)\n return;\n this._path = [];\n parse.call(this, pathname, 'relative path start');\n },\n\n get search() {\n return this._isInvalid || !this._query || '?' == this._query ?\n '' : this._query;\n },\n set search(search) {\n if (this._isInvalid || !this._isRelative)\n return;\n this._query = '?';\n if ('?' == search[0])\n search = search.slice(1);\n parse.call(this, search, 'query');\n },\n\n get hash() {\n return this._isInvalid || !this._fragment || '#' == this._fragment ?\n '' : this._fragment;\n },\n set hash(hash) {\n if (this._isInvalid)\n return;\n this._fragment = '#';\n if ('#' == hash[0])\n hash = hash.slice(1);\n parse.call(this, hash, 'fragment');\n },\n\n get origin() {\n var host;\n if (this._isInvalid || !this._scheme) {\n return '';\n }\n // javascript: Gecko returns String(\"\"), WebKit/Blink String(\"null\")\n // Gecko throws error for \"data://\"\n // data: Gecko returns \"\", Blink returns \"data://\", WebKit returns \"null\"\n // Gecko returns String(\"\") for file: mailto:\n // WebKit/Blink returns String(\"SCHEME://\") for file: mailto:\n switch (this._scheme) {\n case 'data':\n case 'file':\n case 'javascript':\n case 'mailto':\n return 'null';\n }\n host = this.host;\n if (!host) {\n return '';\n }\n return this._scheme + '://' + host;\n }\n };\n\n // Copy over the static methods\n var OriginalURL = scope.URL;\n if (OriginalURL) {\n jURL.createObjectURL = function(blob) {\n // IE extension allows a second optional options argument.\n // http://msdn.microsoft.com/en-us/library/ie/hh772302(v=vs.85).aspx\n return OriginalURL.createObjectURL.apply(OriginalURL, arguments);\n };\n jURL.revokeObjectURL = function(url) {\n OriginalURL.revokeObjectURL(url);\n };\n }\n\n scope.URL = jURL;\n\n})(window);\n","/**\n@license\nCopyright (c) 2018 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n'use strict';\n// Implement Node.baseURI for IE 11\n// adapted from\n// https://github.com/webcomponents/html-imports/blob/v1.2.0/src/html-imports.js\n\n/** @type {Object|undefined} */\nconst native_baseURI = Object.getOwnPropertyDescriptor(Node.prototype, 'baseURI');\nif (!native_baseURI) {\n Object.defineProperty(Node.prototype, 'baseURI', {\n /**\n * @this {Node}\n * @return {string}\n */\n get() {\n // this.ownerDocument is `null` for documents\n const doc = this.ownerDocument || this;\n const base = /** @type {HTMLBaseElement} */ (doc.querySelector('base[href]'));\n return base && base.href || window.location.href;\n },\n configurable: true,\n enumerable: true\n });\n}","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n'use strict';\n// It's desireable to provide a default stylesheet\n// that's convenient for styling unresolved elements, but\n// it's cumbersome to have to include this manually in every page.\n// It would make sense to put inside some HTMLImport but\n// the HTMLImports polyfill does not allow loading of stylesheets\n// that block rendering. Therefore this injection is tolerated here.\n//\n// NOTE: position: relative fixes IE's failure to inherit opacity\n// when a child is not statically positioned.\nlet style = document.createElement('style');\nstyle.textContent = ''\n + 'body {'\n + 'transition: opacity ease-in 0.2s;'\n + ' } \\n'\n + 'body[unresolved] {'\n + 'opacity: 0; display: block; overflow: hidden; position: relative;'\n + ' } \\n'\n ;\nlet head = document.querySelector('head');\nhead.insertBefore(style, head.firstChild);","/**\n@license\nCopyright (c) 2018 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n'use strict';\n\n/*\n * Polyfills loaded: HTML Imports, Custom Elements, Shady DOM/Shady CSS, platform polyfills, template\n * Used in: webcomponents bundle to load ALL the things\n */\n\nimport './webcomponents-sd-ce-pf-index.js';\n\nconst customElements = window.customElements;\n\nlet shouldFlush = false;\n/** @type {?function()} */\nlet flusher = null;\n\nif (customElements['polyfillWrapFlushCallback']) {\n customElements['polyfillWrapFlushCallback']((flush) => {\n flusher = flush;\n if (shouldFlush) {\n flush();\n }\n });\n}\n\nfunction flushAndFire() {\n if (window.HTMLTemplateElement.bootstrap) {\n window.HTMLTemplateElement.bootstrap(window.document);\n }\n flusher && flusher();\n shouldFlush = true;\n window.WebComponents.ready = true;\n document.dispatchEvent(new CustomEvent('WebComponentsReady', { bubbles: true }));\n}\n\nif (document.readyState !== 'complete') {\n // this script may come between DCL and load, so listen for both, and cancel load listener if DCL fires\n window.addEventListener('load', flushAndFire)\n window.addEventListener('DOMContentLoaded', () => {\n window.removeEventListener('load', flushAndFire);\n flushAndFire();\n });\n} else {\n flushAndFire();\n}","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\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","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar aFunction = require('../internals/a-function');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://github.com/tc39/proposal-flatMap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A;\n aFunction(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg, 3) : false;\n var element;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\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 arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar test = [];\nvar nativeSort = test.sort;\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 STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_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 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","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\naddToUnscopables('flatMap');\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module lit-html\n */\n\nimport {Part} from './part.js';\n\nconst directives = new WeakMap<object, true>();\n\n// tslint:disable-next-line:no-any\nexport type DirectiveFactory = (...args: any[]) => object;\n\nexport type DirectiveFn = (part: Part) => void;\n\n/**\n * Brands a function as a directive factory function so that lit-html will call\n * the function during template rendering, rather than passing as a value.\n *\n * A _directive_ is a function that takes a Part as an argument. It has the\n * signature: `(part: Part) => void`.\n *\n * A directive _factory_ is a function that takes arguments for data and\n * configuration and returns a directive. Users of directive usually refer to\n * the directive factory as the directive. For example, \"The repeat directive\".\n *\n * Usually a template author will invoke a directive factory in their template\n * with relevant arguments, which will then return a directive function.\n *\n * Here's an example of using the `repeat()` directive factory that takes an\n * array and a function to render an item:\n *\n * ```js\n * html`<ul><${repeat(items, (item) => html`<li>${item}</li>`)}</ul>`\n * ```\n *\n * When `repeat` is invoked, it returns a directive function that closes over\n * `items` and the template function. When the outer template is rendered, the\n * return directive function is called with the Part for the expression.\n * `repeat` then performs it's custom logic to render multiple items.\n *\n * @param f The directive factory function. Must be a function that returns a\n * function of the signature `(part: Part) => void`. The returned function will\n * be called with the part object.\n *\n * @example\n *\n * import {directive, html} from 'lit-html';\n *\n * const immutable = directive((v) => (part) => {\n * if (part.value !== v) {\n * part.setValue(v)\n * }\n * });\n */\nexport const directive = <F extends DirectiveFactory>(f: F): F =>\n ((...args: unknown[]) => {\n const d = f(...args);\n directives.set(d, true);\n return d;\n }) as F;\n\nexport const isDirective = (o: unknown): o is DirectiveFn => {\n return typeof o === 'function' && directives.has(o);\n};\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module lit-html\n */\n\ninterface MaybePolyfilledCe extends CustomElementRegistry {\n readonly polyfillWrapFlushCallback?: object;\n}\n\n/**\n * True if the custom elements polyfill is in use.\n */\nexport const isCEPolyfill = window.customElements !== undefined &&\n (window.customElements as MaybePolyfilledCe).polyfillWrapFlushCallback !==\n undefined;\n\n/**\n * Reparents nodes, starting from `start` (inclusive) to `end` (exclusive),\n * into another container (could be the same container), before `before`. If\n * `before` is null, it appends the nodes to the container.\n */\nexport const reparentNodes =\n (container: Node,\n start: Node|null,\n end: Node|null = null,\n before: Node|null = null): void => {\n while (start !== end) {\n const n = start!.nextSibling;\n container.insertBefore(start!, before);\n start = n;\n }\n };\n\n/**\n * Removes nodes, starting from `start` (inclusive) to `end` (exclusive), from\n * `container`.\n */\nexport const removeNodes =\n (container: Node, start: Node|null, end: Node|null = null): void => {\n while (start !== end) {\n const n = start!.nextSibling;\n container.removeChild(start!);\n start = n;\n }\n };\n","/**\n * @license\n * Copyright (c) 2018 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module lit-html\n */\n\n/**\n * The Part interface represents a dynamic part of a template instance rendered\n * by lit-html.\n */\nexport interface Part {\n readonly value: unknown;\n\n /**\n * Sets the current part value, but does not write it to the DOM.\n * @param value The value that will be committed.\n */\n setValue(value: unknown): void;\n\n /**\n * Commits the current part value, causing it to actually be written to the\n * DOM.\n *\n * Directives are run at the start of `commit`, so that if they call\n * `part.setValue(...)` synchronously that value will be used in the current\n * commit, and there's no need to call `part.commit()` within the directive.\n * If directives set a part value asynchronously, then they must call\n * `part.commit()` manually.\n */\n commit(): void;\n}\n\n/**\n * A sentinel value that signals that a value was handled by a directive and\n * should not be written to the DOM.\n */\nexport const noChange = {};\n\n/**\n * A sentinel value that signals a NodePart to fully clear its content.\n */\nexport const nothing = {};\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module lit-html\n */\n\nimport {TemplateResult} from './template-result.js';\n\n/**\n * An expression marker with embedded unique key to avoid collision with\n * possible text in templates.\n */\nexport const marker = `{{lit-${String(Math.random()).slice(2)}}}`;\n\n/**\n * An expression marker used text-positions, multi-binding attributes, and\n * attributes with markup-like text values.\n */\nexport const nodeMarker = `<!--${marker}-->`;\n\nexport const markerRegex = new RegExp(`${marker}|${nodeMarker}`);\n\n/**\n * Suffix appended to all bound attribute names.\n */\nexport const boundAttributeSuffix = '$lit$';\n\n/**\n * An updateable Template that tracks the location of dynamic parts.\n */\nexport class Template {\n readonly parts: TemplatePart[] = [];\n readonly element: HTMLTemplateElement;\n\n constructor(result: TemplateResult, element: HTMLTemplateElement) {\n this.element = element;\n\n const nodesToRemove: Node[] = [];\n const stack: Node[] = [];\n // Edge needs all 4 parameters present; IE11 needs 3rd parameter to be null\n const walker = document.createTreeWalker(\n element.content,\n 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */,\n null,\n false);\n // Keeps track of the last index associated with a part. We try to delete\n // unnecessary nodes, but we never want to associate two different parts\n // to the same index. They must have a constant node between.\n let lastPartIndex = 0;\n let index = -1;\n let partIndex = 0;\n const {strings, values: {length}} = result;\n while (partIndex < length) {\n const node = walker.nextNode() as Element | Comment | Text | null;\n if (node === null) {\n // We've exhausted the content inside a nested template element.\n // Because we still have parts (the outer for-loop), we know:\n // - There is a template in the stack\n // - The walker will find a nextNode outside the template\n walker.currentNode = stack.pop()!;\n continue;\n }\n index++;\n\n if (node.nodeType === 1 /* Node.ELEMENT_NODE */) {\n if ((node as Element).hasAttributes()) {\n const attributes = (node as Element).attributes;\n const {length} = attributes;\n // Per\n // https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap,\n // attributes are not guaranteed to be returned in document order.\n // In particular, Edge/IE can return them out of order, so we cannot\n // assume a correspondence between part index and attribute index.\n let count = 0;\n for (let i = 0; i < length; i++) {\n if (endsWith(attributes[i].name, boundAttributeSuffix)) {\n count++;\n }\n }\n while (count-- > 0) {\n // Get the template literal section leading up to the first\n // expression in this attribute\n const stringForPart = strings[partIndex];\n // Find the attribute name\n const name = lastAttributeNameRegex.exec(stringForPart)![2];\n // Find the corresponding attribute\n // All bound attributes have had a suffix added in\n // TemplateResult#getHTML to opt out of special attribute\n // handling. To look up the attribute value we also need to add\n // the suffix.\n const attributeLookupName =\n name.toLowerCase() + boundAttributeSuffix;\n const attributeValue =\n (node as Element).getAttribute(attributeLookupName)!;\n (node as Element).removeAttribute(attributeLookupName);\n const statics = attributeValue.split(markerRegex);\n this.parts.push({type: 'attribute', index, name, strings: statics});\n partIndex += statics.length - 1;\n }\n }\n if ((node as Element).tagName === 'TEMPLATE') {\n stack.push(node);\n walker.currentNode = (node as HTMLTemplateElement).content;\n }\n } else if (node.nodeType === 3 /* Node.TEXT_NODE */) {\n const data = (node as Text).data;\n if (data.indexOf(marker) >= 0) {\n const parent = node.parentNode!;\n const strings = data.split(markerRegex);\n const lastIndex = strings.length - 1;\n // Generate a new text node for each literal section\n // These nodes are also used as the markers for node parts\n for (let i = 0; i < lastIndex; i++) {\n let insert: Node;\n let s = strings[i];\n if (s === '') {\n insert = createMarker();\n } else {\n const match = lastAttributeNameRegex.exec(s);\n if (match !== null && endsWith(match[2], boundAttributeSuffix)) {\n s = s.slice(0, match.index) + match[1] +\n match[2].slice(0, -boundAttributeSuffix.length) + match[3];\n }\n insert = document.createTextNode(s);\n }\n parent.insertBefore(insert, node);\n this.parts.push({type: 'node', index: ++index});\n }\n // If there's no text, we must insert a comment to mark our place.\n // Else, we can trust it will stick around after cloning.\n if (strings[lastIndex] === '') {\n parent.insertBefore(createMarker(), node);\n nodesToRemove.push(node);\n } else {\n (node as Text).data = strings[lastIndex];\n }\n // We have a part for each match found\n partIndex += lastIndex;\n }\n } else if (node.nodeType === 8 /* Node.COMMENT_NODE */) {\n if ((node as Comment).data === marker) {\n const parent = node.parentNode!;\n // Add a new marker node to be the startNode of the Part if any of\n // the following are true:\n // * We don't have a previousSibling\n // * The previousSibling is already the start of a previous part\n if (node.previousSibling === null || index === lastPartIndex) {\n index++;\n parent.insertBefore(createMarker(), node);\n }\n lastPartIndex = index;\n this.parts.push({type: 'node', index});\n // If we don't have a nextSibling, keep this node so we have an end.\n // Else, we can remove it to save future costs.\n if (node.nextSibling === null) {\n (node as Comment).data = '';\n } else {\n nodesToRemove.push(node);\n index--;\n }\n partIndex++;\n } else {\n let i = -1;\n while ((i = (node as Comment).data.indexOf(marker, i + 1)) !== -1) {\n // Comment node has a binding marker inside, make an inactive part\n // The binding won't work, but subsequent bindings will\n // TODO (justinfagnani): consider whether it's even worth it to\n // make bindings in comments work\n this.parts.push({type: 'node', index: -1});\n partIndex++;\n }\n }\n }\n }\n\n // Remove text binding nodes after the walk to not disturb the TreeWalker\n for (const n of nodesToRemove) {\n n.parentNode!.removeChild(n);\n }\n }\n}\n\nconst endsWith = (str: string, suffix: string): boolean => {\n const index = str.length - suffix.length;\n return index >= 0 && str.slice(index) === suffix;\n};\n\n/**\n * A placeholder for a dynamic expression in an HTML template.\n *\n * There are two built-in part types: AttributePart and NodePart. NodeParts\n * always represent a single dynamic expression, while AttributeParts may\n * represent as many expressions are contained in the attribute.\n *\n * A Template's parts are mutable, so parts can be replaced or modified\n * (possibly to implement different template semantics). The contract is that\n * parts can only be replaced, not removed, added or reordered, and parts must\n * always consume the correct number of values in their `update()` method.\n *\n * TODO(justinfagnani): That requirement is a little fragile. A\n * TemplateInstance could instead be more careful about which values it gives\n * to Part.update().\n */\nexport type TemplatePart = {\n readonly type: 'node',\n index: number\n}|{readonly type: 'attribute', index: number, readonly name: string, readonly strings: ReadonlyArray<string>};\n\nexport const isTemplatePartActive = (part: TemplatePart) => part.index !== -1;\n\n// Allows `document.createComment('')` to be renamed for a\n// small manual size-savings.\nexport const createMarker = () => document.createComment('');\n\n/**\n * This regex extracts the attribute name preceding an attribute-position\n * expression. It does this by matching the syntax allowed for attributes\n * against the string literal directly preceding the expression, assuming that\n * the expression is in an attribute-value position.\n *\n * See attributes in the HTML spec:\n * https://www.w3.org/TR/html5/syntax.html#elements-attributes\n *\n * \" \\x09\\x0a\\x0c\\x0d\" are HTML space characters:\n * https://www.w3.org/TR/html5/infrastructure.html#space-characters\n *\n * \"\\0-\\x1F\\x7F-\\x9F\" are Unicode control characters, which includes every\n * space character except \" \".\n *\n * So an attribute is:\n * * The name: any character except a control character, space character, ('),\n * (\"), \">\", \"=\", or \"/\"\n * * Followed by zero or more space characters\n * * Followed by \"=\"\n * * Followed by zero or more space characters\n * * Followed by:\n * * Any character except space, ('), (\"), \"<\", \">\", \"=\", (`), or\n * * (\") then any non-(\"), or\n * * (') then any non-(')\n */\nexport const lastAttributeNameRegex =\n /([ \\x09\\x0a\\x0c\\x0d])([^\\0-\\x1F\\x7F-\\x9F \"'>=/]+)([ \\x09\\x0a\\x0c\\x0d]*=[ \\x09\\x0a\\x0c\\x0d]*(?:[^ \\x09\\x0a\\x0c\\x0d\"'`<>=]*|\"[^\"]*|'[^']*))$/;\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module lit-html\n */\n\nimport {isCEPolyfill} from './dom.js';\nimport {Part} from './part.js';\nimport {RenderOptions} from './render-options.js';\nimport {TemplateProcessor} from './template-processor.js';\nimport {isTemplatePartActive, Template, TemplatePart} from './template.js';\n\n/**\n * An instance of a `Template` that can be attached to the DOM and updated\n * with new values.\n */\nexport class TemplateInstance {\n private readonly __parts: Array<Part|undefined> = [];\n readonly processor: TemplateProcessor;\n readonly options: RenderOptions;\n readonly template: Template;\n\n constructor(\n template: Template, processor: TemplateProcessor,\n options: RenderOptions) {\n this.template = template;\n this.processor = processor;\n this.options = options;\n }\n\n update(values: ReadonlyArray<unknown>) {\n let i = 0;\n for (const part of this.__parts) {\n if (part !== undefined) {\n part.setValue(values[i]);\n }\n i++;\n }\n for (const part of this.__parts) {\n if (part !== undefined) {\n part.commit();\n }\n }\n }\n\n _clone(): DocumentFragment {\n // There are a number of steps in the lifecycle of a template instance's\n // DOM fragment:\n // 1. Clone - create the instance fragment\n // 2. Adopt - adopt into the main document\n // 3. Process - find part markers and create parts\n // 4. Upgrade - upgrade custom elements\n // 5. Update - set node, attribute, property, etc., values\n // 6. Connect - connect to the document. Optional and outside of this\n // method.\n //\n // We have a few constraints on the ordering of these steps:\n // * We need to upgrade before updating, so that property values will pass\n // through any property setters.\n // * We would like to process before upgrading so that we're sure that the\n // cloned fragment is inert and not disturbed by self-modifying DOM.\n // * We want custom elements to upgrade even in disconnected fragments.\n //\n // Given these constraints, with full custom elements support we would\n // prefer the order: Clone, Process, Adopt, Upgrade, Update, Connect\n //\n // But Safari dooes not implement CustomElementRegistry#upgrade, so we\n // can not implement that order and still have upgrade-before-update and\n // upgrade disconnected fragments. So we instead sacrifice the\n // process-before-upgrade constraint, since in Custom Elements v1 elements\n // must not modify their light DOM in the constructor. We still have issues\n // when co-existing with CEv0 elements like Polymer 1, and with polyfills\n // that don't strictly adhere to the no-modification rule because shadow\n // DOM, which may be created in the constructor, is emulated by being placed\n // in the light DOM.\n //\n // The resulting order is on native is: Clone, Adopt, Upgrade, Process,\n // Update, Connect. document.importNode() performs Clone, Adopt, and Upgrade\n // in one step.\n //\n // The Custom Elements v1 polyfill supports upgrade(), so the order when\n // polyfilled is the more ideal: Clone, Process, Adopt, Upgrade, Update,\n // Connect.\n\n const fragment = isCEPolyfill ?\n this.template.element.content.cloneNode(true) as DocumentFragment :\n document.importNode(this.template.element.content, true);\n\n const stack: Node[] = [];\n const parts = this.template.parts;\n // Edge needs all 4 parameters present; IE11 needs 3rd parameter to be null\n const walker = document.createTreeWalker(\n fragment,\n 133 /* NodeFilter.SHOW_{ELEMENT|COMMENT|TEXT} */,\n null,\n false);\n let partIndex = 0;\n let nodeIndex = 0;\n let part: TemplatePart;\n let node = walker.nextNode();\n // Loop through all the nodes and parts of a template\n while (partIndex < parts.length) {\n part = parts[partIndex];\n if (!isTemplatePartActive(part)) {\n this.__parts.push(undefined);\n partIndex++;\n continue;\n }\n\n // Progress the tree walker until we find our next part's node.\n // Note that multiple parts may share the same node (attribute parts\n // on a single element), so this loop may not run at all.\n while (nodeIndex < part.index) {\n nodeIndex++;\n if (node!.nodeName === 'TEMPLATE') {\n stack.push(node!);\n walker.currentNode = (node as HTMLTemplateElement).content;\n }\n if ((node = walker.nextNode()) === null) {\n // We've exhausted the content inside a nested template element.\n // Because we still have parts (the outer for-loop), we know:\n // - There is a template in the stack\n // - The walker will find a nextNode outside the template\n walker.currentNode = stack.pop()!;\n node = walker.nextNode();\n }\n }\n\n // We've arrived at our part's node.\n if (part.type === 'node') {\n const part = this.processor.handleTextExpression(this.options);\n part.insertAfterNode(node!.previousSibling!);\n this.__parts.push(part);\n } else {\n this.__parts.push(...this.processor.handleAttributeExpressions(\n node as Element, part.name, part.strings, this.options));\n }\n partIndex++;\n }\n\n if (isCEPolyfill) {\n document.adoptNode(fragment);\n customElements.upgrade(fragment);\n }\n return fragment;\n }\n}\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module lit-html\n */\n\nimport {reparentNodes} from './dom.js';\nimport {TemplateProcessor} from './template-processor.js';\nimport {boundAttributeSuffix, lastAttributeNameRegex, marker, nodeMarker} from './template.js';\n\nconst commentMarker = ` ${marker} `;\n\n/**\n * The return type of `html`, which holds a Template and the values from\n * interpolated expressions.\n */\nexport class TemplateResult {\n readonly strings: TemplateStringsArray;\n readonly values: ReadonlyArray<unknown>;\n readonly type: string;\n readonly processor: TemplateProcessor;\n\n constructor(\n strings: TemplateStringsArray, values: ReadonlyArray<unknown>,\n type: string, processor: TemplateProcessor) {\n this.strings = strings;\n this.values = values;\n this.type = type;\n this.processor = processor;\n }\n\n /**\n * Returns a string of HTML used to create a `<template>` element.\n */\n getHTML(): string {\n const l = this.strings.length - 1;\n let html = '';\n let isCommentBinding = false;\n\n for (let i = 0; i < l; i++) {\n const s = this.strings[i];\n // For each binding we want to determine the kind of marker to insert\n // into the template source before it's parsed by the browser's HTML\n // parser. The marker type is based on whether the expression is in an\n // attribute, text, or comment poisition.\n // * For node-position bindings we insert a comment with the marker\n // sentinel as its text content, like <!--{{lit-guid}}-->.\n // * For attribute bindings we insert just the marker sentinel for the\n // first binding, so that we support unquoted attribute bindings.\n // Subsequent bindings can use a comment marker because multi-binding\n // attributes must be quoted.\n // * For comment bindings we insert just the marker sentinel so we don't\n // close the comment.\n //\n // The following code scans the template source, but is *not* an HTML\n // parser. We don't need to track the tree structure of the HTML, only\n // whether a binding is inside a comment, and if not, if it appears to be\n // the first binding in an attribute.\n const commentOpen = s.lastIndexOf('<!--');\n // We're in comment position if we have a comment open with no following\n // comment close. Because <-- can appear in an attribute value there can\n // be false positives.\n isCommentBinding = (commentOpen > -1 || isCommentBinding) &&\n s.indexOf('-->', commentOpen + 1) === -1;\n // Check to see if we have an attribute-like sequence preceeding the\n // expression. This can match \"name=value\" like structures in text,\n // comments, and attribute values, so there can be false-positives.\n const attributeMatch = lastAttributeNameRegex.exec(s);\n if (attributeMatch === null) {\n // We're only in this branch if we don't have a attribute-like\n // preceeding sequence. For comments, this guards against unusual\n // attribute values like <div foo=\"<!--${'bar'}\">. Cases like\n // <!-- foo=${'bar'}--> are handled correctly in the attribute branch\n // below.\n html += s + (isCommentBinding ? commentMarker : nodeMarker);\n } else {\n // For attributes we use just a marker sentinel, and also append a\n // $lit$ suffix to the name to opt-out of attribute-specific parsing\n // that IE and Edge do for style and certain SVG attributes.\n html += s.substr(0, attributeMatch.index) + attributeMatch[1] +\n attributeMatch[2] + boundAttributeSuffix + attributeMatch[3] +\n marker;\n }\n }\n html += this.strings[l];\n return html;\n }\n\n getTemplateElement(): HTMLTemplateElement {\n const template = document.createElement('template');\n template.innerHTML = this.getHTML();\n return template;\n }\n}\n\n/**\n * A TemplateResult for SVG fragments.\n *\n * This class wraps HTML in an `<svg>` tag in order to parse its contents in the\n * SVG namespace, then modifies the template to remove the `<svg>` tag so that\n * clones only container the original fragment.\n */\nexport class SVGTemplateResult extends TemplateResult {\n getHTML(): string {\n return `<svg>${super.getHTML()}</svg>`;\n }\n\n getTemplateElement(): HTMLTemplateElement {\n const template = super.getTemplateElement();\n const content = template.content;\n const svgElement = content.firstChild!;\n content.removeChild(svgElement);\n reparentNodes(content, svgElement.firstChild);\n return template;\n }\n}\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module lit-html\n */\n\nimport {isDirective} from './directive.js';\nimport {removeNodes} from './dom.js';\nimport {noChange, nothing, Part} from './part.js';\nimport {RenderOptions} from './render-options.js';\nimport {TemplateInstance} from './template-instance.js';\nimport {TemplateResult} from './template-result.js';\nimport {createMarker} from './template.js';\n\n// https://tc39.github.io/ecma262/#sec-typeof-operator\nexport type Primitive = null|undefined|boolean|number|string|Symbol|bigint;\nexport const isPrimitive = (value: unknown): value is Primitive => {\n return (\n value === null ||\n !(typeof value === 'object' || typeof value === 'function'));\n};\nexport const isIterable = (value: unknown): value is Iterable<unknown> => {\n return Array.isArray(value) ||\n // tslint:disable-next-line:no-any\n !!(value && (value as any)[Symbol.iterator]);\n};\n\n/**\n * Writes attribute values to the DOM for a group of AttributeParts bound to a\n * single attibute. The value is only set once even if there are multiple parts\n * for an attribute.\n */\nexport class AttributeCommitter {\n readonly element: Element;\n readonly name: string;\n readonly strings: ReadonlyArray<string>;\n readonly parts: ReadonlyArray<AttributePart>;\n dirty = true;\n\n constructor(element: Element, name: string, strings: ReadonlyArray<string>) {\n this.element = element;\n this.name = name;\n this.strings = strings;\n this.parts = [];\n for (let i = 0; i < strings.length - 1; i++) {\n (this.parts as AttributePart[])[i] = this._createPart();\n }\n }\n\n /**\n * Creates a single part. Override this to create a differnt type of part.\n */\n protected _createPart(): AttributePart {\n return new AttributePart(this);\n }\n\n protected _getValue(): unknown {\n const strings = this.strings;\n const l = strings.length - 1;\n let text = '';\n\n for (let i = 0; i < l; i++) {\n text += strings[i];\n const part = this.parts[i];\n if (part !== undefined) {\n const v = part.value;\n if (isPrimitive(v) || !isIterable(v)) {\n text += typeof v === 'string' ? v : String(v);\n } else {\n for (const t of v) {\n text += typeof t === 'string' ? t : String(t);\n }\n }\n }\n }\n\n text += strings[l];\n return text;\n }\n\n commit(): void {\n if (this.dirty) {\n this.dirty = false;\n this.element.setAttribute(this.name, this._getValue() as string);\n }\n }\n}\n\n/**\n * A Part that controls all or part of an attribute value.\n */\nexport class AttributePart implements Part {\n readonly committer: AttributeCommitter;\n value: unknown = undefined;\n\n constructor(committer: AttributeCommitter) {\n this.committer = committer;\n }\n\n setValue(value: unknown): void {\n if (value !== noChange && (!isPrimitive(value) || value !== this.value)) {\n this.value = value;\n // If the value is a not a directive, dirty the committer so that it'll\n // call setAttribute. If the value is a directive, it'll dirty the\n // committer if it calls setValue().\n if (!isDirective(value)) {\n this.committer.dirty = true;\n }\n }\n }\n\n commit() {\n while (isDirective(this.value)) {\n const directive = this.value;\n this.value = noChange;\n directive(this);\n }\n if (this.value === noChange) {\n return;\n }\n this.committer.commit();\n }\n}\n\n/**\n * A Part that controls a location within a Node tree. Like a Range, NodePart\n * has start and end locations and can set and update the Nodes between those\n * locations.\n *\n * NodeParts support several value types: primitives, Nodes, TemplateResults,\n * as well as arrays and iterables of those types.\n */\nexport class NodePart implements Part {\n readonly options: RenderOptions;\n startNode!: Node;\n endNode!: Node;\n value: unknown = undefined;\n private __pendingValue: unknown = undefined;\n\n constructor(options: RenderOptions) {\n this.options = options;\n }\n\n /**\n * Appends this part into a container.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n appendInto(container: Node) {\n this.startNode = container.appendChild(createMarker());\n this.endNode = container.appendChild(createMarker());\n }\n\n /**\n * Inserts this part after the `ref` node (between `ref` and `ref`'s next\n * sibling). Both `ref` and its next sibling must be static, unchanging nodes\n * such as those that appear in a literal section of a template.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n insertAfterNode(ref: Node) {\n this.startNode = ref;\n this.endNode = ref.nextSibling!;\n }\n\n /**\n * Appends this part into a parent part.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n appendIntoPart(part: NodePart) {\n part.__insert(this.startNode = createMarker());\n part.__insert(this.endNode = createMarker());\n }\n\n /**\n * Inserts this part after the `ref` part.\n *\n * This part must be empty, as its contents are not automatically moved.\n */\n insertAfterPart(ref: NodePart) {\n ref.__insert(this.startNode = createMarker());\n this.endNode = ref.endNode;\n ref.endNode = this.startNode;\n }\n\n setValue(value: unknown): void {\n this.__pendingValue = value;\n }\n\n commit() {\n while (isDirective(this.__pendingValue)) {\n const directive = this.__pendingValue;\n this.__pendingValue = noChange;\n directive(this);\n }\n const value = this.__pendingValue;\n if (value === noChange) {\n return;\n }\n if (isPrimitive(value)) {\n if (value !== this.value) {\n this.__commitText(value);\n }\n } else if (value instanceof TemplateResult) {\n this.__commitTemplateResult(value);\n } else if (value instanceof Node) {\n this.__commitNode(value);\n } else if (isIterable(value)) {\n this.__commitIterable(value);\n } else if (value === nothing) {\n this.value = nothing;\n this.clear();\n } else {\n // Fallback, will render the string representation\n this.__commitText(value);\n }\n }\n\n private __insert(node: Node) {\n this.endNode.parentNode!.insertBefore(node, this.endNode);\n }\n\n private __commitNode(value: Node): void {\n if (this.value === value) {\n return;\n }\n this.clear();\n this.__insert(value);\n this.value = value;\n }\n\n private __commitText(value: unknown): void {\n const node = this.startNode.nextSibling!;\n value = value == null ? '' : value;\n // If `value` isn't already a string, we explicitly convert it here in case\n // it can't be implicitly converted - i.e. it's a symbol.\n const valueAsString: string =\n typeof value === 'string' ? value : String(value);\n if (node === this.endNode.previousSibling &&\n node.nodeType === 3 /* Node.TEXT_NODE */) {\n // If we only have a single text node between the markers, we can just\n // set its value, rather than replacing it.\n // TODO(justinfagnani): Can we just check if this.value is primitive?\n (node as Text).data = valueAsString;\n } else {\n this.__commitNode(document.createTextNode(valueAsString));\n }\n this.value = value;\n }\n\n private __commitTemplateResult(value: TemplateResult): void {\n const template = this.options.templateFactory(value);\n if (this.value instanceof TemplateInstance &&\n this.value.template === template) {\n this.value.update(value.values);\n } else {\n // Make sure we propagate the template processor from the TemplateResult\n // so that we use its syntax extension, etc. The template factory comes\n // from the render function options so that it can control template\n // caching and preprocessing.\n const instance =\n new TemplateInstance(template, value.processor, this.options);\n const fragment = instance._clone();\n instance.update(value.values);\n this.__commitNode(fragment);\n this.value = instance;\n }\n }\n\n private __commitIterable(value: Iterable<unknown>): void {\n // For an Iterable, we create a new InstancePart per item, then set its\n // value to the item. This is a little bit of overhead for every item in\n // an Iterable, but it lets us recurse easily and efficiently update Arrays\n // of TemplateResults that will be commonly returned from expressions like:\n // array.map((i) => html`${i}`), by reusing existing TemplateInstances.\n\n // If _value is an array, then the previous render was of an\n // iterable and _value will contain the NodeParts from the previous\n // render. If _value is not an array, clear this part and make a new\n // array for NodeParts.\n if (!Array.isArray(this.value)) {\n this.value = [];\n this.clear();\n }\n\n // Lets us keep track of how many items we stamped so we can clear leftover\n // items from a previous render\n const itemParts = this.value as NodePart[];\n let partIndex = 0;\n let itemPart: NodePart|undefined;\n\n for (const item of value) {\n // Try to reuse an existing part\n itemPart = itemParts[partIndex];\n\n // If no existing part, create a new one\n if (itemPart === undefined) {\n itemPart = new NodePart(this.options);\n itemParts.push(itemPart);\n if (partIndex === 0) {\n itemPart.appendIntoPart(this);\n } else {\n itemPart.insertAfterPart(itemParts[partIndex - 1]);\n }\n }\n itemPart.setValue(item);\n itemPart.commit();\n partIndex++;\n }\n\n if (partIndex < itemParts.length) {\n // Truncate the parts array so _value reflects the current state\n itemParts.length = partIndex;\n this.clear(itemPart && itemPart.endNode);\n }\n }\n\n clear(startNode: Node = this.startNode) {\n removeNodes(\n this.startNode.parentNode!, startNode.nextSibling!, this.endNode);\n }\n}\n\n/**\n * Implements a boolean attribute, roughly as defined in the HTML\n * specification.\n *\n * If the value is truthy, then the attribute is present with a value of\n * ''. If the value is falsey, the attribute is removed.\n */\nexport class BooleanAttributePart implements Part {\n readonly element: Element;\n readonly name: string;\n readonly strings: ReadonlyArray<string>;\n value: unknown = undefined;\n private __pendingValue: unknown = undefined;\n\n constructor(element: Element, name: string, strings: ReadonlyArray<string>) {\n if (strings.length !== 2 || strings[0] !== '' || strings[1] !== '') {\n throw new Error(\n 'Boolean attributes can only contain a single expression');\n }\n this.element = element;\n this.name = name;\n this.strings = strings;\n }\n\n setValue(value: unknown): void {\n this.__pendingValue = value;\n }\n\n commit() {\n while (isDirective(this.__pendingValue)) {\n const directive = this.__pendingValue;\n this.__pendingValue = noChange;\n directive(this);\n }\n if (this.__pendingValue === noChange) {\n return;\n }\n const value = !!this.__pendingValue;\n if (this.value !== value) {\n if (value) {\n this.element.setAttribute(this.name, '');\n } else {\n this.element.removeAttribute(this.name);\n }\n this.value = value;\n }\n this.__pendingValue = noChange;\n }\n}\n\n/**\n * Sets attribute values for PropertyParts, so that the value is only set once\n * even if there are multiple parts for a property.\n *\n * If an expression controls the whole property value, then the value is simply\n * assigned to the property under control. If there are string literals or\n * multiple expressions, then the strings are expressions are interpolated into\n * a string first.\n */\nexport class PropertyCommitter extends AttributeCommitter {\n readonly single: boolean;\n\n constructor(element: Element, name: string, strings: ReadonlyArray<string>) {\n super(element, name, strings);\n this.single =\n (strings.length === 2 && strings[0] === '' && strings[1] === '');\n }\n\n protected _createPart(): PropertyPart {\n return new PropertyPart(this);\n }\n\n protected _getValue() {\n if (this.single) {\n return this.parts[0].value;\n }\n return super._getValue();\n }\n\n commit(): void {\n if (this.dirty) {\n this.dirty = false;\n // tslint:disable-next-line:no-any\n (this.element as any)[this.name] = this._getValue();\n }\n }\n}\n\nexport class PropertyPart extends AttributePart {}\n\n// Detect event listener options support. If the `capture` property is read\n// from the options object, then options are supported. If not, then the thrid\n// argument to add/removeEventListener is interpreted as the boolean capture\n// value so we should only pass the `capture` property.\nlet eventOptionsSupported = false;\n\ntry {\n const options = {\n get capture() {\n eventOptionsSupported = true;\n return false;\n }\n };\n // tslint:disable-next-line:no-any\n window.addEventListener('test', options as any, options);\n // tslint:disable-next-line:no-any\n window.removeEventListener('test', options as any, options);\n} catch (_e) {\n}\n\n\ntype EventHandlerWithOptions =\n EventListenerOrEventListenerObject&Partial<AddEventListenerOptions>;\nexport class EventPart implements Part {\n readonly element: Element;\n readonly eventName: string;\n readonly eventContext?: EventTarget;\n value: undefined|EventHandlerWithOptions = undefined;\n private __options?: AddEventListenerOptions;\n private __pendingValue: undefined|EventHandlerWithOptions = undefined;\n private readonly __boundHandleEvent: (event: Event) => void;\n\n constructor(element: Element, eventName: string, eventContext?: EventTarget) {\n this.element = element;\n this.eventName = eventName;\n this.eventContext = eventContext;\n this.__boundHandleEvent = (e) => this.handleEvent(e);\n }\n\n setValue(value: undefined|EventHandlerWithOptions): void {\n this.__pendingValue = value;\n }\n\n commit() {\n while (isDirective(this.__pendingValue)) {\n const directive = this.__pendingValue;\n this.__pendingValue = noChange as EventHandlerWithOptions;\n directive(this);\n }\n if (this.__pendingValue === noChange) {\n return;\n }\n\n const newListener = this.__pendingValue;\n const oldListener = this.value;\n const shouldRemoveListener = newListener == null ||\n oldListener != null &&\n (newListener.capture !== oldListener.capture ||\n newListener.once !== oldListener.once ||\n newListener.passive !== oldListener.passive);\n const shouldAddListener =\n newListener != null && (oldListener == null || shouldRemoveListener);\n\n if (shouldRemoveListener) {\n this.element.removeEventListener(\n this.eventName, this.__boundHandleEvent, this.__options);\n }\n if (shouldAddListener) {\n this.__options = getOptions(newListener);\n this.element.addEventListener(\n this.eventName, this.__boundHandleEvent, this.__options);\n }\n this.value = newListener;\n this.__pendingValue = noChange as EventHandlerWithOptions;\n }\n\n handleEvent(event: Event) {\n if (typeof this.value === 'function') {\n this.value.call(this.eventContext || this.element, event);\n } else {\n (this.value as EventListenerObject).handleEvent(event);\n }\n }\n}\n\n// We copy options because of the inconsistent behavior of browsers when reading\n// the third argument of add/removeEventListener. IE11 doesn't support options\n// at all. Chrome 41 only reads `capture` if the argument is an object.\nconst getOptions = (o: AddEventListenerOptions|undefined) => o &&\n (eventOptionsSupported ?\n {capture: o.capture, passive: o.passive, once: o.once} :\n o.capture as AddEventListenerOptions);\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module lit-html\n */\n\nimport {Part} from './part.js';\nimport {AttributeCommitter, BooleanAttributePart, EventPart, NodePart, PropertyCommitter} from './parts.js';\nimport {RenderOptions} from './render-options.js';\nimport {TemplateProcessor} from './template-processor.js';\n\n/**\n * Creates Parts when a template is instantiated.\n */\nexport class DefaultTemplateProcessor implements TemplateProcessor {\n /**\n * Create parts for an attribute-position binding, given the event, attribute\n * name, and string literals.\n *\n * @param element The element containing the binding\n * @param name The attribute name\n * @param strings The string literals. There are always at least two strings,\n * event for fully-controlled bindings with a single expression.\n */\n handleAttributeExpressions(\n element: Element, name: string, strings: string[],\n options: RenderOptions): ReadonlyArray<Part> {\n const prefix = name[0];\n if (prefix === '.') {\n const committer = new PropertyCommitter(element, name.slice(1), strings);\n return committer.parts;\n }\n if (prefix === '@') {\n return [new EventPart(element, name.slice(1), options.eventContext)];\n }\n if (prefix === '?') {\n return [new BooleanAttributePart(element, name.slice(1), strings)];\n }\n const committer = new AttributeCommitter(element, name, strings);\n return committer.parts;\n }\n /**\n * Create parts for a text-position binding.\n * @param templateFactory\n */\n handleTextExpression(options: RenderOptions) {\n return new NodePart(options);\n }\n}\n\nexport const defaultTemplateProcessor = new DefaultTemplateProcessor();\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module lit-html\n */\n\nimport {TemplateResult} from './template-result.js';\nimport {marker, Template} from './template.js';\n\n/**\n * A function type that creates a Template from a TemplateResult.\n *\n * This is a hook into the template-creation process for rendering that\n * requires some modification of templates before they're used, like ShadyCSS,\n * which must add classes to elements and remove styles.\n *\n * Templates should be cached as aggressively as possible, so that many\n * TemplateResults produced from the same expression only do the work of\n * creating the Template the first time.\n *\n * Templates are usually cached by TemplateResult.strings and\n * TemplateResult.type, but may be cached by other keys if this function\n * modifies the template.\n *\n * Note that currently TemplateFactories must not add, remove, or reorder\n * expressions, because there is no way to describe such a modification\n * to render() so that values are interpolated to the correct place in the\n * template instances.\n */\nexport type TemplateFactory = (result: TemplateResult) => Template;\n\n/**\n * The default TemplateFactory which caches Templates keyed on\n * result.type and result.strings.\n */\nexport function templateFactory(result: TemplateResult) {\n let templateCache = templateCaches.get(result.type);\n if (templateCache === undefined) {\n templateCache = {\n stringsArray: new WeakMap<TemplateStringsArray, Template>(),\n keyString: new Map<string, Template>()\n };\n templateCaches.set(result.type, templateCache);\n }\n\n let template = templateCache.stringsArray.get(result.strings);\n if (template !== undefined) {\n return template;\n }\n\n // If the TemplateStringsArray is new, generate a key from the strings\n // This key is shared between all templates with identical content\n const key = result.strings.join(marker);\n\n // Check if we already have a Template for this key\n template = templateCache.keyString.get(key);\n if (template === undefined) {\n // If we have not seen this key before, create a new Template\n template = new Template(result, result.getTemplateElement());\n // Cache the Template for this key\n templateCache.keyString.set(key, template);\n }\n\n // Cache all future queries for this TemplateStringsArray\n templateCache.stringsArray.set(result.strings, template);\n return template;\n}\n\n/**\n * The first argument to JS template tags retain identity across multiple\n * calls to a tag for the same literal, so we can cache work done per literal\n * in a Map.\n *\n * Safari currently has a bug which occasionally breaks this behaviour, so we\n * need to cache the Template at two levels. We first cache the\n * TemplateStringsArray, and if that fails, we cache a key constructed by\n * joining the strings array.\n */\nexport type templateCache = {\n readonly stringsArray: WeakMap<TemplateStringsArray, Template>; //\n readonly keyString: Map<string, Template>;\n};\n\nexport const templateCaches = new Map<string, templateCache>();\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * @module lit-html\n */\n\nimport {removeNodes} from './dom.js';\nimport {NodePart} from './parts.js';\nimport {RenderOptions} from './render-options.js';\nimport {templateFactory} from './template-factory.js';\n\nexport const parts = new WeakMap<Node, NodePart>();\n\n/**\n * Renders a template result or other value to a container.\n *\n * To update a container with new values, reevaluate the template literal and\n * call `render` with the new result.\n *\n * @param result Any value renderable by NodePart - typically a TemplateResult\n * created by evaluating a template tag like `html` or `svg`.\n * @param container A DOM parent to render to. The entire contents are either\n * replaced, or efficiently updated if the same result type was previous\n * rendered there.\n * @param options RenderOptions for the entire render tree rendered to this\n * container. Render options must *not* change between renders to the same\n * container, as those changes will not effect previously rendered DOM.\n */\nexport const render =\n (result: unknown,\n container: Element|DocumentFragment,\n options?: Partial<RenderOptions>) => {\n let part = parts.get(container);\n if (part === undefined) {\n removeNodes(container, container.firstChild);\n parts.set(container, part = new NodePart({\n templateFactory,\n ...options,\n }));\n part.appendInto(container);\n }\n part.setValue(result);\n part.commit();\n };\n","/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n/**\n *\n * Main lit-html module.\n *\n * Main exports:\n *\n * - [[html]]\n * - [[svg]]\n * - [[render]]\n *\n * @module lit-html\n * @preferred\n */\n\n/**\n * Do not remove this comment; it keeps typedoc from misplacing the module\n * docs.\n */\nimport {defaultTemplateProcessor} from './lib/default-template-processor.js';\nimport {SVGTemplateResult, TemplateResult} from './lib/template-result.js';\n\nexport {DefaultTemplateProcessor, defaultTemplateProcessor} from './lib/default-template-processor.js';\nexport {directive, DirectiveFn, isDirective} from './lib/directive.js';\n// TODO(justinfagnani): remove line when we get NodePart moving methods\nexport {removeNodes, reparentNodes} from './lib/dom.js';\nexport {noChange, nothing, Part} from './lib/part.js';\nexport {AttributeCommitter, AttributePart, BooleanAttributePart, EventPart, isIterable, isPrimitive, NodePart, PropertyCommitter, PropertyPart} from './lib/parts.js';\nexport {RenderOptions} from './lib/render-options.js';\nexport {parts, render} from './lib/render.js';\nexport {templateCaches, templateFactory} from './lib/template-factory.js';\nexport {TemplateInstance} from './lib/template-instance.js';\nexport {TemplateProcessor} from './lib/template-processor.js';\nexport {SVGTemplateResult, TemplateResult} from './lib/template-result.js';\nexport {createMarker, isTemplatePartActive, Template} from './lib/template.js';\n\ndeclare global {\n interface Window {\n litHtmlVersions: string[];\n }\n}\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for lit-html usage.\n// TODO(justinfagnani): inject version number at build time\n(window['litHtmlVersions'] || (window['litHtmlVersions'] = [])).push('1.1.2');\n\n/**\n * Interprets a template literal as an HTML template that can efficiently\n * render to and update a container.\n */\nexport const html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n new TemplateResult(strings, values, 'html', defaultTemplateProcessor);\n\n/**\n * Interprets a template literal as an SVG template that can efficiently\n * render to and update a container.\n */\nexport const svg = (strings: TemplateStringsArray, ...values: unknown[]) =>\n new SVGTemplateResult(strings, values, 'svg', defaultTemplateProcessor);\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nexport const CONFIG_ALIASES = {\n row_pivot: \"row_pivots\",\n \"row-pivot\": \"row_pivots\",\n \"row-pivots\": \"row_pivots\",\n col_pivot: \"column_pivots\",\n col_pivots: \"column_pivots\",\n column_pivot: \"column_pivots\",\n \"column-pivot\": \"column_pivots\",\n \"column-pivots\": \"column_pivots\",\n filters: \"filter\",\n sorts: \"sort\"\n};\n\nexport const CONFIG_VALID_KEYS = [\"viewport\", \"row_pivots\", \"column_pivots\", \"aggregates\", \"columns\", \"filter\", \"sort\", \"row_pivot_depth\", \"filter_op\"];\n\nconst NUMBER_AGGREGATES = [\n \"any\",\n \"avg\",\n \"count\",\n \"distinct count\",\n \"dominant\",\n \"first by index\",\n \"last by index\",\n \"last\",\n \"high\",\n \"low\",\n \"mean\",\n \"median\",\n \"pct sum parent\",\n \"pct sum grand total\",\n \"sum\",\n \"sum abs\",\n \"sum not null\",\n \"unique\"\n];\n\nconst STRING_AGGREGATES = [\"any\", \"count\", \"distinct count\", \"distinct leaf\", \"dominant\", \"first by index\", \"last by index\", \"last\", \"unique\"];\n\nconst BOOLEAN_AGGREGATES = [\"any\", \"count\", \"distinct count\", \"distinct leaf\", \"dominant\", \"first by index\", \"last by index\", \"last\", \"unique\", \"and\", \"or\"];\n\nexport const SORT_ORDERS = [\"none\", \"asc\", \"desc\", \"col asc\", \"col desc\", \"asc abs\", \"desc abs\", \"col asc abs\", \"col desc abs\"];\n\nexport const SORT_ORDER_IDS = [2, 0, 1, 0, 1, 3, 4, 3, 4];\n\nexport const TYPE_AGGREGATES = {\n string: STRING_AGGREGATES,\n float: NUMBER_AGGREGATES,\n integer: NUMBER_AGGREGATES,\n boolean: BOOLEAN_AGGREGATES,\n datetime: STRING_AGGREGATES,\n date: STRING_AGGREGATES\n};\n\nexport const FILTER_OPERATORS = {\n lessThan: \"<\",\n greaterThan: \">\",\n equals: \"==\",\n lessThanOrEquals: \"<=\",\n greaterThanOrEquals: \">=\",\n doesNotEqual: \"!=\",\n isNull: \"is null\",\n isNotNull: \"is not null\",\n isIn: \"in\",\n isNotIn: \"not in\",\n contains: \"contains\",\n bitwiseAnd: \"&\",\n bitwiseOr: \"|\",\n and: \"and\",\n or: \"or\",\n beginsWith: \"begins with\",\n endsWith: \"ends with\"\n};\n\nconst BOOLEAN_FILTERS = [\n FILTER_OPERATORS.bitwiseAnd,\n FILTER_OPERATORS.bitwiseOr,\n FILTER_OPERATORS.equals,\n FILTER_OPERATORS.doesNotEqual,\n FILTER_OPERATORS.or,\n FILTER_OPERATORS.and,\n FILTER_OPERATORS.isNull,\n FILTER_OPERATORS.isNotNull\n];\n\nconst NUMBER_FILTERS = [\n FILTER_OPERATORS.lessThan,\n FILTER_OPERATORS.greaterThan,\n FILTER_OPERATORS.equals,\n FILTER_OPERATORS.lessThanOrEquals,\n FILTER_OPERATORS.greaterThanOrEquals,\n FILTER_OPERATORS.doesNotEqual,\n FILTER_OPERATORS.isNull,\n FILTER_OPERATORS.isNotNull\n];\n\nconst STRING_FILTERS = [\n FILTER_OPERATORS.equals,\n FILTER_OPERATORS.contains,\n FILTER_OPERATORS.doesNotEqual,\n FILTER_OPERATORS.isIn,\n FILTER_OPERATORS.isNotIn,\n FILTER_OPERATORS.beginsWith,\n FILTER_OPERATORS.endsWith,\n FILTER_OPERATORS.isNull,\n FILTER_OPERATORS.isNotNull\n];\n\nconst DATETIME_FILTERS = [\n FILTER_OPERATORS.lessThan,\n FILTER_OPERATORS.greaterThan,\n FILTER_OPERATORS.equals,\n FILTER_OPERATORS.lessThanOrEquals,\n FILTER_OPERATORS.greaterThanOrEquals,\n FILTER_OPERATORS.doesNotEqual,\n FILTER_OPERATORS.isNull,\n FILTER_OPERATORS.isNotNull\n];\n\nexport const COLUMN_SEPARATOR_STRING = \"|\";\n\nexport const TYPE_FILTERS = {\n string: STRING_FILTERS,\n float: NUMBER_FILTERS,\n integer: NUMBER_FILTERS,\n boolean: BOOLEAN_FILTERS,\n datetime: DATETIME_FILTERS,\n date: DATETIME_FILTERS\n};\n","/******************************************************************************\n *\n * Copyright (c) 2019, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nconst __CALLBACK_CACHE__ = new WeakMap();\nlet __CALLBACK_INDEX__ = 0;\n\n/**\n * Unbind a listener to an event.\n *\n * @param {*} method\n * @param {*} cmd\n */\nexport function unsubscribe(method, cmd) {\n return function() {\n let resolve;\n let reject = () => {};\n let args = Array.prototype.slice.call(arguments, 0, arguments.length);\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === \"function\") {\n resolve = args.splice(i, 1)[0];\n }\n }\n const callback_id = __CALLBACK_CACHE__.get(resolve);\n __CALLBACK_CACHE__.delete(resolve);\n let msg = {\n cmd: cmd || \"view_method\",\n name: this._name,\n method: method,\n args: args,\n subscribe: true,\n callback_id\n };\n this._worker.post(msg, resolve, reject);\n this._worker.unsubscribe(cmd, resolve);\n };\n}\n\n/**\n * Bind a listener to an event.\n *\n * @param {*} method\n * @param {*} cmd\n */\nexport function subscribe(method, cmd) {\n return function() {\n let resolve;\n let reject = () => {};\n let args = Array.prototype.slice.call(arguments, 0, arguments.length);\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === \"function\") {\n resolve = args.splice(i, 1)[0];\n }\n }\n __CALLBACK_INDEX__++;\n __CALLBACK_CACHE__.set(resolve, __CALLBACK_INDEX__);\n let msg = {\n cmd: cmd || \"view_method\",\n name: this._name,\n method: method,\n args: args,\n subscribe: true,\n callback_id: __CALLBACK_INDEX__\n };\n this._worker.post(msg, resolve, reject, true);\n };\n}\n\n/**\n * Add a method call to the queue, preparing it for execution.\n *\n * Returns a bound function that calls the desired method on the server.\n *\n * @param {*} method\n * @param {*} cmd\n */\nexport function async_queue(method, cmd) {\n return function() {\n var args = Array.prototype.slice.call(arguments, 0, arguments.length);\n return new Promise(\n function(resolve, reject) {\n var msg = {\n cmd: cmd || \"view_method\",\n name: this._name,\n method: method,\n args: args,\n subscribe: false\n };\n this._worker.post(msg, resolve, reject);\n }.bind(this)\n );\n };\n}\n","/******************************************************************************\n *\n * Copyright (c) 2017, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\n/**\n * Gets human-readable types for a column\n * @private\n * @returns {string}\n */\nexport function get_column_type(val) {\n if (val >= 1 && val <= 8) {\n return \"integer\";\n } else if (val === 19) {\n return \"string\";\n } else if (val === 10 || val === 9) {\n return \"float\";\n } else if (val === 11) {\n return \"boolean\";\n } else if (val === 12) {\n return \"datetime\";\n } else if (val === 13) {\n return \"date\";\n } else {\n console.warn(`Unknown type for value ${val} with JS type ${typeof val}`);\n }\n}\n\n/**\n * Bind all methods in a class to the class instance. It is sad that this is\n * necessary.\n *\n * @export\n * @param {*} self\n */\nexport function bindall(self) {\n let obj = self;\n do {\n for (const key of Object.getOwnPropertyNames(obj)) {\n const value = self[key];\n if (key !== \"constructor\" && typeof value === \"function\") {\n self[key] = value.bind(self);\n }\n }\n } while ((obj = obj !== Object && Object.getPrototypeOf(obj)));\n}\n\n/**\n * Detect Node.js.\n *\n * Returns\n * -------\n * True if the current script is running in Node.js.\n */\nexport function detectNode() {\n return typeof window === \"undefined\";\n}\n\n/**\n * Detect Internet Explorer.\n *\n * Returns\n * -------\n * True if the current script is running in Internet Explorer.\n */\nexport const detectIE = require(\"detectie\");\n\n/**\n * Detect Chrome.\n *\n * Returns\n * -------\n * Detect if the current script is running in Chrome.\n */\nexport function detectChrome() {\n var isChromium = window.chrome,\n winNav = window.navigator,\n vendorName = winNav.vendor,\n isOpera = winNav.userAgent.indexOf(\"OPR\") > -1,\n isIEedge = winNav.userAgent.indexOf(\"Edge\") > -1,\n isIOSChrome = winNav.userAgent.match(\"CriOS\");\n\n if (isIOSChrome) {\n return true;\n } else if (isChromium !== null && typeof isChromium !== \"undefined\" && vendorName === \"Google Inc.\" && isOpera === false && isIEedge === false) {\n return true;\n } else {\n return false;\n }\n}\n\n// https://github.com/kripken/emscripten/issues/6042\nexport function detect_iphone() {\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n}\n\n/**\n * String.includes() polyfill\n */\nif (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n\n if (start + search.length > this.length) {\n return false;\n } else {\n return this.indexOf(search, start) !== -1;\n }\n };\n}\n\n/* eslint-disable-next-line max-len */\n// from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes\nif (!Array.prototype.includes) {\n Object.defineProperty(Array.prototype, \"includes\", {\n value: function(searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n // 1. Let O be ? ToObject(this value).\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. If len is 0, return false.\n if (len === 0) {\n return false;\n }\n\n // 4. Let n be ? ToInteger(fromIndex). (If fromIndex is undefined,\n // this step produces the value 0.)\n var n = fromIndex | 0;\n\n // 5. If n ≥ 0, then a. Let k be n.\n // 6. Else n < 0, a. Let k be len + n. b. If k < 0, let k be 0.\n var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n function sameValueZero(x, y) {\n return x === y || (typeof x === \"number\" && typeof y === \"number\" && isNaN(x) && isNaN(y));\n }\n\n // 7. Repeat, while k < len\n while (k < len) {\n // a. Let elementK be the result of ? Get(O, ! ToString(k)). b.\n // If SameValueZero(searchElement, elementK) is true, return\n // true.\n if (sameValueZero(o[k], searchElement)) {\n return true;\n }\n // c. Increase k by 1.\n k++;\n }\n\n // 8. Return false\n return false;\n }\n });\n}\n","/******************************************************************************\n *\n * Copyright (c) 2019, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {subscribe, unsubscribe, async_queue} from \"./dispatch.js\";\nimport {bindall} from \"../utils.js\";\n\n/**\n * Construct a proxy for the view object by creating a \"view\" message and\n * sending it through the worker.\n *\n * @param {*} worker\n * @param {*} table_name\n * @param {*} config\n */\nexport function view(worker, table_name, config) {\n this._worker = worker;\n //this._config = config;\n this._name = Math.random() + \"\";\n var msg = {\n cmd: \"view\",\n view_name: this._name,\n table_name: table_name,\n config: config\n };\n this._worker.post(msg);\n bindall(this);\n}\n\n/**\n * Create a reference to a view located on `worker` for use by remote clients.\n *\n * @param {worker} worker the Web Worker at which the view is located.\n * @param {String} name a unique name for the view.\n */\nexport function proxy_view(worker, name) {\n this._worker = worker;\n this._name = name;\n}\n\nproxy_view.prototype = view.prototype;\n\n// Send view methods that do not create new objects (getters, setters etc.) to\n// the queue for processing.\n\nview.prototype.get_config = async_queue(\"get_config\");\n\nview.prototype.to_json = async_queue(\"to_json\");\n\nview.prototype.to_arrow = async_queue(\"to_arrow\");\n\nview.prototype.to_columns = async_queue(\"to_columns\");\n\nview.prototype.to_csv = async_queue(\"to_csv\");\n\nview.prototype.schema = async_queue(\"schema\");\n\nview.prototype.column_paths = async_queue(\"column_paths\");\n\nview.prototype.num_columns = async_queue(\"num_columns\");\n\nview.prototype.num_rows = async_queue(\"num_rows\");\n\nview.prototype.set_depth = async_queue(\"set_depth\");\n\nview.prototype.get_row_expanded = async_queue(\"get_row_expanded\");\n\nview.prototype.expand = async_queue(\"expand\");\n\nview.prototype.collapse = async_queue(\"collapse\");\n\nview.prototype.delete = async_queue(\"delete\");\n\nview.prototype.col_to_js_typed_array = async_queue(\"col_to_js_typed_array\");\n\nview.prototype.on_update = subscribe(\"on_update\", \"view_method\", true);\n\nview.prototype.remove_update = unsubscribe(\"remove_update\", \"view_method\", true);\n\nview.prototype.on_delete = subscribe(\"on_delete\", \"view_method\", true);\n\nview.prototype.remove_delete = unsubscribe(\"remove_delete\", \"view_method\", true);\n","/******************************************************************************\n *\n * Copyright (c) 2019, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {unsubscribe, subscribe, async_queue} from \"./dispatch.js\";\nimport {view} from \"./view_api.js\";\nimport {bindall} from \"../utils.js\";\n\n/**\n * Construct a proxy for the table object by creating a \"table\" message and\n * sending it through the worker.\n *\n * @param {*} worker\n * @param {*} data\n * @param {*} options\n */\nexport function table(worker, data, options) {\n this._worker = worker;\n let name = options.name || Math.random() + \"\";\n this._name = name;\n bindall(this);\n if (data.to_arrow) {\n var msg = {\n cmd: \"table\",\n name: name,\n args: [],\n options: options || {}\n };\n this._worker.post(msg);\n data.to_arrow().then(arrow => {\n var msg = {\n cmd: \"table\",\n name: name,\n args: [arrow],\n options: options || {}\n };\n this._worker.post(msg);\n data.on_update(this.update, {mode: \"row\"});\n });\n } else {\n var msg = {\n cmd: \"table\",\n name: name,\n args: [data],\n options: options || {}\n };\n this._worker.post(msg);\n }\n}\n\ntable.prototype.type = \"table\";\n\n/**\n * Create a new computed table, serializing each computation to a string for\n * processing by the engine.\n *\n * @param {*} worker\n * @param {*} computed\n * @param {*} name\n */\nfunction computed_table(worker, computed, name) {\n this._worker = worker;\n this._name = Math.random() + \"\";\n let original = name;\n // serialize functions\n for (let i = 0; i < computed.length; ++i) {\n let column = computed[i];\n let func = column[\"func\"];\n if (typeof func == \"function\") {\n column[\"func\"] = func.toString();\n }\n }\n var msg = {\n cmd: \"add_computed\",\n original: original,\n name: this._name,\n computed: computed\n };\n this._worker.post(msg);\n}\n\n/**\n * Create a reference to a Perspective table at `worker` for use by remote\n * clients.\n *\n * @param {worker} worker the Web Worker at which the table is located.\n * @param {String} name a unique name for the table.\n */\nexport function proxy_table(worker, name) {\n this._worker = worker;\n this._name = name;\n}\n\ncomputed_table.prototype = table.prototype;\nproxy_table.prototype = table.prototype;\n\n// Dispatch table methods that create new objects to the worker\ntable.prototype.add_computed = function(computed) {\n return new computed_table(this._worker, computed, this._name);\n};\n\ntable.prototype.view = function(config) {\n return new view(this._worker, this._name, config);\n};\n\n// Dispatch table methods that do not create new objects (getters, setters etc.)\n// to the queue for processing.\n\ntable.prototype.compute = async_queue(\"compute\", \"table_method\");\n\ntable.prototype.schema = async_queue(\"schema\", \"table_method\");\n\ntable.prototype.computed_schema = async_queue(\"computed_schema\", \"table_method\");\n\ntable.prototype.is_valid_filter = async_queue(\"is_valid_filter\", \"table_method\");\n\ntable.prototype.size = async_queue(\"size\", \"table_method\");\n\ntable.prototype.columns = async_queue(\"columns\", \"table_method\");\n\ntable.prototype.clear = async_queue(\"clear\", \"table_method\");\n\ntable.prototype.replace = async_queue(\"replace\", \"table_method\");\n\ntable.prototype.delete = async_queue(\"delete\", \"table_method\");\n\ntable.prototype.on_delete = subscribe(\"on_delete\", \"table_method\", true);\n\ntable.prototype.remove = async_queue(\"remove\", \"table_method\");\n\ntable.prototype.remove_delete = unsubscribe(\"remove_delete\", \"table_method\", true);\n\ntable.prototype.update = function(data) {\n return new Promise((resolve, reject) => {\n var msg = {\n name: this._name,\n cmd: \"table_method\",\n method: \"update\",\n args: [data]\n };\n this._worker.post(msg, resolve, reject, false);\n });\n};\n\ntable.prototype.execute = function(f) {\n var msg = {\n cmd: \"table_execute\",\n name: this._name,\n f: f.toString()\n };\n this._worker.post(msg);\n};\n","/******************************************************************************\n *\n * Copyright (c) 2019, the Perspective Authors.\n *\n * This file is part of the Perspective library, distributed under the terms of\n * the Apache License 2.0. The full license can be found in the LICENSE file.\n *\n */\n\nimport {table, proxy_table} from \"./table_api.js\";\nimport {proxy_view} from \"./view_api.js\";\nimport {bindall} from \"../utils.js\";\n\n/**\n * Perspective's worker API handles and processes asynchronous messages,\n * interfacing with the Perspective host class. Child classes must implement\n * the `send()` interface, which defines how messages are dispatched in\n * different contexts. `handlers` is a dictionary of resolve/reject callbacks\n * for each method the worker receives.\n *\n * @export\n */\nexport class Client {\n constructor() {\n this._initialized = false;\n this._worker = {\n initialized: {value: false},\n transferable: false,\n msg_id: 0,\n handlers: {},\n messages: []\n };\n bindall(this);\n }\n\n /**\n * Remove a listener for a Perspective-generated event.\n */\n unsubscribe(cmd, handler) {\n for (let key of Object.keys(this._worker.handlers)) {\n if (this._worker.handlers[key].resolve === handler) {\n delete this._worker.handlers[key];\n }\n }\n }\n\n /**\n * Process an asynchronous message.\n */\n post(msg, resolve, reject, keep_alive = false) {\n if (resolve || reject) {\n this._worker.handlers[++this._worker.msg_id] = {resolve, reject, keep_alive};\n }\n msg.id = this._worker.msg_id;\n if (this._worker.initialized.value) {\n this.send(msg);\n } else {\n this._worker.messages.push(() => this.send(msg));\n }\n }\n\n initialize_profile_thread() {\n if (this._worker.initialized.value) {\n this.send({id: -1, cmd: \"init_profile_thread\"});\n } else {\n this._worker.messages.push(() => this.send({id: -1, cmd: \"init_profile_thread\"}));\n }\n }\n\n /**\n * Must be implemented in order to transport commands to the server.\n */\n send() {\n throw new Error(\"send() not implemented\");\n }\n\n /**\n * Given the name of a table that is hosted on the server (e.g. using\n * `perspective-python` or `perspective` in NodeJS), return a `table`\n * instance that sends all operations and instructions to the `table` on the\n * server.\n *\n * @param {string} name\n */\n open_table(name) {\n return new proxy_table(this, name);\n }\n\n open_view(name) {\n return new proxy_view(this, name);\n }\n\n /**\n * Handle a command from Perspective. If the Client is not initialized,\n * initialize it and dispatch the `perspective-ready` event.\n *\n * Otherwise, reject or resolve the incoming command.\n */\n _handle(e) {\n if (!this._worker.initialized.value) {\n if (!this._initialized && typeof document !== \"undefined\" && document && typeof window !== undefined && window) {\n try {\n const event = document.createEvent(\"Event\");\n event.initEvent(\"perspective-ready\", false, true);\n window.dispatchEvent(event);\n } catch (e) {}\n this._initialized = true;\n }\n\n const msgs = this._worker.messages;\n this._worker.initialized.value = true;\n this._worker.messages = [];\n\n if (msgs) {\n for (const m in msgs) {\n if (msgs.hasOwnProperty(m)) {\n msgs[m]();\n }\n }\n }\n }\n if (e.data.id) {\n var handler = this._worker.handlers[e.data.id];\n if (handler) {\n if (e.data.error) {\n handler.reject(e.data.error);\n } else {\n handler.resolve(e.data.data);\n }\n if (!handler.keep_alive) {\n delete this._worker.handlers[e.data.id];\n }\n }\n }\n }\n\n table(data, options) {\n return new table(this, data, options || {});\n }\n\n terminate() {\n this._worker.terminate();\n this._worker = undefined;\n }\n}\n","/******************************************************************************\r\n *\r\n * Copyright (c) 2017, the Perspective Authors.\r\n *\r\n * This file is part of the Perspective library, distributed under the terms of\r\n * the Apache License 2.0. The full license can be found in the LICENSE file.\r\n *\r\n */\r\n\r\nimport * as defaults from \"./config/constants.js\";\r\nimport {get_config} from \"./config\";\r\nimport {Client} from \"./api/client.js\";\r\n\r\nimport wasm_worker from \"./perspective.wasm.js\";\r\nimport wasm from \"./psp.async.wasm.js\";\r\nimport {override_config} from \"../../dist/esm/config/index.js\";\r\n\r\nconst HEARTBEAT_TIMEOUT = 15000;\r\n\r\n// eslint-disable-next-line max-len\r\nconst INLINE_WARNING = `Perspective has been compiled in INLINE mode. While Perspective's runtime performance is not affected, you may see smaller assets size and faster engine initial load time using \"@finos/perspective-webpack-plugin\" to build your application.\r\n\r\nhttps://perspective.finos.org/docs/md/installation.html#-an-important-note-about-hosting`;\r\n\r\n/**\r\n * Singleton WASM file download cache.\r\n */\r\nconst override = new (class {\r\n _fetch(url) {\r\n return new Promise(resolve => {\r\n let wasmXHR = new XMLHttpRequest();\r\n wasmXHR.open(\"GET\", url, true);\r\n wasmXHR.responseType = \"arraybuffer\";\r\n wasmXHR.onload = () => {\r\n resolve(wasmXHR.response);\r\n };\r\n wasmXHR.send(null);\r\n });\r\n }\r\n\r\n worker() {\r\n return wasm_worker();\r\n }\r\n\r\n async wasm() {\r\n if (wasm instanceof ArrayBuffer) {\r\n console.warn(INLINE_WARNING);\r\n this._wasm = wasm;\r\n } else {\r\n this._wasm = await this._fetch(wasm);\r\n }\r\n return this._wasm;\r\n }\r\n})();\r\n\r\n/**\r\n * WebWorker extends Perspective's `worker` class and defines interactions using\r\n * the WebWorker API.\r\n *\r\n * This class serves as the client API for transporting messages to/from Web\r\n * Workers.\r\n */\r\nclass WebWorkerClient extends Client {\r\n constructor(config) {\r\n if (config) {\r\n override_config(config);\r\n }\r\n super();\r\n this.register();\r\n }\r\n\r\n /**\r\n * When the worker is created, load either the ASM or WASM bundle depending\r\n * on WebAssembly compatibility. Don't use transferrable so multiple\r\n * workers can be instantiated.\r\n */\r\n async register() {\r\n let _worker;\r\n const msg = {cmd: \"init\", config: get_config()};\r\n if (typeof WebAssembly === \"undefined\") {\r\n throw new Error(\"WebAssembly not supported. Support for ASM.JS has been removed as of 0.3.1.\");\r\n } else {\r\n [_worker, msg.buffer] = await Promise.all([override.worker(), override.wasm()]);\r\n }\r\n for (var key in this._worker) {\r\n _worker[key] = this._worker[key];\r\n }\r\n this._worker = _worker;\r\n this._worker.addEventListener(\"message\", this._handle.bind(this));\r\n this._worker.postMessage(msg);\r\n this._detect_transferable();\r\n }\r\n\r\n /**\r\n * Send a message from the worker, using transferables if necessary.\r\n *\r\n * @param {*} msg\r\n */\r\n send(msg) {\r\n if (this._worker.transferable && msg.args && msg.args[0] instanceof ArrayBuffer) {\r\n this._worker.postMessage(msg, msg.args);\r\n } else {\r\n this._worker.postMessage(msg);\r\n }\r\n }\r\n\r\n terminate() {\r\n this._worker.terminate();\r\n this._worker = undefined;\r\n }\r\n\r\n _detect_transferable() {\r\n var ab = new ArrayBuffer(1);\r\n this._worker.postMessage(ab, [ab]);\r\n this._worker.transferable = ab.byteLength === 0;\r\n if (!this._worker.transferable) {\r\n console.warn(\"Transferable support not detected\");\r\n } else {\r\n console.log(\"Transferable support detected\");\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Given a WebSocket URL, connect to the socket located at `url`.\r\n *\r\n * The `onmessage` handler receives incoming messages and sends it to the\r\n * WebWorker through `this._handle`.\r\n *\r\n * If the message has a transferable asset, set the `pending_arrow` flag to tell\r\n * the worker the next message is an ArrayBuffer.\r\n */\r\nclass WebSocketClient extends Client {\r\n constructor(url) {\r\n super();\r\n this._ws = new WebSocket(url);\r\n this._ws.binaryType = \"arraybuffer\";\r\n this._ws.onopen = () => {\r\n this.send({id: -1, cmd: \"init\"});\r\n };\r\n const heartbeat = () => {\r\n this._ws.send(\"heartbeat\");\r\n setTimeout(heartbeat, HEARTBEAT_TIMEOUT);\r\n };\r\n setTimeout(heartbeat, 15000);\r\n this._ws.onmessage = msg => {\r\n if (msg.data === \"heartbeat\") {\r\n return;\r\n }\r\n if (this._pending_arrow) {\r\n this._handle({data: {id: this._pending_arrow, data: msg.data}});\r\n delete this._pending_arrow;\r\n } else {\r\n msg = JSON.parse(msg.data);\r\n\r\n // If the `is_transferable` flag is set, the worker expects the\r\n // next message to be a transferable object. This sets the\r\n // `_pending_arrow` flag, which triggers a special handler for\r\n // the ArrayBuffer containing arrow data.\r\n if (msg.is_transferable) {\r\n this._pending_arrow = msg.id;\r\n } else {\r\n this._handle({data: msg});\r\n }\r\n }\r\n };\r\n }\r\n\r\n send(msg) {\r\n this._ws.send(JSON.stringify(msg));\r\n }\r\n\r\n terminate() {\r\n this._ws.close();\r\n }\r\n}\r\n\r\n/******************************************************************************\r\n *\r\n * Web Worker Singleton\r\n *\r\n */\r\n\r\nconst WORKER_SINGLETON = (function() {\r\n let __WORKER__, __CONFIG__;\r\n return {\r\n getInstance: function(config) {\r\n if (__WORKER__ === undefined) {\r\n __WORKER__ = new WebWorkerClient(config);\r\n }\r\n const config_str = JSON.stringify(config);\r\n if (__CONFIG__ && config_str !== __CONFIG__) {\r\n throw new Error(`Confiuration object for shared_worker() has changed - this is probably a bug in your application.`);\r\n }\r\n __CONFIG__ = config_str;\r\n return __WORKER__;\r\n }\r\n };\r\n})();\r\n\r\n/**\r\n * If Perspective is loaded with the `preload` attribute, pre-initialize the\r\n * worker so it is available at page render.\r\n */\r\nif (document.currentScript && document.currentScript.hasAttribute(\"preload\")) {\r\n WORKER_SINGLETON.getInstance();\r\n}\r\n\r\nconst mod = {\r\n override: x => override.set(x),\r\n\r\n /**\r\n * Create a new WebWorkerClient instance. s\r\n * @param {*} [config] An optional perspective config object override\r\n */\r\n worker(config) {\r\n return new WebWorkerClient(config);\r\n },\r\n\r\n /**\r\n * Create a new WebSocketClient instance. The `url` parameter is provided,\r\n * load the worker at `url` using a WebSocket. s\r\n * @param {*} url Defaults to `window.location.origin`\r\n * @param {*} [config] An optional perspective config object override\r\n */\r\n websocket(url = window.location.origin.replace(\"http\", \"ws\")) {\r\n return new WebSocketClient(url);\r\n },\r\n\r\n shared_worker(config) {\r\n return WORKER_SINGLETON.getInstance(config);\r\n }\r\n};\r\n\r\nfor (let prop of Object.keys(defaults)) {\r\n mod[prop] = defaults[prop];\r\n}\r\n\r\nexport default mod;\r\n"],"sourceRoot":""}
\No newline at end of file