UNPKG

ng-devui

Version:

DevUI components based on Angular

41 lines 29 kB
import { Component, Input } from '@angular/core'; import { GanttService } from '../gantt.service'; import * as i0 from "@angular/core"; import * as i1 from "../gantt.service"; export class GanttMilestoneComponent { constructor(ganttService) { this.ganttService = ganttService; this.left = 0; } ngOnInit() { this.ganttScaleStatusHandler = this.ganttService.ganttScaleConfigChange.subscribe((config) => { if (config.startDate || config.unit) { this.left = this.ganttService.getDatePostionOffset(this.startDate); } }); } ngOnChanges(changes) { if (changes.startDate) { this.left = this.ganttService.getDatePostionOffset(this.startDate); } } ngOnDestroy() { if (this.ganttScaleStatusHandler) { this.ganttScaleStatusHandler.unsubscribe(); this.ganttScaleStatusHandler = null; } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GanttMilestoneComponent, deps: [{ token: i1.GanttService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GanttMilestoneComponent, selector: "d-gantt-milestone", inputs: { startDate: "startDate", title: "title", id: "id" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"devui-gantt-milestone\" [style.left]=\"left + 'px'\">\n <span class=\"icon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n width=\"22px\"\n height=\"24px\"\n viewBox=\"0 0 22 24\"\n version=\"1.1\"\n >\n <defs>\n <linearGradient x1=\"50%\" y1=\"6.72700158%\" x2=\"50%\" y2=\"91.2568893%\" id=\"gantt-linearGradient-1\">\n <stop stop-color=\"#3DCCA6\" offset=\"0%\" />\n <stop stop-color=\"#2AA7AF\" offset=\"100%\" />\n </linearGradient>\n <path\n d=\"M14,1.15470054 L20.3923048,4.84529946 C21.6299092,5.55983064 22.3923048,6.88033872 22.3923048,8.30940108 L22.3923048,15.6905989 C22.3923048,17.1196613 21.6299092,18.4401694 20.3923048,19.1547005 L14,22.8452995 C12.7623957,23.5598306 11.2376043,23.5598306 10,22.8452995 L3.60769515,19.1547005 C2.37009085,18.4401694 1.60769515,17.1196613 1.60769515,15.6905989 L1.60769515,8.30940108 C1.60769515,6.88033872 2.37009085,5.55983064 3.60769515,4.84529946 L10,1.15470054 C11.2376043,0.440169359 12.7623957,0.440169359 14,1.15470054 Z\"\n id=\"gantt-path-2\"\n />\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"50%\" id=\"gantt-linearGradient-4\">\n <stop stop-color=\"#FFFFFF\" offset=\"0%\" />\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"51.6276154%\" y2=\"68.3310347%\" id=\"gantt-linearGradient-5\">\n <stop stop-color=\"#FFFFFF\" offset=\"0%\" />\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"70.5804357%\" id=\"gantt-linearGradient-6\">\n <stop stop-color=\"#FFFFFF\" offset=\"0%\" />\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"71.0876747%\" id=\"gantt-linearGradient-7\">\n <stop stop-color=\"#FFFFFF\" offset=\"0%\" />\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"60.3844779%\" id=\"gantt-linearGradient-8\">\n <stop stop-color=\"#FFFFFF\" offset=\"0%\" />\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"gantt-linearGradient-9\">\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"0%\" />\n <stop stop-color=\"#FFFFFF\" offset=\"100%\" />\n </linearGradient>\n <filter x=\"-25.0%\" y=\"-75.0%\" width=\"150.0%\" height=\"250.0%\" filterUnits=\"objectBoundingBox\" id=\"gantt-filter-10\">\n <feGaussianBlur stdDeviation=\"1\" in=\"SourceGraphic\" />\n </filter>\n <linearGradient x1=\"-33.9878453%\" y1=\"3.1788779%\" x2=\"67.7654261%\" y2=\"81.2841156%\" id=\"gantt-linearGradient-11\">\n <stop stop-color=\"#FF790E\" offset=\"0%\" />\n <stop stop-color=\"#FECC55\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"71.1217155%\" y1=\"42.8128234%\" x2=\"17.9433277%\" y2=\"-14.3609467%\" id=\"gantt-linearGradient-12\">\n <stop stop-color=\"#FFE88E\" offset=\"0%\" />\n <stop stop-color=\"#FF790E\" offset=\"100%\" />\n </linearGradient>\n </defs>\n <g id=\"gantt-page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"gantt-04fix\" transform=\"translate(-189.000000, -423.000000)\">\n <g id=\"gantt-Group-2\" transform=\"translate(40.000000, 417.000000)\">\n <g id=\"gant-group-4\" transform=\"translate(148.000000, 6.000000)\">\n <mask id=\"gantt-mask-3\" fill=\"white\">\n <use xlink:href=\"#gantt-path-2\" />\n </mask>\n <use id=\"gantt-men\" fill=\"url(#gantt-linearGradient-1)\" xlink:href=\"#gantt-path-2\" />\n <polygon fill=\"url(#gantt-linearGradient-4)\" opacity=\"0.200000003\" mask=\"url(#gantt-mask-3)\" points=\"10 0 14 0 13 13 11 13\" />\n <polygon\n fill=\"url(#gantt-linearGradient-5)\"\n opacity=\"0.200000003\"\n mask=\"url(#gantt-mask-3)\"\n transform=\"translate(17.500000, 11.000000) rotate(-270.000000) translate(-17.500000, -11.000000) \"\n points=\"14.5 4.5 18.5 4.5 20.5 17.5 19.5 17.5\"\n />\n <polygon\n fill=\"url(#gantt-linearGradient-6)\"\n opacity=\"0.200000003\"\n mask=\"url(#gantt-mask-3)\"\n transform=\"translate(7.000000, 11.000000) scale(-1, 1) rotate(-270.000000) translate(-7.000000, -11.000000) \"\n points=\"4 4.5 8 4.5 10 17.5 9 17.5\"\n />\n <polygon\n fill=\"url(#gantt-linearGradient-7)\"\n opacity=\"0.200000003\"\n mask=\"url(#gantt-mask-3)\"\n transform=\"translate(8.110913, 8.110913) rotate(-45.000000) translate(-8.110913, -8.110913) \"\n points=\"6.1109127 1.6109127 10.1109127 1.6109127 9.1109127 14.6109127 7.1109127 14.6109127\"\n />\n <polygon\n fill=\"url(#gantt-linearGradient-8)\"\n opacity=\"0.200000003\"\n mask=\"url(#gantt-mask-3)\"\n transform=\"translate(15.889087, 8.110913) rotate(-315.000000) translate(-15.889087, -8.110913) \"\n points=\"13.8890873 1.6109127 17.8890873 1.6109127 16.8890873 14.6109127 14.8890873 14.6109127\"\n />\n <ellipse\n fill=\"url(#gantt-linearGradient-9)\"\n opacity=\"0.5\"\n filter=\"url(#filter-10)\"\n mask=\"url(#gantt-mask-3)\"\n cx=\"12\"\n cy=\"17\"\n rx=\"6\"\n ry=\"2\"\n />\n <polygon fill=\"url(#gantt-linearGradient-11)\" mask=\"url(#gantt-mask-3)\" points=\"12 8 18 9 15 11 18 13 11 14\" />\n <polygon fill=\"url(#gantt-linearGradient-12)\" mask=\"url(#gantt-mask-3)\" points=\"10 6 14 7 13 13 9 13\" />\n <polygon fill=\"#FFE3A0\" mask=\"url(#gantt-mask-3)\" points=\"10 6 11 6 9 17 8 17\" />\n <polygon fill=\"#B4832C\" mask=\"url(#gantt-mask-3)\" points=\"13 13 11 14 11.1707479 13\" />\n <rect fill=\"#000000\" opacity=\"0.100000001\" mask=\"url(#gantt-mask-3)\" x=\"7\" y=\"17\" width=\"10\" height=\"1\" />\n </g>\n </g>\n </g>\n </g>\n </svg>\n </span>\n <span title=\"{{ title }}\">{{ title }}</span>\n</div>\n", styles: [".devui-gantt-milestone{position:relative;height:24px;line-height:24px;display:inline-block;z-index:2}.devui-gantt-milestone span{display:inline-block;vertical-align:middle}.devui-gantt-milestone .icon{width:20px;height:24px;margin-right:4px}\n"] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GanttMilestoneComponent, decorators: [{ type: Component, args: [{ selector: 'd-gantt-milestone', template: "<div class=\"devui-gantt-milestone\" [style.left]=\"left + 'px'\">\n <span class=\"icon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n width=\"22px\"\n height=\"24px\"\n viewBox=\"0 0 22 24\"\n version=\"1.1\"\n >\n <defs>\n <linearGradient x1=\"50%\" y1=\"6.72700158%\" x2=\"50%\" y2=\"91.2568893%\" id=\"gantt-linearGradient-1\">\n <stop stop-color=\"#3DCCA6\" offset=\"0%\" />\n <stop stop-color=\"#2AA7AF\" offset=\"100%\" />\n </linearGradient>\n <path\n d=\"M14,1.15470054 L20.3923048,4.84529946 C21.6299092,5.55983064 22.3923048,6.88033872 22.3923048,8.30940108 L22.3923048,15.6905989 C22.3923048,17.1196613 21.6299092,18.4401694 20.3923048,19.1547005 L14,22.8452995 C12.7623957,23.5598306 11.2376043,23.5598306 10,22.8452995 L3.60769515,19.1547005 C2.37009085,18.4401694 1.60769515,17.1196613 1.60769515,15.6905989 L1.60769515,8.30940108 C1.60769515,6.88033872 2.37009085,5.55983064 3.60769515,4.84529946 L10,1.15470054 C11.2376043,0.440169359 12.7623957,0.440169359 14,1.15470054 Z\"\n id=\"gantt-path-2\"\n />\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"50%\" id=\"gantt-linearGradient-4\">\n <stop stop-color=\"#FFFFFF\" offset=\"0%\" />\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"51.6276154%\" y2=\"68.3310347%\" id=\"gantt-linearGradient-5\">\n <stop stop-color=\"#FFFFFF\" offset=\"0%\" />\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"70.5804357%\" id=\"gantt-linearGradient-6\">\n <stop stop-color=\"#FFFFFF\" offset=\"0%\" />\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"71.0876747%\" id=\"gantt-linearGradient-7\">\n <stop stop-color=\"#FFFFFF\" offset=\"0%\" />\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"60.3844779%\" id=\"gantt-linearGradient-8\">\n <stop stop-color=\"#FFFFFF\" offset=\"0%\" />\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"gantt-linearGradient-9\">\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"0%\" />\n <stop stop-color=\"#FFFFFF\" offset=\"100%\" />\n </linearGradient>\n <filter x=\"-25.0%\" y=\"-75.0%\" width=\"150.0%\" height=\"250.0%\" filterUnits=\"objectBoundingBox\" id=\"gantt-filter-10\">\n <feGaussianBlur stdDeviation=\"1\" in=\"SourceGraphic\" />\n </filter>\n <linearGradient x1=\"-33.9878453%\" y1=\"3.1788779%\" x2=\"67.7654261%\" y2=\"81.2841156%\" id=\"gantt-linearGradient-11\">\n <stop stop-color=\"#FF790E\" offset=\"0%\" />\n <stop stop-color=\"#FECC55\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"71.1217155%\" y1=\"42.8128234%\" x2=\"17.9433277%\" y2=\"-14.3609467%\" id=\"gantt-linearGradient-12\">\n <stop stop-color=\"#FFE88E\" offset=\"0%\" />\n <stop stop-color=\"#FF790E\" offset=\"100%\" />\n </linearGradient>\n </defs>\n <g id=\"gantt-page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"gantt-04fix\" transform=\"translate(-189.000000, -423.000000)\">\n <g id=\"gantt-Group-2\" transform=\"translate(40.000000, 417.000000)\">\n <g id=\"gant-group-4\" transform=\"translate(148.000000, 6.000000)\">\n <mask id=\"gantt-mask-3\" fill=\"white\">\n <use xlink:href=\"#gantt-path-2\" />\n </mask>\n <use id=\"gantt-men\" fill=\"url(#gantt-linearGradient-1)\" xlink:href=\"#gantt-path-2\" />\n <polygon fill=\"url(#gantt-linearGradient-4)\" opacity=\"0.200000003\" mask=\"url(#gantt-mask-3)\" points=\"10 0 14 0 13 13 11 13\" />\n <polygon\n fill=\"url(#gantt-linearGradient-5)\"\n opacity=\"0.200000003\"\n mask=\"url(#gantt-mask-3)\"\n transform=\"translate(17.500000, 11.000000) rotate(-270.000000) translate(-17.500000, -11.000000) \"\n points=\"14.5 4.5 18.5 4.5 20.5 17.5 19.5 17.5\"\n />\n <polygon\n fill=\"url(#gantt-linearGradient-6)\"\n opacity=\"0.200000003\"\n mask=\"url(#gantt-mask-3)\"\n transform=\"translate(7.000000, 11.000000) scale(-1, 1) rotate(-270.000000) translate(-7.000000, -11.000000) \"\n points=\"4 4.5 8 4.5 10 17.5 9 17.5\"\n />\n <polygon\n fill=\"url(#gantt-linearGradient-7)\"\n opacity=\"0.200000003\"\n mask=\"url(#gantt-mask-3)\"\n transform=\"translate(8.110913, 8.110913) rotate(-45.000000) translate(-8.110913, -8.110913) \"\n points=\"6.1109127 1.6109127 10.1109127 1.6109127 9.1109127 14.6109127 7.1109127 14.6109127\"\n />\n <polygon\n fill=\"url(#gantt-linearGradient-8)\"\n opacity=\"0.200000003\"\n mask=\"url(#gantt-mask-3)\"\n transform=\"translate(15.889087, 8.110913) rotate(-315.000000) translate(-15.889087, -8.110913) \"\n points=\"13.8890873 1.6109127 17.8890873 1.6109127 16.8890873 14.6109127 14.8890873 14.6109127\"\n />\n <ellipse\n fill=\"url(#gantt-linearGradient-9)\"\n opacity=\"0.5\"\n filter=\"url(#filter-10)\"\n mask=\"url(#gantt-mask-3)\"\n cx=\"12\"\n cy=\"17\"\n rx=\"6\"\n ry=\"2\"\n />\n <polygon fill=\"url(#gantt-linearGradient-11)\" mask=\"url(#gantt-mask-3)\" points=\"12 8 18 9 15 11 18 13 11 14\" />\n <polygon fill=\"url(#gantt-linearGradient-12)\" mask=\"url(#gantt-mask-3)\" points=\"10 6 14 7 13 13 9 13\" />\n <polygon fill=\"#FFE3A0\" mask=\"url(#gantt-mask-3)\" points=\"10 6 11 6 9 17 8 17\" />\n <polygon fill=\"#B4832C\" mask=\"url(#gantt-mask-3)\" points=\"13 13 11 14 11.1707479 13\" />\n <rect fill=\"#000000\" opacity=\"0.100000001\" mask=\"url(#gantt-mask-3)\" x=\"7\" y=\"17\" width=\"10\" height=\"1\" />\n </g>\n </g>\n </g>\n </g>\n </svg>\n </span>\n <span title=\"{{ title }}\">{{ title }}</span>\n</div>\n", styles: [".devui-gantt-milestone{position:relative;height:24px;line-height:24px;display:inline-block;z-index:2}.devui-gantt-milestone span{display:inline-block;vertical-align:middle}.devui-gantt-milestone .icon{width:20px;height:24px;margin-right:4px}\n"] }] }], ctorParameters: () => [{ type: i1.GanttService }], propDecorators: { startDate: [{ type: Input }], title: [{ type: Input }], id: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtbWlsZXN0b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2RldnVpL2dhbnR0L2dhbnR0LW1pbGVzdG9uZS9nYW50dC1taWxlc3RvbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vZGV2dWkvZ2FudHQvZ2FudHQtbWlsZXN0b25lL2dhbnR0LW1pbGVzdG9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFFOUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFPaEQsTUFBTSxPQUFPLHVCQUF1QjtJQVNsQyxZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUo5QyxTQUFJLEdBQUcsQ0FBQyxDQUFDO0lBSXdDLENBQUM7SUFFbEQsUUFBUTtRQUNOLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzNGLElBQUksTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7K0dBOUJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDRJQ1RwQyxveU5BbUhBOzs0RkQxR2EsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLG1CQUFtQjtpRkFLcEIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR2FudHRTZXJ2aWNlIH0gZnJvbSAnLi4vZ2FudHQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2QtZ2FudHQtbWlsZXN0b25lJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ2FudHQtbWlsZXN0b25lLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9nYW50dC1taWxlc3RvbmUuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdhbnR0TWlsZXN0b25lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgc3RhcnREYXRlOiBEYXRlO1xyXG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaWQ6IHN0cmluZztcclxuXHJcbiAgbGVmdCA9IDA7XHJcblxyXG4gIHByaXZhdGUgZ2FudHRTY2FsZVN0YXR1c0hhbmRsZXI6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBnYW50dFNlcnZpY2U6IEdhbnR0U2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmdhbnR0U2NhbGVTdGF0dXNIYW5kbGVyID0gdGhpcy5nYW50dFNlcnZpY2UuZ2FudHRTY2FsZUNvbmZpZ0NoYW5nZS5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xyXG4gICAgICBpZiAoY29uZmlnLnN0YXJ0RGF0ZSB8fCBjb25maWcudW5pdCkge1xyXG4gICAgICAgIHRoaXMubGVmdCA9IHRoaXMuZ2FudHRTZXJ2aWNlLmdldERhdGVQb3N0aW9uT2Zmc2V0KHRoaXMuc3RhcnREYXRlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy5zdGFydERhdGUpIHtcclxuICAgICAgdGhpcy5sZWZ0ID0gdGhpcy5nYW50dFNlcnZpY2UuZ2V0RGF0ZVBvc3Rpb25PZmZzZXQodGhpcy5zdGFydERhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5nYW50dFNjYWxlU3RhdHVzSGFuZGxlcikge1xyXG4gICAgICB0aGlzLmdhbnR0U2NhbGVTdGF0dXNIYW5kbGVyLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIHRoaXMuZ2FudHRTY2FsZVN0YXR1c0hhbmRsZXIgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZGV2dWktZ2FudHQtbWlsZXN0b25lXCIgW3N0eWxlLmxlZnRdPVwibGVmdCArICdweCdcIj5cbiAgPHNwYW4gY2xhc3M9XCJpY29uXCI+XG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuICAgICAgd2lkdGg9XCIyMnB4XCJcbiAgICAgIGhlaWdodD1cIjI0cHhcIlxuICAgICAgdmlld0JveD1cIjAgMCAyMiAyNFwiXG4gICAgICB2ZXJzaW9uPVwiMS4xXCJcbiAgICA+XG4gICAgICA8ZGVmcz5cbiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPVwiNTAlXCIgeTE9XCI2LjcyNzAwMTU4JVwiIHgyPVwiNTAlXCIgeTI9XCI5MS4yNTY4ODkzJVwiIGlkPVwiZ2FudHQtbGluZWFyR3JhZGllbnQtMVwiPlxuICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjM0RDQ0E2XCIgb2Zmc2V0PVwiMCVcIiAvPlxuICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjMkFBN0FGXCIgb2Zmc2V0PVwiMTAwJVwiIC8+XG4gICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xNCwxLjE1NDcwMDU0IEwyMC4zOTIzMDQ4LDQuODQ1Mjk5NDYgQzIxLjYyOTkwOTIsNS41NTk4MzA2NCAyMi4zOTIzMDQ4LDYuODgwMzM4NzIgMjIuMzkyMzA0OCw4LjMwOTQwMTA4IEwyMi4zOTIzMDQ4LDE1LjY5MDU5ODkgQzIyLjM5MjMwNDgsMTcuMTE5NjYxMyAyMS42Mjk5MDkyLDE4LjQ0MDE2OTQgMjAuMzkyMzA0OCwxOS4xNTQ3MDA1IEwxNCwyMi44NDUyOTk1IEMxMi43NjIzOTU3LDIzLjU1OTgzMDYgMTEuMjM3NjA0MywyMy41NTk4MzA2IDEwLDIyLjg0NTI5OTUgTDMuNjA3Njk1MTUsMTkuMTU0NzAwNSBDMi4zNzAwOTA4NSwxOC40NDAxNjk0IDEuNjA3Njk1MTUsMTcuMTE5NjYxMyAxLjYwNzY5NTE1LDE1LjY5MDU5ODkgTDEuNjA3Njk1MTUsOC4zMDk0MDEwOCBDMS42MDc2OTUxNSw2Ljg4MDMzODcyIDIuMzcwMDkwODUsNS41NTk4MzA2NCAzLjYwNzY5NTE1LDQuODQ1Mjk5NDYgTDEwLDEuMTU0NzAwNTQgQzExLjIzNzYwNDMsMC40NDAxNjkzNTkgMTIuNzYyMzk1NywwLjQ0MDE2OTM1OSAxNCwxLjE1NDcwMDU0IFpcIlxuICAgICAgICAgIGlkPVwiZ2FudHQtcGF0aC0yXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPVwiNTAlXCIgeTE9XCIwJVwiIHgyPVwiNTAlXCIgeTI9XCI1MCVcIiBpZD1cImdhbnR0LWxpbmVhckdyYWRpZW50LTRcIj5cbiAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiI0ZGRkZGRlwiIG9mZnNldD1cIjAlXCIgLz5cbiAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiI0ZGRkZGRlwiIHN0b3Atb3BhY2l0eT1cIjBcIiBvZmZzZXQ9XCIxMDAlXCIgLz5cbiAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPVwiNTAlXCIgeTE9XCIwJVwiIHgyPVwiNTEuNjI3NjE1NCVcIiB5Mj1cIjY4LjMzMTAzNDclXCIgaWQ9XCJnYW50dC1saW5lYXJHcmFkaWVudC01XCI+XG4gICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIiNGRkZGRkZcIiBvZmZzZXQ9XCIwJVwiIC8+XG4gICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIiNGRkZGRkZcIiBzdG9wLW9wYWNpdHk9XCIwXCIgb2Zmc2V0PVwiMTAwJVwiIC8+XG4gICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT1cIjUwJVwiIHkxPVwiMCVcIiB4Mj1cIjUwJVwiIHkyPVwiNzAuNTgwNDM1NyVcIiBpZD1cImdhbnR0LWxpbmVhckdyYWRpZW50LTZcIj5cbiAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiI0ZGRkZGRlwiIG9mZnNldD1cIjAlXCIgLz5cbiAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiI0ZGRkZGRlwiIHN0b3Atb3BhY2l0eT1cIjBcIiBvZmZzZXQ9XCIxMDAlXCIgLz5cbiAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPVwiNTAlXCIgeTE9XCIwJVwiIHgyPVwiNTAlXCIgeTI9XCI3MS4wODc2NzQ3JVwiIGlkPVwiZ2FudHQtbGluZWFyR3JhZGllbnQtN1wiPlxuICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjRkZGRkZGXCIgb2Zmc2V0PVwiMCVcIiAvPlxuICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjRkZGRkZGXCIgc3RvcC1vcGFjaXR5PVwiMFwiIG9mZnNldD1cIjEwMCVcIiAvPlxuICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9XCI1MCVcIiB5MT1cIjAlXCIgeDI9XCI1MCVcIiB5Mj1cIjYwLjM4NDQ3NzklXCIgaWQ9XCJnYW50dC1saW5lYXJHcmFkaWVudC04XCI+XG4gICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIiNGRkZGRkZcIiBvZmZzZXQ9XCIwJVwiIC8+XG4gICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIiNGRkZGRkZcIiBzdG9wLW9wYWNpdHk9XCIwXCIgb2Zmc2V0PVwiMTAwJVwiIC8+XG4gICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT1cIjUwJVwiIHkxPVwiMCVcIiB4Mj1cIjUwJVwiIHkyPVwiMTAwJVwiIGlkPVwiZ2FudHQtbGluZWFyR3JhZGllbnQtOVwiPlxuICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCIjRkZGRkZGXCIgc3RvcC1vcGFjaXR5PVwiMFwiIG9mZnNldD1cIjAlXCIgLz5cbiAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiI0ZGRkZGRlwiIG9mZnNldD1cIjEwMCVcIiAvPlxuICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICA8ZmlsdGVyIHg9XCItMjUuMCVcIiB5PVwiLTc1LjAlXCIgd2lkdGg9XCIxNTAuMCVcIiBoZWlnaHQ9XCIyNTAuMCVcIiBmaWx0ZXJVbml0cz1cIm9iamVjdEJvdW5kaW5nQm94XCIgaWQ9XCJnYW50dC1maWx0ZXItMTBcIj5cbiAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIGluPVwiU291cmNlR3JhcGhpY1wiIC8+XG4gICAgICAgIDwvZmlsdGVyPlxuICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9XCItMzMuOTg3ODQ1MyVcIiB5MT1cIjMuMTc4ODc3OSVcIiB4Mj1cIjY3Ljc2NTQyNjElXCIgeTI9XCI4MS4yODQxMTU2JVwiIGlkPVwiZ2FudHQtbGluZWFyR3JhZGllbnQtMTFcIj5cbiAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiI0ZGNzkwRVwiIG9mZnNldD1cIjAlXCIgLz5cbiAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwiI0ZFQ0M1NVwiIG9mZnNldD1cIjEwMCVcIiAvPlxuICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9XCI3MS4xMjE3MTU1JVwiIHkxPVwiNDIuODEyODIzNCVcIiB4Mj1cIjE3Ljk0MzMyNzclXCIgeTI9XCItMTQuMzYwOTQ2NyVcIiBpZD1cImdhbnR0LWxpbmVhckdyYWRpZW50LTEyXCI+XG4gICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIiNGRkU4OEVcIiBvZmZzZXQ9XCIwJVwiIC8+XG4gICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIiNGRjc5MEVcIiBvZmZzZXQ9XCIxMDAlXCIgLz5cbiAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgIDwvZGVmcz5cbiAgICAgIDxnIGlkPVwiZ2FudHQtcGFnZS0xXCIgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjFcIiBmaWxsPVwibm9uZVwiIGZpbGwtcnVsZT1cImV2ZW5vZGRcIj5cbiAgICAgICAgPGcgaWQ9XCJnYW50dC0wNGZpeFwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMTg5LjAwMDAwMCwgLTQyMy4wMDAwMDApXCI+XG4gICAgICAgICAgPGcgaWQ9XCJnYW50dC1Hcm91cC0yXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDQwLjAwMDAwMCwgNDE3LjAwMDAwMClcIj5cbiAgICAgICAgICAgIDxnIGlkPVwiZ2FudC1ncm91cC00XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDE0OC4wMDAwMDAsIDYuMDAwMDAwKVwiPlxuICAgICAgICAgICAgICA8bWFzayBpZD1cImdhbnR0LW1hc2stM1wiIGZpbGw9XCJ3aGl0ZVwiPlxuICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNnYW50dC1wYXRoLTJcIiAvPlxuICAgICAgICAgICAgICA8L21hc2s+XG4gICAgICAgICAgICAgIDx1c2UgaWQ9XCJnYW50dC1tZW5cIiBmaWxsPVwidXJsKCNnYW50dC1saW5lYXJHcmFkaWVudC0xKVwiIHhsaW5rOmhyZWY9XCIjZ2FudHQtcGF0aC0yXCIgLz5cbiAgICAgICAgICAgICAgPHBvbHlnb24gZmlsbD1cInVybCgjZ2FudHQtbGluZWFyR3JhZGllbnQtNClcIiBvcGFjaXR5PVwiMC4yMDAwMDAwMDNcIiBtYXNrPVwidXJsKCNnYW50dC1tYXNrLTMpXCIgcG9pbnRzPVwiMTAgMCAxNCAwIDEzIDEzIDExIDEzXCIgLz5cbiAgICAgICAgICAgICAgPHBvbHlnb25cbiAgICAgICAgICAgICAgICBmaWxsPVwidXJsKCNnYW50dC1saW5lYXJHcmFkaWVudC01KVwiXG4gICAgICAgICAgICAgICAgb3BhY2l0eT1cIjAuMjAwMDAwMDAzXCJcbiAgICAgICAgICAgICAgICBtYXNrPVwidXJsKCNnYW50dC1tYXNrLTMpXCJcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTcuNTAwMDAwLCAxMS4wMDAwMDApIHJvdGF0ZSgtMjcwLjAwMDAwMCkgdHJhbnNsYXRlKC0xNy41MDAwMDAsIC0xMS4wMDAwMDApIFwiXG4gICAgICAgICAgICAgICAgcG9pbnRzPVwiMTQuNSA0LjUgMTguNSA0LjUgMjAuNSAxNy41IDE5LjUgMTcuNVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwb2x5Z29uXG4gICAgICAgICAgICAgICAgZmlsbD1cInVybCgjZ2FudHQtbGluZWFyR3JhZGllbnQtNilcIlxuICAgICAgICAgICAgICAgIG9wYWNpdHk9XCIwLjIwMDAwMDAwM1wiXG4gICAgICAgICAgICAgICAgbWFzaz1cInVybCgjZ2FudHQtbWFzay0zKVwiXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDcuMDAwMDAwLCAxMS4wMDAwMDApIHNjYWxlKC0xLCAxKSByb3RhdGUoLTI3MC4wMDAwMDApIHRyYW5zbGF0ZSgtNy4wMDAwMDAsIC0xMS4wMDAwMDApIFwiXG4gICAgICAgICAgICAgICAgcG9pbnRzPVwiNCA0LjUgOCA0LjUgMTAgMTcuNSA5IDE3LjVcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8cG9seWdvblxuICAgICAgICAgICAgICAgIGZpbGw9XCJ1cmwoI2dhbnR0LWxpbmVhckdyYWRpZW50LTcpXCJcbiAgICAgICAgICAgICAgICBvcGFjaXR5PVwiMC4yMDAwMDAwMDNcIlxuICAgICAgICAgICAgICAgIG1hc2s9XCJ1cmwoI2dhbnR0LW1hc2stMylcIlxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg4LjExMDkxMywgOC4xMTA5MTMpIHJvdGF0ZSgtNDUuMDAwMDAwKSB0cmFuc2xhdGUoLTguMTEwOTEzLCAtOC4xMTA5MTMpIFwiXG4gICAgICAgICAgICAgICAgcG9pbnRzPVwiNi4xMTA5MTI3IDEuNjEwOTEyNyAxMC4xMTA5MTI3IDEuNjEwOTEyNyA5LjExMDkxMjcgMTQuNjEwOTEyNyA3LjExMDkxMjcgMTQuNjEwOTEyN1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwb2x5Z29uXG4gICAgICAgICAgICAgICAgZmlsbD1cInVybCgjZ2FudHQtbGluZWFyR3JhZGllbnQtOClcIlxuICAgICAgICAgICAgICAgIG9wYWNpdHk9XCIwLjIwMDAwMDAwM1wiXG4gICAgICAgICAgICAgICAgbWFzaz1cInVybCgjZ2FudHQtbWFzay0zKVwiXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDE1Ljg4OTA4NywgOC4xMTA5MTMpIHJvdGF0ZSgtMzE1LjAwMDAwMCkgdHJhbnNsYXRlKC0xNS44ODkwODcsIC04LjExMDkxMykgXCJcbiAgICAgICAgICAgICAgICBwb2ludHM9XCIxMy44ODkwODczIDEuNjEwOTEyNyAxNy44ODkwODczIDEuNjEwOTEyNyAxNi44ODkwODczIDE0LjYxMDkxMjcgMTQuODg5MDg3MyAxNC42MTA5MTI3XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGVsbGlwc2VcbiAgICAgICAgICAgICAgICBmaWxsPVwidXJsKCNnYW50dC1saW5lYXJHcmFkaWVudC05KVwiXG4gICAgICAgICAgICAgICAgb3BhY2l0eT1cIjAuNVwiXG4gICAgICAgICAgICAgICAgZmlsdGVyPVwidXJsKCNmaWx0ZXItMTApXCJcbiAgICAgICAgICAgICAgICBtYXNrPVwidXJsKCNnYW50dC1tYXNrLTMpXCJcbiAgICAgICAgICAgICAgICBjeD1cIjEyXCJcbiAgICAgICAgICAgICAgICBjeT1cIjE3XCJcbiAgICAgICAgICAgICAgICByeD1cIjZcIlxuICAgICAgICAgICAgICAgIHJ5PVwiMlwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwb2x5Z29uIGZpbGw9XCJ1cmwoI2dhbnR0LWxpbmVhckdyYWRpZW50LTExKVwiIG1hc2s9XCJ1cmwoI2dhbnR0LW1hc2stMylcIiBwb2ludHM9XCIxMiA4IDE4IDkgMTUgMTEgMTggMTMgMTEgMTRcIiAvPlxuICAgICAgICAgICAgICA8cG9seWdvbiBmaWxsPVwidXJsKCNnYW50dC1saW5lYXJHcmFkaWVudC0xMilcIiBtYXNrPVwidXJsKCNnYW50dC1tYXNrLTMpXCIgcG9pbnRzPVwiMTAgNiAxNCA3IDEzIDEzIDkgMTNcIiAvPlxuICAgICAgICAgICAgICA8cG9seWdvbiBmaWxsPVwiI0ZGRTNBMFwiIG1hc2s9XCJ1cmwoI2dhbnR0LW1hc2stMylcIiBwb2ludHM9XCIxMCA2IDExIDYgOSAxNyA4IDE3XCIgLz5cbiAgICAgICAgICAgICAgPHBvbHlnb24gZmlsbD1cIiNCNDgzMkNcIiBtYXNrPVwidXJsKCNnYW50dC1tYXNrLTMpXCIgcG9pbnRzPVwiMTMgMTMgMTEgMTQgMTEuMTcwNzQ3OSAxM1wiIC8+XG4gICAgICAgICAgICAgIDxyZWN0IGZpbGw9XCIjMDAwMDAwXCIgb3BhY2l0eT1cIjAuMTAwMDAwMDAxXCIgbWFzaz1cInVybCgjZ2FudHQtbWFzay0zKVwiIHg9XCI3XCIgeT1cIjE3XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjFcIiAvPlxuICAgICAgICAgICAgPC9nPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICA8L3NwYW4+XG4gIDxzcGFuIHRpdGxlPVwie3sgdGl0bGUgfX1cIj57eyB0aXRsZSB9fTwvc3Bhbj5cbjwvZGl2PlxuIl19