igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
231 lines • 14.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, ElementRef, EventEmitter, HostBinding, Input, Output, NgModule, Renderer2, HostListener } from '@angular/core';
export class IgxButtonDirective {
/**
* @param {?} element
* @param {?} _renderer
*/
constructor(element, _renderer) {
this.element = element;
this._renderer = _renderer;
/**
* @hidden
*/
this._type = 'flat';
/**
* @hidden
*/
this._cssClass = 'igx-button';
/**
* Called when the button is clicked
*/
this.buttonClick = new EventEmitter();
/**
* Sets/gets the `role` attribute.
* ```typescript
* this.button.role = 'navbutton';
* ```
* ```typescript
* let buttonRole = this.button.role;
* ```
* \@memberof IgxButtonDirective
*/
this.role = 'button';
/**
* Gets or sets whether the button is selected.
* Mainly used in the IgxButtonGroup component and it will have no effect if set separately.
* ```html
* <button igxButton="flat" [selected]="button.selected"></button>
* ```
* \@memberof IgxButtonDirective
*/
this.selected = false;
}
/**
* Returns the underlying DOM element
* @return {?}
*/
get nativeElement() {
return this.element.nativeElement;
}
/**
* Sets the type of the button.
* ```html
* <button igxButton= "icon"></button>
* ```
* \@memberof IgxButtonDirective
* @param {?} value
* @return {?}
*/
set type(value) {
this._type = value || this._type;
this._renderer.addClass(this.nativeElement, `${this._cssClass}--${this._type}`);
}
/**
* Sets the button text color.
* ```html
* <button igxButton="gradient" igxButtonColor="blue"></button>
* ```
* \@memberof IgxButtonDirective
* @param {?} value
* @return {?}
*/
set color(value) {
this._color = value || this.nativeElement.style.color;
this._renderer.setStyle(this.nativeElement, 'color', this._color);
}
/**
* Sets the background color of the button.
* ```html
* <button igxButton="raised" igxButtonBackground="red"></button>
* ```
* \@memberof IgxButtonDirective
* @param {?} value
* @return {?}
*/
set background(value) {
this._backgroundColor = value || this._backgroundColor;
this._renderer.setStyle(this.nativeElement, 'background', this._backgroundColor);
}
/**
* Sets the `aria-label` attribute.
* ```html
* <button igxButton= "flat" igxLabel="Label"></button>
* ```
* \@memberof IgxButtonDirective
* @param {?} value
* @return {?}
*/
set label(value) {
this._label = value || this._label;
this._renderer.setAttribute(this.nativeElement, `aria-label`, this._label);
}
/**
* Enables/disables the button.
* ```html
* <button igxButton= "fab" [disabled]="true"></button>
* ```
* \@memberof IgxButtonDirective
* @param {?} val
* @return {?}
*/
set disabled(val) {
val = !!val;
if (val) {
this._renderer.addClass(this.nativeElement, `${this._cssClass}--disabled`);
}
else {
this._renderer.removeClass(this.nativeElement, `${this._cssClass}--disabled`);
}
}
/**
* @hidden
* @param {?} ev
* @return {?}
*/
onClick(ev) {
this.buttonClick.emit(ev);
}
}
IgxButtonDirective.decorators = [
{ type: Directive, args: [{
selector: '[igxButton]'
},] }
];
/** @nocollapse */
IgxButtonDirective.ctorParameters = () => [
{ type: ElementRef },
{ type: Renderer2 }
];
IgxButtonDirective.propDecorators = {
buttonClick: [{ type: Output }],
role: [{ type: HostBinding, args: ['attr.role',] }],
type: [{ type: Input, args: ['igxButton',] }],
color: [{ type: Input, args: ['igxButtonColor',] }],
background: [{ type: Input, args: ['igxButtonBackground',] }],
label: [{ type: Input, args: ['igxLabel',] }],
disabled: [{ type: Input }],
selected: [{ type: Input }],
onClick: [{ type: HostListener, args: ['click', ['$event'],] }]
};
if (false) {
/**
* @hidden
* @type {?}
* @private
*/
IgxButtonDirective.prototype._type;
/**
* @hidden
* @type {?}
* @private
*/
IgxButtonDirective.prototype._cssClass;
/**
* @hidden
* @type {?}
* @private
*/
IgxButtonDirective.prototype._color;
/**
* @hidden
* @type {?}
* @private
*/
IgxButtonDirective.prototype._label;
/**
* @hidden
* @type {?}
* @private
*/
IgxButtonDirective.prototype._backgroundColor;
/**
* Called when the button is clicked
* @type {?}
*/
IgxButtonDirective.prototype.buttonClick;
/**
* Sets/gets the `role` attribute.
* ```typescript
* this.button.role = 'navbutton';
* ```
* ```typescript
* let buttonRole = this.button.role;
* ```
* \@memberof IgxButtonDirective
* @type {?}
*/
IgxButtonDirective.prototype.role;
/**
* Gets or sets whether the button is selected.
* Mainly used in the IgxButtonGroup component and it will have no effect if set separately.
* ```html
* <button igxButton="flat" [selected]="button.selected"></button>
* ```
* \@memberof IgxButtonDirective
* @type {?}
*/
IgxButtonDirective.prototype.selected;
/** @type {?} */
IgxButtonDirective.prototype.element;
/**
* @type {?}
* @private
*/
IgxButtonDirective.prototype._renderer;
}
/**
* @hidden
*/
export class IgxButtonModule {
}
IgxButtonModule.decorators = [
{ type: NgModule, args: [{
declarations: [IgxButtonDirective],
exports: [IgxButtonDirective]
},] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS25JLE1BQU0sT0FBTyxrQkFBa0I7Ozs7O0lBc0IzQixZQUFtQixPQUFtQixFQUFVLFNBQW9CO1FBQWpELFlBQU8sR0FBUCxPQUFPLENBQVk7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFXOzs7O1FBbEI1RCxVQUFLLEdBQUcsTUFBTSxDQUFDOzs7O1FBSWYsY0FBUyxHQUFHLFlBQVksQ0FBQzs7OztRQTJCMUIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDOzs7Ozs7Ozs7OztRQVlaLFNBQUksR0FBRyxRQUFRLENBQUM7Ozs7Ozs7OztRQXFFakMsYUFBUSxHQUFHLEtBQUssQ0FBQztJQTlGdUMsQ0FBQzs7Ozs7SUFLekUsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFDdEMsQ0FBQzs7Ozs7Ozs7OztJQTBCRCxJQUF3QixJQUFJLENBQUMsS0FBYTtRQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7Ozs7Ozs7Ozs7SUFRRCxJQUE2QixLQUFLLENBQUMsS0FBYTtRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RFLENBQUM7Ozs7Ozs7Ozs7SUFRRCxJQUFrQyxVQUFVLENBQUMsS0FBYTtRQUN0RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUN2RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNyRixDQUFDOzs7Ozs7Ozs7O0lBUUQsSUFBdUIsS0FBSyxDQUFDLEtBQWE7UUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0UsQ0FBQzs7Ozs7Ozs7OztJQVFELElBQWEsUUFBUSxDQUFDLEdBQUc7UUFDckIsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDWixJQUFJLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxZQUFZLENBQUMsQ0FBQztTQUM5RTthQUFNO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLFlBQVksQ0FBQyxDQUFDO1NBQ2pGO0lBQ0wsQ0FBQzs7Ozs7O0lBZ0JNLE9BQU8sQ0FBQyxFQUFFO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7O1lBL0hKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsYUFBYTthQUMxQjs7OztZQUptQixVQUFVO1lBQXNELFNBQVM7OzswQkF1Q3hGLE1BQU07bUJBYU4sV0FBVyxTQUFDLFdBQVc7bUJBUXZCLEtBQUssU0FBQyxXQUFXO29CQVdqQixLQUFLLFNBQUMsZ0JBQWdCO3lCQVd0QixLQUFLLFNBQUMscUJBQXFCO29CQVczQixLQUFLLFNBQUMsVUFBVTt1QkFXaEIsS0FBSzt1QkFpQkwsS0FBSztzQkFLTCxZQUFZLFNBQUMsT0FBTyxFQUFHLENBQUMsUUFBUSxDQUFDOzs7Ozs7OztJQXJIbEMsbUNBQXVCOzs7Ozs7SUFJdkIsdUNBQWlDOzs7Ozs7SUFJakMsb0NBQXVCOzs7Ozs7SUFJdkIsb0NBQXVCOzs7Ozs7SUFJdkIsOENBQWlDOzs7OztJQWNqQyx5Q0FDNkM7Ozs7Ozs7Ozs7OztJQVk3QyxrQ0FBaUQ7Ozs7Ozs7Ozs7SUFxRWpELHNDQUFpQzs7SUE5RnJCLHFDQUEwQjs7Ozs7SUFBRSx1Q0FBNEI7Ozs7O0FBZ0h4RSxNQUFNLE9BQU8sZUFBZTs7O1lBSjNCLFFBQVEsU0FBQztnQkFDTixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDbEMsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7YUFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIE5nTW9kdWxlLCBSZW5kZXJlcjIsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hCdXR0b25dJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hCdXR0b25EaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX3R5cGUgPSAnZmxhdCc7XG4gICAgLyoqXG4gICAgICpAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY3NzQ2xhc3MgPSAnaWd4LWJ1dHRvbic7XG4gICAgLyoqXG4gICAgICpAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29sb3I6IHN0cmluZztcbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9sYWJlbDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2JhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIpIHsgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdW5kZXJseWluZyBET00gZWxlbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgcm9sZWAgYXR0cmlidXRlLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmJ1dHRvbi5yb2xlID0gJ25hdmJ1dHRvbic7XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBidXR0b25Sb2xlID0gIHRoaXMuYnV0dG9uLnJvbGU7XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEJ1dHRvbkRpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcHVibGljIHJvbGUgPSAnYnV0dG9uJztcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB0eXBlIG9mIHRoZSBidXR0b24uXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gIGlneEJ1dHRvbj0gXCJpY29uXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEJ1dHRvbkRpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4QnV0dG9uJykgc2V0IHR5cGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl90eXBlID0gdmFsdWUgfHwgdGhpcy5fdHlwZTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBgJHt0aGlzLl9jc3NDbGFzc30tLSR7dGhpcy5fdHlwZX1gKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYnV0dG9uIHRleHQgY29sb3IuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gaWd4QnV0dG9uPVwiZ3JhZGllbnRcIiBpZ3hCdXR0b25Db2xvcj1cImJsdWVcIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4QnV0dG9uRGlyZWN0aXZlXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hCdXR0b25Db2xvcicpIHNldCBjb2xvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2NvbG9yID0gdmFsdWUgfHwgdGhpcy5uYXRpdmVFbGVtZW50LnN0eWxlLmNvbG9yO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLm5hdGl2ZUVsZW1lbnQsICdjb2xvcicsIHRoaXMuX2NvbG9yKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbj1cInJhaXNlZFwiIGlneEJ1dHRvbkJhY2tncm91bmQ9XCJyZWRcIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4QnV0dG9uRGlyZWN0aXZlXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hCdXR0b25CYWNrZ3JvdW5kJykgc2V0IGJhY2tncm91bmQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZSB8fCB0aGlzLl9iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMubmF0aXZlRWxlbWVudCwgJ2JhY2tncm91bmQnLCB0aGlzLl9iYWNrZ3JvdW5kQ29sb3IpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbj0gXCJmbGF0XCIgaWd4TGFiZWw9XCJMYWJlbFwiPjwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqIEBtZW1iZXJvZiBJZ3hCdXR0b25EaXJlY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneExhYmVsJykgc2V0IGxhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbGFiZWwgPSB2YWx1ZSB8fCB0aGlzLl9sYWJlbDtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgYGFyaWEtbGFiZWxgLCB0aGlzLl9sYWJlbCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMvZGlzYWJsZXMgdGhlIGJ1dHRvbi5cbiAgICAgKiAgYGBgaHRtbFxuICAgICAqIDxidXR0b24gaWd4QnV0dG9uPSBcImZhYlwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEJ1dHRvbkRpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCBkaXNhYmxlZCh2YWwpIHtcbiAgICAgICAgdmFsID0gISF2YWw7XG4gICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgYCR7dGhpcy5fY3NzQ2xhc3N9LS1kaXNhYmxlZGApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBgJHt0aGlzLl9jc3NDbGFzc30tLWRpc2FibGVkYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIG9yIHNldHMgd2hldGhlciB0aGUgYnV0dG9uIGlzIHNlbGVjdGVkLlxuICAgICAqIE1haW5seSB1c2VkIGluIHRoZSBJZ3hCdXR0b25Hcm91cCBjb21wb25lbnQgYW5kIGl0IHdpbGwgaGF2ZSBubyBlZmZlY3QgaWYgc2V0IHNlcGFyYXRlbHkuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gaWd4QnV0dG9uPVwiZmxhdFwiIFtzZWxlY3RlZF09XCJidXR0b24uc2VsZWN0ZWRcIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4QnV0dG9uRGlyZWN0aXZlXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsICBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkNsaWNrKGV2KSB7XG4gICAgICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdChldik7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtJZ3hCdXR0b25EaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJZ3hCdXR0b25EaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElneEJ1dHRvbk1vZHVsZSB7IH1cbiJdfQ==