blob: a40ae35a44fc29cf1dcdbef3dab4ae91f81468f8 [file] [log] [blame]
{"version":3,"file":"material-tabs.umd.js","sources":["../../../../../src/material/tabs/ink-bar.ts","../../../../../external/npm/node_modules/tslib/tslib.es6.js","../../../../../src/material/tabs/tab-content.ts","../../../../../src/material/tabs/tab-label.ts","../../../../../src/material/tabs/tab.ts","../../../../../src/material/tabs/tabs-animations.ts","../../../../../src/material/tabs/tab-body.ts","../../../../../src/material/tabs/tab-config.ts","../../../../../src/material/tabs/tab-group.ts","../../../../../src/material/tabs/tab-label-wrapper.ts","../../../../../src/material/tabs/paginated-tab-header.ts","../../../../../src/material/tabs/tab-header.ts","../../../../../src/material/tabs/tab-nav-bar/tab-nav-bar.ts","../../../../../src/material/tabs/tabs-module.ts","../../../../../src/material/tabs/tab-nav-bar/index.ts","../../../../../src/material/tabs/public-api.ts","../../../../../src/material/tabs/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC 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\nimport {Directive, ElementRef, Inject, InjectionToken, NgZone, Optional} from '@angular/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\n/**\n * Interface for a a MatInkBar positioner method, defining the positioning and width of the ink\n * bar in a set of tabs.\n */\nexport interface _MatInkBarPositioner {\n (element: HTMLElement): { left: string, width: string };\n}\n\n/** Injection token for the MatInkBar's Positioner. */\nexport const _MAT_INK_BAR_POSITIONER =\n new InjectionToken<_MatInkBarPositioner>('MatInkBarPositioner', {\n providedIn: 'root',\n factory: _MAT_INK_BAR_POSITIONER_FACTORY\n });\n\n/**\n * The default positioner function for the MatInkBar.\n * @docs-private\n */\nexport function _MAT_INK_BAR_POSITIONER_FACTORY(): _MatInkBarPositioner {\n const method = (element: HTMLElement) => ({\n left: element ? (element.offsetLeft || 0) + 'px' : '0',\n width: element ? (element.offsetWidth || 0) + 'px' : '0',\n });\n\n return method;\n}\n\n/**\n * The ink-bar is used to display and animate the line underneath the current active tab label.\n * @docs-private\n */\n@Directive({\n selector: 'mat-ink-bar',\n host: {\n 'class': 'mat-ink-bar',\n '[class._mat-animation-noopable]': `_animationMode === 'NoopAnimations'`,\n },\n})\nexport class MatInkBar {\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n @Inject(_MAT_INK_BAR_POSITIONER) private _inkBarPositioner: _MatInkBarPositioner,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) { }\n\n /**\n * Calculates the styles from the provided element in order to align the ink-bar to that element.\n * Shows the ink bar if previously set as hidden.\n * @param element\n */\n alignToElement(element: HTMLElement) {\n this.show();\n\n if (typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => this._setStyles(element));\n });\n } else {\n this._setStyles(element);\n }\n }\n\n /** Shows the ink bar. */\n show(): void {\n this._elementRef.nativeElement.style.visibility = 'visible';\n }\n\n /** Hides the ink bar. */\n hide(): void {\n this._elementRef.nativeElement.style.visibility = 'hidden';\n }\n\n /**\n * Sets the proper styles to the ink bar element.\n * @param element\n */\n private _setStyles(element: HTMLElement) {\n const positions = this._inkBarPositioner(element);\n const inkBar: HTMLElement = this._elementRef.nativeElement;\n\n inkBar.style.left = positions.left;\n inkBar.style.width = positions.width;\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\n * @license\n * Copyright Google LLC 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\nimport {Directive, InjectionToken, TemplateRef} from '@angular/core';\n\n/**\n * Injection token that can be used to reference instances of `MatTabContent`. It serves as\n * alternative token to the actual `MatTabContent` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_TAB_CONTENT = new InjectionToken<MatTabContent>('MatTabContent');\n\n/** Decorates the `ng-template` tags and reads out the template from it. */\n@Directive({\n selector: '[matTabContent]',\n providers: [{provide: MAT_TAB_CONTENT, useExisting: MatTabContent}],\n})\nexport class MatTabContent {\n constructor(\n /** Content for the tab. */ public template: TemplateRef<any>) {}\n}\n","/**\n * @license\n * Copyright Google LLC 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\nimport {Directive, InjectionToken} from '@angular/core';\nimport {CdkPortal} from '@angular/cdk/portal';\n\n/**\n * Injection token that can be used to reference instances of `MatTabLabel`. It serves as\n * alternative token to the actual `MatTabLabel` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_TAB_LABEL = new InjectionToken<MatTabLabel>('MatTabLabel');\n\n/** Used to flag tab labels for use with the portal directive */\n@Directive({\n selector: '[mat-tab-label], [matTabLabel]',\n providers: [{provide: MAT_TAB_LABEL, useExisting: MatTabLabel}],\n})\nexport class MatTabLabel extends CdkPortal {}\n","/**\n * @license\n * Copyright Google LLC 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\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n InjectionToken,\n Inject,\n} from '@angular/core';\nimport {CanDisable, CanDisableCtor, mixinDisabled} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {MAT_TAB_CONTENT} from './tab-content';\nimport {MAT_TAB_LABEL, MatTabLabel} from './tab-label';\n\n\n// Boilerplate for applying mixins to MatTab.\n/** @docs-private */\nclass MatTabBase {}\nconst _MatTabMixinBase: CanDisableCtor & typeof MatTabBase =\n mixinDisabled(MatTabBase);\n\n/**\n * Used to provide a tab group to a tab without causing a circular dependency.\n * @docs-private\n */\nexport const MAT_TAB_GROUP = new InjectionToken<any>('MAT_TAB_GROUP');\n\n@Component({\n selector: 'mat-tab',\n templateUrl: 'tab.html',\n inputs: ['disabled'],\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matTab',\n})\nexport class MatTab extends _MatTabMixinBase implements OnInit, CanDisable, OnChanges, OnDestroy {\n /** Content for the tab label given by `<ng-template mat-tab-label>`. */\n @ContentChild(MAT_TAB_LABEL)\n get templateLabel(): MatTabLabel { return this._templateLabel; }\n set templateLabel(value: MatTabLabel) { this._setTemplateLabelInput(value); }\n protected _templateLabel: MatTabLabel;\n\n /**\n * Template provided in the tab content that will be used if present, used to enable lazy-loading\n */\n @ContentChild(MAT_TAB_CONTENT, {read: TemplateRef, static: true})\n _explicitContent: TemplateRef<any>;\n\n /** Template inside the MatTab view that contains an `<ng-content>`. */\n @ViewChild(TemplateRef, {static: true}) _implicitContent: TemplateRef<any>;\n\n /** Plain text label for the tab, used when there is no template label. */\n @Input('label') textLabel: string = '';\n\n /** Aria label for the tab. */\n @Input('aria-label') ariaLabel: string;\n\n /**\n * Reference to the element that the tab is labelled by.\n * Will be cleared if `aria-label` is set at the same time.\n */\n @Input('aria-labelledby') ariaLabelledby: string;\n\n /** Portal that will be the hosted content of the tab */\n private _contentPortal: TemplatePortal | null = null;\n\n /** @docs-private */\n get content(): TemplatePortal | null {\n return this._contentPortal;\n }\n\n /** Emits whenever the internal state of the tab changes. */\n readonly _stateChanges = new Subject<void>();\n\n /**\n * The relatively indexed position where 0 represents the center, negative is left, and positive\n * represents the right.\n */\n position: number | null = null;\n\n /**\n * The initial relatively index origin of the tab if it was created and selected after there\n * was already a selected tab. Provides context of what position the tab should originate from.\n */\n origin: number | null = null;\n\n /**\n * Whether the tab is currently active.\n */\n isActive = false;\n\n constructor(\n private _viewContainerRef: ViewContainerRef,\n @Inject(MAT_TAB_GROUP) public _closestTabGroup: any) {\n super();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hasOwnProperty('textLabel') || changes.hasOwnProperty('disabled')) {\n this._stateChanges.next();\n }\n }\n\n ngOnDestroy(): void {\n this._stateChanges.complete();\n }\n\n ngOnInit(): void {\n this._contentPortal = new TemplatePortal(\n this._explicitContent || this._implicitContent, this._viewContainerRef);\n }\n\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n protected _setTemplateLabelInput(value: MatTabLabel) {\n // Only update the templateLabel via query if there is actually\n // a MatTabLabel found. This works around an issue where a user may have\n // manually set `templateLabel` during creation mode, which would then get clobbered\n // by `undefined` when this query resolves.\n if (value) {\n this._templateLabel = value;\n }\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC 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 {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material tabs.\n * @docs-private\n */\nexport const matTabsAnimations: {\n readonly translateTab: AnimationTriggerMetadata;\n} = {\n /** Animation translates a tab along the X axis. */\n translateTab: trigger('translateTab', [\n // Note: transitions to `none` instead of 0, because some browsers might blur the content.\n state('center, void, left-origin-center, right-origin-center', style({transform: 'none'})),\n\n // If the tab is either on the left or right, we additionally add a `min-height` of 1px\n // in order to ensure that the element has a height before its state changes. This is\n // necessary because Chrome does seem to skip the transition in RTL mode if the element does\n // not have a static height and is not rendered. See related issue: #9465\n state('left', style({transform: 'translate3d(-100%, 0, 0)', minHeight: '1px'})),\n state('right', style({transform: 'translate3d(100%, 0, 0)', minHeight: '1px'})),\n\n transition('* => left, * => right, left => center, right => center',\n animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')),\n transition('void => left-origin-center', [\n style({transform: 'translate3d(-100%, 0, 0)'}),\n animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')\n ]),\n transition('void => right-origin-center', [\n style({transform: 'translate3d(100%, 0, 0)'}),\n animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')\n ])\n ])\n};\n","/**\n * @license\n * Copyright Google LLC 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\nimport {\n Component,\n ChangeDetectorRef,\n Input,\n Inject,\n Output,\n EventEmitter,\n OnDestroy,\n OnInit,\n ElementRef,\n Directive,\n Optional,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ComponentFactoryResolver,\n ViewContainerRef,\n forwardRef,\n ViewChild,\n} from '@angular/core';\nimport {AnimationEvent} from '@angular/animations';\nimport {TemplatePortal, CdkPortalOutlet} from '@angular/cdk/portal';\nimport {Directionality, Direction} from '@angular/cdk/bidi';\nimport {DOCUMENT} from '@angular/common';\nimport {Subscription, Subject} from 'rxjs';\nimport {matTabsAnimations} from './tabs-animations';\nimport {startWith, distinctUntilChanged} from 'rxjs/operators';\n\n/**\n * These position states are used internally as animation states for the tab body. Setting the\n * position state to left, right, or center will transition the tab body from its current\n * position to its respective state. If there is not current position (void, in the case of a new\n * tab body), then there will be no transition animation to its state.\n *\n * In the case of a new tab body that should immediately be centered with an animating transition,\n * then left-origin-center or right-origin-center can be used, which will use left or right as its\n * psuedo-prior state.\n */\nexport type MatTabBodyPositionState =\n 'left' | 'center' | 'right' | 'left-origin-center' | 'right-origin-center';\n\n/**\n * The origin state is an internally used state that is set on a new tab body indicating if it\n * began to the left or right of the prior selected index. For example, if the selected index was\n * set to 1, and a new tab is created and selected at index 2, then the tab body would have an\n * origin of right because its index was greater than the prior selected index.\n */\nexport type MatTabBodyOriginState = 'left' | 'right';\n\n/**\n * The portal host directive for the contents of the tab.\n * @docs-private\n */\n@Directive({\n selector: '[matTabBodyHost]'\n})\nexport class MatTabBodyPortal extends CdkPortalOutlet implements OnInit, OnDestroy {\n /** Subscription to events for when the tab body begins centering. */\n private _centeringSub = Subscription.EMPTY;\n /** Subscription to events for when the tab body finishes leaving from center position. */\n private _leavingSub = Subscription.EMPTY;\n\n constructor(\n componentFactoryResolver: ComponentFactoryResolver,\n viewContainerRef: ViewContainerRef,\n @Inject(forwardRef(() => MatTabBody)) private _host: MatTabBody,\n @Inject(DOCUMENT) _document: any) {\n super(componentFactoryResolver, viewContainerRef, _document);\n }\n\n /** Set initial visibility or set up subscription for changing visibility. */\n ngOnInit(): void {\n super.ngOnInit();\n\n this._centeringSub = this._host._beforeCentering\n .pipe(startWith(this._host._isCenterPosition(this._host._position)))\n .subscribe((isCentering: boolean) => {\n if (isCentering && !this.hasAttached()) {\n this.attach(this._host._content);\n }\n });\n\n this._leavingSub = this._host._afterLeavingCenter.subscribe(() => {\n this.detach();\n });\n }\n\n /** Clean up centering subscription. */\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this._centeringSub.unsubscribe();\n this._leavingSub.unsubscribe();\n }\n}\n\n/**\n * Base class with all of the `MatTabBody` functionality.\n * @docs-private\n */\n@Directive()\nexport abstract class _MatTabBodyBase implements OnInit, OnDestroy {\n /** Current position of the tab-body in the tab-group. Zero means that the tab is visible. */\n private _positionIndex: number;\n\n /** Subscription to the directionality change observable. */\n private _dirChangeSubscription = Subscription.EMPTY;\n\n /** Tab body position state. Used by the animation trigger for the current state. */\n _position: MatTabBodyPositionState;\n\n /** Emits when an animation on the tab is complete. */\n _translateTabComplete = new Subject<AnimationEvent>();\n\n /** Event emitted when the tab begins to animate towards the center as the active tab. */\n @Output() readonly _onCentering: EventEmitter<number> = new EventEmitter<number>();\n\n /** Event emitted before the centering of the tab begins. */\n @Output() readonly _beforeCentering: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted before the centering of the tab begins. */\n @Output() readonly _afterLeavingCenter: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted when the tab completes its animation towards the center. */\n @Output() readonly _onCentered: EventEmitter<void> = new EventEmitter<void>(true);\n\n /** The portal host inside of this container into which the tab body content will be loaded. */\n abstract _portalHost: CdkPortalOutlet;\n\n /** The tab body content to display. */\n @Input('content') _content: TemplatePortal;\n\n /** Position that will be used when the tab is immediately becoming visible after creation. */\n @Input() origin: number | null;\n\n // Note that the default value will always be overwritten by `MatTabBody`, but we need one\n // anyway to prevent the animations module from throwing an error if the body is used on its own.\n /** Duration for the tab's animation. */\n @Input() animationDuration: string = '500ms';\n\n /** The shifted index position of the tab body, where zero represents the active center tab. */\n @Input()\n set position(position: number) {\n this._positionIndex = position;\n this._computePositionAnimationState();\n }\n\n constructor(private _elementRef: ElementRef<HTMLElement>,\n @Optional() private _dir: Directionality,\n changeDetectorRef: ChangeDetectorRef) {\n\n if (_dir) {\n this._dirChangeSubscription = _dir.change.subscribe((dir: Direction) => {\n this._computePositionAnimationState(dir);\n changeDetectorRef.markForCheck();\n });\n }\n\n // Ensure that we get unique animation events, because the `.done` callback can get\n // invoked twice in some browsers. See https://github.com/angular/angular/issues/24084.\n this._translateTabComplete.pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n })).subscribe(event => {\n // If the transition to the center is complete, emit an event.\n if (this._isCenterPosition(event.toState) && this._isCenterPosition(this._position)) {\n this._onCentered.emit();\n }\n\n if (this._isCenterPosition(event.fromState) && !this._isCenterPosition(this._position)) {\n this._afterLeavingCenter.emit();\n }\n });\n }\n\n /**\n * After initialized, check if the content is centered and has an origin. If so, set the\n * special position states that transition the tab from the left or right before centering.\n */\n ngOnInit() {\n if (this._position == 'center' && this.origin != null) {\n this._position = this._computePositionFromOrigin(this.origin);\n }\n }\n\n ngOnDestroy() {\n this._dirChangeSubscription.unsubscribe();\n this._translateTabComplete.complete();\n }\n\n _onTranslateTabStarted(event: AnimationEvent): void {\n const isCentering = this._isCenterPosition(event.toState);\n this._beforeCentering.emit(isCentering);\n if (isCentering) {\n this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\n }\n }\n\n /** The text direction of the containing app. */\n _getLayoutDirection(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Whether the provided position state is considered center, regardless of origin. */\n _isCenterPosition(position: MatTabBodyPositionState|string): boolean {\n return position == 'center' ||\n position == 'left-origin-center' ||\n position == 'right-origin-center';\n }\n\n /** Computes the position state that will be used for the tab-body animation trigger. */\n private _computePositionAnimationState(dir: Direction = this._getLayoutDirection()) {\n if (this._positionIndex < 0) {\n this._position = dir == 'ltr' ? 'left' : 'right';\n } else if (this._positionIndex > 0) {\n this._position = dir == 'ltr' ? 'right' : 'left';\n } else {\n this._position = 'center';\n }\n }\n\n /**\n * Computes the position state based on the specified origin position. This is used if the\n * tab is becoming visible immediately after creation.\n */\n private _computePositionFromOrigin(origin: number): MatTabBodyPositionState {\n const dir = this._getLayoutDirection();\n\n if ((dir == 'ltr' && origin <= 0) || (dir == 'rtl' && origin > 0)) {\n return 'left-origin-center';\n }\n\n return 'right-origin-center';\n }\n}\n\n/**\n * Wrapper for the contents of a tab.\n * @docs-private\n */\n@Component({\n selector: 'mat-tab-body',\n templateUrl: 'tab-body.html',\n styleUrls: ['tab-body.css'],\n encapsulation: ViewEncapsulation.None,\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n animations: [matTabsAnimations.translateTab],\n host: {\n 'class': 'mat-tab-body',\n }\n})\nexport class MatTabBody extends _MatTabBodyBase {\n @ViewChild(CdkPortalOutlet) _portalHost: CdkPortalOutlet;\n\n constructor(elementRef: ElementRef<HTMLElement>,\n @Optional() dir: Directionality,\n changeDetectorRef: ChangeDetectorRef) {\n super(elementRef, dir, changeDetectorRef);\n }\n}\n","/**\n * @license\n * Copyright Google LLC 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 {InjectionToken} from '@angular/core';\n\n/** Object that can be used to configure the default options for the tabs module. */\nexport interface MatTabsConfig {\n /** Duration for the tab animation. Must be a valid CSS value (e.g. 600ms). */\n animationDuration?: string;\n\n /**\n * Whether pagination should be disabled. This can be used to avoid unnecessary\n * layout recalculations if it's known that pagination won't be required.\n */\n disablePagination?: boolean;\n\n /**\n * Whether the ink bar should fit its width to the size of the tab label content.\n * This only applies to the MDC-based tabs.\n */\n fitInkBarToContent?: boolean;\n\n /** Whether the tab group should grow to the size of the active tab. */\n dynamicHeight?: boolean;\n}\n\n/** Injection token that can be used to provide the default options the tabs module. */\nexport const MAT_TABS_CONFIG = new InjectionToken<MatTabsConfig>('MAT_TABS_CONFIG');\n","/**\n * @license\n * Copyright Google LLC 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\nimport {\n BooleanInput,\n coerceBooleanProperty,\n coerceNumberProperty,\n NumberInput\n} from '@angular/cdk/coercion';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FocusOrigin} from '@angular/cdk/a11y';\nimport {\n CanColor,\n CanColorCtor,\n CanDisableRipple,\n CanDisableRippleCtor,\n mixinColor,\n mixinDisableRipple,\n ThemePalette,\n} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {merge, Subscription} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\nimport {MAT_TAB_GROUP, MatTab} from './tab';\nimport {MAT_TABS_CONFIG, MatTabsConfig} from './tab-config';\n\n\n/** Used to generate unique ID's for each tab component */\nlet nextId = 0;\n\n/** A simple change event emitted on focus or selection changes. */\nexport class MatTabChangeEvent {\n /** Index of the currently-selected tab. */\n index: number;\n /** Reference to the currently-selected tab. */\n tab: MatTab;\n}\n\n/** Possible positions for the tab header. */\nexport type MatTabHeaderPosition = 'above' | 'below';\n\n// Boilerplate for applying mixins to MatTabGroup.\n/** @docs-private */\nclass MatTabGroupMixinBase {\n constructor(public _elementRef: ElementRef) {}\n}\nconst _MatTabGroupMixinBase: CanColorCtor & CanDisableRippleCtor & typeof MatTabGroupMixinBase =\n mixinColor(mixinDisableRipple(MatTabGroupMixinBase), 'primary');\n\ninterface MatTabGroupBaseHeader {\n _alignInkBarToSelectedTab: () => void;\n focusIndex: number;\n}\n\n/**\n * Base class with all of the `MatTabGroupBase` functionality.\n * @docs-private\n */\n@Directive()\nexport abstract class _MatTabGroupBase extends _MatTabGroupMixinBase implements AfterContentInit,\n AfterContentChecked, OnDestroy, CanColor, CanDisableRipple {\n\n /**\n * All tabs inside the tab group. This includes tabs that belong to groups that are nested\n * inside the current one. We filter out only the tabs that belong to this group in `_tabs`.\n */\n abstract _allTabs: QueryList<MatTab>;\n abstract _tabBodyWrapper: ElementRef;\n abstract _tabHeader: MatTabGroupBaseHeader;\n\n /** All of the tabs that belong to the group. */\n _tabs: QueryList<MatTab> = new QueryList<MatTab>();\n\n /** The tab index that should be selected after the content has been checked. */\n private _indexToSelect: number | null = 0;\n\n /** Snapshot of the height of the tab body wrapper before another tab is activated. */\n private _tabBodyWrapperHeight: number = 0;\n\n /** Subscription to tabs being added/removed. */\n private _tabsSubscription = Subscription.EMPTY;\n\n /** Subscription to changes in the tab labels. */\n private _tabLabelSubscription = Subscription.EMPTY;\n\n /** Whether the tab group should grow to the size of the active tab. */\n @Input()\n get dynamicHeight(): boolean { return this._dynamicHeight; }\n set dynamicHeight(value: boolean) { this._dynamicHeight = coerceBooleanProperty(value); }\n private _dynamicHeight: boolean;\n\n /** The index of the active tab. */\n @Input()\n get selectedIndex(): number | null { return this._selectedIndex; }\n set selectedIndex(value: number | null) {\n this._indexToSelect = coerceNumberProperty(value, null);\n }\n private _selectedIndex: number | null = null;\n\n /** Position of the tab header. */\n @Input() headerPosition: MatTabHeaderPosition = 'above';\n\n /** Duration for the tab animation. Will be normalized to milliseconds if no units are set. */\n @Input()\n get animationDuration(): string { return this._animationDuration; }\n set animationDuration(value: string) {\n this._animationDuration = /^\\d+$/.test(value) ? value + 'ms' : value;\n }\n private _animationDuration: string;\n\n /**\n * Whether pagination should be disabled. This can be used to avoid unnecessary\n * layout recalculations if it's known that pagination won't be required.\n */\n @Input()\n disablePagination: boolean;\n\n /** Background color of the tab group. */\n @Input()\n get backgroundColor(): ThemePalette { return this._backgroundColor; }\n set backgroundColor(value: ThemePalette) {\n const nativeElement: HTMLElement = this._elementRef.nativeElement;\n\n nativeElement.classList.remove(`mat-background-${this.backgroundColor}`);\n\n if (value) {\n nativeElement.classList.add(`mat-background-${value}`);\n }\n\n this._backgroundColor = value;\n }\n private _backgroundColor: ThemePalette;\n\n /** Output to enable support for two-way binding on `[(selectedIndex)]` */\n @Output() readonly selectedIndexChange: EventEmitter<number> = new EventEmitter<number>();\n\n /** Event emitted when focus has changed within a tab group. */\n @Output() readonly focusChange: EventEmitter<MatTabChangeEvent> =\n new EventEmitter<MatTabChangeEvent>();\n\n /** Event emitted when the body animation has completed */\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted when the tab selection has changed. */\n @Output() readonly selectedTabChange: EventEmitter<MatTabChangeEvent> =\n new EventEmitter<MatTabChangeEvent>(true);\n\n private _groupId: number;\n\n constructor(elementRef: ElementRef,\n protected _changeDetectorRef: ChangeDetectorRef,\n @Inject(MAT_TABS_CONFIG) @Optional() defaultConfig?: MatTabsConfig,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) {\n super(elementRef);\n this._groupId = nextId++;\n this.animationDuration = defaultConfig && defaultConfig.animationDuration ?\n defaultConfig.animationDuration : '500ms';\n this.disablePagination = defaultConfig && defaultConfig.disablePagination != null ?\n defaultConfig.disablePagination : false;\n this.dynamicHeight = defaultConfig && defaultConfig.dynamicHeight != null ?\n defaultConfig.dynamicHeight : false;\n }\n\n /**\n * After the content is checked, this component knows what tabs have been defined\n * and what the selected index should be. This is where we can know exactly what position\n * each tab should be in according to the new selected index, and additionally we know how\n * a new selected tab should transition in (from the left or right).\n */\n ngAfterContentChecked() {\n // Don't clamp the `indexToSelect` immediately in the setter because it can happen that\n // the amount of tabs changes before the actual change detection runs.\n const indexToSelect = this._indexToSelect = this._clampTabIndex(this._indexToSelect);\n\n // If there is a change in selected index, emit a change event. Should not trigger if\n // the selected index has not yet been initialized.\n if (this._selectedIndex != indexToSelect) {\n const isFirstRun = this._selectedIndex == null;\n\n if (!isFirstRun) {\n this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\n // Preserve the height so page doesn't scroll up during tab change.\n // Fixes https://stackblitz.com/edit/mat-tabs-scroll-page-top-on-tab-change\n const wrapper = this._tabBodyWrapper.nativeElement;\n wrapper.style.minHeight = wrapper.clientHeight + 'px';\n }\n\n // Changing these values after change detection has run\n // since the checked content may contain references to them.\n Promise.resolve().then(() => {\n this._tabs.forEach((tab, index) => tab.isActive = index === indexToSelect);\n\n if (!isFirstRun) {\n this.selectedIndexChange.emit(indexToSelect);\n // Clear the min-height, this was needed during tab change to avoid\n // unnecessary scrolling.\n this._tabBodyWrapper.nativeElement.style.minHeight = '';\n }\n });\n }\n\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\n this._tabs.forEach((tab: MatTab, index: number) => {\n tab.position = index - indexToSelect;\n\n // If there is already a selected tab, then set up an origin for the next selected tab\n // if it doesn't have one already.\n if (this._selectedIndex != null && tab.position == 0 && !tab.origin) {\n tab.origin = indexToSelect - this._selectedIndex;\n }\n });\n\n if (this._selectedIndex !== indexToSelect) {\n this._selectedIndex = indexToSelect;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngAfterContentInit() {\n this._subscribeToAllTabChanges();\n this._subscribeToTabLabels();\n\n // Subscribe to changes in the amount of tabs, in order to be\n // able to re-render the content as new tabs are added or removed.\n this._tabsSubscription = this._tabs.changes.subscribe(() => {\n const indexToSelect = this._clampTabIndex(this._indexToSelect);\n\n // Maintain the previously-selected tab if a new tab is added or removed and there is no\n // explicit change that selects a different tab.\n if (indexToSelect === this._selectedIndex) {\n const tabs = this._tabs.toArray();\n\n for (let i = 0; i < tabs.length; i++) {\n if (tabs[i].isActive) {\n // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed\n // event, otherwise the consumer may end up in an infinite loop in some edge cases like\n // adding a tab within the `selectedIndexChange` event.\n this._indexToSelect = this._selectedIndex = i;\n break;\n }\n }\n }\n\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** Listens to changes in all of the tabs. */\n private _subscribeToAllTabChanges() {\n // Since we use a query with `descendants: true` to pick up the tabs, we may end up catching\n // some that are inside of nested tab groups. We filter them out manually by checking that\n // the closest group to the tab is the current one.\n this._allTabs.changes\n .pipe(startWith(this._allTabs))\n .subscribe((tabs: QueryList<MatTab>) => {\n this._tabs.reset(tabs.filter(tab => tab._closestTabGroup === this));\n this._tabs.notifyOnChanges();\n });\n }\n\n ngOnDestroy() {\n this._tabs.destroy();\n this._tabsSubscription.unsubscribe();\n this._tabLabelSubscription.unsubscribe();\n }\n\n /** Re-aligns the ink bar to the selected tab element. */\n realignInkBar() {\n if (this._tabHeader) {\n this._tabHeader._alignInkBarToSelectedTab();\n }\n }\n\n _focusChanged(index: number) {\n this.focusChange.emit(this._createChangeEvent(index));\n }\n\n private _createChangeEvent(index: number): MatTabChangeEvent {\n const event = new MatTabChangeEvent;\n event.index = index;\n if (this._tabs && this._tabs.length) {\n event.tab = this._tabs.toArray()[index];\n }\n return event;\n }\n\n /**\n * Subscribes to changes in the tab labels. This is needed, because the @Input for the label is\n * on the MatTab component, whereas the data binding is inside the MatTabGroup. In order for the\n * binding to be updated, we need to subscribe to changes in it and trigger change detection\n * manually.\n */\n private _subscribeToTabLabels() {\n if (this._tabLabelSubscription) {\n this._tabLabelSubscription.unsubscribe();\n }\n\n this._tabLabelSubscription = merge(...this._tabs.map(tab => tab._stateChanges))\n .subscribe(() => this._changeDetectorRef.markForCheck());\n }\n\n /** Clamps the given index to the bounds of 0 and the tabs length. */\n private _clampTabIndex(index: number | null): number {\n // Note the `|| 0`, which ensures that values like NaN can't get through\n // and which would otherwise throw the component into an infinite loop\n // (since Math.max(NaN, 0) === NaN).\n return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));\n }\n\n /** Returns a unique id for each tab label element */\n _getTabLabelId(i: number): string {\n return `mat-tab-label-${this._groupId}-${i}`;\n }\n\n /** Returns a unique id for each tab content element */\n _getTabContentId(i: number): string {\n return `mat-tab-content-${this._groupId}-${i}`;\n }\n\n /**\n * Sets the height of the body wrapper to the height of the activating tab if dynamic\n * height property is true.\n */\n _setTabBodyWrapperHeight(tabHeight: number): void {\n if (!this._dynamicHeight || !this._tabBodyWrapperHeight) { return; }\n\n const wrapper: HTMLElement = this._tabBodyWrapper.nativeElement;\n\n wrapper.style.height = this._tabBodyWrapperHeight + 'px';\n\n // This conditional forces the browser to paint the height so that\n // the animation to the new height can have an origin.\n if (this._tabBodyWrapper.nativeElement.offsetHeight) {\n wrapper.style.height = tabHeight + 'px';\n }\n }\n\n /** Removes the height of the tab body wrapper. */\n _removeTabBodyWrapperHeight(): void {\n const wrapper = this._tabBodyWrapper.nativeElement;\n this._tabBodyWrapperHeight = wrapper.clientHeight;\n wrapper.style.height = '';\n this.animationDone.emit();\n }\n\n /** Handle click events, setting new selected index if appropriate. */\n _handleClick(tab: MatTab, tabHeader: MatTabGroupBaseHeader, index: number) {\n if (!tab.disabled) {\n this.selectedIndex = tabHeader.focusIndex = index;\n }\n }\n\n /** Retrieves the tabindex for the tab. */\n _getTabIndex(tab: MatTab, idx: number): number | null {\n if (tab.disabled) {\n return null;\n }\n return this.selectedIndex === idx ? 0 : -1;\n }\n\n /** Callback for when the focused state of a tab has changed. */\n _tabFocusChanged(focusOrigin: FocusOrigin, index: number) {\n if (focusOrigin) {\n this._tabHeader.focusIndex = index;\n }\n }\n\n static ngAcceptInputType_dynamicHeight: BooleanInput;\n static ngAcceptInputType_animationDuration: NumberInput;\n static ngAcceptInputType_selectedIndex: NumberInput;\n static ngAcceptInputType_disableRipple: BooleanInput;\n}\n\n/**\n * Material design tab-group component. Supports basic tab pairs (label + content) and includes\n * animated ink-bar, keyboard navigation, and screen reader.\n * See: https://material.io/design/components/tabs.html\n */\n@Component({\n selector: 'mat-tab-group',\n exportAs: 'matTabGroup',\n templateUrl: 'tab-group.html',\n styleUrls: ['tab-group.css'],\n encapsulation: ViewEncapsulation.None,\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n inputs: ['color', 'disableRipple'],\n providers: [{\n provide: MAT_TAB_GROUP,\n useExisting: MatTabGroup\n }],\n host: {\n 'class': 'mat-tab-group',\n '[class.mat-tab-group-dynamic-height]': 'dynamicHeight',\n '[class.mat-tab-group-inverted-header]': 'headerPosition === \"below\"',\n },\n})\nexport class MatTabGroup extends _MatTabGroupBase {\n @ContentChildren(MatTab, {descendants: true}) _allTabs: QueryList<MatTab>;\n @ViewChild('tabBodyWrapper') _tabBodyWrapper: ElementRef;\n @ViewChild('tabHeader') _tabHeader: MatTabGroupBaseHeader;\n\n constructor(elementRef: ElementRef,\n changeDetectorRef: ChangeDetectorRef,\n @Inject(MAT_TABS_CONFIG) @Optional() defaultConfig?: MatTabsConfig,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef, changeDetectorRef, defaultConfig, animationMode);\n }\n}\n","/**\n * @license\n * Copyright Google LLC 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\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {Directive, ElementRef} from '@angular/core';\nimport {CanDisable, CanDisableCtor, mixinDisabled} from '@angular/material/core';\n\n\n// Boilerplate for applying mixins to MatTabLabelWrapper.\n/** @docs-private */\nclass MatTabLabelWrapperBase {}\nconst _MatTabLabelWrapperMixinBase: CanDisableCtor & typeof MatTabLabelWrapperBase =\n mixinDisabled(MatTabLabelWrapperBase);\n\n/**\n * Used in the `mat-tab-group` view to display tab labels.\n * @docs-private\n */\n@Directive({\n selector: '[matTabLabelWrapper]',\n inputs: ['disabled'],\n host: {\n '[class.mat-tab-disabled]': 'disabled',\n '[attr.aria-disabled]': '!!disabled',\n }\n})\nexport class MatTabLabelWrapper extends _MatTabLabelWrapperMixinBase implements CanDisable {\n constructor(public elementRef: ElementRef) {\n super();\n }\n\n /** Sets focus on the wrapper element */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n getOffsetLeft(): number {\n return this.elementRef.nativeElement.offsetLeft;\n }\n\n getOffsetWidth(): number {\n return this.elementRef.nativeElement.offsetWidth;\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC 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\nimport {\n ChangeDetectorRef,\n ElementRef,\n NgZone,\n Optional,\n QueryList,\n EventEmitter,\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n OnDestroy,\n Directive,\n Inject,\n Input,\n} from '@angular/core';\nimport {Direction, Directionality} from '@angular/cdk/bidi';\nimport {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {FocusKeyManager, FocusableOption} from '@angular/cdk/a11y';\nimport {ENTER, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {merge, of as observableOf, Subject, timer, fromEvent} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\n/** Config used to bind passive event listeners */\nconst passiveEventListenerOptions =\n normalizePassiveListenerOptions({passive: true}) as EventListenerOptions;\n\n/**\n * The directions that scrolling can go in when the header's tabs exceed the header width. 'After'\n * will scroll the header towards the end of the tabs list and 'before' will scroll towards the\n * beginning of the list.\n */\nexport type ScrollDirection = 'after' | 'before';\n\n/**\n * The distance in pixels that will be overshot when scrolling a tab label into view. This helps\n * provide a small affordance to the label next to it.\n */\nconst EXAGGERATED_OVERSCROLL = 60;\n\n/**\n * Amount of milliseconds to wait before starting to scroll the header automatically.\n * Set a little conservatively in order to handle fake events dispatched on touch devices.\n */\nconst HEADER_SCROLL_DELAY = 650;\n\n/**\n * Interval in milliseconds at which to scroll the header\n * while the user is holding their pointer.\n */\nconst HEADER_SCROLL_INTERVAL = 100;\n\n/** Item inside a paginated tab header. */\nexport type MatPaginatedTabHeaderItem = FocusableOption & {elementRef: ElementRef};\n\n/**\n * Base class for a tab header that supported pagination.\n * @docs-private\n */\n@Directive()\nexport abstract class MatPaginatedTabHeader implements AfterContentChecked, AfterContentInit,\n AfterViewInit, OnDestroy {\n abstract _items: QueryList<MatPaginatedTabHeaderItem>;\n abstract _inkBar: {hide: () => void, alignToElement: (element: HTMLElement) => void};\n abstract _tabListContainer: ElementRef<HTMLElement>;\n abstract _tabList: ElementRef<HTMLElement>;\n abstract _nextPaginator: ElementRef<HTMLElement>;\n abstract _previousPaginator: ElementRef<HTMLElement>;\n\n /** The distance in pixels that the tab labels should be translated to the left. */\n private _scrollDistance = 0;\n\n /** Whether the header should scroll to the selected index after the view has been checked. */\n private _selectedIndexChanged = false;\n\n /** Emits when the component is destroyed. */\n protected readonly _destroyed = new Subject<void>();\n\n /** Whether the controls for pagination should be displayed */\n _showPaginationControls = false;\n\n /** Whether the tab list can be scrolled more towards the end of the tab label list. */\n _disableScrollAfter = true;\n\n /** Whether the tab list can be scrolled more towards the beginning of the tab label list. */\n _disableScrollBefore = true;\n\n /**\n * The number of tab labels that are displayed on the header. When this changes, the header\n * should re-evaluate the scroll position.\n */\n private _tabLabelCount: number;\n\n /** Whether the scroll distance has changed and should be applied after the view is checked. */\n private _scrollDistanceChanged: boolean;\n\n /** Used to manage focus between the tabs. */\n private _keyManager: FocusKeyManager<MatPaginatedTabHeaderItem>;\n\n /** Cached text content of the header. */\n private _currentTextContent: string;\n\n /** Stream that will stop the automated scrolling. */\n private _stopScrolling = new Subject<void>();\n\n /**\n * Whether pagination should be disabled. This can be used to avoid unnecessary\n * layout recalculations if it's known that pagination won't be required.\n */\n @Input()\n disablePagination: boolean = false;\n\n /** The index of the active tab. */\n get selectedIndex(): number { return this._selectedIndex; }\n set selectedIndex(value: number) {\n value = coerceNumberProperty(value);\n\n if (this._selectedIndex != value) {\n this._selectedIndexChanged = true;\n this._selectedIndex = value;\n\n if (this._keyManager) {\n this._keyManager.updateActiveItem(value);\n }\n }\n }\n private _selectedIndex: number = 0;\n\n /** Event emitted when the option is selected. */\n readonly selectFocusedIndex: EventEmitter<number> = new EventEmitter<number>();\n\n /** Event emitted when a label is focused. */\n readonly indexFocused: EventEmitter<number> = new EventEmitter<number>();\n\n constructor(protected _elementRef: ElementRef<HTMLElement>,\n protected _changeDetectorRef: ChangeDetectorRef,\n private _viewportRuler: ViewportRuler,\n @Optional() private _dir: Directionality,\n private _ngZone: NgZone,\n private _platform: Platform,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) {\n\n // Bind the `mouseleave` event on the outside since it doesn't change anything in the view.\n _ngZone.runOutsideAngular(() => {\n fromEvent(_elementRef.nativeElement, 'mouseleave')\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._stopInterval();\n });\n });\n }\n\n /** Called when the user has selected an item via the keyboard. */\n protected abstract _itemSelected(event: KeyboardEvent): void;\n\n ngAfterViewInit() {\n // We need to handle these events manually, because we want to bind passive event listeners.\n fromEvent(this._previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._handlePaginatorPress('before');\n });\n\n fromEvent(this._nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._handlePaginatorPress('after');\n });\n }\n\n ngAfterContentInit() {\n const dirChange = this._dir ? this._dir.change : observableOf(null);\n const resize = this._viewportRuler.change(150);\n const realign = () => {\n this.updatePagination();\n this._alignInkBarToSelectedTab();\n };\n\n this._keyManager = new FocusKeyManager<MatPaginatedTabHeaderItem>(this._items)\n .withHorizontalOrientation(this._getLayoutDirection())\n .withHomeAndEnd()\n .withWrap();\n\n this._keyManager.updateActiveItem(this._selectedIndex);\n\n // Defer the first call in order to allow for slower browsers to lay out the elements.\n // This helps in cases where the user lands directly on a page with paginated tabs.\n typeof requestAnimationFrame !== 'undefined' ? requestAnimationFrame(realign) : realign();\n\n // On dir change or window resize, realign the ink bar and update the orientation of\n // the key manager if the direction has changed.\n merge(dirChange, resize, this._items.changes).pipe(takeUntil(this._destroyed)).subscribe(() => {\n // We need to defer this to give the browser some time to recalculate\n // the element dimensions. The call has to be wrapped in `NgZone.run`,\n // because the viewport change handler runs outside of Angular.\n this._ngZone.run(() => Promise.resolve().then(realign));\n this._keyManager.withHorizontalOrientation(this._getLayoutDirection());\n });\n\n // If there is a change in the focus key manager we need to emit the `indexFocused`\n // event in order to provide a public event that notifies about focus changes. Also we realign\n // the tabs container by scrolling the new focused tab into the visible section.\n this._keyManager.change.pipe(takeUntil(this._destroyed)).subscribe(newFocusIndex => {\n this.indexFocused.emit(newFocusIndex);\n this._setTabFocus(newFocusIndex);\n });\n }\n\n ngAfterContentChecked(): void {\n // If the number of tab labels have changed, check if scrolling should be enabled\n if (this._tabLabelCount != this._items.length) {\n this.updatePagination();\n this._tabLabelCount = this._items.length;\n this._changeDetectorRef.markForCheck();\n }\n\n // If the selected index has changed, scroll to the label and check if the scrolling controls\n // should be disabled.\n if (this._selectedIndexChanged) {\n this._scrollToLabel(this._selectedIndex);\n this._checkScrollingControls();\n this._alignInkBarToSelectedTab();\n this._selectedIndexChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n\n // If the scroll distance has been changed (tab selected, focused, scroll controls activated),\n // then translate the header to reflect this.\n if (this._scrollDistanceChanged) {\n this._updateTabScrollPosition();\n this._scrollDistanceChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._stopScrolling.complete();\n }\n\n /** Handles keyboard events on the header. */\n _handleKeydown(event: KeyboardEvent) {\n // We don't handle any key bindings with a modifier key.\n if (hasModifierKey(event)) {\n return;\n }\n\n switch (event.keyCode) {\n case ENTER:\n case SPACE:\n if (this.focusIndex !== this.selectedIndex) {\n this.selectFocusedIndex.emit(this.focusIndex);\n this._itemSelected(event);\n }\n break;\n default:\n this._keyManager.onKeydown(event);\n }\n }\n\n /**\n * Callback for when the MutationObserver detects that the content has changed.\n */\n _onContentChanges() {\n const textContent = this._elementRef.nativeElement.textContent;\n\n // We need to diff the text content of the header, because the MutationObserver callback\n // will fire even if the text content didn't change which is inefficient and is prone\n // to infinite loops if a poorly constructed expression is passed in (see #14249).\n if (textContent !== this._currentTextContent) {\n this._currentTextContent = textContent || '';\n\n // The content observer runs outside the `NgZone` by default, which\n // means that we need to bring the callback back in ourselves.\n this._ngZone.run(() => {\n this.updatePagination();\n this._alignInkBarToSelectedTab();\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n /**\n * Updates the view whether pagination should be enabled or not.\n *\n * WARNING: Calling this method can be very costly in terms of performance. It should be called\n * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n * page.\n */\n updatePagination() {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateTabScrollPosition();\n }\n\n /** Tracks which element has focus; used for keyboard navigation */\n get focusIndex(): number {\n return this._keyManager ? this._keyManager.activeItemIndex! : 0;\n }\n\n /** When the focus index is set, we must manually send focus to the correct label */\n set focusIndex(value: number) {\n if (!this._isValidIndex(value) || this.focusIndex === value || !this._keyManager) {\n return;\n }\n\n this._keyManager.setActiveItem(value);\n }\n\n /**\n * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is\n * providing a valid index and return true.\n */\n _isValidIndex(index: number): boolean {\n if (!this._items) { return true; }\n\n const tab = this._items ? this._items.toArray()[index] : null;\n return !!tab && !tab.disabled;\n }\n\n /**\n * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n * scrolling is enabled.\n */\n _setTabFocus(tabIndex: number) {\n if (this._showPaginationControls) {\n this._scrollToLabel(tabIndex);\n }\n\n if (this._items && this._items.length) {\n this._items.toArray()[tabIndex].focus();\n\n // Do not let the browser manage scrolling to focus the element, this will be handled\n // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width\n // should be the full width minus the offset width.\n const containerEl = this._tabListContainer.nativeElement;\n const dir = this._getLayoutDirection();\n\n if (dir == 'ltr') {\n containerEl.scrollLeft = 0;\n } else {\n containerEl.scrollLeft = containerEl.scrollWidth - containerEl.offsetWidth;\n }\n }\n }\n\n /** The layout direction of the containing app. */\n _getLayoutDirection(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Performs the CSS transformation on the tab list that will cause the list to scroll. */\n _updateTabScrollPosition() {\n if (this.disablePagination) {\n return;\n }\n\n const scrollDistance = this.scrollDistance;\n const translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\n\n // Don't use `translate3d` here because we don't want to create a new layer. A new layer\n // seems to cause flickering and overflow in Internet Explorer. For example, the ink bar\n // and ripples will exceed the boundaries of the visible tab bar.\n // See: https://github.com/angular/components/issues/10276\n // We round the `transform` here, because transforms with sub-pixel precision cause some\n // browsers to blur the content of the element.\n this._tabList.nativeElement.style.transform = `translateX(${Math.round(translateX)}px)`;\n\n // Setting the `transform` on IE will change the scroll offset of the parent, causing the\n // position to be thrown off in some cases. We have to reset it ourselves to ensure that\n // it doesn't get thrown off. Note that we scope it only to IE and Edge, because messing\n // with the scroll position throws off Chrome 71+ in RTL mode (see #14689).\n if (this._platform.TRIDENT || this._platform.EDGE) {\n this._tabListContainer.nativeElement.scrollLeft = 0;\n }\n }\n\n /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */\n get scrollDistance(): number { return this._scrollDistance; }\n set scrollDistance(value: number) {\n this._scrollTo(value);\n }\n\n /**\n * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively). The distance to scroll is computed to be a third of the\n * length of the tab list view window.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollHeader(direction: ScrollDirection) {\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n\n // Move the scroll distance one-third the length of the tab list's viewport.\n const scrollAmount = (direction == 'before' ? -1 : 1) * viewLength / 3;\n\n return this._scrollTo(this._scrollDistance + scrollAmount);\n }\n\n /** Handles click events on the pagination arrows. */\n _handlePaginatorClick(direction: ScrollDirection) {\n this._stopInterval();\n this._scrollHeader(direction);\n }\n\n /**\n * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollToLabel(labelIndex: number) {\n if (this.disablePagination) {\n return;\n }\n\n const selectedLabel = this._items ? this._items.toArray()[labelIndex] : null;\n\n if (!selectedLabel) {\n return;\n }\n\n // The view length is the visible width of the tab labels.\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n const {offsetLeft, offsetWidth} = selectedLabel.elementRef.nativeElement;\n\n let labelBeforePos: number, labelAfterPos: number;\n if (this._getLayoutDirection() == 'ltr') {\n labelBeforePos = offsetLeft;\n labelAfterPos = labelBeforePos + offsetWidth;\n } else {\n labelAfterPos = this._tabList.nativeElement.offsetWidth - offsetLeft;\n labelBeforePos = labelAfterPos - offsetWidth;\n }\n\n const beforeVisiblePos = this.scrollDistance;\n const afterVisiblePos = this.scrollDistance + viewLength;\n\n if (labelBeforePos < beforeVisiblePos) {\n // Scroll header to move label to the before direction\n this.scrollDistance -= beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\n } else if (labelAfterPos > afterVisiblePos) {\n // Scroll header to move label to the after direction\n this.scrollDistance += labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;\n }\n }\n\n /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * tab list is wider than the size of the header container, then the pagination controls should\n * be shown.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkPaginationEnabled() {\n if (this.disablePagination) {\n this._showPaginationControls = false;\n } else {\n const isEnabled =\n this._tabList.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth;\n\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n\n if (isEnabled !== this._showPaginationControls) {\n this._changeDetectorRef.markForCheck();\n }\n\n this._showPaginationControls = isEnabled;\n }\n }\n\n /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkScrollingControls() {\n if (this.disablePagination) {\n this._disableScrollAfter = this._disableScrollBefore = true;\n } else {\n // Check if the pagination arrows should be activated.\n this._disableScrollBefore = this.scrollDistance == 0;\n this._disableScrollAfter = this.scrollDistance == this._getMaxScrollDistance();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the tab list container and tab header container.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _getMaxScrollDistance(): number {\n const lengthOfTabList = this._tabList.nativeElement.scrollWidth;\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n return (lengthOfTabList - viewLength) || 0;\n }\n\n /** Tells the ink-bar to align itself to the current label wrapper */\n _alignInkBarToSelectedTab(): void {\n const selectedItem = this._items && this._items.length ?\n this._items.toArray()[this.selectedIndex] : null;\n const selectedLabelWrapper = selectedItem ? selectedItem.elementRef.nativeElement : null;\n\n if (selectedLabelWrapper) {\n this._inkBar.alignToElement(selectedLabelWrapper);\n } else {\n this._inkBar.hide();\n }\n }\n\n /** Stops the currently-running paginator interval. */\n _stopInterval() {\n this._stopScrolling.next();\n }\n\n /**\n * Handles the user pressing down on one of the paginators.\n * Starts scrolling the header after a certain amount of time.\n * @param direction In which direction the paginator should be scrolled.\n */\n _handlePaginatorPress(direction: ScrollDirection, mouseEvent?: MouseEvent) {\n // Don't start auto scrolling for right mouse button clicks. Note that we shouldn't have to\n // null check the `button`, but we do it so we don't break tests that use fake events.\n if (mouseEvent && mouseEvent.button != null && mouseEvent.button !== 0) {\n return;\n }\n\n // Avoid overlapping timers.\n this._stopInterval();\n\n // Start a timer after the delay and keep firing based on the interval.\n timer(HEADER_SCROLL_DELAY, HEADER_SCROLL_INTERVAL)\n // Keep the timer going until something tells it to stop or the component is destroyed.\n .pipe(takeUntil(merge(this._stopScrolling, this._destroyed)))\n .subscribe(() => {\n const {maxScrollDistance, distance} = this._scrollHeader(direction);\n\n // Stop the timer if we've reached the start or the end.\n if (distance === 0 || distance >= maxScrollDistance) {\n this._stopInterval();\n }\n });\n }\n\n /**\n * Scrolls the header to a given position.\n * @param position Position to which to scroll.\n * @returns Information on the current scroll distance and the maximum.\n */\n private _scrollTo(position: number) {\n if (this.disablePagination) {\n return {maxScrollDistance: 0, distance: 0};\n }\n\n const maxScrollDistance = this._getMaxScrollDistance();\n this._scrollDistance = Math.max(0, Math.min(maxScrollDistance, position));\n\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\n // transformation can move the header.\n this._scrollDistanceChanged = true;\n this._checkScrollingControls();\n\n return {maxScrollDistance, distance: this._scrollDistance};\n }\n\n static ngAcceptInputType_selectedIndex: NumberInput;\n}\n","/**\n * @license\n * Copyright Google LLC 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\nimport {Directionality} from '@angular/cdk/bidi';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n NgZone,\n OnDestroy,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n AfterViewInit,\n Input,\n Inject,\n Directive,\n} from '@angular/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {MatInkBar} from './ink-bar';\nimport {MatTabLabelWrapper} from './tab-label-wrapper';\nimport {Platform} from '@angular/cdk/platform';\nimport {MatPaginatedTabHeader} from './paginated-tab-header';\n\n/**\n * Base class with all of the `MatTabHeader` functionality.\n * @docs-private\n */\n@Directive()\nexport abstract class _MatTabHeaderBase extends MatPaginatedTabHeader implements\n AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy {\n\n /** Whether the ripple effect is disabled or not. */\n @Input()\n get disableRipple() { return this._disableRipple; }\n set disableRipple(value: any) { this._disableRipple = coerceBooleanProperty(value); }\n private _disableRipple: boolean = false;\n\n constructor(elementRef: ElementRef,\n changeDetectorRef: ChangeDetectorRef,\n viewportRuler: ViewportRuler,\n @Optional() dir: Directionality,\n ngZone: NgZone,\n platform: Platform,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n }\n\n protected _itemSelected(event: KeyboardEvent) {\n event.preventDefault();\n }\n}\n\n/**\n * The header of the tab group which displays a list of all the tabs in the tab group. Includes\n * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the\n * width of the header container, then arrows will be displayed to allow the user to scroll\n * left and right across the header.\n * @docs-private\n */\n@Component({\n selector: 'mat-tab-header',\n templateUrl: 'tab-header.html',\n styleUrls: ['tab-header.css'],\n inputs: ['selectedIndex'],\n outputs: ['selectFocusedIndex', 'indexFocused'],\n encapsulation: ViewEncapsulation.None,\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n host: {\n 'class': 'mat-tab-header',\n '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',\n '[class.mat-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n },\n})\nexport class MatTabHeader extends _MatTabHeaderBase {\n @ContentChildren(MatTabLabelWrapper, {descendants: false}) _items: QueryList<MatTabLabelWrapper>;\n @ViewChild(MatInkBar, {static: true}) _inkBar: MatInkBar;\n @ViewChild('tabListContainer', {static: true}) _tabListContainer: ElementRef;\n @ViewChild('tabList', {static: true}) _tabList: ElementRef;\n @ViewChild('nextPaginator') _nextPaginator: ElementRef<HTMLElement>;\n @ViewChild('previousPaginator') _previousPaginator: ElementRef<HTMLElement>;\n\n constructor(elementRef: ElementRef,\n changeDetectorRef: ChangeDetectorRef,\n viewportRuler: ViewportRuler,\n @Optional() dir: Directionality,\n ngZone: NgZone,\n platform: Platform,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n }\n\n static ngAcceptInputType_disableRipple: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC 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 {FocusableOption, FocusMonitor} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty, NumberInput} from '@angular/cdk/coercion';\nimport {Platform} from '@angular/cdk/platform';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n forwardRef,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n CanDisable, CanDisableCtor,\n CanDisableRipple, CanDisableRippleCtor,\n HasTabIndex, HasTabIndexCtor,\n MAT_RIPPLE_GLOBAL_OPTIONS,\n mixinDisabled,\n mixinDisableRipple,\n mixinTabIndex, RippleConfig,\n RippleGlobalOptions,\n RippleRenderer,\n RippleTarget,\n ThemePalette,\n} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {startWith, takeUntil} from 'rxjs/operators';\nimport {MatInkBar} from '../ink-bar';\nimport {MatPaginatedTabHeader, MatPaginatedTabHeaderItem} from '../paginated-tab-header';\n\n/**\n * Base class with all of the `MatTabNav` functionality.\n * @docs-private\n */\n@Directive()\nexport abstract class _MatTabNavBase extends MatPaginatedTabHeader implements AfterContentChecked,\n AfterContentInit, OnDestroy {\n\n /** Query list of all tab links of the tab navigation. */\n abstract _items: QueryList<MatPaginatedTabHeaderItem & {active: boolean}>;\n\n /** Background color of the tab nav. */\n @Input()\n get backgroundColor(): ThemePalette { return this._backgroundColor; }\n set backgroundColor(value: ThemePalette) {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(`mat-background-${this.backgroundColor}`);\n\n if (value) {\n classList.add(`mat-background-${value}`);\n }\n\n this._backgroundColor = value;\n }\n private _backgroundColor: ThemePalette;\n\n /** Whether the ripple effect is disabled or not. */\n @Input()\n get disableRipple() { return this._disableRipple; }\n set disableRipple(value: any) { this._disableRipple = coerceBooleanProperty(value); }\n private _disableRipple: boolean = false;\n\n /** Theme color of the nav bar. */\n @Input() color: ThemePalette = 'primary';\n\n constructor(elementRef: ElementRef,\n @Optional() dir: Directionality,\n ngZone: NgZone,\n changeDetectorRef: ChangeDetectorRef,\n viewportRuler: ViewportRuler,\n platform: Platform,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n }\n\n protected _itemSelected() {\n // noop\n }\n\n ngAfterContentInit() {\n // We need this to run before the `changes` subscription in parent to ensure that the\n // selectedIndex is up-to-date by the time the super class starts looking for it.\n this._items.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n this.updateActiveLink();\n });\n\n super.ngAfterContentInit();\n }\n\n /** Notifies the component that the active link has been changed. */\n updateActiveLink() {\n if (!this._items) {\n return;\n }\n\n const items = this._items.toArray();\n\n for (let i = 0; i < items.length; i++) {\n if (items[i].active) {\n this.selectedIndex = i;\n this._changeDetectorRef.markForCheck();\n return;\n }\n }\n\n // The ink bar should hide itself if no items are active.\n this.selectedIndex = -1;\n this._inkBar.hide();\n }\n}\n\n\n/**\n * Navigation component matching the styles of the tab group header.\n * Provides anchored navigation with animated ink bar.\n */\n@Component({\n selector: '[mat-tab-nav-bar]',\n exportAs: 'matTabNavBar, matTabNav',\n inputs: ['color'],\n templateUrl: 'tab-nav-bar.html',\n styleUrls: ['tab-nav-bar.css'],\n host: {\n 'class': 'mat-tab-nav-bar mat-tab-header',\n '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',\n '[class.mat-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n '[class.mat-primary]': 'color !== \"warn\" && color !== \"accent\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n },\n encapsulation: ViewEncapsulation.None,\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class MatTabNav extends _MatTabNavBase {\n @ContentChildren(forwardRef(() => MatTabLink), {descendants: true}) _items: QueryList<MatTabLink>;\n @ViewChild(MatInkBar, {static: true}) _inkBar: MatInkBar;\n @ViewChild('tabListContainer', {static: true}) _tabListContainer: ElementRef;\n @ViewChild('tabList', {static: true}) _tabList: ElementRef;\n @ViewChild('nextPaginator') _nextPaginator: ElementRef<HTMLElement>;\n @ViewChild('previousPaginator') _previousPaginator: ElementRef<HTMLElement>;\n\n constructor(elementRef: ElementRef,\n @Optional() dir: Directionality,\n ngZone: NgZone,\n changeDetectorRef: ChangeDetectorRef,\n viewportRuler: ViewportRuler,\n platform: Platform,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef, dir, ngZone, changeDetectorRef, viewportRuler, platform, animationMode);\n }\n\n static ngAcceptInputType_disableRipple: BooleanInput;\n}\n\n// Boilerplate for applying mixins to MatTabLink.\nclass MatTabLinkMixinBase {}\nconst _MatTabLinkMixinBase:\n HasTabIndexCtor & CanDisableRippleCtor & CanDisableCtor & typeof MatTabLinkMixinBase =\n mixinTabIndex(mixinDisableRipple(mixinDisabled(MatTabLinkMixinBase)));\n\n/** Base class with all of the `MatTabLink` functionality. */\n@Directive()\nexport class _MatTabLinkBase extends _MatTabLinkMixinBase implements AfterViewInit, OnDestroy,\n CanDisable, CanDisableRipple, HasTabIndex, RippleTarget, FocusableOption {\n\n /** Whether the tab link is active or not. */\n protected _isActive: boolean = false;\n\n /** Whether the link is active. */\n @Input()\n get active(): boolean { return this._isActive; }\n set active(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n\n if (newValue !== this._isActive) {\n this._isActive = value;\n this._tabNavBar.updateActiveLink();\n }\n }\n\n /**\n * Ripple configuration for ripples that are launched on pointer down. The ripple config\n * is set to the global ripple options since we don't have any configurable options for\n * the tab link ripples.\n * @docs-private\n */\n rippleConfig: RippleConfig & RippleGlobalOptions;\n\n /**\n * Whether ripples are disabled on interaction.\n * @docs-private\n */\n get rippleDisabled(): boolean {\n return this.disabled || this.disableRipple || this._tabNavBar.disableRipple ||\n !!this.rippleConfig.disabled;\n }\n\n constructor(\n private _tabNavBar: _MatTabNavBase,\n /** @docs-private */ public elementRef: ElementRef,\n @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalRippleOptions: RippleGlobalOptions|null,\n @Attribute('tabindex') tabIndex: string, private _focusMonitor: FocusMonitor,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super();\n\n this.rippleConfig = globalRippleOptions || {};\n this.tabIndex = parseInt(tabIndex) || 0;\n\n if (animationMode === 'NoopAnimations') {\n this.rippleConfig.animation = {enterDuration: 0, exitDuration: 0};\n }\n }\n\n /** Focuses the tab link. */\n focus() {\n this.elementRef.nativeElement.focus();\n }\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this.elementRef);\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this.elementRef);\n }\n\n static ngAcceptInputType_active: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_disableRipple: BooleanInput;\n static ngAcceptInputType_tabIndex: NumberInput;\n}\n\n\n/**\n * Link inside of a `mat-tab-nav-bar`.\n */\n@Directive({\n selector: '[mat-tab-link], [matTabLink]',\n exportAs: 'matTabLink',\n inputs: ['disabled', 'disableRipple', 'tabIndex'],\n host: {\n 'class': 'mat-tab-link mat-focus-indicator',\n '[attr.aria-current]': 'active ? \"page\" : null',\n '[attr.aria-disabled]': 'disabled',\n '[attr.tabIndex]': 'tabIndex',\n '[class.mat-tab-disabled]': 'disabled',\n '[class.mat-tab-label-active]': 'active',\n }\n})\nexport class MatTabLink extends _MatTabLinkBase implements OnDestroy {\n /** Reference to the RippleRenderer for the tab-link. */\n private _tabLinkRipple: RippleRenderer;\n\n constructor(\n tabNavBar: MatTabNav, elementRef: ElementRef, ngZone: NgZone,\n platform: Platform,\n @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalRippleOptions: RippleGlobalOptions|null,\n @Attribute('tabindex') tabIndex: string, focusMonitor: FocusMonitor,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(tabNavBar, elementRef, globalRippleOptions, tabIndex, focusMonitor, animationMode);\n this._tabLinkRipple = new RippleRenderer(this, ngZone, elementRef, platform);\n this._tabLinkRipple.setupTriggerEvents(elementRef.nativeElement);\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this._tabLinkRipple._removeTriggerEvents();\n }\n}\n","/**\n * @license\n * Copyright Google LLC 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\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {ObserversModule} from '@angular/cdk/observers';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatInkBar} from './ink-bar';\nimport {MatTab} from './tab';\nimport {MatTabBody, MatTabBodyPortal} from './tab-body';\nimport {MatTabContent} from './tab-content';\nimport {MatTabGroup} from './tab-group';\nimport {MatTabHeader} from './tab-header';\nimport {MatTabLabel} from './tab-label';\nimport {MatTabLabelWrapper} from './tab-label-wrapper';\nimport {MatTabLink, MatTabNav} from './tab-nav-bar/tab-nav-bar';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatCommonModule,\n PortalModule,\n MatRippleModule,\n ObserversModule,\n A11yModule,\n ],\n // Don't export all components because some are only to be used internally.\n exports: [\n MatCommonModule,\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatTabNav,\n MatTabLink,\n MatTabContent,\n ],\n declarations: [\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatInkBar,\n MatTabLabelWrapper,\n MatTabNav,\n MatTabLink,\n MatTabBody,\n MatTabBodyPortal,\n MatTabHeader,\n MatTabContent,\n ],\n})\nexport class MatTabsModule {}\n","/**\n * @license\n * Copyright Google LLC 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\nexport * from './tab-nav-bar';\n","/**\n * @license\n * Copyright Google LLC 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\nexport {MatTabsModule} from './tabs-module';\nexport * from './tab-group';\nexport {MatInkBar, _MatInkBarPositioner, _MAT_INK_BAR_POSITIONER} from './ink-bar';\nexport {\n MatTabBody,\n _MatTabBodyBase,\n MatTabBodyOriginState,\n MatTabBodyPositionState,\n MatTabBodyPortal\n} from './tab-body';\nexport {MatTabHeader, _MatTabHeaderBase} from './tab-header';\nexport {MatTabLabelWrapper} from './tab-label-wrapper';\nexport {MatTab, MAT_TAB_GROUP} from './tab';\nexport {MatTabLabel} from './tab-label';\nexport {MatTabNav, MatTabLink, _MatTabNavBase, _MatTabLinkBase} from './tab-nav-bar/index';\nexport {MatTabContent} from './tab-content';\nexport {ScrollDirection} from './paginated-tab-header';\nexport * from './tabs-animations';\nexport {MAT_TABS_CONFIG, MatTabsConfig} from './tab-config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {_MAT_INK_BAR_POSITIONER_FACTORY as ɵangular_material_src_material_tabs_tabs_a} from './ink-bar';\nexport {MatPaginatedTabHeader as ɵangular_material_src_material_tabs_tabs_d} from './paginated-tab-header';\nexport {MAT_TAB_CONTENT as ɵangular_material_src_material_tabs_tabs_c} from './tab-content';\nexport {MAT_TAB_LABEL as ɵangular_material_src_material_tabs_tabs_b} from './tab-label';"],"names":["InjectionToken","Directive","ElementRef","NgZone","Inject","Optional","ANIMATION_MODULE_TYPE","TemplateRef","CdkPortal","mixinDisabled","Subject","TemplatePortal","Component","ChangeDetectionStrategy","ViewEncapsulation","ViewContainerRef","ContentChild","ViewChild","Input","trigger","state","style","transition","animate","Subscription","startWith","CdkPortalOutlet","ComponentFactoryResolver","forwardRef","DOCUMENT","EventEmitter","distinctUntilChanged","Directionality","ChangeDetectorRef","Output","mixinColor","mixinDisableRipple","QueryList","coerceBooleanProperty","coerceNumberProperty","merge","ContentChildren","normalizePassiveListenerOptions","fromEvent","takeUntil","observableOf","FocusKeyManager","hasModifierKey","ENTER","SPACE","timer","ViewportRuler","Platform","mixinTabIndex","MAT_RIPPLE_GLOBAL_OPTIONS","Attribute","FocusMonitor","RippleRenderer","NgModule","CommonModule","MatCommonModule","PortalModule","MatRippleModule","ObserversModule","A11yModule"],"mappings":";;;;;;IAAA;;;;;;;AAQA,IAYA;AACA,QAAa,uBAAuB,GAClC,IAAIA,mBAAc,CAAuB,qBAAqB,EAAE;QAC9D,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,+BAA+B;KACzC,CAAC,CAAC;IAEL;;;;AAIA,aAAgB,+BAA+B;QAC7C,IAAM,MAAM,GAAG,UAAC,OAAoB,IAAK,QAAC;YACxC,IAAI,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG;YACtD,KAAK,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG;SACzD,IAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;AAWA;QACE,mBACU,WAAoC,EACpC,OAAe,EACkB,iBAAuC,EAC9B,cAAuB;YAHjE,gBAAW,GAAX,WAAW,CAAyB;YACpC,YAAO,GAAP,OAAO,CAAQ;YACkB,sBAAiB,GAAjB,iBAAiB,CAAsB;YAC9B,mBAAc,GAAd,cAAc,CAAS;SAAK;;;;;;QAOhF,kCAAc,GAAd,UAAe,OAAoB;YAAnC,iBAUC;YATC,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,IAAI,OAAO,qBAAqB,KAAK,WAAW,EAAE;gBAChD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;oBAC7B,qBAAqB,CAAC,cAAM,OAAA,KAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAA,CAAC,CAAC;iBACvD,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aAC1B;SACF;;QAGD,wBAAI,GAAJ;YACE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;SAC7D;;QAGD,wBAAI,GAAJ;YACE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;SAC5D;;;;;QAMO,8BAAU,GAAV,UAAW,OAAoB;YACrC,IAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAClD,IAAM,MAAM,GAAgB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;YAE3D,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;SACtC;;;;gBAnDFC,cAAS,SAAC;oBACT,QAAQ,EAAE,aAAa;oBACvB,IAAI,EAAE;wBACJ,OAAO,EAAE,aAAa;wBACtB,iCAAiC,EAAE,qCAAqC;qBACzE;iBACF;;;gBA1CkBC,eAAU;gBAA0BC,WAAM;gDA+CxDC,WAAM,SAAC,uBAAuB;6CAC9BC,aAAQ,YAAID,WAAM,SAACE,gCAAqB;;;ICxD7C;;;;;;;;;;;;;;IAcA;IAEA,IAAI,aAAa,GAAG,UAAS,CAAC,EAAE,CAAC;QAC7B,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;gBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;oBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;AAEF,aAAgB,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI;YACrC,MAAM,IAAI,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC;QAC9F,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;AAED,IAAO,IAAI,QAAQ,GAAG;QAClB,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC;YAC3C,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjD,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjB,KAAK,IAAI,CAAC,IAAI,CAAC;oBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;wBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAChF;YACD,OAAO,CAAC,CAAC;SACZ,CAAA;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAA;AAED,aAAgB,MAAM,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC/E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;YAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACzB;QACL,OAAO,CAAC,CAAC;IACb,CAAC;AAED,aAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI;QACpD,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;YAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;oBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;AAED,aAAgB,OAAO,CAAC,UAAU,EAAE,SAAS;QACzC,OAAO,UAAU,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,CAAA;IACzE,CAAC;AAED,aAAgB,UAAU,CAAC,WAAW,EAAE,aAAa;QACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnI,CAAC;AAED,aAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS;QACvD,SAAS,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAC5G,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM;YACrD,SAAS,SAAS,CAAC,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC3F,SAAS,QAAQ,CAAC,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC9F,SAAS,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;YAC9G,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;SACzE,CAAC,CAAC;IACP,CAAC;AAED,aAAgB,WAAW,CAAC,OAAO,EAAE,IAAI;QACrC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,cAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAa,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzJ,SAAS,IAAI,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAClE,SAAS,IAAI,CAAC,EAAE;YACZ,IAAI,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;YAC9D,OAAO,CAAC;gBAAE,IAAI;oBACV,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI;wBAAE,OAAO,CAAC,CAAC;oBAC7J,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;oBACxC,QAAQ,EAAE,CAAC,CAAC,CAAC;wBACT,KAAK,CAAC,CAAC;wBAAC,KAAK,CAAC;4BAAE,CAAC,GAAG,EAAE,CAAC;4BAAC,MAAM;wBAC9B,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;wBACxD,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;4BAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAC,SAAS;wBACjD,KAAK,CAAC;4BAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;wBACjD;4BACI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;gCAAE,CAAC,GAAG,CAAC,CAAC;gCAAC,SAAS;6BAAE;4BAC5G,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACtF,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,GAAG,EAAE,CAAC;gCAAC,MAAM;6BAAE;4BACrE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACnE,IAAI,CAAC,CAAC,CAAC,CAAC;gCAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BACtB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;qBAC9B;oBACD,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBAC9B;gBAAC,OAAO,CAAC,EAAE;oBAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC;iBAAE;wBAAS;oBAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAAE;YAC1D,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACpF;IACL,CAAC;AAED,IAAO,IAAI,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9D,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,cAAa,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC,KAAK,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AAEH,aAAgB,YAAY,CAAC,CAAC,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAClH,CAAC;AAED,aAAgB,QAAQ,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9E,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;gBAC1C,IAAI,EAAE;oBACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;wBAAE,CAAC,GAAG,KAAK,CAAC,CAAC;oBACnC,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBAC3C;aACJ,CAAC;QACF,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;IAC3F,CAAC;AAED,aAAgB,MAAM,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI;YACA,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI;gBAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC9E;QACD,OAAO,KAAK,EAAE;YAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SAAE;gBAC/B;YACJ,IAAI;gBACA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACpD;oBACO;gBAAE,IAAI,CAAC;oBAAE,MAAM,CAAC,CAAC,KAAK,CAAC;aAAE;SACpC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED;AACA,aAAgB,QAAQ;QACpB,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;YAC9C,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,EAAE,CAAC;IACd,CAAC;IAED;AACA,aAAgB,cAAc;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpF,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAC5C,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;gBAC7D,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,CAAC,CAAC;IACb,CAAC;AAED,aAAgB,aAAa,CAAC,EAAE,EAAE,IAAI;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;YAC7D,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,EAAE,CAAC;IACd,CAAC;AAED,aAAgB,OAAO,CAAC,CAAC;QACrB,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;AAED,aAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS;QAC3D,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QAC9D,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACtH,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;QAC1I,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAAE;QAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAAE,EAAE;QAClF,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACxH,SAAS,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;QAClD,SAAS,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;QAClD,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IACtF,CAAC;AAED,aAAgB,gBAAgB,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5I,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;IACnJ,CAAC;AAED,aAAgB,aAAa,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACjN,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;QAChK,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAS,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;IAChI,CAAC;AAED,aAAgB,oBAAoB,CAAC,MAAM,EAAE,GAAG;QAC5C,IAAI,MAAM,CAAC,cAAc,EAAE;YAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;SAAE;aAAM;YAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;SAAE;QAC/G,OAAO,MAAM,CAAC;IAClB,CAAC;IAAA,CAAC;IAEF,IAAI,kBAAkB,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,IAAI,UAAS,CAAC,EAAE,CAAC;QACd,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC;AAEF,aAAgB,YAAY,CAAC,GAAG;QAC5B,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU;YAAE,OAAO,GAAG,CAAC;QACtC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,GAAG,IAAI,IAAI;YAAE,KAAK,IAAI,CAAC,IAAI,GAAG;gBAAE,IAAI,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACzI,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC;IAClB,CAAC;AAED,aAAgB,eAAe,CAAC,GAAG;QAC/B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC5D,CAAC;AAED,aAAgB,sBAAsB,CAAC,QAAQ,EAAE,UAAU;QACvD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC3B,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;SACzE;QACD,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;AAED,aAAgB,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK;QAC9D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC3B,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;SACzE;QACD,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACjB,CAAC;;IC5OD;;;;;;;AAQA,IAEA;;;;;AAKA,QAAa,eAAe,GAAG,IAAIN,mBAAc,CAAgB,eAAe,CAAC,CAAC;IAElF;AAKA;QACE;oCACqC,QAA0B;YAA1B,aAAQ,GAAR,QAAQ,CAAkB;SAAI;;;;gBANpEC,cAAS,SAAC;oBACT,QAAQ,EAAE,iBAAiB;oBAC3B,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAC,CAAC;iBACpE;;;gBAbkCM,gBAAW;;;ICG9C;;;;;AAKA,QAAa,aAAa,GAAG,IAAIP,mBAAc,CAAc,aAAa,CAAC,CAAC;IAE5E;AAKA;QAAiC,+BAAS;QAA1C;;;;KAAA,CAAiCQ,gBAAS;;gBAJzCP,cAAS,SAAC;oBACT,QAAQ,EAAE,gCAAgC;oBAC1C,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAC,CAAC;iBAChE;;;ICUD;IACA;IACA;QAAA;SAAmB;yBAAA;KAAA,IAAA;IACnB,IAAM,gBAAgB,GAClBQ,oBAAa,CAAC,UAAU,CAAC,CAAC;IAE9B;;;;AAIA,QAAa,aAAa,GAAG,IAAIT,mBAAc,CAAM,eAAe,CAAC,CAAC;AAWtE;QAA4B,0BAAgB;QAwD1C,gBACU,iBAAmC,EACb,gBAAqB;YAFrD,YAGE,iBAAO,SACR;YAHS,uBAAiB,GAAjB,iBAAiB,CAAkB;YACb,sBAAgB,GAAhB,gBAAgB,CAAK;;YAzCrC,eAAS,GAAW,EAAE,CAAC;;YAY/B,oBAAc,GAA0B,IAAI,CAAC;;YAQ5C,mBAAa,GAAG,IAAIU,YAAO,EAAQ,CAAC;;;;;YAM7C,cAAQ,GAAkB,IAAI,CAAC;;;;;YAM/B,YAAM,GAAkB,IAAI,CAAC;;;;YAK7B,cAAQ,GAAG,KAAK,CAAC;;SAMhB;QA1DD,sBACI,iCAAa;;iBADjB,cACmC,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE;iBAChE,UAAkB,KAAkB,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,EAAE;;;WADb;QA6BhE,sBAAI,2BAAO;;iBAAX;gBACE,OAAO,IAAI,CAAC,cAAc,CAAC;aAC5B;;;WAAA;QA4BD,4BAAW,GAAX,UAAY,OAAsB;YAChC,IAAI,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;gBAC7E,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;aAC3B;SACF;QAED,4BAAW,GAAX;YACE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;SAC/B;QAED,yBAAQ,GAAR;YACE,IAAI,CAAC,cAAc,GAAG,IAAIC,qBAAc,CACpC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAC7E;;;;;;;QAQS,uCAAsB,GAAtB,UAAuB,KAAkB;;;;;YAKjD,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;aAC7B;SACF;;KA3FH,CAA4B,gBAAgB;;gBAT3CC,cAAS,SAAC;oBACT,QAAQ,EAAE,SAAS;oBACnB,yRAAuB;oBACvB,MAAM,EAAE,CAAC,UAAU,CAAC;;oBAEpB,eAAe,EAAEC,4BAAuB,CAAC,OAAO;oBAChD,aAAa,EAAEC,sBAAiB,CAAC,IAAI;oBACrC,QAAQ,EAAE,QAAQ;iBACnB;;;gBA/BCC,qBAAgB;gDA0FbX,WAAM,SAAC,aAAa;;;gCAxDtBY,iBAAY,SAAC,aAAa;mCAQ1BA,iBAAY,SAAC,eAAe,EAAE,EAAC,IAAI,EAAET,gBAAW,EAAE,MAAM,EAAE,IAAI,EAAC;mCAI/DU,cAAS,SAACV,gBAAW,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;4BAGrCW,UAAK,SAAC,OAAO;4BAGbA,UAAK,SAAC,YAAY;iCAMlBA,UAAK,SAAC,iBAAiB;;;IC/E1B;;;;;;;AAOA,IASA;;;;AAIA,QAAa,iBAAiB,GAE1B;;QAEF,YAAY,EAAEC,oBAAO,CAAC,cAAc,EAAE;;YAEpCC,kBAAK,CAAC,uDAAuD,EAAEC,kBAAK,CAAC,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC,CAAC;;;;;YAM1FD,kBAAK,CAAC,MAAM,EAAEC,kBAAK,CAAC,EAAC,SAAS,EAAE,0BAA0B,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;YAC/ED,kBAAK,CAAC,OAAO,EAAEC,kBAAK,CAAC,EAAC,SAAS,EAAE,yBAAyB,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;YAE/EC,uBAAU,CAAC,wDAAwD,EAC/DC,oBAAO,CAAC,sDAAsD,CAAC,CAAC;YACpED,uBAAU,CAAC,4BAA4B,EAAE;gBACvCD,kBAAK,CAAC,EAAC,SAAS,EAAE,0BAA0B,EAAC,CAAC;gBAC9CE,oBAAO,CAAC,sDAAsD,CAAC;aAChE,CAAC;YACFD,uBAAU,CAAC,6BAA6B,EAAE;gBACxCD,kBAAK,CAAC,EAAC,SAAS,EAAE,yBAAyB,EAAC,CAAC;gBAC7CE,oBAAO,CAAC,sDAAsD,CAAC;aAChE,CAAC;SACH,CAAC;KACH;;ICUD;;;;AAOA;QAAsC,oCAAe;QAMnD,0BACE,wBAAkD,EAClD,gBAAkC,EACY,KAAiB,EAC7C,SAAc;YAJlC,YAKE,kBAAM,wBAAwB,EAAE,gBAAgB,EAAE,SAAS,CAAC,SAC7D;YAH+C,WAAK,GAAL,KAAK,CAAY;;YAPzD,mBAAa,GAAGC,iBAAY,CAAC,KAAK,CAAC;;YAEnC,iBAAW,GAAGA,iBAAY,CAAC,KAAK,CAAC;;SAQxC;;QAGD,mCAAQ,GAAR;YAAA,iBAcC;YAbC,iBAAM,QAAQ,WAAE,CAAC;YAEjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB;iBAC7C,IAAI,CAACC,mBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;iBACnE,SAAS,CAAC,UAAC,WAAoB;gBAC9B,IAAI,WAAW,IAAI,CAAC,KAAI,CAAC,WAAW,EAAE,EAAE;oBACtC,KAAI,CAAC,MAAM,CAAC,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;iBAClC;aACF,CAAC,CAAC;YAEL,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC;gBAC1D,KAAI,CAAC,MAAM,EAAE,CAAC;aACf,CAAC,CAAC;SACJ;;QAGD,sCAAW,GAAX;YACE,iBAAM,WAAW,WAAE,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;SAChC;;KApCH,CAAsCC,sBAAe;;gBAHpDzB,cAAS,SAAC;oBACT,QAAQ,EAAE,kBAAkB;iBAC7B;;;gBAxCC0B,6BAAwB;gBACxBZ,qBAAgB;gBAiDuC,UAAU,uBAA9DX,WAAM,SAACwB,eAAU,CAAC,cAAM,OAAA,UAAU,GAAA,CAAC;gDACnCxB,WAAM,SAACyB,eAAQ;;IA6BpB;;;;AAKA;QA8CE,yBAAoB,WAAoC,EACxB,IAAoB,EACxC,iBAAoC;YAFhD,iBAyBC;YAzBmB,gBAAW,GAAX,WAAW,CAAyB;YACxB,SAAI,GAAJ,IAAI,CAAgB;;YA1C5C,2BAAsB,GAAGL,iBAAY,CAAC,KAAK,CAAC;;YAMpD,0BAAqB,GAAG,IAAId,YAAO,EAAkB,CAAC;;YAGnC,iBAAY,GAAyB,IAAIoB,iBAAY,EAAU,CAAC;;YAGhE,qBAAgB,GAA0B,IAAIA,iBAAY,EAAW,CAAC;;YAGtE,wBAAmB,GAAuB,IAAIA,iBAAY,EAAQ,CAAC;;YAGnE,gBAAW,GAAuB,IAAIA,iBAAY,CAAO,IAAI,CAAC,CAAC;;;;YAczE,sBAAiB,GAAW,OAAO,CAAC;YAa3C,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAC,GAAc;oBACjE,KAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC;oBACzC,iBAAiB,CAAC,YAAY,EAAE,CAAC;iBAClC,CAAC,CAAC;aACJ;;;YAID,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAACC,8BAAoB,CAAC,UAAC,CAAC,EAAE,CAAC;gBACxD,OAAO,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC;aAC/D,CAAC,CAAC,CAAC,SAAS,CAAC,UAAA,KAAK;;gBAEjB,IAAI,KAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAI,CAAC,iBAAiB,CAAC,KAAI,CAAC,SAAS,CAAC,EAAE;oBACnF,KAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;iBACzB;gBAED,IAAI,KAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAI,CAAC,iBAAiB,CAAC,KAAI,CAAC,SAAS,CAAC,EAAE;oBACtF,KAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;iBACjC;aACF,CAAC,CAAC;SACJ;QA/BD,sBACI,qCAAQ;;iBADZ,UACa,QAAgB;gBAC3B,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;gBAC/B,IAAI,CAAC,8BAA8B,EAAE,CAAC;aACvC;;;WAAA;;;;;QAiCD,kCAAQ,GAAR;YACE,IAAI,IAAI,CAAC,SAAS,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;gBACrD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC/D;SACF;QAED,qCAAW,GAAX;YACE,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC;SACvC;QAED,gDAAsB,GAAtB,UAAuB,KAAqB;YAC1C,IAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxC,IAAI,WAAW,EAAE;gBACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;aACrE;SACF;;QAGD,6CAAmB,GAAnB;YACE,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;SAC/D;;QAGD,2CAAiB,GAAjB,UAAkB,QAAwC;YACxD,OAAO,QAAQ,IAAI,QAAQ;gBACvB,QAAQ,IAAI,oBAAoB;gBAChC,QAAQ,IAAI,qBAAqB,CAAC;SACvC;;QAGO,wDAA8B,GAA9B,UAA+B,GAA2C;YAA3C,oBAAA,EAAA,MAAiB,IAAI,CAAC,mBAAmB,EAAE;YAChF,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;gBAC3B,IAAI,CAAC,SAAS,GAAG,GAAG,IAAI,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;aAClD;iBAAM,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,GAAG,GAAG,IAAI,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;aAClD;iBAAM;gBACL,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;aAC3B;SACF;;;;;QAMO,oDAA0B,GAA1B,UAA2B,MAAc;YAC/C,IAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAEvC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE;gBACjE,OAAO,oBAAoB,CAAC;aAC7B;YAED,OAAO,qBAAqB,CAAC;SAC9B;;;;gBApIF9B,cAAS;;;gBAzFRC,eAAU;gBAYJ8B,mBAAc,uBA6HP3B,aAAQ;gBAhJrB4B,sBAAiB;;;+BA+GhBC,WAAM;mCAGNA,WAAM;sCAGNA,WAAM;8BAGNA,WAAM;2BAMNhB,UAAK,SAAC,SAAS;yBAGfA,UAAK;oCAKLA,UAAK;2BAGLA,UAAK;;IA8FR;;;;AAgBA;QAAgC,8BAAe;QAG7C,oBAAY,UAAmC,EACvB,GAAmB,EAC/B,iBAAoC;mBAC9C,kBAAM,UAAU,EAAE,GAAG,EAAE,iBAAiB,CAAC;SAC1C;;KAPH,CAAgC,eAAe;;gBAZ9CN,cAAS,SAAC;oBACT,QAAQ,EAAE,cAAc;oBACxB,6XAA4B;oBAE5B,aAAa,EAAEE,sBAAiB,CAAC,IAAI;;oBAErC,eAAe,EAAED,4BAAuB,CAAC,OAAO;oBAChD,UAAU,EAAE,CAAC,iBAAiB,CAAC,YAAY,CAAC;oBAC5C,IAAI,EAAE;wBACJ,OAAO,EAAE,cAAc;qBACxB;;iBACF;;;gBA/OCX,eAAU;gBAYJ8B,mBAAc,uBAwOP3B,aAAQ;gBA3PrB4B,sBAAiB;;;8BAwPhBhB,cAAS,SAACS,sBAAe;;;IClQ5B;;;;;;;AAOA,IAuBA;AACA,QAAa,eAAe,GAAG,IAAI1B,mBAAc,CAAgB,iBAAiB,CAAC;;ICmBnF;IACA,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf;AACA;QAAA;SAKC;gCAAA;KAAA,IAAA;IAKD;IACA;IACA;QACE,8BAAmB,WAAuB;YAAvB,gBAAW,GAAX,WAAW,CAAY;SAAI;mCAC/C;KAAA,IAAA;IACD,IAAM,qBAAqB,GACvBmC,iBAAU,CAACC,yBAAkB,CAAC,oBAAoB,CAAC,EAAE,SAAS,CAAC,CAAC;IAOpE;;;;AAKA;QAA+C,oCAAqB;QA0FlE,0BAAY,UAAsB,EACZ,kBAAqC,EACV,aAA6B,EAChB,cAAuB;YAHrF,YAIE,kBAAM,UAAU,CAAC,SAQlB;YAXqB,wBAAkB,GAAlB,kBAAkB,CAAmB;YAEG,oBAAc,GAAd,cAAc,CAAS;;YAjFrF,WAAK,GAAsB,IAAIC,cAAS,EAAU,CAAC;;YAG3C,oBAAc,GAAkB,CAAC,CAAC;;YAGlC,2BAAqB,GAAW,CAAC,CAAC;;YAGlC,uBAAiB,GAAGb,iBAAY,CAAC,KAAK,CAAC;;YAGvC,2BAAqB,GAAGA,iBAAY,CAAC,KAAK,CAAC;YAc3C,oBAAc,GAAkB,IAAI,CAAC;;YAGpC,oBAAc,GAAyB,OAAO,CAAC;;YAkCrC,yBAAmB,GAAyB,IAAIM,iBAAY,EAAU,CAAC;;YAGvE,iBAAW,GAC1B,IAAIA,iBAAY,EAAqB,CAAC;;YAGvB,mBAAa,GAAuB,IAAIA,iBAAY,EAAQ,CAAC;;YAG7D,uBAAiB,GAChC,IAAIA,iBAAY,CAAoB,IAAI,CAAC,CAAC;YAS5C,KAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC;YACzB,KAAI,CAAC,iBAAiB,GAAG,aAAa,IAAI,aAAa,CAAC,iBAAiB;gBACrE,aAAa,CAAC,iBAAiB,GAAG,OAAO,CAAC;YAC9C,KAAI,CAAC,iBAAiB,GAAG,aAAa,IAAI,aAAa,CAAC,iBAAiB,IAAI,IAAI;gBAC7E,aAAa,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC5C,KAAI,CAAC,aAAa,GAAG,aAAa,IAAI,aAAa,CAAC,aAAa,IAAI,IAAI;gBACrE,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC;;SACzC;QA3ED,sBACI,2CAAa;;iBADjB,cAC+B,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE;iBAC5D,UAAkB,KAAc,IAAI,IAAI,CAAC,cAAc,GAAGQ,8BAAqB,CAAC,KAAK,CAAC,CAAC,EAAE;;;WAD7B;QAK5D,sBACI,2CAAa;;iBADjB,cACqC,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE;iBAClE,UAAkB,KAAoB;gBACpC,IAAI,CAAC,cAAc,GAAGC,6BAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aACzD;;;WAHiE;QAUlE,sBACI,+CAAiB;;iBADrB,cACkC,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE;iBACnE,UAAsB,KAAa;gBACjC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;aACtE;;;WAHkE;QAcnE,sBACI,6CAAe;;iBADnB,cACsC,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE;iBACrE,UAAoB,KAAmB;gBACrC,IAAM,aAAa,GAAgB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;gBAElE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAkB,IAAI,CAAC,eAAiB,CAAC,CAAC;gBAEzE,IAAI,KAAK,EAAE;oBACT,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAkB,KAAO,CAAC,CAAC;iBACxD;gBAED,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;aAC/B;;;WAXoE;;;;;;;QAkDrE,gDAAqB,GAArB;YAAA,iBA+CC;;;YA5CC,IAAM,aAAa,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;;;YAIrF,IAAI,IAAI,CAAC,cAAc,IAAI,aAAa,EAAE;gBACxC,IAAM,YAAU,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC;gBAE/C,IAAI,CAAC,YAAU,EAAE;oBACf,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;;;oBAGpE,IAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;oBACnD,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;iBACvD;;;gBAID,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;oBACrB,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,KAAK,IAAK,OAAA,GAAG,CAAC,QAAQ,GAAG,KAAK,KAAK,aAAa,GAAA,CAAC,CAAC;oBAE3E,IAAI,CAAC,YAAU,EAAE;wBACf,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;;wBAG7C,KAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;qBACzD;iBACF,CAAC,CAAC;aACJ;;YAGD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,GAAW,EAAE,KAAa;gBAC5C,GAAG,CAAC,QAAQ,GAAG,KAAK,GAAG,aAAa,CAAC;;;gBAIrC,IAAI,KAAI,CAAC,cAAc,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;oBACnE,GAAG,CAAC,MAAM,GAAG,aAAa,GAAG,KAAI,CAAC,cAAc,CAAC;iBAClD;aACF,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,cAAc,KAAK,aAAa,EAAE;gBACzC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;gBACpC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;aACxC;SACF;QAED,6CAAkB,GAAlB;YAAA,iBA2BC;YA1BC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,IAAI,CAAC,qBAAqB,EAAE,CAAC;;;YAI7B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBACpD,IAAM,aAAa,GAAG,KAAI,CAAC,cAAc,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC;;;gBAI/D,IAAI,aAAa,KAAK,KAAI,CAAC,cAAc,EAAE;oBACzC,IAAM,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACpC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;;;;4BAIpB,KAAI,CAAC,cAAc,GAAG,KAAI,CAAC,cAAc,GAAG,CAAC,CAAC;4BAC9C,MAAM;yBACP;qBACF;iBACF;gBAED,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;aACxC,CAAC,CAAC;SACJ;;QAGO,oDAAyB,GAAzB;YAAA,iBAUP;;;;YANC,IAAI,CAAC,QAAQ,CAAC,OAAO;iBAClB,IAAI,CAACd,mBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC9B,SAAS,CAAC,UAAC,IAAuB;gBACjC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,gBAAgB,KAAK,KAAI,GAAA,CAAC,CAAC,CAAC;gBACpE,KAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;aAC9B,CAAC,CAAC;SACN;QAED,sCAAW,GAAX;YACE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;SAC1C;;QAGD,wCAAa,GAAb;YACE,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,CAAC;aAC7C;SACF;QAED,wCAAa,GAAb,UAAc,KAAa;YACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;SACvD;QAEO,6CAAkB,GAAlB,UAAmB,KAAa;YACtC,IAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC;YACpC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACnC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;aACzC;YACD,OAAO,KAAK,CAAC;SACd;;;;;;;QAQO,gDAAqB,GAArB;YAAA,iBAOP;YANC,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC9B,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;aAC1C;YAED,IAAI,CAAC,qBAAqB,GAAGe,UAAK,wBAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,aAAa,GAAA,CAAC,GAC3E,SAAS,CAAC,cAAM,OAAA,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,GAAA,CAAC,CAAC;SAC5D;;QAGO,yCAAc,GAAd,UAAe,KAAoB;;;;YAIzC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACjE;;QAGD,yCAAc,GAAd,UAAe,CAAS;YACtB,OAAO,mBAAiB,IAAI,CAAC,QAAQ,SAAI,CAAG,CAAC;SAC9C;;QAGD,2CAAgB,GAAhB,UAAiB,CAAS;YACxB,OAAO,qBAAmB,IAAI,CAAC,QAAQ,SAAI,CAAG,CAAC;SAChD;;;;;QAMD,mDAAwB,GAAxB,UAAyB,SAAiB;YACxC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;gBAAE,OAAO;aAAE;YAEpE,IAAM,OAAO,GAAgB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;YAEhE,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;;;YAIzD,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,YAAY,EAAE;gBACnD,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;aACzC;SACF;;QAGD,sDAA2B,GAA3B;YACE,IAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;YACnD,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;YAClD,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;SAC3B;;QAGD,uCAAY,GAAZ,UAAa,GAAW,EAAE,SAAgC,EAAE,KAAa;YACvE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC;aACnD;SACF;;QAGD,uCAAY,GAAZ,UAAa,GAAW,EAAE,GAAW;YACnC,IAAI,GAAG,CAAC,QAAQ,EAAE;gBAChB,OAAO,IAAI,CAAC;aACb;YACD,OAAO,IAAI,CAAC,aAAa,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SAC5C;;QAGD,2CAAgB,GAAhB,UAAiB,WAAwB,EAAE,KAAa;YACtD,IAAI,WAAW,EAAE;gBACf,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;aACpC;SACF;;KAlTH,CAA+C,qBAAqB;;gBADnEvC,cAAS;;;gBA3DRC,eAAU;gBAJV+B,sBAAiB;gDA4JJ7B,WAAM,SAAC,eAAe,cAAGC,aAAQ;6CACjCA,aAAQ,YAAID,WAAM,SAACE,gCAAqB;;;gCAlEpDY,UAAK;gCAMLA,UAAK;iCAQLA,UAAK;oCAGLA,UAAK;oCAWLA,UAAK;kCAILA,UAAK;sCAgBLgB,WAAM;8BAGNA,WAAM;gCAINA,WAAM;oCAGNA,WAAM;;IAqOT;;;;;AAwBA;QAAiC,+BAAgB;QAK/C,qBAAY,UAAsB,EACtB,iBAAoC,EACC,aAA6B,EACvB,aAAsB;mBAC3E,kBAAM,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,CAAC;SACnE;;KAVH,CAAiC,gBAAgB;;gBAnBhDtB,cAAS,SAAC;oBACT,QAAQ,EAAE,eAAe;oBACzB,QAAQ,EAAE,aAAa;oBACvB,y1EAA6B;oBAE7B,aAAa,EAAEE,sBAAiB,CAAC,IAAI;;oBAErC,eAAe,EAAED,4BAAuB,CAAC,OAAO;oBAChD,MAAM,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC;oBAClC,SAAS,EAAE,CAAC;4BACV,OAAO,EAAE,aAAa;4BACtB,WAAW,EAAE,WAAW;yBACzB,CAAC;oBACF,IAAI,EAAE;wBACJ,OAAO,EAAE,eAAe;wBACxB,sCAAsC,EAAE,eAAe;wBACvD,uCAAuC,EAAE,4BAA4B;qBACtE;;iBACF;;;gBA7YCX,eAAU;gBAJV+B,sBAAiB;gDAyZJ7B,WAAM,SAAC,eAAe,cAAGC,aAAQ;6CACjCA,aAAQ,YAAID,WAAM,SAACE,gCAAqB;;;2BAPpDmC,oBAAe,SAAC,MAAM,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;kCAC3CxB,cAAS,SAAC,gBAAgB;6BAC1BA,cAAS,SAAC,WAAW;;;IC1ZxB;IACA;IACA;QAAA;SAA+B;qCAAA;KAAA,IAAA;IAC/B,IAAM,4BAA4B,GAC9BR,oBAAa,CAAC,sBAAsB,CAAC,CAAC;IAE1C;;;;AAYA;QAAwC,sCAA4B;QAClE,4BAAmB,UAAsB;YAAzC,YACE,iBAAO,SACR;YAFkB,gBAAU,GAAV,UAAU,CAAY;;SAExC;;QAGD,kCAAK,GAAL;YACE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SACvC;QAED,0CAAa,GAAb;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC;SACjD;QAED,2CAAc,GAAd;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC;SAClD;;KAhBH,CAAwC,4BAA4B;;gBARnER,cAAS,SAAC;oBACT,QAAQ,EAAE,sBAAsB;oBAChC,MAAM,EAAE,CAAC,UAAU,CAAC;oBACpB,IAAI,EAAE;wBACJ,0BAA0B,EAAE,UAAU;wBACtC,sBAAsB,EAAE,YAAY;qBACrC;iBACF;;;gBArBkBC,eAAU;;;ICT7B;;;;;;;AAQA,IA0BA;IACA,IAAM,2BAA2B,GAC7BwC,wCAA+B,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAyB,CAAC;IAS7E;;;;IAIA,IAAM,sBAAsB,GAAG,EAAE,CAAC;IAElC;;;;IAIA,IAAM,mBAAmB,GAAG,GAAG,CAAC;IAEhC;;;;IAIA,IAAM,sBAAsB,GAAG,GAAG,CAAC;IAKnC;;;;AAKA;QA0EE,+BAAsB,WAAoC,EACpC,kBAAqC,EACvC,cAA6B,EACjB,IAAoB,EAChC,OAAe,EACf,SAAmB,EACuB,cAAuB;YANrF,iBAgBC;YAhBqB,gBAAW,GAAX,WAAW,CAAyB;YACpC,uBAAkB,GAAlB,kBAAkB,CAAmB;YACvC,mBAAc,GAAd,cAAc,CAAe;YACjB,SAAI,GAAJ,IAAI,CAAgB;YAChC,YAAO,GAAP,OAAO,CAAQ;YACf,cAAS,GAAT,SAAS,CAAU;YACuB,mBAAc,GAAd,cAAc,CAAS;;YAtE7E,oBAAe,GAAG,CAAC,CAAC;;YAGpB,0BAAqB,GAAG,KAAK,CAAC;;YAGnB,eAAU,GAAG,IAAIhC,YAAO,EAAQ,CAAC;;YAGpD,4BAAuB,GAAG,KAAK,CAAC;;YAGhC,wBAAmB,GAAG,IAAI,CAAC;;YAG3B,yBAAoB,GAAG,IAAI,CAAC;;YAkBpB,mBAAc,GAAG,IAAIA,YAAO,EAAQ,CAAC;;;;;YAO7C,sBAAiB,GAAY,KAAK,CAAC;YAgB3B,mBAAc,GAAW,CAAC,CAAC;;YAG1B,uBAAkB,GAAyB,IAAIoB,iBAAY,EAAU,CAAC;;YAGtE,iBAAY,GAAyB,IAAIA,iBAAY,EAAU,CAAC;;YAWvE,OAAO,CAAC,iBAAiB,CAAC;gBACxBa,cAAS,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC;qBAC/C,IAAI,CAACC,mBAAS,CAAC,KAAI,CAAC,UAAU,CAAC,CAAC;qBAChC,SAAS,CAAC;oBACT,KAAI,CAAC,aAAa,EAAE,CAAC;iBACtB,CAAC,CAAC;aACN,CAAC,CAAC;SACJ;QArCD,sBAAI,gDAAa;;iBAAjB,cAA8B,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE;iBAC3D,UAAkB,KAAa;gBAC7B,KAAK,GAAGL,6BAAoB,CAAC,KAAK,CAAC,CAAC;gBAEpC,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK,EAAE;oBAChC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;oBAClC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;oBAE5B,IAAI,IAAI,CAAC,WAAW,EAAE;wBACpB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;qBAC1C;iBACF;aACF;;;WAZ0D;QA0C3D,+CAAe,GAAf;YAAA,iBAaC;;YAXCI,cAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,YAAY,EAAE,2BAA2B,CAAC;iBACxF,IAAI,CAACC,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAChC,SAAS,CAAC;gBACT,KAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;aACtC,CAAC,CAAC;YAELD,cAAS,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,YAAY,EAAE,2BAA2B,CAAC;iBACpF,IAAI,CAACC,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAChC,SAAS,CAAC;gBACT,KAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;aACrC,CAAC,CAAC;SACN;QAED,kDAAkB,GAAlB;YAAA,iBAoCC;YAnCC,IAAM,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAGC,OAAY,CAAC,IAAI,CAAC,CAAC;YACpE,IAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAM,OAAO,GAAG;gBACd,KAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,KAAI,CAAC,yBAAyB,EAAE,CAAC;aAClC,CAAC;YAEF,IAAI,CAAC,WAAW,GAAG,IAAIC,oBAAe,CAA4B,IAAI,CAAC,MAAM,CAAC;iBAC3E,yBAAyB,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;iBACrD,cAAc,EAAE;iBAChB,QAAQ,EAAE,CAAC;YAEd,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;;;YAIvD,OAAO,qBAAqB,KAAK,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE,CAAC;;;YAI1FN,UAAK,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAACI,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;;;;gBAIvF,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAM,OAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAA,CAAC,CAAC;gBACxD,KAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,KAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;aACxE,CAAC,CAAC;;;;YAKH,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAACA,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,UAAA,aAAa;gBAC9E,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACtC,KAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;aAClC,CAAC,CAAC;SACJ;QAED,qDAAqB,GAArB;;YAEE,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBACzC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;aACxC;;;YAID,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACzC,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC/B,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;gBACnC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;aACxC;;;YAID,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;gBACpC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;aACxC;SACF;QAED,2CAAW,GAAX;YACE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;SAChC;;QAGD,8CAAc,GAAd,UAAe,KAAoB;;YAEjC,IAAIG,uBAAc,CAAC,KAAK,CAAC,EAAE;gBACzB,OAAO;aACR;YAED,QAAQ,KAAK,CAAC,OAAO;gBACnB,KAAKC,cAAK,CAAC;gBACX,KAAKC,cAAK;oBACR,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,aAAa,EAAE;wBAC1C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAC9C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;qBAC3B;oBACD,MAAM;gBACR;oBACE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aACrC;SACF;;;;QAKD,iDAAiB,GAAjB;YAAA,iBAiBC;YAhBC,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC;;;;YAK/D,IAAI,WAAW,KAAK,IAAI,CAAC,mBAAmB,EAAE;gBAC5C,IAAI,CAAC,mBAAmB,GAAG,WAAW,IAAI,EAAE,CAAC;;;gBAI7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;oBACf,KAAI,CAAC,gBAAgB,EAAE,CAAC;oBACxB,KAAI,CAAC,yBAAyB,EAAE,CAAC;oBACjC,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;iBACxC,CAAC,CAAC;aACJ;SACF;;;;;;;;QASD,gDAAgB,GAAhB;YACE,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;QAGD,sBAAI,6CAAU;;iBAAd;gBACE,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,eAAgB,GAAG,CAAC,CAAC;aACjE;;iBAGD,UAAe,KAAa;gBAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;oBAChF,OAAO;iBACR;gBAED,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACvC;;;WATA;;;;;QAeD,6CAAa,GAAb,UAAc,KAAa;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAAE,OAAO,IAAI,CAAC;aAAE;YAElC,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YAC9D,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;SAC/B;;;;;QAMD,4CAAY,GAAZ,UAAa,QAAgB;YAC3B,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAChC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;aAC/B;YAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBACrC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;;;;gBAKxC,IAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;gBACzD,IAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAEvC,IAAI,GAAG,IAAI,KAAK,EAAE;oBAChB,WAAW,CAAC,UAAU,GAAG,CAAC,CAAC;iBAC5B;qBAAM;oBACL,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;iBAC5E;aACF;SACF;;QAGD,mDAAmB,GAAnB;YACE,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;SAC/D;;QAGD,wDAAwB,GAAxB;YACE,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,OAAO;aACR;YAED,IAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAC3C,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,KAAK,KAAK,GAAG,CAAC,cAAc,GAAG,cAAc,CAAC;;;;;;;YAQ3F,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,gBAAc,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAK,CAAC;;;;;YAMxF,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;gBACjD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC;aACrD;SACF;QAGD,sBAAI,iDAAc;;iBAAlB,cAA+B,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE;iBAC7D,UAAmB,KAAa;gBAC9B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aACvB;;;WAH4D;;;;;;;;;QAa7D,6CAAa,GAAb,UAAc,SAA0B;YACtC,IAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,WAAW,CAAC;;YAGpE,IAAM,YAAY,GAAG,CAAC,SAAS,IAAI,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;YAEvE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,CAAC;SAC5D;;QAGD,qDAAqB,GAArB,UAAsB,SAA0B;YAC9C,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;SAC/B;;;;;;;QAQD,8CAAc,GAAd,UAAe,UAAkB;YAC/B,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,OAAO;aACR;YAED,IAAM,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YAE7E,IAAI,CAAC,aAAa,EAAE;gBAClB,OAAO;aACR;;YAGD,IAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,WAAW,CAAC;YAC9D,IAAA,KAA4B,aAAa,CAAC,UAAU,CAAC,aAAa,EAAjE,UAAU,gBAAA,EAAE,WAAW,iBAA0C,CAAC;YAEzE,IAAI,cAAsB,EAAE,aAAqB,CAAC;YAClD,IAAI,IAAI,CAAC,mBAAmB,EAAE,IAAI,KAAK,EAAE;gBACvC,cAAc,GAAG,UAAU,CAAC;gBAC5B,aAAa,GAAG,cAAc,GAAG,WAAW,CAAC;aAC9C;iBAAM;gBACL,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,GAAG,UAAU,CAAC;gBACrE,cAAc,GAAG,aAAa,GAAG,WAAW,CAAC;aAC9C;YAED,IAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC;YAC7C,IAAM,eAAe,GAAG,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;YAEzD,IAAI,cAAc,GAAG,gBAAgB,EAAE;;gBAErC,IAAI,CAAC,cAAc,IAAI,gBAAgB,GAAG,cAAc,GAAG,sBAAsB,CAAC;aACnF;iBAAM,IAAI,aAAa,GAAG,eAAe,EAAE;;gBAE1C,IAAI,CAAC,cAAc,IAAI,aAAa,GAAG,eAAe,GAAG,sBAAsB,CAAC;aACjF;SACF;;;;;;;;;QAUD,uDAAuB,GAAvB;YACE,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;aACtC;iBAAM;gBACL,IAAM,SAAS,GACX,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC;gBAEzF,IAAI,CAAC,SAAS,EAAE;oBACd,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;iBACzB;gBAED,IAAI,SAAS,KAAK,IAAI,CAAC,uBAAuB,EAAE;oBAC9C,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;iBACxC;gBAED,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;aAC1C;SACF;;;;;;;;;;QAWD,uDAAuB,GAAvB;YACE,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;aAC7D;iBAAM;;gBAEL,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;gBACrD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC/E,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;aACxC;SACF;;;;;;;;QASD,qDAAqB,GAArB;YACE,IAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC;YAChE,IAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,WAAW,CAAC;YACpE,OAAO,CAAC,eAAe,GAAG,UAAU,KAAK,CAAC,CAAC;SAC5C;;QAGD,yDAAyB,GAAzB;YACE,IAAM,YAAY,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM;gBAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;YACrD,IAAM,oBAAoB,GAAG,YAAY,GAAG,YAAY,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;YAEzF,IAAI,oBAAoB,EAAE;gBACxB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;aACnD;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;aACrB;SACF;;QAGD,6CAAa,GAAb;YACE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;SAC5B;;;;;;QAOD,qDAAqB,GAArB,UAAsB,SAA0B,EAAE,UAAuB;YAAzE,iBAsBC;;;YAnBC,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtE,OAAO;aACR;;YAGD,IAAI,CAAC,aAAa,EAAE,CAAC;;YAGrBC,UAAK,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;;iBAE/C,IAAI,CAACN,mBAAS,CAACJ,UAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;iBAC5D,SAAS,CAAC;gBACH,IAAA,KAAgC,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAA5D,iBAAiB,uBAAA,EAAE,QAAQ,cAAiC,CAAC;;gBAGpE,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,IAAI,iBAAiB,EAAE;oBACnD,KAAI,CAAC,aAAa,EAAE,CAAC;iBACtB;aACF,CAAC,CAAC;SACN;;;;;;QAOO,yCAAS,GAAT,UAAU,QAAgB;YAChC,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,OAAO,EAAC,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAC,CAAC;aAC5C;YAED,IAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACvD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAC;;;YAI1E,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAE/B,OAAO,EAAC,iBAAiB,mBAAA,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAC,CAAC;SAC5D;;;;gBApgBFvC,cAAS;;;gBA5DRC,eAAU;gBADV+B,sBAAiB;gBAgBXkB,uBAAa;gBAFFnB,mBAAc,uBA6HlB3B,aAAQ;gBAzIrBF,WAAM;gBAmBAiD,iBAAQ;6CAyHD/C,aAAQ,YAAID,WAAM,SAACE,gCAAqB;;;oCA/BpDY,UAAK;;;ICpFR;;;;AAKA;QAAgD,qCAAqB;QASnE,2BAAY,UAAsB,EACtB,iBAAoC,EACpC,aAA4B,EAChB,GAAmB,EAC/B,MAAc,EACd,QAAkB,EACyB,aAAsB;YAN7E,YAOE,kBAAM,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,SAC1F;YAVO,oBAAc,GAAY,KAAK,CAAC;;SAUvC;QAbD,sBACI,4CAAa;;iBADjB,cACsB,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE;iBACnD,UAAkB,KAAU,IAAI,IAAI,CAAC,cAAc,GAAGoB,8BAAqB,CAAC,KAAK,CAAC,CAAC,EAAE;;;WADlC;QAczC,yCAAa,GAAb,UAAc,KAAoB;YAC1C,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;;KArBH,CAAgD,qBAAqB;;gBADpErC,cAAS;;;gBAvBRC,eAAU;gBAHV+B,sBAAiB;gBALXkB,uBAAa;gBADbnB,mBAAc,uBA6CP3B,aAAQ;gBAnCrBF,WAAM;gBAeAiD,iBAAQ;6CAuBD/C,aAAQ,YAAID,WAAM,SAACE,gCAAqB;;;gCAXpDY,UAAK;;IAoBR;;;;;;;AAsBA;QAAkC,gCAAiB;QAQjD,sBAAY,UAAsB,EACtB,iBAAoC,EACpC,aAA4B,EAChB,GAAmB,EAC/B,MAAc,EACd,QAAkB,EACyB,aAAsB;mBAC3E,kBAAM,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC;SAC1F;;KAhBH,CAAkC,iBAAiB;;gBAflDN,cAAS,SAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,s7CAA8B;oBAE9B,MAAM,EAAE,CAAC,eAAe,CAAC;oBACzB,OAAO,EAAE,CAAC,oBAAoB,EAAE,cAAc,CAAC;oBAC/C,aAAa,EAAEE,sBAAiB,CAAC,IAAI;;oBAErC,eAAe,EAAED,4BAAuB,CAAC,OAAO;oBAChD,IAAI,EAAE;wBACJ,OAAO,EAAE,gBAAgB;wBACzB,oDAAoD,EAAE,yBAAyB;wBAC/E,4BAA4B,EAAE,gCAAgC;qBAC/D;;iBACF;;;gBArECX,eAAU;gBAHV+B,sBAAiB;gBALXkB,uBAAa;gBADbnB,mBAAc,uBA0FP3B,aAAQ;gBAhFrBF,WAAM;gBAeAiD,iBAAQ;6CAoED/C,aAAQ,YAAID,WAAM,SAACE,gCAAqB;;;yBAbpDmC,oBAAe,SAAC,kBAAkB,EAAE,EAAC,WAAW,EAAE,KAAK,EAAC;0BACxDxB,cAAS,SAAC,SAAS,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;oCACnCA,cAAS,SAAC,kBAAkB,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;2BAC5CA,cAAS,SAAC,SAAS,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;iCACnCA,cAAS,SAAC,eAAe;qCACzBA,cAAS,SAAC,mBAAmB;;;IC1ChC;;;;AAKA;QAA6C,kCAAqB;QA8BhE,wBAAY,UAAsB,EACV,GAAmB,EAC/B,MAAc,EACd,iBAAoC,EACpC,aAA4B,EAC5B,QAAkB,EACyB,aAAsB;YAN7E,YAOE,kBAAM,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,SAC1F;YAbO,oBAAc,GAAY,KAAK,CAAC;;YAG/B,WAAK,GAAiB,SAAS,CAAC;;SAUxC;QA/BD,sBACI,2CAAe;;iBADnB,cACsC,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE;iBACrE,UAAoB,KAAmB;gBACrC,IAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC;gBAC3D,SAAS,CAAC,MAAM,CAAC,oBAAkB,IAAI,CAAC,eAAiB,CAAC,CAAC;gBAE3D,IAAI,KAAK,EAAE;oBACT,SAAS,CAAC,GAAG,CAAC,oBAAkB,KAAO,CAAC,CAAC;iBAC1C;gBAED,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;aAC/B;;;WAVoE;QAcrE,sBACI,yCAAa;;iBADjB,cACsB,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE;iBACnD,UAAkB,KAAU,IAAI,IAAI,CAAC,cAAc,GAAGqB,8BAAqB,CAAC,KAAK,CAAC,CAAC,EAAE;;;WADlC;QAiBzC,sCAAa,GAAb;;SAET;QAED,2CAAkB,GAAlB;YAAA,iBAQC;;;YALC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAACb,mBAAS,CAAC,IAAI,CAAC,EAAEmB,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9E,KAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB,CAAC,CAAC;YAEH,iBAAM,kBAAkB,WAAE,CAAC;SAC5B;;QAGD,yCAAgB,GAAhB;YACE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,OAAO;aACR;YAED,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;oBACnB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;oBACvB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;oBACvC,OAAO;iBACR;aACF;;YAGD,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACrB;;KAzEH,CAA6C,qBAAqB;;gBADjE3C,cAAS;;;gBAjCRC,eAAU;gBAdJ8B,mBAAc,uBA+EP3B,aAAQ;gBA7DrBF,WAAM;gBARN8B,sBAAiB;gBAPXkB,uBAAa;gBADbC,iBAAQ;6CAkFD/C,aAAQ,YAAID,WAAM,SAACE,gCAAqB;;;kCA7BpDY,UAAK;gCAeLA,UAAK;wBAMLA,UAAK;;IAiDR;;;;AAsBA;QAA+B,6BAAc;QAQ3C,mBAAY,UAAsB,EACpB,GAAmB,EAC/B,MAAc,EACd,iBAAoC,EACpC,aAA4B,EAC5B,QAAkB,EACyB,aAAsB;mBACjE,kBAAM,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,CAAC;SAC1F;;KAhBH,CAA+B,cAAc;;gBAlB5CN,cAAS,SAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,QAAQ,EAAE,yBAAyB;oBACnC,MAAM,EAAE,CAAC,OAAO,CAAC;oBACjB,85CAA+B;oBAE/B,IAAI,EAAE;wBACJ,OAAO,EAAE,gCAAgC;wBACzC,oDAAoD,EAAE,yBAAyB;wBAC/E,4BAA4B,EAAE,gCAAgC;wBAC9D,qBAAqB,EAAE,wCAAwC;wBAC/D,oBAAoB,EAAE,oBAAoB;wBAC1C,kBAAkB,EAAE,kBAAkB;qBACvC;oBACD,aAAa,EAAEE,sBAAiB,CAAC,IAAI;;oBAErC,eAAe,EAAED,4BAAuB,CAAC,OAAO;;iBACjD;;;gBApICX,eAAU;gBAdJ8B,mBAAc,uBA4JjB3B,aAAQ;gBA1IXF,WAAM;gBARN8B,sBAAiB;gBAPXkB,uBAAa;gBADbC,iBAAQ;6CA+JX/C,aAAQ,YAAID,WAAM,SAACE,gCAAqB;;;yBAb1CmC,oBAAe,SAACb,eAAU,CAAC,cAAM,OAAA,UAAU,GAAA,CAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;0BACjEX,cAAS,SAAC,SAAS,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;oCACnCA,cAAS,SAAC,kBAAkB,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;2BAC5CA,cAAS,SAAC,SAAS,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;iCACnCA,cAAS,SAAC,eAAe;qCACzBA,cAAS,SAAC,mBAAmB;;IAehC;IACA;QAAA;SAA4B;kCAAA;KAAA,IAAA;IAC5B,IAAM,oBAAoB,GAElBoC,oBAAa,CAACjB,yBAAkB,CAAC3B,oBAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAE9E;AAEA;QAAqC,mCAAoB;QAmCvD,yBACY,UAA0B;6BACN,UAAsB,EACH,mBAA6C,EACrE,QAAgB,EAAU,aAA2B,EACjC,aAAsB;YALrE,YAME,iBAAO,SAQR;YAbW,gBAAU,GAAV,UAAU,CAAgB;YACN,gBAAU,GAAV,UAAU,CAAY;YAED,mBAAa,GAAb,aAAa,CAAc;;YAnCtE,eAAS,GAAY,KAAK,CAAC;YAuCnC,KAAI,CAAC,YAAY,GAAG,mBAAmB,IAAI,EAAE,CAAC;YAC9C,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAExC,IAAI,aAAa,KAAK,gBAAgB,EAAE;gBACtC,KAAI,CAAC,YAAY,CAAC,SAAS,GAAG,EAAC,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAC,CAAC;aACnE;;SACF;QA1CD,sBACI,mCAAM;;iBADV,cACwB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;iBAChD,UAAW,KAAc;gBACvB,IAAM,QAAQ,GAAG6B,8BAAqB,CAAC,KAAK,CAAC,CAAC;gBAE9C,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;oBAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;iBACpC;aACF;;;WAR+C;QAsBhD,sBAAI,2CAAc;;;;;iBAAlB;gBACE,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa;oBACzE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;aAChC;;;WAAA;;QAmBD,+BAAK,GAAL;YACE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SACvC;QAED,yCAAe,GAAf;YACE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC7C;QAED,qCAAW,GAAX;YACE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACpD;;KA9DH,CAAqC,oBAAoB;;gBADxDrC,cAAS;;;gBAqCgB,cAAc;gBAtMtCC,eAAU;gDAwMLG,aAAQ,YAAID,WAAM,SAACkD,gCAAyB;6CAC5CC,cAAS,SAAC,UAAU;gBAxNFC,iBAAY;6CAyN9BnD,aAAQ,YAAID,WAAM,SAACE,gCAAqB;;;yBAjC5CY,UAAK;;IAgER;;;AAgBA;QAAgC,8BAAe;QAI7C,oBACE,SAAoB,EAAE,UAAsB,EAAE,MAAc,EAC5D,QAAkB,EAC6B,mBAA6C,EACrE,QAAgB,EAAE,YAA0B,EACxB,aAAsB;YALnE,YAME,kBAAM,SAAS,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC,SAGzF;YAFC,KAAI,CAAC,cAAc,GAAG,IAAIuC,qBAAc,CAAC,KAAI,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC7E,KAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;;SAClE;QAED,gCAAW,GAAX;YACE,iBAAM,WAAW,WAAE,CAAC;YACpB,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;SAC5C;;KAlBH,CAAgC,eAAe;;gBAb9CxD,cAAS,SAAC;oBACT,QAAQ,EAAE,8BAA8B;oBACxC,QAAQ,EAAE,YAAY;oBACtB,MAAM,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,UAAU,CAAC;oBACjD,IAAI,EAAE;wBACJ,OAAO,EAAE,kCAAkC;wBAC3C,qBAAqB,EAAE,wBAAwB;wBAC/C,sBAAsB,EAAE,UAAU;wBAClC,iBAAiB,EAAE,UAAU;wBAC7B,0BAA0B,EAAE,UAAU;wBACtC,8BAA8B,EAAE,QAAQ;qBACzC;iBACF;;;gBAMc,SAAS;gBA9PtBC,eAAU;gBAIVC,WAAM;gBAhBAiD,iBAAQ;gDA4QX/C,aAAQ,YAAID,WAAM,SAACkD,gCAAyB;6CAC5CC,cAAS,SAAC,UAAU;gBAhRAC,iBAAY;6CAiRhCnD,aAAQ,YAAID,WAAM,SAACE,gCAAqB;;;ICxR7C;;;;;;;AAQA;QAkDA;;;;;gBAjCCoD,aAAQ,SAAC;oBACR,OAAO,EAAE;wBACPC,mBAAY;wBACZC,sBAAe;wBACfC,mBAAY;wBACZC,sBAAe;wBACfC,yBAAe;wBACfC,eAAU;qBACX;;oBAED,OAAO,EAAE;wBACPJ,sBAAe;wBACf,WAAW;wBACX,WAAW;wBACX,MAAM;wBACN,SAAS;wBACT,UAAU;wBACV,aAAa;qBACd;oBACD,YAAY,EAAE;wBACZ,WAAW;wBACX,WAAW;wBACX,MAAM;wBACN,SAAS;wBACT,kBAAkB;wBAClB,SAAS;wBACT,UAAU;wBACV,UAAU;wBACV,gBAAgB;wBAChB,YAAY;wBACZ,aAAa;qBACd;iBACF;;;ICzDD;;;;;;OAMG;;ICNH;;;;;;OAMG;;ICNH;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}