{"version":3,"file":"portal.es5.js","sources":["../../packages/cdk/esm5/portal/portal-errors.js","../../packages/cdk/esm5/portal/portal.js","../../packages/cdk/esm5/portal/dom-portal-host.js","../../packages/cdk/esm5/portal/portal-directives.js","../../packages/cdk/esm5/portal/portal-injector.js","../../packages/cdk/esm5/portal/index.js"],"sourcesContent":["/**\n * Throws an exception when attempting to attach a null portal to a host.\n * \\@docs-private\n * @return {?}\n */\nexport function throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * \\@docs-private\n * @return {?}\n */\nexport function throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * \\@docs-private\n * @return {?}\n */\nexport function throwPortalHostAlreadyDisposedError() {\n throw Error('This PortalHost has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * \\@docs-private\n * @return {?}\n */\nexport function throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalHost accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * \\@docs-private\n * @return {?}\n */\nexport function throwNullPortalHostError() {\n throw Error('Attempting to attach a portal to a null PortalHost');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * \\@docs-privatew\n * @return {?}\n */\nexport function throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n//# sourceMappingURL=portal-errors.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as tslib_1 from \"tslib\";\nimport { throwNullPortalHostError, throwPortalAlreadyAttachedError, throwNoPortalAttachedError, throwNullPortalError, throwPortalHostAlreadyDisposedError, throwUnknownPortalTypeError } from './portal-errors';\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalHost`.\n * @abstract\n */\nvar Portal = (function () {\n function Portal() {\n }\n /**\n * Attach this portal to a host.\n * @param {?} host\n * @return {?}\n */\n Portal.prototype.attach = function (host) {\n if (host == null) {\n throwNullPortalHostError();\n }\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n this._attachedHost = host;\n return (host.attach(this));\n };\n /**\n * Detach this portal from its host\n * @return {?}\n */\n Portal.prototype.detach = function () {\n var /** @type {?} */ host = this._attachedHost;\n if (host == null) {\n throwNoPortalAttachedError();\n }\n else {\n this._attachedHost = null;\n host.detach();\n }\n };\n Object.defineProperty(Portal.prototype, \"isAttached\", {\n /**\n * Whether this portal is attached to a host.\n * @return {?}\n */\n get: function () {\n return this._attachedHost != null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the PortalHost reference without performing `attach()`. This is used directly by\n * the PortalHost when it is performing an `attach()` or `detach()`.\n * @param {?} host\n * @return {?}\n */\n Portal.prototype.setAttachedHost = function (host) {\n this._attachedHost = host;\n };\n return Portal;\n}());\nexport { Portal };\nfunction Portal_tsickle_Closure_declarations() {\n /** @type {?} */\n Portal.prototype._attachedHost;\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nvar ComponentPortal = (function (_super) {\n tslib_1.__extends(ComponentPortal, _super);\n /**\n * @param {?} component\n * @param {?=} viewContainerRef\n * @param {?=} injector\n */\n function ComponentPortal(component, viewContainerRef, injector) {\n var _this = _super.call(this) || this;\n _this.component = component;\n _this.viewContainerRef = viewContainerRef;\n _this.injector = injector;\n return _this;\n }\n return ComponentPortal;\n}(Portal));\nexport { ComponentPortal };\nfunction ComponentPortal_tsickle_Closure_declarations() {\n /**\n * The type of the component that will be instantiated for attachment.\n * @type {?}\n */\n ComponentPortal.prototype.component;\n /**\n * [Optional] Where the attached component should live in Angular's *logical* component tree.\n * This is different from where the component *renders*, which is determined by the PortalHost.\n * The origin is necessary when the host is outside of the Angular application context.\n * @type {?}\n */\n ComponentPortal.prototype.viewContainerRef;\n /**\n * [Optional] Injector used for the instantiation of the component.\n * @type {?}\n */\n ComponentPortal.prototype.injector;\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nvar TemplatePortal = (function (_super) {\n tslib_1.__extends(TemplatePortal, _super);\n /**\n * @param {?} template\n * @param {?} viewContainerRef\n * @param {?=} context\n */\n function TemplatePortal(template, viewContainerRef, context) {\n var _this = _super.call(this) || this;\n _this.templateRef = template;\n _this.viewContainerRef = viewContainerRef;\n if (context) {\n _this.context = context;\n }\n return _this;\n }\n Object.defineProperty(TemplatePortal.prototype, \"origin\", {\n /**\n * @return {?}\n */\n get: function () {\n return this.templateRef.elementRef;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Attach the the portal to the provided `PortalHost`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n * @param {?} host\n * @param {?=} context\n * @return {?}\n */\n TemplatePortal.prototype.attach = function (host, context) {\n if (context === void 0) { context = this.context; }\n this.context = context;\n return _super.prototype.attach.call(this, host);\n };\n /**\n * @return {?}\n */\n TemplatePortal.prototype.detach = function () {\n this.context = undefined;\n return _super.prototype.detach.call(this);\n };\n return TemplatePortal;\n}(Portal));\nexport { TemplatePortal };\nfunction TemplatePortal_tsickle_Closure_declarations() {\n /**\n * The embedded template that will be used to instantiate an embedded View in the host.\n * @type {?}\n */\n TemplatePortal.prototype.templateRef;\n /**\n * Reference to the ViewContainer into which the template will be stamped out.\n * @type {?}\n */\n TemplatePortal.prototype.viewContainerRef;\n /** @type {?} */\n TemplatePortal.prototype.context;\n}\n/**\n * Partial implementation of PortalHost that only deals with attaching either a\n * ComponentPortal or a TemplatePortal.\n * @abstract\n */\nvar BasePortalHost = (function () {\n function BasePortalHost() {\n /**\n * Whether this host has already been permanently disposed.\n */\n this._isDisposed = false;\n }\n /**\n * Whether this host has an attached portal.\n * @return {?}\n */\n BasePortalHost.prototype.hasAttached = function () {\n return !!this._attachedPortal;\n };\n /**\n * @param {?} portal\n * @return {?}\n */\n BasePortalHost.prototype.attach = function (portal) {\n if (!portal) {\n throwNullPortalError();\n }\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n if (this._isDisposed) {\n throwPortalHostAlreadyDisposedError();\n }\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n }\n else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n }\n throwUnknownPortalTypeError();\n };\n /**\n * @abstract\n * @template T\n * @param {?} portal\n * @return {?}\n */\n BasePortalHost.prototype.attachComponentPortal = function (portal) { };\n /**\n * @abstract\n * @template C\n * @param {?} portal\n * @return {?}\n */\n BasePortalHost.prototype.attachTemplatePortal = function (portal) { };\n /**\n * @return {?}\n */\n BasePortalHost.prototype.detach = function () {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n this._invokeDisposeFn();\n };\n /**\n * @return {?}\n */\n BasePortalHost.prototype.dispose = function () {\n if (this.hasAttached()) {\n this.detach();\n }\n this._invokeDisposeFn();\n this._isDisposed = true;\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n BasePortalHost.prototype.setDisposeFn = function (fn) {\n this._disposeFn = fn;\n };\n /**\n * @return {?}\n */\n BasePortalHost.prototype._invokeDisposeFn = function () {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n };\n return BasePortalHost;\n}());\nexport { BasePortalHost };\nfunction BasePortalHost_tsickle_Closure_declarations() {\n /**\n * The portal currently attached to the host.\n * @type {?}\n */\n BasePortalHost.prototype._attachedPortal;\n /**\n * A function that will permanently dispose this host.\n * @type {?}\n */\n BasePortalHost.prototype._disposeFn;\n /**\n * Whether this host has already been permanently disposed.\n * @type {?}\n */\n BasePortalHost.prototype._isDisposed;\n}\n//# sourceMappingURL=portal.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as tslib_1 from \"tslib\";\nimport { BasePortalHost } from './portal';\n/**\n * A PortalHost for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n *\n * This is the only part of the portal core that directly touches the DOM.\n */\nvar DomPortalHost = (function (_super) {\n tslib_1.__extends(DomPortalHost, _super);\n /**\n * @param {?} _hostDomElement\n * @param {?} _componentFactoryResolver\n * @param {?} _appRef\n * @param {?} _defaultInjector\n */\n function DomPortalHost(_hostDomElement, _componentFactoryResolver, _appRef, _defaultInjector) {\n var _this = _super.call(this) || this;\n _this._hostDomElement = _hostDomElement;\n _this._componentFactoryResolver = _componentFactoryResolver;\n _this._appRef = _appRef;\n _this._defaultInjector = _defaultInjector;\n return _this;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @template T\n * @param {?} portal Portal to be attached\n * @return {?}\n */\n DomPortalHost.prototype.attachComponentPortal = function (portal) {\n var _this = this;\n var /** @type {?} */ componentFactory = this._componentFactoryResolver.resolveComponentFactory(portal.component);\n var /** @type {?} */ componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.parentInjector);\n this.setDisposeFn(function () { return componentRef.destroy(); });\n }\n else {\n componentRef = componentFactory.create(portal.injector || this._defaultInjector);\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(function () {\n _this._appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this._hostDomElement.appendChild(this._getComponentRootNode(componentRef));\n return componentRef;\n };\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @template C\n * @param {?} portal Portal to be attached.\n * @return {?}\n */\n DomPortalHost.prototype.attachTemplatePortal = function (portal) {\n var _this = this;\n var /** @type {?} */ viewContainer = portal.viewContainerRef;\n var /** @type {?} */ viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context);\n viewRef.detectChanges();\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalHost the view can be added everywhere in the DOM (e.g Overlay Container)\n // To move the view to the specified host element. We just re-append the existing root nodes.\n viewRef.rootNodes.forEach(function (rootNode) { return _this._hostDomElement.appendChild(rootNode); });\n this.setDisposeFn((function () {\n var /** @type {?} */ index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n }));\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n };\n /**\n * Clears out a portal from the DOM.\n * @return {?}\n */\n DomPortalHost.prototype.dispose = function () {\n _super.prototype.dispose.call(this);\n if (this._hostDomElement.parentNode != null) {\n this._hostDomElement.parentNode.removeChild(this._hostDomElement);\n }\n };\n /**\n * Gets the root HTMLElement for an instantiated component.\n * @param {?} componentRef\n * @return {?}\n */\n DomPortalHost.prototype._getComponentRootNode = function (componentRef) {\n return (((componentRef.hostView)).rootNodes[0]);\n };\n return DomPortalHost;\n}(BasePortalHost));\nexport { DomPortalHost };\nfunction DomPortalHost_tsickle_Closure_declarations() {\n /** @type {?} */\n DomPortalHost.prototype._hostDomElement;\n /** @type {?} */\n DomPortalHost.prototype._componentFactoryResolver;\n /** @type {?} */\n DomPortalHost.prototype._appRef;\n /** @type {?} */\n DomPortalHost.prototype._defaultInjector;\n}\n//# sourceMappingURL=dom-portal-host.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as tslib_1 from \"tslib\";\nimport { NgModule, Directive, TemplateRef, ComponentFactoryResolver, ViewContainerRef, Input, } from '@angular/core';\nimport { TemplatePortal, BasePortalHost } from './portal';\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n *\n * Usage:\n * \n *
Hello {{name}}
\n * \n */\nvar TemplatePortalDirective = (function (_super) {\n tslib_1.__extends(TemplatePortalDirective, _super);\n /**\n * @param {?} templateRef\n * @param {?} viewContainerRef\n */\n function TemplatePortalDirective(templateRef, viewContainerRef) {\n return _super.call(this, templateRef, viewContainerRef) || this;\n }\n TemplatePortalDirective.decorators = [\n { type: Directive, args: [{\n selector: '[cdk-portal], [cdkPortal], [portal]',\n exportAs: 'cdkPortal',\n },] },\n ];\n /**\n * @nocollapse\n */\n TemplatePortalDirective.ctorParameters = function () { return [\n { type: TemplateRef, },\n { type: ViewContainerRef, },\n ]; };\n return TemplatePortalDirective;\n}(TemplatePortal));\nexport { TemplatePortalDirective };\nfunction TemplatePortalDirective_tsickle_Closure_declarations() {\n /** @type {?} */\n TemplatePortalDirective.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n TemplatePortalDirective.ctorParameters;\n}\n/**\n * Directive version of a PortalHost. Because the directive *is* a PortalHost, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * \n */\nvar PortalHostDirective = (function (_super) {\n tslib_1.__extends(PortalHostDirective, _super);\n /**\n * @param {?} _componentFactoryResolver\n * @param {?} _viewContainerRef\n */\n function PortalHostDirective(_componentFactoryResolver, _viewContainerRef) {\n var _this = _super.call(this) || this;\n _this._componentFactoryResolver = _componentFactoryResolver;\n _this._viewContainerRef = _viewContainerRef;\n /**\n * The attached portal.\n */\n _this._portal = null;\n return _this;\n }\n Object.defineProperty(PortalHostDirective.prototype, \"_deprecatedPortal\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.portal; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) { this.portal = v; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PortalHostDirective.prototype, \"portal\", {\n /**\n * Portal associated with the Portal host.\n * @return {?}\n */\n get: function () {\n return this._portal;\n },\n /**\n * @param {?} portal\n * @return {?}\n */\n set: function (portal) {\n if (this.hasAttached()) {\n _super.prototype.detach.call(this);\n }\n if (portal) {\n _super.prototype.attach.call(this, portal);\n }\n this._portal = portal;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n PortalHostDirective.prototype.ngOnDestroy = function () {\n _super.prototype.dispose.call(this);\n this._portal = null;\n };\n /**\n * Attach the given ComponentPortal to this PortalHost using the ComponentFactoryResolver.\n *\n * @template T\n * @param {?} portal Portal to be attached to the portal host.\n * @return {?}\n */\n PortalHostDirective.prototype.attachComponentPortal = function (portal) {\n portal.setAttachedHost(this);\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalHost.\n var /** @type {?} */ viewContainerRef = portal.viewContainerRef != null ?\n portal.viewContainerRef :\n this._viewContainerRef;\n var /** @type {?} */ componentFactory = this._componentFactoryResolver.resolveComponentFactory(portal.component);\n var /** @type {?} */ ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.parentInjector);\n _super.prototype.setDisposeFn.call(this, function () { return ref.destroy(); });\n this._portal = portal;\n return ref;\n };\n /**\n * Attach the given TemplatePortal to this PortlHost as an embedded View.\n * @template C\n * @param {?} portal Portal to be attached.\n * @return {?}\n */\n PortalHostDirective.prototype.attachTemplatePortal = function (portal) {\n var _this = this;\n portal.setAttachedHost(this);\n var /** @type {?} */ viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n _super.prototype.setDisposeFn.call(this, function () { return _this._viewContainerRef.clear(); });\n this._portal = portal;\n return viewRef;\n };\n PortalHostDirective.decorators = [\n { type: Directive, args: [{\n selector: '[cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalHost',\n inputs: ['portal: cdkPortalHost']\n },] },\n ];\n /**\n * @nocollapse\n */\n PortalHostDirective.ctorParameters = function () { return [\n { type: ComponentFactoryResolver, },\n { type: ViewContainerRef, },\n ]; };\n PortalHostDirective.propDecorators = {\n '_deprecatedPortal': [{ type: Input, args: ['portalHost',] },],\n };\n return PortalHostDirective;\n}(BasePortalHost));\nexport { PortalHostDirective };\nfunction PortalHostDirective_tsickle_Closure_declarations() {\n /** @type {?} */\n PortalHostDirective.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n PortalHostDirective.ctorParameters;\n /** @type {?} */\n PortalHostDirective.propDecorators;\n /**\n * The attached portal.\n * @type {?}\n */\n PortalHostDirective.prototype._portal;\n /** @type {?} */\n PortalHostDirective.prototype._componentFactoryResolver;\n /** @type {?} */\n PortalHostDirective.prototype._viewContainerRef;\n}\nvar PortalModule = (function () {\n function PortalModule() {\n }\n PortalModule.decorators = [\n { type: NgModule, args: [{\n exports: [TemplatePortalDirective, PortalHostDirective],\n declarations: [TemplatePortalDirective, PortalHostDirective],\n },] },\n ];\n /**\n * @nocollapse\n */\n PortalModule.ctorParameters = function () { return []; };\n return PortalModule;\n}());\nexport { PortalModule };\nfunction PortalModule_tsickle_Closure_declarations() {\n /** @type {?} */\n PortalModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n PortalModule.ctorParameters;\n}\n//# sourceMappingURL=portal-directives.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * \\@docs-private\n */\nvar PortalInjector = (function () {\n /**\n * @param {?} _parentInjector\n * @param {?} _customTokens\n */\n function PortalInjector(_parentInjector, _customTokens) {\n this._parentInjector = _parentInjector;\n this._customTokens = _customTokens;\n }\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n PortalInjector.prototype.get = function (token, notFoundValue) {\n var /** @type {?} */ value = this._customTokens.get(token);\n if (typeof value !== 'undefined') {\n return value;\n }\n return this._parentInjector.get(token, notFoundValue);\n };\n return PortalInjector;\n}());\nexport { PortalInjector };\nfunction PortalInjector_tsickle_Closure_declarations() {\n /** @type {?} */\n PortalInjector.prototype._parentInjector;\n /** @type {?} */\n PortalInjector.prototype._customTokens;\n}\n//# sourceMappingURL=portal-injector.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { Portal, ComponentPortal, TemplatePortal, BasePortalHost, DomPortalHost, TemplatePortalDirective, PortalHostDirective, PortalModule, PortalInjector } from './public-api';\n//# sourceMappingURL=index.js.map"],"names":["tslib_1.__extends"],"mappings":";;;;;;;;;;;AAAA;;;;;AAKA,AAAO,SAAS,oBAAoB,GAAG;IACnC,MAAM,KAAK,CAAC,iCAAiC,CAAC,CAAC;CAClD;;;;;;AAMD,AAAO,SAAS,+BAA+B,GAAG;IAC9C,MAAM,KAAK,CAAC,oCAAoC,CAAC,CAAC;CACrD;;;;;;AAMD,AAAO,SAAS,mCAAmC,GAAG;IAClD,MAAM,KAAK,CAAC,2CAA2C,CAAC,CAAC;CAC5D;;;;;;AAMD,AAAO,SAAS,2BAA2B,GAAG;IAC1C,MAAM,KAAK,CAAC,6EAA6E;QACrF,wCAAwC,CAAC,CAAC;CACjD;;;;;;AAMD,AAAO,SAAS,wBAAwB,GAAG;IACvC,MAAM,KAAK,CAAC,oDAAoD,CAAC,CAAC;CACrE;;;;;;AAMD,AAAO,SAAS,0BAA0B,GAAG;IACzC,MAAM,KAAK,CAAC,8DAA8D,CAAC,CAAC;CAC/E,AACD;;ACxCA;;;;;AAKA,IAAI,MAAM,IAAI,YAAY;IACtB,SAAS,MAAM,GAAG;KACjB;;;;;;IAMD,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,IAAI,EAAE;QACtC,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,wBAAwB,EAAE,CAAC;SAC9B;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACpB,+BAA+B,EAAE,CAAC;SACrC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;KAC9B,CAAC;;;;;IAKF,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;QAClC,qBAAqB,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/C,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,0BAA0B,EAAE,CAAC;SAChC;aACI;YACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;SACjB;KACJ,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE;;;;;QAKlD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC;SACrC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;;;;IAOH,MAAM,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE;QAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B,CAAC;IACF,OAAO,MAAM,CAAC;CACjB,EAAE,CAAC,CAAC;AACL,AACA,AAIA;;;AAGA,IAAI,eAAe,IAAI,UAAU,MAAM,EAAE;IACrCA,SAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;;;;;;IAM3C,SAAS,eAAe,CAAC,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE;QAC5D,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QAC5B,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAC1C,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,OAAO,KAAK,CAAC;KAChB;IACD,OAAO,eAAe,CAAC;CAC1B,CAAC,MAAM,CAAC,CAAC,CAAC;AACX,AACA,AAmBA;;;AAGA,IAAI,cAAc,IAAI,UAAU,MAAM,EAAE;IACpCA,SAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;;;;;;IAM1C,SAAS,cAAc,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE;QACzD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC7B,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAC1C,IAAI,OAAO,EAAE;YACT,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;SAC3B;QACD,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE;;;;QAItD,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;SACtC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;;;;;;IASH,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;QACvD,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE;QACnD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACnD,CAAC;;;;IAIF,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;QAC1C,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7C,CAAC;IACF,OAAO,cAAc,CAAC;CACzB,CAAC,MAAM,CAAC,CAAC,CAAC;AACX,AACA,AAcA;;;;;AAKA,IAAI,cAAc,IAAI,YAAY;IAC9B,SAAS,cAAc,GAAG;;;;QAItB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;;;;;IAKD,cAAc,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAC/C,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;KACjC,CAAC;;;;;IAKF,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,MAAM,EAAE;QAChD,IAAI,CAAC,MAAM,EAAE;YACT,oBAAoB,EAAE,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACpB,+BAA+B,EAAE,CAAC;SACrC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,mCAAmC,EAAE,CAAC;SACzC;QACD,IAAI,MAAM,YAAY,eAAe,EAAE;YACnC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;YAC9B,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;SAC7C;aACI,IAAI,MAAM,YAAY,cAAc,EAAE;YACvC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;YAC9B,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;SAC5C;QACD,2BAA2B,EAAE,CAAC;KACjC,CAAC;;;;;;;IAOF,cAAc,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,MAAM,EAAE,GAAG,CAAC;;;;;;;IAOvE,cAAc,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,MAAM,EAAE,GAAG,CAAC;;;;IAItE,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;QAC1C,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC/B;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B,CAAC;;;;IAIF,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC3C,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACpB,IAAI,CAAC,MAAM,EAAE,CAAC;SACjB;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC3B,CAAC;;;;;IAKF,cAAc,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,EAAE,EAAE;QAClD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACxB,CAAC;;;;IAIF,cAAc,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;QACpD,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SAC1B;KACJ,CAAC;IACF,OAAO,cAAc,CAAC;CACzB,EAAE,CAAC,CAAC,AACL,AACA,AAgBC,AACD;;AC1RA;;;;;;AAMA,IAAI,aAAa,IAAI,UAAU,MAAM,EAAE;IACnCA,SAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;;;;;;;IAOzC,SAAS,aAAa,CAAC,eAAe,EAAE,yBAAyB,EAAE,OAAO,EAAE,gBAAgB,EAAE;QAC1F,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,eAAe,GAAG,eAAe,CAAC;QACxC,KAAK,CAAC,yBAAyB,GAAG,yBAAyB,CAAC;QAC5D,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAC1C,OAAO,KAAK,CAAC;KAChB;;;;;;;IAOD,aAAa,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,MAAM,EAAE;QAC9D,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,qBAAqB,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjH,qBAAqB,YAAY,CAAC;;;;;QAKlC,IAAI,MAAM,CAAC,gBAAgB,EAAE;YACzB,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;YACpK,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;SACrE;aACI;YACD,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACjF,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,YAAY,CAAC,YAAY;gBAC1B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAChD,YAAY,CAAC,OAAO,EAAE,CAAC;aAC1B,CAAC,CAAC;SACN;;;QAGD,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3E,OAAO,YAAY,CAAC;KACvB,CAAC;;;;;;;IAOF,aAAa,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,MAAM,EAAE;QAC7D,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,qBAAqB,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC7D,qBAAqB,OAAO,GAAG,aAAa,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACpG,OAAO,CAAC,aAAa,EAAE,CAAC;;;;QAIxB,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,QAAQ,EAAE,EAAE,OAAO,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;QACvG,IAAI,CAAC,YAAY,EAAE,YAAY;YAC3B,qBAAqB,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBACd,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC/B;SACJ,EAAE,CAAC;;QAEJ,OAAO,OAAO,CAAC;KAClB,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC1C,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,IAAI,EAAE;YACzC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACrE;KACJ,CAAC;;;;;;IAMF,aAAa,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,YAAY,EAAE;QACpE,QAAQ,EAAE,YAAY,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;KACnD,CAAC;IACF,OAAO,aAAa,CAAC;CACxB,CAAC,cAAc,CAAC,CAAC,CAAC,AACnB,AACA,AASC,AACD;;AC3GA;;;;;;;;;AASA,IAAI,uBAAuB,IAAI,UAAU,MAAM,EAAE;IAC7CA,SAAiB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;;;;;IAKnD,SAAS,uBAAuB,CAAC,WAAW,EAAE,gBAAgB,EAAE;QAC5D,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,gBAAgB,CAAC,IAAI,IAAI,CAAC;KACnE;IACD,uBAAuB,CAAC,UAAU,GAAG;QACjC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACd,QAAQ,EAAE,qCAAqC;oBAC/C,QAAQ,EAAE,WAAW;iBACxB,EAAE,EAAE;KAChB,CAAC;;;;IAIF,uBAAuB,CAAC,cAAc,GAAG,YAAY,EAAE,OAAO;QAC1D,EAAE,IAAI,EAAE,WAAW,GAAG;QACtB,EAAE,IAAI,EAAE,gBAAgB,GAAG;KAC9B,CAAC,EAAE,CAAC;IACL,OAAO,uBAAuB,CAAC;CAClC,CAAC,cAAc,CAAC,CAAC,CAAC;AACnB,AACA,AASA;;;;;;;AAOA,IAAI,mBAAmB,IAAI,UAAU,MAAM,EAAE;IACzCA,SAAiB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;;;;;IAK/C,SAAS,mBAAmB,CAAC,yBAAyB,EAAE,iBAAiB,EAAE;QACvE,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC,KAAK,CAAC,yBAAyB,GAAG,yBAAyB,CAAC;QAC5D,KAAK,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;;;;QAI5C,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACrB,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS,EAAE,mBAAmB,EAAE;;;;;QAKtE,GAAG,EAAE,YAAY,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;;;;;QAKxC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;QACtC,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE;;;;;QAK3D,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;;;;;QAKD,GAAG,EAAE,UAAU,MAAM,EAAE;YACnB,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBACpB,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACtC;YACD,IAAI,MAAM,EAAE;gBACR,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;aAC9C;YACD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;SACzB;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;;;;IAIH,mBAAmB,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QACpD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACvB,CAAC;;;;;;;;IAQF,mBAAmB,CAAC,SAAS,CAAC,qBAAqB,GAAG,UAAU,MAAM,EAAE;QACpE,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;;;QAG7B,qBAAqB,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,IAAI;YACnE,MAAM,CAAC,gBAAgB;YACvB,IAAI,CAAC,iBAAiB,CAAC;QAC3B,qBAAqB,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjH,qBAAqB,GAAG,GAAG,gBAAgB,CAAC,eAAe,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAC3J,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,OAAO,GAAG,CAAC;KACd,CAAC;;;;;;;IAOF,mBAAmB,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,MAAM,EAAE;QACnE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC7B,qBAAqB,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7G,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAClG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,OAAO,OAAO,CAAC;KAClB,CAAC;IACF,mBAAmB,CAAC,UAAU,GAAG;QAC7B,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBACd,QAAQ,EAAE,+BAA+B;oBACzC,QAAQ,EAAE,eAAe;oBACzB,MAAM,EAAE,CAAC,uBAAuB,CAAC;iBACpC,EAAE,EAAE;KAChB,CAAC;;;;IAIF,mBAAmB,CAAC,cAAc,GAAG,YAAY,EAAE,OAAO;QACtD,EAAE,IAAI,EAAE,wBAAwB,GAAG;QACnC,EAAE,IAAI,EAAE,gBAAgB,GAAG;KAC9B,CAAC,EAAE,CAAC;IACL,mBAAmB,CAAC,cAAc,GAAG;QACjC,mBAAmB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE;KACjE,CAAC;IACF,OAAO,mBAAmB,CAAC;CAC9B,CAAC,cAAc,CAAC,CAAC,CAAC;AACnB,AACA,AAoBA,IAAI,YAAY,IAAI,YAAY;IAC5B,SAAS,YAAY,GAAG;KACvB;IACD,YAAY,CAAC,UAAU,GAAG;QACtB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;oBACb,OAAO,EAAE,CAAC,uBAAuB,EAAE,mBAAmB,CAAC;oBACvD,YAAY,EAAE,CAAC,uBAAuB,EAAE,mBAAmB,CAAC;iBAC/D,EAAE,EAAE;KAChB,CAAC;;;;IAIF,YAAY,CAAC,cAAc,GAAG,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACzD,OAAO,YAAY,CAAC;CACvB,EAAE,CAAC,CAAC,AACL,AACA,AAQC,AACD;;ACrNA;;;;;AAKA,IAAI,cAAc,IAAI,YAAY;;;;;IAK9B,SAAS,cAAc,CAAC,eAAe,EAAE,aAAa,EAAE;QACpD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACtC;;;;;;IAMD,cAAc,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE,aAAa,EAAE;QAC3D,qBAAqB,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAC9B,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;KACzD,CAAC;IACF,OAAO,cAAc,CAAC;CACzB,EAAE,CAAC,CAAC,AACL,AACA,AAKC,AACD;;AC1CA;;GAEG,AACH,AAAkL,AAClL;;"}