@angular-mdl/core
Version:
Angular components, directives and styles based on material design lite https://getmdl.io.
263 lines • 29.8 kB
JavaScript
import { Component, Directive, HostBinding, Input, Optional, ViewEncapsulation, } from "@angular/core";
import { MdlError, MdlStructureError } from "../common/mdl-error";
import { toNumber } from "../common/number.property";
import * as i0 from "@angular/core";
export class MdlUnsupportedCountOfListItemLinesError extends MdlError {
constructor(lines) {
/* istanbul ignore next */
super(`"${lines}" is not supported - max 3 lines please.`);
}
}
export class MdlListComponent {
constructor() {
this.isMdlList = true;
}
}
MdlListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
MdlListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListComponent, selector: "mdl-list", host: { properties: { "class.mdl-list": "this.isMdlList" } }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListComponent, decorators: [{
type: Component,
args: [{
selector: "mdl-list",
template: "<ng-content></ng-content>",
encapsulation: ViewEncapsulation.None,
}]
}], propDecorators: { isMdlList: [{
type: HostBinding,
args: ["class.mdl-list"]
}] } });
export class MdlListItemComponent {
constructor() {
this.isMdlListItem = true;
this.linesIntern = 1;
}
get lines() {
return this.linesIntern;
}
set lines(value) {
this.linesIntern = toNumber(value) ?? 1;
}
get lines2() {
return this.lines === 2;
}
get lines3() {
return this.lines === 3;
}
ngOnChanges() {
if (this.lines && this.lines > 3) {
throw new MdlUnsupportedCountOfListItemLinesError(this.lines);
}
}
}
MdlListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
MdlListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemComponent, selector: "mdl-list-item", inputs: { lines: "lines" }, host: { properties: { "class.mdl-list__item": "this.isMdlListItem", "class.mdl-list__item--two-line": "this.lines2", "class.mdl-list__item--three-line": "this.lines3" } }, usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemComponent, decorators: [{
type: Component,
args: [{
selector: "mdl-list-item",
template: "<ng-content></ng-content>",
encapsulation: ViewEncapsulation.None,
}]
}], propDecorators: { isMdlListItem: [{
type: HostBinding,
args: ["class.mdl-list__item"]
}], lines: [{
type: Input
}], lines2: [{
type: HostBinding,
args: ["class.mdl-list__item--two-line"]
}], lines3: [{
type: HostBinding,
args: ["class.mdl-list__item--three-line"]
}] } });
export class MdlListItemPrimaryContentComponent {
constructor(mdlListItemComponent) {
this.mdlListItemComponent = mdlListItemComponent;
this.isPrimaryContent = true;
}
ngOnInit() {
if (this.mdlListItemComponent === null) {
throw new MdlStructureError("mdl-list-item-primary-content", "mdl-list-item");
}
}
}
MdlListItemPrimaryContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemPrimaryContentComponent, deps: [{ token: MdlListItemComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
MdlListItemPrimaryContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemPrimaryContentComponent, selector: "mdl-list-item-primary-content", host: { properties: { "class.mdl-list__item-primary-content": "this.isPrimaryContent" } }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemPrimaryContentComponent, decorators: [{
type: Component,
args: [{
selector: "mdl-list-item-primary-content",
template: "<ng-content></ng-content>",
encapsulation: ViewEncapsulation.None,
}]
}], ctorParameters: function () { return [{ type: MdlListItemComponent, decorators: [{
type: Optional
}] }]; }, propDecorators: { isPrimaryContent: [{
type: HostBinding,
args: ["class.mdl-list__item-primary-content"]
}] } });
export class MdlListItemSecondaryContentComponent {
constructor(mdlListItemComponent) {
this.mdlListItemComponent = mdlListItemComponent;
this.isSecondaryContent = true;
}
ngOnInit() {
if (this.mdlListItemComponent === null) {
throw new MdlStructureError("mdl-list-item-secondary-content", "mdl-list-item");
}
}
}
MdlListItemSecondaryContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSecondaryContentComponent, deps: [{ token: MdlListItemComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
MdlListItemSecondaryContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemSecondaryContentComponent, selector: "mdl-list-item-secondary-content", host: { properties: { "class.mdl-list__item-secondary-content": "this.isSecondaryContent" } }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSecondaryContentComponent, decorators: [{
type: Component,
args: [{
selector: "mdl-list-item-secondary-content",
template: "<ng-content></ng-content>",
encapsulation: ViewEncapsulation.None,
}]
}], ctorParameters: function () { return [{ type: MdlListItemComponent, decorators: [{
type: Optional
}] }]; }, propDecorators: { isSecondaryContent: [{
type: HostBinding,
args: ["class.mdl-list__item-secondary-content"]
}] } });
export class MdlListItemSecondaryActionComponent {
constructor(mdlListItemComponent) {
this.mdlListItemComponent = mdlListItemComponent;
this.isSecondaryAction = true;
}
ngOnInit() {
if (this.mdlListItemComponent === null) {
throw new MdlStructureError("mdl-list-item-secondary-action", "mdl-list-item");
}
}
}
MdlListItemSecondaryActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSecondaryActionComponent, deps: [{ token: MdlListItemComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
MdlListItemSecondaryActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemSecondaryActionComponent, selector: "mdl-list-item-secondary-action", host: { properties: { "class.mdl-list__item-secondary-action": "this.isSecondaryAction" } }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSecondaryActionComponent, decorators: [{
type: Component,
args: [{
selector: "mdl-list-item-secondary-action",
template: "<ng-content></ng-content>",
encapsulation: ViewEncapsulation.None,
}]
}], ctorParameters: function () { return [{ type: MdlListItemComponent, decorators: [{
type: Optional
}] }]; }, propDecorators: { isSecondaryAction: [{
type: HostBinding,
args: ["class.mdl-list__item-secondary-action"]
}] } });
export class MdlListItemSubTitleComponent {
constructor(mdlListItemComponent) {
this.mdlListItemComponent = mdlListItemComponent;
this.isSubTitle = true;
}
ngOnInit() {
if (this.mdlListItemComponent === null) {
throw new MdlStructureError("mdl-list-item-sub-title", "mdl-list-item-primary-content");
}
}
}
MdlListItemSubTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSubTitleComponent, deps: [{ token: MdlListItemPrimaryContentComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
MdlListItemSubTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemSubTitleComponent, selector: "mdl-list-item-sub-title", host: { properties: { "class.mdl-list__item-sub-title": "this.isSubTitle" } }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSubTitleComponent, decorators: [{
type: Component,
args: [{
selector: "mdl-list-item-sub-title",
template: "<ng-content></ng-content>",
encapsulation: ViewEncapsulation.None,
}]
}], ctorParameters: function () { return [{ type: MdlListItemPrimaryContentComponent, decorators: [{
type: Optional
}] }]; }, propDecorators: { isSubTitle: [{
type: HostBinding,
args: ["class.mdl-list__item-sub-title"]
}] } });
export class MdlListItemSecondaryInfoComponent {
constructor(mdlListItemComponent) {
this.mdlListItemComponent = mdlListItemComponent;
this.isSecondaryInfo = true;
}
ngOnInit() {
if (this.mdlListItemComponent === null) {
throw new MdlStructureError("mdl-list-item-secondary-info", "mdl-list-item-secondary-content");
}
}
}
MdlListItemSecondaryInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSecondaryInfoComponent, deps: [{ token: MdlListItemSecondaryContentComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
MdlListItemSecondaryInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemSecondaryInfoComponent, selector: "mdl-list-item-secondary-info", host: { properties: { "class.mdl-list__item-secondary-info": "this.isSecondaryInfo" } }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemSecondaryInfoComponent, decorators: [{
type: Component,
args: [{
selector: "mdl-list-item-secondary-info",
template: "<ng-content></ng-content>",
encapsulation: ViewEncapsulation.None,
}]
}], ctorParameters: function () { return [{ type: MdlListItemSecondaryContentComponent, decorators: [{
type: Optional
}] }]; }, propDecorators: { isSecondaryInfo: [{
type: HostBinding,
args: ["class.mdl-list__item-secondary-info"]
}] } });
export class MdlListItemTextBodyComponent {
constructor(mdlListItemComponent) {
this.mdlListItemComponent = mdlListItemComponent;
this.isTextBody = true;
}
ngOnInit() {
if (this.mdlListItemComponent === null) {
throw new MdlStructureError("mdl-list-item-text-body", "mdl-list-item");
}
}
}
MdlListItemTextBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemTextBodyComponent, deps: [{ token: MdlListItemComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
MdlListItemTextBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemTextBodyComponent, selector: "mdl-list-item-text-body", host: { properties: { "class.mdl-list__item-text-body": "this.isTextBody" } }, ngImport: i0, template: "<ng-content></ng-content>", isInline: true, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemTextBodyComponent, decorators: [{
type: Component,
args: [{
selector: "mdl-list-item-text-body",
template: "<ng-content></ng-content>",
encapsulation: ViewEncapsulation.None,
}]
}], ctorParameters: function () { return [{ type: MdlListItemComponent, decorators: [{
type: Optional
}] }]; }, propDecorators: { isTextBody: [{
type: HostBinding,
args: ["class.mdl-list__item-text-body"]
}] } });
export class MdlListItemIconDirective {
constructor() {
this.isItemIcon = true;
}
}
MdlListItemIconDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
MdlListItemIconDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemIconDirective, selector: "mdl-icon[mdl-list-item-icon]", host: { properties: { "class.mdl-list__item-icon": "this.isItemIcon" } }, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemIconDirective, decorators: [{
type: Directive,
args: [{
// eslint-disable-next-line
selector: "mdl-icon[mdl-list-item-icon]",
}]
}], propDecorators: { isItemIcon: [{
type: HostBinding,
args: ["class.mdl-list__item-icon"]
}] } });
export class MdlListItemAvatarDirective {
constructor() {
this.isItemAvatar = true;
}
}
MdlListItemAvatarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemAvatarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
MdlListItemAvatarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: MdlListItemAvatarDirective, selector: "mdl-icon[mdl-list-item-avatar]", host: { properties: { "class.mdl-list__item-avatar": "this.isItemAvatar" } }, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MdlListItemAvatarDirective, decorators: [{
type: Directive,
args: [{
// eslint-disable-next-line
selector: "mdl-icon[mdl-list-item-avatar]",
}]
}], propDecorators: { isItemAvatar: [{
type: HostBinding,
args: ["class.mdl-list__item-avatar"]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRsLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2xpc3QvbWRsLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEVBR0wsUUFBUSxFQUNSLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUVyRCxNQUFNLE9BQU8sdUNBQXdDLFNBQVEsUUFBUTtJQUNuRSxZQUFZLEtBQXNCO1FBQ2hDLDBCQUEwQjtRQUMxQixLQUFLLENBQUMsSUFBSSxLQUFLLDBDQUEwQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGO0FBT0QsTUFBTSxPQUFPLGdCQUFnQjtJQUw3QjtRQU9FLGNBQVMsR0FBRyxJQUFJLENBQUM7S0FDbEI7OzZHQUhZLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLDhHQUhqQiwyQkFBMkI7MkZBRzFCLGdCQUFnQjtrQkFMNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzhCQUdDLFNBQVM7c0JBRFIsV0FBVzt1QkFBQyxnQkFBZ0I7O0FBUy9CLE1BQU0sT0FBTyxvQkFBb0I7SUFMakM7UUFPRSxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUViLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO0tBd0J6QjtJQXRCQyxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLEtB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LENBQUM7S0FDckI7O3VIQUhZLDBCQUEwQjsyR0FBMUIsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBSnRDLFNBQVM7bUJBQUM7b0JBQ1QsMkJBQTJCO29CQUMzQixRQUFRLEVBQUUsZ0NBQWdDO2lCQUMzQzs4QkFHQyxZQUFZO3NCQURYLFdBQVc7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1kbEVycm9yLCBNZGxTdHJ1Y3R1cmVFcnJvciB9IGZyb20gXCIuLi9jb21tb24vbWRsLWVycm9yXCI7XG5pbXBvcnQgeyB0b051bWJlciB9IGZyb20gXCIuLi9jb21tb24vbnVtYmVyLnByb3BlcnR5XCI7XG5cbmV4cG9ydCBjbGFzcyBNZGxVbnN1cHBvcnRlZENvdW50T2ZMaXN0SXRlbUxpbmVzRXJyb3IgZXh0ZW5kcyBNZGxFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGxpbmVzOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHN1cGVyKGBcIiR7bGluZXN9XCIgaXMgbm90IHN1cHBvcnRlZCAtIG1heCAzIGxpbmVzIHBsZWFzZS5gKTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWRsLWxpc3RcIixcbiAgdGVtcGxhdGU6IFwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlwiLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNZGxMaXN0Q29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MubWRsLWxpc3RcIilcbiAgaXNNZGxMaXN0ID0gdHJ1ZTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1kbC1saXN0LWl0ZW1cIixcbiAgdGVtcGxhdGU6IFwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlwiLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNZGxMaXN0SXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBIb3N0QmluZGluZyhcImNsYXNzLm1kbC1saXN0X19pdGVtXCIpXG4gIGlzTWRsTGlzdEl0ZW0gPSB0cnVlO1xuXG4gIHByaXZhdGUgbGluZXNJbnRlcm4gPSAxO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBsaW5lcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmxpbmVzSW50ZXJuO1xuICB9XG5cbiAgc2V0IGxpbmVzKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICB0aGlzLmxpbmVzSW50ZXJuID0gdG9OdW1iZXIodmFsdWUpID8/IDE7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5tZGwtbGlzdF9faXRlbS0tdHdvLWxpbmVcIikgZ2V0IGxpbmVzMigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5saW5lcyA9PT0gMjtcbiAgfVxuXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLm1kbC1saXN0X19pdGVtLS10aHJlZS1saW5lXCIpIGdldCBsaW5lczMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGluZXMgPT09IDM7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5saW5lcyAmJiB0aGlzLmxpbmVzID4gMykge1xuICAgICAgdGhyb3cgbmV3IE1kbFVuc3VwcG9ydGVkQ291bnRPZkxpc3RJdGVtTGluZXNFcnJvcih0aGlzLmxpbmVzKTtcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1kbC1saXN0LWl0ZW0tcHJpbWFyeS1jb250ZW50XCIsXG4gIHRlbXBsYXRlOiBcIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cIixcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTWRsTGlzdEl0ZW1QcmltYXJ5Q29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBIb3N0QmluZGluZyhcImNsYXNzLm1kbC1saXN0X19pdGVtLXByaW1hcnktY29udGVudFwiKVxuICBpc1ByaW1hcnlDb250ZW50ID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIG1kbExpc3RJdGVtQ29tcG9uZW50OiBNZGxMaXN0SXRlbUNvbXBvbmVudCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZGxMaXN0SXRlbUNvbXBvbmVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IE1kbFN0cnVjdHVyZUVycm9yKFxuICAgICAgICBcIm1kbC1saXN0LWl0ZW0tcHJpbWFyeS1jb250ZW50XCIsXG4gICAgICAgIFwibWRsLWxpc3QtaXRlbVwiXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWRsLWxpc3QtaXRlbS1zZWNvbmRhcnktY29udGVudFwiLFxuICB0ZW1wbGF0ZTogXCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XCIsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIE1kbExpc3RJdGVtU2Vjb25kYXJ5Q29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBIb3N0QmluZGluZyhcImNsYXNzLm1kbC1saXN0X19pdGVtLXNlY29uZGFyeS1jb250ZW50XCIpXG4gIGlzU2Vjb25kYXJ5Q29udGVudCA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBtZGxMaXN0SXRlbUNvbXBvbmVudDogTWRsTGlzdEl0ZW1Db21wb25lbnQpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWRsTGlzdEl0ZW1Db21wb25lbnQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBNZGxTdHJ1Y3R1cmVFcnJvcihcbiAgICAgICAgXCJtZGwtbGlzdC1pdGVtLXNlY29uZGFyeS1jb250ZW50XCIsXG4gICAgICAgIFwibWRsLWxpc3QtaXRlbVwiXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWRsLWxpc3QtaXRlbS1zZWNvbmRhcnktYWN0aW9uXCIsXG4gIHRlbXBsYXRlOiBcIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cIixcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTWRsTGlzdEl0ZW1TZWNvbmRhcnlBY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5tZGwtbGlzdF9faXRlbS1zZWNvbmRhcnktYWN0aW9uXCIpXG4gIGlzU2Vjb25kYXJ5QWN0aW9uID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIG1kbExpc3RJdGVtQ29tcG9uZW50OiBNZGxMaXN0SXRlbUNvbXBvbmVudCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZGxMaXN0SXRlbUNvbXBvbmVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IE1kbFN0cnVjdHVyZUVycm9yKFxuICAgICAgICBcIm1kbC1saXN0LWl0ZW0tc2Vjb25kYXJ5LWFjdGlvblwiLFxuICAgICAgICBcIm1kbC1saXN0LWl0ZW1cIlxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1kbC1saXN0LWl0ZW0tc3ViLXRpdGxlXCIsXG4gIHRlbXBsYXRlOiBcIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cIixcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTWRsTGlzdEl0ZW1TdWJUaXRsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBIb3N0QmluZGluZyhcImNsYXNzLm1kbC1saXN0X19pdGVtLXN1Yi10aXRsZVwiKVxuICBpc1N1YlRpdGxlID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIG1kbExpc3RJdGVtQ29tcG9uZW50OiBNZGxMaXN0SXRlbVByaW1hcnlDb250ZW50Q29tcG9uZW50XG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZGxMaXN0SXRlbUNvbXBvbmVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IE1kbFN0cnVjdHVyZUVycm9yKFxuICAgICAgICBcIm1kbC1saXN0LWl0ZW0tc3ViLXRpdGxlXCIsXG4gICAgICAgIFwibWRsLWxpc3QtaXRlbS1wcmltYXJ5LWNvbnRlbnRcIlxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1kbC1saXN0LWl0ZW0tc2Vjb25kYXJ5LWluZm9cIixcbiAgdGVtcGxhdGU6IFwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlwiLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNZGxMaXN0SXRlbVNlY29uZGFyeUluZm9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5tZGwtbGlzdF9faXRlbS1zZWNvbmRhcnktaW5mb1wiKVxuICBpc1NlY29uZGFyeUluZm8gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpXG4gICAgcHJpdmF0ZSBtZGxMaXN0SXRlbUNvbXBvbmVudDogTWRsTGlzdEl0ZW1TZWNvbmRhcnlDb250ZW50Q29tcG9uZW50XG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tZGxMaXN0SXRlbUNvbXBvbmVudCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IE1kbFN0cnVjdHVyZUVycm9yKFxuICAgICAgICBcIm1kbC1saXN0LWl0ZW0tc2Vjb25kYXJ5LWluZm9cIixcbiAgICAgICAgXCJtZGwtbGlzdC1pdGVtLXNlY29uZGFyeS1jb250ZW50XCJcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtZGwtbGlzdC1pdGVtLXRleHQtYm9keVwiLFxuICB0ZW1wbGF0ZTogXCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XCIsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIE1kbExpc3RJdGVtVGV4dEJvZHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5tZGwtbGlzdF9faXRlbS10ZXh0LWJvZHlcIilcbiAgaXNUZXh0Qm9keSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBtZGxMaXN0SXRlbUNvbXBvbmVudDogTWRsTGlzdEl0ZW1Db21wb25lbnQpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWRsTGlzdEl0ZW1Db21wb25lbnQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBNZGxTdHJ1Y3R1cmVFcnJvcihcIm1kbC1saXN0LWl0ZW0tdGV4dC1ib2R5XCIsIFwibWRsLWxpc3QtaXRlbVwiKTtcbiAgICB9XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBzZWxlY3RvcjogXCJtZGwtaWNvblttZGwtbGlzdC1pdGVtLWljb25dXCIsXG59KVxuZXhwb3J0IGNsYXNzIE1kbExpc3RJdGVtSWNvbkRpcmVjdGl2ZSB7XG4gIEBIb3N0QmluZGluZyhcImNsYXNzLm1kbC1saXN0X19pdGVtLWljb25cIilcbiAgaXNJdGVtSWNvbiA9IHRydWU7XG59XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgc2VsZWN0b3I6IFwibWRsLWljb25bbWRsLWxpc3QtaXRlbS1hdmF0YXJdXCIsXG59KVxuZXhwb3J0IGNsYXNzIE1kbExpc3RJdGVtQXZhdGFyRGlyZWN0aXZlIHtcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MubWRsLWxpc3RfX2l0ZW0tYXZhdGFyXCIpXG4gIGlzSXRlbUF2YXRhciA9IHRydWU7XG59XG4iXX0=