UNPKG

theme-lib

Version:

This is a simple example Angular Library published to npm.

678 lines 43.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /* * @license * Copyright Akveo. All Rights Reserved. * Licensed under the MIT License. See License.txt in the project root for license information. */ import { Component, Input, HostBinding, Output, EventEmitter } from '@angular/core'; import { convertToBoolProperty } from '../helpers'; /* * Alert component. * * Basic alert example: * @stacked-example(Showcase, alert/alert-showcase.component) * * Alert configuration: * * ```html * <nb-alert status="success"> * You have been successfully authenticated! * </nb-alert> * ``` * ### Installation * * Import `NbButtonModule` to your feature module. * ```ts * @NgModule({ * imports: [ * // ... * NbAlertModule, * ], * }) * export class PageModule { } * ``` * ### Usage * * Alert could additionally have a `close` button when `closable` property is set: * ```html * <nb-alert status="success" closable (close)="onClose()"> * You have been successfully authenticated! * </nb-alert> * ``` * * Colored alerts could be simply configured by providing a `status` property: * @stacked-example(Colored Alert, alert/alert-colors.component) * * It is also possible to assign an `accent` property for a slight alert highlight * as well as combine it with `status`: * @stacked-example(Accent Alert, alert/alert-accents.component) * * And `outline` property: * @stacked-example(Outline Alert, alert/alert-outline.component) * * @additional-example(Multiple Sizes, alert/alert-sizes.component) * * @styles * * alert-font-size: * alert-line-height: * alert-font-weight: * alert-fg: * alert-outline-fg: * alert-bg: * alert-active-bg: * alert-disabled-bg: * alert-disabled-fg: * alert-primary-bg: * alert-info-bg: * alert-success-bg: * alert-warning-bg: * alert-danger-bg: * alert-height-xxsmall: * alert-height-xsmall: * alert-height-small: * alert-height-medium: * alert-height-large: * alert-height-xlarge: * alert-height-xxlarge: * alert-shadow: * alert-border-radius: * alert-padding: * alert-closable-padding: * alert-button-padding: * alert-margin: */ var NbAlertComponent = /** @class */ (function () { function NbAlertComponent() { this.closableValue = false; /* * Emits when chip is removed * @type EventEmitter<any> */ this.close = new EventEmitter(); } Object.defineProperty(NbAlertComponent.prototype, "closable", { /* * Shows `close` icon */ set: /* * Shows `close` icon */ /** * @param {?} val * @return {?} */ function (val) { this.closableValue = convertToBoolProperty(val); }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "xxsmall", { get: /** * @return {?} */ function () { return this.size === NbAlertComponent.SIZE_XXSMALL; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "xsmall", { get: /** * @return {?} */ function () { return this.size === NbAlertComponent.SIZE_XSMALL; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "small", { get: /** * @return {?} */ function () { return this.size === NbAlertComponent.SIZE_SMALL; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "medium", { get: /** * @return {?} */ function () { return this.size === NbAlertComponent.SIZE_MEDIUM; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "large", { get: /** * @return {?} */ function () { return this.size === NbAlertComponent.SIZE_LARGE; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "xlarge", { get: /** * @return {?} */ function () { return this.size === NbAlertComponent.SIZE_XLARGE; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "xxlarge", { get: /** * @return {?} */ function () { return this.size === NbAlertComponent.SIZE_XXLARGE; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "active", { get: /** * @return {?} */ function () { return this.status === NbAlertComponent.STATUS_ACTIVE; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "disabled", { get: /** * @return {?} */ function () { return this.status === NbAlertComponent.STATUS_DISABLED; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "primary", { get: /** * @return {?} */ function () { return this.status === NbAlertComponent.STATUS_PRIMARY; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "info", { get: /** * @return {?} */ function () { return this.status === NbAlertComponent.STATUS_INFO; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "success", { get: /** * @return {?} */ function () { return this.status === NbAlertComponent.STATUS_SUCCESS; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "warning", { get: /** * @return {?} */ function () { return this.status === NbAlertComponent.STATUS_WARNING; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "danger", { get: /** * @return {?} */ function () { return this.status === NbAlertComponent.STATUS_DANGER; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "hasAccent", { get: /** * @return {?} */ function () { return this.accent; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "hasStatus", { get: /** * @return {?} */ function () { return this.status; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "primaryAccent", { get: /** * @return {?} */ function () { return this.accent === NbAlertComponent.ACCENT_PRIMARY; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "infoAccent", { get: /** * @return {?} */ function () { return this.accent === NbAlertComponent.ACCENT_INFO; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "successAccent", { get: /** * @return {?} */ function () { return this.accent === NbAlertComponent.ACCENT_SUCCESS; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "warningAccent", { get: /** * @return {?} */ function () { return this.accent === NbAlertComponent.ACCENT_WARNING; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "dangerAccent", { get: /** * @return {?} */ function () { return this.accent === NbAlertComponent.ACCENT_DANGER; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "activeAccent", { get: /** * @return {?} */ function () { return this.accent === NbAlertComponent.ACCENT_ACTIVE; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "disabledAccent", { get: /** * @return {?} */ function () { return this.accent === NbAlertComponent.ACCENT_DISABLED; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "hasOutline", { get: /** * @return {?} */ function () { return this.outline; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "primaryOutline", { get: /** * @return {?} */ function () { return this.outline === NbAlertComponent.OUTLINE_PRIMARY; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "infoOutline", { get: /** * @return {?} */ function () { return this.outline === NbAlertComponent.OUTLINE_INFO; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "successOutline", { get: /** * @return {?} */ function () { return this.outline === NbAlertComponent.OUTLINE_SUCCESS; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "warningOutline", { get: /** * @return {?} */ function () { return this.outline === NbAlertComponent.OUTLINE_WARNING; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "dangerOutline", { get: /** * @return {?} */ function () { return this.outline === NbAlertComponent.OUTLINE_DANGER; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "activeOutline", { get: /** * @return {?} */ function () { return this.outline === NbAlertComponent.OUTLINE_ACTIVE; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "disabledOutline", { get: /** * @return {?} */ function () { return this.outline === NbAlertComponent.OUTLINE_DISABLED; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "setSize", { /* * Alert size, available sizes: * xxsmall, xsmall, small, medium, large, xlarge, xxlarge * @param {string} val */ set: /* * Alert size, available sizes: * xxsmall, xsmall, small, medium, large, xlarge, xxlarge * @param {string} val */ /** * @private * @param {?} val * @return {?} */ function (val) { this.size = val; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "setStatus", { /* * Alert status (adds specific styles): * active, disabled, primary, info, success, warning, danger * @param {string} val */ set: /* * Alert status (adds specific styles): * active, disabled, primary, info, success, warning, danger * @param {string} val */ /** * @private * @param {?} val * @return {?} */ function (val) { this.status = val; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "setAccent", { /* * Alert accent (color of the top border): * active, disabled, primary, info, success, warning, danger * @param {string} val */ set: /* * Alert accent (color of the top border): * active, disabled, primary, info, success, warning, danger * @param {string} val */ /** * @private * @param {?} val * @return {?} */ function (val) { this.accent = val; }, enumerable: true, configurable: true }); Object.defineProperty(NbAlertComponent.prototype, "setOutline", { /* * Alert outline (color of the border): * active, disabled, primary, info, success, warning, danger * @param {string} val */ set: /* * Alert outline (color of the border): * active, disabled, primary, info, success, warning, danger * @param {string} val */ /** * @private * @param {?} val * @return {?} */ function (val) { this.outline = val; }, enumerable: true, configurable: true }); /* * Emits the removed chip event */ /* * Emits the removed chip event */ /** * @return {?} */ NbAlertComponent.prototype.onClose = /* * Emits the removed chip event */ /** * @return {?} */ function () { this.close.emit(); }; NbAlertComponent.SIZE_XXSMALL = 'xxsmall'; NbAlertComponent.SIZE_XSMALL = 'xsmall'; NbAlertComponent.SIZE_SMALL = 'small'; NbAlertComponent.SIZE_MEDIUM = 'medium'; NbAlertComponent.SIZE_LARGE = 'large'; NbAlertComponent.SIZE_XLARGE = 'xlarge'; NbAlertComponent.SIZE_XXLARGE = 'xxlarge'; NbAlertComponent.STATUS_ACTIVE = 'active'; NbAlertComponent.STATUS_DISABLED = 'disabled'; NbAlertComponent.STATUS_PRIMARY = 'primary'; NbAlertComponent.STATUS_INFO = 'info'; NbAlertComponent.STATUS_SUCCESS = 'success'; NbAlertComponent.STATUS_WARNING = 'warning'; NbAlertComponent.STATUS_DANGER = 'danger'; NbAlertComponent.ACCENT_ACTIVE = 'active'; NbAlertComponent.ACCENT_DISABLED = 'disabled'; NbAlertComponent.ACCENT_PRIMARY = 'primary'; NbAlertComponent.ACCENT_INFO = 'info'; NbAlertComponent.ACCENT_SUCCESS = 'success'; NbAlertComponent.ACCENT_WARNING = 'warning'; NbAlertComponent.ACCENT_DANGER = 'danger'; NbAlertComponent.OUTLINE_ACTIVE = 'active'; NbAlertComponent.OUTLINE_DISABLED = 'disabled'; NbAlertComponent.OUTLINE_PRIMARY = 'primary'; NbAlertComponent.OUTLINE_INFO = 'info'; NbAlertComponent.OUTLINE_SUCCESS = 'success'; NbAlertComponent.OUTLINE_WARNING = 'warning'; NbAlertComponent.OUTLINE_DANGER = 'danger'; NbAlertComponent.decorators = [ { type: Component, args: [{ selector: 'nb-alert', template: "\n <button *ngIf=\"closableValue\" type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"onClose()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <ng-content></ng-content>\n ", styles: [":host{display:flex;flex-direction:column;position:relative}.close{position:absolute;top:0;right:0;color:inherit;background-color:transparent;border:0;-webkit-appearance:none}"] }] } ]; NbAlertComponent.propDecorators = { closableValue: [{ type: HostBinding, args: ['class.closable',] }], closable: [{ type: Input }], xxsmall: [{ type: HostBinding, args: ['class.xxsmall-alert',] }], xsmall: [{ type: HostBinding, args: ['class.xsmall-alert',] }], small: [{ type: HostBinding, args: ['class.small-alert',] }], medium: [{ type: HostBinding, args: ['class.medium-alert',] }], large: [{ type: HostBinding, args: ['class.large-alert',] }], xlarge: [{ type: HostBinding, args: ['class.xlarge-alert',] }], xxlarge: [{ type: HostBinding, args: ['class.xxlarge-alert',] }], active: [{ type: HostBinding, args: ['class.active-alert',] }], disabled: [{ type: HostBinding, args: ['class.disabled-alert',] }], primary: [{ type: HostBinding, args: ['class.primary-alert',] }], info: [{ type: HostBinding, args: ['class.info-alert',] }], success: [{ type: HostBinding, args: ['class.success-alert',] }], warning: [{ type: HostBinding, args: ['class.warning-alert',] }], danger: [{ type: HostBinding, args: ['class.danger-alert',] }], hasAccent: [{ type: HostBinding, args: ['class.accent',] }], hasStatus: [{ type: HostBinding, args: ['class.status',] }], primaryAccent: [{ type: HostBinding, args: ['class.accent-primary',] }], infoAccent: [{ type: HostBinding, args: ['class.accent-info',] }], successAccent: [{ type: HostBinding, args: ['class.accent-success',] }], warningAccent: [{ type: HostBinding, args: ['class.accent-warning',] }], dangerAccent: [{ type: HostBinding, args: ['class.accent-danger',] }], activeAccent: [{ type: HostBinding, args: ['class.accent-active',] }], disabledAccent: [{ type: HostBinding, args: ['class.accent-disabled',] }], hasOutline: [{ type: HostBinding, args: ['class.outline',] }], primaryOutline: [{ type: HostBinding, args: ['class.outline-primary',] }], infoOutline: [{ type: HostBinding, args: ['class.outline-info',] }], successOutline: [{ type: HostBinding, args: ['class.outline-success',] }], warningOutline: [{ type: HostBinding, args: ['class.outline-warning',] }], dangerOutline: [{ type: HostBinding, args: ['class.outline-danger',] }], activeOutline: [{ type: HostBinding, args: ['class.outline-active',] }], disabledOutline: [{ type: HostBinding, args: ['class.outline-disabled',] }], setSize: [{ type: Input, args: ['size',] }], setStatus: [{ type: Input, args: ['status',] }], setAccent: [{ type: Input, args: ['accent',] }], setOutline: [{ type: Input, args: ['outline',] }], close: [{ type: Output }] }; return NbAlertComponent; }()); export { NbAlertComponent }; if (false) { /** @type {?} */ NbAlertComponent.SIZE_XXSMALL; /** @type {?} */ NbAlertComponent.SIZE_XSMALL; /** @type {?} */ NbAlertComponent.SIZE_SMALL; /** @type {?} */ NbAlertComponent.SIZE_MEDIUM; /** @type {?} */ NbAlertComponent.SIZE_LARGE; /** @type {?} */ NbAlertComponent.SIZE_XLARGE; /** @type {?} */ NbAlertComponent.SIZE_XXLARGE; /** @type {?} */ NbAlertComponent.STATUS_ACTIVE; /** @type {?} */ NbAlertComponent.STATUS_DISABLED; /** @type {?} */ NbAlertComponent.STATUS_PRIMARY; /** @type {?} */ NbAlertComponent.STATUS_INFO; /** @type {?} */ NbAlertComponent.STATUS_SUCCESS; /** @type {?} */ NbAlertComponent.STATUS_WARNING; /** @type {?} */ NbAlertComponent.STATUS_DANGER; /** @type {?} */ NbAlertComponent.ACCENT_ACTIVE; /** @type {?} */ NbAlertComponent.ACCENT_DISABLED; /** @type {?} */ NbAlertComponent.ACCENT_PRIMARY; /** @type {?} */ NbAlertComponent.ACCENT_INFO; /** @type {?} */ NbAlertComponent.ACCENT_SUCCESS; /** @type {?} */ NbAlertComponent.ACCENT_WARNING; /** @type {?} */ NbAlertComponent.ACCENT_DANGER; /** @type {?} */ NbAlertComponent.OUTLINE_ACTIVE; /** @type {?} */ NbAlertComponent.OUTLINE_DISABLED; /** @type {?} */ NbAlertComponent.OUTLINE_PRIMARY; /** @type {?} */ NbAlertComponent.OUTLINE_INFO; /** @type {?} */ NbAlertComponent.OUTLINE_SUCCESS; /** @type {?} */ NbAlertComponent.OUTLINE_WARNING; /** @type {?} */ NbAlertComponent.OUTLINE_DANGER; /** @type {?} */ NbAlertComponent.prototype.size; /** @type {?} */ NbAlertComponent.prototype.status; /** @type {?} */ NbAlertComponent.prototype.accent; /** @type {?} */ NbAlertComponent.prototype.outline; /** @type {?} */ NbAlertComponent.prototype.closableValue; /** @type {?} */ NbAlertComponent.prototype.close; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vdGhlbWUtbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYWxlcnQvYWxlcnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQU1BLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErRW5EO0lBQUE7UUFrREUsa0JBQWEsR0FBWSxLQUFLLENBQUM7Ozs7O1FBaU5yQixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQVF2QyxDQUFDO0lBcE5DLHNCQUNJLHNDQUFRO1FBSlo7O1dBRUc7Ozs7Ozs7O1FBQ0gsVUFDYSxHQUFZO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEQsQ0FBQzs7O09BQUE7SUFFRCxzQkFDSSxxQ0FBTzs7OztRQURYO1lBRUUsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLFlBQVksQ0FBQztRQUNyRCxDQUFDOzs7T0FBQTtJQUVELHNCQUNJLG9DQUFNOzs7O1FBRFY7WUFFRSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsV0FBVyxDQUFDO1FBQ3BELENBQUM7OztPQUFBO0lBRUQsc0JBQ0ksbUNBQUs7Ozs7UUFEVDtZQUVFLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7UUFDbkQsQ0FBQzs7O09BQUE7SUFFRCxzQkFDSSxvQ0FBTTs7OztRQURWO1lBRUUsT0FBTyxJQUFJLENBQUMs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LHVCQUF1Qjs2QkFLbkMsV0FBVyxTQUFDLGVBQWU7aUNBSzNCLFdBQVcsU0FBQyx1QkFBdUI7OEJBS25DLFdBQVcsU0FBQyxvQkFBb0I7aUNBS2hDLFdBQVcsU0FBQyx1QkFBdUI7aUNBS25DLFdBQVcsU0FBQyx1QkFBdUI7Z0NBS25DLFdBQVcsU0FBQyxzQkFBc0I7Z0NBS2xDLFdBQVcsU0FBQyxzQkFBc0I7a0NBS2xDLFdBQVcsU0FBQyx3QkFBd0I7MEJBVXBDLEtBQUssU0FBQyxNQUFNOzRCQVVaLEtBQUssU0FBQyxRQUFROzRCQVVkLEtBQUssU0FBQyxRQUFROzZCQVVkLEtBQUssU0FBQyxTQUFTO3dCQVNmLE1BQU07O0lBUVQsdUJBQUM7Q0FBQSxBQTNRRCxJQTJRQztTQWpRWSxnQkFBZ0I7OztJQUUzQiw4QkFBeUM7O0lBQ3pDLDZCQUF1Qzs7SUFDdkMsNEJBQXFDOztJQUNyQyw2QkFBdUM7O0lBQ3ZDLDRCQUFxQzs7SUFDckMsNkJBQXVDOztJQUN2Qyw4QkFBeUM7O0lBRXpDLCtCQUF5Qzs7SUFDekMsaUNBQTZDOztJQUM3QyxnQ0FBMkM7O0lBQzNDLDZCQUFxQzs7SUFDckMsZ0NBQTJDOztJQUMzQyxnQ0FBMkM7O0lBQzNDLCtCQUF5Qzs7SUFFekMsK0JBQXlDOztJQUN6QyxpQ0FBNkM7O0lBQzdDLGdDQUEyQzs7SUFDM0MsNkJBQXFDOztJQUNyQyxnQ0FBMkM7O0lBQzNDLGdDQUEyQzs7SUFDM0MsK0JBQXlDOztJQUV6QyxnQ0FBMEM7O0lBQzFDLGtDQUE4Qzs7SUFDOUMsaUNBQTRDOztJQUM1Qyw4QkFBc0M7O0lBQ3RDLGlDQUE0Qzs7SUFDNUMsaUNBQTRDOztJQUM1QyxnQ0FBMEM7O0lBRTFDLGdDQUFhOztJQUNiLGtDQUFlOztJQUNmLGtDQUFlOztJQUNmLG1DQUFnQjs7SUFFaEIseUNBQytCOztJQWlOL0IsaUNBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEhvc3RCaW5kaW5nLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sUHJvcGVydHkgfSBmcm9tICcuLi9oZWxwZXJzJztcclxuXHJcblxyXG4vKlxyXG4gKiBBbGVydCBjb21wb25lbnQuXHJcbiAqXHJcbiAqIEJhc2ljIGFsZXJ0IGV4YW1wbGU6XHJcbiAqIEBzdGFja2VkLWV4YW1wbGUoU2hvd2Nhc2UsIGFsZXJ0L2FsZXJ0LXNob3djYXNlLmNvbXBvbmVudClcclxuICpcclxuICogQWxlcnQgY29uZmlndXJhdGlvbjpcclxuICpcclxuICogYGBgaHRtbFxyXG4gKiA8bmItYWxlcnQgc3RhdHVzPVwic3VjY2Vzc1wiPlxyXG4gKiAgIFlvdSBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGF1dGhlbnRpY2F0ZWQhXHJcbiAqIDwvbmItYWxlcnQ+XHJcbiAqIGBgYFxyXG4gKiAjIyMgSW5zdGFsbGF0aW9uXHJcbiAqXHJcbiAqIEltcG9ydCBgTmJCdXR0b25Nb2R1bGVgIHRvIHlvdXIgZmVhdHVyZSBtb2R1bGUuXHJcbiAqIGBgYHRzXHJcbiAqIEBOZ01vZHVsZSh7XHJcbiAqICAgaW1wb3J0czogW1xyXG4gKiAgIFx0Ly8gLi4uXHJcbiAqICAgICBOYkFsZXJ0TW9kdWxlLFxyXG4gKiAgIF0sXHJcbiAqIH0pXHJcbiAqIGV4cG9ydCBjbGFzcyBQYWdlTW9kdWxlIHsgfVxyXG4gKiBgYGBcclxuICogIyMjIFVzYWdlXHJcbiAqXHJcbiAqIEFsZXJ0IGNvdWxkIGFkZGl0aW9uYWxseSBoYXZlIGEgYGNsb3NlYCBidXR0b24gd2hlbiBgY2xvc2FibGVgIHByb3BlcnR5IGlzIHNldDpcclxuICogYGBgaHRtbFxyXG4gKiA8bmItYWxlcnQgc3RhdHVzPVwic3VjY2Vzc1wiIGNsb3NhYmxlIChjbG9zZSk9XCJvbkNsb3NlKClcIj5cclxuICogICBZb3UgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBhdXRoZW50aWNhdGVkIVxyXG4gKiA8L25iLWFsZXJ0PlxyXG4gKiBgYGBcclxuICpcclxuICogQ29sb3JlZCBhbGVydHMgY291bGQgYmUgc2ltcGx5IGNvbmZpZ3VyZWQgYnkgcHJvdmlkaW5nIGEgYHN0YXR1c2AgcHJvcGVydHk6XHJcbiAqIEBzdGFja2VkLWV4YW1wbGUoQ29sb3JlZCBBbGVydCwgYWxlcnQvYWxlcnQtY29sb3JzLmNvbXBvbmVudClcclxuICpcclxuICogSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBhc3NpZ24gYW4gYGFjY2VudGAgcHJvcGVydHkgZm9yIGEgc2xpZ2h0IGFsZXJ0IGhpZ2hsaWdodFxyXG4gKiBhcyB3ZWxsIGFzIGNvbWJpbmUgaXQgd2l0aCBgc3RhdHVzYDpcclxuICogQHN0YWNrZWQtZXhhbXBsZShBY2NlbnQgQWxlcnQsIGFsZXJ0L2FsZXJ0LWFjY2VudHMuY29tcG9uZW50KVxyXG4gKlxyXG4gKiBBbmQgYG91dGxpbmVgIHByb3BlcnR5OlxyXG4gKiBAc3RhY2tlZC1leGFtcGxlKE91dGxpbmUgQWxlcnQsIGFsZXJ0L2FsZXJ0LW91dGxpbmUuY29tcG9uZW50KVxyXG4gKlxyXG4gKiBAYWRkaXRpb25hbC1leGFtcGxlKE11bHRpcGxlIFNpemVzLCBhbGVydC9hbGVydC1zaXplcy5jb21wb25lbnQpXHJcbiAqXHJcbiAqIEBzdHlsZXNcclxuICpcclxuICogYWxlcnQtZm9udC1zaXplOlxyXG4gKiBhbGVydC1saW5lLWhlaWdodDpcclxuICogYWxlcnQtZm9udC13ZWlnaHQ6XHJcbiAqIGFsZXJ0LWZnOlxyXG4gKiBhbGVydC1vdXRsaW5lLWZnOlxyXG4gKiBhbGVydC1iZzpcclxuICogYWxlcnQtYWN0aXZlLWJnOlxyXG4gKiBhbGVydC1kaXNhYmxlZC1iZzpcclxuICogYWxlcnQtZGlzYWJsZWQtZmc6XHJcbiAqIGFsZXJ0LXByaW1hcnktYmc6XHJcbiAqIGFsZXJ0LWluZm8tYmc6XHJcbiAqIGFsZXJ0LXN1Y2Nlc3MtYmc6XHJcbiAqIGFsZXJ0LXdhcm5pbmctYmc6XHJcbiAqIGFsZXJ0LWRhbmdlci1iZzpcclxuICogYWxlcnQtaGVpZ2h0LXh4c21hbGw6XHJcbiAqIGFsZXJ0LWhlaWdodC14c21hbGw6XHJcbiAqIGFsZXJ0LWhlaWdodC1zbWFsbDpcclxuICogYWxlcnQtaGVpZ2h0LW1lZGl1bTpcclxuICogYWxlcnQtaGVpZ2h0LWxhcmdlOlxyXG4gKiBhbGVydC1oZWlnaHQteGxhcmdlOlxyXG4gKiBhbGVydC1oZWlnaHQteHhsYXJnZTpcclxuICogYWxlcnQtc2hhZG93OlxyXG4gKiBhbGVydC1ib3JkZXItcmFkaXVzOlxyXG4gKiBhbGVydC1wYWRkaW5nOlxyXG4gKiBhbGVydC1jbG9zYWJsZS1wYWRkaW5nOlxyXG4gKiBhbGVydC1idXR0b24tcGFkZGluZzpcclxuICogYWxlcnQtbWFyZ2luOlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduYi1hbGVydCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWxlcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cImNsb3NhYmxlVmFsdWVcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJvbkNsb3NlKClcIj5cclxuICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIGAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYkFsZXJ0Q29tcG9uZW50IHtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IFNJWkVfWFhTTUFMTCA9ICd4eHNtYWxsJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU0laRV9YU01BTEwgPSAneHNtYWxsJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU0laRV9TTUFMTCA9ICdzbWFsbCc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNJWkVfTUVESVVNID0gJ21lZGl1bSc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNJWkVfTEFSR0UgPSAnbGFyZ2UnO1xyXG4gIHN0YXRpYyByZWFkb25seSBTSVpFX1hMQVJHRSA9ICd4bGFyZ2UnO1xyXG4gIHN0YXRpYyByZWFkb25seSBTSVpFX1hYTEFSR0UgPSAneHhsYXJnZSc7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBTVEFUVVNfQUNUSVZFID0gJ2FjdGl2ZSc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNUQVRVU19ESVNBQkxFRCA9ICdkaXNhYmxlZCc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNUQVRVU19QUklNQVJZID0gJ3ByaW1hcnknO1xyXG4gIHN0YXRpYyByZWFkb25seSBTVEFUVVNfSU5GTyA9ICdpbmZvJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU1RBVFVTX1NVQ0NFU1MgPSAnc3VjY2Vzcyc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNUQVRVU19XQVJOSU5HID0gJ3dhcm5pbmcnO1xyXG4gIHN0YXRpYyByZWFkb25seSBTVEFUVVNfREFOR0VSID0gJ2Rhbmdlcic7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBBQ0NFTlRfQUNUSVZFID0gJ2FjdGl2ZSc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IEFDQ0VOVF9ESVNBQkxFRCA9ICdkaXNhYmxlZCc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IEFDQ0VOVF9QUklNQVJZID0gJ3ByaW1hcnknO1xyXG4gIHN0YXRpYyByZWFkb25seSBBQ0NFTlRfSU5GTyA9ICdpbmZvJztcclxuICBzdGF0aWMgcmVhZG9ubHkgQUNDRU5UX1NVQ0NFU1MgPSAnc3VjY2Vzcyc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IEFDQ0VOVF9XQVJOSU5HID0gJ3dhcm5pbmcnO1xyXG4gIHN0YXRpYyByZWFkb25seSBBQ0NFTlRfREFOR0VSID0gJ2Rhbmdlcic7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBPVVRMSU5FX0FDVElWRSA9ICdhY3RpdmUnO1xyXG4gIHN0YXRpYyByZWFkb25seSBPVVRMSU5FX0RJU0FCTEVEID0gJ2Rpc2FibGVkJztcclxuICBzdGF0aWMgcmVhZG9ubHkgT1VUTElORV9QUklNQVJZID0gJ3ByaW1hcnknO1xyXG4gIHN0YXRpYyByZWFkb25seSBPVVRMSU5FX0lORk8gPSAnaW5mbyc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE9VVExJTkVfU1VDQ0VTUyA9ICdzdWNjZXNzJztcclxuICBzdGF0aWMgcmVhZG9ubHkgT1VUTElORV9XQVJOSU5HID0gJ3dhcm5pbmcnO1xyXG4gIHN0YXRpYyByZWFkb25seSBPVVRMSU5FX0RBTkdFUiA9ICdkYW5nZXInO1xyXG5cclxuICBzaXplOiBzdHJpbmc7XHJcbiAgc3RhdHVzOiBzdHJpbmc7XHJcbiAgYWNjZW50OiBzdHJpbmc7XHJcbiAgb3V0bGluZTogc3RyaW5nO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNsb3NhYmxlJylcclxuICBjbG9zYWJsZVZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qXHJcbiAgICogU2hvd3MgYGNsb3NlYCBpY29uXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgY2xvc2FibGUodmFsOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmNsb3NhYmxlVmFsdWUgPSBjb252ZXJ0VG9Cb29sUHJvcGVydHkodmFsKTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MueHhzbWFsbC1hbGVydCcpXHJcbiAgZ2V0IHh4c21hbGwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaXplID09PSBOYkFsZXJ0Q29tcG9uZW50LlNJWkVfWFhTTUFMTDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MueHNtYWxsLWFsZXJ0JylcclxuICBnZXQgeHNtYWxsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gTmJBbGVydENvbXBvbmVudC5TSVpFX1hTTUFMTDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc21hbGwtYWxlcnQnKVxyXG4gIGdldCBzbWFsbCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNpemUgPT09IE5iQWxlcnRDb21wb25lbnQuU0laRV9TTUFMTDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MubWVkaXVtLWFsZXJ0JylcclxuICBnZXQgbWVkaXVtKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gTmJBbGVydENvbXBvbmVudC5TSVpFX01FRElVTTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MubGFyZ2UtYWxlcnQnKVxyXG4gIGdldCBsYXJnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnNpemUgPT09IE5iQWxlcnRDb21wb25lbnQuU0laRV9MQVJHRTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MueGxhcmdlLWFsZXJ0JylcclxuICBnZXQgeGxhcmdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gTmJBbGVydENvbXBvbmVudC5TSVpFX1hMQVJHRTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MueHhsYXJnZS1hbGVydCcpXHJcbiAgZ2V0IHh4bGFyZ2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaXplID09PSBOYkFsZXJ0Q29tcG9uZW50LlNJWkVfWFhMQVJHRTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlLWFsZXJ0JylcclxuICBnZXQgYWN0aXZlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBOYkFsZXJ0Q29tcG9uZW50LlNUQVRVU19BQ1RJVkU7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc2FibGVkLWFsZXJ0JylcclxuICBnZXQgZGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IE5iQWxlcnRDb21wb25lbnQuU1RBVFVTX0RJU0FCTEVEO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wcmltYXJ5LWFsZXJ0JylcclxuICBnZXQgcHJpbWFyeSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gTmJBbGVydENvbXBvbmVudC5TVEFUVVNfUFJJTUFSWTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaW5mby1hbGVydCcpXHJcbiAgZ2V0IGluZm8oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IE5iQWxlcnRDb21wb25lbnQuU1RBVFVTX0lORk87XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnN1Y2Nlc3MtYWxlcnQnKVxyXG4gIGdldCBzdWNjZXNzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBOYkFsZXJ0Q29tcG9uZW50LlNUQVRVU19TVUNDRVNTO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy53YXJuaW5nLWFsZXJ0JylcclxuICBnZXQgd2FybmluZygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gTmJBbGVydENvbXBvbmVudC5TVEFUVVNfV0FSTklORztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGFuZ2VyLWFsZXJ0JylcclxuICBnZXQgZGFuZ2VyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBOYkFsZXJ0Q29tcG9uZW50LlNUQVRVU19EQU5HRVI7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjY2VudCcpXHJcbiAgZ2V0IGhhc0FjY2VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjY2VudDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc3RhdHVzJylcclxuICBnZXQgaGFzU3RhdHVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY2NlbnQtcHJpbWFyeScpXHJcbiAgZ2V0IHByaW1hcnlBY2NlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY2NlbnQgPT09IE5iQWxlcnRDb21wb25lbnQuQUNDRU5UX1BSSU1BUlk7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjY2VudC1pbmZvJylcclxuICBnZXQgaW5mb0FjY2VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjY2VudCA9PT0gTmJBbGVydENvbXBvbmVudC5BQ0NFTlRfSU5GTztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWNjZW50LXN1Y2Nlc3MnKVxyXG4gIGdldCBzdWNjZXNzQWNjZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWNjZW50ID09PSBOYkFsZXJ0Q29tcG9uZW50LkFDQ0VOVF9TVUNDRVNTO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY2NlbnQtd2FybmluZycpXHJcbiAgZ2V0IHdhcm5pbmdBY2NlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY2NlbnQgPT09IE5iQWxlcnRDb21wb25lbnQuQUNDRU5UX1dBUk5JTkc7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjY2VudC1kYW5nZXInKVxyXG4gIGdldCBkYW5nZXJBY2NlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY2NlbnQgPT09IE5iQWxlcnRDb21wb25lbnQuQUNDRU5UX0RBTkdFUjtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWNjZW50LWFjdGl2ZScpXHJcbiAgZ2V0IGFjdGl2ZUFjY2VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjY2VudCA9PT0gTmJBbGVydENvbXBvbmVudC5BQ0NFTlRfQUNUSVZFO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY2NlbnQtZGlzYWJsZWQnKVxyXG4gIGdldCBkaXNhYmxlZEFjY2VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjY2VudCA9PT0gTmJBbGVydENvbXBvbmVudC5BQ0NFTlRfRElTQUJMRUQ7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm91dGxpbmUnKVxyXG4gIGdldCBoYXNPdXRsaW5lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3V0bGluZTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3V0bGluZS1wcmltYXJ5JylcclxuICBnZXQgcHJpbWFyeU91dGxpbmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vdXRsaW5lID09PSBOYkFsZXJ0Q29tcG9uZW50Lk9VVExJTkVfUFJJTUFSWTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3V0bGluZS1pbmZvJylcclxuICBnZXQgaW5mb091dGxpbmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vdXRsaW5lID09PSBOYkFsZXJ0Q29tcG9uZW50Lk9VVExJTkVfSU5GTztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3V0bGluZS1zdWNjZXNzJylcclxuICBnZXQgc3VjY2Vzc091dGxpbmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vdXRsaW5lID09PSBOYkFsZXJ0Q29tcG9uZW50Lk9VVExJTkVfU1VDQ0VTUztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3V0bGluZS13YXJuaW5nJylcclxuICBnZXQgd2FybmluZ091dGxpbmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vdXRsaW5lID09PSBOYkFsZXJ0Q29tcG9uZW50Lk9VVExJTkVfV0FSTklORztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3V0bGluZS1kYW5nZXInKVxyXG4gIGdldCBkYW5nZXJPdXRsaW5lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3V0bGluZSA9PT0gTmJBbGVydENvbXBvbmVudC5PVVRMSU5FX0RBTkdFUjtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3V0bGluZS1hY3RpdmUnKVxyXG4gIGdldCBhY3RpdmVPdXRsaW5lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3V0bGluZSA9PT0gTmJBbGVydENvbXBvbmVudC5PVVRMSU5FX0FDVElWRTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3V0bGluZS1kaXNhYmxlZCcpXHJcbiAgZ2V0IGRpc2FibGVkT3V0bGluZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm91dGxpbmUgPT09IE5iQWxlcnRDb21wb25lbnQuT1VUTElORV9ESVNBQkxFRDtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogQWxlcnQgc2l6ZSwgYXZhaWxhYmxlIHNpemVzOlxyXG4gICAqIHh4c21hbGwsIHhzbWFsbCwgc21hbGwsIG1lZGl1bSwgbGFyZ2UsIHhsYXJnZSwgeHhsYXJnZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWxcclxuICAgKi9cclxuICBASW5wdXQoJ3NpemUnKVxyXG4gIHByaXZhdGUgc2V0IHNldFNpemUodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2l6ZSA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogQWxlcnQgc3RhdHVzIChhZGRzIHNwZWNpZmljIHN0eWxlcyk6XHJcbiAgICogYWN0aXZlLCBkaXNhYmxlZCwgcHJpbWFyeSwgaW5mbywgc3VjY2Vzcywgd2FybmluZywgZGFuZ2VyXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgnc3RhdHVzJylcclxuICBwcml2YXRlIHNldCBzZXRTdGF0dXModmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3RhdHVzID0gdmFsO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBBbGVydCBhY2NlbnQgKGNvbG9yIG9mIHRoZSB0b3AgYm9yZGVyKTpcclxuICAgKiBhY3RpdmUsIGRpc2FibGVkLCBwcmltYXJ5LCBpbmZvLCBzdWNjZXNzLCB3YXJuaW5nLCBkYW5nZXJcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsXHJcbiAgICovXHJcbiAgQElucHV0KCdhY2NlbnQnKVxyXG4gIHByaXZhdGUgc2V0IHNldEFjY2VudCh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5hY2NlbnQgPSB2YWw7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIEFsZXJ0IG91dGxpbmUgKGNvbG9yIG9mIHRoZSBib3JkZXIpOlxyXG4gICAqIGFjdGl2ZSwgZGlzYWJsZWQsIHByaW1hcnksIGluZm8sIHN1Y2Nlc3MsIHdhcm5pbmcsIGRhbmdlclxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWxcclxuICAgKi9cclxuICBASW5wdXQoJ291dGxpbmUnKVxyXG4gIHByaXZhdGUgc2V0IHNldE91dGxpbmUodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMub3V0bGluZSA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogRW1pdHMgd2hlbiBjaGlwIGlzIHJlbW92ZWRcclxuICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8YW55PlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLypcclxuICAgKiBFbWl0cyB0aGUgcmVtb3ZlZCBjaGlwIGV2ZW50XHJcbiAgICovXHJcbiAgb25DbG9zZSgpIHtcclxuICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xyXG4gIH1cclxufVxyXG4iXX0=