@avs/go-react 0.12.71731 → 0.13.71740
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/demo/node_modules/.vite/deps/@polymer_iron-resizable-behavior_iron-resizable-behavior__js.js +2321 -0
- package/demo/node_modules/.vite/deps/@polymer_iron-resizable-behavior_iron-resizable-behavior__js.js.map +7 -0
- package/demo/node_modules/.vite/deps/@polymer_polymer_lib_legacy_class__js.js +13 -0
- package/demo/node_modules/.vite/deps/@polymer_polymer_lib_legacy_class__js.js.map +7 -0
- package/demo/node_modules/.vite/deps/@polymer_polymer_lib_utils_mixin__js.js +8 -0
- package/demo/node_modules/.vite/deps/@polymer_polymer_lib_utils_mixin__js.js.map +7 -0
- package/demo/node_modules/.vite/deps/@polymer_polymer_lib_utils_render-status__js.js +12 -0
- package/demo/node_modules/.vite/deps/@polymer_polymer_lib_utils_render-status__js.js.map +7 -0
- package/demo/node_modules/.vite/deps/@polymer_polymer_polymer-element__js.js +15 -0
- package/demo/node_modules/.vite/deps/@polymer_polymer_polymer-element__js.js.map +7 -0
- package/demo/node_modules/.vite/deps/_metadata.json +103 -0
- package/demo/node_modules/.vite/deps/chunk-6HI7N2AN.js +267 -0
- package/demo/node_modules/.vite/deps/chunk-6HI7N2AN.js.map +7 -0
- package/demo/node_modules/.vite/deps/chunk-BHAOVVTR.js +4597 -0
- package/demo/node_modules/.vite/deps/chunk-BHAOVVTR.js.map +7 -0
- package/demo/node_modules/.vite/deps/chunk-BSA4YZO6.js +83 -0
- package/demo/node_modules/.vite/deps/chunk-BSA4YZO6.js.map +7 -0
- package/demo/node_modules/.vite/deps/chunk-BUSYA2B4.js +8 -0
- package/demo/node_modules/.vite/deps/chunk-BUSYA2B4.js.map +7 -0
- package/demo/node_modules/.vite/deps/chunk-CWUEONQP.js +991 -0
- package/demo/node_modules/.vite/deps/chunk-CWUEONQP.js.map +7 -0
- package/demo/node_modules/.vite/deps/chunk-I2HDYNON.js +46 -0
- package/demo/node_modules/.vite/deps/chunk-I2HDYNON.js.map +7 -0
- package/demo/node_modules/.vite/deps/chunk-MXBCLPIN.js +5 -0
- package/demo/node_modules/.vite/deps/chunk-MXBCLPIN.js.map +7 -0
- package/demo/node_modules/.vite/deps/chunk-PRUGAEYJ.js +4871 -0
- package/demo/node_modules/.vite/deps/chunk-PRUGAEYJ.js.map +7 -0
- package/demo/node_modules/.vite/deps/chunk-QQPVW2K2.js +62 -0
- package/demo/node_modules/.vite/deps/chunk-QQPVW2K2.js.map +7 -0
- package/demo/node_modules/.vite/deps/package.json +3 -0
- package/demo/node_modules/.vite/deps/react-dom.js +6 -0
- package/demo/node_modules/.vite/deps/react-dom.js.map +7 -0
- package/demo/node_modules/.vite/deps/react-dom_client.js +20193 -0
- package/demo/node_modules/.vite/deps/react-dom_client.js.map +7 -0
- package/demo/node_modules/.vite/deps/react.js +5 -0
- package/demo/node_modules/.vite/deps/react.js.map +7 -0
- package/demo/node_modules/.vite/deps/react_jsx-dev-runtime.js +265 -0
- package/demo/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +7 -0
- package/demo/node_modules/.vite/deps/react_jsx-runtime.js +276 -0
- package/demo/node_modules/.vite/deps/react_jsx-runtime.js.map +7 -0
- package/demo/node_modules/.vite/deps/three.js +41878 -0
- package/demo/node_modules/.vite/deps/three.js.map +7 -0
- package/demo/public/hydrogen.json +1 -1
- package/demo/src/App.tsx +17 -17
- package/package.json +3 -3
- package/src/AvsGoDataViz.jsx +2 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../node_modules/@polymer/polymer/lib/legacy/polymer-fn.js", "../../../../../../node_modules/@polymer/polymer/lib/mixins/mutable-data.js", "../../../../../../node_modules/@polymer/polymer/lib/utils/templatize.js", "../../../../../../node_modules/@polymer/polymer/lib/utils/hide-template-controls.js", "../../../../../../node_modules/@polymer/polymer/lib/elements/dom-bind.js", "../../../../../../node_modules/@polymer/polymer/lib/elements/dom-repeat.js", "../../../../../../node_modules/@polymer/polymer/lib/elements/dom-if.js", "../../../../../../node_modules/@polymer/polymer/lib/elements/array-selector.js", "../../../../../../node_modules/@webcomponents/shadycss/entrypoints/custom-style-interface.js", "../../../../../../node_modules/@polymer/polymer/lib/elements/custom-style.js", "../../../../../../node_modules/@polymer/polymer/lib/legacy/mutable-data-behavior.js", "../../../../../../node_modules/@polymer/polymer/polymer-legacy.js", "../../../../../../node_modules/@polymer/iron-resizable-behavior/iron-resizable-behavior.js"],
|
|
4
|
+
"sourcesContent": ["/**\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*/\nimport { Class } from './class.js';\n\nimport '../utils/boot.js';\n\n/**\n * Legacy class factory and registration helper for defining Polymer\n * elements.\n *\n * This method is equivalent to\n *\n * import {Class} from '@polymer/polymer/lib/legacy/class.js';\n * customElements.define(info.is, Class(info));\n *\n * See `Class` for details on valid legacy metadata format for `info`.\n *\n * @global\n * @override\n * @function\n * @param {!PolymerInit} info Object containing Polymer metadata and functions\n * to become class methods.\n * @return {function(new: HTMLElement)} Generated class\n * @suppress {duplicate, invalidCasts, checkTypes}\n */\nconst Polymer = function(info) {\n // if input is a `class` (aka a function with a prototype), use the prototype\n // remember that the `constructor` will never be called\n let klass;\n if (typeof info === 'function') {\n klass = info;\n } else {\n klass = Polymer.Class(info);\n }\n // Copy opt out for `legacyNoObservedAttributes` from info object to class.\n if (info._legacyForceObservedAttributes) {\n klass.prototype._legacyForceObservedAttributes = info._legacyForceObservedAttributes;\n }\n customElements.define(klass.is, /** @type {!HTMLElement} */(klass));\n return klass;\n};\n\nPolymer.Class = Class;\n\nexport { Polymer };", "/**\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*/\nimport { dedupingMixin } from '../utils/mixin.js';\n\n// Common implementation for mixin & behavior\nfunction mutablePropertyChange(inst, property, value, old, mutableData) {\n let isObject;\n if (mutableData) {\n isObject = (typeof value === 'object' && value !== null);\n // Pull `old` for Objects from temp cache, but treat `null` as a primitive\n if (isObject) {\n old = inst.__dataTemp[property];\n }\n }\n // Strict equality check, but return false for NaN===NaN\n let shouldChange = (old !== value && (old === old || value === value));\n // Objects are stored in temporary cache (cleared at end of\n // turn), which is used for dirty-checking\n if (isObject && shouldChange) {\n inst.__dataTemp[property] = value;\n }\n return shouldChange;\n}\n\n/**\n * Element class mixin to skip strict dirty-checking for objects and arrays\n * (always consider them to be \"dirty\"), for use on elements utilizing\n * `PropertyEffects`\n *\n * By default, `PropertyEffects` performs strict dirty checking on\n * objects, which means that any deep modifications to an object or array will\n * not be propagated unless \"immutable\" data patterns are used (i.e. all object\n * references from the root to the mutation were changed).\n *\n * Polymer also provides a proprietary data mutation and path notification API\n * (e.g. `notifyPath`, `set`, and array mutation API's) that allow efficient\n * mutation and notification of deep changes in an object graph to all elements\n * bound to the same object graph.\n *\n * In cases where neither immutable patterns nor the data mutation API can be\n * used, applying this mixin will cause Polymer to skip dirty checking for\n * objects and arrays (always consider them to be \"dirty\"). This allows a\n * user to make a deep modification to a bound object graph, and then either\n * simply re-set the object (e.g. `this.items = this.items`) or call `notifyPath`\n * (e.g. `this.notifyPath('items')`) to update the tree. Note that all\n * elements that wish to be updated based on deep mutations must apply this\n * mixin or otherwise skip strict dirty checking for objects/arrays.\n * Specifically, any elements in the binding tree between the source of a\n * mutation and the consumption of it must apply this mixin or enable the\n * `OptionalMutableData` mixin.\n *\n * In order to make the dirty check strategy configurable, see\n * `OptionalMutableData`.\n *\n * Note, the performance characteristics of propagating large object graphs\n * will be worse as opposed to using strict dirty checking with immutable\n * patterns or Polymer's path notification API.\n *\n * @mixinFunction\n * @polymer\n * @summary Element class mixin to skip strict dirty-checking for objects\n * and arrays\n * @template T\n * @param {function(new:T)} superClass Class to apply mixin to.\n * @return {function(new:T)} superClass with mixin applied.\n */\nexport const MutableData = dedupingMixin(superClass => {\n\n /**\n * @polymer\n * @mixinClass\n * @implements {Polymer_MutableData}\n */\n class MutableData extends superClass {\n /**\n * Overrides `PropertyEffects` to provide option for skipping\n * strict equality checking for Objects and Arrays.\n *\n * This method pulls the value to dirty check against from the `__dataTemp`\n * cache (rather than the normal `__data` cache) for Objects. Since the temp\n * cache is cleared at the end of a turn, this implementation allows\n * side-effects of deep object changes to be processed by re-setting the\n * same object (using the temp cache as an in-turn backstop to prevent\n * cycles due to 2-way notification).\n *\n * @param {string} property Property name\n * @param {*} value New property value\n * @param {*} old Previous property value\n * @return {boolean} Whether the property should be considered a change\n * @protected\n */\n _shouldPropertyChange(property, value, old) {\n return mutablePropertyChange(this, property, value, old, true);\n }\n\n }\n\n return MutableData;\n\n});\n\n/**\n * Element class mixin to add the optional ability to skip strict\n * dirty-checking for objects and arrays (always consider them to be\n * \"dirty\") by setting a `mutable-data` attribute on an element instance.\n *\n * By default, `PropertyEffects` performs strict dirty checking on\n * objects, which means that any deep modifications to an object or array will\n * not be propagated unless \"immutable\" data patterns are used (i.e. all object\n * references from the root to the mutation were changed).\n *\n * Polymer also provides a proprietary data mutation and path notification API\n * (e.g. `notifyPath`, `set`, and array mutation API's) that allow efficient\n * mutation and notification of deep changes in an object graph to all elements\n * bound to the same object graph.\n *\n * In cases where neither immutable patterns nor the data mutation API can be\n * used, applying this mixin will allow Polymer to skip dirty checking for\n * objects and arrays (always consider them to be \"dirty\"). This allows a\n * user to make a deep modification to a bound object graph, and then either\n * simply re-set the object (e.g. `this.items = this.items`) or call `notifyPath`\n * (e.g. `this.notifyPath('items')`) to update the tree. Note that all\n * elements that wish to be updated based on deep mutations must apply this\n * mixin or otherwise skip strict dirty checking for objects/arrays.\n * Specifically, any elements in the binding tree between the source of a\n * mutation and the consumption of it must enable this mixin or apply the\n * `MutableData` mixin.\n *\n * While this mixin adds the ability to forgo Object/Array dirty checking,\n * the `mutableData` flag defaults to false and must be set on the instance.\n *\n * Note, the performance characteristics of propagating large object graphs\n * will be worse by relying on `mutableData: true` as opposed to using\n * strict dirty checking with immutable patterns or Polymer's path notification\n * API.\n *\n * @mixinFunction\n * @polymer\n * @summary Element class mixin to optionally skip strict dirty-checking\n * for objects and arrays\n */\nexport const OptionalMutableData = dedupingMixin(superClass => {\n\n /**\n * @mixinClass\n * @polymer\n * @implements {Polymer_OptionalMutableData}\n */\n class OptionalMutableData extends superClass {\n\n /** @nocollapse */\n static get properties() {\n return {\n /**\n * Instance-level flag for configuring the dirty-checking strategy\n * for this element. When true, Objects and Arrays will skip dirty\n * checking, otherwise strict equality checking will be used.\n */\n mutableData: Boolean\n };\n }\n\n /**\n * Overrides `PropertyEffects` to provide option for skipping\n * strict equality checking for Objects and Arrays.\n *\n * When `this.mutableData` is true on this instance, this method\n * pulls the value to dirty check against from the `__dataTemp` cache\n * (rather than the normal `__data` cache) for Objects. Since the temp\n * cache is cleared at the end of a turn, this implementation allows\n * side-effects of deep object changes to be processed by re-setting the\n * same object (using the temp cache as an in-turn backstop to prevent\n * cycles due to 2-way notification).\n *\n * @param {string} property Property name\n * @param {*} value New property value\n * @param {*} old Previous property value\n * @return {boolean} Whether the property should be considered a change\n * @protected\n */\n _shouldPropertyChange(property, value, old) {\n return mutablePropertyChange(this, property, value, old, this.mutableData);\n }\n }\n\n return OptionalMutableData;\n\n});\n\n// Export for use by legacy behavior\nMutableData._mutablePropertyChange = mutablePropertyChange;\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/**\n * Module for preparing and stamping instances of templates that utilize\n * Polymer's data-binding and declarative event listener features.\n *\n * Example:\n *\n * // Get a template from somewhere, e.g. light DOM\n * let template = this.querySelector('template');\n * // Prepare the template\n * let TemplateClass = Templatize.templatize(template);\n * // Instance the template with an initial data model\n * let instance = new TemplateClass({myProp: 'initial'});\n * // Insert the instance's DOM somewhere, e.g. element's shadow DOM\n * this.shadowRoot.appendChild(instance.root);\n * // Changing a property on the instance will propagate to bindings\n * // in the template\n * instance.myProp = 'new value';\n *\n * The `options` dictionary passed to `templatize` allows for customizing\n * features of the generated template class, including how outer-scope host\n * properties should be forwarded into template instances, how any instance\n * properties added into the template's scope should be notified out to\n * the host, and whether the instance should be decorated as a \"parent model\"\n * of any event handlers.\n *\n * // Customize property forwarding and event model decoration\n * let TemplateClass = Templatize.templatize(template, this, {\n * parentModel: true,\n * forwardHostProp(property, value) {...},\n * instanceProps: {...},\n * notifyInstanceProp(instance, property, value) {...},\n * });\n *\n * @summary Module for preparing and stamping instances of templates\n * utilizing Polymer templating features.\n */\n\nimport './boot.js';\n\nimport { PropertyEffects } from '../mixins/property-effects.js';\nimport { MutableData } from '../mixins/mutable-data.js';\nimport { strictTemplatePolicy, legacyWarnings } from './settings.js';\nimport { wrap } from './wrap.js';\n\n// Base class for HTMLTemplateElement extension that has property effects\n// machinery for propagating host properties to children. This is an ES5\n// class only because Babel (incorrectly) requires super() in the class\n// constructor even though no `this` is used and it returns an instance.\nlet newInstance = null;\n\n/**\n * @constructor\n * @extends {HTMLTemplateElement}\n * @private\n */\nfunction HTMLTemplateElementExtension() { return newInstance; }\nHTMLTemplateElementExtension.prototype = Object.create(HTMLTemplateElement.prototype, {\n constructor: {\n value: HTMLTemplateElementExtension,\n writable: true\n }\n});\n\n/**\n * @constructor\n * @implements {Polymer_PropertyEffects}\n * @extends {HTMLTemplateElementExtension}\n * @private\n */\nconst DataTemplate = PropertyEffects(HTMLTemplateElementExtension);\n\n/**\n * @constructor\n * @implements {Polymer_MutableData}\n * @extends {DataTemplate}\n * @private\n */\nconst MutableDataTemplate = MutableData(DataTemplate);\n\n// Applies a DataTemplate subclass to a <template> instance\nfunction upgradeTemplate(template, constructor) {\n newInstance = template;\n Object.setPrototypeOf(template, constructor.prototype);\n new constructor();\n newInstance = null;\n}\n\n/**\n * Base class for TemplateInstance.\n * @constructor\n * @extends {HTMLElement}\n * @implements {Polymer_PropertyEffects}\n * @private\n */\nconst templateInstanceBase = PropertyEffects(class {});\n\nexport function showHideChildren(hide, children) {\n for (let i=0; i<children.length; i++) {\n let n = children[i];\n // Ignore non-changes\n if (Boolean(hide) != Boolean(n.__hideTemplateChildren__)) {\n // clear and restore text\n if (n.nodeType === Node.TEXT_NODE) {\n if (hide) {\n n.__polymerTextContent__ = n.textContent;\n n.textContent = '';\n } else {\n n.textContent = n.__polymerTextContent__;\n }\n // remove and replace slot\n } else if (n.localName === 'slot') {\n if (hide) {\n n.__polymerReplaced__ = document.createComment('hidden-slot');\n wrap(wrap(n).parentNode).replaceChild(n.__polymerReplaced__, n);\n } else {\n const replace = n.__polymerReplaced__;\n if (replace) {\n wrap(wrap(replace).parentNode).replaceChild(n, replace);\n }\n }\n }\n // hide and show nodes\n else if (n.style) {\n if (hide) {\n n.__polymerDisplay__ = n.style.display;\n n.style.display = 'none';\n } else {\n n.style.display = n.__polymerDisplay__;\n }\n }\n }\n n.__hideTemplateChildren__ = hide;\n if (n._showHideChildren) {\n n._showHideChildren(hide);\n }\n }\n}\n\n/**\n * @polymer\n * @customElement\n * @appliesMixin PropertyEffects\n * @unrestricted\n */\nclass TemplateInstanceBase extends templateInstanceBase {\n constructor(props) {\n super();\n this._configureProperties(props);\n /** @type {!StampedTemplate} */\n this.root = this._stampTemplate(this.__dataHost);\n // Save list of stamped children\n let children = [];\n /** @suppress {invalidCasts} */\n this.children = /** @type {!NodeList} */ (children);\n // Polymer 1.x did not use `Polymer.dom` here so not bothering.\n for (let n = this.root.firstChild; n; n=n.nextSibling) {\n children.push(n);\n n.__templatizeInstance = this;\n }\n if (this.__templatizeOwner &&\n this.__templatizeOwner.__hideTemplateChildren__) {\n this._showHideChildren(true);\n }\n // Flush props only when props are passed if instance props exist\n // or when there isn't instance props.\n let options = this.__templatizeOptions;\n if ((props && options.instanceProps) || !options.instanceProps) {\n this._enableProperties();\n }\n }\n /**\n * Configure the given `props` by calling `_setPendingProperty`. Also\n * sets any properties stored in `__hostProps`.\n * @private\n * @param {Object} props Object of property name-value pairs to set.\n * @return {void}\n */\n _configureProperties(props) {\n let options = this.__templatizeOptions;\n if (options.forwardHostProp) {\n for (let hprop in this.__hostProps) {\n this._setPendingProperty(hprop, this.__dataHost['_host_' + hprop]);\n }\n }\n // Any instance props passed in the constructor will overwrite host props;\n // normally this would be a user error but we don't specifically filter them\n for (let iprop in props) {\n this._setPendingProperty(iprop, props[iprop]);\n }\n }\n /**\n * Forwards a host property to this instance. This method should be\n * called on instances from the `options.forwardHostProp` callback\n * to propagate changes of host properties to each instance.\n *\n * Note this method enqueues the change, which are flushed as a batch.\n *\n * @param {string} prop Property or path name\n * @param {*} value Value of the property to forward\n * @return {void}\n */\n forwardHostProp(prop, value) {\n if (this._setPendingPropertyOrPath(prop, value, false, true)) {\n this.__dataHost._enqueueClient(this);\n }\n }\n\n /**\n * Override point for adding custom or simulated event handling.\n *\n * @override\n * @param {!Node} node Node to add event listener to\n * @param {string} eventName Name of event\n * @param {function(!Event):void} handler Listener function to add\n * @return {void}\n */\n _addEventListenerToNode(node, eventName, handler) {\n if (this._methodHost && this.__templatizeOptions.parentModel) {\n // If this instance should be considered a parent model, decorate\n // events this template instance as `model`\n this._methodHost._addEventListenerToNode(node, eventName, (e) => {\n e.model = this;\n handler(e);\n });\n } else {\n // Otherwise delegate to the template's host (which could be)\n // another template instance\n let templateHost = this.__dataHost.__dataHost;\n if (templateHost) {\n templateHost._addEventListenerToNode(node, eventName, handler);\n }\n }\n }\n /**\n * Shows or hides the template instance top level child elements. For\n * text nodes, `textContent` is removed while \"hidden\" and replaced when\n * \"shown.\"\n * @param {boolean} hide Set to true to hide the children;\n * set to false to show them.\n * @return {void}\n * @protected\n */\n _showHideChildren(hide) {\n showHideChildren(hide, this.children);\n }\n /**\n * Overrides default property-effects implementation to intercept\n * textContent bindings while children are \"hidden\" and cache in\n * private storage for later retrieval.\n *\n * @override\n * @param {!Node} node The node to set a property on\n * @param {string} prop The property to set\n * @param {*} value The value to set\n * @return {void}\n * @protected\n */\n _setUnmanagedPropertyToNode(node, prop, value) {\n if (node.__hideTemplateChildren__ &&\n node.nodeType == Node.TEXT_NODE && prop == 'textContent') {\n node.__polymerTextContent__ = value;\n } else {\n super._setUnmanagedPropertyToNode(node, prop, value);\n }\n }\n /**\n * Find the parent model of this template instance. The parent model\n * is either another templatize instance that had option `parentModel: true`,\n * or else the host element.\n *\n * @return {!Polymer_PropertyEffects} The parent model of this instance\n */\n get parentModel() {\n let model = this.__parentModel;\n if (!model) {\n let options;\n model = this;\n do {\n // A template instance's `__dataHost` is a <template>\n // `model.__dataHost.__dataHost` is the template's host\n model = model.__dataHost.__dataHost;\n } while ((options = model.__templatizeOptions) && !options.parentModel);\n this.__parentModel = model;\n }\n return model;\n }\n\n /**\n * Stub of HTMLElement's `dispatchEvent`, so that effects that may\n * dispatch events safely no-op.\n *\n * @param {Event} event Event to dispatch\n * @return {boolean} Always true.\n * @override\n */\n dispatchEvent(event) { // eslint-disable-line no-unused-vars\n return true;\n }\n}\n\n/** @type {!DataTemplate} */\nTemplateInstanceBase.prototype.__dataHost;\n/** @type {!TemplatizeOptions} */\nTemplateInstanceBase.prototype.__templatizeOptions;\n/** @type {!Polymer_PropertyEffects} */\nTemplateInstanceBase.prototype._methodHost;\n/** @type {!Object} */\nTemplateInstanceBase.prototype.__templatizeOwner;\n/** @type {!Object} */\nTemplateInstanceBase.prototype.__hostProps;\n\n/**\n * @constructor\n * @extends {TemplateInstanceBase}\n * @implements {Polymer_MutableData}\n * @private\n */\nconst MutableTemplateInstanceBase = MutableData(\n // This cast shouldn't be neccessary, but Closure doesn't understand that\n // TemplateInstanceBase is a constructor function.\n /** @type {function(new:TemplateInstanceBase)} */ (TemplateInstanceBase));\n\nfunction findMethodHost(template) {\n // Technically this should be the owner of the outermost template.\n // In shadow dom, this is always getRootNode().host, but we can\n // approximate this via cooperation with our dataHost always setting\n // `_methodHost` as long as there were bindings (or id's) on this\n // instance causing it to get a dataHost.\n let templateHost = template.__dataHost;\n return templateHost && templateHost._methodHost || templateHost;\n}\n\n/* eslint-disable valid-jsdoc */\n/**\n * @suppress {missingProperties} class.prototype is not defined for some reason\n */\nfunction createTemplatizerClass(template, templateInfo, options) {\n /**\n * @constructor\n * @extends {TemplateInstanceBase}\n */\n let templatizerBase = options.mutableData ?\n MutableTemplateInstanceBase : TemplateInstanceBase;\n\n // Affordance for global mixins onto TemplatizeInstance\n if (templatize.mixin) {\n templatizerBase = templatize.mixin(templatizerBase);\n }\n\n /**\n * Anonymous class created by the templatize\n * @constructor\n * @private\n */\n let klass = class extends templatizerBase { };\n /** @override */\n klass.prototype.__templatizeOptions = options;\n klass.prototype._bindTemplate(template);\n addNotifyEffects(klass, template, templateInfo, options);\n return klass;\n}\n\n/**\n * Adds propagate effects from the template to the template instance for\n * properties that the host binds to the template using the `_host_` prefix.\n *\n * @suppress {missingProperties} class.prototype is not defined for some reason\n */\nfunction addPropagateEffects(target, templateInfo, options, methodHost) {\n let userForwardHostProp = options.forwardHostProp;\n if (userForwardHostProp && templateInfo.hasHostProps) {\n // Under the `removeNestedTemplates` optimization, a custom element like\n // `dom-if` or `dom-repeat` can itself be treated as the \"template\"; this\n // flag is used to switch between upgrading a `<template>` to be a property\n // effects client vs. adding the effects directly to the custom element\n const isTemplate = target.localName == 'template';\n // Provide data API and property effects on memoized template class\n let klass = templateInfo.templatizeTemplateClass;\n if (!klass) {\n if (isTemplate) {\n /**\n * @constructor\n * @extends {DataTemplate}\n */\n let templatizedBase =\n options.mutableData ? MutableDataTemplate : DataTemplate;\n\n // NOTE: due to https://github.com/google/closure-compiler/issues/2928,\n // combining the next two lines into one assignment causes a spurious\n // type error.\n /** @private */\n class TemplatizedTemplate extends templatizedBase {}\n klass = templateInfo.templatizeTemplateClass = TemplatizedTemplate;\n } else {\n /**\n * @constructor\n * @extends {PolymerElement}\n */\n const templatizedBase = target.constructor;\n\n // Create a cached subclass of the base custom element class onto which\n // to put the template-specific propagate effects\n // NOTE: due to https://github.com/google/closure-compiler/issues/2928,\n // combining the next two lines into one assignment causes a spurious\n // type error.\n /** @private */\n class TemplatizedTemplateExtension extends templatizedBase {}\n klass = templateInfo.templatizeTemplateClass =\n TemplatizedTemplateExtension;\n }\n // Add template - >instances effects\n // and host <- template effects\n let hostProps = templateInfo.hostProps;\n for (let prop in hostProps) {\n klass.prototype._addPropertyEffect('_host_' + prop,\n klass.prototype.PROPERTY_EFFECT_TYPES.PROPAGATE,\n {fn: createForwardHostPropEffect(prop, userForwardHostProp)});\n klass.prototype._createNotifyingProperty('_host_' + prop);\n }\n if (legacyWarnings && methodHost) {\n warnOnUndeclaredProperties(templateInfo, options, methodHost);\n }\n }\n // Mix any pre-bound data into __data; no need to flush this to\n // instances since they pull from the template at instance-time\n if (target.__dataProto) {\n // Note, generally `__dataProto` could be chained, but it's guaranteed\n // to not be since this is a vanilla template we just added effects to\n Object.assign(target.__data, target.__dataProto);\n }\n if (isTemplate) {\n upgradeTemplate(target, klass);\n // Clear any pending data for performance\n target.__dataTemp = {};\n target.__dataPending = null;\n target.__dataOld = null;\n target._enableProperties();\n } else {\n // Swizzle the cached subclass prototype onto the custom element\n Object.setPrototypeOf(target, klass.prototype);\n // Check for any pre-bound instance host properties, and do the\n // instance property delete/assign dance for those (directly into data;\n // not need to go through accessor since they are pulled at instance time)\n const hostProps = templateInfo.hostProps;\n for (let prop in hostProps) {\n prop = '_host_' + prop;\n if (prop in target) {\n const val = target[prop];\n delete target[prop];\n target.__data[prop] = val;\n }\n }\n }\n }\n}\n/* eslint-enable valid-jsdoc */\n\nfunction createForwardHostPropEffect(hostProp, userForwardHostProp) {\n return function forwardHostProp(template, prop, props) {\n userForwardHostProp.call(template.__templatizeOwner,\n prop.substring('_host_'.length), props[prop]);\n };\n}\n\nfunction addNotifyEffects(klass, template, templateInfo, options) {\n let hostProps = templateInfo.hostProps || {};\n for (let iprop in options.instanceProps) {\n delete hostProps[iprop];\n let userNotifyInstanceProp = options.notifyInstanceProp;\n if (userNotifyInstanceProp) {\n klass.prototype._addPropertyEffect(iprop,\n klass.prototype.PROPERTY_EFFECT_TYPES.NOTIFY,\n {fn: createNotifyInstancePropEffect(iprop, userNotifyInstanceProp)});\n }\n }\n if (options.forwardHostProp && template.__dataHost) {\n for (let hprop in hostProps) {\n // As we're iterating hostProps in this function, note whether\n // there were any, for an optimization in addPropagateEffects\n if (!templateInfo.hasHostProps) {\n templateInfo.hasHostProps = true;\n }\n klass.prototype._addPropertyEffect(hprop,\n klass.prototype.PROPERTY_EFFECT_TYPES.NOTIFY,\n {fn: createNotifyHostPropEffect()});\n }\n }\n}\n\nfunction createNotifyInstancePropEffect(instProp, userNotifyInstanceProp) {\n return function notifyInstanceProp(inst, prop, props) {\n userNotifyInstanceProp.call(inst.__templatizeOwner,\n inst, prop, props[prop]);\n };\n}\n\nfunction createNotifyHostPropEffect() {\n return function notifyHostProp(inst, prop, props) {\n inst.__dataHost._setPendingPropertyOrPath('_host_' + prop, props[prop], true, true);\n };\n}\n\n\n/**\n * Returns an anonymous `PropertyEffects` class bound to the\n * `<template>` provided. Instancing the class will result in the\n * template being stamped into a document fragment stored as the instance's\n * `root` property, after which it can be appended to the DOM.\n *\n * Templates may utilize all Polymer data-binding features as well as\n * declarative event listeners. Event listeners and inline computing\n * functions in the template will be called on the host of the template.\n *\n * The constructor returned takes a single argument dictionary of initial\n * property values to propagate into template bindings. Additionally\n * host properties can be forwarded in, and instance properties can be\n * notified out by providing optional callbacks in the `options` dictionary.\n *\n * Valid configuration in `options` are as follows:\n *\n * - `forwardHostProp(property, value)`: Called when a property referenced\n * in the template changed on the template's host. As this library does\n * not retain references to templates instanced by the user, it is the\n * templatize owner's responsibility to forward host property changes into\n * user-stamped instances. The `instance.forwardHostProp(property, value)`\n * method on the generated class should be called to forward host\n * properties into the template to prevent unnecessary property-changed\n * notifications. Any properties referenced in the template that are not\n * defined in `instanceProps` will be notified up to the template's host\n * automatically.\n * - `instanceProps`: Dictionary of property names that will be added\n * to the instance by the templatize owner. These properties shadow any\n * host properties, and changes within the template to these properties\n * will result in `notifyInstanceProp` being called.\n * - `mutableData`: When `true`, the generated class will skip strict\n * dirty-checking for objects and arrays (always consider them to be\n * \"dirty\").\n * - `notifyInstanceProp(instance, property, value)`: Called when\n * an instance property changes. Users may choose to call `notifyPath`\n * on e.g. the owner to notify the change.\n * - `parentModel`: When `true`, events handled by declarative event listeners\n * (`on-event=\"handler\"`) will be decorated with a `model` property pointing\n * to the template instance that stamped it. It will also be returned\n * from `instance.parentModel` in cases where template instance nesting\n * causes an inner model to shadow an outer model.\n *\n * All callbacks are called bound to the `owner`. Any context\n * needed for the callbacks (such as references to `instances` stamped)\n * should be stored on the `owner` such that they can be retrieved via\n * `this`.\n *\n * When `options.forwardHostProp` is declared as an option, any properties\n * referenced in the template will be automatically forwarded from the host of\n * the `<template>` to instances, with the exception of any properties listed in\n * the `options.instanceProps` object. `instanceProps` are assumed to be\n * managed by the owner of the instances, either passed into the constructor\n * or set after the fact. Note, any properties passed into the constructor will\n * always be set to the instance (regardless of whether they would normally\n * be forwarded from the host).\n *\n * Note that `templatize()` can be run only once for a given `<template>`.\n * Further calls will result in an error. Also, there is a special\n * behavior if the template was duplicated through a mechanism such as\n * `<dom-repeat>` or `<test-fixture>`. In this case, all calls to\n * `templatize()` return the same class for all duplicates of a template.\n * The class returned from `templatize()` is generated only once using\n * the `options` from the first call. This means that any `options`\n * provided to subsequent calls will be ignored. Therefore, it is very\n * important not to close over any variables inside the callbacks. Also,\n * arrow functions must be avoided because they bind the outer `this`.\n * Inside the callbacks, any contextual information can be accessed\n * through `this`, which points to the `owner`.\n *\n * @param {!HTMLTemplateElement} template Template to templatize\n * @param {Polymer_PropertyEffects=} owner Owner of the template instances;\n * any optional callbacks will be bound to this owner.\n * @param {Object=} options Options dictionary (see summary for details)\n * @return {function(new:TemplateInstanceBase, Object=)} Generated class bound\n * to the template provided\n * @suppress {invalidCasts}\n */\nexport function templatize(template, owner, options) {\n // Under strictTemplatePolicy, the templatized element must be owned\n // by a (trusted) Polymer element, indicated by existence of _methodHost;\n // e.g. for dom-if & dom-repeat in main document, _methodHost is null\n if (strictTemplatePolicy && !findMethodHost(template)) {\n throw new Error('strictTemplatePolicy: template owner not trusted');\n }\n options = /** @type {!TemplatizeOptions} */(options || {});\n if (template.__templatizeOwner) {\n throw new Error('A <template> can only be templatized once');\n }\n template.__templatizeOwner = owner;\n const ctor = owner ? owner.constructor : TemplateInstanceBase;\n let templateInfo = ctor._parseTemplate(template);\n // Get memoized base class for the prototypical template, which\n // includes property effects for binding template & forwarding\n /**\n * @constructor\n * @extends {TemplateInstanceBase}\n */\n let baseClass = templateInfo.templatizeInstanceClass;\n if (!baseClass) {\n baseClass = createTemplatizerClass(template, templateInfo, options);\n templateInfo.templatizeInstanceClass = baseClass;\n }\n const methodHost = findMethodHost(template);\n // Host property forwarding must be installed onto template instance\n addPropagateEffects(template, templateInfo, options, methodHost);\n // Subclass base class and add reference for this specific template\n /** @private */\n let klass = class TemplateInstance extends baseClass {};\n /** @override */\n klass.prototype._methodHost = methodHost;\n /** @override */\n klass.prototype.__dataHost = /** @type {!DataTemplate} */ (template);\n /** @override */\n klass.prototype.__templatizeOwner = /** @type {!Object} */ (owner);\n /** @override */\n klass.prototype.__hostProps = templateInfo.hostProps;\n klass = /** @type {function(new:TemplateInstanceBase)} */(klass); //eslint-disable-line no-self-assign\n return klass;\n}\n\nfunction warnOnUndeclaredProperties(templateInfo, options, methodHost) {\n const declaredProps = methodHost.constructor._properties;\n const {propertyEffects} = templateInfo;\n const {instanceProps} = options;\n for (let prop in propertyEffects) {\n // Ensure properties with template effects are declared on the outermost\n // host (`methodHost`), unless they are instance props or static functions\n if (!declaredProps[prop] && !(instanceProps && instanceProps[prop])) {\n const effects = propertyEffects[prop];\n for (let i=0; i<effects.length; i++) {\n const {part} = effects[i].info;\n if (!(part.signature && part.signature.static)) {\n console.warn(`Property '${prop}' used in template but not ` +\n `declared in 'properties'; attribute will not be observed.`);\n break;\n }\n }\n }\n }\n}\n\n/**\n * Returns the template \"model\" associated with a given element, which\n * serves as the binding scope for the template instance the element is\n * contained in. A template model is an instance of\n * `TemplateInstanceBase`, and should be used to manipulate data\n * associated with this template instance.\n *\n * Example:\n *\n * let model = modelForElement(el);\n * if (model.index < 10) {\n * model.set('item.checked', true);\n * }\n *\n * @param {HTMLElement} template The model will be returned for\n * elements stamped from this template (accepts either an HTMLTemplateElement)\n * or a `<dom-if>`/`<dom-repeat>` element when using `removeNestedTemplates`\n * optimization.\n * @param {Node=} node Node for which to return a template model.\n * @return {TemplateInstanceBase} Template instance representing the\n * binding scope for the element\n */\nexport function modelForElement(template, node) {\n let model;\n while (node) {\n // An element with a __templatizeInstance marks the top boundary\n // of a scope; walk up until we find one, and then ensure that\n // its __dataHost matches `this`, meaning this dom-repeat stamped it\n if ((model = node.__dataHost ? node : node.__templatizeInstance)) {\n // Found an element stamped by another template; keep walking up\n // from its __dataHost\n if (model.__dataHost != template) {\n node = model.__dataHost;\n } else {\n return model;\n }\n } else {\n // Still in a template scope, keep going up until\n // a __templatizeInstance is found\n node = wrap(node).parentNode;\n }\n }\n return null;\n}\n\nexport { TemplateInstanceBase };\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/**\n * @fileoverview\n *\n * Module to hide `<dom-bind>`, `<dom-if>`, and `<dom-repeat>` elements\n * optimally in ShadyDOM\n */\n\nimport {legacyOptimizations, useShadow} from './settings.js';\n\nlet elementsHidden = false;\n\n/**\n * @return {boolean} True if elements will be hidden globally\n */\nexport function hideElementsGlobally() {\n if (legacyOptimizations && !useShadow) {\n if (!elementsHidden) {\n elementsHidden = true;\n const style = document.createElement('style');\n style.textContent = 'dom-bind,dom-if,dom-repeat{display:none;}';\n document.head.appendChild(style);\n }\n return true;\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*/\nimport '../utils/boot.js';\n\nimport { PropertyEffects } from '../mixins/property-effects.js';\nimport { OptionalMutableData } from '../mixins/mutable-data.js';\nimport { GestureEventListeners } from '../mixins/gesture-event-listeners.js';\nimport { strictTemplatePolicy } from '../utils/settings.js';\nimport { wrap } from '../utils/wrap.js';\nimport { hideElementsGlobally } from '../utils/hide-template-controls.js';\n\n/**\n * @constructor\n * @extends {HTMLElement}\n * @implements {Polymer_PropertyEffects}\n * @implements {Polymer_OptionalMutableData}\n * @implements {Polymer_GestureEventListeners}\n * @private\n */\nconst domBindBase =\n GestureEventListeners(\n OptionalMutableData(\n PropertyEffects(HTMLElement)));\n\n/**\n * Custom element to allow using Polymer's template features (data binding,\n * declarative event listeners, etc.) in the main document without defining\n * a new custom element.\n *\n * `<template>` tags utilizing bindings may be wrapped with the `<dom-bind>`\n * element, which will immediately stamp the wrapped template into the main\n * document and bind elements to the `dom-bind` element itself as the\n * binding scope.\n *\n * @polymer\n * @customElement\n * @appliesMixin PropertyEffects\n * @appliesMixin OptionalMutableData\n * @appliesMixin GestureEventListeners\n * @extends {domBindBase}\n * @summary Custom element to allow using Polymer's template features (data\n * binding, declarative event listeners, etc.) in the main document.\n */\nexport class DomBind extends domBindBase {\n\n static get observedAttributes() { return ['mutable-data']; }\n\n constructor() {\n super();\n if (strictTemplatePolicy) {\n throw new Error(`strictTemplatePolicy: dom-bind not allowed`);\n }\n this.root = null;\n this.$ = null;\n this.__children = null;\n }\n\n /* eslint-disable no-unused-vars */\n /**\n * @override\n * @param {string} name Name of attribute that changed\n * @param {?string} old Old attribute value\n * @param {?string} value New attribute value\n * @param {?string} namespace Attribute namespace.\n * @return {void}\n */\n attributeChangedCallback(name, old, value, namespace) {\n // assumes only one observed attribute\n this.mutableData = true;\n }\n\n /**\n * @override\n * @return {void}\n */\n connectedCallback() {\n if (!hideElementsGlobally()) {\n this.style.display = 'none';\n }\n this.render();\n }\n\n /**\n * @override\n * @return {void}\n */\n disconnectedCallback() {\n this.__removeChildren();\n }\n\n __insertChildren() {\n wrap(wrap(this).parentNode).insertBefore(this.root, this);\n }\n\n __removeChildren() {\n if (this.__children) {\n for (let i=0; i<this.__children.length; i++) {\n this.root.appendChild(this.__children[i]);\n }\n }\n }\n\n /**\n * Forces the element to render its content. This is typically only\n * necessary to call if HTMLImports with the async attribute are used.\n * @return {void}\n */\n render() {\n let template;\n if (!this.__children) {\n template = /** @type {?HTMLTemplateElement} */(template || this.querySelector('template'));\n if (!template) {\n // Wait until childList changes and template should be there by then\n let observer = new MutationObserver(() => {\n template = /** @type {HTMLTemplateElement} */(this.querySelector('template'));\n if (template) {\n observer.disconnect();\n this.render();\n } else {\n throw new Error('dom-bind requires a <template> child');\n }\n });\n observer.observe(this, {childList: true});\n return;\n }\n this.root = this._stampTemplate(\n /** @type {!HTMLTemplateElement} */(template));\n this.$ = this.root.$;\n this.__children = [];\n for (let n=this.root.firstChild; n; n=n.nextSibling) {\n this.__children[this.__children.length] = n;\n }\n this._enableProperties();\n }\n this.__insertChildren();\n this.dispatchEvent(new CustomEvent('dom-change', {\n bubbles: true,\n composed: true\n }));\n }\n\n}\n\ncustomElements.define('dom-bind', DomBind);\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*/\nimport { PolymerElement } from '../../polymer-element.js';\n\nimport { TemplateInstanceBase, templatize, modelForElement } from '../utils/templatize.js'; // eslint-disable-line no-unused-vars\nimport { Debouncer } from '../utils/debounce.js';\nimport { enqueueDebouncer, flush } from '../utils/flush.js';\nimport { OptionalMutableData } from '../mixins/mutable-data.js';\nimport { matches, translate } from '../utils/path.js';\nimport { timeOut, microTask } from '../utils/async.js';\nimport { wrap } from '../utils/wrap.js';\nimport { hideElementsGlobally } from '../utils/hide-template-controls.js';\nimport { suppressTemplateNotifications } from '../utils/settings.js';\n\n/**\n * @constructor\n * @implements {Polymer_OptionalMutableData}\n * @extends {PolymerElement}\n * @private\n */\nconst domRepeatBase = OptionalMutableData(PolymerElement);\n\n/**\n * The `<dom-repeat>` element will automatically stamp and binds one instance\n * of template content to each object in a user-provided array.\n * `dom-repeat` accepts an `items` property, and one instance of the template\n * is stamped for each item into the DOM at the location of the `dom-repeat`\n * element. The `item` property will be set on each instance's binding\n * scope, thus templates should bind to sub-properties of `item`.\n *\n * Example:\n *\n * ```html\n * <dom-module id=\"employee-list\">\n *\n * <template>\n *\n * <div> Employee list: </div>\n * <dom-repeat items=\"{{employees}}\">\n * <template>\n * <div>First name: <span>{{item.first}}</span></div>\n * <div>Last name: <span>{{item.last}}</span></div>\n * </template>\n * </dom-repeat>\n *\n * </template>\n *\n * </dom-module>\n * ```\n *\n * With the following custom element definition:\n *\n * ```js\n * class EmployeeList extends PolymerElement {\n * static get is() { return 'employee-list'; }\n * static get properties() {\n * return {\n * employees: {\n * value() {\n * return [\n * {first: 'Bob', last: 'Smith'},\n * {first: 'Sally', last: 'Johnson'},\n * ...\n * ];\n * }\n * }\n * };\n * }\n * }\n * ```\n *\n * Notifications for changes to items sub-properties will be forwarded to template\n * instances, which will update via the normal structured data notification system.\n *\n * Mutations to the `items` array itself should be made using the Array\n * mutation API's on the PropertyEffects mixin (`push`, `pop`, `splice`,\n * `shift`, `unshift`), and template instances will be kept in sync with the\n * data in the array.\n *\n * Events caught by event handlers within the `dom-repeat` template will be\n * decorated with a `model` property, which represents the binding scope for\n * each template instance. The model should be used to manipulate data on the\n * instance, for example `event.model.set('item.checked', true);`.\n *\n * Alternatively, the model for a template instance for an element stamped by\n * a `dom-repeat` can be obtained using the `modelForElement` API on the\n * `dom-repeat` that stamped it, for example\n * `this.$.domRepeat.modelForElement(event.target).set('item.checked', true);`.\n * This may be useful for manipulating instance data of event targets obtained\n * by event handlers on parents of the `dom-repeat` (event delegation).\n *\n * A view-specific filter/sort may be applied to each `dom-repeat` by supplying a\n * `filter` and/or `sort` property. This may be a string that names a function on\n * the host, or a function may be assigned to the property directly. The functions\n * should implemented following the standard `Array` filter/sort API.\n *\n * In order to re-run the filter or sort functions based on changes to sub-fields\n * of `items`, the `observe` property may be set as a space-separated list of\n * `item` sub-fields that should cause a re-filter/sort when modified. If\n * the filter or sort function depends on properties not contained in `items`,\n * the user should observe changes to those properties and call `render` to update\n * the view based on the dependency change.\n *\n * For example, for an `dom-repeat` with a filter of the following:\n *\n * ```js\n * isEngineer(item) {\n * return item.type == 'engineer' || item.manager.type == 'engineer';\n * }\n * ```\n *\n * Then the `observe` property should be configured as follows:\n *\n * ```html\n * <dom-repeat items=\"{{employees}}\" filter=\"isEngineer\" observe=\"type manager.type\">\n * ```\n *\n * @customElement\n * @polymer\n * @extends {domRepeatBase}\n * @appliesMixin OptionalMutableData\n * @summary Custom element for stamping instance of a template bound to\n * items in an array.\n */\nexport class DomRepeat extends domRepeatBase {\n\n // Not needed to find template; can be removed once the analyzer\n // can find the tag name from customElements.define call\n static get is() { return 'dom-repeat'; }\n\n static get template() { return null; }\n\n static get properties() {\n\n /**\n * Fired whenever DOM is added or removed by this template (by\n * default, rendering occurs lazily). To force immediate rendering, call\n * `render`.\n *\n * @event dom-change\n */\n return {\n\n /**\n * An array containing items determining how many instances of the template\n * to stamp and that that each template instance should bind to.\n */\n items: {\n type: Array\n },\n\n /**\n * The name of the variable to add to the binding scope for the array\n * element associated with a given template instance.\n */\n as: {\n type: String,\n value: 'item'\n },\n\n /**\n * The name of the variable to add to the binding scope with the index\n * of the instance in the sorted and filtered list of rendered items.\n * Note, for the index in the `this.items` array, use the value of the\n * `itemsIndexAs` property.\n */\n indexAs: {\n type: String,\n value: 'index'\n },\n\n /**\n * The name of the variable to add to the binding scope with the index\n * of the instance in the `this.items` array. Note, for the index of\n * this instance in the sorted and filtered list of rendered items,\n * use the value of the `indexAs` property.\n */\n itemsIndexAs: {\n type: String,\n value: 'itemsIndex'\n },\n\n /**\n * A function that should determine the sort order of the items. This\n * property should either be provided as a string, indicating a method\n * name on the element's host, or else be an actual function. The\n * function should match the sort function passed to `Array.sort`.\n * Using a sort function has no effect on the underlying `items` array.\n */\n sort: {\n type: Function,\n observer: '__sortChanged'\n },\n\n /**\n * A function that can be used to filter items out of the view. This\n * property should either be provided as a string, indicating a method\n * name on the element's host, or else be an actual function. The\n * function should match the sort function passed to `Array.filter`.\n * Using a filter function has no effect on the underlying `items` array.\n */\n filter: {\n type: Function,\n observer: '__filterChanged'\n },\n\n /**\n * When using a `filter` or `sort` function, the `observe` property\n * should be set to a space-separated list of the names of item\n * sub-fields that should trigger a re-sort or re-filter when changed.\n * These should generally be fields of `item` that the sort or filter\n * function depends on.\n */\n observe: {\n type: String,\n observer: '__observeChanged'\n },\n\n /**\n * When using a `filter` or `sort` function, the `delay` property\n * determines a debounce time in ms after a change to observed item\n * properties that must pass before the filter or sort is re-run.\n * This is useful in rate-limiting shuffling of the view when\n * item changes may be frequent.\n */\n delay: Number,\n\n /**\n * Count of currently rendered items after `filter` (if any) has been applied.\n * If \"chunking mode\" is enabled, `renderedItemCount` is updated each time a\n * set of template instances is rendered.\n *\n */\n renderedItemCount: {\n type: Number,\n notify: !suppressTemplateNotifications,\n readOnly: true\n },\n\n /**\n * When greater than zero, defines an initial count of template instances\n * to render after setting the `items` array, before the next paint, and\n * puts the `dom-repeat` into \"chunking mode\". The remaining items (and\n * any future items as a result of pushing onto the array) will be created\n * and rendered incrementally at each animation frame thereof until all\n * instances have been rendered.\n */\n initialCount: {\n type: Number\n },\n\n /**\n * When `initialCount` is used, this property defines a frame rate (in\n * fps) to target by throttling the number of instances rendered each\n * frame to not exceed the budget for the target frame rate. The\n * framerate is effectively the number of `requestAnimationFrame`s that\n * it tries to allow to actually fire in a given second. It does this\n * by measuring the time between `rAF`s and continuously adjusting the\n * number of items created each `rAF` to maintain the target framerate.\n * Setting this to a higher number allows lower latency and higher\n * throughput for event handlers and other tasks, but results in a\n * longer time for the remaining items to complete rendering.\n */\n targetFramerate: {\n type: Number,\n value: 20\n },\n\n _targetFrameTime: {\n type: Number,\n computed: '__computeFrameTime(targetFramerate)'\n },\n\n /**\n * When the global `suppressTemplateNotifications` setting is used, setting\n * `notifyDomChange: true` will enable firing `dom-change` events on this\n * element.\n */\n notifyDomChange: {\n type: Boolean\n },\n\n /**\n * When chunking is enabled via `initialCount` and the `items` array is\n * set to a new array, this flag controls whether the previously rendered\n * instances are reused or not.\n *\n * When `true`, any previously rendered template instances are updated in\n * place to their new item values synchronously in one shot, and then any\n * further items (if any) are chunked out. When `false`, the list is\n * returned back to its `initialCount` (any instances over the initial\n * count are discarded) and the remainder of the list is chunked back in.\n * Set this to `true` to avoid re-creating the list and losing scroll\n * position, although note that when changing the list to completely\n * different data the render thread will be blocked until all existing\n * instances are updated to their new data.\n */\n reuseChunkedInstances: {\n type: Boolean\n }\n\n };\n\n }\n\n static get observers() {\n return [ '__itemsChanged(items.*)' ];\n }\n\n constructor() {\n super();\n this.__instances = [];\n this.__renderDebouncer = null;\n this.__itemsIdxToInstIdx = {};\n this.__chunkCount = null;\n this.__renderStartTime = null;\n this.__itemsArrayChanged = false;\n this.__shouldMeasureChunk = false;\n this.__shouldContinueChunking = false;\n this.__chunkingId = 0;\n this.__sortFn = null;\n this.__filterFn = null;\n this.__observePaths = null;\n /** @type {?function(new:TemplateInstanceBase, Object=)} */\n this.__ctor = null;\n this.__isDetached = true;\n this.template = null;\n /** @type {TemplateInfo} */\n this._templateInfo;\n }\n\n /**\n * @override\n * @return {void}\n */\n disconnectedCallback() {\n super.disconnectedCallback();\n this.__isDetached = true;\n for (let i=0; i<this.__instances.length; i++) {\n this.__detachInstance(i);\n }\n // Stop chunking if one was in progress\n if (this.__chunkingId) {\n cancelAnimationFrame(this.__chunkingId);\n }\n }\n\n /**\n * @override\n * @return {void}\n */\n connectedCallback() {\n super.connectedCallback();\n if (!hideElementsGlobally()) {\n this.style.display = 'none';\n }\n // only perform attachment if the element was previously detached.\n if (this.__isDetached) {\n this.__isDetached = false;\n let wrappedParent = wrap(wrap(this).parentNode);\n for (let i=0; i<this.__instances.length; i++) {\n this.__attachInstance(i, wrappedParent);\n }\n // Restart chunking if one was in progress when disconnected\n if (this.__chunkingId) {\n this.__render();\n }\n }\n }\n\n __ensureTemplatized() {\n // Templatizing (generating the instance constructor) needs to wait\n // until ready, since won't have its template content handed back to\n // it until then\n if (!this.__ctor) {\n // When `removeNestedTemplates` is true, the \"template\" is the element\n // itself, which has been given a `_templateInfo` property\n const thisAsTemplate = /** @type {!HTMLTemplateElement} */ (\n /** @type {!HTMLElement} */ (this));\n let template = this.template = thisAsTemplate._templateInfo ?\n thisAsTemplate :\n /** @type {!HTMLTemplateElement} */ (this.querySelector('template'));\n if (!template) {\n // Wait until childList changes and template should be there by then\n let observer = new MutationObserver(() => {\n if (this.querySelector('template')) {\n observer.disconnect();\n this.__render();\n } else {\n throw new Error('dom-repeat requires a <template> child');\n }\n });\n observer.observe(this, {childList: true});\n return false;\n }\n // Template instance props that should be excluded from forwarding\n let instanceProps = {};\n instanceProps[this.as] = true;\n instanceProps[this.indexAs] = true;\n instanceProps[this.itemsIndexAs] = true;\n this.__ctor = templatize(template, this, {\n mutableData: this.mutableData,\n parentModel: true,\n instanceProps: instanceProps,\n /**\n * @this {DomRepeat}\n * @param {string} prop Property to set\n * @param {*} value Value to set property to\n */\n forwardHostProp: function(prop, value) {\n let i$ = this.__instances;\n for (let i=0, inst; (i<i$.length) && (inst=i$[i]); i++) {\n inst.forwardHostProp(prop, value);\n }\n },\n /**\n * @this {DomRepeat}\n * @param {Object} inst Instance to notify\n * @param {string} prop Property to notify\n * @param {*} value Value to notify\n */\n notifyInstanceProp: function(inst, prop, value) {\n if (matches(this.as, prop)) {\n let idx = inst[this.itemsIndexAs];\n if (prop == this.as) {\n this.items[idx] = value;\n }\n let path = translate(this.as, `${JSCompiler_renameProperty('items', this)}.${idx}`, prop);\n this.notifyPath(path, value);\n }\n }\n });\n }\n return true;\n }\n\n __getMethodHost() {\n // Technically this should be the owner of the outermost template.\n // In shadow dom, this is always getRootNode().host, but we can\n // approximate this via cooperation with our dataHost always setting\n // `_methodHost` as long as there were bindings (or id's) on this\n // instance causing it to get a dataHost.\n return this.__dataHost._methodHost || this.__dataHost;\n }\n\n __functionFromPropertyValue(functionOrMethodName) {\n if (typeof functionOrMethodName === 'string') {\n let methodName = functionOrMethodName;\n let obj = this.__getMethodHost();\n return function() { return obj[methodName].apply(obj, arguments); };\n }\n\n return functionOrMethodName;\n }\n\n __sortChanged(sort) {\n this.__sortFn = this.__functionFromPropertyValue(sort);\n if (this.items) { this.__debounceRender(this.__render); }\n }\n\n __filterChanged(filter) {\n this.__filterFn = this.__functionFromPropertyValue(filter);\n if (this.items) { this.__debounceRender(this.__render); }\n }\n\n __computeFrameTime(rate) {\n return Math.ceil(1000/rate);\n }\n\n __observeChanged() {\n this.__observePaths = this.observe &&\n this.observe.replace('.*', '.').split(' ');\n }\n\n __handleObservedPaths(path) {\n // Handle cases where path changes should cause a re-sort/filter\n if (this.__sortFn || this.__filterFn) {\n if (!path) {\n // Always re-render if the item itself changed\n this.__debounceRender(this.__render, this.delay);\n } else if (this.__observePaths) {\n // Otherwise, re-render if the path changed matches an observed path\n let paths = this.__observePaths;\n for (let i=0; i<paths.length; i++) {\n if (path.indexOf(paths[i]) === 0) {\n this.__debounceRender(this.__render, this.delay);\n }\n }\n }\n }\n }\n\n __itemsChanged(change) {\n if (this.items && !Array.isArray(this.items)) {\n console.warn('dom-repeat expected array for `items`, found', this.items);\n }\n // If path was to an item (e.g. 'items.3' or 'items.3.foo'), forward the\n // path to that instance synchronously (returns false for non-item paths)\n if (!this.__handleItemPath(change.path, change.value)) {\n // Otherwise, the array was reset ('items') or spliced ('items.splices'),\n // so queue a render. Restart chunking when the items changed (for\n // backward compatibility), unless `reuseChunkedInstances` option is set\n if (change.path === 'items') {\n this.__itemsArrayChanged = true;\n }\n this.__debounceRender(this.__render);\n }\n }\n\n /**\n * @param {function(this:DomRepeat)} fn Function to debounce.\n * @param {number=} delay Delay in ms to debounce by.\n */\n __debounceRender(fn, delay = 0) {\n this.__renderDebouncer = Debouncer.debounce(\n this.__renderDebouncer\n , delay > 0 ? timeOut.after(delay) : microTask\n , fn.bind(this));\n enqueueDebouncer(this.__renderDebouncer);\n }\n\n /**\n * Forces the element to render its content. Normally rendering is\n * asynchronous to a provoking change. This is done for efficiency so\n * that multiple changes trigger only a single render. The render method\n * should be called if, for example, template rendering is required to\n * validate application state.\n * @return {void}\n */\n render() {\n // Queue this repeater, then flush all in order\n this.__debounceRender(this.__render);\n flush();\n }\n\n __render() {\n if (!this.__ensureTemplatized()) {\n // No template found yet\n return;\n }\n let items = this.items || [];\n // Sort and filter the items into a mapping array from instance->item\n const isntIdxToItemsIdx = this.__sortAndFilterItems(items);\n // If we're chunking, increase the limit if there are new instances to\n // create and schedule the next chunk\n const limit = this.__calculateLimit(isntIdxToItemsIdx.length);\n // Create, update, and/or remove instances\n this.__updateInstances(items, limit, isntIdxToItemsIdx);\n // If we're chunking, schedule a rAF task to measure/continue chunking. \n // Do this before any notifying events (renderedItemCount & dom-change)\n // since those could modify items and enqueue a new full render which will\n // pre-empt this measurement.\n if (this.initialCount &&\n (this.__shouldMeasureChunk || this.__shouldContinueChunking)) {\n cancelAnimationFrame(this.__chunkingId);\n this.__chunkingId = requestAnimationFrame(() => {\n this.__chunkingId = null;\n this.__continueChunking();\n });\n }\n // Set rendered item count\n this._setRenderedItemCount(this.__instances.length);\n // Notify users\n if (!suppressTemplateNotifications || this.notifyDomChange) {\n this.dispatchEvent(new CustomEvent('dom-change', {\n bubbles: true,\n composed: true\n }));\n }\n }\n\n __sortAndFilterItems(items) {\n // Generate array maping the instance index to the items array index\n let isntIdxToItemsIdx = new Array(items.length);\n for (let i=0; i<items.length; i++) {\n isntIdxToItemsIdx[i] = i;\n }\n // Apply user filter\n if (this.__filterFn) {\n isntIdxToItemsIdx = isntIdxToItemsIdx.filter((i, idx, array) =>\n this.__filterFn(items[i], idx, array));\n }\n // Apply user sort\n if (this.__sortFn) {\n isntIdxToItemsIdx.sort((a, b) => this.__sortFn(items[a], items[b]));\n }\n return isntIdxToItemsIdx;\n }\n\n __calculateLimit(filteredItemCount) {\n let limit = filteredItemCount;\n const currentCount = this.__instances.length;\n // When chunking, we increase the limit from the currently rendered count\n // by the chunk count that is re-calculated after each rAF (with special\n // cases for resetting the limit to initialCount after changing items)\n if (this.initialCount) {\n let newCount;\n if (!this.__chunkCount ||\n (this.__itemsArrayChanged && !this.reuseChunkedInstances)) {\n // Limit next render to the initial count\n limit = Math.min(filteredItemCount, this.initialCount);\n // Subtract off any existing instances to determine the number of\n // instances that will be created\n newCount = Math.max(limit - currentCount, 0);\n // Initialize the chunk size with how many items we're creating\n this.__chunkCount = newCount || 1;\n } else {\n // The number of new instances that will be created is based on the\n // existing instances, the new list size, and the chunk size\n newCount = Math.min(\n Math.max(filteredItemCount - currentCount, 0), \n this.__chunkCount);\n // Update the limit based on how many new items we're making, limited\n // buy the total size of the list\n limit = Math.min(currentCount + newCount, filteredItemCount);\n }\n // Record some state about chunking for use in `__continueChunking`\n this.__shouldMeasureChunk = newCount === this.__chunkCount;\n this.__shouldContinueChunking = limit < filteredItemCount;\n this.__renderStartTime = performance.now();\n }\n this.__itemsArrayChanged = false;\n return limit;\n }\n\n __continueChunking() {\n // Simple auto chunkSize throttling algorithm based on feedback loop:\n // measure actual time between frames and scale chunk count by ratio of\n // target/actual frame time. Only modify chunk size if our measurement\n // reflects the cost of a creating a full chunk's worth of instances; this\n // avoids scaling up the chunk size if we e.g. quickly re-rendered instances\n // in place\n if (this.__shouldMeasureChunk) {\n const renderTime = performance.now() - this.__renderStartTime;\n const ratio = this._targetFrameTime / renderTime;\n this.__chunkCount = Math.round(this.__chunkCount * ratio) || 1;\n }\n // Enqueue a new render if we haven't reached the full size of the list\n if (this.__shouldContinueChunking) {\n this.__debounceRender(this.__render);\n }\n }\n \n __updateInstances(items, limit, isntIdxToItemsIdx) {\n // items->inst map kept for item path forwarding\n const itemsIdxToInstIdx = this.__itemsIdxToInstIdx = {};\n let instIdx;\n // Generate instances and assign items\n for (instIdx=0; instIdx<limit; instIdx++) {\n let inst = this.__instances[instIdx];\n let itemIdx = isntIdxToItemsIdx[instIdx];\n let item = items[itemIdx];\n itemsIdxToInstIdx[itemIdx] = instIdx;\n if (inst) {\n inst._setPendingProperty(this.as, item);\n inst._setPendingProperty(this.indexAs, instIdx);\n inst._setPendingProperty(this.itemsIndexAs, itemIdx);\n inst._flushProperties();\n } else {\n this.__insertInstance(item, instIdx, itemIdx);\n }\n }\n // Remove any extra instances from previous state\n for (let i=this.__instances.length-1; i>=instIdx; i--) {\n this.__detachAndRemoveInstance(i);\n }\n }\n\n __detachInstance(idx) {\n let inst = this.__instances[idx];\n const wrappedRoot = wrap(inst.root);\n for (let i=0; i<inst.children.length; i++) {\n let el = inst.children[i];\n wrappedRoot.appendChild(el);\n }\n return inst;\n }\n\n __attachInstance(idx, parent) {\n let inst = this.__instances[idx];\n // Note, this is pre-wrapped as an optimization\n parent.insertBefore(inst.root, this);\n }\n\n __detachAndRemoveInstance(idx) {\n this.__detachInstance(idx);\n this.__instances.splice(idx, 1);\n }\n\n __stampInstance(item, instIdx, itemIdx) {\n let model = {};\n model[this.as] = item;\n model[this.indexAs] = instIdx;\n model[this.itemsIndexAs] = itemIdx;\n return new this.__ctor(model);\n }\n\n __insertInstance(item, instIdx, itemIdx) {\n const inst = this.__stampInstance(item, instIdx, itemIdx);\n let beforeRow = this.__instances[instIdx + 1];\n let beforeNode = beforeRow ? beforeRow.children[0] : this;\n wrap(wrap(this).parentNode).insertBefore(inst.root, beforeNode);\n this.__instances[instIdx] = inst;\n return inst;\n }\n\n // Implements extension point from Templatize mixin\n /**\n * Shows or hides the template instance top level child elements. For\n * text nodes, `textContent` is removed while \"hidden\" and replaced when\n * \"shown.\"\n * @param {boolean} hidden Set to true to hide the children;\n * set to false to show them.\n * @return {void}\n * @protected\n */\n _showHideChildren(hidden) {\n for (let i=0; i<this.__instances.length; i++) {\n this.__instances[i]._showHideChildren(hidden);\n }\n }\n\n // Called as a side effect of a host items.<key>.<path> path change,\n // responsible for notifying item.<path> changes to inst for key\n __handleItemPath(path, value) {\n let itemsPath = path.slice(6); // 'items.'.length == 6\n let dot = itemsPath.indexOf('.');\n let itemsIdx = dot < 0 ? itemsPath : itemsPath.substring(0, dot);\n // If path was index into array...\n if (itemsIdx == parseInt(itemsIdx, 10)) {\n let itemSubPath = dot < 0 ? '' : itemsPath.substring(dot+1);\n // If the path is observed, it will trigger a full refresh\n this.__handleObservedPaths(itemSubPath);\n // Note, even if a rull refresh is triggered, always do the path\n // notification because unless mutableData is used for dom-repeat\n // and all elements in the instance subtree, a full refresh may\n // not trigger the proper update.\n let instIdx = this.__itemsIdxToInstIdx[itemsIdx];\n let inst = this.__instances[instIdx];\n if (inst) {\n let itemPath = this.as + (itemSubPath ? '.' + itemSubPath : '');\n // This is effectively `notifyPath`, but avoids some of the overhead\n // of the public API\n inst._setPendingPropertyOrPath(itemPath, value, false, true);\n inst._flushProperties();\n }\n return true;\n }\n }\n\n /**\n * Returns the item associated with a given element stamped by\n * this `dom-repeat`.\n *\n * Note, to modify sub-properties of the item,\n * `modelForElement(el).set('item.<sub-prop>', value)`\n * should be used.\n *\n * @param {!HTMLElement} el Element for which to return the item.\n * @return {*} Item associated with the element.\n */\n itemForElement(el) {\n let instance = this.modelForElement(el);\n return instance && instance[this.as];\n }\n\n /**\n * Returns the inst index for a given element stamped by this `dom-repeat`.\n * If `sort` is provided, the index will reflect the sorted order (rather\n * than the original array order).\n *\n * @param {!HTMLElement} el Element for which to return the index.\n * @return {?number} Row index associated with the element (note this may\n * not correspond to the array index if a user `sort` is applied).\n */\n indexForElement(el) {\n let instance = this.modelForElement(el);\n return instance && instance[this.indexAs];\n }\n\n /**\n * Returns the template \"model\" associated with a given element, which\n * serves as the binding scope for the template instance the element is\n * contained in. A template model\n * should be used to manipulate data associated with this template instance.\n *\n * Example:\n *\n * let model = modelForElement(el);\n * if (model.index < 10) {\n * model.set('item.checked', true);\n * }\n *\n * @param {!HTMLElement} el Element for which to return a template model.\n * @return {TemplateInstanceBase} Model representing the binding scope for\n * the element.\n */\n modelForElement(el) {\n return modelForElement(this.template, el);\n }\n\n}\n\ncustomElements.define(DomRepeat.is, DomRepeat);\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*/\nimport { PolymerElement } from '../../polymer-element.js';\n\nimport { Debouncer } from '../utils/debounce.js';\nimport { enqueueDebouncer, flush } from '../utils/flush.js';\nimport { microTask } from '../utils/async.js';\nimport { root } from '../utils/path.js';\nimport { wrap } from '../utils/wrap.js';\nimport { hideElementsGlobally } from '../utils/hide-template-controls.js';\nimport { fastDomIf, strictTemplatePolicy, suppressTemplateNotifications } from '../utils/settings.js';\nimport { showHideChildren, templatize } from '../utils/templatize.js';\n\n/**\n * @customElement\n * @polymer\n * @extends PolymerElement\n * @summary Base class for dom-if element; subclassed into concrete\n * implementation.\n */\nclass DomIfBase extends PolymerElement {\n\n // Not needed to find template; can be removed once the analyzer\n // can find the tag name from customElements.define call\n static get is() { return 'dom-if'; }\n\n static get template() { return null; }\n\n static get properties() {\n\n return {\n\n /**\n * Fired whenever DOM is added or removed/hidden by this template (by\n * default, rendering occurs lazily). To force immediate rendering, call\n * `render`.\n *\n * @event dom-change\n */\n\n /**\n * A boolean indicating whether this template should stamp.\n */\n if: {\n type: Boolean,\n observer: '__debounceRender'\n },\n\n /**\n * When true, elements will be removed from DOM and discarded when `if`\n * becomes false and re-created and added back to the DOM when `if`\n * becomes true. By default, stamped elements will be hidden but left\n * in the DOM when `if` becomes false, which is generally results\n * in better performance.\n */\n restamp: {\n type: Boolean,\n observer: '__debounceRender'\n },\n\n /**\n * When the global `suppressTemplateNotifications` setting is used, setting\n * `notifyDomChange: true` will enable firing `dom-change` events on this\n * element.\n */\n notifyDomChange: {\n type: Boolean\n }\n };\n\n }\n\n constructor() {\n super();\n this.__renderDebouncer = null;\n this._lastIf = false;\n this.__hideTemplateChildren__ = false;\n /** @type {!HTMLTemplateElement|undefined} */\n this.__template;\n /** @type {!TemplateInfo|undefined} */\n this._templateInfo;\n }\n\n __debounceRender() {\n // Render is async for 2 reasons:\n // 1. To eliminate dom creation trashing if user code thrashes `if` in the\n // same turn. This was more common in 1.x where a compound computed\n // property could result in the result changing multiple times, but is\n // mitigated to a large extent by batched property processing in 2.x.\n // 2. To avoid double object propagation when a bag including values bound\n // to the `if` property as well as one or more hostProps could enqueue\n // the <dom-if> to flush before the <template>'s host property\n // forwarding. In that scenario creating an instance would result in\n // the host props being set once, and then the enqueued changes on the\n // template would set properties a second time, potentially causing an\n // object to be set to an instance more than once. Creating the\n // instance async from flushing data ensures this doesn't happen. If\n // we wanted a sync option in the future, simply having <dom-if> flush\n // (or clear) its template's pending host properties before creating\n // the instance would also avoid the problem.\n this.__renderDebouncer = Debouncer.debounce(\n this.__renderDebouncer\n , microTask\n , () => this.__render());\n enqueueDebouncer(this.__renderDebouncer);\n }\n\n /**\n * @override\n * @return {void}\n */\n disconnectedCallback() {\n super.disconnectedCallback();\n const parent = wrap(this).parentNode;\n if (!parent || (parent.nodeType == Node.DOCUMENT_FRAGMENT_NODE &&\n !wrap(parent).host)) {\n this.__teardownInstance();\n }\n }\n\n /**\n * @override\n * @return {void}\n */\n connectedCallback() {\n super.connectedCallback();\n if (!hideElementsGlobally()) {\n this.style.display = 'none';\n }\n if (this.if) {\n this.__debounceRender();\n }\n }\n\n /**\n * Ensures a template has been assigned to `this.__template`. If it has not\n * yet been, it querySelectors for it in its children and if it does not yet\n * exist (e.g. in parser-generated case), opens a mutation observer and\n * waits for it to appear (returns false if it has not yet been found,\n * otherwise true). In the `removeNestedTemplates` case, the \"template\" will\n * be the `dom-if` element itself.\n *\n * @return {boolean} True when a template has been found, false otherwise\n */\n __ensureTemplate() {\n if (!this.__template) {\n // When `removeNestedTemplates` is true, the \"template\" is the element\n // itself, which has been given a `_templateInfo` property\n const thisAsTemplate = /** @type {!HTMLTemplateElement} */ (\n /** @type {!HTMLElement} */ (this));\n let template = thisAsTemplate._templateInfo ?\n thisAsTemplate :\n /** @type {!HTMLTemplateElement} */\n (wrap(thisAsTemplate).querySelector('template'));\n if (!template) {\n // Wait until childList changes and template should be there by then\n let observer = new MutationObserver(() => {\n if (wrap(this).querySelector('template')) {\n observer.disconnect();\n this.__render();\n } else {\n throw new Error('dom-if requires a <template> child');\n }\n });\n observer.observe(this, {childList: true});\n return false;\n }\n this.__template = template;\n }\n return true;\n }\n\n /**\n * Ensures a an instance of the template has been created and inserted. This\n * method may return false if the template has not yet been found or if\n * there is no `parentNode` to insert the template into (in either case,\n * connection or the template-finding mutation observer firing will queue\n * another render, causing this method to be called again at a more\n * appropriate time).\n *\n * Subclasses should implement the following methods called here:\n * - `__hasInstance`\n * - `__createAndInsertInstance`\n * - `__getInstanceNodes`\n *\n * @return {boolean} True if the instance was created, false otherwise.\n */\n __ensureInstance() {\n let parentNode = wrap(this).parentNode;\n if (!this.__hasInstance()) {\n // Guard against element being detached while render was queued\n if (!parentNode) {\n return false;\n }\n // Find the template (when false, there was no template yet)\n if (!this.__ensureTemplate()) {\n return false;\n }\n this.__createAndInsertInstance(parentNode);\n } else {\n // Move instance children if necessary\n let children = this.__getInstanceNodes();\n if (children && children.length) {\n // Detect case where dom-if was re-attached in new position\n let lastChild = wrap(this).previousSibling;\n if (lastChild !== children[children.length-1]) {\n for (let i=0, n; (i<children.length) && (n=children[i]); i++) {\n wrap(parentNode).insertBefore(n, this);\n }\n }\n }\n }\n return true;\n }\n\n /**\n * Forces the element to render its content. Normally rendering is\n * asynchronous to a provoking change. This is done for efficiency so\n * that multiple changes trigger only a single render. The render method\n * should be called if, for example, template rendering is required to\n * validate application state.\n *\n * @return {void}\n */\n render() {\n flush();\n }\n\n /**\n * Performs the key rendering steps:\n * 1. Ensure a template instance has been stamped (when true)\n * 2. Remove the template instance (when false and restamp:true)\n * 3. Sync the hidden state of the instance nodes with the if/restamp state\n * 4. Fires the `dom-change` event when necessary\n *\n * @return {void}\n */\n __render() {\n if (this.if) {\n if (!this.__ensureInstance()) {\n // No template found yet\n return;\n }\n } else if (this.restamp) {\n this.__teardownInstance();\n }\n this._showHideChildren();\n if ((!suppressTemplateNotifications || this.notifyDomChange)\n && this.if != this._lastIf) {\n this.dispatchEvent(new CustomEvent('dom-change', {\n bubbles: true,\n composed: true\n }));\n this._lastIf = this.if;\n }\n }\n\n // Ideally these would be annotated as abstract methods in an abstract class,\n // but closure compiler is finnicky\n /* eslint-disable valid-jsdoc */\n /**\n * Abstract API to be implemented by subclass: Returns true if a template\n * instance has been created and inserted.\n *\n * @protected\n * @return {boolean} True when an instance has been created.\n */\n __hasInstance() { }\n\n /**\n * Abstract API to be implemented by subclass: Returns the child nodes stamped\n * from a template instance.\n *\n * @protected\n * @return {Array<Node>} Array of child nodes stamped from the template\n * instance.\n */\n __getInstanceNodes() { }\n\n /**\n * Abstract API to be implemented by subclass: Creates an instance of the\n * template and inserts it into the given parent node.\n *\n * @protected\n * @param {Node} parentNode The parent node to insert the instance into\n * @return {void}\n */\n __createAndInsertInstance(parentNode) { } // eslint-disable-line no-unused-vars\n\n /**\n * Abstract API to be implemented by subclass: Removes nodes created by an\n * instance of a template and any associated cleanup.\n *\n * @protected\n * @return {void}\n */\n __teardownInstance() { }\n\n /**\n * Abstract API to be implemented by subclass: Shows or hides any template\n * instance childNodes based on the `if` state of the element and its\n * `__hideTemplateChildren__` property.\n *\n * @protected\n * @return {void}\n */\n _showHideChildren() { }\n /* eslint-enable valid-jsdoc */\n}\n\n/**\n * The version of DomIf used when `fastDomIf` setting is in use, which is\n * optimized for first-render (but adds a tax to all subsequent property updates\n * on the host, whether they were used in a given `dom-if` or not).\n *\n * This implementation avoids use of `Templatizer`, which introduces a new scope\n * (a non-element PropertyEffects instance), which is not strictly necessary\n * since `dom-if` never introduces new properties to its scope (unlike\n * `dom-repeat`). Taking advantage of this fact, the `dom-if` reaches up to its\n * `__dataHost` and stamps the template directly from the host using the host's\n * runtime `_stampTemplate` API, which binds the property effects of the\n * template directly to the host. This both avoids the intermediary\n * `Templatizer` instance, but also avoids the need to bind host properties to\n * the `<template>` element and forward those into the template instance.\n *\n * In this version of `dom-if`, the `this.__instance` method is the\n * `DocumentFragment` returned from `_stampTemplate`, which also serves as the\n * handle for later removing it using the `_removeBoundDom` method.\n */\nclass DomIfFast extends DomIfBase {\n\n constructor() {\n super();\n this.__instance = null;\n this.__syncInfo = null;\n }\n\n /**\n * Implementation of abstract API needed by DomIfBase.\n *\n * @override\n * @return {boolean} True when an instance has been created.\n */\n __hasInstance() {\n return Boolean(this.__instance);\n }\n\n /**\n * Implementation of abstract API needed by DomIfBase.\n *\n * @override\n * @return {Array<Node>} Array of child nodes stamped from the template\n * instance.\n */\n __getInstanceNodes() {\n return this.__instance.templateInfo.childNodes;\n }\n\n /**\n * Implementation of abstract API needed by DomIfBase.\n *\n * Stamps the template by calling `_stampTemplate` on the `__dataHost` of this\n * element and then inserts the resulting nodes into the given `parentNode`.\n *\n * @override\n * @param {Node} parentNode The parent node to insert the instance into\n * @return {void}\n */\n __createAndInsertInstance(parentNode) {\n const host = this.__dataHost || this;\n if (strictTemplatePolicy) {\n if (!this.__dataHost) {\n throw new Error('strictTemplatePolicy: template owner not trusted');\n }\n }\n // Pre-bind and link the template into the effects system\n const templateInfo = host._bindTemplate(\n /** @type {!HTMLTemplateElement} */ (this.__template), true);\n // Install runEffects hook that prevents running property effects\n // (and any nested template effects) when the `if` is false\n templateInfo.runEffects = (runEffects, changedProps, hasPaths) => {\n let syncInfo = this.__syncInfo;\n if (this.if) {\n // Mix any props that changed while the `if` was false into `changedProps`\n if (syncInfo) {\n // If there were properties received while the `if` was false, it is\n // important to sync the hidden state with the element _first_, so that\n // new bindings to e.g. `textContent` do not get stomped on by\n // pre-hidden values if `_showHideChildren` were to be called later at\n // the next render. Clearing `__invalidProps` here ensures\n // `_showHideChildren`'s call to `__syncHostProperties` no-ops, so\n // that we don't call `runEffects` more often than necessary.\n this.__syncInfo = null;\n this._showHideChildren();\n changedProps = Object.assign(syncInfo.changedProps, changedProps);\n }\n runEffects(changedProps, hasPaths);\n } else {\n // Accumulate any values changed while `if` was false, along with the\n // runEffects method to sync them, so that we can replay them once `if`\n // becomes true\n if (this.__instance) {\n if (!syncInfo) {\n syncInfo = this.__syncInfo = { runEffects, changedProps: {} };\n }\n if (hasPaths) {\n // Store root object of any paths; this will ensure direct bindings\n // like [[obj.foo]] bindings run after a `set('obj.foo', v)`, but\n // note that path notifications like `set('obj.foo.bar', v)` will\n // not propagate. Since batched path notifications are not\n // supported, we cannot simply accumulate path notifications. This\n // is equivalent to the non-fastDomIf case, which stores root(p) in\n // __invalidProps.\n for (const p in changedProps) {\n const rootProp = root(p);\n syncInfo.changedProps[rootProp] = this.__dataHost[rootProp];\n }\n } else {\n Object.assign(syncInfo.changedProps, changedProps);\n }\n }\n }\n };\n // Stamp the template, and set its DocumentFragment to the \"instance\"\n this.__instance = host._stampTemplate(\n /** @type {!HTMLTemplateElement} */ (this.__template), templateInfo);\n wrap(parentNode).insertBefore(this.__instance, this);\n }\n\n /**\n * Run effects for any properties that changed while the `if` was false.\n *\n * @return {void}\n */\n __syncHostProperties() {\n const syncInfo = this.__syncInfo;\n if (syncInfo) {\n this.__syncInfo = null;\n syncInfo.runEffects(syncInfo.changedProps, false);\n }\n }\n\n /**\n * Implementation of abstract API needed by DomIfBase.\n *\n * Remove the instance and any nodes it created. Uses the `__dataHost`'s\n * runtime `_removeBoundDom` method.\n *\n * @override\n * @return {void}\n */\n __teardownInstance() {\n const host = this.__dataHost || this;\n if (this.__instance) {\n host._removeBoundDom(this.__instance);\n this.__instance = null;\n this.__syncInfo = null;\n }\n }\n\n /**\n * Implementation of abstract API needed by DomIfBase.\n *\n * Shows or hides the template instance top level child nodes. For\n * text nodes, `textContent` is removed while \"hidden\" and replaced when\n * \"shown.\"\n *\n * @override\n * @return {void}\n * @protected\n * @suppress {visibility}\n */\n _showHideChildren() {\n const hidden = this.__hideTemplateChildren__ || !this.if;\n if (this.__instance && Boolean(this.__instance.__hidden) !== hidden) {\n this.__instance.__hidden = hidden;\n showHideChildren(hidden, this.__instance.templateInfo.childNodes);\n }\n if (!hidden) {\n this.__syncHostProperties();\n }\n }\n}\n\n/**\n * The \"legacy\" implementation of `dom-if`, implemented using `Templatizer`.\n *\n * In this version, `this.__instance` is the `TemplateInstance` returned\n * from the templatized constructor.\n */\nclass DomIfLegacy extends DomIfBase {\n\n constructor() {\n super();\n this.__ctor = null;\n this.__instance = null;\n this.__invalidProps = null;\n }\n\n /**\n * Implementation of abstract API needed by DomIfBase.\n *\n * @override\n * @return {boolean} True when an instance has been created.\n */\n __hasInstance() {\n return Boolean(this.__instance);\n }\n\n /**\n * Implementation of abstract API needed by DomIfBase.\n *\n * @override\n * @return {Array<Node>} Array of child nodes stamped from the template\n * instance.\n */\n __getInstanceNodes() {\n return this.__instance.children;\n }\n\n /**\n * Implementation of abstract API needed by DomIfBase.\n *\n * Stamps the template by creating a new instance of the templatized\n * constructor (which is created lazily if it does not yet exist), and then\n * inserts its resulting `root` doc fragment into the given `parentNode`.\n *\n * @override\n * @param {Node} parentNode The parent node to insert the instance into\n * @return {void}\n */\n __createAndInsertInstance(parentNode) {\n // Ensure we have an instance constructor\n if (!this.__ctor) {\n this.__ctor = templatize(\n /** @type {!HTMLTemplateElement} */ (this.__template), this, {\n // dom-if templatizer instances require `mutable: true`, as\n // `__syncHostProperties` relies on that behavior to sync objects\n mutableData: true,\n /**\n * @param {string} prop Property to forward\n * @param {*} value Value of property\n * @this {DomIfLegacy}\n */\n forwardHostProp: function(prop, value) {\n if (this.__instance) {\n if (this.if) {\n this.__instance.forwardHostProp(prop, value);\n } else {\n // If we have an instance but are squelching host property\n // forwarding due to if being false, note the invalidated\n // properties so `__syncHostProperties` can sync them the next\n // time `if` becomes true\n this.__invalidProps =\n this.__invalidProps || Object.create(null);\n this.__invalidProps[root(prop)] = true;\n }\n }\n }\n });\n }\n // Create and insert the instance\n this.__instance = new this.__ctor();\n wrap(parentNode).insertBefore(this.__instance.root, this);\n }\n\n /**\n * Implementation of abstract API needed by DomIfBase.\n *\n * Removes the instance and any nodes it created.\n *\n * @override\n * @return {void}\n */\n __teardownInstance() {\n if (this.__instance) {\n let c$ = this.__instance.children;\n if (c$ && c$.length) {\n // use first child parent, for case when dom-if may have been detached\n let parent = wrap(c$[0]).parentNode;\n // Instance children may be disconnected from parents when dom-if\n // detaches if a tree was innerHTML'ed\n if (parent) {\n parent = wrap(parent);\n for (let i=0, n; (i<c$.length) && (n=c$[i]); i++) {\n parent.removeChild(n);\n }\n }\n }\n this.__invalidProps = null;\n this.__instance = null;\n }\n }\n\n /**\n * Forwards any properties that changed while the `if` was false into the\n * template instance and flushes it.\n *\n * @return {void}\n */\n __syncHostProperties() {\n let props = this.__invalidProps;\n if (props) {\n this.__invalidProps = null;\n for (let prop in props) {\n this.__instance._setPendingProperty(prop, this.__dataHost[prop]);\n }\n this.__instance._flushProperties();\n }\n }\n\n /**\n * Implementation of abstract API needed by DomIfBase.\n *\n * Shows or hides the template instance top level child elements. For\n * text nodes, `textContent` is removed while \"hidden\" and replaced when\n * \"shown.\"\n *\n * @override\n * @protected\n * @return {void}\n * @suppress {visibility}\n */\n _showHideChildren() {\n const hidden = this.__hideTemplateChildren__ || !this.if;\n if (this.__instance && Boolean(this.__instance.__hidden) !== hidden) {\n this.__instance.__hidden = hidden;\n this.__instance._showHideChildren(hidden);\n }\n if (!hidden) {\n this.__syncHostProperties();\n }\n }\n}\n\n/**\n * The `<dom-if>` element will stamp a light-dom `<template>` child when\n * the `if` property becomes truthy, and the template can use Polymer\n * data-binding and declarative event features when used in the context of\n * a Polymer element's template.\n *\n * When `if` becomes falsy, the stamped content is hidden but not\n * removed from dom. When `if` subsequently becomes truthy again, the content\n * is simply re-shown. This approach is used due to its favorable performance\n * characteristics: the expense of creating template content is paid only\n * once and lazily.\n *\n * Set the `restamp` property to true to force the stamped content to be\n * created / destroyed when the `if` condition changes.\n *\n * @customElement\n * @polymer\n * @extends DomIfBase\n * @constructor\n * @summary Custom element that conditionally stamps and hides or removes\n * template content based on a boolean flag.\n */\nexport const DomIf = fastDomIf ? DomIfFast : DomIfLegacy;\n\ncustomElements.define(DomIf.is, DomIf);\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*/\nimport { PolymerElement } from '../../polymer-element.js';\n\nimport { dedupingMixin } from '../utils/mixin.js';\nimport { calculateSplices } from '../utils/array-splice.js';\nimport { ElementMixin } from '../mixins/element-mixin.js';\n\n/**\n * Element mixin for recording dynamic associations between item paths in a\n * master `items` array and a `selected` array such that path changes to the\n * master array (at the host) element or elsewhere via data-binding) are\n * correctly propagated to items in the selected array and vice-versa.\n *\n * The `items` property accepts an array of user data, and via the\n * `select(item)` and `deselect(item)` API, updates the `selected` property\n * which may be bound to other parts of the application, and any changes to\n * sub-fields of `selected` item(s) will be kept in sync with items in the\n * `items` array. When `multi` is false, `selected` is a property\n * representing the last selected item. When `multi` is true, `selected`\n * is an array of multiply selected items.\n *\n * @polymer\n * @mixinFunction\n * @appliesMixin ElementMixin\n * @summary Element mixin for recording dynamic associations between item paths in a\n * master `items` array and a `selected` array\n */\nlet ArraySelectorMixin = dedupingMixin(superClass => {\n\n /**\n * @constructor\n * @implements {Polymer_ElementMixin}\n * @private\n */\n let elementBase = ElementMixin(superClass);\n\n /**\n * @polymer\n * @mixinClass\n * @implements {Polymer_ArraySelectorMixin}\n * @unrestricted\n */\n class ArraySelectorMixin extends elementBase {\n\n static get properties() {\n return {\n\n /**\n * An array containing items from which selection will be made.\n */\n items: {\n type: Array,\n },\n\n /**\n * When `true`, multiple items may be selected at once (in this case,\n * `selected` is an array of currently selected items). When `false`,\n * only one item may be selected at a time.\n */\n multi: {\n type: Boolean,\n value: false,\n },\n\n /**\n * When `multi` is true, this is an array that contains any selected.\n * When `multi` is false, this is the currently selected item, or `null`\n * if no item is selected.\n * @type {?Object|?Array<!Object>}\n */\n selected: {type: Object, notify: true},\n\n /**\n * When `multi` is false, this is the currently selected item, or `null`\n * if no item is selected.\n * @type {?Object}\n */\n selectedItem: {type: Object, notify: true},\n\n /**\n * When `true`, calling `select` on an item that is already selected\n * will deselect the item.\n */\n toggle: {type: Boolean, value: false}\n\n };\n }\n\n static get observers() {\n return ['__updateSelection(multi, items.*)'];\n }\n\n constructor() {\n super();\n this.__lastItems = null;\n this.__lastMulti = null;\n this.__selectedMap = null;\n }\n\n __updateSelection(multi, itemsInfo) {\n let path = itemsInfo.path;\n if (path == JSCompiler_renameProperty('items', this)) {\n // Case 1 - items array changed, so diff against previous array and\n // deselect any removed items and adjust selected indices\n let newItems = itemsInfo.base || [];\n let lastItems = this.__lastItems;\n let lastMulti = this.__lastMulti;\n if (multi !== lastMulti) {\n this.clearSelection();\n }\n if (lastItems) {\n let splices = calculateSplices(newItems, lastItems);\n this.__applySplices(splices);\n }\n this.__lastItems = newItems;\n this.__lastMulti = multi;\n } else if (itemsInfo.path == `${JSCompiler_renameProperty('items', this)}.splices`) {\n // Case 2 - got specific splice information describing the array mutation:\n // deselect any removed items and adjust selected indices\n this.__applySplices(itemsInfo.value.indexSplices);\n } else {\n // Case 3 - an array element was changed, so deselect the previous\n // item for that index if it was previously selected\n let part = path.slice(`${JSCompiler_renameProperty('items', this)}.`.length);\n let idx = parseInt(part, 10);\n if ((part.indexOf('.') < 0) && part == idx) {\n this.__deselectChangedIdx(idx);\n }\n }\n }\n\n __applySplices(splices) {\n let selected = this.__selectedMap;\n // Adjust selected indices and mark removals\n for (let i=0; i<splices.length; i++) {\n let s = splices[i];\n selected.forEach((idx, item) => {\n if (idx < s.index) {\n // no change\n } else if (idx >= s.index + s.removed.length) {\n // adjust index\n selected.set(item, idx + s.addedCount - s.removed.length);\n } else {\n // remove index\n selected.set(item, -1);\n }\n });\n for (let j=0; j<s.addedCount; j++) {\n let idx = s.index + j;\n if (selected.has(this.items[idx])) {\n selected.set(this.items[idx], idx);\n }\n }\n }\n // Update linked paths\n this.__updateLinks();\n // Remove selected items that were removed from the items array\n let sidx = 0;\n selected.forEach((idx, item) => {\n if (idx < 0) {\n if (this.multi) {\n this.splice(JSCompiler_renameProperty('selected', this), sidx, 1);\n } else {\n this.selected = this.selectedItem = null;\n }\n selected.delete(item);\n } else {\n sidx++;\n }\n });\n }\n\n __updateLinks() {\n this.__dataLinkedPaths = {};\n if (this.multi) {\n let sidx = 0;\n this.__selectedMap.forEach(idx => {\n if (idx >= 0) {\n this.linkPaths(\n `${JSCompiler_renameProperty('items', this)}.${idx}`,\n `${JSCompiler_renameProperty('selected', this)}.${sidx++}`);\n }\n });\n } else {\n this.__selectedMap.forEach(idx => {\n this.linkPaths(\n JSCompiler_renameProperty('selected', this),\n `${JSCompiler_renameProperty('items', this)}.${idx}`);\n this.linkPaths(\n JSCompiler_renameProperty('selectedItem', this),\n `${JSCompiler_renameProperty('items', this)}.${idx}`);\n });\n }\n }\n\n /**\n * Clears the selection state.\n * @override\n * @return {void}\n */\n clearSelection() {\n // Unbind previous selection\n this.__dataLinkedPaths = {};\n // The selected map stores 3 pieces of information:\n // key: items array object\n // value: items array index\n // order: selected array index\n this.__selectedMap = new Map();\n // Initialize selection\n this.selected = this.multi ? [] : null;\n this.selectedItem = null;\n }\n\n /**\n * Returns whether the item is currently selected.\n *\n * @override\n * @param {*} item Item from `items` array to test\n * @return {boolean} Whether the item is selected\n */\n isSelected(item) {\n return this.__selectedMap.has(item);\n }\n\n /**\n * Returns whether the item is currently selected.\n *\n * @override\n * @param {number} idx Index from `items` array to test\n * @return {boolean} Whether the item is selected\n */\n isIndexSelected(idx) {\n return this.isSelected(this.items[idx]);\n }\n\n __deselectChangedIdx(idx) {\n let sidx = this.__selectedIndexForItemIndex(idx);\n if (sidx >= 0) {\n let i = 0;\n this.__selectedMap.forEach((idx, item) => {\n if (sidx == i++) {\n this.deselect(item);\n }\n });\n }\n }\n\n __selectedIndexForItemIndex(idx) {\n let selected = this.__dataLinkedPaths[`${JSCompiler_renameProperty('items', this)}.${idx}`];\n if (selected) {\n return parseInt(selected.slice(`${JSCompiler_renameProperty('selected', this)}.`.length), 10);\n }\n }\n\n /**\n * Deselects the given item if it is already selected.\n *\n * @override\n * @param {*} item Item from `items` array to deselect\n * @return {void}\n */\n deselect(item) {\n let idx = this.__selectedMap.get(item);\n if (idx >= 0) {\n this.__selectedMap.delete(item);\n let sidx;\n if (this.multi) {\n sidx = this.__selectedIndexForItemIndex(idx);\n }\n this.__updateLinks();\n if (this.multi) {\n this.splice(JSCompiler_renameProperty('selected', this), sidx, 1);\n } else {\n this.selected = this.selectedItem = null;\n }\n }\n }\n\n /**\n * Deselects the given index if it is already selected.\n *\n * @override\n * @param {number} idx Index from `items` array to deselect\n * @return {void}\n */\n deselectIndex(idx) {\n this.deselect(this.items[idx]);\n }\n\n /**\n * Selects the given item. When `toggle` is true, this will automatically\n * deselect the item if already selected.\n *\n * @override\n * @param {*} item Item from `items` array to select\n * @return {void}\n */\n select(item) {\n this.selectIndex(this.items.indexOf(item));\n }\n\n /**\n * Selects the given index. When `toggle` is true, this will automatically\n * deselect the item if already selected.\n *\n * @override\n * @param {number} idx Index from `items` array to select\n * @return {void}\n */\n selectIndex(idx) {\n let item = this.items[idx];\n if (!this.isSelected(item)) {\n if (!this.multi) {\n this.__selectedMap.clear();\n }\n this.__selectedMap.set(item, idx);\n this.__updateLinks();\n if (this.multi) {\n this.push(JSCompiler_renameProperty('selected', this), item);\n } else {\n this.selected = this.selectedItem = item;\n }\n } else if (this.toggle) {\n this.deselectIndex(idx);\n }\n }\n\n }\n\n return ArraySelectorMixin;\n\n});\n\n// export mixin\nexport { ArraySelectorMixin };\n\n/**\n * @constructor\n * @extends {PolymerElement}\n * @implements {Polymer_ArraySelectorMixin}\n * @private\n */\nlet baseArraySelector = ArraySelectorMixin(PolymerElement);\n\n/**\n * Element implementing the `ArraySelector` mixin, which records\n * dynamic associations between item paths in a master `items` array and a\n * `selected` array such that path changes to the master array (at the host)\n * element or elsewhere via data-binding) are correctly propagated to items\n * in the selected array and vice-versa.\n *\n * The `items` property accepts an array of user data, and via the\n * `select(item)` and `deselect(item)` API, updates the `selected` property\n * which may be bound to other parts of the application, and any changes to\n * sub-fields of `selected` item(s) will be kept in sync with items in the\n * `items` array. When `multi` is false, `selected` is a property\n * representing the last selected item. When `multi` is true, `selected`\n * is an array of multiply selected items.\n *\n * Example:\n *\n * ```js\n * import {PolymerElement} from '@polymer/polymer';\n * import '@polymer/polymer/lib/elements/array-selector.js';\n *\n * class EmployeeList extends PolymerElement {\n * static get _template() {\n * return html`\n * <div> Employee list: </div>\n * <dom-repeat id=\"employeeList\" items=\"{{employees}}\">\n * <template>\n * <div>First name: <span>{{item.first}}</span></div>\n * <div>Last name: <span>{{item.last}}</span></div>\n * <button on-click=\"toggleSelection\">Select</button>\n * </template>\n * </dom-repeat>\n *\n * <array-selector id=\"selector\"\n * items=\"{{employees}}\"\n * selected=\"{{selected}}\"\n * multi toggle></array-selector>\n *\n * <div> Selected employees: </div>\n * <dom-repeat items=\"{{selected}}\">\n * <template>\n * <div>First name: <span>{{item.first}}</span></div>\n * <div>Last name: <span>{{item.last}}</span></div>\n * </template>\n * </dom-repeat>`;\n * }\n * static get is() { return 'employee-list'; }\n * static get properties() {\n * return {\n * employees: {\n * value() {\n * return [\n * {first: 'Bob', last: 'Smith'},\n * {first: 'Sally', last: 'Johnson'},\n * ...\n * ];\n * }\n * }\n * };\n * }\n * toggleSelection(e) {\n * const item = this.$.employeeList.itemForElement(e.target);\n * this.$.selector.select(item);\n * }\n * }\n * ```\n *\n * @polymer\n * @customElement\n * @extends {baseArraySelector}\n * @appliesMixin ArraySelectorMixin\n * @summary Custom element that links paths between an input `items` array and\n * an output `selected` item or array based on calls to its selection API.\n */\nclass ArraySelector extends baseArraySelector {\n // Not needed to find template; can be removed once the analyzer\n // can find the tag name from customElements.define call\n static get is() { return 'array-selector'; }\n static get template() { return null; }\n}\ncustomElements.define(ArraySelector.is, ArraySelector);\nexport { ArraySelector };\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 CustomStyleInterface from '../src/custom-style-interface.js';\nimport {getComputedStyleValue, updateNativeProperties} from '../src/common-utils.js';\nimport {nativeCssVariables, nativeShadow, cssBuild, disableRuntime} from '../src/style-settings.js';\n\nconst customStyleInterface = new CustomStyleInterface();\n\nif (!window.ShadyCSS) {\n window.ShadyCSS = {\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} elementExtends\n */\n prepareTemplate(template, elementName, elementExtends) {}, // eslint-disable-line no-unused-vars\n\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n */\n prepareTemplateDom(template, elementName) {}, // eslint-disable-line no-unused-vars\n\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} elementExtends\n */\n prepareTemplateStyles(template, elementName, elementExtends) {}, // eslint-disable-line no-unused-vars\n\n /**\n * @param {Element} element\n * @param {Object=} properties\n */\n styleSubtree(element, properties) {\n customStyleInterface.processStyles();\n updateNativeProperties(element, properties);\n },\n\n /**\n * @param {Element} element\n */\n styleElement(element) { // eslint-disable-line no-unused-vars\n customStyleInterface.processStyles();\n },\n\n /**\n * @param {Object=} properties\n */\n styleDocument(properties) {\n customStyleInterface.processStyles();\n updateNativeProperties(document.body, properties);\n },\n\n /**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\n getComputedStyleValue(element, property) {\n return getComputedStyleValue(element, property);\n },\n\n flushCustomStyles() {},\n nativeCss: nativeCssVariables,\n nativeShadow: nativeShadow,\n cssBuild: cssBuild,\n disableRuntime: disableRuntime,\n }\n}\n\nwindow.ShadyCSS.CustomStyleInterface = customStyleInterface;", "/**\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*/\nimport '@webcomponents/shadycss/entrypoints/custom-style-interface.js';\n\nimport { cssFromModules } from '../utils/style-gather.js';\n\nconst attr = 'include';\n\nconst CustomStyleInterface = window.ShadyCSS.CustomStyleInterface;\n\n/**\n * Custom element for defining styles in the main document that can take\n * advantage of [shady DOM](https://github.com/webcomponents/shadycss) shims\n * for style encapsulation, custom properties, and custom mixins.\n *\n * - Document styles defined in a `<custom-style>` are shimmed to ensure they\n * do not leak into local DOM when running on browsers without native\n * Shadow DOM.\n * - Custom properties can be defined in a `<custom-style>`. Use the `html` selector\n * to define custom properties that apply to all custom elements.\n * - Custom mixins can be defined in a `<custom-style>`, if you import the optional\n * [apply shim](https://github.com/webcomponents/shadycss#about-applyshim)\n * (`shadycss/apply-shim.html`).\n *\n * To use:\n *\n * - Import `custom-style.html`.\n * - Place a `<custom-style>` element in the main document, wrapping an inline `<style>` tag that\n * contains the CSS rules you want to shim.\n *\n * For example:\n *\n * ```html\n * <!-- import apply shim--only required if using mixins -->\n * <link rel=\"import\" href=\"bower_components/shadycss/apply-shim.html\">\n * <!-- import custom-style element -->\n * <link rel=\"import\" href=\"bower_components/polymer/lib/elements/custom-style.html\">\n *\n * <custom-style>\n * <style>\n * html {\n * --custom-color: blue;\n * --custom-mixin: {\n * font-weight: bold;\n * color: red;\n * };\n * }\n * </style>\n * </custom-style>\n * ```\n *\n * @customElement\n * @extends HTMLElement\n * @summary Custom element for defining styles in the main document that can\n * take advantage of Polymer's style scoping and custom properties shims.\n */\nexport class CustomStyle extends HTMLElement {\n constructor() {\n super();\n this._style = null;\n CustomStyleInterface.addCustomStyle(this);\n }\n /**\n * Returns the light-DOM `<style>` child this element wraps. Upon first\n * call any style modules referenced via the `include` attribute will be\n * concatenated to this element's `<style>`.\n *\n * @export\n * @return {HTMLStyleElement} This element's light-DOM `<style>`\n */\n getStyle() {\n if (this._style) {\n return this._style;\n }\n const style = /** @type {HTMLStyleElement} */(this.querySelector('style'));\n if (!style) {\n return null;\n }\n this._style = style;\n const include = style.getAttribute(attr);\n if (include) {\n style.removeAttribute(attr);\n /** @suppress {deprecated} */\n style.textContent = cssFromModules(include) + style.textContent;\n }\n /*\n HTML Imports styling the main document are deprecated in Chrome\n https://crbug.com/523952\n\n If this element is not in the main document, then it must be in an HTML Import document.\n In that case, move the custom style to the main document.\n\n The ordering of `<custom-style>` should stay the same as when loaded by HTML Imports, but there may be odd\n cases of ordering w.r.t the main document styles.\n */\n if (this.ownerDocument !== window.document) {\n window.document.head.appendChild(this);\n }\n return this._style;\n }\n}\n\nwindow.customElements.define('custom-style', CustomStyle);\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*/\nimport { MutableData } from '../mixins/mutable-data.js';\n\nlet mutablePropertyChange;\n/** @suppress {missingProperties} */\n(() => {\n mutablePropertyChange = MutableData._mutablePropertyChange;\n})();\n\n/**\n * Legacy element behavior to skip strict dirty-checking for objects and arrays,\n * (always consider them to be \"dirty\") for use on legacy API Polymer elements.\n *\n * By default, `Polymer.PropertyEffects` performs strict dirty checking on\n * objects, which means that any deep modifications to an object or array will\n * not be propagated unless \"immutable\" data patterns are used (i.e. all object\n * references from the root to the mutation were changed).\n *\n * Polymer also provides a proprietary data mutation and path notification API\n * (e.g. `notifyPath`, `set`, and array mutation API's) that allow efficient\n * mutation and notification of deep changes in an object graph to all elements\n * bound to the same object graph.\n *\n * In cases where neither immutable patterns nor the data mutation API can be\n * used, applying this mixin will cause Polymer to skip dirty checking for\n * objects and arrays (always consider them to be \"dirty\"). This allows a\n * user to make a deep modification to a bound object graph, and then either\n * simply re-set the object (e.g. `this.items = this.items`) or call `notifyPath`\n * (e.g. `this.notifyPath('items')`) to update the tree. Note that all\n * elements that wish to be updated based on deep mutations must apply this\n * mixin or otherwise skip strict dirty checking for objects/arrays.\n * Specifically, any elements in the binding tree between the source of a\n * mutation and the consumption of it must apply this behavior or enable the\n * `Polymer.OptionalMutableDataBehavior`.\n *\n * In order to make the dirty check strategy configurable, see\n * `Polymer.OptionalMutableDataBehavior`.\n *\n * Note, the performance characteristics of propagating large object graphs\n * will be worse as opposed to using strict dirty checking with immutable\n * patterns or Polymer's path notification API.\n *\n * @polymerBehavior\n * @summary Behavior to skip strict dirty-checking for objects and\n * arrays\n */\nexport const MutableDataBehavior = {\n\n /**\n * Overrides `Polymer.PropertyEffects` to provide option for skipping\n * strict equality checking for Objects and Arrays.\n *\n * This method pulls the value to dirty check against from the `__dataTemp`\n * cache (rather than the normal `__data` cache) for Objects. Since the temp\n * cache is cleared at the end of a turn, this implementation allows\n * side-effects of deep object changes to be processed by re-setting the\n * same object (using the temp cache as an in-turn backstop to prevent\n * cycles due to 2-way notification).\n *\n * @param {string} property Property name\n * @param {*} value New property value\n * @param {*} old Previous property value\n * @return {boolean} Whether the property should be considered a change\n * @protected\n * @override\n */\n _shouldPropertyChange(property, value, old) {\n return mutablePropertyChange(this, property, value, old, true);\n }\n};\n\n/**\n * Legacy element behavior to add the optional ability to skip strict\n * dirty-checking for objects and arrays (always consider them to be\n * \"dirty\") by setting a `mutable-data` attribute on an element instance.\n *\n * By default, `Polymer.PropertyEffects` performs strict dirty checking on\n * objects, which means that any deep modifications to an object or array will\n * not be propagated unless \"immutable\" data patterns are used (i.e. all object\n * references from the root to the mutation were changed).\n *\n * Polymer also provides a proprietary data mutation and path notification API\n * (e.g. `notifyPath`, `set`, and array mutation API's) that allow efficient\n * mutation and notification of deep changes in an object graph to all elements\n * bound to the same object graph.\n *\n * In cases where neither immutable patterns nor the data mutation API can be\n * used, applying this mixin will allow Polymer to skip dirty checking for\n * objects and arrays (always consider them to be \"dirty\"). This allows a\n * user to make a deep modification to a bound object graph, and then either\n * simply re-set the object (e.g. `this.items = this.items`) or call `notifyPath`\n * (e.g. `this.notifyPath('items')`) to update the tree. Note that all\n * elements that wish to be updated based on deep mutations must apply this\n * mixin or otherwise skip strict dirty checking for objects/arrays.\n * Specifically, any elements in the binding tree between the source of a\n * mutation and the consumption of it must enable this behavior or apply the\n * `Polymer.OptionalMutableDataBehavior`.\n *\n * While this behavior adds the ability to forgo Object/Array dirty checking,\n * the `mutableData` flag defaults to false and must be set on the instance.\n *\n * Note, the performance characteristics of propagating large object graphs\n * will be worse by relying on `mutableData: true` as opposed to using\n * strict dirty checking with immutable patterns or Polymer's path notification\n * API.\n *\n * @polymerBehavior\n * @summary Behavior to optionally skip strict dirty-checking for objects and\n * arrays\n */\nexport const OptionalMutableDataBehavior = {\n\n properties: {\n /**\n * Instance-level flag for configuring the dirty-checking strategy\n * for this element. When true, Objects and Arrays will skip dirty\n * checking, otherwise strict equality checking will be used.\n */\n mutableData: Boolean\n },\n\n /**\n * Overrides `Polymer.PropertyEffects` to skip strict equality checking\n * for Objects and Arrays.\n *\n * Pulls the value to dirty check against from the `__dataTemp` cache\n * (rather than the normal `__data` cache) for Objects. Since the temp\n * cache is cleared at the end of a turn, this implementation allows\n * side-effects of deep object changes to be processed by re-setting the\n * same object (using the temp cache as an in-turn backstop to prevent\n * cycles due to 2-way notification).\n *\n * @param {string} property Property name\n * @param {*} value New property value\n * @param {*} old Previous property value\n * @return {boolean} Whether the property should be considered a change\n * @protected\n * @override\n */\n _shouldPropertyChange(property, value, old) {\n return mutablePropertyChange(this, property, value, old, this.mutableData);\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\nimport { LegacyElementMixin } from './lib/legacy/legacy-element-mixin.js';\nexport { Polymer } from './lib/legacy/polymer-fn.js';\n/* template elements */\nimport './lib/legacy/templatizer-behavior.js';\nimport './lib/elements/dom-bind.js';\nimport './lib/elements/dom-repeat.js';\nimport './lib/elements/dom-if.js';\nimport './lib/elements/array-selector.js';\n/* custom-style */\nimport './lib/elements/custom-style.js';\n/* bc behaviors */\nimport './lib/legacy/mutable-data-behavior.js';\n/* import html-tag to export html */\nexport { html } from './lib/utils/html-tag.js';\n\n// bc\nexport const Base = LegacyElementMixin(HTMLElement).prototype;\n", "/**\n@license\nCopyright (c) 2015 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nimport '@polymer/polymer/polymer-legacy.js';\n\nimport {dom} from '@polymer/polymer/lib/legacy/polymer.dom.js';\nimport {useShadow} from '@polymer/polymer/lib/utils/settings.js';\n\n// Contains all connected resizables that do not have a parent.\nvar ORPHANS = new Set();\n\n/**\n * `IronResizableBehavior` is a behavior that can be used in Polymer elements to\n * coordinate the flow of resize events between \"resizers\" (elements that\n *control the size or hidden state of their children) and \"resizables\" (elements\n *that need to be notified when they are resized or un-hidden by their parents\n *in order to take action on their new measurements).\n *\n * Elements that perform measurement should add the `IronResizableBehavior`\n *behavior to their element definition and listen for the `iron-resize` event on\n *themselves. This event will be fired when they become showing after having\n *been hidden, when they are resized explicitly by another resizable, or when\n *the window has been resized.\n *\n * Note, the `iron-resize` event is non-bubbling.\n *\n * @polymerBehavior\n * @demo demo/index.html\n **/\nexport const IronResizableBehavior = {\n properties: {\n /**\n * The closest ancestor element that implements `IronResizableBehavior`.\n */\n _parentResizable: {\n type: Object,\n observer: '_parentResizableChanged',\n },\n\n /**\n * True if this element is currently notifying its descendant elements of\n * resize.\n */\n _notifyingDescendant: {\n type: Boolean,\n value: false,\n }\n },\n\n listeners: {\n 'iron-request-resize-notifications': '_onIronRequestResizeNotifications'\n },\n\n created: function() {\n // We don't really need property effects on these, and also we want them\n // to be created before the `_parentResizable` observer fires:\n this._interestedResizables = [];\n this._boundNotifyResize = this.notifyResize.bind(this);\n this._boundOnDescendantIronResize = this._onDescendantIronResize.bind(this);\n },\n\n attached: function() {\n this._requestResizeNotifications();\n },\n\n detached: function() {\n if (this._parentResizable) {\n this._parentResizable.stopResizeNotificationsFor(this);\n } else {\n ORPHANS.delete(this);\n window.removeEventListener('resize', this._boundNotifyResize);\n }\n\n this._parentResizable = null;\n },\n\n /**\n * Can be called to manually notify a resizable and its descendant\n * resizables of a resize change.\n */\n notifyResize: function() {\n if (!this.isAttached) {\n return;\n }\n\n this._interestedResizables.forEach(function(resizable) {\n if (this.resizerShouldNotify(resizable)) {\n this._notifyDescendant(resizable);\n }\n }, this);\n\n this._fireResize();\n },\n\n /**\n * Used to assign the closest resizable ancestor to this resizable\n * if the ancestor detects a request for notifications.\n */\n assignParentResizable: function(parentResizable) {\n if (this._parentResizable) {\n this._parentResizable.stopResizeNotificationsFor(this);\n }\n\n this._parentResizable = parentResizable;\n\n if (parentResizable &&\n parentResizable._interestedResizables.indexOf(this) === -1) {\n parentResizable._interestedResizables.push(this);\n parentResizable._subscribeIronResize(this);\n }\n },\n\n /**\n * Used to remove a resizable descendant from the list of descendants\n * that should be notified of a resize change.\n */\n stopResizeNotificationsFor: function(target) {\n var index = this._interestedResizables.indexOf(target);\n\n if (index > -1) {\n this._interestedResizables.splice(index, 1);\n this._unsubscribeIronResize(target);\n }\n },\n\n /**\n * Subscribe this element to listen to iron-resize events on the given target.\n *\n * Preferred over target.listen because the property renamer does not\n * understand to rename when the target is not specifically \"this\"\n *\n * @param {!HTMLElement} target Element to listen to for iron-resize events.\n */\n _subscribeIronResize: function(target) {\n target.addEventListener('iron-resize', this._boundOnDescendantIronResize);\n },\n\n /**\n * Unsubscribe this element from listening to to iron-resize events on the\n * given target.\n *\n * Preferred over target.unlisten because the property renamer does not\n * understand to rename when the target is not specifically \"this\"\n *\n * @param {!HTMLElement} target Element to listen to for iron-resize events.\n */\n _unsubscribeIronResize: function(target) {\n target.removeEventListener(\n 'iron-resize', this._boundOnDescendantIronResize);\n },\n\n /**\n * This method can be overridden to filter nested elements that should or\n * should not be notified by the current element. Return true if an element\n * should be notified, or false if it should not be notified.\n *\n * @param {HTMLElement} element A candidate descendant element that\n * implements `IronResizableBehavior`.\n * @return {boolean} True if the `element` should be notified of resize.\n */\n resizerShouldNotify: function(element) {\n return true;\n },\n\n _onDescendantIronResize: function(event) {\n if (this._notifyingDescendant) {\n event.stopPropagation();\n return;\n }\n\n // no need to use this during shadow dom because of event retargeting\n if (!useShadow) {\n this._fireResize();\n }\n },\n\n _fireResize: function() {\n this.fire('iron-resize', null, {node: this, bubbles: false});\n },\n\n _onIronRequestResizeNotifications: function(event) {\n var target = /** @type {!EventTarget} */ (dom(event).rootTarget);\n if (target === this) {\n return;\n }\n\n target.assignParentResizable(this);\n this._notifyDescendant(target);\n\n event.stopPropagation();\n },\n\n _parentResizableChanged: function(parentResizable) {\n if (parentResizable) {\n window.removeEventListener('resize', this._boundNotifyResize);\n }\n },\n\n _notifyDescendant: function(descendant) {\n // NOTE(cdata): In IE10, attached is fired on children first, so it's\n // important not to notify them if the parent is not attached yet (or\n // else they will get redundantly notified when the parent attaches).\n if (!this.isAttached) {\n return;\n }\n\n this._notifyingDescendant = true;\n descendant.notifyResize();\n this._notifyingDescendant = false;\n },\n\n _requestResizeNotifications: function() {\n if (!this.isAttached) {\n return;\n }\n\n if (document.readyState === 'loading') {\n var _requestResizeNotifications =\n this._requestResizeNotifications.bind(this);\n document.addEventListener(\n 'readystatechange', function readystatechanged() {\n document.removeEventListener('readystatechange', readystatechanged);\n _requestResizeNotifications();\n });\n } else {\n this._findParent();\n\n if (!this._parentResizable) {\n // If this resizable is an orphan, tell other orphans to try to find\n // their parent again, in case it's this resizable.\n ORPHANS.forEach(function(orphan) {\n if (orphan !== this) {\n orphan._findParent();\n }\n }, this);\n\n window.addEventListener('resize', this._boundNotifyResize);\n this.notifyResize();\n } else {\n // If this resizable has a parent, tell other child resizables of\n // that parent to try finding their parent again, in case it's this\n // resizable.\n this._parentResizable._interestedResizables\n .forEach(function(resizable) {\n if (resizable !== this) {\n resizable._findParent();\n }\n }, this);\n }\n }\n },\n\n _findParent: function() {\n this.assignParentResizable(null);\n this.fire(\n 'iron-request-resize-notifications',\n null,\n {node: this, bubbles: true, cancelable: true});\n\n if (!this._parentResizable) {\n ORPHANS.add(this);\n } else {\n ORPHANS.delete(this);\n }\n }\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,IAAM,UAAU,SAAS,MAAM;AAG7B,MAAI;AACJ,MAAI,OAAO,SAAS,YAAY;AAC9B,YAAQ;AAAA,EACV,OAAO;AACL,YAAQ,QAAQ,MAAM,IAAI;AAAA,EAC5B;AAEA,MAAI,KAAK,gCAAgC;AACvC,UAAM,UAAU,iCAAiC,KAAK;AAAA,EACxD;AACA,iBAAe;AAAA,IAAO,MAAM;AAAA;AAAA,IAAgC;AAAA,EAAM;AAClE,SAAO;AACT;AAEA,QAAQ,QAAQ;;;ACrChB,SAAS,sBAAsB,MAAM,UAAU,OAAO,KAAK,aAAa;AACtE,MAAI;AACJ,MAAI,aAAa;AACf,eAAY,OAAO,UAAU,YAAY,UAAU;AAEnD,QAAI,UAAU;AACZ,YAAM,KAAK,WAAW,QAAQ;AAAA,IAChC;AAAA,EACF;AAEA,MAAI,eAAgB,QAAQ,UAAU,QAAQ,OAAO,UAAU;AAG/D,MAAI,YAAY,cAAc;AAC5B,SAAK,WAAW,QAAQ,IAAI;AAAA,EAC9B;AACA,SAAO;AACT;AA4CO,IAAM,cAAc,cAAc,gBAAc;AAAA,EAOrD,MAAMA,qBAAoB,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAkBnC,sBAAsB,UAAU,OAAO,KAAK;AAC1C,aAAO,sBAAsB,MAAM,UAAU,OAAO,KAAK,IAAI;AAAA,IAC/D;AAAA,EAEF;AAEA,SAAOA;AAET,CAAC;AA0CM,IAAM,sBAAsB,cAAc,gBAAc;AAAA,EAO7D,MAAMC,6BAA4B,WAAW;AAAA;AAAA,IAG3C,WAAW,aAAa;AACtB,aAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAML,aAAa;AAAA,MACf;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAoBA,sBAAsB,UAAU,OAAO,KAAK;AAC1C,aAAO,sBAAsB,MAAM,UAAU,OAAO,KAAK,KAAK,WAAW;AAAA,IAC3E;AAAA,EACF;AAEA,SAAOA;AAET,CAAC;AAGD,YAAY,yBAAyB;;;AC3IrC,IAAI,cAAc;AAOlB,SAAS,+BAA+B;AAAE,SAAO;AAAa;AAC9D,6BAA6B,YAAY,OAAO,OAAO,oBAAoB,WAAW;AAAA,EACpF,aAAa;AAAA,IACX,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AACF,CAAC;AAQD,IAAM,eAAe,gBAAgB,4BAA4B;AAQjE,IAAM,sBAAsB,YAAY,YAAY;AAGpD,SAAS,gBAAgB,UAAU,aAAa;AAC9C,gBAAc;AACd,SAAO,eAAe,UAAU,YAAY,SAAS;AACrD,MAAI,YAAY;AAChB,gBAAc;AAChB;AASA,IAAM,uBAAuB,gBAAgB,MAAM;AAAC,CAAC;AAE9C,SAAS,iBAAiB,MAAM,UAAU;AAC/C,WAAS,IAAE,GAAG,IAAE,SAAS,QAAQ,KAAK;AACpC,QAAI,IAAI,SAAS,CAAC;AAElB,QAAI,QAAQ,IAAI,KAAK,QAAQ,EAAE,wBAAwB,GAAG;AAExD,UAAI,EAAE,aAAa,KAAK,WAAW;AACjC,YAAI,MAAM;AACR,YAAE,yBAAyB,EAAE;AAC7B,YAAE,cAAc;AAAA,QAClB,OAAO;AACL,YAAE,cAAc,EAAE;AAAA,QACpB;AAAA,MAEF,WAAW,EAAE,cAAc,QAAQ;AACjC,YAAI,MAAM;AACR,YAAE,sBAAsB,SAAS,cAAc,aAAa;AAC5D,eAAK,KAAK,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,qBAAqB,CAAC;AAAA,QAChE,OAAO;AACL,gBAAM,UAAU,EAAE;AAClB,cAAI,SAAS;AACX,iBAAK,KAAK,OAAO,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO;AAAA,UACxD;AAAA,QACF;AAAA,MACF,WAES,EAAE,OAAO;AAChB,YAAI,MAAM;AACR,YAAE,qBAAqB,EAAE,MAAM;AAC/B,YAAE,MAAM,UAAU;AAAA,QACpB,OAAO;AACL,YAAE,MAAM,UAAU,EAAE;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AACA,MAAE,2BAA2B;AAC7B,QAAI,EAAE,mBAAmB;AACvB,QAAE,kBAAkB,IAAI;AAAA,IAC1B;AAAA,EACF;AACF;AAQA,IAAM,uBAAN,cAAmC,qBAAqB;AAAA,EACtD,YAAY,OAAO;AACjB,UAAM;AACN,SAAK,qBAAqB,KAAK;AAE/B,SAAK,OAAO,KAAK,eAAe,KAAK,UAAU;AAE/C,QAAI,WAAW,CAAC;AAEhB,SAAK;AAAA,IAAqC;AAE1C,aAAS,IAAI,KAAK,KAAK,YAAY,GAAG,IAAE,EAAE,aAAa;AACrD,eAAS,KAAK,CAAC;AACf,QAAE,uBAAuB;AAAA,IAC3B;AACA,QAAI,KAAK,qBACP,KAAK,kBAAkB,0BAA0B;AACjD,WAAK,kBAAkB,IAAI;AAAA,IAC7B;AAGA,QAAI,UAAU,KAAK;AACnB,QAAK,SAAS,QAAQ,iBAAkB,CAAC,QAAQ,eAAe;AAC9D,WAAK,kBAAkB;AAAA,IACzB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,qBAAqB,OAAO;AAC1B,QAAI,UAAU,KAAK;AACnB,QAAI,QAAQ,iBAAiB;AAC3B,eAAS,SAAS,KAAK,aAAa;AAClC,aAAK,oBAAoB,OAAO,KAAK,WAAW,WAAW,KAAK,CAAC;AAAA,MACnE;AAAA,IACF;AAGA,aAAS,SAAS,OAAO;AACvB,WAAK,oBAAoB,OAAO,MAAM,KAAK,CAAC;AAAA,IAC9C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,gBAAgB,MAAM,OAAO;AAC3B,QAAI,KAAK,0BAA0B,MAAM,OAAO,OAAO,IAAI,GAAG;AAC5D,WAAK,WAAW,eAAe,IAAI;AAAA,IACrC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,wBAAwB,MAAM,WAAW,SAAS;AAChD,QAAI,KAAK,eAAe,KAAK,oBAAoB,aAAa;AAG5D,WAAK,YAAY,wBAAwB,MAAM,WAAW,CAAC,MAAM;AAC/D,UAAE,QAAQ;AACV,gBAAQ,CAAC;AAAA,MACX,CAAC;AAAA,IACH,OAAO;AAGL,UAAI,eAAe,KAAK,WAAW;AACnC,UAAI,cAAc;AAChB,qBAAa,wBAAwB,MAAM,WAAW,OAAO;AAAA,MAC/D;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,kBAAkB,MAAM;AACtB,qBAAiB,MAAM,KAAK,QAAQ;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,4BAA4B,MAAM,MAAM,OAAO;AAC7C,QAAI,KAAK,4BACL,KAAK,YAAY,KAAK,aAAa,QAAQ,eAAe;AAC5D,WAAK,yBAAyB;AAAA,IAChC,OAAO;AACL,YAAM,4BAA4B,MAAM,MAAM,KAAK;AAAA,IACrD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI,cAAc;AAChB,QAAI,QAAQ,KAAK;AACjB,QAAI,CAAC,OAAO;AACV,UAAI;AACJ,cAAQ;AACR,SAAG;AAGD,gBAAQ,MAAM,WAAW;AAAA,MAC3B,UAAU,UAAU,MAAM,wBAAwB,CAAC,QAAQ;AAC3D,WAAK,gBAAgB;AAAA,IACvB;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUC,cAAc,OAAO;AACnB,WAAO;AAAA,EACV;AACF;AAGA,qBAAqB,UAAU;AAE/B,qBAAqB,UAAU;AAE/B,qBAAqB,UAAU;AAE/B,qBAAqB,UAAU;AAE/B,qBAAqB,UAAU;AAQ/B,IAAM,8BAA8B;AAAA;AAAA;AAAA;AAAA,EAGmB;AAAqB;AAE5E,SAAS,eAAe,UAAU;AAMhC,MAAI,eAAe,SAAS;AAC5B,SAAO,gBAAgB,aAAa,eAAe;AACrD;AAMA,SAAS,uBAAuB,UAAU,cAAc,SAAS;AAK/D,MAAI,kBAAkB,QAAQ,cAC5B,8BAA8B;AAGhC,MAAI,WAAW,OAAO;AACpB,sBAAkB,WAAW,MAAM,eAAe;AAAA,EACpD;AAOA,MAAI,QAAQ,cAAc,gBAAgB;AAAA,EAAE;AAE5C,QAAM,UAAU,sBAAsB;AACtC,QAAM,UAAU,cAAc,QAAQ;AACtC,mBAAiB,OAAO,UAAU,cAAc,OAAO;AACvD,SAAO;AACT;AAQA,SAAS,oBAAoB,QAAQ,cAAc,SAAS,YAAY;AACtE,MAAI,sBAAsB,QAAQ;AAClC,MAAI,uBAAuB,aAAa,cAAc;AAKpD,UAAM,aAAa,OAAO,aAAa;AAEvC,QAAI,QAAQ,aAAa;AACzB,QAAI,CAAC,OAAO;AACV,UAAI,YAAY;AAKd,YAAI,kBACA,QAAQ,cAAc,sBAAsB;AAAA,QAMhD,MAAM,4BAA4B,gBAAgB;AAAA,QAAC;AACnD,gBAAQ,aAAa,0BAA0B;AAAA,MACjD,OAAO;AAKL,cAAM,kBAAkB,OAAO;AAAA,QAQ/B,MAAM,qCAAqC,gBAAgB;AAAA,QAAC;AAC5D,gBAAQ,aAAa,0BACjB;AAAA,MACN;AAGA,UAAI,YAAY,aAAa;AAC7B,eAAS,QAAQ,WAAW;AAC1B,cAAM,UAAU;AAAA,UAAmB,WAAW;AAAA,UAC5C,MAAM,UAAU,sBAAsB;AAAA,UACtC,EAAC,IAAI,4BAA4B,MAAM,mBAAmB,EAAC;AAAA,QAAC;AAC9D,cAAM,UAAU,yBAAyB,WAAW,IAAI;AAAA,MAC1D;AACA,UAAI,kBAAkB,YAAY;AAChC,mCAA2B,cAAc,SAAS,UAAU;AAAA,MAC9D;AAAA,IACF;AAGA,QAAI,OAAO,aAAa;AAGtB,aAAO,OAAO,OAAO,QAAQ,OAAO,WAAW;AAAA,IACjD;AACA,QAAI,YAAY;AACd,sBAAgB,QAAQ,KAAK;AAE7B,aAAO,aAAa,CAAC;AACrB,aAAO,gBAAgB;AACvB,aAAO,YAAY;AACnB,aAAO,kBAAkB;AAAA,IAC3B,OAAO;AAEL,aAAO,eAAe,QAAQ,MAAM,SAAS;AAI7C,YAAM,YAAY,aAAa;AAC/B,eAAS,QAAQ,WAAW;AAC1B,eAAO,WAAW;AAClB,YAAI,QAAQ,QAAQ;AAClB,gBAAM,MAAM,OAAO,IAAI;AACvB,iBAAO,OAAO,IAAI;AAClB,iBAAO,OAAO,IAAI,IAAI;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAGA,SAAS,4BAA4B,UAAU,qBAAqB;AAClE,SAAO,SAAS,gBAAgB,UAAU,MAAM,OAAO;AACrD,wBAAoB;AAAA,MAAK,SAAS;AAAA,MAChC,KAAK,UAAU,SAAS,MAAM;AAAA,MAAG,MAAM,IAAI;AAAA,IAAC;AAAA,EAChD;AACF;AAEA,SAAS,iBAAiB,OAAO,UAAU,cAAc,SAAS;AAChE,MAAI,YAAY,aAAa,aAAa,CAAC;AAC3C,WAAS,SAAS,QAAQ,eAAe;AACvC,WAAO,UAAU,KAAK;AACtB,QAAI,yBAAyB,QAAQ;AACrC,QAAI,wBAAwB;AAC1B,YAAM,UAAU;AAAA,QAAmB;AAAA,QACjC,MAAM,UAAU,sBAAsB;AAAA,QACtC,EAAC,IAAI,+BAA+B,OAAO,sBAAsB,EAAC;AAAA,MAAC;AAAA,IACvE;AAAA,EACF;AACA,MAAI,QAAQ,mBAAmB,SAAS,YAAY;AAClD,aAAS,SAAS,WAAW;AAG3B,UAAI,CAAC,aAAa,cAAc;AAC9B,qBAAa,eAAe;AAAA,MAC9B;AACA,YAAM,UAAU;AAAA,QAAmB;AAAA,QACjC,MAAM,UAAU,sBAAsB;AAAA,QACtC,EAAC,IAAI,2BAA2B,EAAC;AAAA,MAAC;AAAA,IACtC;AAAA,EACF;AACF;AAEA,SAAS,+BAA+B,UAAU,wBAAwB;AACxE,SAAO,SAAS,mBAAmB,MAAM,MAAM,OAAO;AACpD,2BAAuB;AAAA,MAAK,KAAK;AAAA,MAC/B;AAAA,MAAM;AAAA,MAAM,MAAM,IAAI;AAAA,IAAC;AAAA,EAC3B;AACF;AAEA,SAAS,6BAA6B;AACpC,SAAO,SAAS,eAAe,MAAM,MAAM,OAAO;AAChD,SAAK,WAAW,0BAA0B,WAAW,MAAM,MAAM,IAAI,GAAG,MAAM,IAAI;AAAA,EACpF;AACF;AAiFO,SAAS,WAAW,UAAU,OAAO,SAAS;AAInD,MAAI,wBAAwB,CAAC,eAAe,QAAQ,GAAG;AACrD,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AACA;AAAA,EAA4C,WAAW,CAAC;AACxD,MAAI,SAAS,mBAAmB;AAC9B,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AACA,WAAS,oBAAoB;AAC7B,QAAM,OAAO,QAAQ,MAAM,cAAc;AACzC,MAAI,eAAe,KAAK,eAAe,QAAQ;AAO/C,MAAI,YAAY,aAAa;AAC7B,MAAI,CAAC,WAAW;AACd,gBAAY,uBAAuB,UAAU,cAAc,OAAO;AAClE,iBAAa,0BAA0B;AAAA,EACzC;AACA,QAAM,aAAa,eAAe,QAAQ;AAE1C,sBAAoB,UAAU,cAAc,SAAS,UAAU;AAG/D,MAAI,QAAQ,MAAM,yBAAyB,UAAU;AAAA,EAAC;AAEtD,QAAM,UAAU,cAAc;AAE9B,QAAM,UAAU;AAAA,EAA2C;AAE3D,QAAM,UAAU;AAAA,EAA4C;AAE5D,QAAM,UAAU,cAAc,aAAa;AAC3C;AAAA,EAA0D;AAC1D,SAAO;AACT;AAEA,SAAS,2BAA2B,cAAc,SAAS,YAAY;AACrE,QAAM,gBAAgB,WAAW,YAAY;AAC7C,QAAM,EAAC,gBAAe,IAAI;AAC1B,QAAM,EAAC,cAAa,IAAI;AACxB,WAAS,QAAQ,iBAAiB;AAGhC,QAAI,CAAC,cAAc,IAAI,KAAK,EAAE,iBAAiB,cAAc,IAAI,IAAI;AACnE,YAAM,UAAU,gBAAgB,IAAI;AACpC,eAAS,IAAE,GAAG,IAAE,QAAQ,QAAQ,KAAK;AACnC,cAAM,EAAC,KAAI,IAAI,QAAQ,CAAC,EAAE;AAC1B,YAAI,EAAE,KAAK,aAAa,KAAK,UAAU,SAAS;AAC9C,kBAAQ,KAAK,aAAa,IAAI,sFAC+B;AAC7D;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAwBO,SAAS,gBAAgB,UAAU,MAAM;AAC9C,MAAI;AACJ,SAAO,MAAM;AAIX,QAAK,QAAQ,KAAK,aAAa,OAAO,KAAK,sBAAuB;AAGhE,UAAI,MAAM,cAAc,UAAU;AAChC,eAAO,MAAM;AAAA,MACf,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF,OAAO;AAGL,aAAO,KAAK,IAAI,EAAE;AAAA,IACpB;AAAA,EACF;AACA,SAAO;AACT;;;ACvqBA,IAAI,iBAAiB;AAKd,SAAS,uBAAuB;AACrC,MAAI,uBAAuB,CAAC,WAAW;AACrC,QAAI,CAAC,gBAAgB;AACnB,uBAAiB;AACjB,YAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,YAAM,cAAc;AACpB,eAAS,KAAK,YAAY,KAAK;AAAA,IACjC;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;;;ACTA,IAAM,cACJ;AAAA,EACE;AAAA,IACE,gBAAgB,WAAW;AAAA,EAAC;AAAC;AAqB5B,IAAM,UAAN,cAAsB,YAAY;AAAA,EAEvC,WAAW,qBAAqB;AAAE,WAAO,CAAC,cAAc;AAAA,EAAG;AAAA,EAE3D,cAAc;AACZ,UAAM;AACN,QAAI,sBAAsB;AACxB,YAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AACA,SAAK,OAAO;AACZ,SAAK,IAAI;AACT,SAAK,aAAa;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,yBAAyB,MAAM,KAAK,OAAO,WAAW;AAEpD,SAAK,cAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,oBAAoB;AAClB,QAAI,CAAC,qBAAqB,GAAG;AAC3B,WAAK,MAAM,UAAU;AAAA,IACvB;AACA,SAAK,OAAO;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,uBAAuB;AACrB,SAAK,iBAAiB;AAAA,EACxB;AAAA,EAEA,mBAAmB;AACjB,SAAK,KAAK,IAAI,EAAE,UAAU,EAAE,aAAa,KAAK,MAAM,IAAI;AAAA,EAC1D;AAAA,EAEA,mBAAmB;AACjB,QAAI,KAAK,YAAY;AACnB,eAAS,IAAE,GAAG,IAAE,KAAK,WAAW,QAAQ,KAAK;AAC3C,aAAK,KAAK,YAAY,KAAK,WAAW,CAAC,CAAC;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS;AACP,QAAI;AACJ,QAAI,CAAC,KAAK,YAAY;AACpB;AAAA,MAA+C,YAAY,KAAK,cAAc,UAAU;AACxF,UAAI,CAAC,UAAU;AAEb,YAAI,WAAW,IAAI,iBAAiB,MAAM;AACxC;AAAA,UAA8C,KAAK,cAAc,UAAU;AAC3E,cAAI,UAAU;AACZ,qBAAS,WAAW;AACpB,iBAAK,OAAO;AAAA,UACd,OAAO;AACL,kBAAM,IAAI,MAAM,sCAAsC;AAAA,UACxD;AAAA,QACF,CAAC;AACD,iBAAS,QAAQ,MAAM,EAAC,WAAW,KAAI,CAAC;AACxC;AAAA,MACF;AACA,WAAK,OAAO,KAAK;AAAA;AAAA,QACqB;AAAA,MAAS;AAC/C,WAAK,IAAI,KAAK,KAAK;AACnB,WAAK,aAAa,CAAC;AACnB,eAAS,IAAE,KAAK,KAAK,YAAY,GAAG,IAAE,EAAE,aAAa;AACnD,aAAK,WAAW,KAAK,WAAW,MAAM,IAAI;AAAA,MAC5C;AACA,WAAK,kBAAkB;AAAA,IACzB;AACA,SAAK,iBAAiB;AACtB,SAAK,cAAc,IAAI,YAAY,cAAc;AAAA,MAC/C,SAAS;AAAA,MACT,UAAU;AAAA,IACZ,CAAC,CAAC;AAAA,EACJ;AAEF;AAEA,eAAe,OAAO,YAAY,OAAO;;;AC3HzC,IAAM,gBAAgB,oBAAoB,cAAc;AAwGjD,IAAM,YAAN,cAAwB,cAAc;AAAA;AAAA;AAAA,EAI3C,WAAW,KAAK;AAAE,WAAO;AAAA,EAAc;AAAA,EAEvC,WAAW,WAAW;AAAE,WAAO;AAAA,EAAM;AAAA,EAErC,WAAW,aAAa;AAStB,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAML,OAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,IAAI;AAAA,QACF,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,cAAc;AAAA,QACZ,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,UAAU;AAAA,MACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,UAAU;AAAA,MACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,UAAU;AAAA,MACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQP,mBAAmB;AAAA,QACjB,MAAM;AAAA,QACN,QAAQ,CAAC;AAAA,QACT,UAAU;AAAA,MACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,cAAc;AAAA,QACZ,MAAM;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAcA,iBAAiB;AAAA,QACf,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MAEA,kBAAkB;AAAA,QAChB,MAAM;AAAA,QACN,UAAU;AAAA,MACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,iBAAiB;AAAA,QACf,MAAM;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAiBA,uBAAuB;AAAA,QACrB,MAAM;AAAA,MACR;AAAA,IAEF;AAAA,EAEF;AAAA,EAEA,WAAW,YAAY;AACrB,WAAO,CAAE,yBAA0B;AAAA,EACrC;AAAA,EAEA,cAAc;AACZ,UAAM;AACN,SAAK,cAAc,CAAC;AACpB,SAAK,oBAAoB;AACzB,SAAK,sBAAsB,CAAC;AAC5B,SAAK,eAAe;AACpB,SAAK,oBAAoB;AACzB,SAAK,sBAAsB;AAC3B,SAAK,uBAAuB;AAC5B,SAAK,2BAA2B;AAChC,SAAK,eAAe;AACpB,SAAK,WAAW;AAChB,SAAK,aAAa;AAClB,SAAK,iBAAiB;AAEtB,SAAK,SAAS;AACd,SAAK,eAAe;AACpB,SAAK,WAAW;AAEhB,SAAK;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,uBAAuB;AACrB,UAAM,qBAAqB;AAC3B,SAAK,eAAe;AACpB,aAAS,IAAE,GAAG,IAAE,KAAK,YAAY,QAAQ,KAAK;AAC5C,WAAK,iBAAiB,CAAC;AAAA,IACzB;AAEA,QAAI,KAAK,cAAc;AACrB,2BAAqB,KAAK,YAAY;AAAA,IACxC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,oBAAoB;AAClB,UAAM,kBAAkB;AACxB,QAAI,CAAC,qBAAqB,GAAG;AAC3B,WAAK,MAAM,UAAU;AAAA,IACvB;AAEA,QAAI,KAAK,cAAc;AACrB,WAAK,eAAe;AACpB,UAAI,gBAAgB,KAAK,KAAK,IAAI,EAAE,UAAU;AAC9C,eAAS,IAAE,GAAG,IAAE,KAAK,YAAY,QAAQ,KAAK;AAC5C,aAAK,iBAAiB,GAAG,aAAa;AAAA,MACxC;AAEA,UAAI,KAAK,cAAc;AACrB,aAAK,SAAS;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,sBAAsB;AAIpB,QAAI,CAAC,KAAK,QAAQ;AAGhB,YAAM;AAAA;AAAA;AAAA,QAC2B;AAAA;AACjC,UAAI,WAAW,KAAK,WAAW,eAAe,gBAC1C;AAAA;AAAA,QACqC,KAAK,cAAc,UAAU;AAAA;AACtE,UAAI,CAAC,UAAU;AAEb,YAAI,WAAW,IAAI,iBAAiB,MAAM;AACxC,cAAI,KAAK,cAAc,UAAU,GAAG;AAClC,qBAAS,WAAW;AACpB,iBAAK,SAAS;AAAA,UAChB,OAAO;AACL,kBAAM,IAAI,MAAM,wCAAwC;AAAA,UAC1D;AAAA,QACF,CAAC;AACD,iBAAS,QAAQ,MAAM,EAAC,WAAW,KAAI,CAAC;AACxC,eAAO;AAAA,MACT;AAEA,UAAI,gBAAgB,CAAC;AACrB,oBAAc,KAAK,EAAE,IAAI;AACzB,oBAAc,KAAK,OAAO,IAAI;AAC9B,oBAAc,KAAK,YAAY,IAAI;AACnC,WAAK,SAAS,WAAW,UAAU,MAAM;AAAA,QACvC,aAAa,KAAK;AAAA,QAClB,aAAa;AAAA,QACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMA,iBAAiB,SAAS,MAAM,OAAO;AACrC,cAAI,KAAK,KAAK;AACd,mBAAS,IAAE,GAAG,MAAO,IAAE,GAAG,WAAY,OAAK,GAAG,CAAC,IAAI,KAAK;AACtD,iBAAK,gBAAgB,MAAM,KAAK;AAAA,UAClC;AAAA,QACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOA,oBAAoB,SAAS,MAAM,MAAM,OAAO;AAC9C,cAAI,QAAQ,KAAK,IAAI,IAAI,GAAG;AAC1B,gBAAI,MAAM,KAAK,KAAK,YAAY;AAChC,gBAAI,QAAQ,KAAK,IAAI;AACnB,mBAAK,MAAM,GAAG,IAAI;AAAA,YACpB;AACA,gBAAI,OAAO,UAAU,KAAK,IAAI,GAAG,0BAA0B,SAAS,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI;AACxF,iBAAK,WAAW,MAAM,KAAK;AAAA,UAC7B;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAAA,EAEA,kBAAkB;AAMhB,WAAO,KAAK,WAAW,eAAe,KAAK;AAAA,EAC7C;AAAA,EAEA,4BAA4B,sBAAsB;AAChD,QAAI,OAAO,yBAAyB,UAAU;AAC5C,UAAI,aAAa;AACjB,UAAI,MAAM,KAAK,gBAAgB;AAC/B,aAAO,WAAW;AAAE,eAAO,IAAI,UAAU,EAAE,MAAM,KAAK,SAAS;AAAA,MAAG;AAAA,IACpE;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,cAAc,MAAM;AAClB,SAAK,WAAW,KAAK,4BAA4B,IAAI;AACrD,QAAI,KAAK,OAAO;AAAE,WAAK,iBAAiB,KAAK,QAAQ;AAAA,IAAG;AAAA,EAC1D;AAAA,EAEA,gBAAgB,QAAQ;AACtB,SAAK,aAAa,KAAK,4BAA4B,MAAM;AACzD,QAAI,KAAK,OAAO;AAAE,WAAK,iBAAiB,KAAK,QAAQ;AAAA,IAAG;AAAA,EAC1D;AAAA,EAEA,mBAAmB,MAAM;AACvB,WAAO,KAAK,KAAK,MAAK,IAAI;AAAA,EAC5B;AAAA,EAEA,mBAAmB;AACjB,SAAK,iBAAiB,KAAK,WACzB,KAAK,QAAQ,QAAQ,MAAM,GAAG,EAAE,MAAM,GAAG;AAAA,EAC7C;AAAA,EAEA,sBAAsB,MAAM;AAE1B,QAAI,KAAK,YAAY,KAAK,YAAY;AACpC,UAAI,CAAC,MAAM;AAET,aAAK,iBAAiB,KAAK,UAAU,KAAK,KAAK;AAAA,MACjD,WAAW,KAAK,gBAAgB;AAE9B,YAAI,QAAQ,KAAK;AACjB,iBAAS,IAAE,GAAG,IAAE,MAAM,QAAQ,KAAK;AACjC,cAAI,KAAK,QAAQ,MAAM,CAAC,CAAC,MAAM,GAAG;AAChC,iBAAK,iBAAiB,KAAK,UAAU,KAAK,KAAK;AAAA,UACjD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,eAAe,QAAQ;AACrB,QAAI,KAAK,SAAS,CAAC,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC5C,cAAQ,KAAK,gDAAgD,KAAK,KAAK;AAAA,IACzE;AAGA,QAAI,CAAC,KAAK,iBAAiB,OAAO,MAAM,OAAO,KAAK,GAAG;AAIrD,UAAI,OAAO,SAAS,SAAS;AAC3B,aAAK,sBAAsB;AAAA,MAC7B;AACA,WAAK,iBAAiB,KAAK,QAAQ;AAAA,IACrC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,iBAAiB,IAAI,QAAQ,GAAG;AAC9B,SAAK,oBAAoB,UAAU;AAAA,MAC7B,KAAK;AAAA,MACL,QAAQ,IAAI,QAAQ,MAAM,KAAK,IAAI;AAAA,MACnC,GAAG,KAAK,IAAI;AAAA,IAAC;AACnB,qBAAiB,KAAK,iBAAiB;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,SAAS;AAEP,SAAK,iBAAiB,KAAK,QAAQ;AACnC,UAAM;AAAA,EACR;AAAA,EAEA,WAAW;AACT,QAAI,CAAC,KAAK,oBAAoB,GAAG;AAE/B;AAAA,IACF;AACA,QAAI,QAAQ,KAAK,SAAS,CAAC;AAE3B,UAAM,oBAAoB,KAAK,qBAAqB,KAAK;AAGzD,UAAM,QAAQ,KAAK,iBAAiB,kBAAkB,MAAM;AAE5D,SAAK,kBAAkB,OAAO,OAAO,iBAAiB;AAKtD,QAAI,KAAK,iBACL,KAAK,wBAAwB,KAAK,2BAA2B;AAC/D,2BAAqB,KAAK,YAAY;AACtC,WAAK,eAAe,sBAAsB,MAAM;AAC9C,aAAK,eAAe;AACpB,aAAK,mBAAmB;AAAA,MAC1B,CAAC;AAAA,IACH;AAEA,SAAK,sBAAsB,KAAK,YAAY,MAAM;AAElD,QAAI,CAAC,iCAAiC,KAAK,iBAAiB;AAC1D,WAAK,cAAc,IAAI,YAAY,cAAc;AAAA,QAC/C,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC,CAAC;AAAA,IACJ;AAAA,EACF;AAAA,EAEA,qBAAqB,OAAO;AAE1B,QAAI,oBAAoB,IAAI,MAAM,MAAM,MAAM;AAC9C,aAAS,IAAE,GAAG,IAAE,MAAM,QAAQ,KAAK;AACjC,wBAAkB,CAAC,IAAI;AAAA,IACzB;AAEA,QAAI,KAAK,YAAY;AACnB,0BAAoB,kBAAkB,OAAO,CAAC,GAAG,KAAK,UACpD,KAAK,WAAW,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC;AAAA,IACzC;AAEA,QAAI,KAAK,UAAU;AACjB,wBAAkB,KAAK,CAAC,GAAG,MAAM,KAAK,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAAA,IACpE;AACA,WAAO;AAAA,EACT;AAAA,EAEA,iBAAiB,mBAAmB;AAClC,QAAI,QAAQ;AACZ,UAAM,eAAe,KAAK,YAAY;AAItC,QAAI,KAAK,cAAc;AACrB,UAAI;AACJ,UAAI,CAAC,KAAK,gBACP,KAAK,uBAAuB,CAAC,KAAK,uBAAwB;AAE3D,gBAAQ,KAAK,IAAI,mBAAmB,KAAK,YAAY;AAGrD,mBAAW,KAAK,IAAI,QAAQ,cAAc,CAAC;AAE3C,aAAK,eAAe,YAAY;AAAA,MAClC,OAAO;AAGL,mBAAW,KAAK;AAAA,UACd,KAAK,IAAI,oBAAoB,cAAc,CAAC;AAAA,UAC5C,KAAK;AAAA,QAAY;AAGnB,gBAAQ,KAAK,IAAI,eAAe,UAAU,iBAAiB;AAAA,MAC7D;AAEA,WAAK,uBAAuB,aAAa,KAAK;AAC9C,WAAK,2BAA2B,QAAQ;AACxC,WAAK,oBAAoB,YAAY,IAAI;AAAA,IAC3C;AACA,SAAK,sBAAsB;AAC3B,WAAO;AAAA,EACT;AAAA,EAEA,qBAAqB;AAOnB,QAAI,KAAK,sBAAsB;AAC7B,YAAM,aAAa,YAAY,IAAI,IAAI,KAAK;AAC5C,YAAM,QAAQ,KAAK,mBAAmB;AACtC,WAAK,eAAe,KAAK,MAAM,KAAK,eAAe,KAAK,KAAK;AAAA,IAC/D;AAEA,QAAI,KAAK,0BAA0B;AACjC,WAAK,iBAAiB,KAAK,QAAQ;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,kBAAkB,OAAO,OAAO,mBAAmB;AAEjD,UAAM,oBAAoB,KAAK,sBAAsB,CAAC;AACtD,QAAI;AAEJ,SAAK,UAAQ,GAAG,UAAQ,OAAO,WAAW;AACxC,UAAI,OAAO,KAAK,YAAY,OAAO;AACnC,UAAI,UAAU,kBAAkB,OAAO;AACvC,UAAI,OAAO,MAAM,OAAO;AACxB,wBAAkB,OAAO,IAAI;AAC7B,UAAI,MAAM;AACR,aAAK,oBAAoB,KAAK,IAAI,IAAI;AACtC,aAAK,oBAAoB,KAAK,SAAS,OAAO;AAC9C,aAAK,oBAAoB,KAAK,cAAc,OAAO;AACnD,aAAK,iBAAiB;AAAA,MACxB,OAAO;AACL,aAAK,iBAAiB,MAAM,SAAS,OAAO;AAAA,MAC9C;AAAA,IACF;AAEA,aAAS,IAAE,KAAK,YAAY,SAAO,GAAG,KAAG,SAAS,KAAK;AACrD,WAAK,0BAA0B,CAAC;AAAA,IAClC;AAAA,EACF;AAAA,EAEA,iBAAiB,KAAK;AACpB,QAAI,OAAO,KAAK,YAAY,GAAG;AAC/B,UAAM,cAAc,KAAK,KAAK,IAAI;AAClC,aAAS,IAAE,GAAG,IAAE,KAAK,SAAS,QAAQ,KAAK;AACzC,UAAI,KAAK,KAAK,SAAS,CAAC;AACxB,kBAAY,YAAY,EAAE;AAAA,IAC5B;AACA,WAAO;AAAA,EACT;AAAA,EAEA,iBAAiB,KAAK,QAAQ;AAC5B,QAAI,OAAO,KAAK,YAAY,GAAG;AAE/B,WAAO,aAAa,KAAK,MAAM,IAAI;AAAA,EACrC;AAAA,EAEA,0BAA0B,KAAK;AAC7B,SAAK,iBAAiB,GAAG;AACzB,SAAK,YAAY,OAAO,KAAK,CAAC;AAAA,EAChC;AAAA,EAEA,gBAAgB,MAAM,SAAS,SAAS;AACtC,QAAI,QAAQ,CAAC;AACb,UAAM,KAAK,EAAE,IAAI;AACjB,UAAM,KAAK,OAAO,IAAI;AACtB,UAAM,KAAK,YAAY,IAAI;AAC3B,WAAO,IAAI,KAAK,OAAO,KAAK;AAAA,EAC9B;AAAA,EAEA,iBAAiB,MAAM,SAAS,SAAS;AACvC,UAAM,OAAO,KAAK,gBAAgB,MAAM,SAAS,OAAO;AACxD,QAAI,YAAY,KAAK,YAAY,UAAU,CAAC;AAC5C,QAAI,aAAa,YAAY,UAAU,SAAS,CAAC,IAAI;AACrD,SAAK,KAAK,IAAI,EAAE,UAAU,EAAE,aAAa,KAAK,MAAM,UAAU;AAC9D,SAAK,YAAY,OAAO,IAAI;AAC5B,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,kBAAkB,QAAQ;AACxB,aAAS,IAAE,GAAG,IAAE,KAAK,YAAY,QAAQ,KAAK;AAC5C,WAAK,YAAY,CAAC,EAAE,kBAAkB,MAAM;AAAA,IAC9C;AAAA,EACF;AAAA;AAAA;AAAA,EAIA,iBAAiB,MAAM,OAAO;AAC5B,QAAI,YAAY,KAAK,MAAM,CAAC;AAC5B,QAAI,MAAM,UAAU,QAAQ,GAAG;AAC/B,QAAI,WAAW,MAAM,IAAI,YAAY,UAAU,UAAU,GAAG,GAAG;AAE/D,QAAI,YAAY,SAAS,UAAU,EAAE,GAAG;AACtC,UAAI,cAAc,MAAM,IAAI,KAAK,UAAU,UAAU,MAAI,CAAC;AAE1D,WAAK,sBAAsB,WAAW;AAKtC,UAAI,UAAU,KAAK,oBAAoB,QAAQ;AAC/C,UAAI,OAAO,KAAK,YAAY,OAAO;AACnC,UAAI,MAAM;AACR,YAAI,WAAW,KAAK,MAAM,cAAc,MAAM,cAAc;AAG5D,aAAK,0BAA0B,UAAU,OAAO,OAAO,IAAI;AAC3D,aAAK,iBAAiB;AAAA,MACxB;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,eAAe,IAAI;AACjB,QAAI,WAAW,KAAK,gBAAgB,EAAE;AACtC,WAAO,YAAY,SAAS,KAAK,EAAE;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,gBAAgB,IAAI;AAClB,QAAI,WAAW,KAAK,gBAAgB,EAAE;AACtC,WAAO,YAAY,SAAS,KAAK,OAAO;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,gBAAgB,IAAI;AAClB,WAAO,gBAAgB,KAAK,UAAU,EAAE;AAAA,EAC1C;AAEF;AAEA,eAAe,OAAO,UAAU,IAAI,SAAS;;;AC/wB7C,IAAM,YAAN,cAAwB,eAAe;AAAA;AAAA;AAAA,EAIrC,WAAW,KAAK;AAAE,WAAO;AAAA,EAAU;AAAA,EAEnC,WAAW,WAAW;AAAE,WAAO;AAAA,EAAM;AAAA,EAErC,WAAW,aAAa;AAEtB,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaL,IAAI;AAAA,QACF,MAAM;AAAA,QACN,UAAU;AAAA,MACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,UAAU;AAAA,MACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,iBAAiB;AAAA,QACf,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EAEF;AAAA,EAEA,cAAc;AACZ,UAAM;AACN,SAAK,oBAAoB;AACzB,SAAK,UAAU;AACf,SAAK,2BAA2B;AAEhC,SAAK;AAEL,SAAK;AAAA,EACP;AAAA,EAEA,mBAAmB;AAiBjB,SAAK,oBAAoB,UAAU;AAAA,MAC7B,KAAK;AAAA,MACL;AAAA,MACA,MAAM,KAAK,SAAS;AAAA,IAAC;AAC3B,qBAAiB,KAAK,iBAAiB;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,uBAAuB;AACrB,UAAM,qBAAqB;AAC3B,UAAM,SAAS,KAAK,IAAI,EAAE;AAC1B,QAAI,CAAC,UAAW,OAAO,YAAY,KAAK,0BACpC,CAAC,KAAK,MAAM,EAAE,MAAO;AACvB,WAAK,mBAAmB;AAAA,IAC1B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,oBAAoB;AAClB,UAAM,kBAAkB;AACxB,QAAI,CAAC,qBAAqB,GAAG;AAC3B,WAAK,MAAM,UAAU;AAAA,IACvB;AACA,QAAI,KAAK,IAAI;AACX,WAAK,iBAAiB;AAAA,IACxB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,mBAAmB;AACjB,QAAI,CAAC,KAAK,YAAY;AAGpB,YAAM;AAAA;AAAA;AAAA,QAC2B;AAAA;AACjC,UAAI,WAAW,eAAe,gBAC1B;AAAA;AAAA,QAEC,KAAK,cAAc,EAAE,cAAc,UAAU;AAAA;AAClD,UAAI,CAAC,UAAU;AAEb,YAAI,WAAW,IAAI,iBAAiB,MAAM;AACxC,cAAI,KAAK,IAAI,EAAE,cAAc,UAAU,GAAG;AACxC,qBAAS,WAAW;AACpB,iBAAK,SAAS;AAAA,UAChB,OAAO;AACL,kBAAM,IAAI,MAAM,oCAAoC;AAAA,UACtD;AAAA,QACF,CAAC;AACD,iBAAS,QAAQ,MAAM,EAAC,WAAW,KAAI,CAAC;AACxC,eAAO;AAAA,MACT;AACA,WAAK,aAAa;AAAA,IACpB;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,mBAAmB;AACjB,QAAI,aAAa,KAAK,IAAI,EAAE;AAC5B,QAAI,CAAC,KAAK,cAAc,GAAG;AAEzB,UAAI,CAAC,YAAY;AACf,eAAO;AAAA,MACT;AAEA,UAAI,CAAC,KAAK,iBAAiB,GAAG;AAC5B,eAAO;AAAA,MACT;AACA,WAAK,0BAA0B,UAAU;AAAA,IAC3C,OAAO;AAEL,UAAI,WAAW,KAAK,mBAAmB;AACvC,UAAI,YAAY,SAAS,QAAQ;AAE/B,YAAI,YAAY,KAAK,IAAI,EAAE;AAC3B,YAAI,cAAc,SAAS,SAAS,SAAO,CAAC,GAAG;AAC7C,mBAAS,IAAE,GAAG,GAAI,IAAE,SAAS,WAAY,IAAE,SAAS,CAAC,IAAI,KAAK;AAC5D,iBAAK,UAAU,EAAE,aAAa,GAAG,IAAI;AAAA,UACvC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,SAAS;AACP,UAAM;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,WAAW;AACT,QAAI,KAAK,IAAI;AACX,UAAI,CAAC,KAAK,iBAAiB,GAAG;AAE5B;AAAA,MACF;AAAA,IACF,WAAW,KAAK,SAAS;AACvB,WAAK,mBAAmB;AAAA,IAC1B;AACA,SAAK,kBAAkB;AACvB,SAAK,CAAC,iCAAiC,KAAK,oBACrC,KAAK,MAAM,KAAK,SAAS;AAC9B,WAAK,cAAc,IAAI,YAAY,cAAc;AAAA,QAC/C,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC,CAAC;AACF,WAAK,UAAU,KAAK;AAAA,IACtB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,gBAAgB;AAAA,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUlB,qBAAqB;AAAA,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUvB,0BAA0B,YAAY;AAAA,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASxC,qBAAqB;AAAA,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUvB,oBAAoB;AAAA,EAAE;AAAA;AAExB;AAqBA,IAAM,YAAN,cAAwB,UAAU;AAAA,EAEhC,cAAc;AACZ,UAAM;AACN,SAAK,aAAa;AAClB,SAAK,aAAa;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,gBAAgB;AACd,WAAO,QAAQ,KAAK,UAAU;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,qBAAqB;AACnB,WAAO,KAAK,WAAW,aAAa;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,0BAA0B,YAAY;AACpC,UAAM,OAAO,KAAK,cAAc;AAChC,QAAI,sBAAsB;AACxB,UAAI,CAAC,KAAK,YAAY;AACpB,cAAM,IAAI,MAAM,kDAAkD;AAAA,MACpE;AAAA,IACF;AAEA,UAAM,eAAe,KAAK;AAAA;AAAA,MACe,KAAK;AAAA,MAAa;AAAA,IAAI;AAG/D,iBAAa,aAAa,CAAC,YAAY,cAAc,aAAa;AAChE,UAAI,WAAW,KAAK;AACpB,UAAI,KAAK,IAAI;AAEX,YAAI,UAAU;AAQZ,eAAK,aAAa;AAClB,eAAK,kBAAkB;AACvB,yBAAe,OAAO,OAAO,SAAS,cAAc,YAAY;AAAA,QAClE;AACA,mBAAW,cAAc,QAAQ;AAAA,MACnC,OAAO;AAIL,YAAI,KAAK,YAAY;AACnB,cAAI,CAAC,UAAU;AACb,uBAAW,KAAK,aAAa,EAAE,YAAY,cAAc,CAAC,EAAE;AAAA,UAC9D;AACA,cAAI,UAAU;AAQZ,uBAAW,KAAK,cAAc;AAC5B,oBAAM,WAAW,KAAK,CAAC;AACvB,uBAAS,aAAa,QAAQ,IAAI,KAAK,WAAW,QAAQ;AAAA,YAC5D;AAAA,UACF,OAAO;AACL,mBAAO,OAAO,SAAS,cAAc,YAAY;AAAA,UACnD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,SAAK,aAAa,KAAK;AAAA;AAAA,MACkB,KAAK;AAAA,MAAa;AAAA,IAAY;AACvE,SAAK,UAAU,EAAE,aAAa,KAAK,YAAY,IAAI;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,uBAAuB;AACrB,UAAM,WAAW,KAAK;AACtB,QAAI,UAAU;AACZ,WAAK,aAAa;AAClB,eAAS,WAAW,SAAS,cAAc,KAAK;AAAA,IAClD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,qBAAqB;AACnB,UAAM,OAAO,KAAK,cAAc;AAChC,QAAI,KAAK,YAAY;AACnB,WAAK,gBAAgB,KAAK,UAAU;AACpC,WAAK,aAAa;AAClB,WAAK,aAAa;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,oBAAoB;AAClB,UAAM,SAAS,KAAK,4BAA4B,CAAC,KAAK;AACtD,QAAI,KAAK,cAAc,QAAQ,KAAK,WAAW,QAAQ,MAAM,QAAQ;AACnE,WAAK,WAAW,WAAW;AAC3B,uBAAiB,QAAQ,KAAK,WAAW,aAAa,UAAU;AAAA,IAClE;AACA,QAAI,CAAC,QAAQ;AACX,WAAK,qBAAqB;AAAA,IAC5B;AAAA,EACF;AACF;AAQA,IAAM,cAAN,cAA0B,UAAU;AAAA,EAElC,cAAc;AACZ,UAAM;AACN,SAAK,SAAS;AACd,SAAK,aAAa;AAClB,SAAK,iBAAiB;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,gBAAgB;AACd,WAAO,QAAQ,KAAK,UAAU;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,qBAAqB;AACnB,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,0BAA0B,YAAY;AAEpC,QAAI,CAAC,KAAK,QAAQ;AAChB,WAAK,SAAS;AAAA;AAAA,QAC2B,KAAK;AAAA,QAAa;AAAA,QAAM;AAAA;AAAA;AAAA,UAG3D,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMb,iBAAiB,SAAS,MAAM,OAAO;AACrC,gBAAI,KAAK,YAAY;AACnB,kBAAI,KAAK,IAAI;AACX,qBAAK,WAAW,gBAAgB,MAAM,KAAK;AAAA,cAC7C,OAAO;AAKL,qBAAK,iBACD,KAAK,kBAAkB,uBAAO,OAAO,IAAI;AAC7C,qBAAK,eAAe,KAAK,IAAI,CAAC,IAAI;AAAA,cACpC;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MAAC;AAAA,IACP;AAEA,SAAK,aAAa,IAAI,KAAK,OAAO;AAClC,SAAK,UAAU,EAAE,aAAa,KAAK,WAAW,MAAM,IAAI;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,qBAAqB;AACnB,QAAI,KAAK,YAAY;AACnB,UAAI,KAAK,KAAK,WAAW;AACzB,UAAI,MAAM,GAAG,QAAQ;AAEnB,YAAI,SAAS,KAAK,GAAG,CAAC,CAAC,EAAE;AAGzB,YAAI,QAAQ;AACV,mBAAS,KAAK,MAAM;AACpB,mBAAS,IAAE,GAAG,GAAI,IAAE,GAAG,WAAY,IAAE,GAAG,CAAC,IAAI,KAAK;AAChD,mBAAO,YAAY,CAAC;AAAA,UACtB;AAAA,QACF;AAAA,MACF;AACA,WAAK,iBAAiB;AACtB,WAAK,aAAa;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,uBAAuB;AACrB,QAAI,QAAQ,KAAK;AACjB,QAAI,OAAO;AACT,WAAK,iBAAiB;AACtB,eAAS,QAAQ,OAAO;AACtB,aAAK,WAAW,oBAAoB,MAAM,KAAK,WAAW,IAAI,CAAC;AAAA,MACjE;AACA,WAAK,WAAW,iBAAiB;AAAA,IACnC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,oBAAoB;AAClB,UAAM,SAAS,KAAK,4BAA4B,CAAC,KAAK;AACtD,QAAI,KAAK,cAAc,QAAQ,KAAK,WAAW,QAAQ,MAAM,QAAQ;AACnE,WAAK,WAAW,WAAW;AAC3B,WAAK,WAAW,kBAAkB,MAAM;AAAA,IAC1C;AACA,QAAI,CAAC,QAAQ;AACX,WAAK,qBAAqB;AAAA,IAC5B;AAAA,EACF;AACF;AAwBO,IAAM,QAAQ,YAAY,YAAY;AAE7C,eAAe,OAAO,MAAM,IAAI,KAAK;;;ACvnBrC,IAAI,qBAAqB,cAAc,gBAAc;AAOnD,MAAI,cAAc,aAAa,UAAU;AAAA,EAQzC,MAAMC,4BAA2B,YAAY;AAAA,IAE3C,WAAW,aAAa;AACtB,aAAO;AAAA;AAAA;AAAA;AAAA,QAKL,OAAO;AAAA,UACL,MAAM;AAAA,QACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOA,OAAO;AAAA,UACL,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAQA,UAAU,EAAC,MAAM,QAAQ,QAAQ,KAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOrC,cAAc,EAAC,MAAM,QAAQ,QAAQ,KAAI;AAAA;AAAA;AAAA;AAAA;AAAA,QAMzC,QAAQ,EAAC,MAAM,SAAS,OAAO,MAAK;AAAA,MAEtC;AAAA,IACF;AAAA,IAEA,WAAW,YAAY;AACrB,aAAO,CAAC,mCAAmC;AAAA,IAC7C;AAAA,IAEA,cAAc;AACZ,YAAM;AACN,WAAK,cAAc;AACnB,WAAK,cAAc;AACnB,WAAK,gBAAgB;AAAA,IACvB;AAAA,IAEA,kBAAkB,OAAO,WAAW;AAClC,UAAI,OAAO,UAAU;AACrB,UAAI,QAAQ,0BAA0B,SAAS,IAAI,GAAG;AAGpD,YAAI,WAAW,UAAU,QAAQ,CAAC;AAClC,YAAI,YAAY,KAAK;AACrB,YAAI,YAAY,KAAK;AACrB,YAAI,UAAU,WAAW;AACvB,eAAK,eAAe;AAAA,QACtB;AACA,YAAI,WAAW;AACb,cAAI,UAAU,iBAAiB,UAAU,SAAS;AAClD,eAAK,eAAe,OAAO;AAAA,QAC7B;AACA,aAAK,cAAc;AACnB,aAAK,cAAc;AAAA,MACrB,WAAW,UAAU,QAAQ,GAAG,0BAA0B,SAAS,IAAI,CAAC,YAAY;AAGlF,aAAK,eAAe,UAAU,MAAM,YAAY;AAAA,MAClD,OAAO;AAGL,YAAI,OAAO,KAAK,MAAM,GAAG,0BAA0B,SAAS,IAAI,CAAC,IAAI,MAAM;AAC3E,YAAI,MAAM,SAAS,MAAM,EAAE;AAC3B,YAAK,KAAK,QAAQ,GAAG,IAAI,KAAM,QAAQ,KAAK;AAC1C,eAAK,qBAAqB,GAAG;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AAAA,IAEA,eAAe,SAAS;AACtB,UAAI,WAAW,KAAK;AAEpB,eAAS,IAAE,GAAG,IAAE,QAAQ,QAAQ,KAAK;AACnC,YAAI,IAAI,QAAQ,CAAC;AACjB,iBAAS,QAAQ,CAAC,KAAK,SAAS;AAC9B,cAAI,MAAM,EAAE,OAAO;AAAA,UAEnB,WAAW,OAAO,EAAE,QAAQ,EAAE,QAAQ,QAAQ;AAE5C,qBAAS,IAAI,MAAM,MAAM,EAAE,aAAa,EAAE,QAAQ,MAAM;AAAA,UAC1D,OAAO;AAEL,qBAAS,IAAI,MAAM,EAAE;AAAA,UACvB;AAAA,QACF,CAAC;AACD,iBAAS,IAAE,GAAG,IAAE,EAAE,YAAY,KAAK;AACjC,cAAI,MAAM,EAAE,QAAQ;AACpB,cAAI,SAAS,IAAI,KAAK,MAAM,GAAG,CAAC,GAAG;AACjC,qBAAS,IAAI,KAAK,MAAM,GAAG,GAAG,GAAG;AAAA,UACnC;AAAA,QACF;AAAA,MACF;AAEA,WAAK,cAAc;AAEnB,UAAI,OAAO;AACX,eAAS,QAAQ,CAAC,KAAK,SAAS;AAC9B,YAAI,MAAM,GAAG;AACX,cAAI,KAAK,OAAO;AACd,iBAAK,OAAO,0BAA0B,YAAY,IAAI,GAAG,MAAM,CAAC;AAAA,UAClE,OAAO;AACL,iBAAK,WAAW,KAAK,eAAe;AAAA,UACtC;AACA,mBAAS,OAAO,IAAI;AAAA,QACtB,OAAO;AACL;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,gBAAgB;AACd,WAAK,oBAAoB,CAAC;AAC1B,UAAI,KAAK,OAAO;AACd,YAAI,OAAO;AACX,aAAK,cAAc,QAAQ,SAAO;AAChC,cAAI,OAAO,GAAG;AACZ,iBAAK;AAAA,cACD,GAAG,0BAA0B,SAAS,IAAI,CAAC,IAAI,GAAG;AAAA,cAClD,GAAG,0BAA0B,YAAY,IAAI,CAAC,IAAI,MAAM;AAAA,YAAE;AAAA,UAChE;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,aAAK,cAAc,QAAQ,SAAO;AAChC,eAAK;AAAA,YACD,0BAA0B,YAAY,IAAI;AAAA,YAC1C,GAAG,0BAA0B,SAAS,IAAI,CAAC,IAAI,GAAG;AAAA,UAAE;AACxD,eAAK;AAAA,YACD,0BAA0B,gBAAgB,IAAI;AAAA,YAC9C,GAAG,0BAA0B,SAAS,IAAI,CAAC,IAAI,GAAG;AAAA,UAAE;AAAA,QAC1D,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,iBAAiB;AAEf,WAAK,oBAAoB,CAAC;AAK1B,WAAK,gBAAgB,oBAAI,IAAI;AAE7B,WAAK,WAAW,KAAK,QAAQ,CAAC,IAAI;AAClC,WAAK,eAAe;AAAA,IACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,WAAW,MAAM;AACf,aAAO,KAAK,cAAc,IAAI,IAAI;AAAA,IACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,gBAAgB,KAAK;AACnB,aAAO,KAAK,WAAW,KAAK,MAAM,GAAG,CAAC;AAAA,IACxC;AAAA,IAEA,qBAAqB,KAAK;AACxB,UAAI,OAAO,KAAK,4BAA4B,GAAG;AAC/C,UAAI,QAAQ,GAAG;AACb,YAAI,IAAI;AACR,aAAK,cAAc,QAAQ,CAACC,MAAK,SAAS;AACxC,cAAI,QAAQ,KAAK;AACf,iBAAK,SAAS,IAAI;AAAA,UACpB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,4BAA4B,KAAK;AAC/B,UAAI,WAAW,KAAK,kBAAkB,GAAG,0BAA0B,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE;AAC1F,UAAI,UAAU;AACZ,eAAO,SAAS,SAAS,MAAM,GAAG,0BAA0B,YAAY,IAAI,CAAC,IAAI,MAAM,GAAG,EAAE;AAAA,MAC9F;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,SAAS,MAAM;AACb,UAAI,MAAM,KAAK,cAAc,IAAI,IAAI;AACrC,UAAI,OAAO,GAAG;AACZ,aAAK,cAAc,OAAO,IAAI;AAC9B,YAAI;AACJ,YAAI,KAAK,OAAO;AACd,iBAAO,KAAK,4BAA4B,GAAG;AAAA,QAC7C;AACA,aAAK,cAAc;AACnB,YAAI,KAAK,OAAO;AACd,eAAK,OAAO,0BAA0B,YAAY,IAAI,GAAG,MAAM,CAAC;AAAA,QAClE,OAAO;AACL,eAAK,WAAW,KAAK,eAAe;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,cAAc,KAAK;AACjB,WAAK,SAAS,KAAK,MAAM,GAAG,CAAC;AAAA,IAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,OAAO,MAAM;AACX,WAAK,YAAY,KAAK,MAAM,QAAQ,IAAI,CAAC;AAAA,IAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,YAAY,KAAK;AACf,UAAI,OAAO,KAAK,MAAM,GAAG;AACzB,UAAI,CAAC,KAAK,WAAW,IAAI,GAAG;AAC1B,YAAI,CAAC,KAAK,OAAO;AACf,eAAK,cAAc,MAAM;AAAA,QAC3B;AACA,aAAK,cAAc,IAAI,MAAM,GAAG;AAChC,aAAK,cAAc;AACnB,YAAI,KAAK,OAAO;AACd,eAAK,KAAK,0BAA0B,YAAY,IAAI,GAAG,IAAI;AAAA,QAC7D,OAAO;AACL,eAAK,WAAW,KAAK,eAAe;AAAA,QACtC;AAAA,MACF,WAAW,KAAK,QAAQ;AACtB,aAAK,cAAc,GAAG;AAAA,MACxB;AAAA,IACF;AAAA,EAEF;AAEA,SAAOD;AAET,CAAC;AAWD,IAAI,oBAAoB,mBAAmB,cAAc;AA4EzD,IAAM,gBAAN,cAA4B,kBAAkB;AAAA;AAAA;AAAA,EAG5C,WAAW,KAAK;AAAE,WAAO;AAAA,EAAkB;AAAA,EAC3C,WAAW,WAAW;AAAE,WAAO;AAAA,EAAM;AACvC;AACA,eAAe,OAAO,cAAc,IAAI,aAAa;;;ACharD,IAAM,uBAAuB,IAAI,qBAAqB;AAEtD,IAAI,CAAC,OAAO,UAAU;AACpB,SAAO,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMhB,gBAAgB,UAAU,aAAa,gBAAgB;AAAA,IAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMxD,mBAAmB,UAAU,aAAa;AAAA,IAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO3C,sBAAsB,UAAU,aAAa,gBAAgB;AAAA,IAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAM9D,aAAa,SAAS,YAAY;AAChC,2BAAqB,cAAc;AACnC,6BAAuB,SAAS,UAAU;AAAA,IAC5C;AAAA;AAAA;AAAA;AAAA,IAKA,aAAa,SAAS;AACpB,2BAAqB,cAAc;AAAA,IACrC;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc,YAAY;AACxB,2BAAqB,cAAc;AACnC,6BAAuB,SAAS,MAAM,UAAU;AAAA,IAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,sBAAsB,SAAS,UAAU;AACvC,aAAO,sBAAsB,SAAS,QAAQ;AAAA,IAChD;AAAA,IAEA,oBAAoB;AAAA,IAAC;AAAA,IACrB,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,OAAO,SAAS,uBAAuB;;;ACpEvC,IAAM,OAAO;AAEb,IAAME,wBAAuB,OAAO,SAAS;AAgDtC,IAAM,cAAN,cAA0B,YAAY;AAAA,EAC3C,cAAc;AACZ,UAAM;AACN,SAAK,SAAS;AACd,IAAAA,sBAAqB,eAAe,IAAI;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,WAAW;AACT,QAAI,KAAK,QAAQ;AACf,aAAO,KAAK;AAAA,IACd;AACA,UAAM;AAAA;AAAA,MAAwC,KAAK,cAAc,OAAO;AAAA;AACxE,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AACA,SAAK,SAAS;AACd,UAAM,UAAU,MAAM,aAAa,IAAI;AACvC,QAAI,SAAS;AACX,YAAM,gBAAgB,IAAI;AAE1B,YAAM,cAAc,eAAe,OAAO,IAAI,MAAM;AAAA,IACtD;AAWA,QAAI,KAAK,kBAAkB,OAAO,UAAU;AAC1C,aAAO,SAAS,KAAK,YAAY,IAAI;AAAA,IACvC;AACA,WAAO,KAAK;AAAA,EACd;AACF;AAEA,OAAO,eAAe,OAAO,gBAAgB,WAAW;;;AClGxD,IAAIC;AAAA,CAEH,MAAM;AACL,EAAAA,yBAAwB,YAAY;AACtC,GAAG;;;ACWI,IAAM,OAAO,mBAAmB,WAAW,EAAE;;;ACVpD,IAAI,UAAU,oBAAI,IAAI;AAoBf,IAAM,wBAAwB;AAAA,EACnC,YAAY;AAAA;AAAA;AAAA;AAAA,IAIV,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,sBAAsB;AAAA,MACpB,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,WAAW;AAAA,IACT,qCAAqC;AAAA,EACvC;AAAA,EAEA,SAAS,WAAW;AAGlB,SAAK,wBAAwB,CAAC;AAC9B,SAAK,qBAAqB,KAAK,aAAa,KAAK,IAAI;AACrD,SAAK,+BAA+B,KAAK,wBAAwB,KAAK,IAAI;AAAA,EAC5E;AAAA,EAEA,UAAU,WAAW;AACnB,SAAK,4BAA4B;AAAA,EACnC;AAAA,EAEA,UAAU,WAAW;AACnB,QAAI,KAAK,kBAAkB;AACzB,WAAK,iBAAiB,2BAA2B,IAAI;AAAA,IACvD,OAAO;AACL,cAAQ,OAAO,IAAI;AACnB,aAAO,oBAAoB,UAAU,KAAK,kBAAkB;AAAA,IAC9D;AAEA,SAAK,mBAAmB;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAc,WAAW;AACvB,QAAI,CAAC,KAAK,YAAY;AACpB;AAAA,IACF;AAEA,SAAK,sBAAsB,QAAQ,SAAS,WAAW;AACrD,UAAI,KAAK,oBAAoB,SAAS,GAAG;AACvC,aAAK,kBAAkB,SAAS;AAAA,MAClC;AAAA,IACF,GAAG,IAAI;AAEP,SAAK,YAAY;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,uBAAuB,SAAS,iBAAiB;AAC/C,QAAI,KAAK,kBAAkB;AACzB,WAAK,iBAAiB,2BAA2B,IAAI;AAAA,IACvD;AAEA,SAAK,mBAAmB;AAExB,QAAI,mBACA,gBAAgB,sBAAsB,QAAQ,IAAI,MAAM,IAAI;AAC9D,sBAAgB,sBAAsB,KAAK,IAAI;AAC/C,sBAAgB,qBAAqB,IAAI;AAAA,IAC3C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,4BAA4B,SAAS,QAAQ;AAC3C,QAAI,QAAQ,KAAK,sBAAsB,QAAQ,MAAM;AAErD,QAAI,QAAQ,IAAI;AACd,WAAK,sBAAsB,OAAO,OAAO,CAAC;AAC1C,WAAK,uBAAuB,MAAM;AAAA,IACpC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,sBAAsB,SAAS,QAAQ;AACrC,WAAO,iBAAiB,eAAe,KAAK,4BAA4B;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,wBAAwB,SAAS,QAAQ;AACvC,WAAO;AAAA,MACH;AAAA,MAAe,KAAK;AAAA,IAA4B;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,qBAAqB,SAAS,SAAS;AACrC,WAAO;AAAA,EACT;AAAA,EAEA,yBAAyB,SAAS,OAAO;AACvC,QAAI,KAAK,sBAAsB;AAC7B,YAAM,gBAAgB;AACtB;AAAA,IACF;AAGA,QAAI,CAAC,WAAW;AACd,WAAK,YAAY;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,aAAa,WAAW;AACtB,SAAK,KAAK,eAAe,MAAM,EAAC,MAAM,MAAM,SAAS,MAAK,CAAC;AAAA,EAC7D;AAAA,EAEA,mCAAmC,SAAS,OAAO;AACjD,QAAI;AAAA;AAAA,MAAsC,IAAI,KAAK,EAAE;AAAA;AACrD,QAAI,WAAW,MAAM;AACnB;AAAA,IACF;AAEA,WAAO,sBAAsB,IAAI;AACjC,SAAK,kBAAkB,MAAM;AAE7B,UAAM,gBAAgB;AAAA,EACxB;AAAA,EAEA,yBAAyB,SAAS,iBAAiB;AACjD,QAAI,iBAAiB;AACnB,aAAO,oBAAoB,UAAU,KAAK,kBAAkB;AAAA,IAC9D;AAAA,EACF;AAAA,EAEA,mBAAmB,SAAS,YAAY;AAItC,QAAI,CAAC,KAAK,YAAY;AACpB;AAAA,IACF;AAEA,SAAK,uBAAuB;AAC5B,eAAW,aAAa;AACxB,SAAK,uBAAuB;AAAA,EAC9B;AAAA,EAEA,6BAA6B,WAAW;AACtC,QAAI,CAAC,KAAK,YAAY;AACpB;AAAA,IACF;AAEA,QAAI,SAAS,eAAe,WAAW;AACrC,UAAI,8BACA,KAAK,4BAA4B,KAAK,IAAI;AAC9C,eAAS;AAAA,QACL;AAAA,QAAoB,SAAS,oBAAoB;AAC/C,mBAAS,oBAAoB,oBAAoB,iBAAiB;AAClE,sCAA4B;AAAA,QAC9B;AAAA,MAAC;AAAA,IACP,OAAO;AACL,WAAK,YAAY;AAEjB,UAAI,CAAC,KAAK,kBAAkB;AAG1B,gBAAQ,QAAQ,SAAS,QAAQ;AAC/B,cAAI,WAAW,MAAM;AACnB,mBAAO,YAAY;AAAA,UACrB;AAAA,QACF,GAAG,IAAI;AAEP,eAAO,iBAAiB,UAAU,KAAK,kBAAkB;AACzD,aAAK,aAAa;AAAA,MACpB,OAAO;AAIL,aAAK,iBAAiB,sBACjB,QAAQ,SAAS,WAAW;AAC3B,cAAI,cAAc,MAAM;AACtB,sBAAU,YAAY;AAAA,UACxB;AAAA,QACF,GAAG,IAAI;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAa,WAAW;AACtB,SAAK,sBAAsB,IAAI;AAC/B,SAAK;AAAA,MACD;AAAA,MACA;AAAA,MACA,EAAC,MAAM,MAAM,SAAS,MAAM,YAAY,KAAI;AAAA,IAAC;AAEjD,QAAI,CAAC,KAAK,kBAAkB;AAC1B,cAAQ,IAAI,IAAI;AAAA,IAClB,OAAO;AACL,cAAQ,OAAO,IAAI;AAAA,IACrB;AAAA,EACF;AACF;",
|
|
6
|
+
"names": ["MutableData", "OptionalMutableData", "ArraySelectorMixin", "idx", "CustomStyleInterface", "mutablePropertyChange"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Class,
|
|
3
|
+
mixinBehaviors
|
|
4
|
+
} from "./chunk-BHAOVVTR.js";
|
|
5
|
+
import "./chunk-QQPVW2K2.js";
|
|
6
|
+
import "./chunk-PRUGAEYJ.js";
|
|
7
|
+
import "./chunk-I2HDYNON.js";
|
|
8
|
+
import "./chunk-MXBCLPIN.js";
|
|
9
|
+
import "./chunk-BUSYA2B4.js";
|
|
10
|
+
export {
|
|
11
|
+
Class,
|
|
12
|
+
mixinBehaviors
|
|
13
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PolymerElement,
|
|
3
|
+
html
|
|
4
|
+
} from "./chunk-BSA4YZO6.js";
|
|
5
|
+
import {
|
|
6
|
+
version
|
|
7
|
+
} from "./chunk-PRUGAEYJ.js";
|
|
8
|
+
import "./chunk-I2HDYNON.js";
|
|
9
|
+
import "./chunk-MXBCLPIN.js";
|
|
10
|
+
import "./chunk-BUSYA2B4.js";
|
|
11
|
+
export {
|
|
12
|
+
PolymerElement,
|
|
13
|
+
html,
|
|
14
|
+
version
|
|
15
|
+
};
|