UNPKG

carbon-components-angular

Version:
144 lines 17.3 kB
export class TableHeaderItem { /** * Creates an instance of TableHeaderItem. */ constructor(rawData) { /** * Defines if column under this TableHeaderItem should be displayed. * */ this.visible = true; /** * Disables sorting by default. * */ this.sorted = false; /** * Enables sorting on click by default. * If false then this column won't show a sorting arrow at all. * */ this.sortable = true; /** * Number of applied filters. * * `filter()` should set it to appropriate number. * */ this.filterCount = 0; /** * The number of rows to span * **NOTE:** not supported by the default carbon table */ this.rowSpan = 1; /** * The number of columns to span */ this.colSpan = 1; /** * Style for the column, applied to every element in the column. * * ngStyle-like format * */ this.style = {}; this.sortDirection = "NONE"; // defaults so we dont leave things empty const defaults = { data: "", visible: this.visible, style: this.style, filterCount: this.filterCount, filterData: { data: "" } }; // fill our object with provided props, and fallback to defaults const data = Object.assign({}, defaults, rawData); for (let property of Object.getOwnPropertyNames(data)) { if (data.hasOwnProperty(property)) { this[property] = data[property]; } } } /** * If true, sort is set to ascending, if false descending will be true. * */ set ascending(asc) { this.sortDirection = asc ? "ASCENDING" : "DESCENDING"; } get ascending() { return this.sortDirection === "ASCENDING"; } /** * If true, sort is set to descending, if false ascending will be true. * */ set descending(desc) { this.sortDirection = desc ? "DESCENDING" : "ASCENDING"; } get descending() { return this.sortDirection === "DESCENDING"; } get title() { if (this._title) { return this._title; } if (!this.data) { return ""; } if (typeof this.data === "string") { return this.data; } if (this.data.toString && this.data.constructor !== ({}).constructor) { return this.data.toString(); } // data can’t be reasonably converted to an end user readable string return ""; } set title(title) { this._title = title; } /** * Used for sorting rows of the table. * * Override to enable different sorting. * * < 0 if `one` should go before `two` * > 0 if `one` should go after `two` * 0 if it doesn't matter (they are the same) */ compare(one, two) { if (!one || !two) { return 0; } if (typeof one.data === "string") { return one.data.localeCompare(two.data); } if (one.data < two.data) { return -1; } else if (one.data > two.data) { return 1; } else { return 0; } } /** * Used to filter rows in the table. * * Override to make a custom filter. * * Even though there is just one filter function, there can be multiple filters. * When implementing filter, set `filterCount` before returning. * * `true` to hide the row * `false` to show the row */ filter(item) { this.filterCount = 0; return false; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaGVhZGVyLWl0ZW0uY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGFibGUvdGFibGUtaGVhZGVyLWl0ZW0uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLGVBQWU7SUFxTzNCOztPQUVHO0lBQ0gsWUFBWSxPQUFhO1FBdEx6Qjs7O1dBR0c7UUFDSCxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBRWY7OztXQUdHO1FBQ0gsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmOzs7O1dBSUc7UUFDSCxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBRWhCOzs7OztXQUtHO1FBQ0gsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFFaEI7OztXQUdHO1FBQ0gsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUVaOztXQUVHO1FBQ0gsWUFBTyxHQUFHLENBQUMsQ0FBQztRQVFaOzs7OztXQUtHO1FBQ0gsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQTJIWCxrQkFBYSxHQUFhLE1BQU0sQ0FBQztRQVVoQyx5Q0FBeUM7UUFDekMsTUFBTSxRQUFRLEdBQUc7WUFDaEIsSUFBSSxFQUFFLEVBQUU7WUFDUixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixVQUFVLEVBQUUsRUFBQyxJQUFJLEVBQUUsRUFBRSxFQUFDO1NBQ3RCLENBQUM7UUFDRixnRUFBZ0U7UUFDaEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELEtBQUssSUFBSSxRQUFRLElBQUksTUFBTSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3RELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNoQztTQUNEO0lBQ0YsQ0FBQztJQXZQRDs7O09BR0c7SUFDSCxJQUFJLFNBQVMsQ0FBQyxHQUFZO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUN2RCxDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLFdBQVcsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxVQUFVLENBQUMsSUFBYTtRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDeEQsQ0FBQztJQUNELElBQUksVUFBVTtRQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsS0FBSyxZQUFZLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUksS0FBSztRQUNSLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDbkI7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNmLE9BQU8sRUFBRSxDQUFDO1NBQ1Y7UUFFRCxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2pCO1FBRUQsSUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQ3pDO1lBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQzVCO1FBRUQsb0VBQW9FO1FBQ3BFLE9BQU8sRUFBRSxDQUFDO0lBQ1gsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLEtBQUs7UUFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBeU1EOzs7Ozs7OztPQVFHO0lBQ0gsT0FBTyxDQUFDLEdBQWMsRUFBRSxHQUFjO1FBQ3JDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDakIsT0FBTyxDQUFDLENBQUM7U0FDVDtRQUVELElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUNqQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QztRQUVELElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ3hCLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDVjthQUFNLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQy9CLE9BQU8sQ0FBQyxDQUFDO1NBQ1Q7YUFBTTtZQUNOLE9BQU8sQ0FBQyxDQUFDO1NBQ1Q7SUFDRixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILE1BQU0sQ0FBQyxJQUFlO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFibGVJdGVtIH0gZnJvbSBcIi4vdGFibGUtaXRlbS5jbGFzc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5leHBvcnQgdHlwZSBTb3J0VHlwZSA9IFwiQVNDRU5ESU5HXCIgfCBcIkRFU0NFTkRJTkdcIiB8IFwiTk9ORVwiO1xuZXhwb3J0IGNsYXNzIFRhYmxlSGVhZGVySXRlbSB7XG5cdC8qKlxuXHQgKiBJZiB0cnVlLCBzb3J0IGlzIHNldCB0byBhc2NlbmRpbmcsIGlmIGZhbHNlIGRlc2NlbmRpbmcgd2lsbCBiZSB0cnVlLlxuXHQgKlxuXHQgKi9cblx0c2V0IGFzY2VuZGluZyhhc2M6IGJvb2xlYW4pIHtcblx0XHR0aGlzLnNvcnREaXJlY3Rpb24gPSBhc2MgPyBcIkFTQ0VORElOR1wiIDogXCJERVNDRU5ESU5HXCI7XG5cdH1cblx0Z2V0IGFzY2VuZGluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5zb3J0RGlyZWN0aW9uID09PSBcIkFTQ0VORElOR1wiO1xuXHR9XG5cblx0LyoqXG5cdCAqIElmIHRydWUsIHNvcnQgaXMgc2V0IHRvIGRlc2NlbmRpbmcsIGlmIGZhbHNlIGFzY2VuZGluZyB3aWxsIGJlIHRydWUuXG5cdCAqXG5cdCAqL1xuXHRzZXQgZGVzY2VuZGluZyhkZXNjOiBib29sZWFuKSB7XG5cdFx0dGhpcy5zb3J0RGlyZWN0aW9uID0gZGVzYyA/IFwiREVTQ0VORElOR1wiIDogXCJBU0NFTkRJTkdcIjtcblx0fVxuXHRnZXQgZGVzY2VuZGluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5zb3J0RGlyZWN0aW9uID09PSBcIkRFU0NFTkRJTkdcIjtcblx0fVxuXG5cdGdldCB0aXRsZSgpIHtcblx0XHRpZiAodGhpcy5fdGl0bGUpIHtcblx0XHRcdHJldHVybiB0aGlzLl90aXRsZTtcblx0XHR9XG5cblx0XHRpZiAoIXRoaXMuZGF0YSkge1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiB0aGlzLmRhdGEgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdHJldHVybiB0aGlzLmRhdGE7XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0dGhpcy5kYXRhLnRvU3RyaW5nICYmXG5cdFx0XHR0aGlzLmRhdGEuY29uc3RydWN0b3IgIT09ICh7fSkuY29uc3RydWN0b3Jcblx0XHQpIHtcblx0XHRcdHJldHVybiB0aGlzLmRhdGEudG9TdHJpbmcoKTtcblx0XHR9XG5cblx0XHQvLyBkYXRhIGNhbuKAmXQgYmUgcmVhc29uYWJseSBjb252ZXJ0ZWQgdG8gYW4gZW5kIHVzZXIgcmVhZGFibGUgc3RyaW5nXG5cdFx0cmV0dXJuIFwiXCI7XG5cdH1cblxuXHRzZXQgdGl0bGUodGl0bGUpIHtcblx0XHR0aGlzLl90aXRsZSA9IHRpdGxlO1xuXHR9XG5cdC8qKlxuXHQgKiBEZWZpbmVzIGlmIGNvbHVtbiB1bmRlciB0aGlzIFRhYmxlSGVhZGVySXRlbSBzaG91bGQgYmUgZGlzcGxheWVkLlxuXHQgKlxuXHQgKi9cblx0dmlzaWJsZSA9IHRydWU7XG5cblx0LyoqXG5cdCAqIERpc2FibGVzIHNvcnRpbmcgYnkgZGVmYXVsdC5cblx0ICpcblx0ICovXG5cdHNvcnRlZCA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBFbmFibGVzIHNvcnRpbmcgb24gY2xpY2sgYnkgZGVmYXVsdC5cblx0ICogSWYgZmFsc2UgdGhlbiB0aGlzIGNvbHVtbiB3b24ndCBzaG93IGEgc29ydGluZyBhcnJvdyBhdCBhbGwuXG5cdCAqXG5cdCAqL1xuXHRzb3J0YWJsZSA9IHRydWU7XG5cblx0LyoqXG5cdCAqIE51bWJlciBvZiBhcHBsaWVkIGZpbHRlcnMuXG5cdCAqXG5cdCAqIGBmaWx0ZXIoKWAgc2hvdWxkIHNldCBpdCB0byBhcHByb3ByaWF0ZSBudW1iZXIuXG5cdCAqXG5cdCAqL1xuXHRmaWx0ZXJDb3VudCA9IDA7XG5cblx0LyoqXG5cdCAqIFRoZSBudW1iZXIgb2Ygcm93cyB0byBzcGFuXG5cdCAqICoqTk9URToqKiBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBkZWZhdWx0IGNhcmJvbiB0YWJsZVxuXHQgKi9cblx0cm93U3BhbiA9IDE7XG5cblx0LyoqXG5cdCAqIFRoZSBudW1iZXIgb2YgY29sdW1ucyB0byBzcGFuXG5cdCAqL1xuXHRjb2xTcGFuID0gMTtcblxuXHQvKipcblx0ICogQXR0YWNoIGEgY2xhc3MgdG8gdGhlIGNvbHVtbiwgYm90aCB0aGUgaGVhZGVyIGFuZCBjb2x1bW4gY2VsbHMuXG5cdCAqXG5cdCAqL1xuXHRjbGFzc05hbWU6IHN0cmluZztcblxuXHQvKipcblx0ICogU3R5bGUgZm9yIHRoZSBjb2x1bW4sIGFwcGxpZWQgdG8gZXZlcnkgZWxlbWVudCBpbiB0aGUgY29sdW1uLlxuXHQgKlxuXHQgKiBuZ1N0eWxlLWxpa2UgZm9ybWF0XG5cdCAqXG5cdCAqL1xuXHRzdHlsZSA9IHt9O1xuXG5cdC8qKlxuXHQgKiBEYXRhIGZvciB0aGUgaGVhZGVyIGl0ZW0uXG5cdCAqL1xuXHRkYXRhOiBhbnk7XG5cblx0LyoqXG5cdCAqIERhdGEgZm9yIHRoZSBoZWFkZXIgaXRlbSBmb3IgZ2VuZXJhbCB1c2FnZSBpbiB0aGUgY29udHJvbGxlci5cblx0ICogRm9yIGV4YW1wbGUsIHdoaWNoIGBmaWVsZGAgaXMgdGhpcyBjb2x1bW4gcmVsYXRlZCB0by5cblx0ICovXG5cdG1ldGFkYXRhOiBhbnk7XG5cblx0LyoqXG5cdCAqIFVzZWQgdG8gZGlzcGxheSBkYXRhIGluIGEgZGVzaXJlZCB3YXkuXG5cdCAqXG5cdCAqIElmIG5vdCBwcm92aWRlZCwgZGlzcGxheXMgZGF0YSBhcyBhIHNpbXBsZSBzdHJpbmcuXG5cdCAqXG5cdCAqIFVzYWdlOlxuXHQgKlxuXHQgKiBJbiBhIGNvbXBvbmVudCB3aGVyZSB5b3UncmUgdXNpbmcgdGhlIHRhYmxlIGNyZWF0ZSBhIHRlbXBsYXRlIGxpa2U6XG5cdCAqXG5cdCAqIGBgYGh0bWxcblx0ICogPG5nLXRlbXBsYXRlICNjdXN0b21IZWFkZXJUZW1wbGF0ZSBsZXQtZGF0YT1cImRhdGFcIj5cblx0ICogXHRcdDxpPjxhIFtyb3V0ZXJMaW5rXT1cImRhdGEubGlua1wiPnt7ZGF0YS5uYW1lfX08L2E+PC9pPlxuXHQgKiA8L25nLXRlbXBsYXRlPlxuXHQgKiBgYGBcblx0ICogd2hlcmUgd2UgYXNzdW1lIHlvdXIgZGF0YSBjb250YWlucyBgbGlua2AgYW5kIGBuYW1lYC4gYGxldC1kYXRhPVwiZGF0YVwiYCBpc1xuXHQgKiBuZWNlc3NhcnkgZm9yIHlvdSB0byBiZSBhYmxlIHRvIGFjY2VzcyBpdGVtJ3MgZGF0YSBpbiB0aGUgdGVtcGxhdGUuXG5cdCAqXG5cdCAqIENyZWF0ZSBgVmlld0NoaWxkYCBwcm9wZXJ0eSB3aXRoOlxuXHQgKlxuXHQgKiBgYGB0eXBlc2NyaXB0XG5cdCAqIChhdClWaWV3Q2hpbGQoXCJjdXN0b21IZWFkZXJUZW1wbGF0ZVwiKVxuXHQgKiBwcm90ZWN0ZWQgY3VzdG9tSGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cdCAqIGBgYFxuXHQgKlxuXHQgKiBTZXQgdGhlIHRlbXBsYXRlIHRvIHRoZSBoZWFkZXIgaXRlbSwgZm9yIGV4YW1wbGU6XG5cdCAqXG5cdCAqIGBgYHR5cGVzY3JpcHRcblx0ICogdGhpcy5tb2RlbC5oZWFkZXIgPSBbXG5cdCAqIFx0XHRuZXcgVGFibGVIZWFkZXJJdGVtKHtkYXRhOiB7bmFtZTogXCJDdXN0b20gaGVhZGVyXCIsIGxpbms6IFwiL3RhYmxlXCJ9LCB0ZW1wbGF0ZTogdGhpcy5jdXN0b21IZWFkZXJUZW1wbGF0ZX0pXG5cdCAqIF07XG5cdCAqIGBgYFxuXHQgKi9cblx0dGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cblx0LyoqXG5cdCAqIFRoZSBsYWJlbCBmb3IgdGhlIHNvcnQgYnV0dG9uXG5cdCAqL1xuXHRhcmlhU29ydExhYmVsOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZm9ybWF0IHRoZSBzb3J0IGxhYmVsLiBXaWxsIGJlIGhlYXZpbHkgY2FsbGVkLlxuXHQgKi9cblx0Zm9ybWF0U29ydExhYmVsOiAobGFiZWw6IHN0cmluZywgc3RhdGljTGFiZWw/OiBzdHJpbmcpID0+IHN0cmluZztcblxuXHQvKipcblx0ICogVXNlZCBhcyBhIHRlbXBsYXRlIGZvciBwb3BvdmVyIGZpbHRlci5cblx0ICpcblx0ICogYGxldC1wb3BvdmVyPVwicG9wb3ZlclwiYCB3aWxsIGdpdmUgeW91IGFjY2VzcyB0byBwb3BvdmVyIGNvbXBvbmVudCBhbmQgYWxsb3cgeW91IHRvXG5cdCAqIG1hbmlwdWxhdGUgaXQgaWYgbmVlZGVkLlxuXHQgKlxuXHQgKiBgbGV0LWZpbHRlcj1cImZpbHRlclwiYCB3aWxsIGdpdmUgeW91IGFjY2VzcyB0byB0aGUgXCJmaWx0ZXJcIi4gVGhlIG1haW4gdGFrZWF3YXkgaXNcblx0ICogc3RvcmUgdGhlIGRhdGEgeW91IG5lZWQgdG8gYGZpbHRlci5kYXRhYC4gWW91IHdpbGwgYmUgYWJsZSB0byBhY2Nlc3MgaXQgYXNcblx0ICogYHRoaXMuZmlsdGVyRGF0YS5kYXRhYCBmcm9tIHlvdXIgYGZpbHRlcigpYCBmdW5jdGlvbiB3aGVuIHlvdSBleHRlbmQgYFRhYmxlSGVhZGVySXRlbWBcblx0ICpcblx0ICogRXhhbXBsZTpcblx0ICogYGBgaHRtbFxuXHQgKiA8bmctdGVtcGxhdGUgI2ZpbHRlciBsZXQtcG9wb3Zlcj1cInBvcG92ZXJcIj5cblx0ICogXHQ8Y2RzLWxhYmVsIGNsYXNzPVwiZmlyc3QtbGFiZWxcIj5cblx0ICogXHRcdFZhbHVlXG5cdCAqIFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImZpbHRlcjFcIiBjbGFzcz1cImlucHV0LWZpZWxkXCI+XG5cdCAqIFx0PC9jZHMtbGFiZWw+XG5cdCAqIDwvbmctdGVtcGxhdGU+XG5cdCAqXG5cdCAqIDxuZy10ZW1wbGF0ZSAjZmlsdGVyRm9vdGVyIGxldC1wb3BvdmVyPVwicG9wb3ZlclwiIGxldC1maWx0ZXI9XCJkYXRhXCI+XG5cdCAqIFx0PGJ1dHRvbiBjbGFzcz1cImJ0bi0tcHJpbWFyeVwiIChjbGljayk9XCJmaWx0ZXIuZGF0YSA9IGZpbHRlcjE7IHBvcG92ZXIub25DbG9zZSgpXCI+QXBwbHk8L2J1dHRvbj5cblx0ICogXHQ8YnV0dG9uIGNsYXNzPVwiYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwicG9wb3Zlci5vbkNsb3NlKClcIj5DYW5jZWw8L2J1dHRvbj5cblx0ICogPC9uZy10ZW1wbGF0ZT5cblx0ICogYGBgXG5cdCAqXG5cdCAqIFNldCB0aGUgdGVtcGxhdGUgd2l0aCwgZm9yIGV4YW1wbGU6XG5cdCAqIGBgYHR5cGVzY3JpcHRcblx0ICogbmV3IEZpbHRlcmFibGVIZWFkZXJJdGVtKHtcblx0ICogXHRmaWx0ZXJUZW1wbGF0ZTogdGhpcy5maWx0ZXIsXG5cdCAqXHRmaWx0ZXJGb290ZXI6IHRoaXMuZmlsdGVyRm9vdGVyXG5cdCAqIH0pXG5cdCAqIGBgYFxuXHQgKlxuXHQgKiBgYGB0eXBlc2NyaXB0XG5cdCAqIGNsYXNzIEZpbHRlcmFibGVIZWFkZXJJdGVtIGV4dGVuZHMgVGFibGVIZWFkZXJJdGVtIHtcblx0ICogXHQvLyBjdXN0b20gZmlsdGVyIGZ1bmN0aW9uXG5cdCAqIFx0ZmlsdGVyKGl0ZW06IFRhYmxlSXRlbSk6IGJvb2xlYW4ge1xuXHQgKiBcdFx0aWYgKHR5cGVvZiBpdGVtLmRhdGEgPT09IFwic3RyaW5nXCIgJiYgaXRlbS5kYXRhLmluZGV4T2YodGhpcy5maWx0ZXJEYXRhLmRhdGEpID49IDApIHtcblx0ICogXHRcdFx0dGhpcy5maWx0ZXJDb3VudCA9IDE7XG5cdCAqIFx0XHRcdHJldHVybiBmYWxzZTtcblx0ICogXHRcdH1cblx0ICogXHRcdHRoaXMuZmlsdGVyQ291bnQgPSAwO1xuXHQgKiBcdFx0cmV0dXJuIHRydWU7XG5cdCAqIFx0fVxuXHQgKiB9XG5cdCAqIGBgYFxuXHQgKi9cblx0ZmlsdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cblx0LyoqXG5cdCAqIFVzZWQgYWxvbmcgd2l0aCBgZmlsdGVyVGVtcGxhdGVgIHRvIGNvbnN0cnVjdCB0aGUgZmlsdGVyIHBvcG92ZXJcblx0ICovXG5cdGZpbHRlckZvb3RlcjogVGVtcGxhdGVSZWY8YW55PjtcblxuXHQvKipcblx0ICogVGhpcyBpcyB3aGVyZSB5b3Ugc3RvcmUgeW91ciBkYXRhIHdoZW4gYXBwbHlpbmcgZmlsdGVyLlxuXHQgKlxuXHQgKiBJdCBpcyB0aGUgYWN0dWFsIG9iamVjdCB5b3UgaGF2ZSBhY2Nlc3MgdG8gd2l0aCBgbGV0LWZpbHRlcj1cImRhdGFcImAgaW4geW91ciB0ZW1wbGF0ZS5cblx0ICpcblx0ICogTWFrZSBzdXJlIHRvIHN0b3JlIGRhdGEgaW4gYGZpbHRlci5kYXRhYCBpbiB5b3VyIHRlbXBsYXRlLCBhbmQgeW91IHdpbGwgaGF2ZSBpdFxuXHQgKiBhdmFpbGFibGUgaW4gYGZpbHRlckRhdGEuZGF0YWAgaW4geW91ciBleHRlbnNpb24gb2YgYFRhYmxlSGVhZGVySXRlbWAuXG5cdCAqXG5cdCAqIEJlY2F1c2UgYW5ndWxhciBhbmQgb2JqZWN0IHJlZmVyZW5jZXMuXG5cdCAqL1xuXHRmaWx0ZXJEYXRhOiBhbnk7XG5cblx0c29ydERpcmVjdGlvbjogU29ydFR5cGUgPSBcIk5PTkVcIjtcblxuXG5cblx0cHJpdmF0ZSBfdGl0bGU6IHN0cmluZztcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBUYWJsZUhlYWRlckl0ZW0uXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihyYXdEYXRhPzogYW55KSB7XG5cdFx0Ly8gZGVmYXVsdHMgc28gd2UgZG9udCBsZWF2ZSB0aGluZ3MgZW1wdHlcblx0XHRjb25zdCBkZWZhdWx0cyA9IHtcblx0XHRcdGRhdGE6IFwiXCIsXG5cdFx0XHR2aXNpYmxlOiB0aGlzLnZpc2libGUsXG5cdFx0XHRzdHlsZTogdGhpcy5zdHlsZSxcblx0XHRcdGZpbHRlckNvdW50OiB0aGlzLmZpbHRlckNvdW50LFxuXHRcdFx0ZmlsdGVyRGF0YToge2RhdGE6IFwiXCJ9XG5cdFx0fTtcblx0XHQvLyBmaWxsIG91ciBvYmplY3Qgd2l0aCBwcm92aWRlZCBwcm9wcywgYW5kIGZhbGxiYWNrIHRvIGRlZmF1bHRzXG5cdFx0Y29uc3QgZGF0YSA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRzLCByYXdEYXRhKTtcblx0XHRmb3IgKGxldCBwcm9wZXJ0eSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhkYXRhKSkge1xuXHRcdFx0aWYgKGRhdGEuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKSB7XG5cdFx0XHRcdHRoaXNbcHJvcGVydHldID0gZGF0YVtwcm9wZXJ0eV07XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVzZWQgZm9yIHNvcnRpbmcgcm93cyBvZiB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIE92ZXJyaWRlIHRvIGVuYWJsZSBkaWZmZXJlbnQgc29ydGluZy5cblx0ICpcblx0ICogPCAwIGlmIGBvbmVgIHNob3VsZCBnbyBiZWZvcmUgYHR3b2Bcblx0ICogPiAwIGlmIGBvbmVgIHNob3VsZCBnbyBhZnRlciBgdHdvYFxuXHQgKiAwIGlmIGl0IGRvZXNuJ3QgbWF0dGVyICh0aGV5IGFyZSB0aGUgc2FtZSlcblx0ICovXG5cdGNvbXBhcmUob25lOiBUYWJsZUl0ZW0sIHR3bzogVGFibGVJdGVtKTogbnVtYmVyIHtcblx0XHRpZiAoIW9uZSB8fCAhdHdvKSB7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIG9uZS5kYXRhID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRyZXR1cm4gb25lLmRhdGEubG9jYWxlQ29tcGFyZSh0d28uZGF0YSk7XG5cdFx0fVxuXG5cdFx0aWYgKG9uZS5kYXRhIDwgdHdvLmRhdGEpIHtcblx0XHRcdHJldHVybiAtMTtcblx0XHR9IGVsc2UgaWYgKG9uZS5kYXRhID4gdHdvLmRhdGEpIHtcblx0XHRcdHJldHVybiAxO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVXNlZCB0byBmaWx0ZXIgcm93cyBpbiB0aGUgdGFibGUuXG5cdCAqXG5cdCAqIE92ZXJyaWRlIHRvIG1ha2UgYSBjdXN0b20gZmlsdGVyLlxuXHQgKlxuXHQgKiBFdmVuIHRob3VnaCB0aGVyZSBpcyBqdXN0IG9uZSBmaWx0ZXIgZnVuY3Rpb24sIHRoZXJlIGNhbiBiZSBtdWx0aXBsZSBmaWx0ZXJzLlxuXHQgKiBXaGVuIGltcGxlbWVudGluZyBmaWx0ZXIsIHNldCBgZmlsdGVyQ291bnRgIGJlZm9yZSByZXR1cm5pbmcuXG5cdCAqXG5cdCAqIGB0cnVlYCB0byBoaWRlIHRoZSByb3dcblx0ICogYGZhbHNlYCB0byBzaG93IHRoZSByb3dcblx0ICovXG5cdGZpbHRlcihpdGVtOiBUYWJsZUl0ZW0pOiBib29sZWFuIHtcblx0XHR0aGlzLmZpbHRlckNvdW50ID0gMDtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cbiJdfQ==