@covalent/core
Version:
Core Teradata UI Platform for layouts, icons, custom components and themes. This should be added as a dependency for any project that wants to use layouts, icons and themes for Angular Material.
1 lines • 93.8 kB
Source Map (JSON)
{"version":3,"file":"covalent-core-breadcrumbs.mjs","sources":["../tmp-esm2022/breadcrumbs/breadcrumb/breadcrumb.component.js","../tmp-esm2022/breadcrumbs/breadcrumbs.component.js","../tmp-esm2022/breadcrumbs/breadcrumbs.module.js","../tmp-esm2022/breadcrumbs/covalent-core-breadcrumbs.js"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, HostBinding, ChangeDetectionStrategy, ChangeDetectorRef, inject, } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/tooltip\";\nconst _c0 = [\"*\"];\nfunction TdBreadcrumbComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"mat-icon\", 2);\n i0.ɵɵlistener(\"click\", function TdBreadcrumbComponent_Conditional_2_Template_mat_icon_click_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1._handleIconClick($event)); });\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"cursor\", \"default\");\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.separatorIcon);\n} }\nexport class TdBreadcrumbComponent {\n _changeDetectorRef = inject(ChangeDetectorRef);\n _displayCrumb = true;\n _width = 0;\n _displayIcon = true;\n _separatorIcon = 'chevron_right';\n _shouldTruncate = false;\n _maxWidth;\n elementRef = inject(ElementRef);\n fullText = '';\n flexOrder = 0;\n isCurrentPage = false;\n get ariaCurrent() {\n return this.isCurrentPage ? 'page' : null;\n }\n matButtonClass = true;\n tdBreadCrumbClass = true;\n // Sets the icon url shown between breadcrumbs. Defaults to 'chevron_right'\n get separatorIcon() {\n return this._separatorIcon;\n }\n set separatorIcon(separatorIcon) {\n this._separatorIcon = separatorIcon;\n setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n // Should show the right chevron or not before the label\n get displayIcon() {\n return this._displayIcon;\n }\n set displayIcon(displayIcon) {\n this._displayIcon = displayIcon;\n setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n get shouldTruncate() {\n return this._shouldTruncate;\n }\n set shouldTruncate(shouldTruncate) {\n this._shouldTruncate = shouldTruncate;\n setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n get maxWidth() {\n return this._maxWidth;\n }\n set maxWidth(maxWidth) {\n this._maxWidth = maxWidth;\n setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n get displayCrumb() {\n return this._displayCrumb;\n }\n /**\n * Whether to display the crumb or not\n */\n set displayCrumb(shouldDisplay) {\n this._displayCrumb = shouldDisplay;\n setTimeout(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n /**\n * Width of the DOM element of the crumb\n */\n get width() {\n return this._width;\n }\n /**\n * Gets the display style of the crumb\n */\n get displayBinding() {\n // Set the display to none on the component, just in case the end user is hiding\n // and showing them instead of the component doing itself for reasons like responsive\n return this._displayCrumb ? undefined : 'none';\n }\n get maxWidthBinding() {\n return this._shouldTruncate ? this._maxWidth : undefined;\n }\n get orderBinding() {\n return this.flexOrder;\n }\n ngAfterViewInit() {\n // set the width from the actual rendered DOM element\n setTimeout(() => {\n this._width = (this.elementRef.nativeElement).getBoundingClientRect().width;\n const textSpan = this.elementRef.nativeElement.querySelector('.td-breadcrumb-text');\n if (textSpan) {\n this.fullText = textSpan.textContent?.trim() || '';\n }\n this._changeDetectorRef.markForCheck();\n });\n }\n /**\n * Stop click propagation when clicking on icon\n */\n _handleIconClick(event) {\n event.stopPropagation();\n event.preventDefault();\n }\n static ɵfac = function TdBreadcrumbComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TdBreadcrumbComponent)(); };\n static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TdBreadcrumbComponent, selectors: [[\"td-breadcrumb\"], [\"a\", \"td-breadcrumb\", \"\"]], hostVars: 11, hostBindings: function TdBreadcrumbComponent_HostBindings(rf, ctx) { if (rf & 2) {\n i0.ɵɵattribute(\"aria-current\", ctx.ariaCurrent);\n i0.ɵɵstyleProp(\"display\", ctx.displayBinding)(\"max-width\", ctx.maxWidthBinding, \"px\")(\"order\", ctx.orderBinding);\n i0.ɵɵclassProp(\"mdc-button\", ctx.matButtonClass)(\"td-breadcrumb\", ctx.tdBreadCrumbClass);\n } }, ngContentSelectors: _c0, decls: 3, vars: 6, consts: [[1, \"td-breadcrumb-text\", 3, \"matTooltip\", \"matTooltipDisabled\"], [\"aria-hidden\", \"true\", 1, \"td-breadcrumb-separator-icon\", 3, \"cursor\"], [\"aria-hidden\", \"true\", 1, \"td-breadcrumb-separator-icon\", 3, \"click\"]], template: function TdBreadcrumbComponent_Template(rf, ctx) { if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementEnd();\n i0.ɵɵconditionalCreate(2, TdBreadcrumbComponent_Conditional_2_Template, 2, 3, \"mat-icon\", 1);\n } if (rf & 2) {\n i0.ɵɵclassProp(\"td-breadcrumb-truncated\", ctx.shouldTruncate);\n i0.ɵɵproperty(\"matTooltip\", ctx.shouldTruncate ? ctx.fullText : \"\")(\"matTooltipDisabled\", !ctx.shouldTruncate);\n i0.ɵɵattribute(\"aria-label\", ctx.shouldTruncate ? ctx.fullText : null);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(ctx.displayIcon ? 2 : -1);\n } }, dependencies: [CommonModule, MatIcon, MatTooltipModule, i1.MatTooltip], styles: [\".td-breadcrumb[_nghost-%COMP%]{display:inline-flex;box-sizing:border-box;flex-direction:row;align-items:center;align-content:center;flex-shrink:0;justify-content:flex-end;max-width:100%}.td-breadcrumb[_nghost-%COMP%] >*{margin:0 10px}[_nghost-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.mdc-button[_nghost-%COMP%]{min-width:0;padding:0}.td-breadcrumb-text[_ngcontent-%COMP%]{margin:0;padding:0;flex:1 1 auto;min-width:0}.td-breadcrumb-text.td-breadcrumb-truncated[_ngcontent-%COMP%]{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}mat-icon.td-breadcrumb-separator-icon[_ngcontent-%COMP%]{flex-shrink:0}\"], changeDetection: 0 });\n}\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TdBreadcrumbComponent, [{\n type: Component,\n args: [{ selector: 'td-breadcrumb, a[td-breadcrumb]', imports: [CommonModule, MatIcon, MatTooltipModule], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<span\\n class=\\\"td-breadcrumb-text\\\"\\n [class.td-breadcrumb-truncated]=\\\"shouldTruncate\\\"\\n [matTooltip]=\\\"shouldTruncate ? fullText : ''\\\"\\n [matTooltipDisabled]=\\\"!shouldTruncate\\\"\\n [attr.aria-label]=\\\"shouldTruncate ? fullText : null\\\"\\n>\\n <ng-content></ng-content>\\n</span>\\n@if (displayIcon) {\\n <mat-icon\\n class=\\\"td-breadcrumb-separator-icon\\\"\\n [style.cursor]=\\\"'default'\\\"\\n (click)=\\\"_handleIconClick($event)\\\"\\n aria-hidden=\\\"true\\\"\\n >{{ separatorIcon }}</mat-icon\\n >\\n}\\n\", styles: [\":host.td-breadcrumb{display:inline-flex;box-sizing:border-box;flex-direction:row;align-items:center;align-content:center;flex-shrink:0;justify-content:flex-end;max-width:100%}:host.td-breadcrumb ::ng-deep>*{margin:0 10px}:host mat-icon{font-size:16px;width:16px;height:16px}:host.mdc-button{min-width:0;padding:0}.td-breadcrumb-text{margin:0;padding:0;flex:1 1 auto;min-width:0}.td-breadcrumb-text.td-breadcrumb-truncated{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}mat-icon.td-breadcrumb-separator-icon{flex-shrink:0}\\n\"] }]\n }], null, { ariaCurrent: [{\n type: HostBinding,\n args: ['attr.aria-current']\n }], matButtonClass: [{\n type: HostBinding,\n args: ['class.mdc-button']\n }], tdBreadCrumbClass: [{\n type: HostBinding,\n args: ['class.td-breadcrumb']\n }], displayBinding: [{\n type: HostBinding,\n args: ['style.display']\n }], maxWidthBinding: [{\n type: HostBinding,\n args: ['style.max-width.px']\n }], orderBinding: [{\n type: HostBinding,\n args: ['style.order']\n }] }); })();\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassDebugInfo(TdBreadcrumbComponent, { className: \"TdBreadcrumbComponent\", filePath: \"breadcrumb/breadcrumb.component.ts\", lineNumber: 21 }); })();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvYnJlYWRjcnVtYnMvc3JjL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvYnJlYWRjcnVtYnMvc3JjL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUVYLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0lDRDNELG1DQUtHO0lBRkQsaU1BQVMsK0JBQXdCLEtBQUM7SUFFakMsWUFBbUI7SUFBQSxpQkFDckI7OztJQUpDLG1DQUEwQjtJQUd6QixjQUFtQjtJQUFuQiwwQ0FBbUI7O0FES3hCLE1BQU0sT0FBTyxxQkFBcUI7SUFDeEIsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFL0MsYUFBYSxHQUFHLElBQUksQ0FBQztJQUNyQixNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ1gsWUFBWSxHQUFHLElBQUksQ0FBQztJQUNwQixjQUFjLEdBQUcsZUFBZSxDQUFDO0lBQ2pDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDeEIsU0FBUyxDQUFVO0lBRXBCLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNkLFNBQVMsR0FBRyxDQUFDLENB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Q29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGQtYnJlYWRjcnVtYiwgYVt0ZC1icmVhZGNydW1iXScsXG4gIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWIuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uLCBNYXRUb29sdGlwTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFRkQnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgcHJpdmF0ZSBfZGlzcGxheUNydW1iID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfd2lkdGggPSAwO1xuICBwcml2YXRlIF9kaXNwbGF5SWNvbiA9IHRydWU7XG4gIHByaXZhdGUgX3NlcGFyYXRvckljb24gPSAnY2hldnJvbl9yaWdodCc7XG4gIHByaXZhdGUgX3Nob3VsZFRydW5jYXRlID0gZmFsc2U7XG4gIHByaXZhdGUgX21heFdpZHRoPzogbnVtYmVyO1xuXG4gIHB1YmxpYyBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwdWJsaWMgZnVsbFRleHQgPSAnJztcbiAgcHVibGljIGZsZXhPcmRlciA9IDA7XG4gIHB1YmxpYyBpc0N1cnJlbnRQYWdlID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtY3VycmVudCcpXG4gIGdldCBhcmlhQ3VycmVudCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5pc0N1cnJlbnRQYWdlID8gJ3BhZ2UnIDogbnVsbDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MubWRjLWJ1dHRvbicpIG1hdEJ1dHRvbkNsYXNzID0gdHJ1ZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy50ZC1icmVhZGNydW1iJykgdGRCcmVhZENydW1iQ2xhc3MgPSB0cnVlO1xuXG4gIC8vIFNldHMgdGhlIGljb24gdXJsIHNob3duIGJldHdlZW4gYnJlYWRjcnVtYnMuIERlZmF1bHRzIHRvICdjaGV2cm9uX3JpZ2h0J1xuICBwdWJsaWMgZ2V0IHNlcGFyYXRvckljb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2VwYXJhdG9ySWNvbjtcbiAgfVxuICBwdWJsaWMgc2V0IHNlcGFyYXRvckljb24oc2VwYXJhdG9ySWNvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2VwYXJhdG9ySWNvbiA9IHNlcGFyYXRvckljb247XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFNob3VsZCBzaG93IHRoZSByaWdodCBjaGV2cm9uIG9yIG5vdCBiZWZvcmUgdGhlIGxhYmVsXG4gIHB1YmxpYyBnZXQgZGlzcGxheUljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlJY29uO1xuICB9XG4gIHB1YmxpYyBzZXQgZGlzcGxheUljb24oZGlzcGxheUljb246IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNwbGF5SWNvbiA9IGRpc3BsYXlJY29uO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgc2hvdWxkVHJ1bmNhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3VsZFRydW5jYXRlO1xuICB9XG5cbiAgcHVibGljIHNldCBzaG91bGRUcnVuY2F0ZShzaG91bGRUcnVuY2F0ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3VsZFRydW5jYXRlID0gc2hvdWxkVHJ1bmNhdGU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBtYXhXaWR0aCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9tYXhXaWR0aDtcbiAgfVxuXG4gIHNldCBtYXhXaWR0aChtYXhXaWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fbWF4V2lkdGggPSBtYXhXaWR0aDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlDcnVtYigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheUNydW1iO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgY3J1bWIgb3Igbm90XG4gICAqL1xuICBwdWJsaWMgc2V0IGRpc3BsYXlDcnVtYihzaG91bGREaXNwbGF5OiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzcGxheUNydW1iID0gc2hvdWxkRGlzcGxheTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpZHRoIG9mIHRoZSBET00gZWxlbWVudCBvZiB0aGUgY3J1bWJcbiAgICovXG4gIGdldCB3aWR0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aWR0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBkaXNwbGF5IHN0eWxlIG9mIHRoZSBjcnVtYlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5kaXNwbGF5JylcbiAgZ2V0IGRpc3BsYXlCaW5kaW5nKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gU2V0IHRoZSBkaXNwbGF5IHRvIG5vbmUgb24gdGhlIGNvbXBvbmVudCwganVzdCBpbiBjYXNlIHRoZSBlbmQgdXNlciBpcyBoaWRpbmdcbiAgICAvLyBhbmQgc2hvd2luZyB0aGVtIGluc3RlYWQgb2YgdGhlIGNvbXBvbmVudCBkb2luZyBpdHNlbGYgZm9yIHJlYXNvbnMgbGlrZSByZXNwb25zaXZlXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlDcnVtYiA/IHVuZGVmaW5lZCA6ICdub25lJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUubWF4LXdpZHRoLnB4JylcbiAgZ2V0IG1heFdpZHRoQmluZGluZygpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9zaG91bGRUcnVuY2F0ZSA/IHRoaXMuX21heFdpZHRoIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vcmRlcicpXG4gIGdldCBvcmRlckJpbmRpbmcoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5mbGV4T3JkZXI7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gc2V0IHRoZSB3aWR0aCBmcm9tIHRoZSBhY3R1YWwgcmVuZGVyZWQgRE9NIGVsZW1lbnRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX3dpZHRoID0gKDxIVE1MRWxlbWVudD4oXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICApKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgIGNvbnN0IHRleHRTcGFuID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJy50ZC1icmVhZGNydW1iLXRleHQnLFxuICAgICAgKTtcbiAgICAgIGlmICh0ZXh0U3Bhbikge1xuICAgICAgICB0aGlzLmZ1bGxUZXh0ID0gdGV4dFNwYW4udGV4dENvbnRlbnQ/LnRyaW0oKSB8fCAnJztcbiAgICAgIH1cbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgY2xpY2sgcHJvcGFnYXRpb24gd2hlbiBjbGlja2luZyBvbiBpY29uXG4gICAqL1xuICBfaGFuZGxlSWNvbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cbn1cbiIsIjxzcGFuXG4gIGNsYXNzPVwidGQtYnJlYWRjcnVtYi10ZXh0XCJcbiAgW2NsYXNzLnRkLWJyZWFkY3J1bWItdHJ1bmNhdGVkXT1cInNob3VsZFRydW5jYXRlXCJcbiAgW21hdFRvb2x0aXBdPVwic2hvdWxkVHJ1bmNhdGUgPyBmdWxsVGV4dCA6ICcnXCJcbiAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIhc2hvdWxkVHJ1bmNhdGVcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cInNob3VsZFRydW5jYXRlID8gZnVsbFRleHQgOiBudWxsXCJcbj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9zcGFuPlxuQGlmIChkaXNwbGF5SWNvbikge1xuICA8bWF0LWljb25cbiAgICBjbGFzcz1cInRkLWJyZWFkY3J1bWItc2VwYXJhdG9yLWljb25cIlxuICAgIFtzdHlsZS5jdXJzb3JdPVwiJ2RlZmF1bHQnXCJcbiAgICAoY2xpY2spPVwiX2hhbmRsZUljb25DbGljaygkZXZlbnQpXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID57eyBzZXBhcmF0b3JJY29uIH19PC9tYXQtaWNvblxuICA+XG59XG4iXX0=","import { Component, ContentChildren, QueryList, ChangeDetectionStrategy, ChangeDetectorRef, ElementRef, Input, HostBinding, ViewChild, inject, } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, startWith, takeUntil } from 'rxjs/operators';\nimport { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { TdBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/menu\";\nimport * as i2 from \"@angular/material/button\";\nimport * as i3 from \"@angular/material/icon\";\nconst _c0 = [\"*\"];\nfunction TdBreadcrumbsComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {\n i0.ɵɵelementStart(0, \"button\", 3)(1, \"mat-icon\");\n i0.ɵɵtext(2, \"more_horiz\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(3, \"mat-icon\", 4);\n i0.ɵɵtext(4);\n i0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n const overflowMenu_r2 = i0.ɵɵreference(3);\n i0.ɵɵstyleProp(\"order\", ctx_r0.overflowButtonOrder);\n i0.ɵɵproperty(\"matMenuTriggerFor\", overflowMenu_r2);\n i0.ɵɵattribute(\"aria-label\", ctx_r0.overflowButtonAriaLabel)(\"data-test-id\", \"breadcrumb-overflow-button\");\n i0.ɵɵadvance(3);\n i0.ɵɵstyleProp(\"order\", ctx_r0.overflowButtonOrder);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r0.separatorIcon);\n} }\nfunction TdBreadcrumbsComponent_For_5_Template(rf, ctx) { if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 5);\n i0.ɵɵlistener(\"click\", function TdBreadcrumbsComponent_For_5_Template_button_click_0_listener() { const item_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.handleOverflowItemClick(item_r4)); });\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r4 = ctx.$implicit;\n const ɵ$index_13_r5 = ctx.$index;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵattribute(\"data-test-id\", \"breadcrumb-overflow-item-\" + ɵ$index_13_r5)(\"aria-label\", \"Navigate to \" + ctx_r0.getItemText(item_r4));\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r0.getItemText(item_r4), \" \");\n} }\nexport class TdBreadcrumbsComponent {\n _elementRef = inject(ElementRef);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _resizing = false;\n _separatorIcon = 'chevron_right';\n _destroy$ = new Subject();\n /**\n * Maximum width ratio for the last breadcrumb when truncation is needed.\n * Set to 35% of available width to ensure last breadcrumb doesn't dominate the space\n * while still being readable.\n */\n LAST_BREADCRUMB_MAX_WIDTH_RATIO = 0.35;\n tdBreadCrumbsClass = true;\n role = 'navigation';\n ariaLabel = 'Breadcrumb';\n // all the sub components, which are the individual breadcrumbs\n _breadcrumbs;\n // the list of hidden breadcrumbs not shown right now (responsive)\n hiddenBreadcrumbs = [];\n overflowMenuItems = [];\n showOverflowButton = false;\n overflowButtonOrder = 50;\n overflowMenuTrigger;\n /**\n * Sets the icon url shown between breadcrumbs. Defaults to 'chevron_right'.\n */\n set separatorIcon(separatorIcon) {\n this._separatorIcon = separatorIcon;\n this.setCrumbIcons();\n }\n get separatorIcon() {\n return this._separatorIcon;\n }\n size;\n get fontFamily() {\n return this.size\n ? `var(--cv-typography-${this.size}-font-family)`\n : undefined;\n }\n get fontSize() {\n return this.size\n ? `var(--cv-typography-${this.size}-font-size)`\n : undefined;\n }\n get fontWeight() {\n return this.size\n ? `var(--cv-typography-${this.size}-font-weight)`\n : undefined;\n }\n get lineHeight() {\n return this.size\n ? `var(--cv-typography-${this.size}-line-height)`\n : undefined;\n }\n ngOnInit() {\n fromEvent(window, 'resize')\n .pipe(debounceTime(10), takeUntil(this._destroy$))\n .subscribe(() => {\n if (!this._resizing) {\n this._resizing = true;\n setTimeout(() => {\n this._calculateVisibility();\n this._resizing = false;\n this._changeDetectorRef.markForCheck();\n }, 100);\n }\n });\n }\n ngAfterViewInit() {\n this._waitToCalculateVisibility();\n }\n ngAfterContentInit() {\n this._breadcrumbs.changes\n .pipe(startWith(this._breadcrumbs), takeUntil(this._destroy$))\n .subscribe(() => {\n this._waitToCalculateVisibility();\n setTimeout(() => {\n this.setCrumbIcons();\n this._changeDetectorRef.markForCheck();\n });\n });\n }\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n /*\n * Current width of the element container\n */\n get nativeElementWidth() {\n const element = this._elementRef.nativeElement;\n // Need to take into account border, margin and padding that might be around all the crumbs\n const style = window.getComputedStyle(element);\n const borderLeft = parseInt(style.borderLeft, 10);\n const borderRight = parseInt(style.borderRight, 10);\n const marginLeft = parseInt(style.marginLeft, 10);\n const marginRight = parseInt(style.marginRight, 10);\n const paddingLeft = parseInt(style.paddingLeft, 10);\n const paddingRight = parseInt(style.paddingRight, 10);\n return (element.getBoundingClientRect().width -\n borderLeft -\n borderRight -\n marginLeft -\n marginRight -\n paddingLeft -\n paddingRight);\n }\n /**\n * The total count of individual breadcrumbs\n */\n get count() {\n return this._breadcrumbs ? this._breadcrumbs.length : 0;\n }\n get overflowButtonAriaLabel() {\n const count = this.hiddenBreadcrumbs.length;\n return `Show ${count} hidden breadcrumb${count > 1 ? 's' : ''}`;\n }\n handleOverflowItemClick(item) {\n const nativeElement = item.elementRef?.nativeElement;\n if (nativeElement) {\n nativeElement.click();\n }\n }\n getItemText(item) {\n return item.fullText || '';\n }\n /**\n * Set the crumb icon separators\n */\n setCrumbIcons() {\n if (this._breadcrumbs) {\n const breadcrumbArray = this._breadcrumbs.toArray();\n setTimeout(() => {\n breadcrumbArray.forEach((breadcrumb, index) => {\n breadcrumb.separatorIcon = this.separatorIcon;\n breadcrumb.displayIcon = true;\n breadcrumb.isCurrentPage = index === breadcrumbArray.length - 1;\n });\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n _calculateVisibility() {\n const crumbsArray = this._breadcrumbs.toArray();\n const totalBreadcrumbs = crumbsArray.length;\n // Reset all orders when there are 2 or fewer breadcrumbs\n if (totalBreadcrumbs <= 2) {\n crumbsArray.forEach((breadcrumb) => {\n breadcrumb.displayCrumb = true;\n breadcrumb.shouldTruncate = false;\n breadcrumb.maxWidth = undefined;\n breadcrumb.flexOrder = 0; // Default order\n });\n this.showOverflowButton = false;\n this.overflowMenuItems = [];\n this.hiddenBreadcrumbs = [];\n this._changeDetectorRef.markForCheck();\n return;\n }\n const firstCrumb = crumbsArray[0];\n const lastCrumb = crumbsArray[totalBreadcrumbs - 1];\n const containerWidth = this.nativeElementWidth;\n const totalRequiredWidth = crumbsArray.reduce((sum, crumb) => sum + crumb.width, 0);\n if (totalRequiredWidth <= containerWidth) {\n crumbsArray.forEach((breadcrumb, index) => {\n breadcrumb.displayCrumb = true;\n breadcrumb.shouldTruncate = false;\n breadcrumb.maxWidth = undefined;\n breadcrumb.flexOrder =\n index === 0\n ? 0\n : index === totalBreadcrumbs - 1\n ? 1000\n : index * 10; // Assign orders based on index for middle crumbs\n });\n this.showOverflowButton = false;\n this.overflowMenuItems = [];\n this.hiddenBreadcrumbs = [];\n this._changeDetectorRef.markForCheck();\n return;\n }\n const overflowButtonWidth = 48;\n const availableWidth = containerWidth - overflowButtonWidth;\n const visibleMiddleCrumbs = [];\n let requiredWidth = firstCrumb.width + lastCrumb.width;\n // Try to fit breadcrumbs from right to left (favoring more recent items)\n for (let i = totalBreadcrumbs - 2; i >= 1; i--) {\n const breadcrumb = crumbsArray[i];\n if (requiredWidth + breadcrumb.width <= availableWidth) {\n requiredWidth += breadcrumb.width;\n visibleMiddleCrumbs.unshift(i);\n }\n }\n // Apply visibility and flexbox orders\n const hiddenBreadcrumbs = [];\n let currentOrder = 10; // Start orders at 10 for middle breadcrumbs\n crumbsArray.forEach((breadcrumb, index) => {\n if (index === 0) {\n // First breadcrumb - always visible, always first\n breadcrumb.displayCrumb = true;\n breadcrumb.shouldTruncate = false;\n breadcrumb.maxWidth = undefined;\n breadcrumb.flexOrder = 0;\n }\n else if (index === totalBreadcrumbs - 1) {\n // Last breadcrumb - always visible, always last\n breadcrumb.displayCrumb = true;\n breadcrumb.shouldTruncate = false;\n breadcrumb.flexOrder = 1000;\n }\n else if (visibleMiddleCrumbs.includes(index)) {\n // Visible middle breadcrumbs - assign incremental orders\n breadcrumb.displayCrumb = true;\n breadcrumb.shouldTruncate = false;\n breadcrumb.maxWidth = undefined;\n breadcrumb.flexOrder = currentOrder;\n currentOrder += 10;\n }\n else {\n // Hidden breadcrumbs\n breadcrumb.displayCrumb = false;\n breadcrumb.shouldTruncate = false;\n breadcrumb.maxWidth = undefined;\n breadcrumb.flexOrder = 0; // Doesn't matter, it's hidden\n hiddenBreadcrumbs.push(breadcrumb);\n }\n });\n // Overflow button order comes after visible middle breadcrumbs\n this.overflowButtonOrder = currentOrder;\n // Truncate last breadcrumb if too long\n const lastBreadcrumbMaxWidth = availableWidth * this.LAST_BREADCRUMB_MAX_WIDTH_RATIO;\n if (lastCrumb.width > lastBreadcrumbMaxWidth) {\n lastCrumb.shouldTruncate = true;\n lastCrumb.maxWidth = lastBreadcrumbMaxWidth;\n }\n else {\n // Ensure maxWidth is reset if last breadcrumb doesn't need truncation\n lastCrumb.maxWidth = undefined;\n }\n this.showOverflowButton = hiddenBreadcrumbs.length > 0;\n this.overflowMenuItems = hiddenBreadcrumbs;\n this.hiddenBreadcrumbs = hiddenBreadcrumbs;\n this._changeDetectorRef.markForCheck();\n }\n _waitToCalculateVisibility() {\n setTimeout(() => {\n this._calculateVisibility();\n });\n }\n static ɵfac = function TdBreadcrumbsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TdBreadcrumbsComponent)(); };\n static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TdBreadcrumbsComponent, selectors: [[\"td-breadcrumbs\"]], contentQueries: function TdBreadcrumbsComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, TdBreadcrumbComponent, 5);\n } if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._breadcrumbs = _t);\n } }, viewQuery: function TdBreadcrumbsComponent_Query(rf, ctx) { if (rf & 1) {\n i0.ɵɵviewQuery(MatMenuTrigger, 5);\n } if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.overflowMenuTrigger = _t.first);\n } }, hostVars: 12, hostBindings: function TdBreadcrumbsComponent_HostBindings(rf, ctx) { if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.role)(\"aria-label\", ctx.ariaLabel);\n i0.ɵɵstyleProp(\"font-family\", ctx.fontFamily)(\"font-size\", ctx.fontSize)(\"font-weight\", ctx.fontWeight)(\"line-height\", ctx.lineHeight);\n i0.ɵɵclassProp(\"td-breadcrumbs\", ctx.tdBreadCrumbsClass);\n } }, inputs: { separatorIcon: \"separatorIcon\", size: \"size\" }, ngContentSelectors: _c0, decls: 6, vars: 1, consts: [[\"overflowMenu\", \"matMenu\"], [1, \"td-breadcrumbs-overflow-menu\"], [\"mat-menu-item\", \"\"], [\"mat-icon-button\", \"\", 1, \"td-breadcrumbs-overflow-button\", 3, \"matMenuTriggerFor\"], [\"color\", \"primary\", \"aria-hidden\", \"true\", 1, \"td-breadcrumb-separator-icon\"], [\"mat-menu-item\", \"\", 3, \"click\"]], template: function TdBreadcrumbsComponent_Template(rf, ctx) { if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n i0.ɵɵconditionalCreate(1, TdBreadcrumbsComponent_Conditional_1_Template, 5, 8);\n i0.ɵɵelementStart(2, \"mat-menu\", 1, 0);\n i0.ɵɵrepeaterCreate(4, TdBreadcrumbsComponent_For_5_Template, 2, 3, \"button\", 2, i0.ɵɵrepeaterTrackByIdentity);\n i0.ɵɵelementEnd();\n } if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.showOverflowButton ? 1 : -1);\n i0.ɵɵadvance(3);\n i0.ɵɵrepeater(ctx.overflowMenuItems);\n } }, dependencies: [CommonModule, MatMenuModule, i1.MatMenu, i1.MatMenuItem, i1.MatMenuTrigger, MatButtonModule, i2.MatIconButton, MatIconModule, i3.MatIcon], styles: [\"[_nghost-%COMP%]{display:flex;align-items:center}.td-breadcrumbs[_nghost-%COMP%]{white-space:nowrap}.td-breadcrumbs-overflow-button[_ngcontent-%COMP%]{margin:0 4px;flex-shrink:0}.td-breadcrumbs-overflow-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;height:18px;width:18px;line-height:unset}.td-breadcrumbs-overflow-button[_ngcontent-%COMP%] + .td-breadcrumb-separator-icon[_ngcontent-%COMP%]{order:inherit;font-size:16px;width:16px;height:16px;flex-shrink:0;margin:0 10px}.td-breadcrumb-overflow-menu[_ngcontent-%COMP%]{max-width:300px}.td-breadcrumb-overflow-menu[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{max-width:100%}.td-breadcrumb-overflow-menu[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .mat-mdc-menu-item-text{white-space:normal;line-height:1.4}\"], changeDetection: 0 });\n}\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TdBreadcrumbsComponent, [{\n type: Component,\n args: [{ selector: 'td-breadcrumbs', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, MatMenuModule, MatButtonModule, MatIconModule], template: \"<ng-content></ng-content>\\n\\n@if (showOverflowButton) {\\n <button\\n mat-icon-button\\n class=\\\"td-breadcrumbs-overflow-button\\\"\\n [matMenuTriggerFor]=\\\"overflowMenu\\\"\\n [attr.aria-label]=\\\"overflowButtonAriaLabel\\\"\\n [style.order]=\\\"overflowButtonOrder\\\"\\n [attr.data-test-id]=\\\"'breadcrumb-overflow-button'\\\"\\n >\\n <mat-icon>more_horiz</mat-icon>\\n </button>\\n <mat-icon\\n class=\\\"td-breadcrumb-separator-icon\\\"\\n [style.order]=\\\"overflowButtonOrder\\\"\\n color=\\\"primary\\\"\\n aria-hidden=\\\"true\\\"\\n >{{ separatorIcon }}</mat-icon\\n >\\n}\\n\\n<mat-menu #overflowMenu=\\\"matMenu\\\" class=\\\"td-breadcrumbs-overflow-menu\\\">\\n @for (item of overflowMenuItems; track item; let index = $index) {\\n <button\\n mat-menu-item\\n (click)=\\\"handleOverflowItemClick(item)\\\"\\n [attr.data-test-id]=\\\"'breadcrumb-overflow-item-' + index\\\"\\n [attr.aria-label]=\\\"'Navigate to ' + getItemText(item)\\\"\\n >\\n {{ getItemText(item) }}\\n </button>\\n }\\n</mat-menu>\\n\", styles: [\":host{display:flex;align-items:center}:host.td-breadcrumbs{white-space:nowrap}.td-breadcrumbs-overflow-button{margin:0 4px;flex-shrink:0}.td-breadcrumbs-overflow-button mat-icon{font-size:18px;height:18px;width:18px;line-height:unset}.td-breadcrumbs-overflow-button+.td-breadcrumb-separator-icon{order:inherit;font-size:16px;width:16px;height:16px;flex-shrink:0;margin:0 10px}.td-breadcrumb-overflow-menu{max-width:300px}.td-breadcrumb-overflow-menu button{max-width:100%}.td-breadcrumb-overflow-menu button ::ng-deep .mat-mdc-menu-item-text{white-space:normal;line-height:1.4}\\n\"] }]\n }], null, { tdBreadCrumbsClass: [{\n type: HostBinding,\n args: ['class.td-breadcrumbs']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], ariaLabel: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], _breadcrumbs: [{\n type: ContentChildren,\n args: [TdBreadcrumbComponent, { descendants: true }]\n }], overflowMenuTrigger: [{\n type: ViewChild,\n args: [MatMenuTrigger]\n }], separatorIcon: [{\n type: Input\n }], size: [{\n type: Input\n }], fontFamily: [{\n type: HostBinding,\n args: ['style.font-family']\n }], fontSize: [{\n type: HostBinding,\n args: ['style.font-size']\n }], fontWeight: [{\n type: HostBinding,\n args: ['style.font-weight']\n }], lineHeight: [{\n type: HostBinding,\n args: ['style.line-height']\n }] }); })();\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassDebugInfo(TdBreadcrumbsComponent, { className: \"TdBreadcrumbsComponent\", filePath: \"breadcrumbs.component.ts\", lineNumber: 35 }); })();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2JyZWFkY3J1bWJzL3NyYy9icmVhZGNydW1icy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvYnJlYWRjcnVtYnMvc3JjL2JyZWFkY3J1bWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFNBQVMsRUFHVCx1QkFBdUIsRUFFdkIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixLQUFLLEVBQ0wsV0FBVyxFQUVYLFNBQVMsRUFDVCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7OztJQ2J0RSxBQVJGLGlDQU9DLGVBQ1c7SUFBQSwwQkFBVTtJQUN0QixBQURzQixpQkFBVyxFQUN4QjtJQUNULG1DQUtHO0lBQUEsWUFBbUI7SUFBQSxpQkFDckI7Ozs7SUFYQyxtREFBbUM7SUFGbkMsbURBQWtDOztJQVNsQyxlQUFtQztJQUFuQyxtREFBbUM7SUFHbEMsY0FBbUI7SUFBbkIsMENBQW1COzs7O0lB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